From 28eaa9a1b4208744ae3edcebe3354eb5838f69b3 Mon Sep 17 00:00:00 2001 From: Kevin Hahn Date: Sat, 27 Jun 2026 17:41:50 +0700 Subject: [PATCH 01/28] Add comment data model Introduce CRDT-only comment threads, comments, local read-status tracking, JS interop, and focused tests so the viewer can build comment UI on top of the MiniLcm API. Co-authored-by: Cursor --- .../Services/MiniLcmJsInvokable.cs | 106 +- .../TypeGen/ReinforcedFwLiteTypingConfig.cs | 2 + .../LcmCrdt.Tests/Changes/UseChangesTests.cs | 32 + .../LcmCrdt.Tests/ConfigRegistrationTests.cs | 2 + ...pshotTests.VerifyChangeModels.verified.txt | 24 + ...elSnapshotTests.VerifyDbModel.verified.txt | 69 ++ ...sts.VerifyIObjectWithIdModels.verified.txt | 8 + .../MiniLcmTests/CommentTests.cs | 240 +++++ .../Comments/CreateCommentThreadChange.cs | 46 + .../Comments/CreateUserCommentChange.cs | 53 + .../Changes/Comments/EditUserCommentChange.cs | 31 + .../Comments/SetCommentThreadStatusChange.cs | 31 + backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs | 147 +++ .../Data/LocalCommentReadStatusService.cs | 80 ++ .../FwLite/LcmCrdt/Data/MiniLcmRepository.cs | 12 + .../FwLite/LcmCrdt/Data/SeenUserComment.cs | 8 + backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs | 8 + backend/FwLite/LcmCrdt/LcmCrdtKernel.cs | 21 + .../20260627055013_AddComments.Designer.cs | 968 ++++++++++++++++++ .../Migrations/20260627055013_AddComments.cs | 134 +++ .../LcmCrdtDbContextModelSnapshot.cs | 125 +++ backend/FwLite/MiniLcm/IMiniLcmReadApi.cs | 24 + backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs | 39 + backend/FwLite/MiniLcm/Models/Comments.cs | 72 ++ .../FwLite/MiniLcm/Models/IObjectWithId.cs | 2 + .../MiniLcmApiWriteNormalizationWrapper.cs | 57 ++ .../FwLiteShared/Services/IMiniLcmFeatures.ts | 1 + .../Services/IMiniLcmJsInvokable.ts | 19 + .../MiniLcm/Models/ICommentThread.ts | 20 + .../MiniLcm/Models/IUserComment.ts | 20 + .../MiniLcm/Models/SubjectType.ts | 11 + .../MiniLcm/Models/ThreadStatus.ts | 10 + 32 files changed, 2420 insertions(+), 2 deletions(-) create mode 100644 backend/FwLite/LcmCrdt.Tests/MiniLcmTests/CommentTests.cs create mode 100644 backend/FwLite/LcmCrdt/Changes/Comments/CreateCommentThreadChange.cs create mode 100644 backend/FwLite/LcmCrdt/Changes/Comments/CreateUserCommentChange.cs create mode 100644 backend/FwLite/LcmCrdt/Changes/Comments/EditUserCommentChange.cs create mode 100644 backend/FwLite/LcmCrdt/Changes/Comments/SetCommentThreadStatusChange.cs create mode 100644 backend/FwLite/LcmCrdt/Data/LocalCommentReadStatusService.cs create mode 100644 backend/FwLite/LcmCrdt/Data/SeenUserComment.cs create mode 100644 backend/FwLite/LcmCrdt/Migrations/20260627055013_AddComments.Designer.cs create mode 100644 backend/FwLite/LcmCrdt/Migrations/20260627055013_AddComments.cs create mode 100644 backend/FwLite/MiniLcm/Models/Comments.cs create mode 100644 frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/ICommentThread.ts create mode 100644 frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IUserComment.ts create mode 100644 frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/SubjectType.ts create mode 100644 frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/ThreadStatus.ts diff --git a/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs b/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs index a339270bbb..e4cb400af6 100644 --- a/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs +++ b/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs @@ -21,14 +21,14 @@ MiniLcmApiUserFacingWrappers userFacingWrappers { private readonly IMiniLcmApi _wrappedApi = userFacingWrappers.Apply(api, project, notificationWrapperFactory); - public record MiniLcmFeatures(bool? History, bool? Write, bool? OpenWithFlex, bool? Feedback, bool? Sync, bool? Audio, bool? CustomViews); + public record MiniLcmFeatures(bool? History, bool? Write, bool? OpenWithFlex, bool? Feedback, bool? Sync, bool? Audio, bool? CustomViews, bool? Comments); private bool SupportsSync => project.DataFormat == ProjectDataFormat.Harmony && api is CrdtMiniLcmApi; [JSInvokable] public MiniLcmFeatures SupportedFeatures() { var isCrdtProject = project.DataFormat == ProjectDataFormat.Harmony; var isFwDataProject = project.DataFormat == ProjectDataFormat.FwData; - return new(History: isCrdtProject, Write: CanWrite, OpenWithFlex: isFwDataProject, Feedback: true, Sync: SupportsSync, Audio: true, CustomViews: isCrdtProject); + return new(History: isCrdtProject, Write: CanWrite, OpenWithFlex: isFwDataProject, Feedback: true, Sync: SupportsSync, Audio: true, CustomViews: isCrdtProject, Comments: isCrdtProject); } private bool CanWrite => @@ -270,6 +270,108 @@ public async Task DeleteCustomView(Guid id) OnDataChanged(); } + [JSInvokable] + public ValueTask GetCommentThreads(SubjectType subjectType, Guid subjectId) + { + return _wrappedApi.GetCommentThreads(subjectType, subjectId).ToArrayAsync(); + } + + [JSInvokable] + [TsFunction(Type = "Promise")] + public Task GetCommentThread(Guid id) + { + return _wrappedApi.GetCommentThread(id); + } + + [JSInvokable] + public ValueTask GetUserComments(Guid threadId) + { + return _wrappedApi.GetUserComments(threadId).ToArrayAsync(); + } + + [JSInvokable] + [TsFunction(Type = "Promise")] + public Task GetUserComment(Guid id) + { + return _wrappedApi.GetUserComment(id); + } + + [JSInvokable] + public ValueTask GetUnreadComments(Guid? threadId = null) + { + return _wrappedApi.GetUnreadComments(threadId).ToArrayAsync(); + } + + [JSInvokable] + public Task CountUnreadComments(Guid? threadId = null) + { + return _wrappedApi.CountUnreadComments(threadId); + } + + [JSInvokable] + public async Task CreateCommentThread(CommentThread thread, UserComment firstComment) + { + var createdThread = await _wrappedApi.CreateCommentThread(thread, firstComment); + OnDataChanged(); + return createdThread; + } + + [JSInvokable] + public async Task AddUserComment(Guid threadId, UserComment comment) + { + var createdComment = await _wrappedApi.AddUserComment(threadId, comment); + OnDataChanged(); + return createdComment; + } + + [JSInvokable] + public async Task EditUserComment(Guid commentId, string text) + { + var updatedComment = await _wrappedApi.EditUserComment(commentId, text); + OnDataChanged(); + return updatedComment; + } + + [JSInvokable] + public async Task SetCommentThreadStatus(Guid threadId, ThreadStatus status) + { + var updatedThread = await _wrappedApi.SetCommentThreadStatus(threadId, status); + OnDataChanged(); + return updatedThread; + } + + [JSInvokable] + public async Task DeleteUserComment(Guid commentId) + { + await _wrappedApi.DeleteUserComment(commentId); + OnDataChanged(); + } + + [JSInvokable] + public async Task DeleteCommentThread(Guid threadId) + { + await _wrappedApi.DeleteCommentThread(threadId); + OnDataChanged(); + } + + [JSInvokable] + public Task MarkCommentRead(Guid commentId) + { + return _wrappedApi.MarkCommentRead(commentId); + } + + [JSInvokable] + public Task MarkCommentThreadRead(Guid threadId) + { + return _wrappedApi.MarkCommentThreadRead(threadId); + } + + [JSInvokable] + public Task MarkAllCommentsRead() + { + return _wrappedApi.MarkAllCommentsRead(); + } + [JSInvokable] public async Task CreateEntry(Entry entry) { diff --git a/backend/FwLite/FwLiteShared/TypeGen/ReinforcedFwLiteTypingConfig.cs b/backend/FwLite/FwLiteShared/TypeGen/ReinforcedFwLiteTypingConfig.cs index ccca38d907..a8166c4c4d 100644 --- a/backend/FwLite/FwLiteShared/TypeGen/ReinforcedFwLiteTypingConfig.cs +++ b/backend/FwLite/FwLiteShared/TypeGen/ReinforcedFwLiteTypingConfig.cs @@ -113,6 +113,8 @@ private static void ConfigureMiniLcmTypes(ConfigurationBuilder builder) builder.ExportAsEnum(); builder.ExportAsEnum().UseString(); builder.ExportAsEnum().UseString(); + builder.ExportAsEnum().UseString(); + builder.ExportAsEnum().UseString(); builder.ExportAsInterface() .FlattenHierarchy() .WithPublicProperties() diff --git a/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs b/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs index 828f5c73f7..e14a123aec 100644 --- a/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs +++ b/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs @@ -3,6 +3,7 @@ using Bogus; using FluentAssertions.Execution; using LcmCrdt.Changes; +using LcmCrdt.Changes.Comments; using LcmCrdt.Changes.CustomJsonPatches; using LcmCrdt.Changes.Entries; using LcmCrdt.Changes.ExampleSentences; @@ -299,5 +300,36 @@ customView with Analysis = null }); yield return new ChangeWithDependencies(editCustomViewChange, [createCustomViewChange]); + + var commentThread = new CommentThread + { + Id = Guid.NewGuid(), + SubjectId = entry.Id, + SubjectType = SubjectType.Entry, + Status = ThreadStatus.Open, + CreatedAt = DateTimeOffset.UtcNow, + UpdatedAt = DateTimeOffset.UtcNow + }; + var createCommentThreadChange = new CreateCommentThreadChange(commentThread); + yield return new ChangeWithDependencies(createCommentThreadChange, [createEntryChange]); + + var userComment = new UserComment + { + Id = Guid.NewGuid(), + CommentThreadId = commentThread.Id, + Text = "Test comment", + AuthorId = "author-id", + AuthorName = "Author", + CreatedAt = DateTimeOffset.UtcNow, + UpdatedAt = DateTimeOffset.UtcNow + }; + var createUserCommentChange = new CreateUserCommentChange(userComment); + yield return new ChangeWithDependencies(createUserCommentChange, [createCommentThreadChange]); + + var editUserCommentChange = new EditUserCommentChange(userComment.Id, "Updated comment", DateTimeOffset.UtcNow); + yield return new ChangeWithDependencies(editUserCommentChange, [createUserCommentChange]); + + var closeCommentThreadChange = new SetCommentThreadStatusChange(commentThread.Id, ThreadStatus.Closed, DateTimeOffset.UtcNow); + yield return new ChangeWithDependencies(closeCommentThreadChange, [createCommentThreadChange]); } } diff --git a/backend/FwLite/LcmCrdt.Tests/ConfigRegistrationTests.cs b/backend/FwLite/LcmCrdt.Tests/ConfigRegistrationTests.cs index bd3f0a41e8..61ffbdc389 100644 --- a/backend/FwLite/LcmCrdt.Tests/ConfigRegistrationTests.cs +++ b/backend/FwLite/LcmCrdt.Tests/ConfigRegistrationTests.cs @@ -17,6 +17,8 @@ public class ConfigRegistrationTests typeof(JsonPatchChange), //not supported typeof(JsonPatchChange), //replaced by JsonPatchExampleSentenceChange typeof(JsonPatchChange), //not supported. Use EditCustomViewChange + typeof(JsonPatchChange), //not supported. Use SetCommentThreadStatusChange + typeof(JsonPatchChange), //not supported. Use EditUserCommentChange typeof(DeleteChange), //MorphTypes cannot be deleted ]; diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt index 3ffa18b2eb..a5b830ed08 100644 --- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt @@ -200,6 +200,30 @@ DerivedType: DeleteChange, TypeDiscriminator: delete:CustomView }, + { + DerivedType: CreateCommentThreadChange, + TypeDiscriminator: CreateCommentThreadChange + }, + { + DerivedType: CreateUserCommentChange, + TypeDiscriminator: CreateUserCommentChange + }, + { + DerivedType: EditUserCommentChange, + TypeDiscriminator: EditUserCommentChange + }, + { + DerivedType: SetCommentThreadStatusChange, + TypeDiscriminator: SetCommentThreadStatusChange + }, + { + DerivedType: DeleteChange, + TypeDiscriminator: delete:CommentThread + }, + { + DerivedType: DeleteChange, + TypeDiscriminator: delete:UserComment + }, { DerivedType: CreateMorphTypeChange, TypeDiscriminator: CreateMorphTypeChange diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt index ffb36384fa..e8c012720d 100644 --- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt @@ -1,4 +1,20 @@ Model: + EntityType: SeenUserComment + Properties: + UserId (string) Required PK AfterSave:Throw + CommentId (Guid) Required PK Index AfterSave:Throw + SeenAt (DateTimeOffset) Required + Keys: + UserId, CommentId PK + Indexes: + CommentId + Annotations: + Relational:FunctionName: + Relational:Schema: + Relational:SqlQuery: + Relational:TableName: SeenUserComments + Relational:ViewName: + Relational:ViewSchema: EntityType: EntrySearchRecord Properties: Id (Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd @@ -38,6 +54,31 @@ Relational:TableName: ProjectData Relational:ViewName: Relational:ViewSchema: + EntityType: CommentThread + Properties: + Id (Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd + CreatedAt (DateTimeOffset) Required Index + DeletedAt (DateTimeOffset?) + SnapshotId (no field, Guid?) Shadow FK Index + Status (ThreadStatus) Required + SubjectId (Guid) Required Index + SubjectType (SubjectType) Required Index + UpdatedAt (DateTimeOffset) Required + Keys: + Id PK + Foreign keys: + CommentThread {'SnapshotId'} -> ObjectSnapshot {'Id'} Unique SetNull + Indexes: + CreatedAt + SnapshotId Unique + SubjectType, SubjectId + Annotations: + Relational:FunctionName: + Relational:Schema: + Relational:SqlQuery: + Relational:TableName: CommentThread + Relational:ViewName: + Relational:ViewSchema: EntityType: ComplexFormComponent Properties: Id (_id, Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd @@ -339,6 +380,34 @@ Relational:TableName: Sense Relational:ViewName: Relational:ViewSchema: + EntityType: UserComment + Properties: + Id (Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd + AuthorId (string) + AuthorName (string) + CommentThreadId (Guid) Required FK Index + CreatedAt (DateTimeOffset) Required Index + DeletedAt (DateTimeOffset?) + PreviousCommentId (Guid?) + SnapshotId (no field, Guid?) Shadow FK Index + Text (string) Required + UpdatedAt (DateTimeOffset) Required + Keys: + Id PK + Foreign keys: + UserComment {'CommentThreadId'} -> CommentThread {'Id'} Required Cascade + UserComment {'SnapshotId'} -> ObjectSnapshot {'Id'} Unique SetNull + Indexes: + CommentThreadId + CreatedAt + SnapshotId Unique + Annotations: + Relational:FunctionName: + Relational:Schema: + Relational:SqlQuery: + Relational:TableName: UserComment + Relational:ViewName: + Relational:ViewSchema: EntityType: WritingSystem Properties: Id (_id, Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt index 048b425e86..c94eb71fdf 100644 --- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt @@ -40,6 +40,14 @@ DerivedType: CustomView, TypeDiscriminator: CustomView }, + { + DerivedType: CommentThread, + TypeDiscriminator: CommentThread + }, + { + DerivedType: UserComment, + TypeDiscriminator: UserComment + }, { DerivedType: MorphType, TypeDiscriminator: MorphType diff --git a/backend/FwLite/LcmCrdt.Tests/MiniLcmTests/CommentTests.cs b/backend/FwLite/LcmCrdt.Tests/MiniLcmTests/CommentTests.cs new file mode 100644 index 0000000000..1657f90c05 --- /dev/null +++ b/backend/FwLite/LcmCrdt.Tests/MiniLcmTests/CommentTests.cs @@ -0,0 +1,240 @@ +namespace LcmCrdt.Tests.MiniLcmTests; + +public class CommentTests(MiniLcmApiFixture fixture) : IClassFixture +{ + private async Task SetCurrentUser(string userId, string? name = null) + { + var projectService = fixture.GetService(); + await projectService.UpdateLastUser(name ?? userId, userId); + await projectService.UpdateUserRole(UserProjectRole.Editor); + } + + private async Task MarkExistingCommentsRead(string userId) + { + await SetCurrentUser(userId); + await fixture.Api.MarkAllCommentsRead(); + } + + private static CommentThread NewThread(SubjectType subjectType = SubjectType.Entry, Guid? subjectId = null) + { + return new CommentThread + { + Id = Guid.NewGuid(), + SubjectType = subjectType, + SubjectId = subjectId ?? Guid.NewGuid() + }; + } + + private static UserComment NewComment(string text = "Comment", Guid? id = null) + { + return new UserComment + { + Id = id ?? Guid.NewGuid(), + Text = text + }; + } + + private async Task<(CommentThread Thread, UserComment FirstComment)> CreateThreadWithComment( + string authorId, + SubjectType subjectType = SubjectType.Entry, + Guid? subjectId = null, + string text = "First") + { + await SetCurrentUser(authorId); + var thread = await fixture.Api.CreateCommentThread(NewThread(subjectType, subjectId), NewComment(text)); + var firstComment = (await fixture.Api.GetUserComments(thread.Id).ToArrayAsync()).Single(); + return (thread, firstComment); + } + + [Fact] + public async Task CreateThreadWithFirstComment_PopulatesAuthorAndTimestamps() + { + var authorId = $"author-{Guid.NewGuid()}"; + await SetCurrentUser(authorId, "Author Name"); + + var thread = await fixture.Api.CreateCommentThread(NewThread(), NewComment("hello")); + var comments = await fixture.Api.GetUserComments(thread.Id).ToArrayAsync(); + + thread.Status.Should().Be(ThreadStatus.Open); + thread.CreatedAt.Should().NotBe(default); + comments.Should().ContainSingle(); + comments[0].Text.Should().Be("hello"); + comments[0].AuthorId.Should().Be(authorId); + comments[0].AuthorName.Should().Be("Author Name"); + comments[0].CreatedAt.Should().NotBe(default); + } + + [Fact] + public async Task RepliesEditStatusAndDeleteComment_Work() + { + var authorId = $"author-{Guid.NewGuid()}"; + var (thread, firstComment) = await CreateThreadWithComment(authorId); + + var reply = await fixture.Api.AddUserComment(thread.Id, NewComment("reply") with + { + PreviousCommentId = firstComment.Id + }); + var edited = await fixture.Api.EditUserComment(reply.Id, "edited reply"); + var closed = await fixture.Api.SetCommentThreadStatus(thread.Id, ThreadStatus.Closed); + await fixture.Api.DeleteUserComment(reply.Id); + + edited.Text.Should().Be("edited reply"); + edited.UpdatedAt.Should().BeAfter(edited.CreatedAt); + closed.Status.Should().Be(ThreadStatus.Closed); + var remaining = await fixture.Api.GetUserComments(thread.Id).ToArrayAsync(); + remaining.Should().ContainSingle(c => c.Id == firstComment.Id); + } + + [Fact] + public async Task DeleteThread_CascadesToComments() + { + var (thread, _) = await CreateThreadWithComment($"author-{Guid.NewGuid()}"); + await fixture.Api.AddUserComment(thread.Id, NewComment("reply")); + + await fixture.Api.DeleteCommentThread(thread.Id); + + (await fixture.Api.GetCommentThread(thread.Id)).Should().BeNull(); + (await fixture.Api.GetUserComments(thread.Id).ToArrayAsync()).Should().BeEmpty(); + } + + [Fact] + public async Task DeletingParentEntry_DoesNotDeleteThreadOrComments() + { + var authorId = $"author-{Guid.NewGuid()}"; + await SetCurrentUser(authorId); + var entry = await fixture.Api.CreateEntry(new Entry + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "commented entry" } } + }); + var (thread, firstComment) = await CreateThreadWithComment(authorId, SubjectType.Entry, entry.Id); + + await fixture.Api.DeleteEntry(entry.Id); + + (await fixture.Api.GetCommentThread(thread.Id)).Should().NotBeNull(); + (await fixture.Api.GetUserComment(firstComment.Id)).Should().NotBeNull(); + } + + [Fact] + public async Task CanCreateThreadForAlreadyDeletedSubject() + { + var authorId = $"author-{Guid.NewGuid()}"; + await SetCurrentUser(authorId); + var entry = await fixture.Api.CreateEntry(new Entry + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "deleted entry" } } + }); + await fixture.Api.DeleteEntry(entry.Id); + + var thread = await fixture.Api.CreateCommentThread(NewThread(SubjectType.Entry, entry.Id), NewComment("after delete")); + + thread.SubjectId.Should().Be(entry.Id); + (await fixture.Api.GetUserComments(thread.Id).ToArrayAsync()).Should().ContainSingle(); + } + + [Fact] + public async Task ClosedThread_AllowsRepliesAndUnreadTracking() + { + var firstAuthor = $"author-{Guid.NewGuid()}"; + var secondAuthor = $"author-{Guid.NewGuid()}"; + await MarkExistingCommentsRead(firstAuthor); + var (thread, _) = await CreateThreadWithComment(firstAuthor); + await fixture.Api.SetCommentThreadStatus(thread.Id, ThreadStatus.Closed); + + await SetCurrentUser(secondAuthor); + var reply = await fixture.Api.AddUserComment(thread.Id, NewComment("late reply")); + + await SetCurrentUser(firstAuthor); + var comments = await fixture.Api.GetUserComments(thread.Id).ToArrayAsync(); + var unread = await fixture.Api.GetUnreadComments(thread.Id).ToArrayAsync(); + + comments.Should().Contain(c => c.Id == reply.Id); + unread.Should().ContainSingle(c => c.Id == reply.Id); + } + + [Fact] + public async Task SupportsAllSubjectTypes() + { + var authorId = $"author-{Guid.NewGuid()}"; + foreach (var subjectType in Enum.GetValues()) + { + var thread = await CreateThreadWithComment(authorId, subjectType, Guid.NewGuid(), subjectType.ToString()); + thread.Thread.SubjectType.Should().Be(subjectType); + } + } + + [Fact] + public async Task OnlyAuthorCanEditOrDeleteComment() + { + var authorId = $"author-{Guid.NewGuid()}"; + var otherUserId = $"other-{Guid.NewGuid()}"; + var (_, firstComment) = await CreateThreadWithComment(authorId); + + await SetCurrentUser(otherUserId); + + await Assert.ThrowsAsync(() => fixture.Api.EditUserComment(firstComment.Id, "not allowed")); + await Assert.ThrowsAsync(() => fixture.Api.DeleteUserComment(firstComment.Id)); + } + + [Fact] + public async Task ReadStatus_CanMarkOneThreadAndAll() + { + var readerId = $"reader-{Guid.NewGuid()}"; + var authorId = $"author-{Guid.NewGuid()}"; + await MarkExistingCommentsRead(readerId); + var (thread1, firstComment1) = await CreateThreadWithComment(authorId); + var reply1 = await fixture.Api.AddUserComment(thread1.Id, NewComment("reply 1")); + var (thread2, _) = await CreateThreadWithComment(authorId); + + await SetCurrentUser(readerId); + (await fixture.Api.CountUnreadComments()).Should().Be(3); + + await fixture.Api.MarkCommentRead(firstComment1.Id); + (await fixture.Api.CountUnreadComments()).Should().Be(2); + (await fixture.Api.CountUnreadComments(thread1.Id)).Should().Be(1); + + await fixture.Api.MarkCommentThreadRead(thread1.Id); + (await fixture.Api.CountUnreadComments()).Should().Be(1); + + await fixture.Api.MarkAllCommentsRead(); + (await fixture.Api.CountUnreadComments()).Should().Be(0); + (await fixture.Api.GetUnreadComments().ToArrayAsync()).Should().BeEmpty(); + } + + [Fact] + public async Task ReadStatus_IsPerUser() + { + var reader1 = $"reader-{Guid.NewGuid()}"; + var reader2 = $"reader-{Guid.NewGuid()}"; + var authorId = $"author-{Guid.NewGuid()}"; + await MarkExistingCommentsRead(reader1); + await MarkExistingCommentsRead(reader2); + var (_, firstComment) = await CreateThreadWithComment(authorId); + + await SetCurrentUser(reader1); + await fixture.Api.MarkCommentRead(firstComment.Id); + + await SetCurrentUser(reader2); + (await fixture.Api.GetUnreadComments().ToArrayAsync()).Should().ContainSingle(c => c.Id == firstComment.Id); + } + + [Fact] + public async Task ReadStatus_RemainsSeenWhenCommentArrivesAfterSeenRow() + { + var readerId = $"reader-{Guid.NewGuid()}"; + var authorId = $"author-{Guid.NewGuid()}"; + var futureCommentId = Guid.NewGuid(); + await MarkExistingCommentsRead(readerId); + var (thread, _) = await CreateThreadWithComment(authorId); + + await SetCurrentUser(readerId); + await fixture.Api.MarkCommentRead(futureCommentId); + + await SetCurrentUser(authorId); + await fixture.Api.AddUserComment(thread.Id, NewComment("arrived later", futureCommentId)); + + await SetCurrentUser(readerId); + (await fixture.Api.GetUnreadComments(thread.Id).ToArrayAsync()).Should().NotContain(c => c.Id == futureCommentId); + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Comments/CreateCommentThreadChange.cs b/backend/FwLite/LcmCrdt/Changes/Comments/CreateCommentThreadChange.cs new file mode 100644 index 0000000000..b96360b890 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Comments/CreateCommentThreadChange.cs @@ -0,0 +1,46 @@ +using System.Text.Json.Serialization; +using SIL.Harmony; +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Comments; + +public class CreateCommentThreadChange : CreateChange, ISelfNamedType +{ + public CreateCommentThreadChange(CommentThread thread) : base(thread.Id == Guid.Empty ? Guid.NewGuid() : thread.Id) + { + thread.Id = EntityId; + SubjectId = thread.SubjectId; + SubjectType = thread.SubjectType; + Status = thread.Status; + CreatedAt = thread.CreatedAt == default ? DateTimeOffset.UtcNow : thread.CreatedAt; + UpdatedAt = thread.UpdatedAt == default ? CreatedAt : thread.UpdatedAt; + } + + [JsonConstructor] + private CreateCommentThreadChange(Guid entityId, Guid subjectId, SubjectType subjectType) : base(entityId) + { + SubjectId = subjectId; + SubjectType = subjectType; + } + + public Guid SubjectId { get; init; } + public SubjectType SubjectType { get; init; } + public ThreadStatus Status { get; set; } + public DateTimeOffset CreatedAt { get; set; } + public DateTimeOffset UpdatedAt { get; set; } + + public override ValueTask NewEntity(Commit commit, IChangeContext context) + { + return ValueTask.FromResult(new CommentThread + { + Id = EntityId, + SubjectId = SubjectId, + SubjectType = SubjectType, + Status = Status, + CreatedAt = CreatedAt, + UpdatedAt = UpdatedAt + }); + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Comments/CreateUserCommentChange.cs b/backend/FwLite/LcmCrdt/Changes/Comments/CreateUserCommentChange.cs new file mode 100644 index 0000000000..63d1f983d1 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Comments/CreateUserCommentChange.cs @@ -0,0 +1,53 @@ +using System.Text.Json.Serialization; +using SIL.Harmony; +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Comments; + +public class CreateUserCommentChange : CreateChange, ISelfNamedType +{ + public CreateUserCommentChange(UserComment comment) : base(comment.Id == Guid.Empty ? Guid.NewGuid() : comment.Id) + { + comment.Id = EntityId; + CommentThreadId = comment.CommentThreadId; + PreviousCommentId = comment.PreviousCommentId; + Text = comment.Text; + AuthorId = comment.AuthorId; + AuthorName = comment.AuthorName; + CreatedAt = comment.CreatedAt == default ? DateTimeOffset.UtcNow : comment.CreatedAt; + UpdatedAt = comment.UpdatedAt == default ? CreatedAt : comment.UpdatedAt; + } + + [JsonConstructor] + private CreateUserCommentChange(Guid entityId, Guid commentThreadId, string text) : base(entityId) + { + CommentThreadId = commentThreadId; + Text = text; + } + + public Guid CommentThreadId { get; init; } + public Guid? PreviousCommentId { get; set; } + public string Text { get; set; } + public string? AuthorId { get; set; } + public string? AuthorName { get; set; } + public DateTimeOffset CreatedAt { get; set; } + public DateTimeOffset UpdatedAt { get; set; } + + public override async ValueTask NewEntity(Commit commit, IChangeContext context) + { + return new UserComment + { + Id = EntityId, + CommentThreadId = CommentThreadId, + PreviousCommentId = PreviousCommentId, + Text = Text, + AuthorId = AuthorId, + AuthorName = AuthorName, + CreatedAt = CreatedAt, + UpdatedAt = UpdatedAt, + DeletedAt = await context.IsObjectDeleted(CommentThreadId) ? commit.DateTime : null + }; + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Comments/EditUserCommentChange.cs b/backend/FwLite/LcmCrdt/Changes/Comments/EditUserCommentChange.cs new file mode 100644 index 0000000000..5a9738617a --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Comments/EditUserCommentChange.cs @@ -0,0 +1,31 @@ +using System.Text.Json.Serialization; +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Comments; + +public class EditUserCommentChange : EditChange, ISelfNamedType +{ + public EditUserCommentChange(Guid entityId, string text, DateTimeOffset updatedAt) : base(entityId) + { + Text = text; + UpdatedAt = updatedAt; + } + + [JsonConstructor] + private EditUserCommentChange(Guid entityId, string text) : base(entityId) + { + Text = text; + } + + public string Text { get; set; } + public DateTimeOffset UpdatedAt { get; set; } + + public override ValueTask ApplyChange(UserComment entity, IChangeContext context) + { + entity.Text = Text; + entity.UpdatedAt = UpdatedAt; + return ValueTask.CompletedTask; + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Comments/SetCommentThreadStatusChange.cs b/backend/FwLite/LcmCrdt/Changes/Comments/SetCommentThreadStatusChange.cs new file mode 100644 index 0000000000..fe1b26ab77 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Comments/SetCommentThreadStatusChange.cs @@ -0,0 +1,31 @@ +using System.Text.Json.Serialization; +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Comments; + +public class SetCommentThreadStatusChange : EditChange, ISelfNamedType +{ + public SetCommentThreadStatusChange(Guid entityId, ThreadStatus status, DateTimeOffset updatedAt) : base(entityId) + { + Status = status; + UpdatedAt = updatedAt; + } + + [JsonConstructor] + private SetCommentThreadStatusChange(Guid entityId, ThreadStatus status) : base(entityId) + { + Status = status; + } + + public ThreadStatus Status { get; set; } + public DateTimeOffset UpdatedAt { get; set; } + + public override ValueTask ApplyChange(CommentThread entity, IChangeContext context) + { + entity.Status = Status; + entity.UpdatedAt = UpdatedAt; + return ValueTask.CompletedTask; + } +} diff --git a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs index 77635100e3..0a09afc8ee 100644 --- a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs +++ b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs @@ -2,6 +2,7 @@ using SIL.Harmony; using SIL.Harmony.Changes; using LcmCrdt.Changes; +using LcmCrdt.Changes.Comments; using LcmCrdt.Changes.CustomJsonPatches; using LcmCrdt.Changes.Entries; using LcmCrdt.Changes.ExampleSentences; @@ -29,6 +30,7 @@ public class CrdtMiniLcmApi( IOptions config, ILogger logger, LcmMediaService lcmMediaService, + LocalCommentReadStatusService commentReadStatusService, EntrySearchService? entrySearchService = null) : IMiniLcmApi { private Guid ClientId { get; } = projectService.ProjectData.ClientId; @@ -917,6 +919,151 @@ private void AssertManagerRoleForCustomViewWrite() $"Only managers can manage custom views."); } + public async IAsyncEnumerable GetCommentThreads(SubjectType subjectType, Guid subjectId) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var threads = await repo.CommentThreads + .Where(t => t.SubjectType == subjectType && t.SubjectId == subjectId) + .ToArrayAsync(); + foreach (var thread in threads.OrderBy(t => t.CreatedAt).ThenBy(t => t.Id)) + { + yield return thread; + } + } + + public async Task GetCommentThread(Guid id) + { + await using var repo = await repoFactory.CreateRepoAsync(); + return await repo.GetCommentThread(id); + } + + public async IAsyncEnumerable GetUserComments(Guid threadId) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var comments = await repo.UserComments + .Where(c => c.CommentThreadId == threadId) + .ToArrayAsync(); + foreach (var comment in comments.OrderBy(c => c.CreatedAt).ThenBy(c => c.Id)) + { + yield return comment; + } + } + + public async Task GetUserComment(Guid id) + { + await using var repo = await repoFactory.CreateRepoAsync(); + return await repo.GetUserComment(id); + } + + public async IAsyncEnumerable GetUnreadComments(Guid? threadId = null) + { + foreach (var comment in await commentReadStatusService.GetUnreadComments(CurrentCommentUserId(), threadId)) + { + yield return comment; + } + } + + public Task CountUnreadComments(Guid? threadId = null) + { + return commentReadStatusService.CountUnreadComments(CurrentCommentUserId(), threadId); + } + + public async Task CreateCommentThread(CommentThread thread, UserComment firstComment) + { + if (thread.Id == Guid.Empty) thread.Id = Guid.NewGuid(); + var now = DateTimeOffset.UtcNow; + thread.CreatedAt = thread.CreatedAt == default ? now : thread.CreatedAt; + thread.UpdatedAt = thread.UpdatedAt == default ? thread.CreatedAt : thread.UpdatedAt; + firstComment.CommentThreadId = thread.Id; + StampCommentAuthor(firstComment, now); + + await AddChanges([ + new CreateCommentThreadChange(thread), + new CreateUserCommentChange(firstComment) + ]); + await commentReadStatusService.MarkCommentRead(CurrentCommentUserId(), firstComment.Id); + return await GetCommentThread(thread.Id) ?? throw NotFoundException.ForType(thread.Id); + } + + public async Task AddUserComment(Guid threadId, UserComment comment) + { + await using var repo = await repoFactory.CreateRepoAsync(); + _ = await repo.GetCommentThread(threadId) ?? throw NotFoundException.ForType(threadId); + comment.CommentThreadId = threadId; + StampCommentAuthor(comment, DateTimeOffset.UtcNow); + + await AddChange(new CreateUserCommentChange(comment)); + await commentReadStatusService.MarkCommentRead(CurrentCommentUserId(), comment.Id); + return await repo.GetUserComment(comment.Id) ?? throw NotFoundException.ForType(comment.Id); + } + + public async Task EditUserComment(Guid commentId, string text) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var comment = await repo.GetUserComment(commentId) ?? throw NotFoundException.ForType(commentId); + AssertCurrentUserCanChangeComment(comment); + await AddChange(new EditUserCommentChange(commentId, text, DateTimeOffset.UtcNow)); + return await repo.GetUserComment(commentId) ?? throw NotFoundException.ForType(commentId); + } + + public async Task SetCommentThreadStatus(Guid threadId, ThreadStatus status) + { + await using var repo = await repoFactory.CreateRepoAsync(); + _ = await repo.GetCommentThread(threadId) ?? throw NotFoundException.ForType(threadId); + await AddChange(new SetCommentThreadStatusChange(threadId, status, DateTimeOffset.UtcNow)); + return await repo.GetCommentThread(threadId) ?? throw NotFoundException.ForType(threadId); + } + + public async Task DeleteUserComment(Guid commentId) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var comment = await repo.GetUserComment(commentId) ?? throw NotFoundException.ForType(commentId); + AssertCurrentUserCanChangeComment(comment); + await AddChange(new DeleteChange(commentId)); + } + + public async Task DeleteCommentThread(Guid threadId) + { + await using var repo = await repoFactory.CreateRepoAsync(); + _ = await repo.GetCommentThread(threadId) ?? throw NotFoundException.ForType(threadId); + await AddChange(new DeleteChange(threadId)); + } + + public Task MarkCommentRead(Guid commentId) + { + return commentReadStatusService.MarkCommentRead(CurrentCommentUserId(), commentId); + } + + public Task MarkCommentThreadRead(Guid threadId) + { + return commentReadStatusService.MarkThreadRead(CurrentCommentUserId(), threadId); + } + + public Task MarkAllCommentsRead() + { + return commentReadStatusService.MarkAllRead(CurrentCommentUserId()); + } + + private void StampCommentAuthor(UserComment comment, DateTimeOffset now) + { + if (comment.Id == Guid.Empty) comment.Id = Guid.NewGuid(); + comment.AuthorId = CurrentCommentUserId(); + comment.AuthorName = ProjectData.LastUserName; + comment.CreatedAt = comment.CreatedAt == default ? now : comment.CreatedAt; + comment.UpdatedAt = comment.UpdatedAt == default ? comment.CreatedAt : comment.UpdatedAt; + } + + private string CurrentCommentUserId() + { + return ProjectData.LastUserId ?? ProjectData.ClientId.ToString(); + } + + private void AssertCurrentUserCanChangeComment(UserComment comment) + { + if (comment.AuthorId == CurrentCommentUserId()) return; + throw new UnauthorizedAccessException("Only the comment author can edit or delete this comment."); + } + public void Dispose() { } diff --git a/backend/FwLite/LcmCrdt/Data/LocalCommentReadStatusService.cs b/backend/FwLite/LcmCrdt/Data/LocalCommentReadStatusService.cs new file mode 100644 index 0000000000..a58a145886 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Data/LocalCommentReadStatusService.cs @@ -0,0 +1,80 @@ +using Microsoft.EntityFrameworkCore; + +namespace LcmCrdt.Data; + +public class LocalCommentReadStatusService(IDbContextFactory dbContextFactory) +{ + public async Task GetUnreadComments(string userId, Guid? threadId = null) + { + await using var dbContext = await dbContextFactory.CreateDbContextAsync(); + var query = UnreadComments(dbContext, userId); + if (threadId is not null) + query = query.Where(c => c.CommentThreadId == threadId); + var comments = await query.ToArrayAsync(); + return [.. comments.OrderBy(c => c.CreatedAt).ThenBy(c => c.Id)]; + } + + public async Task CountUnreadComments(string userId, Guid? threadId = null) + { + await using var dbContext = await dbContextFactory.CreateDbContextAsync(); + var query = UnreadComments(dbContext, userId); + if (threadId is not null) + query = query.Where(c => c.CommentThreadId == threadId); + return await query.CountAsync(); + } + + public async Task MarkCommentRead(string userId, Guid commentId) + { + await using var dbContext = await dbContextFactory.CreateDbContextAsync(); + await MarkCommentsRead(dbContext, userId, [commentId]); + } + + public async Task MarkThreadRead(string userId, Guid threadId) + { + await using var dbContext = await dbContextFactory.CreateDbContextAsync(); + var commentIds = await dbContext.UserComments + .Where(c => c.CommentThreadId == threadId) + .Select(c => c.Id) + .ToArrayAsync(); + await MarkCommentsRead(dbContext, userId, commentIds); + } + + public async Task MarkAllRead(string userId) + { + await using var dbContext = await dbContextFactory.CreateDbContextAsync(); + var commentIds = await dbContext.UserComments + .Select(c => c.Id) + .ToArrayAsync(); + await MarkCommentsRead(dbContext, userId, commentIds); + } + + private static IQueryable UnreadComments(LcmCrdtDbContext dbContext, string userId) + { + return dbContext.UserComments + .Where(c => c.AuthorId != userId) + .Where(c => !dbContext.SeenUserComments.Any(seen => + seen.UserId == userId && + seen.CommentId == c.Id)); + } + + private static async Task MarkCommentsRead(LcmCrdtDbContext dbContext, string userId, IReadOnlyCollection commentIds) + { + if (commentIds.Count == 0) return; + + var alreadySeen = await dbContext.SeenUserComments + .Where(s => s.UserId == userId && commentIds.Contains(s.CommentId)) + .Select(s => s.CommentId) + .ToArrayAsync(); + var alreadySeenSet = alreadySeen.ToHashSet(); + var now = DateTimeOffset.UtcNow; + dbContext.SeenUserComments.AddRange(commentIds + .Where(commentId => !alreadySeenSet.Contains(commentId)) + .Select(commentId => new SeenUserComment + { + UserId = userId, + CommentId = commentId, + SeenAt = now + })); + await dbContext.SaveChangesAsync(); + } +} diff --git a/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs b/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs index 8b3273b6da..09cc8fec04 100644 --- a/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs +++ b/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs @@ -75,6 +75,8 @@ public void Dispose() public IQueryable PartsOfSpeech => dbContext.PartsOfSpeech; public IQueryable Publications => dbContext.Publications; public IQueryable CustomViews => dbContext.CustomViews; + public IQueryable CommentThreads => dbContext.CommentThreads; + public IQueryable UserComments => dbContext.UserComments; private WritingSystem? _defaultVernacularWs; @@ -308,4 +310,14 @@ public async Task GetEntryIndex(Guid entryId, string? query = null, IndexQu .AsQueryable(), cv => cv.Id == customViewId); return customView; } + + public async Task GetCommentThread(Guid threadId) + { + return await AsyncExtensions.SingleOrDefaultAsync(CommentThreads.AsQueryable(), t => t.Id == threadId); + } + + public async Task GetUserComment(Guid commentId) + { + return await AsyncExtensions.SingleOrDefaultAsync(UserComments.AsQueryable(), c => c.Id == commentId); + } } diff --git a/backend/FwLite/LcmCrdt/Data/SeenUserComment.cs b/backend/FwLite/LcmCrdt/Data/SeenUserComment.cs new file mode 100644 index 0000000000..f2b81b2610 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Data/SeenUserComment.cs @@ -0,0 +1,8 @@ +namespace LcmCrdt.Data; + +public class SeenUserComment +{ + public required string UserId { get; set; } + public Guid CommentId { get; set; } + public DateTimeOffset SeenAt { get; set; } +} diff --git a/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs b/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs index 4ad835f964..789f10d762 100644 --- a/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs +++ b/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs @@ -1,4 +1,5 @@ using System.Text.Json; +using LcmCrdt.Data; using LcmCrdt.FullTextSearch; using SIL.Harmony; using SIL.Harmony.Db; @@ -28,6 +29,9 @@ IOptions options public IQueryable PartsOfSpeech => Set().AsNoTracking(); public IQueryable Publications => Set().AsNoTracking(); public IQueryable CustomViews => Set().AsNoTracking(); + public IQueryable CommentThreads => Set().AsNoTracking(); + public IQueryable UserComments => Set().AsNoTracking(); + public DbSet SeenUserComments => Set(); protected override void OnModelCreating(ModelBuilder modelBuilder) { @@ -44,6 +48,10 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) var morphTypeModel = modelBuilder.Entity(); morphTypeModel.HasIndex(m => m.Kind).IsUnique(); + + var seenUserCommentModel = modelBuilder.Entity(); + seenUserCommentModel.HasKey(s => new { s.UserId, s.CommentId }); + seenUserCommentModel.HasIndex(s => s.CommentId); } protected override void ConfigureConventions(ModelConfigurationBuilder builder) diff --git a/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs b/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs index 4b0b529cae..9937ee279d 100644 --- a/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs +++ b/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs @@ -6,6 +6,7 @@ using SIL.Harmony.Changes; using LcmCrdt.Changes; using LcmCrdt.Changes.CustomJsonPatches; +using LcmCrdt.Changes.Comments; using LcmCrdt.Changes.Entries; using LcmCrdt.Changes.ExampleSentences; using LcmCrdt.Data; @@ -72,6 +73,7 @@ public static IServiceCollection AddLcmCrdtClientCore(this IServiceCollection se services.AddSingleton(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddSingleton(); @@ -274,6 +276,19 @@ public static void ConfigureCrdt(CrdtConfig config) .HasColumnType("jsonb") .HasConversion(writingSystemArrayConverter); }) + .Add(builder => + { + builder.HasIndex(t => new { t.SubjectType, t.SubjectId }); + builder.HasIndex(t => t.CreatedAt); + }) + .Add(builder => + { + builder.HasOne() + .WithMany() + .HasForeignKey(c => c.CommentThreadId); + builder.HasIndex(c => c.CommentThreadId); + builder.HasIndex(c => c.CreatedAt); + }) .Add() .Add(builder => { @@ -346,6 +361,12 @@ public static void ConfigureCrdt(CrdtConfig config) .Add() .Add() .Add>() + .Add() + .Add() + .Add() + .Add() + .Add>() + .Add>() .Add() .Add>() .Add>() diff --git a/backend/FwLite/LcmCrdt/Migrations/20260627055013_AddComments.Designer.cs b/backend/FwLite/LcmCrdt/Migrations/20260627055013_AddComments.Designer.cs new file mode 100644 index 0000000000..00af5f674c --- /dev/null +++ b/backend/FwLite/LcmCrdt/Migrations/20260627055013_AddComments.Designer.cs @@ -0,0 +1,968 @@ +// +using System; +using System.Collections.Generic; +using LcmCrdt; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace LcmCrdt.Migrations +{ + [DbContext(typeof(LcmCrdtDbContext))] + [Migration("20260627055013_AddComments")] + partial class AddComments + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "10.0.8"); + + modelBuilder.Entity("LcmCrdt.Data.SeenUserComment", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("CommentId") + .HasColumnType("TEXT"); + + b.Property("SeenAt") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "CommentId"); + + b.HasIndex("CommentId"); + + b.ToTable("SeenUserComments"); + }); + + modelBuilder.Entity("LcmCrdt.FullTextSearch.EntrySearchRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CitationForm") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Gloss") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Headword") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("LexemeForm") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("EntrySearchRecord", null, t => + { + t.ExcludeFromMigrations(); + }); + }); + + modelBuilder.Entity("LcmCrdt.ProjectData", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ClientId") + .HasColumnType("TEXT"); + + b.Property("Code") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FwProjectId") + .HasColumnType("TEXT"); + + b.Property("LastUserId") + .HasColumnType("TEXT"); + + b.Property("LastUserName") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("OriginDomain") + .HasColumnType("TEXT"); + + b.Property("Role") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasDefaultValue("Editor"); + + b.HasKey("Id"); + + b.ToTable("ProjectData"); + }); + + modelBuilder.Entity("MiniLcm.Models.CommentThread", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("SubjectId") + .HasColumnType("TEXT"); + + b.Property("SubjectType") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CreatedAt"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("SubjectType", "SubjectId"); + + b.ToTable("CommentThread"); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ComplexFormEntryId") + .HasColumnType("TEXT"); + + b.Property("ComplexFormHeadword") + .HasColumnType("TEXT"); + + b.Property("ComponentEntryId") + .HasColumnType("TEXT"); + + b.Property("ComponentHeadword") + .HasColumnType("TEXT"); + + b.Property("ComponentSenseId") + .HasColumnType("TEXT") + .HasColumnName("ComponentSenseId"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("ComponentEntryId"); + + b.HasIndex("ComponentSenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("ComplexFormEntryId", "ComponentEntryId") + .IsUnique() + .HasFilter("ComponentSenseId IS NULL"); + + b.HasIndex("ComplexFormEntryId", "ComponentEntryId", "ComponentSenseId") + .IsUnique() + .HasFilter("ComponentSenseId IS NOT NULL"); + + b.ToTable("ComplexFormComponents", (string)null); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("ComplexFormType"); + }); + + modelBuilder.Entity("MiniLcm.Models.CustomView", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Analysis") + .HasColumnType("jsonb"); + + b.Property("Base") + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("EntryFields") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ExampleFields") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SenseFields") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Vernacular") + .HasColumnType("jsonb"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("CustomView"); + }); + + modelBuilder.Entity("MiniLcm.Models.Entry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CitationForm") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ComplexFormTypes") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("HomographNumber") + .HasColumnType("INTEGER"); + + b.Property("LexemeForm") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("LiteralMeaning") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("MorphType") + .HasColumnType("INTEGER"); + + b.Property("Note") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("PublishIn") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("Entry"); + }); + + modelBuilder.Entity("MiniLcm.Models.ExampleSentence", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("Reference") + .HasColumnType("jsonb"); + + b.Property("SenseId") + .HasColumnType("TEXT"); + + b.Property("Sentence") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Translations") + .IsRequired() + .HasColumnType("jsonb"); + + b.HasKey("Id"); + + b.HasIndex("SenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("ExampleSentence"); + }); + + modelBuilder.Entity("MiniLcm.Models.MorphType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Abbreviation") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Description") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Kind") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Postfix") + .HasColumnType("TEXT"); + + b.Property("Prefix") + .HasColumnType("TEXT"); + + b.Property("SecondaryOrder") + .HasColumnType("INTEGER"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("Kind") + .IsUnique(); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("MorphType"); + }); + + modelBuilder.Entity("MiniLcm.Models.PartOfSpeech", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Predefined") + .HasColumnType("INTEGER"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("PartOfSpeech"); + }); + + modelBuilder.Entity("MiniLcm.Models.Publication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("Publication"); + }); + + modelBuilder.Entity("MiniLcm.Models.SemanticDomain", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Code") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Predefined") + .HasColumnType("INTEGER"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("SemanticDomain"); + }); + + modelBuilder.Entity("MiniLcm.Models.Sense", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("EntryId") + .HasColumnType("TEXT"); + + b.Property("Gloss") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("PartOfSpeechId") + .HasColumnType("TEXT"); + + b.Property("SemanticDomains") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("EntryId"); + + b.HasIndex("PartOfSpeechId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("Sense"); + }); + + modelBuilder.Entity("MiniLcm.Models.UserComment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AuthorId") + .HasColumnType("TEXT"); + + b.Property("AuthorName") + .HasColumnType("TEXT"); + + b.Property("CommentThreadId") + .HasColumnType("TEXT"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("PreviousCommentId") + .HasColumnType("TEXT"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Text") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UpdatedAt") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CommentThreadId"); + + b.HasIndex("CreatedAt"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("UserComment"); + }); + + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Abbreviation") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Exemplars") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Font") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.Property("WsId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("WsId", "Type") + .IsUnique(); + + b.ToTable("WritingSystem"); + }); + + modelBuilder.Entity("SIL.Harmony.Commit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ClientId") + .HasColumnType("TEXT"); + + b.Property("Hash") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Metadata") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ParentHash") + .IsRequired() + .HasColumnType("TEXT"); + + b.ComplexProperty(typeof(Dictionary), "HybridDateTime", "SIL.Harmony.Commit.HybridDateTime#HybridDateTime", b1 => + { + b1.IsRequired(); + + b1.Property("Counter") + .HasColumnType("INTEGER") + .HasColumnName("Counter"); + + b1.Property("DateTime") + .HasColumnType("TEXT") + .HasColumnName("DateTime"); + }); + + b.HasKey("Id"); + + b.ToTable("Commits", (string)null); + + b.HasAnnotation("CustomIndex:CompositeIndexes", "[{\"paths\":[\"HybridDateTime.DateTime\",\"HybridDateTime.Counter\",\"Id\"],\"unique\":false,\"name\":\"IX_Commits_DateTime_Counter_Id\"}]"); + }); + + modelBuilder.Entity("SIL.Harmony.Core.ChangeEntity", b => + { + b.Property("CommitId") + .HasColumnType("TEXT"); + + b.Property("Index") + .HasColumnType("INTEGER"); + + b.Property("Change") + .HasColumnType("jsonb"); + + b.Property("EntityId") + .HasColumnType("TEXT"); + + b.HasKey("CommitId", "Index"); + + b.ToTable("ChangeEntities", (string)null); + }); + + modelBuilder.Entity("SIL.Harmony.Db.ObjectSnapshot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CommitId") + .HasColumnType("TEXT"); + + b.Property("Entity") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("EntityId") + .HasColumnType("TEXT"); + + b.Property("EntityIsDeleted") + .HasColumnType("INTEGER"); + + b.Property("IsRoot") + .HasColumnType("INTEGER"); + + b.PrimitiveCollection("References") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("TypeName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("EntityId"); + + b.HasIndex("CommitId", "EntityId") + .IsUnique(); + + b.ToTable("Snapshots", (string)null); + }); + + modelBuilder.Entity("SIL.Harmony.Resource.LocalResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("LocalPath") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("LocalResource"); + }); + + modelBuilder.Entity("SIL.Harmony.Resource.RemoteResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("RemoteId") + .HasColumnType("TEXT"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("RemoteResource"); + }); + + modelBuilder.Entity("MiniLcm.Models.CommentThread", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.CommentThread", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormComponent", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Components") + .HasForeignKey("ComplexFormEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("ComplexForms") + .HasForeignKey("ComponentEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany() + .HasForeignKey("ComponentSenseId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.ComplexFormComponent", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.ComplexFormType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.CustomView", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.CustomView", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Entry", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Entry", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.ExampleSentence", b => + { + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany("ExampleSentences") + .HasForeignKey("SenseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.ExampleSentence", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.MorphType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.MorphType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.PartOfSpeech", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.PartOfSpeech", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Publication", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Publication", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.SemanticDomain", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.SemanticDomain", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Sense", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Senses") + .HasForeignKey("EntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.PartOfSpeech", "PartOfSpeech") + .WithMany() + .HasForeignKey("PartOfSpeechId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Sense", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("PartOfSpeech"); + }); + + modelBuilder.Entity("MiniLcm.Models.UserComment", b => + { + b.HasOne("MiniLcm.Models.CommentThread", null) + .WithMany() + .HasForeignKey("CommentThreadId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.UserComment", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.WritingSystem", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("SIL.Harmony.Core.ChangeEntity", b => + { + b.HasOne("SIL.Harmony.Commit", null) + .WithMany("ChangeEntities") + .HasForeignKey("CommitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("SIL.Harmony.Db.ObjectSnapshot", b => + { + b.HasOne("SIL.Harmony.Commit", "Commit") + .WithMany("Snapshots") + .HasForeignKey("CommitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Commit"); + }); + + modelBuilder.Entity("SIL.Harmony.Resource.RemoteResource", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("SIL.Harmony.Resource.RemoteResource", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Entry", b => + { + b.Navigation("ComplexForms"); + + b.Navigation("Components"); + + b.Navigation("Senses"); + }); + + modelBuilder.Entity("MiniLcm.Models.Sense", b => + { + b.Navigation("ExampleSentences"); + }); + + modelBuilder.Entity("SIL.Harmony.Commit", b => + { + b.Navigation("ChangeEntities"); + + b.Navigation("Snapshots"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/FwLite/LcmCrdt/Migrations/20260627055013_AddComments.cs b/backend/FwLite/LcmCrdt/Migrations/20260627055013_AddComments.cs new file mode 100644 index 0000000000..424e85694e --- /dev/null +++ b/backend/FwLite/LcmCrdt/Migrations/20260627055013_AddComments.cs @@ -0,0 +1,134 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace LcmCrdt.Migrations +{ + /// + public partial class AddComments : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "CommentThread", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + DeletedAt = table.Column(type: "TEXT", nullable: true), + SubjectId = table.Column(type: "TEXT", nullable: false), + SubjectType = table.Column(type: "INTEGER", nullable: false), + Status = table.Column(type: "INTEGER", nullable: false), + CreatedAt = table.Column(type: "TEXT", nullable: false), + UpdatedAt = table.Column(type: "TEXT", nullable: false), + SnapshotId = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_CommentThread", x => x.Id); + table.ForeignKey( + name: "FK_CommentThread_Snapshots_SnapshotId", + column: x => x.SnapshotId, + principalTable: "Snapshots", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + + migrationBuilder.CreateTable( + name: "SeenUserComments", + columns: table => new + { + UserId = table.Column(type: "TEXT", nullable: false), + CommentId = table.Column(type: "TEXT", nullable: false), + SeenAt = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SeenUserComments", x => new { x.UserId, x.CommentId }); + }); + + migrationBuilder.CreateTable( + name: "UserComment", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + DeletedAt = table.Column(type: "TEXT", nullable: true), + CommentThreadId = table.Column(type: "TEXT", nullable: false), + PreviousCommentId = table.Column(type: "TEXT", nullable: true), + Text = table.Column(type: "TEXT", nullable: false), + AuthorId = table.Column(type: "TEXT", nullable: true), + AuthorName = table.Column(type: "TEXT", nullable: true), + CreatedAt = table.Column(type: "TEXT", nullable: false), + UpdatedAt = table.Column(type: "TEXT", nullable: false), + SnapshotId = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_UserComment", x => x.Id); + table.ForeignKey( + name: "FK_UserComment_CommentThread_CommentThreadId", + column: x => x.CommentThreadId, + principalTable: "CommentThread", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_UserComment_Snapshots_SnapshotId", + column: x => x.SnapshotId, + principalTable: "Snapshots", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + + migrationBuilder.CreateIndex( + name: "IX_CommentThread_CreatedAt", + table: "CommentThread", + column: "CreatedAt"); + + migrationBuilder.CreateIndex( + name: "IX_CommentThread_SnapshotId", + table: "CommentThread", + column: "SnapshotId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_CommentThread_SubjectType_SubjectId", + table: "CommentThread", + columns: new[] { "SubjectType", "SubjectId" }); + + migrationBuilder.CreateIndex( + name: "IX_SeenUserComments_CommentId", + table: "SeenUserComments", + column: "CommentId"); + + migrationBuilder.CreateIndex( + name: "IX_UserComment_CommentThreadId", + table: "UserComment", + column: "CommentThreadId"); + + migrationBuilder.CreateIndex( + name: "IX_UserComment_CreatedAt", + table: "UserComment", + column: "CreatedAt"); + + migrationBuilder.CreateIndex( + name: "IX_UserComment_SnapshotId", + table: "UserComment", + column: "SnapshotId", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "SeenUserComments"); + + migrationBuilder.DropTable( + name: "UserComment"); + + migrationBuilder.DropTable( + name: "CommentThread"); + } + } +} diff --git a/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs b/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs index 8bcbe2d3b9..fa4613f735 100644 --- a/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs +++ b/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs @@ -18,6 +18,24 @@ protected override void BuildModel(ModelBuilder modelBuilder) #pragma warning disable 612, 618 modelBuilder.HasAnnotation("ProductVersion", "10.0.8"); + modelBuilder.Entity("LcmCrdt.Data.SeenUserComment", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("CommentId") + .HasColumnType("TEXT"); + + b.Property("SeenAt") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "CommentId"); + + b.HasIndex("CommentId"); + + b.ToTable("SeenUserComments"); + }); + modelBuilder.Entity("LcmCrdt.FullTextSearch.EntrySearchRecord", b => { b.Property("Id") @@ -92,6 +110,45 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("ProjectData"); }); + modelBuilder.Entity("MiniLcm.Models.CommentThread", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("SubjectId") + .HasColumnType("TEXT"); + + b.Property("SubjectType") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CreatedAt"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("SubjectType", "SubjectId"); + + b.ToTable("CommentThread"); + }); + modelBuilder.Entity("MiniLcm.Models.ComplexFormComponent", b => { b.Property("Id") @@ -475,6 +532,52 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("Sense"); }); + modelBuilder.Entity("MiniLcm.Models.UserComment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AuthorId") + .HasColumnType("TEXT"); + + b.Property("AuthorName") + .HasColumnType("TEXT"); + + b.Property("CommentThreadId") + .HasColumnType("TEXT"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("PreviousCommentId") + .HasColumnType("TEXT"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Text") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UpdatedAt") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CommentThreadId"); + + b.HasIndex("CreatedAt"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("UserComment"); + }); + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => { b.Property("Id") @@ -662,6 +765,14 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("RemoteResource"); }); + modelBuilder.Entity("MiniLcm.Models.CommentThread", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.CommentThread", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + modelBuilder.Entity("MiniLcm.Models.ComplexFormComponent", b => { b.HasOne("MiniLcm.Models.Entry", null) @@ -778,6 +889,20 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("PartOfSpeech"); }); + modelBuilder.Entity("MiniLcm.Models.UserComment", b => + { + b.HasOne("MiniLcm.Models.CommentThread", null) + .WithMany() + .HasForeignKey("CommentThreadId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.UserComment", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => { b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) diff --git a/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs b/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs index 99cfe11980..9c6a40c940 100644 --- a/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs +++ b/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs @@ -48,6 +48,30 @@ IAsyncEnumerable GetCustomViews() { throw new NotSupportedException("Custom views are only supported by CRDT projects"); } + IAsyncEnumerable GetCommentThreads(SubjectType subjectType, Guid subjectId) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task GetCommentThread(Guid id) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + IAsyncEnumerable GetUserComments(Guid threadId) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task GetUserComment(Guid id) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + IAsyncEnumerable GetUnreadComments(Guid? threadId = null) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task CountUnreadComments(Guid? threadId = null) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } } public record IndexQueryOptions( diff --git a/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs b/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs index 7bcf31255a..9555175317 100644 --- a/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs +++ b/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs @@ -126,6 +126,45 @@ Task DeleteCustomView(Guid id) } #endregion + #region Comments + Task CreateCommentThread(CommentThread thread, UserComment firstComment) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task AddUserComment(Guid threadId, UserComment comment) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task EditUserComment(Guid commentId, string text) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task SetCommentThreadStatus(Guid threadId, ThreadStatus status) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task DeleteUserComment(Guid commentId) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task DeleteCommentThread(Guid threadId) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task MarkCommentRead(Guid commentId) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task MarkCommentThreadRead(Guid threadId) + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + Task MarkAllCommentsRead() + { + throw new NotSupportedException("Comments are only supported by CRDT projects"); + } + #endregion + /// /// Imports the provided semantic domains in bulk. diff --git a/backend/FwLite/MiniLcm/Models/Comments.cs b/backend/FwLite/MiniLcm/Models/Comments.cs new file mode 100644 index 0000000000..f7e127b3b8 --- /dev/null +++ b/backend/FwLite/MiniLcm/Models/Comments.cs @@ -0,0 +1,72 @@ +using System.Text.Json.Serialization; + +namespace MiniLcm.Models; + +[JsonConverter(typeof(JsonStringEnumConverter))] +public enum ThreadStatus +{ + Open, + Closed +} + +[JsonConverter(typeof(JsonStringEnumConverter))] +public enum SubjectType +{ + Entry, + Sense, + ExampleSentence +} + +public record CommentThread : IObjectWithId +{ + public Guid Id { get; set; } + public DateTimeOffset? DeletedAt { get; set; } + public Guid SubjectId { get; set; } + public SubjectType SubjectType { get; set; } + public ThreadStatus Status { get; set; } = ThreadStatus.Open; + public DateTimeOffset CreatedAt { get; set; } + public DateTimeOffset UpdatedAt { get; set; } + + public Guid[] GetReferences() + { + return []; + } + + public void RemoveReference(Guid id, DateTimeOffset time) + { + } + + public CommentThread Copy() + { + return this with { }; + } +} + +public record UserComment : IObjectWithId +{ + public Guid Id { get; set; } + public DateTimeOffset? DeletedAt { get; set; } + public Guid CommentThreadId { get; set; } + public Guid? PreviousCommentId { get; set; } + public required string Text { get; set; } + public string? AuthorId { get; set; } + public string? AuthorName { get; set; } + public DateTimeOffset CreatedAt { get; set; } + public DateTimeOffset UpdatedAt { get; set; } + + public Guid[] GetReferences() + { + return [CommentThreadId]; + } + + public void RemoveReference(Guid id, DateTimeOffset time) + { + if (id == CommentThreadId) + DeletedAt = time; + } + + public UserComment Copy() + { + return this with { }; + } +} diff --git a/backend/FwLite/MiniLcm/Models/IObjectWithId.cs b/backend/FwLite/MiniLcm/Models/IObjectWithId.cs index 606dca4192..4fd7db364a 100644 --- a/backend/FwLite/MiniLcm/Models/IObjectWithId.cs +++ b/backend/FwLite/MiniLcm/Models/IObjectWithId.cs @@ -13,6 +13,8 @@ namespace MiniLcm.Models; [JsonDerivedType(typeof(ComplexFormType), nameof(ComplexFormType))] [JsonDerivedType(typeof(ComplexFormComponent), nameof(ComplexFormComponent))] [JsonDerivedType(typeof(CustomView), nameof(CustomView))] +[JsonDerivedType(typeof(CommentThread), nameof(CommentThread))] +[JsonDerivedType(typeof(UserComment), nameof(UserComment))] [JsonDerivedType(typeof(MorphType), nameof(MorphType))] public interface IObjectWithId { diff --git a/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs b/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs index bf2d901f8f..5cf77106b8 100644 --- a/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs +++ b/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs @@ -488,6 +488,63 @@ public Task DeleteCustomView(Guid id) #endregion + #region Comments + + public Task CreateCommentThread(CommentThread thread, UserComment firstComment) + { + return _api.CreateCommentThread(thread, NormalizeUserComment(firstComment)); + } + + public Task AddUserComment(Guid threadId, UserComment comment) + { + return _api.AddUserComment(threadId, NormalizeUserComment(comment)); + } + + public Task EditUserComment(Guid commentId, string text) + { + return _api.EditUserComment(commentId, StringNormalizer.Normalize(text)); + } + + public Task SetCommentThreadStatus(Guid threadId, ThreadStatus status) + { + return _api.SetCommentThreadStatus(threadId, status); + } + + public Task DeleteUserComment(Guid commentId) + { + return _api.DeleteUserComment(commentId); + } + + public Task DeleteCommentThread(Guid threadId) + { + return _api.DeleteCommentThread(threadId); + } + + public Task MarkCommentRead(Guid commentId) + { + return _api.MarkCommentRead(commentId); + } + + public Task MarkCommentThreadRead(Guid threadId) + { + return _api.MarkCommentThreadRead(threadId); + } + + public Task MarkAllCommentsRead() + { + return _api.MarkAllCommentsRead(); + } + + private static UserComment NormalizeUserComment(UserComment comment) + { + return comment with + { + Text = StringNormalizer.Normalize(comment.Text) + }; + } + + #endregion + #region File Operations public Task SaveFile(Stream stream, LcmFileMetadata metadata) diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmFeatures.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmFeatures.ts index fd779582b2..34e48f2f36 100644 --- a/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmFeatures.ts +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmFeatures.ts @@ -12,5 +12,6 @@ export interface IMiniLcmFeatures sync?: boolean; audio?: boolean; customViews?: boolean; + comments?: boolean; } /* eslint-enable */ diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts index e49d7388b0..9651957542 100644 --- a/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts @@ -17,6 +17,10 @@ import type {IEntry} from '../../MiniLcm/Models/IEntry'; import type {IQueryOptions} from '../../MiniLcm/IQueryOptions'; import type {IWritingSystem} from '../../MiniLcm/Models/IWritingSystem'; import type {WritingSystemType} from '../../MiniLcm/Models/WritingSystemType'; +import type {ICommentThread} from '../../MiniLcm/Models/ICommentThread'; +import type {SubjectType} from '../../MiniLcm/Models/SubjectType'; +import type {IUserComment} from '../../MiniLcm/Models/IUserComment'; +import type {ThreadStatus} from '../../MiniLcm/Models/ThreadStatus'; import type {IComplexFormComponent} from '../../MiniLcm/Models/IComplexFormComponent'; import type {ISense} from '../../MiniLcm/Models/ISense'; import type {IExampleSentence} from '../../MiniLcm/Models/IExampleSentence'; @@ -59,6 +63,21 @@ export interface IMiniLcmJsInvokable createCustomView(customView: ICustomView) : Promise; updateCustomView(customView: ICustomView) : Promise; deleteCustomView(id: string) : Promise; + getCommentThreads(subjectType: SubjectType, subjectId: string) : Promise; + getCommentThread(id: string) : Promise; + getUserComments(threadId: string) : Promise; + getUserComment(id: string) : Promise; + getUnreadComments(threadId?: string) : Promise; + countUnreadComments(threadId?: string) : Promise; + createCommentThread(thread: ICommentThread, firstComment: IUserComment) : Promise; + addUserComment(threadId: string, comment: IUserComment) : Promise; + editUserComment(commentId: string, text: string) : Promise; + setCommentThreadStatus(threadId: string, status: ThreadStatus) : Promise; + deleteUserComment(commentId: string) : Promise; + deleteCommentThread(threadId: string) : Promise; + markCommentRead(commentId: string) : Promise; + markCommentThreadRead(threadId: string) : Promise; + markAllCommentsRead() : Promise; createEntry(entry: IEntry) : Promise; updateEntry(before: IEntry, after: IEntry) : Promise; deleteEntry(id: string) : Promise; diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/ICommentThread.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/ICommentThread.ts new file mode 100644 index 0000000000..0f4f40222a --- /dev/null +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/ICommentThread.ts @@ -0,0 +1,20 @@ +/* eslint-disable */ +// This code was generated by a Reinforced.Typings tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. + +import type {IObjectWithId} from './IObjectWithId'; +import type {SubjectType} from './SubjectType'; +import type {ThreadStatus} from './ThreadStatus'; + +export interface ICommentThread extends IObjectWithId +{ + id: string; + deletedAt?: string; + subjectId: string; + subjectType: SubjectType; + status: ThreadStatus; + createdAt: string; + updatedAt: string; +} +/* eslint-enable */ diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IUserComment.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IUserComment.ts new file mode 100644 index 0000000000..df3332a396 --- /dev/null +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IUserComment.ts @@ -0,0 +1,20 @@ +/* eslint-disable */ +// This code was generated by a Reinforced.Typings tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. + +import type {IObjectWithId} from './IObjectWithId'; + +export interface IUserComment extends IObjectWithId +{ + id: string; + deletedAt?: string; + commentThreadId: string; + previousCommentId?: string; + text: string; + authorId?: string; + authorName?: string; + createdAt: string; + updatedAt: string; +} +/* eslint-enable */ diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/SubjectType.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/SubjectType.ts new file mode 100644 index 0000000000..64ad21d573 --- /dev/null +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/SubjectType.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +// This code was generated by a Reinforced.Typings tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. + +export enum SubjectType { + Entry = "Entry", + Sense = "Sense", + ExampleSentence = "ExampleSentence" +} +/* eslint-enable */ diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/ThreadStatus.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/ThreadStatus.ts new file mode 100644 index 0000000000..4d088b83f6 --- /dev/null +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/ThreadStatus.ts @@ -0,0 +1,10 @@ +/* eslint-disable */ +// This code was generated by a Reinforced.Typings tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. + +export enum ThreadStatus { + Open = "Open", + Closed = "Closed" +} +/* eslint-enable */ From 19a3e251b413a983851e2ed89ec3d1ccfe5662f0 Mon Sep 17 00:00:00 2001 From: Kevin Hahn Date: Sat, 27 Jun 2026 20:14:46 +0700 Subject: [PATCH 02/28] Add comment UI Co-authored-by: Cursor --- frontend/viewer/comment-ui-dialog.png | Bin 0 -> 111357 bytes frontend/viewer/comment-ui-entry-selected.png | Bin 0 -> 116734 bytes frontend/viewer/comment-ui-initial.png | Bin 0 -> 68955 bytes .../src/lib/entry-editor/CommentDialog.svelte | 244 ++++++++++++++++++ .../entry-editor/EntityListItemActions.svelte | 15 +- .../object-editors/EntryEditor.svelte | 3 + frontend/viewer/src/locales/en.po | 67 +++++ frontend/viewer/src/locales/es.po | 67 +++++ frontend/viewer/src/locales/fr.po | 67 +++++ frontend/viewer/src/locales/id.po | 67 +++++ frontend/viewer/src/locales/ko.po | 67 +++++ frontend/viewer/src/locales/ms.po | 67 +++++ frontend/viewer/src/locales/sw.po | 67 +++++ frontend/viewer/src/locales/vi.po | 67 +++++ .../src/project/browse/EntryMenu.svelte | 12 + .../src/project/browse/EntryView.svelte | 16 ++ .../src/project/demo/in-memory-demo-api.ts | 124 +++++++++ 17 files changed, 948 insertions(+), 2 deletions(-) create mode 100644 frontend/viewer/comment-ui-dialog.png create mode 100644 frontend/viewer/comment-ui-entry-selected.png create mode 100644 frontend/viewer/comment-ui-initial.png create mode 100644 frontend/viewer/src/lib/entry-editor/CommentDialog.svelte diff --git a/frontend/viewer/comment-ui-dialog.png b/frontend/viewer/comment-ui-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..aed9a9c5874711b784234b1480a7766f6f3ee106 GIT binary patch literal 111357 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%0D7L$YMlh@dCls!Pwz7)PnY$ysRHtD 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 J3O)PC{{ts2l`jAQ literal 0 HcmV?d00001 diff --git a/frontend/viewer/comment-ui-entry-selected.png b/frontend/viewer/comment-ui-entry-selected.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c4f44b8f03706d0c5a25b735400b3a4fda6330 GIT binary patch literal 116734 zcmZ^}RaBf!(>6*HoB#oW1Pw01-61%^-66QU%OJraxVyUr1|KBB-Q5OvcN_R8dERfW zeX{SPd$m<{b@kO;kKua@fO_JcCp>Frv@ zzk>gMild~z-~9IrGfVuI@PEIGC;vaijz}&c;JEQ zzv4FQM=8lMKN++)X#TqOTKnuep+%z9i2ti3z>ktJz?t6vpyw}I6Qm>T|85->!WAKZ z?!k{1D*9ieT#;?h(n|G;q;HfAxd%DCDJCdTA>OPGH;yWCbo959AT=JvBVvD( z`M}K!k1)IcdaGj8`%6SxE>>wojQxZ`fSHu!f_?iYz36|nwDqYHDAtP*q>pdjpp~BN z--%VJUp@G^kpEpDs7c@^yYLz6CVymfTuq7qG5ob<4ctY+&5{3g7fvce@`q9BLG#~I0GSI(!OQ`65 zK<;-L?odH57bNiTZ3-E*U!rd;sSEx8REe4p(KQt9%XdL&NPPJc&>{YxsB#SL zFj4<^pP3-{w6OmTQjP@Cq=RGJ#Prve20Nh0ss67R11C~#L6{EFLAWa9Lgjyjab(Dj z9zLiIae_-43+sck@=-h({!XFx2+(?ARMB^Y!PxtBE%2cd1=7;e(^ec*RDJuXZ*sTy zQ+OB{}_l`m%iytPO@-v&i&J>JaFi}!@y3& z@XNdrqaNkAqUKO*+j!d;yO!Jd~*C4}>%Uq{l+)zT;Ao@Tcj4~ z3w(J*%?FeJ+eaMo;wf=PMn+8f@4rQiq)rS}2XF=!7BZK$N=%~JjFud#=6pdX76i<; zJActx_JXx)RZW}oAKx_TUA#7K+_fREnTvfNJf|5}E03pL#Yy_r%1|j3Mp$bWIum0; zb#)v(F{Hl+2`OuaDq-WcHwLNlgIsAZEflWhdRGb#_5^9gx<;ni+1=a+D*V(%piXUA z@jJFsoX~5~mdo8$E*lIz!lJg78#;YzR3YyGYq;)rK59iJ%dVueTN#s~I>RKz$D3Ku zh^?afH~rbVc>g}=dRgqRv*enU<;E*Zgd7hgWxSd1BGQi81|HH(OC@&gms&}=-+tn| z72u4?nQ7hG670s}F4pE@`Ng^!)>C4i9T_csy?oW*)WhjYM6j~QI6%lEs%b}GDbcbjEId4$B>EvvM<2X|%0NY`zuv!vJqy)jmvOR(Tn4gOk*j!B4AL87a2i-l=AE7V^a9;w=U3pi zLke?I*U)y2p3I_eZ^X!s=BCG};@rjX>ur_YD~TQkln`)3rtzb>UXNk{fOPrZVioRUSMiZbp%8`W8KaL6V# zzqYRV``%?>+~|17Aqsu|m~NqU#^<<;{HP3SiXvRx_2z4cf6aJ!CqMBe4g0nH?`-k4 z(`d78B8<3+fw_ujQ8ImLveV;>iCK5j-c&@jD+5P*d{g!8 z75{a;sN7hTI49EW^1U{mF;EL{19Sak@(csQIlBY}RVY%(sj~jHY$c-IVHOE6VODBmnW_8^NvllRJe+N5ttazC!1`G}QJ?CG1o#Drx8KjBq-E@4o z&XH`&ugPvN`Np?*$Xcuudf;OhA^1)*V~*MPD@Y?yx+`h9_HjSNw|6sI(Pl?#AY6?= z#MBdKU`*b6i`_-ER87)c>AXD8c4hu3BSC8HRF8GCW!m31ZbWwC@L;Sul9eD`tU8DL zDM;-2cr881j$n)3CZ;fqXjlaBf=mus1tp|!?@#(g6APs4S%=6I@;F`R_(jJ#C6P_* z`cRbAxCGz&)<<+8kKCT=Y5A0g>`s~&TVp^c0sUygbQyD4P3ZuWNXlQ-6sZf?<^Sv; zU(W^3T(sB`f~s0!Km6k<+QR zfQU3YGLYn`iMJL+Gj##%PBAeK*{$lqsI^Uf8g~z8S3kYK$esYh&sFNr@VXs4-2WQS z6AcYTCHQ83ASNc(Gm*Des4L)A1l>~s@+3>W5(R-%HF<{hmQ`Q6^wT&L(T zsuM)Z52w^?r;qBn0P%jqkul zw==rdbC0%zrR6f~lf8|Fh0Ve_h>zmnap?~#@M^w^*`{J#c3N`xn?1MFu(4KvH+E!i zjC=c_?A^k7pzC}B@=`(G#XVb#MzrSqoMPvG0b6gD{?yGGuesUjrS;sO0V5GNz-&!g zi(}SfTFFYOQXp?gl%TG6yBS0edb*b)?u{EbxVb^EW;Fk%QT9PHn$UK+k?60tmeJAt z{zJ7?ebS*;k+5%C;lZJmXPx92VyvNkOXF({WrCqZTwn2@e#&^_~;F4 z7sBRy#a|TXPjj{2l1#-JKf^`@I>PntCJQ8aa2~$X7>x@{N;W+#>o1_^YU^OPR-C>= zK+Ec|Icmvu1$1$a8Ih54AfuYUC*Wi!BO_yFjh9dKb_ry~sPksWnn)qdfg<|JO7l9J zpjXp}8MdtnsF7V5-oiADpRR%qXUasWeIHE4y}YafYOuc~PrqkhUTgQ3y1}aT-fa^l zo#HRMj1?eX0=Q85IT|=U_oI8?WqNaJunj4uKSVNg-X8JXHB-3nrkzL-)6<-f*Mx+U_#&dB7BKOCrBf46#7p~QphYiQRUE$U z)oBgBMS58j%aDIZC?cq28r#o>6mI+j-z$^C2!dPInT03D9Hky{7D!H=S8!*6K$bF< zA?9sv{s!YFt<$$V*{n)9nIu<|bpCqYM2T_tzRfI&vc(Yqv^rri-()V$B@fZd zCoV2d_I5x3i1Tq~ozG&N%*;TV)hw{TgyEdDxS*dqA-yyX>+kg@b5q3&K|-pM&$` zxaY+-$h@O`I$tn_ky6nMqeEyCTt~MmrBcuc$w`WY#QPd~}> z=0#C7zcL?yBfqpQE$HZQoq(%sF_hi9LI{bQ%K#;X=@V^sTTVX#rtD??7) z1L3Az0yIX4p^-&e&fB(Zzhv}zI%$&2;N`TQOO%iOriPLA(~0|-cW!eTtxAXA+a%Wr zKYxY#2LS)*Yh}=#XLvCoN0h(Vmw{xwx)(~zG!d_ZxhdrB^kRj>#WY;3tq)WPenNAu zUw1QeZ)Uc9_sfV(G;ERun%*MMc#Lx=Z7-XDs{bboU`C<@+&S6QL)c zCpV^$9%AI(|QEFu)$I>C6(=DyI7BuhZ7WP83wGFIOHs$hNJM4^CS zG?Z|P1LUaf_;TG`OsOeHQB1A(u0kBT;}SdHA-rVsx@sdy%6MLEir<~u5pdbzv22Q7 zqP_pbn%W_St%&gk4L=W$*J>h(H-CD$@vg&ZPB{CIDNx_}fiEeU6u*0XfhF%#gr&m3 zj!FK26=5NUnFD`~E0OWxN);PuKfmfKA5MqfOY`^)2fU(zR05kw$vNVd8 zwKp5p^+QW${1!hD{5WEaNxi$gxcRH6R~GQWEOP%4!eCjijo)={F<4`tyy$HKaOOmH z&`dKMTS|5I;@Fa;Ea$-Ql0YaZqBPl-jTH~Nm+m3XI(9Ck62E^69w@>zFkmBd8`4ew z=qM0Y1}3d@KixK|8YjZq{DR@#fWd!@j+nH>=gqT2BPyP`SVt{I_X~(6F42eMD#h|9 z^sPz#3>9E{RygSOEB>kjA-B0^#(@AGcHhmJvV?Z6xuj-dkxbt31d-=JvXSc&2ANi8fzR>2 zz!P5AA;2PQlW-0bA1@CF_LjGSmL~li^hD%!J@k3HJy`_4-u07oPWOxpa?uuEjd9mk*RT>0-H0xIv;3!FkY09^1AvKTZc;VOC@u};ogppf0 zjykZI+ zoRPQI^++8sG?q1T9PsW*OnlD0bTfWT)>5;id%fidB4Wf=KtT4zF-?A8axgCOUCT9t z&{5t|Ctu>H;<(cnJNGvLFMj>y?tG<`vM=axL1q$Mutv2>{(n~~{3ij|9Qd^p6AgCx zmtnU|%JTu;_G&3_L8+=3Dw+Ui#>wVX-(2HbRP>4R>9cVUn#@+wv`KMOlxlJZ37T>8 zKsAx&^oY-8Z;6%oHm3GkEr(%x2N+J%AcjCtifaJO-7v&fZE- zQC6PD&WZ``bD`yQ@#C++<1t5}&6mY*YwtKQ*8cVKPF^_~VAS(4-vsGW>Q)4C-R+ZU!Ci9T- zcO5Y;5w3^s>POB0)FESL=^VutuILvSg&~9^q%5>eF zZp3-f25N2pFZmW3IaVI5A8}M^o<5x3W9G)0z1N6ij{;^QXrQ$7zF%D+c#I{khKQLP zQM@Z|vHktSW19DdR+0SsE&#EgvWfWlYWxLTzO`jST%iAHr}U!}VBQXb9yy!&E~70yUmnU%32XKA z_eYB5`@QhgIT-%Y^RCmZJnPW$xIc#?ac-J4gQ6n`cO4R}PYPNU!SXWaon<}K0rh!5qxrPM1^tB>13tXykfOT)=ys445i|1QSn>(=xD989|gwL zaj9(#gP)2EQ1KfUfVaGH2SXgB2=n6HsDu^hblf~mhREEvS(%kTo{fs8Qu*e`r+%b- z-n?IG5bONW<2Sy9IA7bHRoDH&%uP<*m%YnSVv9iDc(gJ+;at%|)LS9b~mBgN0pTQz6C3vN3`1qHO{y{z}aQo>9 zQ`V!|3CHfbx)3Ch+g*i~2+a1T=Zkl2dST#EM77?OHZFQY&c#{B5vn9nJk~*899wAU z+4YnkSJBjnLwFju`2<_v+2?Y5sCOogRO^Av$DTJ66sTUWr(;lXM%>*_x$RaYc|g?_ zDkWpkz|8CRI8V83cQm8ZcG=*pI$_ej6XG@)PsyIGd;rB37u0AQ92~P8+4GmO<-M(- zKnWeWhsmRUqyhxe);EeRux|rYsVve}c=#2Q54_!zWj>|t;PbGV7N5NpC7acViKRO5 zi`(J3GOzwUvRy4^D7VENhv6fXe#?1*r%~0bGI?z?Bw@Mwnr#Wye?6?DY;8 zi@)-4W?%!JZF4;MIfpDs65e)CBq^>P6X}@C6Fu7Hb^3n4>hH*D^z%CckqAlodN}OS z>O7P5_wWk>9UM|<)6}Go`=SSl^?C=%*-A;lyi?A3;4M7q9wKlsN&V|UjR}bPO56E+ zX*D0lLmmcX&djZEV}TY}5j#QBxm0B>LmhcxaQ8KZDe!MTC9!L%;mGUGt)!{$^z<|! zKtrc#tgXgkzM3ejXcDzG%xvM8A-QKt)=#ugtoL(O8C>>jrPsBpbb0WSoPs&?RnE)F zqxjYh+Rn}@XeCqm3@{BDV)0_vwYdyn2$Q*+E#QF{}*=$OH*7u2b;Ym{S(%pCMhNs)DF>!x>8cRhSuBH!EI@e#7k+N}#uUTk@rb#$7WjhRdqX32nklqy5ViTSvM=X1sI ze>q8kj<=lgxtR~{FEHPu+0ME53nh%*nv5}n*wCH~optvPH)*G~RF-Gc(vzBQGRJ$q z%xC?>*-Xc+zD9fS*s`~#gTpT%a2V`IvcIy}3q29X1v9>;R2y_gkM9|PaPBuk$@M#Z zZLO`3wwy~%hm#A7E4EYLqFT*VeX0A!Eb8*k3SLxni?vOPlGXXrA^xfA>0sW#?=mX4 z=+pe5aTY~KC**!hp>;kxwhq1cGZIoO0a+aOCt{W(cDJ8E&CgM71eln#xSBjM3>Iw* zA`5)H--=iz`$vkYZ{-duXC^0KMjQK=LMxvR`VHnGk6ZS>tn;NYJ?>%@@I!7=6gQ!!rED-lqDG zLM6X?reCx3pt*6?0BGxek;yOT(LUIFtXO9=VEEPh-n%4oF^D+hV1sAJs(Xjq=Em>! z^wrEm8og$kWG`i3fw_VW?a1-z@;IG4n&KhLrXbF}MXQHL=Mu8*}UKXzugH@5QZeA8T`;yg{o;{f$?8!N)g) ze08KdN}ADNY1cm-l;rrmcz$A7e~-uf{pr@0 z-LWeuoLWBfJ8%&Sf3J^6aP)H^qSQLk&}eiL!F;UI3@(r(d1{;YbqiJ0?gZ9|vsKcf z7+mgd8T8;tmhaen(!t#~#Vk{tX;qOvGHx4&5eaY7lM;mGD#wBP7|2IBUxXdz@lF9HW0xm?@x600Wf6HfRjB5WP7c8_1jEhCuYfWckoc8Kn7)bf6cL z0{^!j`#m(zeHeh#$4wZmTt)_S?)DKGJ7xH*|2t@9ZphatcYmwE{;hIVXbQWHp&=cf z`+N`mZ&mTvzaj$!Z8=$4WffBLl8}EdE7Bxhdy93-mHxqL7@GV)F5qukLa`f~R#p_4 z=)%hwg+)3eJks|eq zscBOxD)!bt1z>Vj@IL{be+9_z8=K?L*iSQ?oTdJ{@BeVupNBq`1A0=8Z{u|G8+z5#xXybeAg11*MMkP zhg@{V=g-Q?IR)K(MEue4G#?<*`{ekK`Zg0ce@!in+NVtOvCxaxS%K5CLN)$pvxF&T zMqQIU=8Y{S#cYHi} zlITuEa<8a z|4MU}Re>;)AtK&P$Zw+QB04y(QOW+N1$K2hD%O|nxc8I+<>7xT{wJfny*^I(K$e<&jhe>(W~)KD#hr1MXEq0=zc}i112slZ!n;qPT;;N#ou;%NTgLch?M`&MXD47-{sDz(qTv3v3GQv z0h@K7Lxd^4FE)dl?tVSpolPG=ZygW!gmn!Ke-BI;#iv|{w~D+_ke-)#m+D1mL-bZr zdMu}t+3PxWd)ov;kLt|L2RdE_mAIej7al5^PyLnSzZBGM=bbGBPPr`kg+X zL|^6PMhOd&c_#uuUe z!^8V}Mt$4in#K`fbr3W9) z`>qYj*eNNC_>BqwE`tb0@Pl!`51;E{z4>@`X=&;DI>F+Bc9w{G#1)v^zQ9j6`a#aw zc`QYHy^C=b2R{B1r@>vb$SEO+r5;H(M<*JlJ331fxs z#g~|zoK4N*H?&-O@+P`R&TWzDts(_}360^+C1%RQ&W50*PuC95Zp{5Xf0h20@PxJU z?9y9dRJZlt;8hT)-QyykBF&OBJ*`^g?})j`ie;BLi9>gew7j3-Xv)Zrj3$cGfB*i? zV*K`o$GI4*i_A3c`S*B#|5@H|)2_t4QMt5_o=*3+ey_k6bZKYwvpnKQvGj|L4Y}oa zJEI8lzb2^%y5B(zbedb(aVCN{UIG*tmc7`UM$#B#kontQ&ri6Axd^Bo(VsWz1@OgA zbbw5YCl$1I#Y!*U?u6#IXN*jzb-y%C`6T_PXhm^5_p$N*s+lZ|g*|Y+Q|}cJ*?Yu` zNh30;hW&VRbhj-{LrXIFVsMRrJ=`rpY}aFM<6U#|cuV?X?R!mbE3g7({+7!up0W*% zt#pNIp)N)xmu^x5)a(ty$az@+4aV^75*)llT|R7x6;NuV#57X$MDbfZ^k1AKsSu#R zzxdjG26_lzH3J34*TTu81$waEt@K98P0n|pry+J2P4I81?a(i7 z1)VsVPq*MFeSLe3jddO_4unEtR<8WDf<4&doAB<2FO&!nkoR?6GKXueU#-8E5I^(Y z8D>yw%(Edd#}2Bz2zbLJN*~Qt)fjYgLIXhPK4c&xK;?e9ndekd!TJY<4ezWR5()Ae zCdWxS3LF6{Ka4CU(~p=boPE<7Vjglh{Itz}4CFDg<%%n66%Z&gVq#*xeJ4YNU~xVA zK&>EhQ}fzknV9x?eXHWM2V#ttOXudaVW>5;Q~7ZI$Z(XeL4kjrHBna$7hAD zI$loO<+5PkP1hM~qv_w5a@l0LmdGZJKBSzPfIR=N?^I^-)-`J@7Rpn=|Eooc{{VsP+H*fc5FXk8;iHtrq zH|wwOkpZf#&tiH4BCDF3+qL`#*(lpBo2(`ZaXR2;mPPl%Uh$kMr@-$;FOVU|olO20Bry@W>Y)j&> ze!*ii%Y4Dc^AOE=^ryVU-@B7l_!9Q|0FT+XmpGLOeeIv`7Z3aKjc77o zm0k`fx?Cd}a2v1}FkDS|L9Sn>tAIzhq)tY^ooy(t-AtThtu5CrMxAX;b1ULVp?5oO zZQwQ!0#{pA1cjK5?Lw6N9S--U)V8q}g&_~8iJSRyGBp(iD^;)rSMgYNQ$x&G>o`u< zv;_{<%$x9=KWmS24n&ontE;I+(PWJSv2tEIL?p)BHh-x2<&PR&;b$lnE6G}?pkWHf z-Dxm4FYnUgqTAV8RvRTQm%EeG^coG|Ec>##*`ydE#cny1dBCko?CWD-R)dGS)SAw} z>Zi-~QKl{@#$XPfUT=i}&Q2d|!SXYzrKX#cy$fKp_$X?HPisnzzm34OiVR)o=xU~K zl)(TsYS)f&``ED4#Ekd3r=vuih~5h?7`f5yq;;)*l@c=?1oHmAK08;Xb2Po&U@d9x zeS7>BcM_T@x1rcK`S=$<=b!*|nZMdhPAMfVCMW0CG}7LqvTZv`#-z+U3fQ@no7pVU zHZnXnwQo`QnGR2Myo3pedVgS@Bx^ukP#qTtM_QBQ?W|sjCWoGcY4nFkILuupJFHZ+ zW{7M$d_a3&Zi{?QS473GBD`R+zSt%|u}1sjNgYk=bf?p&jpn=3gjJ%PfgfLxyiV9D zr+k#U6!e0xTgXLJ(rDk&7}ji8(dfP;yS&T6_i>e1}A$!?XH&CKTecg64P zuDp&FREnp2mKTXNpf`yRngvV#1#K%iI-s(yFHIb!t)X zGprGHMdV*}7r(<8FwM(qYqE>fhVap=(1tUgK+zEz5qTfPcUD!|{>K6|SO>VdxxKu+ zMiC1{bTI02Lqkx}ziH$EGg0aSsNG>25O_Z^2whC|ehmq2y@dZ+y}XyfC5PEY)FL8c zQrsmPdBk!Be=XFQ#BkA4^IV19pO+`4K`u&wpULP0PP7b~3O$nwqo9H~RacedL{2tG zHdlG099QyC=(#a+_m;u^K+I}me0w9R* z!$K4Il$0qe>v}~JGd8k+dD5xSF(jWI+fch}poan}&t*_aey3qT(9FNrNZSM!&DrKo z?GtU%C!iZ&It?l-{AK-vn^v_nnL!604i5URYWMj81@Pqca=(S1<0ohgB?fL}G-_S| z8(n8JR<37j?NI8#*eW7B;UA8mB+3p=?+}Gk>th)iHt%Emx>rC8nOgs zri9XkPiUWGsgR3e@8)1Uq+14Es=O=a?OR>H<|hE-73H6$=&2YZppZqz*^eBj1|F?b z{bDP`K!#JnUiM#1(JdR)mL@OJ^02wcXs-aUmT-#{7bsV;TdPiMQa*;$!$wfL_?5M z&HXX?E4b#Y78ZTwmpb20N2b>C;(!b#F>s-6$!Ae1k;XIc zv@aefN>y5qS7v>d1xpZ5y4`JP5?NPm3(ZQxh~UUXL=5&heGMoNhOp+bUC3!=;XX*} z9gCLpYW&VC7Ng3*5{=fg$G6G@X3mjmyUc%}A!O*A?&1fqR!)BW@ct2sjd0aT0zNiT zJ!ZgbMB(229A5lh2gd_;x8r6kYWe1tn_Ted#00a7O2R70y#)mN`z{8i)KoFBpiM8z z*o$Dt@#H;FIof>1^l|qCoIDm_W%7J@5~m}Q!EcIT@%%@b!G=ZF;^$uKh=Y)BmWm$| z`WKdlHAonasfWZGvx~H37@;O5uqCi;YEtj#{1_h>7~My`2jz3bB`Ew8hxNk5M{ToU85`M@{ccY z6B#UgKJX?0kPBLlfGzV5Z2BAXRnK;=y{Q;1x-VreTJdp|ixkX2m;i;Mpu!49)8c_XJ1O3$^o0gY2&crh-B&Ua>hZPD zUo5P*FO!38nb><`h3Z2G_a&BqcdD=v1vNc?HYVIZFnHBp^Zs&G<3<$TnY^RmHR=hy zE;{o|{A*9)s-ANFE$9(!6{uh={Xlz0MJI0c`MS|eI@?q?n)-|o$b^Yc57LOwBx@Ll zTz(RzGzO|Ql&m10vg{!pX>W851+b<;BI|xh!Sl5Gs&Sy`gayEFlwT<=nidH zX0(c;2gA4Zr8UZB?D%pFNY1}BN5YTzaK!&D3=B;9$B#-dLsCNd$O@A4Cp2Y$1Y)Kp z;05|C6U3qKrVqvA5;H$0WG1RMb`)Y;vWy&Bs?}j(q^Xj{<$EXKOXvNRQ%#)qu1KV! zE8JN*$c(T9K1YAZT}mjT?k!Bdu%?oci;%8a_a&XJV;8r<@6#*|fD&H0$Jc@7`xR^s z-1xR=g%aOQC*7L@+FVnjdtdd!Kaz5u86|nblKk6)VgSAT6IUq{0#D)CHnelI{qFG!Y zS7X?{ns14{j7#S94%v*Y&S-;QOaHPJ1Z#ykxQg|M$wh@MRB)9rSi0$q|L6Mb*<{xm zy*cON@GEh@7MJaGW%Hc@j`Lo9&qPs_=)<*^o*HD2Z~E!x7eWrIS4`sEupHkm)34Mt z!F+OBg&}ILoefJkhT2U}&e_wnl-g!eAt$tmZVuEnCI6-*qTPvp4l7v~Q3aC8iBKLy z7-7%YHBA=ZkXi7B->qi?)#BaY6Prn=Af95xi5NUM7KPWPGHMd_2I4opsVnQ9j#cV$ zclQO2c7YE)%5Pkdc)sB}LV4 z_UW$0-L^Xz6(MW`w$2QI@{(aQ_y-86@lmb0hY3BuNmAuk_1=uHuF zY+^h;r)^Bk;kAHV9X3dkZ;gUUw4$f}22?L#hOfCMYv3jf7>@A%9$l-ZJ{A~&KNZWi zqQcxK9;-&BER$ne39jMAD#vCoB-n_)VXrf-PCgX>-ZwXG1vW3NC0_>exu;g-g^8UK z+-*oKH0&_hnTIyVIB3 z^SG`J)CbS8{Mf5mqBX|ZJk6=aU_QUkG6tn_0`d=!?4S5%3n3Y!1JSmLU>n-!H8o*m zFVIysNW@o2vEzoARAOk+y09mc&o47h?Ut_fL?PXBiuDR{+IOu8)0HbVyG3YcwEF-Q z<#L7#B?RcYMUmKIWYr-k78Q6F5<-kO5RxDY={gi?UQe@U> zuntnsR*kqHrjAEjQ_)2ux8)`9;T>zNKteq%T;aiB>sKJqS70S4i%upNO0x!2z3hzZ zBtiB#e>H!)xT?M$z8R69Jb0_&hkY|z{gZQxP_XiD*UEtBLrV(Nqia~IzNy;KQ9FYE z*_8$cLZA|Pl>}d^NwUVr@RFFemn);bELHucu^(TFlLJ%559bY;xQ-QWT58yxK6o|a zMiGCu8`1r2Dw}GOWAM1+U6!idR&l%U$*z@?cE&i8D&EBDONkq z{MMxxdU2)a8f^s+S!m9fs>o~-YC0=No0-zvr2TxY_aaizoDp0+6$(7Aw^sr{h5(sraf=@!HV1Jbi(Lkf0nL>w| z#(aqrv2AECki*`07?yHZS*t`Dc~{yd=Ftn#2{=ybr0m(zpiQ)-3Ron>@c#T|sSPdhO7!%s9 z4pg25*YzTQTD*i60{))0O5Z0scE-t#OuprRi;<4vc5u|1pT=mV{H9gTPQ~Fdm;A8y zRe_jgdTQD5$;vXzyajPDLIC|S~fxqUZInb%5x=aYOY)M6>W zhtAo%f&*fT|u@hppo(^ZRAB)Vre9Vw&Vta#X^_>*6P) z(vY&l%wisouMOVD-#w%uti;D`5}UGbw&vv$#)E%&knTW%ng6TXm&A1kHn7w52Y>wt700*#j@s-tqR+5-76 zt#Z;GWd_O>M*UO_ zl^F17fW6Yf;f+UKBs96u<_olIGdXztIqxbiyKz11?0&X?cIMnho#8p3G@A45GJpi( zh#UEY!Sfu{n&Fh6-ddzS{zs1LigmBic|jl?@Gv0RA&=VcorRl~CE*Ny_^rdF#WQ9k*z z9IS=lEH@D=Hl^(y(nkx|fnSvKkZ?Gl>)B%r{ zf;;>7xnf_quQxHl!6$bHiJEts+sCm3&*k>_Tu-6*2Zm=TO+~J}V@I_l?k>;rEo#P}*t;|6rEZ)1HD~?2R~$kJ89h zWF%ANar+g8K%pmtZ8msy$+th`z;Eo8cWDCX{7U@kEBjStrVx8wWP$t3)k5i-^?sKMttbhxkr?Bh~PvYAY%i{B8uEBVq{;n0-?T&oE z{L$^jMDvAYcvDM)_TWr3lia<7nvYJA!$acGPfJ7GE#U!UA!{I8Fm9PmNx=8p(B0h( zZ23Fbd?rZvoiE@&ZoYG<+G%^`iYeHJQ>)!OFSm~1j}(=~I!*cGi;zzady*?9?=bbV?63ZXnW-`aDKENk<(MsyZ_IHfW_r9Ic0L(fjXKtWg9XEwJ zbG_IW+k6q&4QT_L;qM5n!Do(zl(TV}qTo*n43Fzhxt)%obruR1d=A`KYcCNL)x5fy zRntyeTgYsQFR|8M`2f9=TuP$`b(Yn>S#d7skVHnHOzy6B{#AJ`}RYhb6LH zi8r`D+zc1pLs6SOgyx&FiEESJgG;p{yLbt_vM^=sTJE zTh41(z93}=S7eOV&D)L&I0N17=)$~L{YtpL53$>ACk!qksGQxAYpIE?94_{N33jQY z@C@y06p&q$+>ulKXIw|jmXMRQ>6p`}?|r3>o;ety46k?PBZj-97_D@$wvSQV z&?oj9|HlPzbwbppBswR$R?XjE`7LGvP&Vmt<@7lf=Jj_18TC@^Q#;pJW@(LEP1G5s zYgf38cM)0*=FzpaZ?!>ZzY{FajxsiQ44TY%`=I(_sy&g+INxa!F~(E&nTE&cVK zHO~p#g5s~;Bwn|7s>4j$M`MeX;K3FMD_f)E=c8Sw=2r(mBxf&uKBgzh=)HW?A7XNP z>=4PCmwCg3K;Kr|MoUuN_Vc?Zbaf8PI3_j$5Dw5+hjXb$Qe?wb|8i2COTYdiP4EOV z@+)C6QCg?Ogz;okWVfl=Ye#5`${wp)u=C~4{V!Pb_SU_u&|l5~mia*?KFmt4=Qsz0 z*AnzP4NBy9A9Yj9`Oq|qcH(C~fu>5BxM*LQ$r8C{)}feD8eh45&F*^x&Z>A_Y4Or| zg=OQQr7{l*AsGQ~VKpue>^|}-J<(R%jx6+4MgdFg1SOIy=){3Ir?R%@)sVL8R?zR6 zU(17(f_Q8)55cBuh6iE`Mv#SL9R;%h8Q^1GDc|+yS0wK;KjBCI2Uo`op!JUMX)ud| zi0NJjWLF{q`jWAG1#IvLkk$+(@iTdgQ#X;2190wf*&eWyEe54@hn?X1z06$5c?4MI zig?xNEef$oOGW-!{F=Z8jc{I%fu9y@0PfOSVzlEu7)%OVZwUa`=bRoYZ6hfv+g$`^ zQe(PC#Jr6bgJknbTW&?|102L;HF{q#PrqaU1O>)7BDL=h>@?yrQ=hLHrn>$gUvC-E zM$~rgQd&w21&S9h?k>S8?(R@Xaff2Tp)JMTU5dMFkQ8@!cM0wi?4-~0zUTZo-#5RK zVP=?_Bzw=k_gdGAd!aF(_`l`9oLBh$+*{2!Bihl^XoT{hM@}m4y&~c zN}0K@VGJkUxzlr#A=<3DN2nHuomT1fF)W6}Ln=Go_v0MHsMc z2cavmm;l-SfGn7n>{9)GQ1X>o0ru!!+|6+WFPF%rT;&UCQr_Te;DmcXj6TWrWWXPR zE;T1o@w6LnCmy4_#H5XY4;&?GY)jQe(p%!G#EcgZLL=3K*$?K}fsv;vp4OWINghev z!h+0{l=={>&l6>?bLRK6B2WA1#Y-j3?;fpXhaOmSu8hcb_c24jk$`yd(%b5K|edSDGc25AhImATP<@N+_l`)Oqe-%Gct zD*Nk1)ClH~g1`09C^JBd8srbxbpQDzC9V(5> zA78kC5dIToXexKY-JBj;}K7x@j=w^nzC@&??n_4eiwr@jPyNZHIVc$?5GCmW~L;BiZZvD7G1Ha5x% zhFTmC-dr*3VJqpFpz6*|2Wy)ufv}xxXcOrNb=w@g7wC@TL~vHTahUlX{ZdODPDiXn zX7-EBdTEJv$^nA{x4Y%(mbUsO$QP=5o=Yp83>E^Y?fII79tA$4@(RsP))zZvXV@W% z8Betr9@vp`XTQeA zE3GnqPI?O7O&lUKY(BPH)531uG6IK{>YF$GUWXz#+D6IKddF~QNl`m_hlc7%RNpm2 z$jwi8?n=q~o&Pp-hAEE7s4Y7awtnuBM_HK^5dJmoY9Hs!W~jIHJx1kpDCEt3@CW1)y*vPf^wfK`lwkMn}1Fyf8s1ozmUw>g>Zn-*xkA!_VpD$4_ z^}mij5T6RE*G}5TEz4%>kN5CSOZF&c_Cc6FCj_!7q&3lHzM&yK^f_xorsU^%h~&R^ z9LM(LT(0fo$g;lx`p7WvX!)7isBJEDwACm27UwQ{FU*u z7_N84eL5@&^6@>v2=@ z3d5h{^pvtJh+#=%Ws{}#BW`mmrHtH8|*&M!%>I`6#-JoJ!2z)9jjhnuZC!CA~47b+p8R8fTfGl$OeUwwY4Qv)N0y%kWlx%BMeboO5 z;mN@~4_Bj$;yW%i5gkPLdBsB^FGLA+|RQplR*3kJMg?XE$OOVN(1~mfYa&H#BxgU6FcyKxFJRGuDolwV-kL)2sYR z#>0Kgb#V-1mzCGax_g|sSgfE|r9!1L99l>1mcfc@!(XW|#OE7-GB>ZHVLRhLZ_?&Q zh6U119Un66@5V8FZnuAq{KdiJ?CAC$W+A;_)DW8eI+e$d@9=%#%uNFUN#FRgqc zXmJ9WdiKaJH6L<_$z^%l{0X!7Q5o9}24_;)xGe*=TGXFXScGCb8-~HTUYTWHT+;qD znTm&;x63KD)W$s;`Av=IX_Q((rmInpI7Uhe_JqSgAb{Am@oQH{;A)E~z&ODNu>->D zN0H3-M_KlU#OuV*AAFVWEiwMb4^ZQvlIti8W*AV*avTv^mUc5GYO!+P!w|j`lJ;|r zteY+o@+o~oj!py;5UW@jis4lC;7`4>Ou1wim@6qhcd+p=l<;Dk3`>WHcCAofYTpW5T+51{^&_X2+ zb^rr{Hpol$0*Agb8pw}vGTs*{Y!@4M@C!zxT*hE-d?sJGhJ4~E(tT{7z;|x7)4CRj zOL__1x%(68;~{XG`pA=*xV;l+!?*eQMabuig1!q&1&x8i-LZ7uRxA7{Q@YUOPGKx_ zp8_6*HOH4xk=x4HKm(C+;A0W;3*CX=1SRKh(Je~18gWHQCWhBmSGfR-B$sojyxN*@ z3ypj%lk_wj!zM)VaFO5d+lray3(NLNYSbyTlu3w>Bxbd21vv$7=+sug5@iUaY>|HN zclqa_*q57^zrF9hZ=|qoDFtjcI#sD$YiP%*JQ3lGYo9UZ&o6(?Yjw*QbfD9}tdJB> zfn9D_i*9>u(@V&kp(M$9Z>S#h9z7>hGe~n=hPZ4NRp&UeWig1HKBsms>*?)P_bVir z@Fsk9N94h5NCt6i%FYovA}cZ3FdD)FDnjm@FPu6$5~9in>Z=5z=6}bRHHQZG()a?w z8f@FA%?<~{jR#W^!#dU5YK^DhumFyM70TQGBH?n^HalJgtBl&u3@vVa3ZJ7N+v)3G z@FS_5)@aG>l}{Q#_Km;XK&BEal(1rQzrL4&H=^4ldnd5bv<2f*{H2z!?b59RQYZS3 zzSCI~>Mc{<&*eKAOFP6d0j$Z>27JEyy<=ztWm<@_G#Gwm4Ym$CU(#^fJ07b`RvnxQ z$n=WAX8n96hewyb-x#duEUkJ>_<`=dT&DZW(ZZA3%Yv0$u9#fx#&1y~dW8@LQYPasX=sUSH;UBL?QI_)vR*@R zA2}vLA4NQH;nMWH($_HaA~_m81+|$1+i8t;a&_uoD+*T zh1J+X}9Nlv@2H#bv`a^VUIxs z<%3_-v(9$ifZp5tU0a)H@D5Jf6?BoG{w-fh^Aqm)#VYSv^*Ftd?0v}XOv1f+k~;B_ znohQwOQ4N;`R(N@2rA^&jKB1&OV3nR`FejP4`VSIvuEfS*^T%c{_KhP+|2$!2I?eQ z;fJB4miS~{9!l1iX0r2u`Zkq>tE{!ao&gD9T4|A_S#~r31KD1KAxZf{s5GE~CGk__ zr!tYZ1xRMYPjN3UDH6H3!`J5m`rp!L%4X`~Sa)578p_INCRxjv);P)2#3}_3*u$H@ z{s}5XYNMj6MgF+pU(Ou4;_Ej)c+GrAb>+6(=X5;sD3WN_4M;vICT?XmX-EOZgsF6E z%Vp7foA8+!3|c*$v1ryJAh)5pTK_}MeJ zY*d!F#p$48XyZIp%Lp)ciTG@xn5=GW5%eg_>O=Ca_C1*bxajayJdq`01CRm$`%SLd zpe$+YkMW6!WI;X)8+XKrXJ%bJ4BabLX1|MdxA3B<)J?kwjG)&;?((RDy6RNPZ;9LW zlP^IUg4UN=d!9ZQqC<*c-BNqVvk*gVV+4A+Gp^E!LA$NM^%|u7d9KI2n8oH4Sb0KB z&0=a%_pzSZZ3Vql3*F(S^fZ-=iFcT%1vflH+$PqhU)OMqFVOFTLs&Pt{pWr~Hs!6; z1EO26702|xrRQRBSvn%o=xDtZto6ccuw$qu)96BGt@_tJ*pps035WB!AG|3zTXp}o zYXlmCoCU#LvbJtSv@aS#^Gi(@lV6V%Cg=|I@+c1}4?DjfQ-81<{{BemKk#kf84AeV zK+;5OyyoC9k$KsU3ZI3g3y%JTgd7V9#iW;gm{U@K7K%7^x}16VhSuErsId{9OcXEj zsjKxKg3K0Ty}ntS&;7~C8BGFMMt(lAxKAHb-`htw*>rofV#HPDQz{R`5BjQt>gfo^ zY2C^hZPQ^k;Qh6AV5)4d_+dYY-mLHuuT=mhu<1b*= zGMyJPPI}UGJepN)=i*hHEB&e280pb2dP7;31Pn_BJa&;dDvFFe-UhMg)bGtfiD;DzotI%i_b9US+u7Dq0??z)W*)o< zU<(mz47R!dc{m9H$7fd?g`EpyKrU}GJbt|Gn$NlQV&=7KH3b=^kgPy>JskNO`;Zro zQ<-3P&S(do9!4aDapYHxo}(j%L5tFOjYU_fuKIWS2eVQ`vuvDKye%WTGYqvCJr9PL zkUN{5qIzvtT0=iENJ<#uEYAFkWGE0KLS4q3y`qkie(>|(Bn8bw`fdo5svg; z(gRNzqmXq~R<)uy(ifM03!_tOW@?q@XHhqQWx)!OtEYhbxu!o+7k6NikeI+NeS_js zQo2%X(fKsg)oA5tL(Xqxz={NG!%S;5W>8sKLh(Zmm)1hLFj-pjUa8It*nN^LwHgIh zn4C+c9On>{W= zu2#Jhr&pZDqKpg%+U83paH)!i-%DrTBL-j3gZWKu4z~09trcDGC!D5Or?LWbaCOhrIx|#4% zNcjzH#9Op0_6YpDPgibusgRp{5C7^0&&3e@_zTPDh6DF(qtHrd5!vsSpYeEm8@%)& z{c=o_b}1i|CKq$TA7G<3mz@nS+4T$shlJ>E;1~7Jgk>u!$|`Ga8>lvNQw+CA@3NVC zX9k2sr=6Z@&;;T=PR_6w0R23s8?;)x1=R|*sNX`dXv>M&E@*fI%UHWOegJlam zG8zY#&Atm}oEvduv!rO1FQrQy%l5MQlZX!6B|x-DBa(n2CDU%I++f}MV8xWix7={Y z)L_i`e3|zqV{@bKI&=1TRoTNPp>EQ5x!JM(=J+LPt4}P!leQ!fZtSC{l)f zZ)i^+_p7f4@LE%P;d>w6+MvIF>K0Qz;%d7sQiitbz5J+s|8I2pn~eAyqh9Sqn61d9 zU4N9MpK+5n_8~Zcc{^o>xnN#<`#^I2Q(E$;Bo~_i5~=eb?V|NHk+cnQ;#SB*PE-@u z;dw-vtAqOFmcR?4(P^XYQdXxO6*3jJBNdAlXu8vGvJYa zSa`Rp1@H#j*9U(B?ZV#g&HBneHyW5`8Eq>fuuPF!#jHx#^io>ts{B8W#gcS@&-Z9@ zKgg=ucX{tWx0Pv8S4Wd)ZZXmCJlzhZ7}BGKK%(^bve(ef~M1(5n;9HIo)08alPtS8%ZttXt0HtAa@OUq9=M5?`zQP zVZ!LZ5Lawkw#HtEn|6v8uqNx=a%YsO7-VZ`*cBPIXMRVO{TSi^7>6h>D3HwW_IKi&7r-fFipKjH8BTT+%cFu2)`Jt8>oR`aK+=LxAV{gtv?y9Gt+ zq1NLfvAhKrLUR{SJYBvAvz=vPOLqTsPD8JZr_0W(>|XQhnG`7$m8`mAC%`>`pTU{D zmf@7!0h@8hR=2>!vKEj#U~!>(E`r;sW@l<&s(#-`90N`cE>_#wz7o36XG_pij}w8r z4NF^I_thqh-!aS4!CAeeu`L~HEn1Ov!?Z0ei?wt2#kWx#3p{YmWwRI=F;aG+XxNn9 z@xomD4oQoo!%o6nW{JHd#iXhud}IV&4xY+qcTf>{71U(}_g@xi$Pz4G?{OOEaliCM z2Rg6_YY9clX00y$9Y$c@%1-YlyPp7cR1okzKV^{s{F`Y_v)1(&SAO}JIjL-U zuF-}#!J8tiSAb!s(NY0`JN2wHwbe!fQ3+(B^@med=KZO&L)n={Os};5Gv|U(^sT5v zmClm}27V12e~UcLT$v93mW{9f^kBlL!w^$Ze3zGRaw8#OX7IT3|T3S$eI)V6l`kzR48nh31g^=wjpAg4+i(+GI z$=gvndPMrx;jLpMAO%W&ptvd~UrW|IoAC`;;u@?kJ<$~T)+MJgsAsSvry);pVoJHE zN)LV@g!=z5uVYZ-a&c~>#)IiNNL#ss z`ETb!{C`pwgfGWh$7x0IvvG3E4I|}|j7#sZ-ZVXc(b0b%!=e;@0lgg=UXUngB}{kX zj*&f_pPgpl6H>KZ?)g%ADe;c3vWg^DK3N%k|Vpbk*R!^Y`7%LH%$uOreV5%YdR6=GThf0&z z?mzHDO3*oyhJ(q~@6%Lfz9VN`g9J#^j;)LUaBtOl^MI7K-KBkSg8pU|H-LgC!pwRU zd)FX4p2j)^6WC45Eu*U}2Un_2rKVm6yeXkDQ)^W)Gq&v5+t&RoFDpwSh>A^aANmTR zLYPPW?GfX!6AH&?I&hH;QVN!gE(M$*cKc%9$Ew(oG<@6ya(EVUb?w*JmpcY<@Gyz zKNC_0K*U+Srv%`1f`Y6Nx%=-@7k)58PSu(Y?5Xy4N$dC=Wd@!nmv68zM8*#*#uby9 zbZRGtcQn^}aaxgGXZ^-gN^9}5vIO)dojF?N7#Y`tQYxSc7n71OQg-?-G zhXvSxVK87%Z()_q|UC7KW!Q7wbTsyhHyW9`r94-SP%47y;^VPm%Gx6Yt zM0bjJ0dm?n0CzdPi$D0*Q!uG4uECi3$)a+ZOFCZPE=g!$ZgCXOa)VM}N*D)@-#yI} z6yHx-?nCgw)kNO$9(F~ymB-uG-us3Oa#@27+NVp?i(C!0K8?Rrva#Ba8C4s`7dKN- zOq9fC9hG&_mG;!8PJmI54|h^!1bV`=_P1sE``=n+X+)e- zcZuzPi$eX_LH+(xaa%7<(k7v)-(O5C&!diaB?W0_!Zrt-T`gN}=v3C@ z`Gcff7HeCSFp)w!G6}jYTAW&3W8>%p{H@kaGwWx`>LkAxvaPuDtrs_zL<9sJjQVo~ z2Hip2H3ZGV6m?JC$&?$A>53=h$DEQ6bF!H%rfENZRy|y&zdE}WW)&5f%Hxd1?GvA1 zI=G2xH>my;&Ln9xI8@P8KKt9EGUd-Kz*cs`@_m+OR`l7j{%HSrQcOGtH#xXNZ-hjl zuYP+D@a^2CmLR>85-Rm}iXX*2HXdR>UK9JX`BjA3CvSn-&(6iaRv4VcNDPlCzZ9{R zE1Z&$*Q*~vYRp28GAOSg1EFEU2QRGyXMx)!TXjSaf5!i}7La94Dm$38QRX;^1{sL* zKtWC@ppGdnyw}k!Cvc147 z1iJTdl`%s)2RHR)HG#Gzg*P6ayv8!87dkXfO@M57bU#QT!myQB8k0aGK+ANrIq{%UhtrdugrilHZyN>L1z z3b@54#n_PtSUgoIuT4?uS9{fMDPC~Y$tmbVlUAiKx^h$6e#N^K9=eLp#2do2|;{Elsn`kbC-k zZMsCRA;fW-Zttr{)b<@4ZtK?yz}jTYAd$)ST)y85uYsK;0EL)duQ~q3k8RD{h1vqbrS=6=*ldK{&%%lMf@QHr z;JAg<{vb)MYV~!UceHjUzgEq9F=g__gKp$>l~*5cjHfP zRS3FQvyorPm`}Z{{Qn4gx9@NmyDHn}k7z}lfm2OwG}QHwY+^t)?eKS>3H z_QsZ;x>tC3dD)k0-9X_Om$S@Gr%zT>3+q#k4F)Mgu}*su!^9$X?m`3M!MtK`vWDv& zuz~CMgQRQW_YY-9gF?8DA3t0)Jm=-Vztx-uv~VnjJKt5Uro}ZmeRg66ULAg{J{zf? z&~yUk934gv9?t5r^>;Z%+haN-MN*O7Xy?tCusrWSUoY;jwRBc4WnlmDi{-aLHqCMw zgc?-Z^KV164mgFOvd1G*Gehlp13Ynr&3Wy2Ch`}f?*8J3L{KF`O~G!*9PvoNxkMmF zo3Z`dtPj=KWl7xajs82siDT`2=hhub*D74Eel+^iFd*PEv+R$ z5l-MJ>Fc1T8CnEt^SIhG-QUs!h19A1#)jrdA%$}9H+W81vhy{Zy-d7JVxx6f(9-$D z&#q0cY0~S%(eT=*jR5PY-dp8qu z0ZE`=Ni43Q*F9dWW{Tqi#JOnGX!-O@*IS!dL!JoL^{O2H4vu;Zh1XgV_g$n|KgP!| z{9K4(TA0rM4>J))~$3hFY;Tg^vPL}CC9dNsP5Q14aivb(~Wie344^}s|FAsM>obPak|A}gut#w@*WFwL)}kKNQAb^ z7Vm_N8a=7DQ^k6^gG_~K)f&n%?Aq8U3rHbpuh)JRk&(GiTRQ!U`X%B6cGQ;a4IfZm z!RWTQK8XQ2^>oc%sy*VS+aG((($^4Gx`;5-vld1M6W0KZR=T_$F>WHB9LuGDXDSS= zUaQ~6I6?&Xl(JYZsH{x-`ZBznzlJi_C6oMNxcc!VJ4fzX&`2d*noFeUXZYWR2$yS##*4&tV)V<3)DL$ueS#uQAA_Y18~xfEA_8N!tDUgAdXzm@6~^8sQEyN zSKlj5o_1pkj+Ss|eZf~KS$hkHmN6ci1lpU4ntR0Td> z-%Wjs=ib8!MPkV~**UtP47SR{v<0@;O4gxO9$vJs5moR;4joUV67p^WXx8PVT12I8 zV3Q$KJ6S=?F(Z;|?R~>$RHjE@4HmS?sS3F}f4dQ_NaMg&_xLYIr~`XeL%BOgG$iF( zAk)ZW*|S5mB()>YG#A(U{gTp#m`4si-kiK330A~nqf9ezpAh#EfZ<-O$apSad_U@{ zZThvhFrUS!Xj?+2NTF{Hw+R@v@;&qQ+kSizi;DjxljFjD` z6#-n&cIJx~_&DA2S84JU>d}pWCN?E)t1itIW5tW$sX=^0G5r;y^K0kXK|AvX@u1v=dF4xE09Hh&kE;{40IscrxS$W2dc^80L5 zC|2d?S1SqzBjr9wD}Evn+53C=9A~w`Z?<<3pN3B3HU}^UqdVEKmG~5`2x^+B)wLo& zR`*S@Y~_bNnmw#sXcg8GObQyw?AEyr6^>G>M=n!kW*o96+kE~Iv3y8wDA3tDewlyJ z?sgzCTbITj68zXJVq~%h!w%}U=rQVCb80#@FlsV={(e>Tp9sk z6%n3Ql`#A#Ebe?4)o;z^v8e4t$$&mY9#=mV`v=y+8R_Y~UA}_u`sH>!Zi};vYf@r^ z`C1z7X_NyMOM8d?@(+0|+y#v7+lSs0S|kPJyS7ncvm4dP#we6|chD{ZXYQe}v{bsz=Yjn7%T(SAMcM0t zd_g{sOhe)hv5^$I$-Gz1AOrE$El=)#gUw*I%n(XL^)*|Gf4WUN5og(k>_2A%%n|8T zL6C*)s-Up&yXZ}fuXz)`$I?ElXY23pLe2Jo<74!FD~!sDx8T;gQM+?*MrYq_(A3piU_ zen>yC=Im>So9QV;;g)T*)iib+-8lV(P6WQ?y>gI1%?X~tNVDy=7oDCX9g<-*VxJ?& z-_TKBcuO`jQ=EsIA+JIFf!f67Jl?o5>yk6qqG#G`GO#Z;vzd}uti|3(=3a((OLJ0!|O%2`Vz7DcaKT9LPlxX62bMcS9i+i@7 z%pJ`>qG*uyR~Ev0zESoST*#r1fvuT>GDs%aPHcIDO>tILt5*->nlX}X9Qew82E)TD zHSN(*n$66mvJ%ccToQ7m;|4t1`PluZ8JdjsN|HEhnUOy=EGKxb7l3WNVEKx|yM|oqONFR0a#TOciZ`)e5X3$QR^G;8`rR(`dtmJZKf@WCHjqLSO z>wA72pA|VKG1si`y+nI*wWMl=>-%q?yquZG(k!|9m%h03Y?;2XD#q}i+u))pdEg3$ zqm~d_asQ2p((EA6T+O9t!&;R!2eP?-k4Jp}kLy3MIM=HM^)7rIhGcauJ9BaJmZ=#| zVrt~nR~dKSk@)Dphr+*M@^{Y6)f+e$ttn;+lqZ7jjL~N~i5h0m+K6Ynq3y z_*RT5uuwn0`o?}6j^fIIhPQ2yryxh&`AEH_T_fN?a!a33Q z@WS?8^Cd&d$IHGy)|-FrV%=U}^wrr4e%9WRb`;`acAo;YKpA_UT3dFP<|upK@S^Ap zb%W7`ge4_b-Q@pAN2%z!>8j(3Bq7!xBxx_OcaLQ*m|Db&Pjl2-sYy_4t01E%NNx{C zx@MwjP`K|E0hv8`E>|^i-|A+KO}fheX-U3qlmINoI&;EoSPa|axO6Z9CKpo#*LPC| z`m7+%LV>LYTbvqU3>B&HmYx+GFro5{+XSRsXzmnFuJykq7^y3*b*#KrFp`-LR1fw3*D?_m*OMHIYb1sJ$&ZN%Toydje8XGT&EY=0}ID zte|@pL@>qCv;2M1EiewJ<^{bUKGo*C4`y(WjEP>Lx0xj~pCXE1cb`NNY26<__>^Dh zMah3of&VG4(Uc{9n#Hx(YGJIL7x}e}|LSAnPRmngimN5A>?6FPhsIdQdc%6O^V~|k z>z(e1Q42VgT($UGRW`v2fWBfBbCrE2LcQ5~HuLr+a~dYXzya;69r!42Pu z87kh|QU+BJfx$oPPvVtX+Blh z30Jq*Oh&d-n_oeTfL)_hK-19 z6QyEwDX%Kzv^F}yq+!c*a?UjDr}XlsV(>XATsZfvh{64BuLGPRm)~I&6S5MpE5%)z zJ7SznP(#x~@ZEaTqw%|GoaJ?W_og#X0bd+fqtkYHTRuAN5sQKY<|E$KnpbM6$85Dx zBjxsD8!^(o#17PQGMD=DvA)BrY`H}%D9Bp28hN?K6#1zCM4_(GA>nhk>b9u)h8{Qf zvmNtTm?g&UG7WIvIeq^Jfbl-|Al1H52xX}lt<)e>a$->*X`8YE+|Cy_q_YvSR-q~C zAfbB(yD^TFFL}wN_ukT(LPi;CeVUh`v7c!Y4bk4`|JyIj{gejq@jJ-R_?qRN@lJSn zP9CY)X1th`55(Cp-*?e_V2vhuI0+P^=ZRp#`S!CI#im1W3+Eicc3o+bx3mx z=@Sk0{i7zgmBU{_q9R6Hqjayia{_=`7~h9ZfTcL<%Pp2O@%N)ruK@8mCKcZLbG2v)L@-9(N?#7qEjqEuabdSzp}u7#M1FctoxC{16F!${=bfz6gl# zC0onOe=)$Q`z;c{4m0mH>2w<)^`QOvZ0o4Eh>ZXrTEm<7FN)tNOh*oEESXCrAqQ8c z7G8ves4@{$N24U>MNgix7n%j={&IwAzSp`PW;TCHzfE|7(-o=}sD08oOdzw_HqCScBdt5yTxz-#0=w1g>Y^+VgUPRp})rwtM9tB$8Wz8LxQ0Xd^!bRw0c(M^+CmNkdFq5#4+46udX<$Ill*soo^cs`i))eY@yP)((-|rA%2`f z4S$*OJfd%3tDjoTo~R5ZpNPn|1R};J`!cD}%m8Tv9!29519|lJdAL{N7NAE6PinjT zN9fZL4#q6ROOeZqtOB2UY!wreZ!Wc5J0|c8d_s4vEpG&erlZsOvIYg?w2DGWeiaRT zvA2Lpd8g%giM!I0Mtj!2c~$n9jA@9*eF(75A?EWL8EStj+S9wpY@dj*y)Bby(WPf~ znW7c8nP@%j9Y>t~UZpGa+tu0UDw>(~w68Fafy3Ca=j7|T?Yu6BXY+9ok_(#=x9>Y` z5S9H=$Q>1|$uP$0WwG=OF{-D-Ghg7|*=m0DT}o(?`WA3hKZC`_A&1OxdR~#MJ<@u# z^(^e%rI-V%dDL8m<4FSdf!0A-Nvd}=KlrHQ5&)tkSlh-@d1^8%@WR|TKSmzObWWxX zaI8dE2x!wLefy0bHU{DPc!18Epvwr|KDZN6zXzfXEIkw`3ZX|d6HmGNGllupTYAVv z#%MMDSM$|=lB;z_n~PqFr24Y;qIat)+ulTNZY2?!{|J|VRe7U#lX>-!otmfm*kbpc zLwksw)-|~N{VoF8QW!45vaERSC^wHh5?(@e^Lp$l;VVpjF5{38x!v`yOy!kg4kF`| zjO*$U4<(4?BOW}JWC1!uULY=}4DsKMgEKDI9ogZiRU`Aiu*t6VX@mQoK5ht!b5ud= zv(jVg+;uOJckY^&)d1E`Fn!9H%#z~9<5bn(vQAkMOXH+|X@y}Xo4T`YApC*aKl&{V za$^3lPQj57PpuLxIY7#Q@O$b9ZvNCv9%Cce+gK%RB%bsPn}|h=lSTJ@-vmssrY$e> zuCqB4a|2co{DGvtU2Mfp-BLT3^~GJEy6Yv6eNJ`&ctecN_o-f=YgzaFsg<+qodKlo zbn8pgO+;iR1{n{aVS>dVd^q{x{vuGMVc51~!pX`1saVy-Lg*nN#l&N@epSZsNi@`G zw%KvK^DJ{Hx6B1uVa$GKv={qucf?$z)APQ*$YYC)$rwHA^8Vtjjhm#wz*kF-XZeZI z0X2&#fvdRNt!J&;i_?P4<5{Sc!L0P$LZ?QaC4VP_rM+4UAeX@z+)NOy3%y-A@J%+E z`@cw>{^0U|Is&f#O%42Dm>;2+8ckwk#hG{V=aoW4a!#fG7UuQrYIr95{W-;xYZ{B; zP}D;73r?`4U*p~TxmY#iEgAvgT1HEm+n$J0SfpQxDskgnVKIP!7IsD zW-h?orRSqrd^&+Gw|1pDAi?uXLXIz-=&J*fiF{q2B-q^<< z$d>8FmdPqi4Qg_4P%^I93`gh~tAnuF=ZatTEuYzm6EWdozI$WKlh(uFqW)jTaGs#4 zDb7PU|F|6ql8_BUVHyPoai^W>;!fdXVZc+59ScQ#N_s?jC#?R49 zSQ;B^%%7AZE}6~VQjiDOevQG5%i*Z7Q5zhUoi3(_ za{T-w8Iz^7a{hhffDq^EhOj zM+8=vu2sVJrq(R>)_pVU_DadVwq)n@m@ma+dzly+uesW}Yqqfvak|8%*Zg_w#6?;m;M-POD zuYDOgt9VVk@Bbg<7S#to!%-W|k|y9t7TN$QV^-bf@i5s+_S;8-sQtI`;m~es_yrZy zZVl*%_>s`D33JcQmYtE*6LL7^iK88Ve~&OoVEz4z-EX+J?!W#zI1~Jz{OG?+D16HH ze_m>M!RfvKUB1)@{r|7N1#M~VQK0d)->T)=s~wHE<<`de%--R|Vqfm9k$|n+YjxSv zqKScQFBP{XNIm9nin#uRCdXkvLPXH;(JN0JF&BHhWBHFz;?s_M~-*}xk=!_d64Rl z+v!`RAS~p)la-8PR}bnxTw%GN_s>?pG0q8#rHpqhj52ZFuC%Cu0hq7os9{w}T^sOV zr>9yVLQw%1A$L%h^z}a+{g2e`72L_Aw;$}7MZ6-5(_>uRmP#NeG!yi?{V>^Dp0A1g z{K3>lMow1!`JdlM=u5msMhcLPwd{px*-e>I#nxUHz7T(Qa{)zX7zjE(>%Ncs8A*Zluylzm zU8l`Gvp&lAUkJuGKcd;egJ@Hj#NiZfE;#*r2Ki}p(t+jadD4OXiG}h%A?zw~@y=+G z>BAEDB{DKfwk@Ur$0rImPO;^cl=z?6Cag$7=*c`QAt~~MqXczsX?bI}ei5L&sZr2H z6#gliQ`U}xg(*mU?~oycH;kgM3_>KEGzo(NXHrZC>8Hi2YIN-wAd^(4d7&mN<79)Sc%O%Bw z-`_82m*}sFB{Eqhv54f$%H+oTq++=egZ1^zMnjIfx63qA`AiZB(mneD!xut-NeByCUlXfYVNH!n zc)Fb)pe2>jR2*cMmi$(iwy1#}Eli9m5Mf)zDwr0WVsL4t&Qx2{)JFOoHDt6LWSKCRpw?b8EE&vo&S;KVKS8w(b{_{}!(!gASCuj+G5@6ppaxt1 z``J(1?hvmB3$}iP8NvMiXdVjJ&PIVom$14$7H?m-zxcxT?S>U@Pj406a9my7mK!2u zp~8M+`$ysCCzloh%*ov5teliinGKdjO;tV(r2G?(vw^Z?4%k>NswT?;7N`Rjv(;%U z4G@ZzLO!e?7r)iuRe+m=GPqpnzqNpWpI<&)EQ_LcZpuM{gU9}2E*h&~Nkf&tX8bC4 zlqJ=7(rU&bpieHl;eP`#!X) zj5b%YpD2uui$}F)UrJSfJcgQD_Vl@)wd}gD7Cz^H5eT1)oDtj6YRK{X!M>06?}nJ; zvIQDYBk?lm6pj7TObRXK+z$b9|!1bX7G)Fq$2-^|K3AhuV>I~!jABFDR<2nW+3(7 z_y?N*h${ab6`@23UI~;#j`DtG9e8w}`7hEPVfx+wp+oq3f#=dTZc~f-BeZj{)4XL4MIRQ}x$9HEHxu&^xyJnWuh#V(c&Ibh5`gTIY%)pMPpbc} zRtZa>{`vwt_V_tX{ACz9UNLg0R3H7kh*H_vRYFVxD=?2TR&vK7?l`BO zw_A@={`;phx==*o9y}6Ul%9hb2+^lc-p}_RdPEXUX3dA954at3y9vVVVE zfybkCLbVTOq7oV(2)>4@w`3$t#8WG^epB}6Ddbp8sa+{ojr!LomQ*`Ma^F25+pa!Z zygWbEsw2Lx+)KZ?xdAysB@jYCD@V%H6eJcP!oia}&^hTrIQXPIpzKsEo+#s9PfQq9 zYx!`@U^ek(iIN&#z=I1H%M-wH6FKxaPB}L8DmsC1RJR)O3oCIN*MP6D3$l-iLqqgcEb-X$Kf3RnNO>=-pAUakA_(Q1f8rl8$}A(Mn?Fd_Fi`K3XfAY z9QpN! zJ_FCFBFRmx3%`|_!bU%}KMip!-}9-HJ|1v;bDkTz!Sow@3#j;-n;zk3E|*R`a%WF# zZN8$Be#o3RWs4{3{-0aa;#AQg`p)?V zvz1UobU3tr-F@$n>UBphi!Smw)Y|OqL&|1#LHBYjGMry~>C5-1qD`lSzRdgo(DjyK zaYRek=l}_X;O-FIA-KCc!JXjl?nHp#?jGFTEx0=bm*DQMw}L-iC7Nc0VIi7pvK{2HrzJDus?6sRpmB*2~MdpII)>NcmIQeVFpsx;7^#Cl$6uPXrpQ#)DJs zSpEgi`CjsypVslEC8gxPyL+lUO|X6D>=0nT$6u(W79{%jVfi+8+@>k-)5%%SDjLTM zyUpS1UnO6!=^a5II#SEE${V65WXY5U8;09dfx`a8mtPKXfqzWy>#Po8w1#3a#7w-- zhPU+T6KyU(A=SigK*}#uKm~bzhyh9;Kz7G&_ij~S7%NGYiju^mfC_hFgvah4_~eJ; zukOMsP6?#St(l11+aV%{|M3uguKBW=p-pnZm^2-B+o2tzfpgh#x29fvcrIH>N~6p3 z8UdLD&{%=+Np;oKLf&T=jor}^(F-e&7A`OE0#@Iey{&0GdA>W1MC7`*3I*vU@>fFK zGAksee{+OCd>^*&3d2uMp5*4Bx}{qB99}3-SZ@hQZn;pXZV9Q}vG)|{0-ISsAtX{hm?&v8CUzb&Zk}^aT)3;p(asTD*0Be*W>&?g4jBuAB

zB0#beAPj6J}_xSkMhS^PQX zB)k`!j#ncGWsl9wyU+rl3^?yme>c)bwI$q7fv=VymRHNI z8kpTqB9>Uwgl|FHk|zRg8!z=G>Ikf(=`Y*|Y#s-UuUCsdXy?jTTAG%x>&Ab}{R`Nw zXv!^UPifL5TKQa8U0pj>Hxt}eeVVk+>J!h*PW4hA3FF_ zLf)O6&@WDjoL$1nwiBGiHG1s{GaR?KIbP0JfBTMh3GHIFa4VsU7Qa`}^c#m_6bA9! zwT4X5*Y=rtxZim|P$-LN+b>n`+T2f|1ID4JCr$xZE_pvY(kKa$fXiQ0LJTXTV+S?z z>1n!C=2kyAEY!;}GbF^P+UWCTvI2kQjwBtRS4bVr42IlgjE2|`Kq9{X0L_rRiG7F{ zH5(<0xrHUo+ge?0M;36Tbr)^6ByPhepw&oACUJ;4n5lR^o2oWUvAk?ozn#9ssIc;~pmj1_*LLW3QhKGM=6757BZVtr!PhVuz z;gONuDbYp05+mK282H;pz$&)!x0(}cZZqZC@KnFvh;Uhyw%j;SJ4cJ5+-uJ)|B0=9 zjr7}*M!wGE>OI&?(Qw>;;$tr600dSTo|yR6#Q)W3s)#xr?(CXWPolp$#fRfIOMfJ6 z@Gt9VW`2{cqe&ktapc^!IS1pwq|aE`+A(Q;dHR&gcEWZ8gKuA{v~hOJt#vT+@oJmu z0eh)3r5TSEh2OaAB}rNVqwc2klONusEiG;>ATdGut1+TQAg4JuP|&^`Nx*ikJ%{zM zEn*rLX_>=qac3@fS}^guA>uLr!@PLaX^R|^`JD*iF2`*PXv$(pkYdqbe`8g$%5R!K zAP5F+0@>ZYrG52f&OsQ8s2PFpO5o`;jf6r%GZPOTpLkP@|7kmC>EWhQ2LAP*{#S@^ z4gK(bEN;qQnH}zLhU%;|D@0y%stO@G^qX$V;HvOHn}A-Ax-^5jw=cHNy5aob$xg1y zXj%P^4J}ozwDv$V8tKrU(TW|1&3a-LM7QK8dbZ7l5)%djx)@n$GNFH;rK5W|qyW4MGG^N4Y3-zRs#Y5Fu5%YG-=1yT$siLJI3?hxgJ&_IrU! zyQlb5%=^m0ABz>nJ9ncLN1B<*HQz#m-Y;A&u88PkVoo3jlYFX-ZVC0R;yp`5q8uAu z4heXy=4+mng(>I8=I~o=^*v_6(v;=eI~HHJ;p1(eqCA_X7K@*HZ%g~4$?USsJN|d1 zZnq)X(SG4iidM9^fRWQ7?khADmf36|g`QtfyO)(ydq7-A5(f|CDYUK$j>sp)UX>A7;CmffR>b*lGm53N1Sht@@uRU7ceKyTd$ae@Y7dV=K`oiI03QOUroEWjj zPYmd}3oV|%w)>yQIUl6(DZNbkNS9loVEauru>q_H zEnGRRg&pZc9sYm=JP;ei^rznO)6%c&f7ll+gy#&(v-=~1xPjDMj45N9EGmsITR|;^ zES+-6TO+&5^+UQH_oWsFsp(AJ^6f4s!hXRFuba9oejiDI!2s1E0uZK?$|F)ix(Myc zYvz#vMuM)Hi06yn^UmrgkRn>6N7J-lTdQOJU-T9aE>seG7caDq&xb9We-Ur9s0j|R zaq<3I@ZL2}r)W#`X<{`mjyAgs+wql&+`*86bpa7rX zZ1=X~{1IyJ5m3_XnG8sa5iKbyEmEd7U017h5%KQ95M$%NSiozAR0lz`8cp&_C`EtY zQ1JeG@-t(_0+9stY2;%Ku;E__lKzJL=Ko@jj)E5s&d6Uy5igNI77g2L+7+`CAw^>P zmwXgl98R%wZ&dZA=YNG`g5$#?aL@i7-5tggkf!cYSeTPW0Hwam_*eX#F1sQhj6P%d zYe||@Fo-n@o12Ee6`hzd%mZu=#bBu7+!*z>PpXa35)?r4d=t+P=pm(|RHdL+yxHH- zV5?P7?xNhvKF$OkqZtEHqD0N=gW&9+e{n#qb%YOMhCOUxv4B9*Ibq#BQx{~Ry=o<@ zr%zwl1*6S-5gFx(>+5B3yzzayPZ$B?UWtp`ASwpO}iGj zr->^8_a^yX2*}jcuWX59rA55$%#NDVLf!^? z;_=%tgoWA3ph~=({u^9=RzD`7!XK_2d(mTKIZixy(I4Eq1sAD0-R4!hj#8*m5i`Tj zF|`@9)_N+Wuzg;Xk{FEZMCv*KM-E8DAGa)=fP+a+dpyj>U}S&(mx6Mw)^Ysj1+-wt zq?+t_3-Vg^w`W|H21MLcKxH0mZ|x_7CN&g@r)i=~nxo)(8LxoWutwR-boXc0Uz|}* zhn}6X=9VGcW6!>p!~&ME&E`i z^4)U!en#jR;Q*V(M$|BN7I?ruXSU+Ij45OwRL+sAZ! z2b8?Ix6qw}XT0lKY4k6^lSSarN=m)4(s6V)xAeV^!OE@9O4|xHpONo|9ZzqxgC0vPAK9AgI-KKmM$sQNXB9tPoey{nvkAhHQUO6 zFbN(whBDkU?R`RP_d1rnSF5AKF=%MW{Ea@e;FwkV+PadxB^EGIEyZLGb`ASf-#rRm zpLL3wM-}s66Ypg-C>%~xYO5H|m5N14Kj=OFC12%E_G5uEw%0p zPAh{UDnoXSwE`T2)BtC?_^;?JKb{|^JJzbz%L1Io>~h3iFDqPC4JzymfpQ+jECtE4 z$}s_?eDFu^ivyK2&j!UL5&!3&>Gl23GTZ4r-K9XM4Krmq9G*rc6M< zVIb5h$FX6?vsskQsj;;LYw*wMzrEhBLBC(V^7)0!GtiFZs1Nnjj&P*EAg4cNCIO-b zAv+pIn79&?Gs#`9n~2>G1^}?(?8F}M_)T3GuzNdWhkZRtEA^A3LGb@{!Y!a2y{$$@3GELp! za!JjYNBflPmm%9qZ?Z7ML1MxSO=T8YZL9XZYddy1Y=Rl68VtJ9TDlN8utk4jt;yd- zlVU@%mrduEBV%SfGO^XWomMD_a+7s*ovr0_gB5g9u6X@w=6HA-8-r?6PDvs)r2?rq zn;xb_9o|%KsD}lID5Xd!Pui1aBgi@0tW}0@RW~J~7*r`Y!oosHRfF+P&^C=~-%KJ<+sI)s<>qE@2?OZC>fS^Y zQEF-SEiBn#Mm9&KZoD=ZNak-Fw2IL%!pCuC}PYfVXb(mJe19)a9`gW)*WQDZx1S~LjGevrY{{I zsl?+zWv4fmtD29~G`3wXMU+V{Zq>ap@^{Sn8x>XxE#wlmfQ@M=x4DS62L_qC!}m= z*S~h7=OZV2eL=61-x}e0mpNXfs2SUtS>JDlUHlXA^gLokZ743Ff0u~d=aEXiYZEUx z)Gq4b`kf2wkQeGRh>Dulb=Ufbu$jv%$3`9V?5dZliqN9QAABhAi`Rd#>~*A1IISjozRA)@ zeuJXi(Ia(!{?oqukjBNI?lDAw;w-gzK72}vIAKEYIU1yr(n!0+@z|D&27_g%kj|fN z)$U3GJqmMUb@3QY$u*q|VdeYrD+Q-;P4j3Q|Fxyvw+nm~6lmTA37Pg&8xIS0?|bQ& z>Umjr4rQ zPZnEOe*FbabKF z1<%6@#S7~c!^dr7`C(rK1|FX?t3@}$#I&rRj)#x}_DQeV^Y7}wi0J7`XD39^V;TXs zy~ti_DMh|*R1USBnm$ysgwp6hj3Jp6Gh`ky*X3cH{+d(qo019D4jmP9l_Mw}Iqm>9gje7-C+NYlRTJon?ECs{asu%? zd%cboiuND+Ozd|nh%2}&I};IIy+4wV)f*zj$lEjPIaq58*9sk;x%&dIJ|8)mN$2h#wGI4tKl|ELl z_ngL(F=x+*?SFEv^_`q(V-ne){u~_l>uMkVaer=2R1LpCH%5M1?l^cf6WH-rzj2F~ z63Tg8iG7k8Nr)zOm4UWxuIlR!lN5=xgLMGP(E~>oe!P=Excc9IXe*vDOI798VBS11 zYJXZVHi$&=6JMFji`deuFcn^UuSctMqjYKK-b;Q!Y4K$@v&LK5(`PbM^QAnWKO)v` zadi6-KFSlG&eA=bqN2?_NYEkD;^R`ld{i^&bL`?5A>!)exneQ;`TiucUMF$tJqv}` z{4jGx;JnLCnuFYEHTzdaOtCc0h8x9Sto^DaZmxa@lzJBekt4JsW^>Ww?2$IHW~WjR z9b2{PXnzlTDn z4tlxXxN{n&#`Su zV@6sTX4Ea=e7JeMdyJ-Rzzy!CqYNPBgI)_MnQ_%q&bo>>+Dd=`dw!kv!CmH>fK zf@R0@%L{ER0V`?3pwCb~@5&yXLl`3C#sc(^$VGwJcBr;xW_5P7)aV1bgey*}PprWM zBtA%D$o(8}Y52!11wGC~v!t|^#JMP+f>~Q!1C0ufTt>J(IENbEiABlZ^d7MqChkTx zxjyPK9ILD_5&?3GdzS+C&Zxj=*DY<0Vr91TepW$ewWFARAz@}^HG__xK4UWC>&eac zXsr(tdq$zHm}bFTba6zF4sqBUjz{G|wcqnZ1)j)%5%fk%qKQkM(?D{Ro^nU}FBZTl zN<-Q+I2(V2DX&%Ip&@rdv@v4m^dpc^a_wJUs@Ib{3M_FRd3-AlF}+lb=uz+co^M-C zW-8XA&3VfnfNl#pa- zOv8%7lb+Mi^A#ipMvvNivfUbX+>vgV0^w6gq|alz@w;>)QUwaW7KapI*% zO-VUFD27k!gBTLKcQ3i{%xtuRfoKGRe?dO3Lvevo}Vr)MrMjpyUkgsT9 z*G3b7Ns|Q)q|nYnH+T3I$lj<^E}PK#&)%XEDjK+0R0IkSK3s29SfWYVuJ@9=XqIvt1@ts0KnA0ISJD# zI)|JN5{ys$zZgHj3XGE;h$EO2blyC!tLoJS5BZjAu-k`5HVCRZ-aOJ7 zz{bWzo}^;z6Lu{Qvq;CvEN;TeGoSTW0N>F0q+O9L*Q9=<;1)jD5Fi$w)hk*;`fK%S z3`oZ_p{eB`X`@I369~{(mqvF#dIn`>=7Z174h4frQ~}UC$qEuZ`A5Gv!H5HB;Nq!n zNGlGXl_qn4ma$;DJDKjU3;n%;Os_?`CiG_)J5C^;A(%CeQ9a@CW@ zo1PW)TN69Qk?a))sW!XOgv;?dQ;>gP1r>4tS9BTWy|0e zMs$u$T0OGD`uhR|%YL+rg@;sH&rHShS&k3jG0&Sc2bda#CwmP^IU-r5yjnQC;i|n9 zB@5QB1ZaO7ZPRG8aoQ~wv5Wdfq6jX8#lV6ScdFi|$g?^Ko_7h?G;02!scAjJb;bWp z1sc5Mzwuw^K_EUbW;{TuSUsFF(vfe)9gEFBebj+EVW_ z-go?s{j~~& z2+CvWJIeSn^%syL0UU^mfH(79Ax?F_mw0+<1Lb;*eE8iJ_$fg&NU7jI;6ugftxfR9 z{|}O=pog$N_=-9qjHl4ZxANxeHj~uF8g%taMP$GUiaF=^0I=D;>EOZJ zUR7nFy4MJhrhp&ZX<5^vqoR!eARnAKy1(t75ad7jR}}mE+RK&uOQ%jDfUW}luZ|tY z2o9cVb{VxW{{j3%(57oT8x0!z`&E-LE%$`IB78x)r~*OSpEmn6yfnh zA5c<4#DtYR?V7lOoLpCZVtGoJ_t>A`1FfxQ-9l4STU_yHD~X4T0UR((8pr;}GVIru zm~^tXC!2}{`j)UYBDL?=jIRm}505+~Yq_o4!Xx z;1L4W!GjRcZ)wU{X+v_<{QmKci%ILM-d$Ql0lOORw=)DWfOu0u^5}r{r7Meyg!+U8 zSGlBBegbRyGTf^NXD@pQ0&i(~-$!2=T5a8Sih4ERZRjaa!#X;LNbabtE+a!LGpsPa zEuRQ&_nI3TpI7$7*JYR?^8_w7SoFL1BiAczO|xpEoXKJLo9zb5n#v0PC`jH^b)RDw zIh0KOEk2$)y0@1C?Y=EX{~9iKt?_g3iCo{n@iVt~e97GSJf2^e^{b)1gc54CQ>Gh% z$0v5Psn{HrmOunTYng)o5kWW@5{}PZDiDBwaUQ+*V%*SMF6c7S*SS}lYuJ6xv--Yf z9DDSt127woABOJ-8XGkpJRMBr1RSsS?qiN9?v@m;ClQt+Z>D|r)jHgaO-mjnB1xJd z6vcYeH1GEdT29|)AJuy>+8NsYQ@{^Q^z2Zgzs@|6JvJcQr9yrH;~xw_g1!->*-DG|8Be( zF}uhj1AQUvZa&){E_K$9JyjrKc!1cErsxafc{fYDkZCuf$c^Cy(_E z$J5-lL!5}P3wiwQo+99>jND{#wmvGmgtipDg!DAEMqF||*rZS@PDpPaFt4$5Z(B~L z>FDq!nnRB_I1eRy*-G_>t9Z?}wOAVOx9aHgl}zeFL|nhHIgslYK= zSJdR&)D|zPHJqE~0Mtl=bHHR!{y$6xa0e8rzzT!Afkge9*~^;o{-nUFCXGUn|LqHVt`I__l zUmxym<()c)Ur`f>*_tKrSB}GJ%xI}#rzeOCa0P-ePJ7XwKa`bOJIxh0dcUY-q^S|` z9B{AwTImqryhR<{Rwl>ZsZ-@xX{6igdLi{Vu-aO~0=0_#-IOQi<*n|bcK)}H=z@#5 zdYzOn78tlQLgI+aZ(17k1~&^P11@02^ORc4yvNs~9Lkz*#OlgpBJWyKeGJ4P1%bKn zUEBtbo&rj8&2gW+P8o@@HlYwo{EH%A&V@@Bm{(s8D;LeJ_Vf2gaG+J{?6&@}bagcS zj1)3X9+NyGV)^p&pRDP%rkDAn3l$FXZ`;w(J3!Y9G2^&XUcoNA$N`di+6~d8p#sF%Z>&ldn zZ;MjIld(iP2jm+@SN=>6ASv0n#BB8~RZ;8mftd0BZ~Ty0!N>pRA`Yjc79VoPp&98A zj1dJ)fZ6>PDL*75!;PWq2jFgka)PH>z-tz;7QTgEP$v9y6{d;DbSDimFod9q2FlGO zaP}w_kGwCpyH-1d`m=r(Nitz^?W}Hkg%PVt&Ti}O^{BXTA5=&PBTJNuz^@KL%(@h4P8#|#e}H5Ts#6F2 zqoWH~p^@>byv@-te2bxxs#gR1=V*mwSA${E(FUH)@MS9C>lCsTr@Wv%gA_H{IKg^P zVV<58TSvNlWVEH^HF^%ui~8)%T?vopCcwg$lZD^hM0;ay6Q7^MzCHOH{Q^Uxj2xzX zICiSU4dH|5lON3BY+>IQsl8*k%yAB8X7_6v%xkcHVaXC8EOiPK79PIW2GJ(+DIQoy zfMLG(B(got$wp1;x(WSVZG+|ZEG zb8RiWCsGuk#u*xtA)oEH37M#_eFD3`@;w}UA_W}qrUw&1=rpSGW6R3u=>v-p%CIjDRv_=|HT4yCGr}i_Jid*&XIF@!?c}#v?6#i z=;B^Z{4>wXiZpN3VR%jiOt!s1opQyJ*{gc-JQ}AvumxHS0}KYhF&F(Yyq%PqIt5#g z_@*Au&;gk#`AEuO0ZK&NQgp}$^mjJ<`t9KRpK}pz7fN4{wn#VP6qvVAa(m1bb6}QU zPjf-s^k06;Xy7moYX9C99xrTx$^=BwP?HA;u2!o|ya1I5tY!-KX8GM-qagT<>%`Ar zi?f4GILq{w$zGR{1ts%wb-w7zR1IuaiXnTS-%a+$;H0X-KGCFG#M8NFnl9$na)}1! zJU{xx$+lhk1k_C){)jz`i~A6~Q}ecw{{8es?^09$#EmakbCQ2k6tdDF1p)Isp7i`*0363A3;aR7t4rDKhDwxB#mi`T^82A&vxag# zSQ*l0G5G|$_S_+LBnBNHpsO_)D zLdsa}`tyEj%*2Sbrv$&0s(3*(x46!%S8IMBU6+A&vQs=hZsmHdr-J0np!)2xLxeYK zGztT;sP*~|)yM}qHnYFmCOy<7#%XE{J5Ka5fCs&nVeoPeTPE*9H9Zv%JZIA<2B`$e zfAQ4pH*^pg&vUce3ECbn*N&c^bYn5EpbjQqAKvPzF0i{fe@;l#x_pd4_Te7DzNFTnE{-@#P-gVR{wRgK;cu8n8{+-P)_AHBG1xa5 z_eJG}`G<05->1TQVXyXwFZNG?p;K!w@nXB$gUf?iu=+S#iH*-O&SHfzzwUIy+@Vs= z5m1@c2<4X76Yn@^fuhd^#E4|ew*$&n0RP5is%&aCqs2RD9AkI98Mptvj(eBQ z?LPVn&2c)NYKL8m7-&^|)72aAw;X2b=rsv1A`=GQ6-D(WG#%k&KJVX2)o%Vhivwe+N8TF3<2W}UBdW}yd-U@985*%`yi^B2TZCV_&TK? zo7tE&%HFS@1Bz4;2VO{{#-B%n<0kGun4CuN&Y9AA8M(Miaubgf@QHN6&nU&r?&G}a zQ-v$`5+4+)!@}i0YJR2gWHHj5D~(be84-J50jUVdz7yaUH!)CIRmD!i>KkD9{UrX0 zD&EA-&hSMkUA8g21#SeE$&R9Oki&3rHqnwia~G)nW+mBWvnV-{WXzjji9q*L~KQ;ESj0aTi^hBys<~EnZX&N&pBTgOUW{dro7GQ_`=MMg!I(T&?WcUpdoMr4S z-R|wmo|DDTZ)sk(UlGC8AmNLxaUYnnYz1Wujq6L>92qRvMV7CGFpxhLDP3ehOveNi zokU+^8}I7l$u(?~@hTwx9nI{BGn`w>Eh!OGS2tz9H*vK8S^bOU&0JM%$^P_C@t-XI zl4fR`Jw?woDJ7b)lC552yy#W90=}mUvo@OZzW`-F?S~cFHV=N$zda>vXvg-BHjbUQ z-ja+fG(%WekQt$i2!yM<% zrH^b4*H%(WYDY3w%l@e-d0Ej-{wvgWuFg!p@?+uogY}O?A69bS(-I4x$Dj{s{7FOk zCJkUvDl~QCFx@@CM4v&W!wfC!-e!jCiyi7yqC$U{m5|M`c7>_KkQgeOXSJNIR4<&&(1O^xKk@#@17Py30Pt3fDna?^`#MtxUN z{Lyad6e|z)W3a5r@`%+)(#^vSZM9jy>nVH)xiG{RoQ6Ynff0^Tqx}I?Hy==4+!|Eg zsSTG0p6uSY>H2gF9+y7+HFPD9R-O-D?DQ_J8NDQ6G9EdDq4D(I9yT7H6=d(1B9$vw zNCSYV=C2jHs&Ibq&Crmf&FtwEFHrS{{MP=#<9f%L#a{db3W{JRRqbPA|JTM}<9G=- zw-Cz>yGAE1r3xF4a3K(@Hl$>%gBJTFfL|PkuB6B<*g2zBeWN4pUYZh@{9`XQ!W*rQ zf|u-kTmn}~3RlyS-;HBEt{o2X9p_M}PI(ptB6!!RBSf(O@a~C(x%ChP6CwhN7X<5e zIvL-X&^p~+4sBziMfeQH;CazDztb*X{-k)%nDqq-Qqhr>7Gb0OsMN*X%=YX5H{1>xF#NKcDFTA1j7G7O{2M;af zxP3-{L!!R*Z=T=3SLcyH!|=xqw)#rqY7Ru7#E(Xe<1Px#mn8q+i3C*3TO|J%6Yy7) zJObxVpn0OwpmX#_!(KNStFoj5@aI`a+B{S+x&#tDz^?LS-JZmPpu*AhhuX{sP7%~= zCf=<34{BDI-TS8!_+OL)`6}^$sK9xFZ$vxv{OS|5`Tw9t#VpCPuCFgX4|XqN06W;g zAfB(310)#mpZb`V!CW;L(+X~D#3p2k!>224jKRTxwaWv~)xpXAIXk zk0d!*{VgR2h8nEC0EJ{jd7Z~kR(w&FFp*9KxZQ3#esWU7l_^44hG+UdaM9C;%TM_E zz1*8!oB&~BX*{QAKOhr$IeG0)#9tkeO8bD&F`hX}ryz%hXULo_ATxvF+f%97O)~2B z_4V+3Jv?1ecMR-)5zZjar2Nc^iV7+u`2G8Lbpa`<{vIVF(G3pE&g;<%td5FmH}n|` z9!n_;)#pY~2whA_qrZ%B)7K)!q=%jF**ihWrpZNZ@oJW-`F6=_G0C_o@!AGj>q_e} zUxTwq8mpT=#DJB=X}=!^15lYi+*OHEyJ zXR|mA^z?9V^)3wlAmnNUki5?W5Ui=g1Sv{Syba8!2l^QK4r0Y24D z@&FJ2Xn6dW9%1@#?bN30;PURoUbHokzQu@4w>ODlFPj$`J;9k$*iU4OzEzXW<<}bZ zMfYv%g!e(C+m7x!5#*`8CQL~WnKBg0SG8(39Y$iHtj%QB{U+U(-}_j)gv?}u9m{1v z@ZnJZ=_)DFMITQm=HO%GUjhpyPv2XZ;RJg9dfV4)B_$rcsO_GzoWn$)vy}zNDan&h zw34BZ@(qvG+lL#)FiFciGvqdF)!S|`jd2vGdO5Tmk%SY!^A$T6i2jz{mzfq!4L`a_ z=(q2*xWnr}fcW0wgTzJtKzu#XdZrnZm5qsty3N6qOPX7tn7!^+jgYuTtHo161{ zwHoeff^(%H^7zthr|E2Z&G37j;PnNyj@)uL_=il|Kz7nypOsk+CnmlO978y}hOAAq z&}$=$3XO?{W_(3Xv9<*ejbWa0)UeWl(gFL8c%08H8o%z@b2M;Dgb^X5`hw$lJvNQV zbmV^H z*8IM{y68%Od03Kxdab#Ldhuu3wQl9f&%d#cPdm-Pxf@A!SR67Q)ZXFex~jWVf&}>! z(}2XYh(fA0=$drKj7jj{eKxYJ3+b&kuRFo}*(j%n+-SX8EAJcox7^3-M8j_73VWY= z(HCDTm2`K1NOG?vtOs68b)d3FkjlK-mEw7{$JnAJuTo=CU&WG5q&sSOt2dxG z9sih(*|-`+uvo6U=5{bsw9ouL$d^+ZQXq9pvT@p!=V+lpz-C{G=s583%V7j+hib>s zEP@s_-_^#SIaFt_0YsayW&KYYQKYK$E+K|42d1TGUCpKNT(|4#^=a#rBmjI8In$`;V`Wq{V_26jJoA; z{ZaOgk;B>Nt?N~^@&M4!k_`fMDO929xjl85sMmX?W!vljgL9l$Db4k3nO$E6!ToVrBsY0z->nG zaJzQNV)~Pa$2E;XTXTgVIA1>^lt;ROg3>CJgU@&XSwUf(f|mBzBXKl5&ZfGSqT>2z zvibV67NW6(hUI}l@)NZ0@XC(!_wOIDT?Yr7ge1?BhyxS(MFLrs8cNq4y_Zj1h7;)@ zo&6Aro8HR_SZuFCL0{WuOZmj0kcPuF&_q9N#?OQ(b;|u5`EUgmZ&tTuwS0nsB)M+dmq1fdEf7*^0#>j{=ULI zFAleEr4xka-rbV~+mjQrCcROvN3);p9)FqaS4)dJeYcLnq0CNMqHZ7rDG?pv9QMETjuk#&98bzq5Yed)V&a48#6>*^>BQfI__quzB%soYucYPhdq-k zcAy0(H@BDs?}RAglNDHyv-1Z|P?+)~q0|x*K4?T*u6#0OQ@L;?vp`%F+w^|-q5Wz2 z0Mz^`srp%AQf7P{Z$?!B4#q+2!t74Nu+|rmA$kkWqgGqjr6oFZAVKZ9Ddgl$xcE;ku+7hhIjcIR*q~qmFAY zok&3+DP(a`Sp)IstG$PR>ehHhr->Z?E`GFeM*4Vg)0q%IyaD+adLf>|uj-rw*K?*~ z`FqrI8a_@o N&=)wW>%JUQ50MgQ}KH^{1mYq<%S?yYwWum&LL)aG6me{nlzcx*i zf`9&T8Z0Jp=xbjJ=}b^|Mr>Wo4L6`K%BNz8g0i}eCi;*e_P(;>h67n~28~CLn>{)f zKY(gIkfO}Dc6MA2cVxA~RMIFX<#C2eI)un5yv>A$;mM+<^DMCJIJuna}^!#!<(ns`f6#M~==5?C*w_ zz|3fAo^@{-oW`gY+{nAp@jZ5K;qW-Gu;4=qc;r2XxXE;k-Ra;_=&W&g?OeQDQI=aK z<@aJZu6s6m2}@Tkz!TeFV2d@g*9fNo#{jzN4gYSJa+PE9h zKXy{Sv@5_;e0y*Fr2&Ihrlb8vGwNoLT0!7m=+vg!grueYF)x|+T7nYMi2wfOP%6m) zJqzLAc_V@^wk)3dwK~6`lMG3;ebe%Taxw9`e?*}P6e7sHLW_IdTpd_mwI~)A>imyK zH7sT?<)x*y_4U3NgOvJS$FmuHUQr2TwDeI91jmhi)*glFsb9)adO=yU#Ook)K43Ox zaUt8YLO{R>raIo8{Syn-TWUPNJm2gG40&Z1)j!|3I6;J%frX%?0JRL~H?N`=4kRKd zXCDnA96-xz42z}2AwY!G!1f7Te13KH2?Qd*2F}>rb3({V_y_^xzmVMoojPh*v+xcF z22@L$!3`*pM&K9zJD=ukMc~CH1o{KN&tO3QJoeB21F#bU#**t#DbOEm%R1bBX#b`h zb*8oiSl*v0o&3OWpt|JBXn%jGKOY|YE4~_k^l$2}TP8`81=I)-$et0c9vQsjd|O2< zQlarShy8l8rz%@v@(v&AM|%(g{|h)~h?{d!SP%((qtAG?|GH*`*WrNAZcNw5P(UlD z5JdNowMcB^UKD3p=9dAZra1~=fNXD{NL@nvLysuXJ_z*Z$3&#kqzOLjmLQl%J(0aX zjer)RK9Utj6PV(HM0YnH80jM6TXlgZoB+CI`faJ!%vtJ8;)ItE`23T9~ zYt#F{Pvb0`WDJlQ-i{H%x9h;4KYP8M2LAZx2pI1FIckF5(w=CcX8ZQe`bV%)cbpRNUZPCRiPIXfzpJmWn4VV_0Rqe>;zh?b zL&plGuXAr!dkef0gvpxtooQQmaS6xcf|}Hd0M>9!r5q2^qkSIWy$r@@TMo-#&brR{ zeZ<>+q=i8stx#DCMjBMN17kZgGb0m|VDJpf+5{lueSN=0=&XHl1A|~421<$mV7Teh zmk3>$I@TAX!~1KB)lCT2+_$uRU-Al%Uy(unYC=m)y}gEJW)g@nKEi-BxfxQNo%c6H zwcqEDasnfkL_XdRWAW;MyY)|{ZD`P`($-^QlkgpAeRA5IwYL`)Cg{y?<{vedek>zR zMv>+nXK=w!1}clxbF{3}qKE}-_Z(N1A{A#wULsHy!Pn0p5{FHgljUT8#iypum8G(L z6OT(snAR_Jb*%@RbbGqi69~Rv&+z+Y=?@XQUeO9lev2H7>ehWjd>2 zdkG0Gii`Obm;P6UmOhL51Ug92*{{jKP^F^k%0F?xfo|Aif!m`2=5-c1SGDt(nSHA~ zXCOh~;AC)#Zn7UYjo}?_|3o4bXc2zV-hdg$-4r|*X2h4EYXg8)2CDt3tRD=o-L~tj zCe&Fcqay!OM_{lRmvhx04s!tu5=;e_FxcH9s7ql@{0Z1qjNCT`?o3zB74$|wzTAmj zI!8)y`8<(;=R2^l1Hq>}9;F@qhfDxs{U!&>iVu$PYv1`(w`j#n(SCVAWpGWqKdUSe zLB!?zG;EHo^yA!mr#u~R<&Aa!x=bq;~&v)*hTYp-rYE{*$C1Z{`=3I>)=Tmo{)+5m+ z>|Pw?eJi*P`@~N{Tk?4LbKCvmH+jnK0N2uFadcJmi*0UTU#TMT2}bWFPDlYrCEMcQ%TS?rlWO%o^^qk<}E6<87r_ zjnw{xhNa;&k@D!2>X1a}5x;9X^E0UVkYJ5Yi1&Jq-^_s7 z^dSRIBG11{Yr{^;LYfcUnTbnRu-d%+N&W^uxM(=V)OwH_!t3!pFra0H+v7d-?D#pq zi5BA}$n0}n+dI@ltQe&J>pbynz3@0;kdHxUc4h+q{@1pN(T$XufzUcBulqb=U zgY?m!F3&T&tIrN7DoEGcYOfAbiBZZ(leA~wrM3pAKND>;9-Q`(r6e9j#A}T@TGfb7 zJ&*Y{@{IXAe0s@ZKv8_cL?-WV8i0CX=j3pLE8u*V0We1TOiw_pB)Bc7E5uzom@^6l ztILB+ZHXh5A(@m*7u*##-?HUlnNg!cOS0C9XvuP0Sa=XQcztJ~1p?80D@yZZ@Zw^t&61{obkq-V!%kQ1Bv)dT>l-G;U(xw+^bL-xkv`vD|#c`5Q3M0^L_$I0!d+fx#y$6Ce?0_LKBHvRL*`5XSj zcMgCd|N7e$-4Q;m`vNNzqXzk_!Qbm*XgvlSr3b?^fR(9LAD}^a0&)|>MF|9C1Rst< z5rHG1Io8kSMall14%{!9mGi^<{TPi;6*qzIvAcB7X(T2M;h`CL;fYs;MU29o~Pxbyz-ZdF7V3UHPu7LLB*xL${Z@?)kj~4v4w;-dQK2u6$!)&a{%9!lB_MjLky%%x0TM=EXc3KZ;A9J?dKO z?~*#}F{`DFr1`}a(4gCJWok0H7~>G@MRtpFwz#1ZK!iXbq9^c)EV;g3O}5Q=inV+ z?q+&fT>WDU`+Hn|cSd3qwAneMU7(d16K(q(eC z(O!2p238z0;Xx`7DCpzB;bJ){+HWz?YV>$yO+KKdX9tYGzVH9Y1@_=_fsjCNQwB`= zHpOSaTvKxTl3<3PXRAwL%}uP|)9RWlQ!B8T!y`bRxYBw%LRDJ(Ai-OANjlm9C()i! zLEYxYV*SUn=0q#Y2OM3mf_~pFvq>i5$!zqMNF!v#_S;=4NdO}iLHd4v?Jz7#^reF#(hPnfSF!J?UVU@(qPYY}X{sntk4 z&1<7%q;YayMU{a9^>7NqL^V0ada%pf&G#CjXTXrS0Fy**YI0v{=Eejr12TVEYp?3F z`HZcB{Ef6fDmR=6dL0pN-L@*6{hk2r@9g|2z3M~3B5C@~l-D2HzVY6qT0d)xP)oRR z12nJai?^U!!T>4`iS+0b!e(Ua0Y}?S>h!(<^zOHKkB5MU0MwRsV29gcJXh(rm}Vs% zZ@ucs|Ggep>k*@XM)?4{VE%1=S#B!2>2rAh1Z)KWRRJGv|sJTI=uA&vL`QJZArE-d2 z4{VR)!9AYEKcH%1k#}?)+KO<&rmrOE(dekHd|Txa_lb9@ck^X}uzaZ!f&p{wUZ1nU z*hhHxTYdeD0A5q0oiO`AU55~lWAKSluA5VG|NCIh$Nj=^v(FchWMOZHk^+DM&^Bl>bb_V-G~Xz#VnGh+SEs0Bn$C*N zloN07u09jFzfac6+^_j_A+$NHZ}>&l!_hP&ntv%^v)ky_TT*%^>~LV9c(T=9xP99m zp!k7Geh#-!0g}IH>dSRHFb9pBv&j|I6ARPo4pQ%BX4WU}k-vrLhMbDCh_ssCUfv{p z+TJD2nT!iViB7^WGlXXBc52?^nvD{xYTY)4wsL<#y`qpjQ;OLy6G$6tZsG>60n#J@ z>Na;wiwthhhU@lpzim~^l+uM1=p~r;(tCNYokFQCCx&sS5x#mC#?;~iw=L3KJ*}tM z8kc9tELF+6H!{X&%NwQu+_A4D!T}11Y*gF7$FO*c20)`>aAKCjTB+X=`F`zio$*9D zk$%ZCiDO;F$#~;>mhTSP!gPNte*|rB&T&Im9DQ_qg}x z^0hE~!U=^_h``R`#@))^^LRf8O?v6l8(`aicsAc~N=n##jGJB&G}!y$&dA3;dRQFX z+-GsQxSMM)p#tLE(0fUtveu-9#muepvohPQ>7H9u1KO5}K zfN5nwZq{}i{H6a`D!33{cX8Vp%mS!A zZA#JJC;IY`vq8fuH$I}aA7_qsNoftXf+9++tQIGqJe^Gq{kkouj?MBI27)yc3 zO6-jD3LBNdjnSr#irGjlm~iJG#;1p6^X^b$3P;qz?ECJDk?OXWibnozIIU2y_tnL5 zCergAj!kjfA7muFBD){0Xwq&Z6^HJh7-s=T9xHYjr3%1%3kXhA=s&;PZi69)0GVpI z2;yaU)p}I?ub%w+z&^vM9F#3O|DnNG=)O9Bf;3=ZW*COGSTklRakRunZfDAMvGBdy z=?!E_N=KRBOW&W)r*;rLyEh(PrCY1(AiKezA>xCM!pZRiVrF3=y5)cpz)`PozWNY(o;Zwx>_&1$ciwm(Lco%*nwT+|1Hn;C~OBZO* z5mGC6!&|A5b;Af6s5RLrE=Q+P3Ilkb?#Cx=i=ExSRx^;ugtuuSOTer+ zsyzDr8RW*amZXl;6a9-GxfP$j^OUG%H*w|4``PjmKG>wRJy%@9kVoSazm#|!My#;k z@=2Q+I8KzArJ`YlBM1_h?c?k_R5B}H(*uE2NjX) zrH4iM8<#^;Pz1WXIX$VOF45gUD@Kd+4klD5bEOYi@MvAm;LagLurELK%u!eBR7r_N zT7PxP%}}o!nc00ld>lE|l>XzIyzVF4AD^-lIs0evW6NnNe&`*K4}|e7)G3EkS_d!2 z{e6(|KmIYQ)$%}cckg~oOLhodfi=NL#w57=laCJGCy=ePYgBu$6`^})pVg+5OFjQfDfY=zi;NxPTV=M$c;>@8hHyR316%UU0|2e(+ zNTd>_0URcEv=h`yAs480fc<_c8N~2e(*YS-md6zvFcB~&Iv(rf$allR-M(seZtnFC zU_1&*N*F~j=%ksK_|~I7Vr!s=k$@D?KSC+c(9$3IF_LuNg~T{1Ij*Y@fO*Lw|Hv6$ zJ(7mX0Aw#Mb%V6PdyWSITHkogzsc!ZYYpBEXvtYG^;6KO%P6|ph68tK&m-oVGG7qN zj!ONBiS&rQnDDF{Kg81@BlA55VZqJW01=a)zR#9qfMS1{1LU|d%aPb;;1WgQ^{D2^ zfTsZXo`eZ#q=8S+E{g&DFW-J?iX0{Czb64-i7ehJg}5jw5v>&We1StUU@%!=LPGKl zk*XkCc*9*C8Je4066AudsDL9`2qhzH$c$w(GV3qqMC9h-;pXwUT``b8zqCOpBu29Ddm9@N<3b&(7B{<{#!7mPi@CGi zgvv_7x$m>607aa7e4B#TAXdudRwbmKn;VqgxiA8%?bA>C%qc)AT9_vk%=Pk`9i$|^uV*%}!5w|QuH7?<&DC}F?=9aB$QC>27 z>pfF?X=MMDb^!N{C?BVt4W(GzrF}8&Uv-yYz|Yr-O200wBEpI3idF!hqU%6zhKtEg z`Szx8&pK+`J2lydwKz@$*x{`QXp+cqe2$ipuA`hv(MO6TK|n{*ZLyo-U*W-FcK<1Z zFcYxcNU^pxV)S_P98P?WR=nBhDUZAr2mlHYlJqMC95!JpPREnc&yW=E9HFo& zrMr~dURk}xH}w*!Hc@}^6?~X~{#_JF$@JJg>hLcdN#}JQ`UE5}^W_kJi^&bWf}nKK zwm-}ZD$v0wM^VPZAUb1?D;`FruWx>{xQJ6-OAL_%mm0MPx+&Ak{^Ewd0CAlX?|$|_ zFXtQmE!A)nRR-w>-^F!13-aeb z%5qX{ymq9-(g~hxjk^zv9^~jTRf`;xz7lZQLn!95-(y)C!7W_+bZ1j~DWIcW@|2TA zkX21xw9GX`J2>K&4GQHI)sv9WEAnx&?<|b27$@5qCg=CwlR0Q1Y&y9?HiW;&17I-r zopwF@<#J&3DY$RfUoWhJKQXZM*h|8?_4?+A`^s&(CxgsRM=&Rv?CxaadQN#S`%uMe zkY;phDsBJlt%X$^@9v*61t-FGx{OQ2OBo|wye-UZ#vDR}Dsyd|O!am0c@jL&#Bj%l z5na}d7BcV6S?Eg6zqx?cGSb7*s8RhB$IqE&;2DJ?k{_Y>Ooos~h5RSk+4nIYF}*Sf zxSf8TpsYlVg5I#&j-IZpq`Q*Y&mC=FIQWZ*J{2QI+vBlPHg!fAd*|viVxiZ&#H${} zW#2QgetzA~*8o0uHQJiqq{_T_zeRe~_-#h)$Az zy7)MEAOoD*=r!LpoUz|nU9!O)FImV8pB)QB!^t>Bli10i^gK=v9;r~P*k6#;TmQzx z9@tj-Ob6)QFAf8Iu$C|HYV5o_t1AW4GiKAub&@l3yhbI*x1^RZ;(rfGe>WyqQxKC8 z5%EWneVXl?#97S6PZD_TetO-OT*rCop}LJM()<=zJ6-e0{3&_N?tQcUO`r5_-ezd+I%72p%NLy08~NndM0Df_AFm6j2$}`J0@3%~d^4bm>69n# zhn9Qd<>UsohC{#J+iM#u1Q~>$f1$d;xW1_ey8^{I^$U34ihR$;m$WY%J(_B@@=NH=kf*)Tq%n~N*pQP>HU(z18S!bU z1O{`Je#M+1=H$9eQY9s~_#HJ5^TJ6Z^;Yy`_}47X^>_ZZtJ@Xi)|dTZy6=X39&Yty zQPx$xDed92-8?z~YbZO2`40PJPxIa=7Q0LfWu!+{fLoHUWjiK$5OlWFsgu-we3l`M zSgqVmAA)DzJh zky`ND^QShw4T6P?Ze3b8ZgC2Nvy#8_GEB_YD~6d%Czs8yv??V)=1=%Y=j$Ll!cb`2;?fOYo9^4{ z%|`DZavgC8KIN!#DV#-?RQM(GOJ0Fxa^^m)+hJZ_vUUTl<>{X1`&JLeor^^{P2Hd6 zk*5)D3H6OuYEo5aET|nL#XgSR#UQ&q^w}ND++E90h#~7tU>QUE_i&1t?ZMa)BNf0n+;8h81 z{~eG`0v5T-vZgK{&D;7}9uk+MX@F+-+sT>+#KDm96JU-T!o=p~z02J~Z#Kj)AW7eT#J z$Rk3A0<`ikgX(BfID;rBmro){InW&s3Dal0F1U*$SN@yMig4W@R#&HLlCP5e2~PKc ztS?ai!({++`qVe^mh+X$bE4m8U$MNNy{zT=PYgf&?fXUn^!_|Y7X5Q&1OmW$_-kWe z0`0-OW_x1Y%WBt_wuOvT=X?G0`7(!hA#ERQ-L#1BSzHrrq?Ofvwz}n$3LCd~F?0Pj zIQJ@{S-H(!ELxJnNqxZA&;Cuf>|H!Y3PUBB4)uR2sYU#MlKy>GxxmE<699RAru*#d z=LvXKVqn5K#@J74OLxCDQqmKm6X>mrW;gHjyjuhVgm@FuC~RTEl`eE7nI^?LhE8uZ z0}))kJ>&BEnbQT%iG%QB>t7x$-$%Y5Jrc1OCkN|(pz4Lp2R%Sz)!KNg()UwnBvyp3 zIo_B%U%N{*X_vPXOIlcHn3!NmlmhqSL;ySV78l2|eg;T0tgXwMw2|jIm{c!N{fK~Z zNzui_Q^kEYrV8zX_Hq_xQvUpobG~kJv4Gd4Xx!+>g*i@=x5Dg*Q&q~o?%5FPlB{5= zfzDh#%~TJqNf2vYJj!{EBTX6I>v(w&+E_Qr}jDQalc2>Dx@eE&F<)UswUecXPe>& zb7S-KWOT%n%G<2{2`1I$)zT*J++b;*S|8RhOR7uM!D-RU1q;m!Lqxx*2cuNo zm%z3X^Mq3`6rPqvdW&_L);!wB6R7{;{OB&Cg+rK#E`yS(FDd4gb9A1byv@HRNecV{ zTD>mb`2N$we1mFYRr0Tk~`FmxBCv5#bD)SfEt$azj9}@H` z^v_TJGTPH=5v!|;aCv!tc5zU|!J&~++1J%|Vbm%T;Ob9fA1H6AUkHdX8rqqPKiJlv z8}bwW{HOdJrTEAFQjX^_T|jqC(T_TRdE9%bHdXPO3v~?+e_9}VqBeUn(sxwV7S0SN;A^T#G86#kQY7L{;JIB(Nzx|o6y^qap*B(OMlA(OP z`NUK@;Ebi>2F%;=>X;5IcIZ$?G{t3Oo9KX z?(VVY|5Uj)&Xy}9!44~LZu?0Scg>fRr=l#5ThB%{fkdEst)c%`35$g8`a;^{mdCa_ z@oW&2UYt~;bEldW3pGvBzL;d`{dDWm>*+RL<~h2+ddujvvCH2ybN10c8<1V!7H>G4 zIS!b-Bpshglz!oODOUJ5kmZXOjz~EM6QgyZJ;3FF2r=Oti16z8RJDhqe(v6+V$emA zknrU2St?Q(f#7&UA%FSexxZ~cosF&_!p-uc4R&5*;}6J|$!nbvJ%IOJNEX>x?GGm zOyefRdPB?$mj!@?3hhL_S+->GY27yhm0kpNI%=}t+JGH?N+&ztWN?7Qdrwa?D(_Td zdyQ#}I1;|M-Al;+$9oKfT%Whw-~*A_IdCA|A0RFme7zsg+My%GD#e&kM1SC(TkBaR z*;GZZ`V&?XjcYx6Fxy- zU#|ooM?IZMU!Z8v1mf@!$tc>TlR^F#8}rDA6213e;;{(+*C8}M+*%psI>o^PT5}eS zQyVYkW1RyWSo5}_Q8zMNI?I-E2j5@HW7cB*EKf@$u)S@(f3|OmM)eBoZ>7o%gBs<8 z^V|=-#@*PD9lC&zGZgs3iV(-2>dsOS{>;+u;M6HT}6o{%!e(ouPo-Ht1E4H8v0Ht!9&_zI8#)`CAtxF9{7RR^OMEstH zCl@NV6>Vu4>gKrDiX=-!WK+-{WvZ3pcP~`yIj*5cu_=V$IjTAw%|>R+_*PQ)hgSrzXgwe|=a621sO?~Lhs0X2FZOGk#DC6;ju%8iHU4$*yxnJLjt&Y1XojL2DBvHe@x zaf~s->chXefKK!ifv|(YTwAhl9HO~n`t^$NDXs$bzQ^qM=8&z&(^^cJ60o)|95rv_ z*X6=dbKU4OjCfTOnR@z>;E{B!ahBp3GfV%-p9}Be1Fd+}ocZ;{f4M;;O4WNmSBE_; z$UG1@HZ2wq&u08f3u&4KR;Q(*F=h!+DmG?Hg6H1=jLsHQgN|%hK)j#YRRw4yzR1rC z|5s%sNZCMZ9?$)WgIoP?j(IW(j)^lT%*B9G&4ONSW5t>)vaZzEPFAR z39iLK^Yzu$uV`tBu5EzReTjm)s%kgJu>I0?x~dRR1psmC4vsq;AVCB6h82vN0}S~>Gmz3-SqHDXKYAtC6F81u zSLf>q;uUx;qaPa--?rvLLf;>ZBXC|A>=~`~Z&bmpJ`f(D3tu&;n?qs-`6|ABWirHq z$_{IiK=sI`jem9GyGY6SLYu=@lL`#*iS6vJr40;}(hAbqE3q7s!xQn*qw4QM-qlt@ zO{C1D49vb^O!&YHT_k=~#%HOvaH?s}ZxZs>+pgRb>X=vhR;8H{QOomIPIDTG&t}Q< zceN`N?mg07fB!{y!OuSu8ig-fy{cPZ@51i^%L+l%c~Ad+8@tuc?5H#RWd#Z$r>)oG zpAY{gpx#o>z)v%WtNMwsw}5&?rX>7GDRavmKuiFkXA*m-&5(&<@Za%2@N-w60M+k? z5j3ps^|c6Q7@@6{FRix_5Ax;KX9+p>k9U3D<0YA0f1`prF}Y6h=H83R1I2-kqTnqbh*v0F@?Mn` ze=3yvUfrU_eryu#(raL3M2}qp@faU9GSr|8EGxr$L~!-5;9g2U2}z|84e=*`@KKpz ziH-;H2?=~eBRSFhY)<&}Lhz!q%HS$rg1f>NkUsQF`Q|)xP+OaC-}*G8To!!LmNDq#G(s~jM3)h7U) z#pc9z^n&Dw{vD<@8xC^KD8Lb}kE8G6glPQ~yjMPj27~5fQ`{x&Ed+7rzbewiKURE- zOnx5yb3-^O6XuUk;(MOGrP(Wfrw^fGot{>Uk5>wKnhx+az$nb1{zwr$YN0?$sQ=&8 zOOarRX9+MK181Q7ap=*}(E%y20BNM8AY5-1AqNz4?i(J?ZjH~z5$Q?$>(4fD!5TF)}I}GoR$4ynT$q z*F?H&sQ}b}td7ZcyW#)n+*Y&y5eO2sz-RMp2qx;CBw-#ZARYw@q0c&CgHNYfMnH=g zee#<;AYVzutv=!_gN0&bxhb#**o;=0t3U@U2RcT*D91#s#>d>_okTiA|Lm0br>5XP zOwk`_SNPZeV@_o1{{XmE2Vap_n~qFS(_+Q<<9#UAQfPD$S-6?W;U!Hx)bAss)L$Gy z2AK+%snN#M)S(e!!tYj?2^XaREw#)`pO2aSQDCUiTWsx^fsS$A#EbN0d&dcXjp0QS z)Asgh3{Q_k`zuGBON7=$`8>{x;p{=tTa*CFksF%)xP++X2(PQFh+=$#+ZxUS)pP`LeRFe0Q zhM7MlXd}E^Q6k!Tjr`@IHMj7t;aC{~RFkbjldn_^tYiMD4gkcBXxFZQVzkg2H2)^+ z;ECZEplQl&+^UDp>?<(Fz3x2NU!9y&Ymv{WfAE(kX>r)aV&J6S`O`G1K87EUF2yAWrH}_^+3AgK z8A$5M)DBiS#)m8G>0FKn4&|4}i9#yw-07VJJLf9!xK)85F_z>sZ<1-?6+wQR%L=WK zzo&#pB#8wM>*2BZOl8ArIK}$jutw-$WQKb-1i6UrZtGD^(R$e&LRAhE(Fi|cQmtT6 z6;jZhjFrjX9Imk!*LUa`^eYgo+l6GxFlf+)-QiBwX%b#8W)&=*$s2Jc9<5gp?0Y zVFfaOh6;~lD_CPUS(hB)qbyAh@>{UHmld8zxLVn^nPG(9k3A%W+l?k}ou}47>xQq- zuxlO~Ogt32JpTT6#t+=X9!dXLrY8xW^3)^L^b+HJQ1`i1Q~!M4=L)V9V|>*gBHpnV zQ`e{Q7KbxeeJOnLr7Y*LPwUK*hM-j+L&o1M-l=U3LkmJ(D0wlc) z9W`~9PFj)Dxh>P)cS#TWcOsDQ9d$E~cf_tU^lVX|-69BRN^3f8I$4{g0&cxn()q~y zi^bbR(WPJ5du+9cI(o31T`RTw69Tc~K+rhzIwJ7Q|AZ_F$vp=YOib@Igm;@}y?oO6 z6HiVk)!9;z4_7Z?g}eByuC*bD|AitdCPwG$K7l|0X@|eUi*bGyU85LZxHDC5^}HU#t9i_MoMGuUtJz%w zlT`qXBvR#0I@}~Mnyx&Zu)pga-%a{`ID(LhZX}0?+#9 z+ne+=9Zo`>nJhJD-&`=y@SFz5#1)KinP6xGjl{LRwhkcb^5Pg?VoE zap5#Xvi(@m;M6f6xoS!HLd;Klvz{NN!)_oWKTW>`=Krd_x36M%()}p2L06!O*KKwR z@vZ>x?9bJxSLjjz6cHdP_MP6|JjlJ_bXf@*-*v7I%Pbt4y$NoyThwG-KLv|dr;rVM z-qpH<+)VDjoVugYMiTs+cc*^8grsMpa#0zzyv%EK4Bdh?9Hkhz!K`+h-5*+t^=6io z1u6QIby1^5?IGh#%7MAO$?m{fd`-Zy|in@S;B7%eg3W*}=%J6a_ zz4L}asyyq5lb9XXdjW}Z)-!ng!L@c~3ctur#n%Tz!M_kt#n=-YZ-FPoY0kikkZkTw zi;^g=Qg=4Z7Z|P{pR%FB^U-AWBrVJCYfxn!K-pJ#I27H^pdZ|V&))`e-98@lrp0G5 zXcT9SFy!2cJp_EVi*64HUB(1PlnOH+vpv?|AEtf%Hy3ahB4E>;sSerZbhq7ctfArt z)~1&Hmz_h@y(z06L3mfwDAf6jZw*A)3#{L+qNpg01G$J4xDMvyK{(c9)M`I;c&5d0 zsMWr|cZrRzhP>85r&YgV_segiv4$IWzM46i9psc2F@cLdi4ah> z65?F!%EltbO6K>$7{Ppa4Q#)qT|ar9`tI?29{vqCva(EcOl#-1>5@XaLw?E6&rQ!^ zF*8Qo?qzCTgJyiwok*-OPKn1JYkyfTeY-+FlJaV2jQ;DEt^DlyF6`w{zZ@vbqG_(- z^z_7bx$&$oy0KJ?n=c|BA;{8Xhzzh&Ha0dU>C8+__HfP*76gqXxb8^j6=_1QHy0Nd zdrPFXI41|Y);C2zioK}Dzqud|wuMk11{@=uAA-l$cKr8w%BJmp)$HA~`t%0bO98>t z_Lpu*zsN7!9nT3<$>?dL%pc?&uh3kswW4>lY~?DHD{pT7Ikz}fx{?%Zf(0$~+xEh8 z*WNj+JEzCS@fCXPork?+kv1rf!^kKj19udQH??iuGTKL!s;Ct3H?{O+EHijFkEK|y z^S3jwy6YUUcSi5U#LPe=vdbO!B9BRIIQncE?=2jRbXaET zkkJT@jWKy6RJV*9jsi37-FW4-8B>pOcT_hWxbDpy!7 z3fsrrM?1x3nz?UP9UH-Q2AeMU!DGobqDCMYmej5?-)^#iEVArIE#*2pzOjUVh7^`2 z1U)~aE zXgp5@Ggcsvmxt>dYsT#DfgkEj{w^Z$#zwY&SZbi-sqw&3Jc{t~37LOWciP=SA;0lS z?(2G8jRpa7L_R{|pkZYaN&(0Edz5$?4NbMpy`o(;O%V_%h4RMw!nWI1ME|$rhz7Z& zHTXvR>VJ~p1~rmrXs+F@XY8pY_&u?M(Z#Kz7C_?5fG;V!&d?LNVC z^-;6sysXKn&Do22Tv-Wnkv9~5>SRI=Q&7o1I4HkEM1A8h-&+tEN=s8Hf9ELOHhrG_alTOKgqJjhz-!eZskS|))5T5TZ zWY()(thzeze_2voYuHU}YZj)>57H&L)bz7KpUVzc98Xr5Ekb4H&@L~*Cyb8E%5y5AA_Z2C1A>Q9S3(H^N&#_MKr zwErzs-O7ElBERhg$jJ&|J^+j6H~0U4t{P*eWE2kn4t?fiE6UIu>LBfMCCuAcki%obgqF4>>qetPq3Y1#`SrlM>TmzjxiNQZw3x&;mf%lD05stpVf1oFsbWU(JD`r$xP zbQ_uf#%Hf@l|`n$+r-C}%5i732}`++8sP=3%2xo>tHk^nh0@>)8%pPUnt<``D&3Wg z5AM_c;^^|AEU&7%I&M#nv85$17(~$@3H?VTC(JQx5Ox!SNd-|80J|&e>8w;yB;TJx zW4o5ibnDDqZ-0^qU*qN`K$jL#Wt%u5*qJR_%}p(_8y@W2`0{Gxz`jR-bB}M zqNTNs2*r3H?L(J^ipLkzc#vFc9kZxWpMV}yJ@`s~jJtHyZvL!!nlhO0O4vEtWF)m% z!uYjfffUP3H#nkAhzOKu)}ddFYegEXMy>iP#Rf2>@OiT<7 zIUg>2B{Jw}*6rRQAnO)LBi+d-Dk~{n94s7eZcf#hMQ*7$dp+1T8Q+?j$)_`a^%5+> zzXG}>O9~?_hgrnJ;3JLwokWU3|B_@&e(6?n8RxjoWCb@B!>*Oasu}YNLpl)w!Tz?g zrTHrzy3(CL(aOr!ZO?SUN?^_LC0n6`C27qQ4Lr9-S0Jy?ST?+q)iT-VUk?y&mWh}M z7yqo4p;xZ`MS!7=)-@cnW8Swrmb^I;-qpZX<16qF>4X2I{BRIlik5}!N4@aywheaM zDy(x>V~0^l;S(51A+g6fss(#LJZMsVwD0FJ5G^-gn7 zsNO^cpUeJbwaK6=&6JjH+g$6HVVehr8N>NLk_dKmdHXc>L9ZJmK?0g2CJU)iTnGKZ z6M9USpbOt}yd9>w;s6C0b|YZv0RDbuMNQbLQ8FGx9%7uSNrp+_Vq!^drN>NdG!C$x)tW zPy!$T5)5!}e6RAA&W2;Lu42@7xmLT)+L$`$BQAV(xaD5k)zShc(tL1jEp4XP`CKxq zkGh(grk0lA)kbVZ+xeG~41Ouun0V~pjS()|M)iD?!$U>W!G@sGU7*}rBEX)dX8^0z zovMgiscKo8%_mqebH8e& z0~?$y0|+g+BjTu1UN7DRi$+@3kbin&txEoaF;OEcPm&6-DN+jyw{yfR+&nyhJR@i* zfO+YQ-t36k&`bl#imy1PQNT$2gFyS~_~|6E_J5wt>RQinn~F zRqd31mk*oGY^++B6*of~;v^hq`J?5U+ZTs7a!Sr0zl;5>W9MK6WHlfs zJ4!3^ELu(>%aT?vX!l&J3^aQs)UDgOd&0jCJxu)vL&nW^&S#lYzydnovzc1W7-+RD zyl+<{r{F`v0cU$P$E5bj$B-x>pDJX09Ik@koHQ1qD*mw5<4bnPO-ne&J;{?a>tZjb zYj%T{)_WT+-7$l+%SD=XHDb=q95l1TFiOh(iShUCZMTs$Rp*;vCAA=hRaV1F1<`b} zQUtY4?nL?YKjn=La=C)hY=`4|KBnrBX?z<^(i?bw&mQ#Q1`}@r7QhF&;;0 zU(72rS-oUyhSOWVYI$}Yu)z8S=D&V#rw3=Y{Va{!zv2&{-Cdb#IaK|~tdri*B6!dz zE9e3<6_3QmH8-k1=?)J z%B=w159c%h8U=`X(@d_d_OmwmNOwuZ&+mERG`>tTIG*DQy=?oPQod8pgVW}?H-_lp zDi!0ibnATkkrW2Qh-zh_UQ(oKzP`938x!o)HF7?%DWQ+MxHup27A$=0aqdzz%zJiF z2+rRzmH5rmc)GCClkPD=_Nu>baBhB~Zy`wV?$|BcH^bk|)!}sU;D?7~>$T^tcyYZi zZrre!;E8!)f{G*BrSHerJsd%En0?1`Sx}aX(rir+_$#-jEw|f2^ z^fhf-+&57_Xp7ZRgNArqVbgW7#evbU19l2yO3a_6IHmD8opVHH$c+rI)r_UC*^D}G zs>*!Biu~+6-L9i^FncX}7~a<7aJW=sdDR5@80f0%a4_8@=(EtypWi7wn=HvwNh6Ml zu29? zUf-E{xZCQbO8Df&)JWFM`BM!~rW*(fdQJgLKTfKx^URL0Tpz+51oaNk(__8MS}mjW z(ib%P`!UV(BLl#%^Y)_uE@>U@_4*%kUL&?#oSSZ^g);8%?`$tM4d2L}Mtl#Qp~D-(R^Ek)BV5id$ zmzzGBTqXM#Ie+{1W!jg|X8PY`GM~d#cj#H5;na6LPR;guNUZU>cXPRE+^;0DsejIY zT(28Oq3ztq+&FTM$_~r92J1xURToXSziRS!QF3;P_xMaT{XrxG)1214E1BpT~Tu(T1?flwbjb(K${xO z+2>0bOiKCoMmrJubgE}T+!zu?S|z zKnTHu2Y1)tPH@-Y?ruqN4eoBi-C<(E-QC^YCQLXz$$HmXdw=J<&gnmJK}&U2b;%gd zxChtLo$Wxb=B$AKOYU6)^AqLoa--&!qEk=^?Rp}_hls$`fU!`jktCf#r_ zgVE48gH>so&4$X%WQ=TOTbSCXcPlS~^_DZ9+pZs9ybX`I&VF5Mgkm{AGRLALbBDh36=n?r$-j!fer5`Ia#~&A!X^!7Lj7C7zI)`u zjLPI*iEcjzlS)q?_<_+_ZE~r$@@KK<_v!0h#1-jJT~%7)@&+Rg5{a{8(}ZPLO(B#wr@XO-$U%=1VyJh zDYLJ?hJ%HQUe!2hv(2#L)J=@l*9KowW7UnkrRKW#(S*33SuQq6Rah=n9L%a?%ZSoG zJluBk;>*y;n&gp|*IG7Fm>C^96GGya<0ICE?Pqpbur>y)z%pW!_0Ju)Ek6v2Z@z-` zL=_egwtJdW$#6mtbX{Gn@y&`1jnofwrKdbN=-+P!*&%x(orvy;g4hDIh9{c^R}B4zR<1?t*PaK2+o3V5TF)BPTJ;9} z%*g6KOy(!t(XF$peFyfHI)#4+Dc|Kg==HR7AfhsFxW;^xODktT1-QX!xEz;(YRv>C z4+$Cz-!>|&triR0?|FwmusTcTgpd+}F9awQ-(f#%$xjRDBs92XXG$Hh`el;VX?jEb z=a4m1`JnA$zS%(8WodkG6I%nXkjX!n?#eHlL?l|qoI6R{z2VwgH?7WQj3Q~;F7ryM z!9Vyya8E2!sv&F~M8$r$O?|Y|TZ!<(y(i{pEq0L~UPIszE&cj7=9b-$xV_7YZ#e5TFA`Q} zbciFP$%BbqeTBQmZIRpD^~!wy&B#Eov?`@sx!@r!$&Tw<)W;*p^YY_CWq%j$?miY5ZO2oOLu<&X zTuvd~e^d>41&=k{dVWZ3h$rE#8zLUMAJf$QGzuMF26x9YliAb0`U0PaRIF^ZO^-$v zi+`g#Xuu-HoLxjiL@K!}!5H0_)N&lyEL6urWl*2IxM#xTb9%VY&*#(zAH_g^N zhT9|Fwvc=LB+M(yh1#$6Yy7t! zK`$?BvVrQhf07al<6C@M0V;dv(?y`)Ll)B5YdRou7{Ie$q|x{3Gw?iu(AX!wlw$bu z>oT@n+2M(T=Snudd^Xq=k3~GT?E4+9BtEOea&UJ@Lc)b@8I=>gxmn<9up`c%WYk&M ztfZ<+W56t%RM8~oGE9T`!E9py8xpuIL$$E}5BiPxpkjJRGL8Y!$>x&LS?7KpM`wrzW zLcM3+HG+SEsUE^~l-S<+W%bt!6yq0dTcGP9`_j8?00e~?lR>$^`JBnaxPqldsxs53 zYp7{7?e{7U*?wu15RCx78Hc^;7CAF^(zH&)7c4fh!|S-MQx&OEI_R*Q39@&`rn z<9=$DBW}>?8wM((oAYkJ=nyI0T<(iyLqNV>N2QZs;o5rSHmN+<7Xk?isrjO%UADh5 zGox99%BEmO0099E>Gnvql@%d2)_q0Wz{Y zba4m6hqxdKtW711aMYX%2 zs-vs>MG`iu3V2lOi^%@XzdX;U_+VVjQ1%9Uo6O?pb1a{rp%}o$cs~D!Hd0%TFymjM z7C;sCB|1h?MfG&V33~Pg8%|gbNq7xPK;Tm+2k1Ee*TDF!)8e_Q@ziInDw6k?Za@@# zra}P~)k*7n;68Q1HHh!uq60pU^Hv=?_lEQ@$T~|Zf{P#UCM~Cc1zoTHN?;jq-dF4= z;4|SKlgy4?8)E<&KxA1ebzKN}) zeNIP);O95^^^`hW2?sF?>q{53Uysn}Y}vuAk6;s!M%~(L4;fo!DpV*?#Hf+T6;29H z>m~tO!z^Ulcn&Jk;6cNESLq5AQ{Xa~Dn_8)L(*kfnK&+30zvxaD)tGlaR4a892F#{ z@KL%{)sR^q+LSPda6plXb~vl{@q>T2sLJi5*e}BvcbGb@(b;e6l$#dat*eZKRV#2-lr?`|xt$|j^(3u)x_F-El zYEjT;bTl7iMT;o`eb`DHR7m}UXSy!WsL>M%03@%+OLjz!N-?ns0rX5VDz!EAhs%W8 zpS~LTpLa*J^8bsS*~-T3!D<>V`GpLKFbLDC2UDG;dg2t5K{|v+QKw1rqLlCUl-c}g zcC;J4nHUW_{pkt$eZEV?`nbUduz5l%j30jdu5ZxGoI$6&j_fT|f;EG!5Jh992FJ2q zpVvQo%AE&n$bcru8fK1Gqu9WLG4$U8&}u*C8l~#VNBryFYXO7L)MnDxwFbkc; zFeBz*dx4A`!G>o#VfJxlky;(aT-?^Kdantj{{dxgm8Pg?W+FW_e?#cycpoPw3Xn2O zs0escEQf;U<2E>n7AOJQWi+Vi7mA1v!S|2L&~N%HJkT@N0bLbTW!0KIT38o4n7YnP zqVijN?eun%@&&(un6QQ%Uc{J=z{e&X%TKH{q~CuH_{6(gii&zc?*QWjZKCIprnsf| z8OH$G*$iSfJ2)Nu%Uw2AmNO!Kgx<#x+r{5AY~9ZX{MyIwSG>UKT6P@*Di#(W^z!r% zz;Gj+UMoNmQ&7E4`qDdAxKz)Ty4J9D6_?3R26aj#54#$J*4p-ySio{JN;hH}YC0m< z4+DCe{q?n;_>oUfg{TG!0bsZ;pis<&v~t@CdCIl1b3qrE%mH{CdJMtq*?xAq35lyi zu$4gu!5rUD3{<@27L#!;{-4N_bWj2FR}5%P=(xWH1b!{C>Zd^;LKbh2!&gfJ_sNi~ zk2jB&`i*A($V6pd&-YW)O$0umpg3FVRp-Oh1GQ_~NT(+A)- z-l|#DpZ}wv1nNFa3ixw6`sqvl?5FpoMuNt5J{|uP1Z|(W2XKb|+5(!Rs!WH0G??wd*EbDkGqkn<8u^{?gb8`h1 zazU~bz`xVU;wX*hy=zeZYSRZ^Th!4dNUEzB0y;tHTk(m?%F_Qc!UB^oS=FtcuCA_y zh0C@y57-7c!(QLE{znZg02nlZ-X|bX2N)B8c1L-No21eFOhNGvV-d0j4LaR{*&)NR zt(VJ@Q&JMQurO(8%dmJM@38y{I%UGFd>;)rHvavkW&CSaMTIzNRG|XJT#+mVpgRYG zW|_hH02VYi5CEN5)YfLfOXBK5KX>S;wA(!^$HFoNq~k39)*cT1O4A)iTJFGt0=$fI zaCu9=0d_C&N4y}IMgF7UU4c%3^z+H||`GZ;0k zd6Na;D!y(XAj+YNT5hxxe+dbDs=s%1bTW%}b9ZfLVtdvJDR}RF{~W_YM2WUX#IO5~ z(vSnK#uIq;Au;F^fXn@Vc)v)uh`>>8_`G*fE!SYY4bW8nOqLAr;-b^v$9x-egWpb@ zJMHQLy>p}KH7(_;&|7HD+5XqnuuoUNllCBCFuzP4SAF$rnnsrWcG}U$L_TZ`pB1mC zrS^iC(@~=eyY^JU@r&m(NFS( zNp3gKB5dmmO>lvye(xlHDl)*DPIvtY*sNklyB3WYVfZQ`HX@g*4TLVqo4wB!M`RDV zcnaOww^J()ys}Nbx$Qz2gQ112(gpgC8t$~+-o*C)Yn;@EWPaC!7@Od*xG{}yH;K5i z@512`<<0ahFj;O=%m9XY1o$FIuY(WX2=ALg(3+VSJR$-7P%mwmk=KDy`D)PfCy8m5 z4fL)l))R%=A*RM1r`&G#XhuFl5QgJZwS5EUPj6wWemv0?lk_xFb;JN2QQ612%k_q` zC7BpBpi}^+2A-ipL?y%p+4fc90L;$GQUqD`mzJ9djan2&zG)%YdlY#g7LFPF6 ztA@pcTwx1Jw{J&uo*s(?STpCsWZ%7WbaRZ3G&A#SG@p>7RZC2xC34ga&P|=G%kzfu z#zccs8Vg)Huiqk^d^ib!3s@(Fl??e{f}t6AZ)Z^LG#E?L%+5I6lX}!{yGHNXl9g@N zR zeEiBb#pihg6Zdha~fNIxfYYxP!`ME zg?S+|`N8Xm&?-z#z_VAjIhxq55ZR~-g)s#96!_G;fA!N_e6(kSjulG%z>X`;Y9fpx zCg><<^p^+#j2Ejic^!WIhqV{B36Q$|gEXM~7#h<%IJiGGm{1i`hfzeDThtugG$M5; zP7xG{b91k?OwAfL!1VCOWjWj~+^yNxh>l)s0G?$y>V?!nl2(D1m(b}Q?jb@}+fWfu zLraby)1V)wMSvioNg07ZDf~ZdZ1~;Re2txGejrE#hFE|EebKL6GILG(W8b{jU~cqs zd$Y{C+zsEI9+~yC05-^7%rKGzKG;MKKtT%O6aV^y7!h$!NHpEO#r(CIiP3U=tSp0j z(VwT$T;4oaw*)bNhku|?ivCYoY0cd05jG+U@1)D3$w8x{o#$iF%@Q4kaW(KGUeY0i z{Qm{2h$#mrt8vk{gB**5)4&jT3}nkv$7^8~8q-f%n{nacL7OIf+c8~&h(TJ6yf0uj zPD;9Klk|;&_^G3Mw4Rn?PQVbuV{O9UEdWMF6(R8N_# zMmFwtd1T`U^%BanEK$?G(L@=-MMsMQ&CMqPcY~?Yei9XpBm%jDBv|mcJhE=iFupL8 z`+O#~Rl%SH@Egs3vcX7`i$b5wEt|dwL`Ng6ZK{*?p}00ighW$88+oMUNk70xX#@XA z+(##v!(ws(AI^=Bakd_cmNC?ThdZZBzVQrh(TDg8aV~75dP_7)Nd(au^zj2oz$ysF zSho{BaYAE~IYLgMfF^&WCz_hh3Ndc5tk&?&VLYBRl{Q9AGy2aed~*6HAR$9GHWWyR zIu_3L(MsDZ5;gxRNql3W{kK%Q&_J=Ocw5Zb>u_@i$xV>m82oG>S73wC z7-G4uzRmbdt8tFtsjBVqIc={Zl_AHiT0*0lxpr5!xb3-d zt97O2I@?BF%FT0g05Ja(4mWbWAwNyhV4*7vZ%3r?K;N)8K){KyjT7-+skA~MrTXO= ziVFQ!c-29>*RL|rBtDv(7r@JuycznjK-kGz;73kDh3lrHDRo~-cufym)^fNs9cD`#Uqs8H9n(>ZGMo| zm~O7Q-n`n1%2v-d7|j~D`?zZI1zO1T7tpjZgm}7zM0oNFF~N4Ij>iktgIk-gI$jAY zuCSeT8hkfbf3BmKU%w|@^ZPpReTN5IhtEbs07#!_vz4?{(MthEZxENawW5|=UX=n0 zu8^EYS-N>wbpIddL{(#4%vtVh^#)reRptI`4U2*nxxdT^Xc=&y5N~TLb8N0*ZbQ68 zd!`@gU*h!ri1zWB$fVFa#C-p8MQ%}op8(|YFtA%Vr!Ei&^QfDOG-d|ZvSjaJ*i>8W zI3W5%PsKVe$)?-{{m&G)@dh7;$5}*59cAM@g4a=t$b%%M9b)3U6@Ie@yW2kr{jU`N zOxex!cw0IVMY{U0pcwQH_KR&Z8tY1QcRv^5+3F#Hx$YsibiWGqdSB0@WSNRXD2HNZ zrp(hj`1>=#2YHd%TlE6KM5Ow**id?9=7CuHQ!AC_lU zgC~>H8}ujiZLx?V(i-@8X<7}43Hob=@UQpM&|M&TFIbZWw8P(wfNUrX+2E2D8()Q<{ughNe;^e#te&2tkh@v-KMO?Jh zkurtM8ZE2vsI91>Cd(-(-*Xu*BD*a<`EXUl$B+87IOpqte$S#qfwV1>>GUG(yC1-3 zh0nkV{8mdnL;%`;NfXSli7rSrc2!oFFnq*5meUJL~iv*s8n&F*sCjdxv$L`O9V%MECV^R z4tR80y^mOsXxx|3pMTY6brZG`LYt=?#!&NhsQyH;X$6iTV~y@?c3#SI)(n@hLNlaw zg1+86b&9u0b>qO?4sS>fU!44guVRmMq)fSy|%-9x)9fl)*o^bF@Oxt#L z6P*ix`MX0Jrn+%2>TQ zOR>6?qv|#Lj%WT9wLcg+7sNPmC1dVadd0{7M+xI0CnLH>AP6(f^mc;fA4VPT!LYhC zId?*LhefJrr?-8LY;U<>olhN8*^?nN&KRzP6cXamS65ALd*m`wH%=Q9-|cH7$IJ5z z@X+upi@fMGnWXyuu?46v^M#|)cgqX!?J4W0iPm-E^My-@3iyv45h#kA(C`;Nva$$C zHoWt8eSNudpIG#Z0xNCnJm@B+VbN>sk=*4Gf2f?K`+;u5) zUTMnKT1sx}JF||-)c@)Qy>Q*U>vo>oZ5;5Ka7;Ia=FZ6<9UC-pcZ(WB=JX@N7*DqG0kRQU(>J{1h*m_nZP& z#jeUEK(#V)_y?vi%=$0m59!a*ouU8a4)8YYL8Igir*8a}Q)eq;Q`!3RFmq~pJYupD zKCgvxd$PP{=*QGPFF}MTmU$1bs^d%gvpUNX{n^^wA`uDeNIiWQj9rkiit{p^C6RUj zv+eF8ye~3Hsps(s6G(4cNGkofHP62v(C48-LAoRF5}-KUt)e>qsKl(M*wRc@Pbe->$I zFUP*{?LPLO?f@I`RXM6SMfm2&%3*mVe4e%#bP7T7$h2wUam1(fAN0ajbA>+8oTB5T zFYD55zW5eFakW zZ~__s003RQ*AiYYr>+e{IZW8Ut`iNgx+>J7LG$ebZiS8k@>{?dd^0NHAt@@q~ zO4PVoei1Y4b9wW*5iZ4~BamKCHm)+JLWYNYNoMXdm(Z(LV<7+3JD95X8lAvv={!U; zXa*3BdsZgn>TmYS8g1qW+^P}4A$zOxv7R84XiLLr77oC zS~(^j4UN%MvZJLsiaIY&`C8}Qoof^as6wrhL?g&iCd$!ani{4vEHkHlkE*V>Hocgd7hhCLvfa*a@xuhr_C_VujhotiC&A=zg+(~Vvm#T-{h zDX+4no>C>catdZ4vLsQ*0A(=8a{ROlLq}waWo}IF0^|vBeh2L|-nZpz9#x%}M2nfk zrE7p&P$TP@?%|&2Ln@6qkM0>-40Quj$Yc{CO1&NokZ0$1UmSC z=Y#e4M3JP6$8VLK&}fmw^?S0Y(J{`63GYjvn{c)TcTyH5-#f07XJTir$%H7oR7Z!{ z=uU+syDTIPlI=~H>j^_|_}{Dxz^ermuX)5{#kBM6SX%mB(oP^30YRuE=&NZ9T*@KX zF&2)KGTh*|X-!iManfOX$^*yaj0|do#5SVGjG$cg9UDCnU@8l79A10}5b5Jz5kpg} zj7Z0L#p;hA!yPqJYAll^76osLu-AlMtp?CSESQ`c8b7TH5Q@?6mS-Fs9^8d@cBLgrj0N(FEUTfn3@f^M3ArfKN8Fn_T zPE782>SAVk5j3ESLD>5saqkf=^tqSP`Y8*zVg>Nx&l)Ymt7;pcMA(-OqMji49COPuS>yfb;$djo(tn^v)^Nx=5+S{ z$@K|bc(Ssi$t_^Crn6u6MG4oafEG-&@8#%GrF%9U`tM<%>pesT-8D*kTq4>Y>H)w% z`o;1$_YH6dK6qo!S}-meDJFEc4L$yEOwp$bfS%BLpc@JBo?wiF|C8G%(%Uz$R!e8aR%j~X7;BvkHC+b&2h>g#23`bE+H}GL8TCC&{?fBt>Wln&}n&E zryu20WcUaQ&^2*?C`8htZUz$rPJxlFoPfzJpSfKY8ksT#TfG>HH^CX2ye06#mW0q( zLImguBk%MNof}H0u=9XKR!Mo`j2Dp-6Ty!$k63@Q`Xyg~X#zSjOz2ArDKqJGz6pJR};oC8h(g^Y2fZE!=fBz0iae29?HkQPA9&)ftLq&$S ze$6S~VCb%_B%QN02!F;MZujKm5;&m;_FR1XC}fsz_h(H;#v}Hxa{~m)-KIsPaaeR* z2u-%n^pril+J1BQ$ZM+fpdirz{Ten?+I0_%KDm*WinBBf)}aqO@M;HL+_hq-Dxik$jo$ zf!0~Pj8dyVDXEtXSaJz8RrgCjYl+L1e`#JZTha~To)jzK`N&n;>8x3GcwyAUf%=8vy_|YhGg8Zu8$}N zL*}cP%y*iNW^Tgf#+@&JzKpE%)Y9MJI+T&!Cd=XNuaKfAUlU$p#4-|mWnGzC-EbR% zuF3bb{*@9?f7UAa5E$gVz0&E9NuWVSCPKz}$T8dbQ=;3~qPIYq?eQXvRro6O<}|bD zs*mV61pA_^p5s+zP53_cyGt3*V!20mdWRLxZtR128;5?;@Y7=)^7LTG3!LP-i}w}b zMITw|&OS0AdB>vT+Xb*uYoIQOl9Ah(Z+zp?-AD6XHJkQ>N1OJ)<@$iB?y*iA6s%Rx zb5rfu03&8b6%+sT&^!%eoN~A zfqNE`e=OuzyqlD^!{M$KLaej84gZ3e{@l;WL(i^3H;IYJb-K@`<24tg`14BVq!nz? zHRvjPxM^k&M*xd+xZ7w=N%kZ%RN@CC>o}uEqH_!GINDY2!reUa-+W1?g|q);OX6yQ z&X8&^|E5h5&Kd<&0tu2`+vlNkvN>|2%}iKhs3n$vnWGqbbcTO@_-@!`kuKlK-<&|byUzlrh)O+CRomb$r5o}L&dK^^ zN(T5Dn8vCSVI;=e{_oQlj zXWB@0D;wYHh%Q-ZX^Lz?+m2HOWLH$P6SVZR<~4rHxsdk*f|qBFo6p5QwwDj*vXRK) zENTbCD87N&4R5cNGt`pn4NLgX4$wQ_c?fJcShZ*Wa}CHtG46|8A^$jW-0?+2i@i=h z&C`quD z7pMUMR|QNc7O=xZC8HM7Xk=G~>dqsdkq=uK#2g;2c6qxUG`Z{KjY3Q2;U7-7^QIb0 zIXrIyN|wsX8ZO_8`0nm;L(>&|#|qH4yUS{I%rnR{1jJdT&>-^DvPMS8Q4+39HWw{6 z`8w>C6iTlq7BEyA7Qi_UHykpD$vKxr$bKn7rYiwNI@4dvl#))E*X~l?p z(AY<3wQ^Rbyv~d5(%16_d>k-UDA3J}es*SXUKkFW^In==Ug@65FVS;sYA*M$%XbPQ zXXlr=yjUtU2lMxaa)EN*Kv8F=Pks8 zwzs7D6uLWKS%q##zZX&K>dMZo64S`nrVS0ze(nKfqoE6{@p*bStD~5he0$di3>mL3 zUSi#V4Vi$pT!&nBVYY`j!Cs_ZLwqGWBtPuJ@phYu_@Cr9wM?;^$jED52wpm2?>SO(Id2GaLSniIbFW|uAw+4!6rKerGV3p#~tPc%S#9Dls?>C z{V=@fTaofy7xEm-jEJD$)mt1|yYMM4Cm&?P;7OCv%luZwXepW_M+jiuq_tmpq{Kx= ziamdUPuC4yr~H1(n6W(hVxHFI@lwU(B>1%2O`S_)87?&ijev=z-jNv~z@=pP`aP4DcTMn-~oy6PP#0`B;Zvq?u%SH94Cu5XxSJ@dP0Sf;k|fiTpbt2kFf0v z>p}2H*~Rdmkd4P;aof?4kcRiQ-u&dfv)>lIp46({(;?#B%(F z{+YH0$LDyq zkg5P(z~JISF)VQ&QjZJMAR346$Yc&rAFh{qZ9g@8cFiMOjE3vcA+M+B2ss=!=D2-b zIy(HK*7L+XC%QUYxIEDOmBQVd0j!YQv%)y)eDpp=12GbinX<0n*Q zLKkIKRqv|j+c(a9rO-uVoR39IG=#$WU$!?myxS({w3MDDKo8Dta$}h+jD2}rL{)kz zN9TAMm{jOMHoQK~(S3LD`D5dz;pR3#{FiANmJyN{g@^-%2OxaF2C0fC90Z0F2*=^l zfV_N9*xUe_4Zua7_U&LiLtiA)g3nA1=b|d`Wca?Zu$SNekgu%5W;3dAD4?znOVqBE z)>nFo^CEv^@02cN_FQ>f0`T6QkJYlCZ;p2hAq&Y4X z66mv~pi5h@MhBt4*<;S^4}S@KYGjeP?zmJ()%Wa?TnMX0v{M(OG|_k=JNt7fN(+GA z=i7Z(QCWW09{N@&cUJ|!>W`1F4!VK{<|5f{21GZux95Esmu zD<|OMBxo@>7C~S>zmXm+tOHAi%)DxCqW|dAzsZmw`C8Ld(9%+?)-oOjI-3F7BvE2S zmJKKk4es=Ye<>?rX?!LTfANWP35=ev|G(2K{MT0K-}WM`lFag8?HR6^1X_L$@G>|Ga*&^_UyC7cajEM z=zYCEJh`4{a09`GXo_p%@{S9}&qFm??q%7%vJEhJwxWQ|mv`<)U`$$ftY(j#MtxSD zYC7Qvzbi+DtJCU*(`FOL)Rd|Y*!lava@PWIJJV`O()IIO;ltlgW@;AKM%a-^1+25q z(E@A>(5sRDz-sF%lKvY@9E8_TG2BsY#`fEPquQaHn)pgyxdOt>Ai*4qLJ?C=qN;C4 z0SEWdr6eZksDasSemFdr&tbe@gHp$ers`7@roMCw4d`m$w0XaJ=Ib3)FIIT?+LtJEuK(TzTFbWL(KFVlT~2Pg`zT z?}IkJtNwK`R|bvA=a4~zwXMUmlg1ER;<6qc_S28g|FH@`HOsa5P~`IQm$HF8jXHjw z?&0yEcr0#3*Y+oqZmey->DF|oX*PCo0BF9lg*^9|i~gM?126$!iw`zyvr1=3(SpE< zqKB)kxIz@+*i#k$h?SUItqQSy440HRRAiT13X3${?gH0iiyTdqjOXI2{OC^iF#Stc zbCIXp6p@rWEdR@myo2SSN^WIZmP08L47y<*{y_Vv+RwUgJu=8r_xR|U#P zb6#u9NqUkjFvXwpZg`5HweTcMQz(K>glK}-F?4R^Q9n|}F9chVD=Mm<`@uO-!ZWA% zG^Oup;bn0ZzkZXT=nM4$97Y!i#Pl)IlQF3631gMn%sLimKj=%GiX40 z+KTepT}>!lN4vq9nRH9(dc=Scuaa1Qg%5NA!T%;NENoq2J99+K#rSplZi&?!rs|mo zm76MRPM@jjZ}jpJ6p3IsepG6`GnMQDao*x+4sG2Xxd?YLAf0lp6~1k9$6=qGW>e;; zBT0$&J?;e)h_!%6&|Y57`#7cO363!S605l1b~&b4`7co;`JnyfsPwNVK^Lg>yyF(; z@G2hQ11cUen4#MSNd6ee$f&;x1GoDZ$&j*@y;cX!(RCjiy`~K`2}}qG`kMF|Sm?f% zd2GX~!@h(K$5}B9f50B0xQQKD3lfI)2-zFj`mNw6OJ(a2L()GOB_J3Y{UJs>?&Q8f zowt9@I;hYytFsDOOO{j!#m_FWVWVH3Q67b?Y;`x_i{GBB>t?f^eh;>IcYBe~$l?5D4rWn0uHJai6Y}xF z;FVimg#cx%QJn{~GXzyiOg|XhDCpnIhh_OH{S0Jk>8nT^85(Y2N>I6~E)~O>@CtbU z(CqB#v!ONZFjAL6b<}x|*SYVi;hIF}R5pPXNq=f&Y2O{c!Sgc%a9j)^2<$1X>dbZmxK4{{cDtpIsU@7SE(6`8w=5H7M<;Bd41p_zQ z-Uh^#!Q`GKF@a(yTbvzilbm zDmzlD@L?2skyDF^rBdmjOGP^Jxb&e${vzjl#9p?B#Y5B2p%v|bb zcx@UZBUu0T=f>j}5SQzV=`AY8i7z!}Ye%|U`_2|}Hd2UqHcAHuh4N19qC`H(^xi%G zD$%SkE}XQNb>89zqi`^yAK65bu< ztsP%vDW}@9?dLrl{IcZ_sLn%QB!*auh)wDEZ+29ZkjxsCT2Z(BrZ&QWfO0mj*X%qv znm5{s-%j@4WRjdtrdTx2n?HmP>R8miyPVvpc*OfXFjZ1L*OWXgGsHVpe{OE|AA!5_d zpTZ!`U9KsuO4fpFwAJrm-IL^Bk?m9qIy!y?kCHmZiT|kf4&T2+*ssnZYda8vrdICFI*bX>u*{t*IyLdV$B4O)T*9d3#1@iHOm~wHIUWFSU@_j(bbl_>!X<_&+W;f_0-d9Vi=3Ke`RxM3FY}7lREQn;Q`-#PCpMr zg#2(F6x!7mMm>c_6e^tsJbO8&I z^HUQakm>g#8mt_`0VwiGMSLivenrA?6(Dkb(H`%hv`QUM}o{_)@2eMq@Etczxdi@ zYxEd27e_(R{_b2mX?1==2Q9UA(y1$M8w_{%3Uo7?9DQw46It=tq8)LoEj5iC7Ga39 zSYyFk9K39Gaj}bbv(4jTRZF$M*MENfu2k%p1~01RxTV@}jLAJUzj2G~@@|>9;+XM} zH1FLxhRk&_UeTvPwtBbeBVsVogc>aexMfivyw;{V&+|YdcC(-{{7wBl&x<)v`%=~D z(CvI(4BtyEz1VJty*2pehIf6{FkJOr#vqysgBE-ZS0u$9rKZ?iBv}*tx(7AgC3M)} zqPufZy)GJcn)==H@IdpMcoTC^i=^fS{SZn;k91);_R zH|u*}(_Y9G_BZA0%0dbQ;TVp>=qlv!4ZC^_?PP)V5CEwazlFuT`&x6hsX6@UL7K&N z$gchFegBQEHxkos(uDVo>gMIG1-$%ST#@8=ve=X`?ygUR?Saer7`;E1M&ckiG zCF56U!E7VbU+YXjmD_HH$4fBYvM$9r5%``ypZe13K2)1Z-tIEs7lj_h}4`2|p!%_kj`!Bz9}w-g@3 zfXd^wtIf2_iH9vKC{AT9XuCAghwAsIphN}g^~P%u!vn`l`Lg3(&Joz%*YSvy z@Lkzonyyo;Q<(zhmwgWhjBIB~1JHNA>}Kr3Nn#DS@k+We{PlVle=f*O^FqTYEcV#5 zXvoOieZ4$X0Im+biY-^T#imDkv~+D>Q#UcY2~*Ibo+QNuvW?(f8=ePp@HXbVg8DPk z)JzzLOu91^yaGQY6CHMBVNJ@cBP2*(EkA;U;zGq(-}E*m3UX~DY%yz!S6Q@qk(82T zg9`VF>2<5DE9Nh*wTG5h(p=AooyIb*$zJVE$uLAOHQ%&Ugv(ul4stbjWqvd-EkKs) zZ!M+pf7ZEP65Xm^Ja&0jE2Z8WKdiRRTOOumAHG1%J2R1^mZUGXVw*#`E4@q`Hb=!snOJk zam%cY*8Y(AT4g0oZwSxr)Y+Rn>J3}`)z+N}AG?K7{3$LeAv$M!-dU%)PdWo;_?OtI zYY7~W&4|HdmuOgiKXEw4vNzV_qVQiw76!>=B+X@?RHn$5Ti@PW9HBwDfOzl57oc%OsLaES8y6&;%LX>tFob z6P$g!dNSmeHbNs&(Z4iDFir!JtxK<5_anP;Q{J(ZrQDo%e1AV;FC-L+;iY$+V$5w6 zYdu7@nAqO;P3oAxk5{4wmn-@1D9AEf4!qoXs~yF%C;JL#*|YKRayo8jdnFxSa5^tb z)vdt=991Zme;tmm(QF#3XJdECMCH=#elX;dwcLEIRW{v!4>!N&Br}F?cb3Ma`y(o2 zzz6PJ^Dg49uTPXDm2podf%5&5)x9L+P^Iiz7VVu3#})^qI*zQ4+K7jp|{aOH52N#s{7!0f!=^?BQ}stru(I64(t$dC0&C zG8T1@IO4+0Oj684K#TZ*oS>{>7RNywepolYiQ?ogBRs{vD>UZF9qBEQX4&)rUVD7F zmIBMs#9>F-gnVTDJ}_Hz>_rguG8AL&yk0q+R7~5E8Nop8|6%Ma!{TVVZHXcY5ZocS zyE`GchTtA7xI+jI!5xA#xVyUy?(XjH?sj{4zwe%N&$-rrc$k^)uBxu8-h1t}_u_Q; zTkESZEV0M-^9fLFem))v(qdlX=i2ROth94OcOUTngm27uI(iKVaWOdyE_T)(g(mJ;_>FvWP!Be$)FdKW%okd&R@L8RVOyh$~!1jeJW4$%b$hipb zjO24XUbuOF^tFS;B7l%l@l!GGT`!}jQjYVs^g7Z{suM8-{JZ0a+16yetIPYd3~}1% zIRWO8;BQ`ZxKKYswL0$_n*)wsEOYQq%FXjz70z?(_W3#QUvmyi3eq$W*KEobPs7r2 zl`h&Mcb4!xJ?Qwf035T0pv(vWzV{-QrQGx7&G81Jsc4K?`tw09cSFQ0P{gp0Uj@5v z;6@!Y6h}Wqck1R%QUS??!CIXcY9iM_7Lvy=Ahm*T)3okK6shM_`R_slEA4(!u6vPj z2*=HH31PH9dhn-YmLi-Fz#v0`Vj#Fk$Wo?ja@$p0xVT6M`ugMOB1PIFZb(+ccsU0r zs3n7CBt&?58!_iZ`X1~1e6l`j>S5Y{7qQwU(8LcDEzw1BtA>nN(bwnM4G;VQ_oa%P z&E@0(dFV@vfK z2~$ifa&WEm^vHNO$x<*U)(;2#aP+8-yRAeFs=`AE@+;!6+k>G1JF2CZL_@Be2eRg&|*UD{n|ML9spk#yyF0i>H+NHUb3(UnYAOfjl zAqZs)JZdLehj5Q|1y3p=_QkGE*qAReh2P)l?7I0$+vp_G9Z)PnSbM3&zzu=ECd1NT zMo)HzEB*L47Cxdh+AQ1UR{*Diq<3k#Z4OpD?v-w|k!lK7Q```c3Oi z^RXe{@8i1dr8;J&fu?5Xp*o<`4Bvnu0uoI~aSZ@yS;~>*1lqeZGip?y>K0XHYE7(*uz)mAl>(LHELSx8c&mgP;L4=+dEl z=@-A~m0`p3v%V<#4h`fjj;Uhh0<5bMb)ky&^{l?bVX$@D;bt^H4HoNO+2yv-`BV{z zTtbtd*=k}?wxFpm^q1rD% zs7K%!i3e=IpFuvJ;nL1{T>1@w*2r$2W|t^ zBz|G{K)zazxYe9uyZ<-wE40DJsbjWXyAZ?rtt0Mis~4xaIr;4hAuRHz)>fc0S`@LN5ZN&IFx-&Vm+Pg z)dKT_Zr2K;_S7!=b1ox&1*GfA&ob z2geGrNm~lxDf|V*Z24yiXrH+6_PgI|E;O;%Jf=GZG2C^BQk4~_7||5bHF<6>>yRODU4}fY_v!QA(WStt7}v14 zoIi`_@ou0K8nZWWcrE3O6l&xZHFevnRbf$4(T)Olu_iSZ+d$IAtL$F@4)PU4uUhQiKiw4OB z_1J(r5?{zn-%%bBe)j|FG>K#ACJfXeDh7N89Pd#oSD-KjI)?FSU1R?F=p!ExK)%Dx zh*DSDE04(dp`?3Eozg)V>l(4-2WbHyH%erJRo~$UWdFAfCc^y68sk(vII4+ z31kaO!-!JYp>SdKPsBrO#k1KK6e=2Y#^1z}zZ-mJl3#2*=?OGm*ODQAITs3|wiCuv zds7r2#Gc&K_}z&#i0YdLXGL3g?Pt@$uBo)n+nXDj9Alhe4Y{b8F+Un+w`@w}yg+wL z{;&UB;XOAn4P860XP+A{6-rBuN#Ki**OUnuWpZUxEEj#fem`Bd7}~nvnAi%Bvx6=3 zrDRfiN&Y$23&Qt!^4i~+IAU7W3wu{n$a91w?}b?PUHsqIUJ!nlI?Ql3FfMvUz~Rbw zD5Vu$Cp2oY8L<8b@`eJA$~Qpeg_Li}Zmx3!=C>ggxM?H1Y^GNK{x&D4K6hht({lE# zx6LOghQ{$|T($-S4K2R^`LcvHGghCZgGRbm4C;<>b}D|$uHANsZoD=v+ghZeyn66o z?X-ff=U=IHd%Uw9?)3Iua^D)j;^%L6KB^<9+`VzV7Js^`nTgeQGkCm1v}o|jd^hxW zkhWVzO08p?UV=!INLJ#3NZcAEAw_B-@T!U4^0}C1y_wGx!G&cp*4frG0SZc`@$SwE zG8^A$@;`JPZ_!by6a7Uu2&GZoa3 z>+*Dal$)!H9MHi7ij0(3Qi@5@KG}@b9*b*#`0U`<`>5M~Hj8A7=qxNG=4CtW8wO*# zGn_7^_6fP3>MKQvKTNN)^qtz=V6;AWOoI#v-z%V2yhvw$ShZL#sX!UYC9=CLN`Upq}1H!u@ zB46(m*lSj94r`W^UCsisXPr<8QX-b!?zP84&N?JFK^ehczINz8nU&1I=SlLz&`M~4 z!L6dG>XJU-&)Q_3g?@q^DyRpfL#i`uwO^{$OKLkYuivQII)Dh}}B=+(h{m9*E z=ZUg#LW5B$eVCWT17|4*#l%+!xGI^b7Ak+CzN&Rj&shsopiORG%lwmz7WiE+!fMVL zx|(m_?z8!PFY{Zd7N(K)xU;jqw68udlZ-LJZe-o_FY-HSE;Dm;af00~4=*sX={~4P z@W!QeJLMRk*Qv7Rn%C~v^^y0q*8O%gweSYrt*^|QC`%O?|B~K{JSV@`8 z&IZF-@1P>)ZD$k<)>qU#^|75cHa03rX*ramp_w?>Y*ho_vMT>zv8=M=w|*jbh8=~$ zK}l$TmMBMfZ~l^M|D@H4I-^?WsL>!tT7D>C-EPjZRZ~Ev=TxuH9F+EtO{}vQzmI+e zRgVYMyU;4Ov$rP%<`WLa0o%6MxUBox{o;W%8HlA z^v;4n=^N^qZeLw9uKQpG99GYS1(94&kP=^cY~~dgS5+`0)PI3ALF$m>HxC`J;AhuN z5TeA^An5+Azl7&{;cuB<_n4}w={~1za&TaRqO!8X?pPK*c;E!!Y9T3@!YaB{G}Fp=OH2MIl`SGccwI)j8-H;YpSjrAnPgCajcn7Pqn z86d*GZ_Md}6k**F5z$%{Yu%J7=^zo?g{QT`ZmIZv0-X|g|6va7?eDWUS~slgn12RH-D)7^S?b%jk#X5!S!ro=s!U3mFJD?wWCyU=kH9-SITj5OBR-64 zu0iQ2`oYFAz0$#&(dg*R`&)w=XxwWE@x%zXp^Ds-NV38s>(s^x&Acym)|i$~=_{a=KwN>FsP=zElL4G(U~a&Z<%+aXB1~1F{mFt|I~Bkz@_E zwJukxE;-*5!=uGvk;-RAiNMS$$24%7(lO8B49a#DZG{G7c-QAXT7qr@g%5RKw@yXG zXY$+oIgWWgBi{wxe$}JW)5T73@y}Rx3~e@`(mtR^57nY`A*U;}<{mRRetQhs-=stL zwWK5Zle?H_y*8Nk^>%9;UMopgN?4zpNW}l<2n^P88J!^6oh}%GnAPujomOnMAp^9^JKrg@wgob5T*b;ZA~wIeFgKe&#Y9ilkARcIse=wjo^& zdP|$ojBXC**YExlWXz}){C&vELe)e~Qv7X^A4@8ZyzM;po(J8JT3WX8dT$1a@!}tu z-mm_+Edh#IYDHV;4O3*I5PR!xXB-Y{F<|Qu7oj`B?M+QeqjrN5lUW?MXZ1+4A1P_p zZ-@@^3i<_1-{Rt6SC{VvX4d!FEl-WGj~_+6f^W$-j;!9{Eme5;TiP-zw;YdksnHu{ zm~amR59sB1d?msM4OMEkS#^mueQ|4()Y$h;PQ7Fbet=8_HzvBGDY~b3PSglxt=Fb{ zALJYc%tt7JW&_7peqwiD1WUgO0YlY*&3elxpY%6p9Ou1TGbQ#y6vb}4)oS2TOGyHQ zHi-YdHQtLS4b?Jm_8OsBTP2eK(Ae6bQoIDo=I+4qW4Rcmo;Txa%7`zHiT-|#pYRXW zPL6$97-*(bt9{n0*YW;)!}`(8jtepkf(1*+Ya5CM;$!{Lxwzcux83XGS{U*hVP7p! zsKN)p3E+UZZlxULbjBYfFW*YRp*r39hCh`Ujbm~{H~b7^B*1uyE9~&q2EhsNE7$l_!<{Ots4My2+EE;5$4s!*MVrsx>yxN2fme&CpUfD zwN9okJH?bv0-PqJ82Z>2fhfB1N(bVZ16}iQ>fs=xFzwOG2EIYmryq~&%F(@aqnavZ%-$0>Fe9=CJ2gq>uQq^fnHba^KI|@7OoxtEJ`K8r`miNmu;_oOgXrx~QZ^ zTiu&ozgbXecF1AIMEx5J;J>KRTXS#XK`VO!8zAM-KE5@Z4$m7!aXCUNh0Wuuan@Xm zScwk1MaJ}CDz4(r{%NgMMFh|X>yP2=FBF`d;zEcdkBL_U>N3@e=WIjsO1B>zgNuSf z2tN<>7Kl`EClOvH?&>+d8k(x7x(qX}+O5je>D0Dw$1gnxmd&W)>8hud2H0dzD%~O@+;BvW}lz!`rKbI8<}JJtVtMKyx&f9&aRaND!mUuL_i*W z4D$<&Td>qhs^0C^+|(Y-hBX-Kj_d*_tg;&%J#NedWjxW6ON=JCgL$GMb4LIKjLSuN z%%Uun+x=C;pH+Foh3%h-@|#HuvD>FPyI=iJ+W}zbHxuW&Zy-Af2MuQTM@8ZZBJREVvVUU3M1TP zB+V}^m8~A}3jIT>M&h%o(i}Yx6GamR9q$fwd1dvl?cUCh&XoQs?%515I!L82VYJMd zE##&D8JH2PrT%%EJ3*OKBVI$2B<#e{StYu^3eNe+EPz$Egf`vShgO-XEnBTv-fH&C z7a6*_v5<`zywWrr^1J*Br>Swb>P#`k&*VZK&OKoTeMQy?pJ<{>6|)kEy2y53Z7XY1 zPbZl>6o&L0#8}fuTW&d%v$GV#IX+H!Hvf(%n;baEXm+^>w?6w5d+mJ*?M_mW!?fIZ zYVzK2G~yym%2h4do%u%_^viOb^8>t|SWb?e;v`;j5Z|5_mwbdZ8LN84HrpyVuh)X-9unFbJnN0-&~SC%>5W<5h=`Lm|nCKT9bw7GjxBl={FGh zx*6muO=QS|itH&i!l0-SCD{{<6+-+gI5e^CHg%W_9kTnXyas%~ra{}Nxahb@(W6V! zXe_Ki52)sY#)ZJV;-SpX_vM4UD1J!aMG6$T7M_Q13A;Ad_!ws^Z>P2Uv&TMVt_^_o z$?Q&-pY-7vjy`NzK3}(bIbQRPj&P*(-kX@N9j_T`H7>_PeToibd@Nu^7}nLZ-`6!X z#V>=6qtM_lOA`Q+zT~wO=XoTI5-wL%k))g27HG4Sa>hPk;6LJ*ZOyUp#(qgNH6dj?_W~(N~|+}F<|;w z^X8f|+3fWjv=l>4t@)5eM!UR*{%bq%FC2qI)}&HrwYJM|Q;*v!(qD?o-gPsKMW6`J ziINVDJ3zU(B>?-!5= zJ>H$*v!-8NOBzgKVMvNBaQEFVtsn(T#>VX}2T_UMEV?BML3^%j1s9lB#8W#4B1MK< ze6(s$Eb7rLuR@*!k-^z-dT&0%Ot*9B@s5G^-5V5#wMO&IRQ2A3tk#Ntc8D`?N{>tS zG)1K%Lgox9V@DW6+Aw?iS;ok=pF4>Ew(f03_GLIDSiZSte_6>~e*o~V zDU91B>SQHrK|4TK=%k6~+^mbQ@-JJl)dMld43_Ae2J!)`^(F@@4rbtZ1#M7E$e0 zHD>$xbtN#d1yZ1mF~<$L=kt(&t*y)eG(%xf*Z&FyDCP^5Ll%QI~#WWk1ig{cqN zq*jsx|L{zW{&?2}b{lrXh2ywbx&eRTatu=A z4e5AK#zg0hI{}VKGAms@i^V^|t4h8LUs(rq$5jXVARUOGtK2s|4huVKh#%)eY9 zMcx&I@uj+6NgZqt&80hxU{gg!zn5G7#;@^|+!?>YG=!tD5XP^)th&0o+{B^NbXvj} z-j>`oFfWQ(Bf`V^0IQ*!Zix(KSMlOlM_k-ErI{bH6qiScDI6TwaX|QuPnil-^E~10 zlUg3&m96c5UeF$cPE;MCZ$(N;d!GK{jGRS{=D7XdT5f`Q!*g`s8ZvA98H{@uAnwLa z_m}`Gf)i;;k9K!XXQ$SRo`SM>A&e-A&j-D0 zSbBF(igkC*l#{zPlBD%PHK0N5EFMttHqK-7yKcl`j)4bXD5ljAi)_LI zcOL*y5^#Rl(%wNs*&)rhmMMm}ZgGBI!2Gz=`_RU4biX{UIC14yI!N(oCVZzlcK`O5 zlDp%M%ouzS!(~PJ8f)D)9eQ3s3q8+-b_*$_;Uf_CI8;n`gee;Lq{TU`Vn8{LC6=kq z!tInK!78U!PfI7-Zy%{kxEJ?u1h!V12FgPi`J^yLdiAl@J$!4z{lu_aW^#&!oOcQ5e9$xI;Z6Bp)sp{TuKi}lmP zt^NK|NnYMjYN(gj`q^elC>}Qe(+W6PmDSvN@q_qa1nASD>DbuV)QW&Yu0VrWMvd%f zVg?0ZIQX7MW_9AUEm?YGkqjYnM{#<=zK`M7yMBtv21 zuI?8jaWh0z0>xjF<^rBB#A6z(!89O+z_MHdB?B|_^OKW|YDF(_G$zQ>Xt(SYui#Dr zI_{%=_^7|Et!)Jk0f9Hthp2ikF2>)Ya^lGcHi9Y=W*R2*lN;RW+xQ4FwS@{w6w%W` z-)p*M&?EVx>lgUhe1PlQdEnQosH<~x%`Mi-eE~jzf~m94NW{k(A@=qh5zgYaz9Et; zI3kF~g0)uvj_OUoL;W*tBFGtJ<9HTR+wqZN;uof1HIx^pP z3+JIsABibeJHeg>IrFE{$73#szYF=W(}gT3;OU26c7iyFZOqTs(vs3_RfA z-aM!|;X*=ETew=NM2mmtbsUejteSh0`bPZy8HSc}XVs$yYqF$*5wxRmCQ1XB$1;8K zu_y~-j-u{`M{LTkPs4MC>grU$>~qJjoZ1Mm89C!Jdnakv;BJ@d##DqA%nIy??PjT( zlgg|qdqKq8fY>e$&fL{LoZC0SzsLxbmbA*avQj;I3BzRg><)!GHqA4oF26b!+O?37 z##R=pR*Bo#K+aV?k;u!M*hsfBNUrQ8`j+RhF%7ENpX$8Qj{Ou8k#W|VKleTa?=5({ zn`?n7Shl!ja)re5qk?n7WxZQ3r2WJFxnX_+qfp8m#@x4RHE_t0pP#?Kr?687c*hLC zM~)xo)X;d}Q_z>#*;Q^^neCQ+(Pmx#{8;nO@8Blw>z=Q183~h6RK3a4YOi*GwOF0E zkVs%u8`d#N=RwrpUwx5FjGxni?Ps3yKUdL|CJ5862?;36B1!v9_-5$PAem!vu{us zxnuRuQ0A>-GZD%B-I|t;*!J$Q@%w072VQskR_MwHf?(Clp|iTyLq#(}*+vEM?8O=p z*}0)}r-hj2ohRiNIf{0K?7}PNrpg~{+>;Mu8{En6(seYPdRck9;vM>zS7)2#p%aFLYaUU3}qLrm9A5!azPFn%-#j+z>n?&I%py}<0!y)m?JZ0 zF|9vR1KtN2tREZ*krzsfE$^1R5>?YRI{^Fc<{m~6?oFVwt{w%4Fk(X$)zB$0gLpCJH0%N z-mL5o1r;GZ5j&@KyJ;DsV^Kom?FqZ>V~_cbueb%cwimpYlqXCw(a%8*YpKSmfGtuT zr==!hgKc=$4C0!CA&K;gLW2bYlK^NY0r zMkCc>RJrR8^vLhS+iO?Txh)W$)ZP5fGa9^@Yn87s(@O`{8t!f_kksSLhv>6p_8Qu%Jj% zu}hg?SrBoY-@dKe8&f($`Qd@?D5@H_n24Cv$Ga;IBn3nCOKYL&v%c@N43XB=dRu7v z2e&wu;10_9TJe2aVTsN`jLe=$By0KC;|E#2n{Y%?m>4IwiH(^GKl5tSX1hBpQHer3 zZqhaoM)e#LQD3RBBzj(ZKiOJA03)_=1@Gy$#tpx$cog{e25Lwy~ zHwOBn#jiHmt5{Sx$wBRe9rQnsw^m#~JSQv6+PJrqiH5tH;`|DV=-)62HEv*rKkocgQ0xsB5bk zoHdxrV{54y9Y`#%<6xtYC}Y$JbMDt=D_R&J_@&Zr6-2#%a~JbQh3$^=XdbB)=qps} zJYYBIfInaD6_ij!qaE@VYc_B>|C+!v)A&@y%_`H#X-AQAEJcvMGD+Eo&?o!>g+D2g zX*lS3liChJIuUH5bRHrds$T4m&KcyoD4dq!&+e{=9VL(5;Aqn|h9s!%o@OP{*EaZp z1HMYw76n0go9=>{zjI{Am9`DJ-tKrKGq;D9mgtqm#Makg#sd6L@k*zWM;qOm;TW!X z5lr;@t*hu*qD$z;JuvdDhT!Rmc5n)rIRpG7Ry`A=S{>Dd>dt;A#$aSOjp?X}!4%VO z=>4rAJt6;RrKbhL^WPaFV8##9^wI|hXpS>At68HRW@y+tWOBWDxoTl!s@B zM8;^i1(W+z1wKChapSq=SY#Yv5TU`=CQ(_I*sKe(DtBxzflG}e{+`Uwt2H>!$J+-_ zPH4F8ZyQ9}_}cdG34@LiXUkS})q0J`^v))hr2>Oq)vWyk$aw`XKlf9tQ_U9mV!TXee{&zx)Tt^BhT`h?YR`8wZSN zhtSs30p?+;Qi&=-3B^4!})H@T0CeV22 z+kVLyqhTn(KK%;%i=i9ThtZ2$bL>qVT1dSxsP})5K5{q_E<)|t4h~1`$i9X`&!U_b zs2{auKxT$eOhyo!Pw)55b<!8Q+q><98ff!cws=5N-wysl^qgn!>Cy0v)?@E{atoZ?PS1d z3@}C^JCpED5?MCZNEdUA0+zuqH7&hD)Qa+QzaaoYt_*kxc;}~w^J8MAJ?I%zJ6*b zG$@%8xW$jIpB0Xf@Rya1&1cuv1So-=_;L92Z(IQBjV5B3xG*C{ho!Av@?vq^h^1DY z4LF5GGz`8{O%M<2pWY*@-SGBk)M0pT4$i?FfcZVPb|AJggf#bR2U@XYI%Ap7BP%0C_fA!$ z#X7c9?H^M<4>9Z$00aGVcyt2!ha;@D8y^@LSQd|8>I}4a0Q8D~eNTh`vP2;NmHz&Z z(gJHhd;fI=0jMOf^K7G;W9x1Im_EU@8NMNfmV6;H*b)E3^&w#br@fJ10=!#ki#^Yn}V<0znW=%LC!1Ej#uuV2>@l?B4V+^50Uwk5Ut5n6{_*+4hoe z`4tk-d%_OgY{v_R7p`~adxeGTBwpelcsh^>#tyHPf!y95DM63;MwH*qK^eQ&;0g`b z-zT|RAmcii-I#+nw!FW8MB#lc}Yp?46W|-~c*ug`-7J(T5Fj z>jI`f%AFFznbdS-*flkzT;9NK7qlP&6sz@bxJR!ozD9gk5)!L8MvCxoL+iC1vaN$G zOen4lQ1{9Y%%5YKy<2v~OiVW2p@$cQ(Gt4{M~krT59^f)33H(}rK)QK+ci!!VnmAq z$x%1Lf73(WNgZJXz&dK;4`^BQFrL=_vBStlZr^c){BA@^GSa-)-TX3~P8SqOGExt^v*iX)Pi}|i-qfGs>CH|#z5RowY|k=lX-T-0 zh~~?Fi6&5(WR}EDs(!v)W1G^TO<9;g?BoC;HI|oM2Yee)){>eL zm|lY(4pg0~{Vo}efwEqmNg*|_Nr46`U=SAPu08J#nS5y1 z)!lx-d_Xz4L3TJ(7hC*8;}hPPndieAc#yV6HpTjOZk*}Klo87X8NI^5g5g!|8{^Y? zCP`S%@>A~vO6{^dv0u9D5iait=hw!U+^m>hc|7^v-xzL3%gQ*9%}=sW2QN6SWxTKm zq3jeLs#iE%xr9rmK{-Hv<2&2>FT0oZ^<0YbRqNehk#zFgWDln2XToWW%hrOVf_mad zKaB-85Xe}F1gT^K;7_%~GtCNT8wmof*$9;vIST%92~m+4<86P-`2&8TQj;K6B)X5c ztoRIN7A@h&sb?`X^3gEN>}-I(lhWl~;>E$`%56FbXy zyeCOPCl!H}x+F~uKbh&sZ677N4aHn{BQIe)blA{er73YNh>0^w350FI zL*aL>yqJv6(@si4N}18QmR^a<+B<)G z9T%6?)g7a7r%)%{LG5Hvc|gkFn?5LBM?3H0?aO``IioB!AT6wqMY&g+Tbiv!Nw}&* zvRQi?&m@y$of*M?&8=XvVEM6$v4>HjPLNLdmrb~;h&VNM6y{%a$fAWxjR!0gkuZE$ z$=;h(Wp?8e4MM;$S->jfpngXzLepV->_gk@+yVNn);Eim!woAndC*Sj%|{k>&v z?Tm>2H}Xo^OK!CyX}PmU0j{nfY4-g;MCcjwEvcOwc+2&_zo+JaKr`h2XP0&;2q~4n zmDT!}>1L;3Ed*;?SXn+tx?fL=xBDb#&+#Q!T0Kp%Q8&Oom#FfWu0I>nSc6K@zCa2A z0_3hAi?hO{92`3_e}N$>DhR<}1eo_J!@ZIc1~F{GP!e?6S)Z&kbM1vi7HzbQ8&4J) z%yPerd$-a~17sS&uM!oiE(?1IuRF#~ZeU_RN*kH!@S$WpbO_oSDas@<{AAp&k|x!) z%adko1i$V^APaCcpxFn-SdZA>FJeZ$a40=?uOo?3xsb9I1lrcGc?l!%&uF

+Lq47`z+2e0*hBG;QmTaMF>EY1sD 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 j>~TK|_qKA03d8NaX&@t^C|)FL@a4Y%+j4T} literal 0 HcmV?d00001 diff --git a/frontend/viewer/comment-ui-initial.png b/frontend/viewer/comment-ui-initial.png new file mode 100644 index 0000000000000000000000000000000000000000..c2410a8e36b05e640be4c39d4627aaf1c4980fbc GIT binary patch literal 68955 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 z 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 literal 0 HcmV?d00001 diff --git a/frontend/viewer/src/lib/entry-editor/CommentDialog.svelte b/frontend/viewer/src/lib/entry-editor/CommentDialog.svelte new file mode 100644 index 0000000000..94123586f1 --- /dev/null +++ b/frontend/viewer/src/lib/entry-editor/CommentDialog.svelte @@ -0,0 +1,244 @@ + + + open, onOpenChange}> + + + {title} + + {$t`Start a thread, reply to existing threads, or edit comments.`} + + + +
+
+ +