From eca709e13c7e2d456d8e38a027801a83e3917f24 Mon Sep 17 00:00:00 2001 From: Pedro Iniguez Date: Sun, 23 Aug 2026 10:48:17 -0500 Subject: [PATCH 001/172] feat: external resource support for media-server items (#1523 rebased onto develop) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squash of Hirobreak's PR #1523 (29 commits) replayed onto current develop — the original branch is from a fork with maintainer edits disabled and had diverged 70 commits from its July base, so per-commit rebase was not viable. Conflict-resolution decisions: - The integration services the PR moved into Shared/ (Jellyfin + ABS connection services, IntegrationError) were grafted onto develop's newer store-based rewrites at their new homes — develop's implementations win, with the PR's deltas re-applied: public framework surface, the manualConnection/useConnection pin for the sync engine, deviceIdentifier, and the new fetchItem/updateItemProgress/updateItemsFromJellyfin endpoints (routed through develop's send()/validateAuthenticatedResponse so the session-expiry re-auth mapping applies to them too). - Server-GUID capture (the cross-device hostId identity) now happens on ALL sign-in paths: Jellyfin password AND Quick Connect (getPublicSystemInfo.id), ABS password login (server.id), always preserving a previously captured id. - The browser-SSO stack develop added (WebAuthenticating, OIDC flow, PKCE) is guarded iOS-only — it cannot compile for watchOS and the watch never signs in by itself. Its window lookup goes through a dynamic sharedApplication read because BookPlayerKit compiles extension-safe. - The app-layer helper closure the moved services depend on (IntegrationConnectionStore, IntegrationConnectionPayload, IntegrationHTTPClient, WebAuthenticating, PKCE) moved to Shared/Integrations with framework-target membership (both Kits). - The PR's SPM version bumps (jellyfin-sdk 0.6, Kingfisher 8) were dropped in favor of develop's existing pins — nothing in the PR requires them. - Localizations union-merged; develop's wording wins on duplicated keys. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 507 ++++++++++--- .../xcshareddata/WorkspaceSettings.xcsettings | 5 + .../xcshareddata/swiftpm/Package.resolved | 6 +- BookPlayer/AppDelegate.swift | 13 +- .../AudiobookShelfRootView.swift | 38 +- .../AudiobookShelfLibraryView.swift | 1 + .../AudiobookShelfLibraryViewModel.swift | 99 ++- .../AudiobookShelfAudiobookDetailsView.swift | 9 +- ...iobookShelfAudiobookDetailsViewModel.swift | 55 +- .../AudiobookShelfLibraryGridItemView.swift | 4 +- .../Network/AudiobookShelfLibrary.swift | 29 - BookPlayer/Base.lproj/Localizable.strings | 27 +- BookPlayer/Coordinators/MainCoordinator.swift | 3 + .../Generated/AutoMockable.generated.swift | 191 +++++ .../ItemDetailsHardcoverSectionView.swift | 33 +- .../Hardcover/Network/HardcoverService.swift | 243 +++++-- .../ExternalSource/ExternalImportView.swift | 125 ++++ .../ExternalImportViewModel.swift | 43 ++ BookPlayer/Import/ImportManager.swift | 32 +- BookPlayer/Info.plist | 156 ++-- .../JellyfinConnectionFormViewModel.swift | 23 + BookPlayer/Jellyfin/JellyfinRootView.swift | 148 ++-- .../JellyfinAudiobookDetailsView.swift | 9 +- .../JellyfinAudiobookDetailsViewModel.swift | 98 ++- .../JellyfinLibraryGridItemView.swift | 4 +- .../GridLayout/JellyfinLibraryGridView.swift | 178 +++++ .../Library Screen/JellyfinLibraryItem.swift | 87 --- .../Library Screen/JellyfinLibraryView.swift | 2 +- .../JellyfinLibraryViewModel.swift | 257 ++++++- .../Library/ItemDetails/ItemDetailsView.swift | 74 ++ .../ItemDetails/ItemDetailsViewModel.swift | 72 +- .../Library/ItemList/ItemListView.swift | 19 +- .../Library/ItemList/ItemListViewModel.swift | 85 ++- .../Library/ItemList/LibraryRootView.swift | 42 +- .../Library/ItemList/Views/BookView.swift | 42 +- BookPlayer/MainView.swift | 20 +- .../IntegrationLibraryViewModelProtocol.swift | 13 +- .../IntegrationAudiobookDetailsView.swift | 115 ++- .../IntegrationLibraryGridView.swift | 6 +- .../IntegrationLibraryView.swift | 88 ++- .../MediaServersView.swift | 1 + BookPlayer/Player/PlayerLoaderService.swift | 36 +- BookPlayer/Player/PlayerManager.swift | 190 ++++- BookPlayer/Player/PlayerManagerProtocol.swift | 4 +- .../Player/ViewModels/PlayerViewModel.swift | 5 +- .../Player/Views/Chapters/ChaptersView.swift | 2 + .../Player/Views/DynamicWaveLoadingView.swift | 70 ++ BookPlayer/Player/Views/PlayerView.swift | 9 + .../Account/AccountPasskeySectionView.swift | 2 +- .../Account/AccountPerksSectionView.swift | 8 +- .../CompleteAccount/CompleteAccountView.swift | 9 +- .../CompleteAccount/SyncInvitationCard.swift | 95 +++ .../Profile/Login/ExternalSyncInfoView.swift | 106 +++ BookPlayer/Profile/Login/LoginView.swift | 2 +- .../Profile/ConcurrentSyncTasksView.swift | 139 ++++ .../Profile/ProfileCardSectionView.swift | 2 +- .../Profile/Profile/ProfileScreen.swift | 8 +- .../Profile/ProfileSyncTasksSectionView.swift | 28 +- BookPlayer/Profile/Profile/ProfileView.swift | 16 +- .../Profile/Profile/QueuedSyncTasksView.swift | 47 +- .../Profile/Views/ProfileCardView.swift | 4 + .../Profile/Views/QueuedTasksView.swift | 100 +++ .../Profile/Views/SubscriptionPillView.swift | 27 + .../Support/SupportProfileView.swift | 6 +- BookPlayer/Services/CarPlayManager.swift | 4 + .../GlobalSpeedSectionView.swift | 10 +- .../SettingsIntegrationsSectionView.swift | 2 +- .../SettingsCompleteAccountView.swift | 6 +- BookPlayer/Settings/SettingsView.swift | 2 + BookPlayer/Utils/AppServices.swift | 38 +- BookPlayer/Utils/CoreServices.swift | 1 + .../Extensions/Environment+BookPlayer.swift | 1 + .../Extensions/Notification+BookPlayer.swift | 3 + BookPlayer/Utils/PlayerState.swift | 11 +- BookPlayer/ar.lproj/Localizable.strings | 19 + BookPlayer/ca.lproj/Localizable.strings | 19 + BookPlayer/cs.lproj/Localizable.strings | 19 + BookPlayer/da.lproj/Localizable.strings | 19 + BookPlayer/de.lproj/Localizable.strings | 20 + BookPlayer/el.lproj/Localizable.strings | 19 + BookPlayer/en.lproj/Localizable.strings | 36 +- BookPlayer/es.lproj/Localizable.strings | 20 + BookPlayer/fi.lproj/Localizable.strings | 19 + BookPlayer/fr.lproj/Localizable.strings | 19 + BookPlayer/hu.lproj/Localizable.strings | 19 + BookPlayer/it.lproj/Localizable.strings | 19 + BookPlayer/ja.lproj/Localizable.strings | 19 + BookPlayer/nb.lproj/Localizable.strings | 19 + BookPlayer/nl.lproj/Localizable.strings | 19 + BookPlayer/pl.lproj/Localizable.strings | 19 + BookPlayer/pt-BR.lproj/Localizable.strings | 20 + BookPlayer/pt-PT.lproj/Localizable.strings | 20 + BookPlayer/ro.lproj/Localizable.strings | 19 + BookPlayer/ru.lproj/Localizable.strings | 19 + BookPlayer/sk-SK.lproj/Localizable.strings | 19 + BookPlayer/sv.lproj/Localizable.strings | 19 + BookPlayer/tr.lproj/Localizable.strings | 19 + BookPlayer/uk.lproj/Localizable.strings | 19 + BookPlayer/zh-Hans.lproj/Localizable.strings | 19 + .../Mocks/AccountServiceMock.swift | 4 + BookPlayerTests/Mocks/PlayableItemMock.swift | 2 + BookPlayerTests/PlayableItemTests.swift | 2 + BookPlayerTests/PlayerManagerTests.swift | 4 + .../PreferencesSyncServiceTests.swift | 3 + .../Services/SyncTasksStorageTests.swift | 145 +++- BookPlayerTests/SharedWidgetStoreTests.swift | 1 + .../ViewModels/ChaptersViewModelTests.swift | 1 + BookPlayerWatch/CoreServices.swift | 8 + BookPlayerWatch/ExtensionDelegate.swift | 27 +- .../LocalPlayback/Player/PlayerManager.swift | 23 +- IAP-Configuration.storekit | 185 ++++- .../AudiobookShelfAudiobookDetailsData.swift | 42 +- .../AudiobookShelfLibraryItem.swift | 228 +++--- .../AudiobookShelfLibraryLevelData.swift | 23 +- .../AudiobookShelfConnectionData.swift | 39 +- .../AudiobookShelfConnectionService.swift | 134 +++- .../Network/AudiobookShelfLibrary.swift | 29 + .../Network/AudiobookShelfOIDCFlow.swift | 6 +- .../ExternalResource+CoreDataClass.swift | 36 + .../ExternalResource+CoreDataProperties.swift | 72 ++ .../LibraryItem+CoreDataProperties.swift | 24 + .../BookPlayer.xcdatamodeld/.xccurrentversion | 2 +- .../Audiobook Player 12.xcdatamodel/contents | 109 +++ Shared/CoreData/CoreDataStack.swift | 36 +- .../Lightweight-Models/PlayableChapter.swift | 10 +- .../Lightweight-Models/PlayableItem.swift | 2 +- .../SimpleExternalResource.swift | 59 ++ .../SimpleLibraryItem.swift | 9 +- Shared/CoreData/Migrations/DBVersion.swift | 6 +- .../xcmapping.xml | 666 +++++++++--------- .../xcmapping.xml | 607 ++++++++++++++++ .../Notification+BookPlayerKit.swift | 2 +- .../IntegrationConnectionPayload.swift | 1 - .../IntegrationConnectionStore.swift | 1 - .../IntegrationDetailsViewModelProtocol.swift | 18 +- .../Integrations}/IntegrationError.swift | 8 +- .../Integrations}/IntegrationHTTPClient.swift | 10 +- .../IntegrationLibraryItemProtocol.swift | 2 +- .../Auth => Shared/Integrations}/PKCE.swift | 1 - .../Integrations}/WebAuthenticating.swift | 26 +- .../JellyfinAudiobookDetailsData.swift | 73 ++ Shared/Jellyfin/JellyfinLibraryItem.swift | 141 ++++ .../Network/JellyfinConnectionData.swift | 35 +- .../Network/JellyfinConnectionService.swift | 137 +++- Shared/Jellyfin/Network/JellyfinError.swift | 49 ++ Shared/Network/NetworkClient.swift | 16 +- Shared/Services/Account/AccountService.swift | 60 +- Shared/Services/Account/PricingModel.swift | 10 + .../ConcurrentSync/AsyncOperation.swift | 48 ++ .../ConcurrentSync/ConcurrenceService.swift | 432 ++++++++++++ .../ConcurrentSync/ConcurrentSyncTask.swift | 45 ++ .../ConcurrentTaskProgressMonitor.swift | 73 ++ .../ConcurrentTasksCountService.swift | 26 + .../ConcurrentTasksRepository.swift | 466 ++++++++++++ .../ExternalUpdateProgressOperation.swift | 93 +++ .../ConcurrentSync/FileUploadOperation.swift | 152 ++++ Shared/Services/LibraryService+Sync.swift | 162 ++++- Shared/Services/LibraryService.swift | 282 +++++++- Shared/Services/PlaybackService.swift | 50 +- Shared/Services/Sync/ApiResponse.swift | 7 + Shared/Services/Sync/LibraryAPI.swift | 38 +- .../Sync/LibraryItemSyncOperation.swift | 212 ++---- .../Sync/Model/RemoteFileURLResponse.swift | 4 +- .../Sync/Model/SyncableExternalResource.swift | 59 ++ Shared/Services/Sync/Model/SyncableItem.swift | 6 + .../Sync/Model/UploadItemResponse.swift | 2 +- Shared/Services/Sync/SyncJobScheduler.swift | 345 +++------ Shared/Services/Sync/SyncService.swift | 173 ++++- .../Services/Sync/SyncTasksCountService.swift | 1 - Shared/Services/Sync/SyncTasksStorage.swift | 302 -------- Shared/SwiftData/MigrationPlan.swift | 145 +++- .../Models/SchemaV3SyncTasksModels.swift | 429 +++++++++++ Shared/SwiftData/Models/SyncJobType.swift | 15 + Shared/SwiftData/Models/SyncTasksModels.swift | 27 +- .../SwiftDataModels+Extensions.swift | 95 +++ Shared/SwiftData/TasksDataManager.swift | 243 +++++-- 176 files changed, 9455 insertions(+), 2102 deletions(-) create mode 100644 BookPlayer.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 BookPlayer/AudiobookShelf/Network/AudiobookShelfLibrary.swift create mode 100644 BookPlayer/Import/ExternalSource/ExternalImportView.swift create mode 100644 BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift create mode 100644 BookPlayer/Jellyfin/Connection Screen/JellyfinConnectionFormViewModel.swift create mode 100644 BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift delete mode 100644 BookPlayer/Jellyfin/Library Screen/JellyfinLibraryItem.swift create mode 100644 BookPlayer/Player/Views/DynamicWaveLoadingView.swift create mode 100644 BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift create mode 100644 BookPlayer/Profile/Login/ExternalSyncInfoView.swift create mode 100644 BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift create mode 100644 BookPlayer/Profile/Profile/Views/QueuedTasksView.swift create mode 100644 BookPlayer/Profile/Profile/Views/SubscriptionPillView.swift rename {BookPlayer/AudiobookShelf/Library Screen/Details => Shared/AudiobookShelf}/AudiobookShelfAudiobookDetailsData.swift (80%) rename {BookPlayer/AudiobookShelf/Library Screen => Shared/AudiobookShelf}/AudiobookShelfLibraryItem.swift (57%) rename {BookPlayer/AudiobookShelf/Library Screen => Shared/AudiobookShelf}/AudiobookShelfLibraryLevelData.swift (66%) rename {BookPlayer => Shared}/AudiobookShelf/Network/AudiobookShelfConnectionData.swift (62%) rename {BookPlayer => Shared}/AudiobookShelf/Network/AudiobookShelfConnectionService.swift (85%) create mode 100644 Shared/AudiobookShelf/Network/AudiobookShelfLibrary.swift rename {BookPlayer => Shared}/AudiobookShelf/Network/AudiobookShelfOIDCFlow.swift (98%) create mode 100644 Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift create mode 100644 Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift create mode 100644 Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel/contents create mode 100644 Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift create mode 100644 Shared/CoreData/Migrations/MappingModel_v11_to_v12.xcmappingmodel/xcmapping.xml rename {BookPlayer/MediaServerIntegration/Connection => Shared/Integrations}/IntegrationConnectionPayload.swift (98%) rename {BookPlayer/MediaServerIntegration/Connection => Shared/Integrations}/IntegrationConnectionStore.swift (99%) rename {BookPlayer/MediaServerIntegration => Shared/Integrations}/IntegrationDetailsViewModelProtocol.swift (67%) rename {BookPlayer/MediaServerIntegration => Shared/Integrations}/IntegrationError.swift (96%) rename {BookPlayer/MediaServerIntegration/Auth => Shared/Integrations}/IntegrationHTTPClient.swift (90%) rename {BookPlayer/MediaServerIntegration => Shared/Integrations}/IntegrationLibraryItemProtocol.swift (82%) rename {BookPlayer/MediaServerIntegration/Auth => Shared/Integrations}/PKCE.swift (99%) rename {BookPlayer/MediaServerIntegration/Auth => Shared/Integrations}/WebAuthenticating.swift (90%) create mode 100644 Shared/Jellyfin/JellyfinAudiobookDetailsData.swift create mode 100644 Shared/Jellyfin/JellyfinLibraryItem.swift rename {BookPlayer => Shared}/Jellyfin/Network/JellyfinConnectionData.swift (65%) rename {BookPlayer => Shared}/Jellyfin/Network/JellyfinConnectionService.swift (84%) create mode 100644 Shared/Jellyfin/Network/JellyfinError.swift create mode 100644 Shared/Services/ConcurrentSync/AsyncOperation.swift create mode 100644 Shared/Services/ConcurrentSync/ConcurrenceService.swift create mode 100644 Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift create mode 100644 Shared/Services/ConcurrentSync/ConcurrentTaskProgressMonitor.swift create mode 100644 Shared/Services/ConcurrentSync/ConcurrentTasksCountService.swift create mode 100644 Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift create mode 100644 Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift create mode 100644 Shared/Services/ConcurrentSync/FileUploadOperation.swift create mode 100644 Shared/Services/Sync/Model/SyncableExternalResource.swift delete mode 100644 Shared/Services/Sync/SyncTasksStorage.swift create mode 100644 Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 3a744ec3b..06de2ebe1 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -7,9 +7,8 @@ objects = { /* Begin PBXBuildFile section */ - 0199296D1E63EE13FC3558E6 /* WebAuthenticating.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */; }; - 0235B7EE8FA51C49AFBBBE71 /* IntegrationConnectionPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A8030B619D18CA088DAA40A /* IntegrationConnectionPayload.swift */; }; 02C668174D24A70B4CD6FCB1 /* IntegrationConnectionStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BB56618B150DCAA2CA5FB /* IntegrationConnectionStoreTests.swift */; }; + 058C840BB5E944B2899BC769 /* ReviewPromptServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F83542FF9A240EC87E55AC8 /* ReviewPromptServiceTests.swift */; }; 07416E5AD384927D90BFB6EE /* PasskeyCreatingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C084D4BC05BF6B413C86C6F0 /* PasskeyCreatingView.swift */; }; 0CEC6B48350FC9C0A0B7D1C0 /* SyncTasksStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700DFD61111AC10253D6EBAA /* SyncTasksStorageTests.swift */; }; 0EF52614EF6770D09CA81CE4 /* IntegrationConnectedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C564A7BDE3A2D98E02BF8B /* IntegrationConnectedView.swift */; }; @@ -17,6 +16,7 @@ 17239057BBE31E405AFFBBCD /* IntegrationServerFoundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3511F737DCDEE7A12B713AE /* IntegrationServerFoundView.swift */; }; 18D0AD99D1AAA10976F75C11 /* BPNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E55F466D61AE62A69DE4D371 /* BPNavigation.swift */; }; 1A26F7D72FFD6D625A313FC5 /* AudioMetadataServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC40E520F644AFA46DAD76B0 /* AudioMetadataServiceTests.swift */; }; + 2260D77EDD8BEEB0D433CD18 /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; 232F1DA50BB33EB5A629B8B7 /* PlayableChapterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 689E2BCD29DC1D9253949A53 /* PlayableChapterTests.swift */; }; 2B283D695990DA665D1661CC /* mp3_NO_chapters.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 12EDB8401F38342155CBBC91 /* mp3_NO_chapters.mp3 */; }; 2D7D5973F598D517CBCCE0ED /* PreferencesSyncService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4D25EF2A5FFF30CF12F2C21 /* PreferencesSyncService.swift */; }; @@ -40,7 +40,6 @@ 3F7B64492E0FB2C100299D97 /* InsertUserBookData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F7B64482E0FB2C100299D97 /* InsertUserBookData.swift */; }; 3FA43BF82E110B4900DF9B1F /* SimpleHardcoverBook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FA43BF72E110B4400DF9B1F /* SimpleHardcoverBook.swift */; }; 3FA43BF92E110B4900DF9B1F /* SimpleHardcoverBook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FA43BF72E110B4400DF9B1F /* SimpleHardcoverBook.swift */; }; - 3FDACF42BAD03DBFA7AD918B /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; 3FF5BA662E10EA6F00B82BCC /* HardcoverBook+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FF5BA652E10EA5F00B82BCC /* HardcoverBook+CoreDataProperties.swift */; }; 3FF5BA672E10EA6F00B82BCC /* HardcoverBook+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FF5BA652E10EA5F00B82BCC /* HardcoverBook+CoreDataProperties.swift */; }; 3FF5BA692E10EA8000B82BCC /* HardcoverBook+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FF5BA682E10EA8000B82BCC /* HardcoverBook+CoreDataClass.swift */; }; @@ -286,27 +285,21 @@ 466E4B7066F10717C8CE7B3E /* LibraryServiceReloadChaptersTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A11C418B028982CF431C589F /* LibraryServiceReloadChaptersTests.swift */; }; 4689C06D2D270A7100D6C169 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 419B375423B8D5A500128A8F /* Localizable.strings */; }; 46EEDDC92D23154C0063811F /* VoiceOverService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69343D322133844D000C425E /* VoiceOverService.swift */; }; - 4E6F3810544774F70335675E /* PKCE.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E85F55E03D1981F097661C /* PKCE.swift */; }; - 5126F121258E9F18009965DC /* URL+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126F120258E9F18009965DC /* URL+BookPlayer.swift */; }; 5126F122258E9F18009965DC /* URL+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126F120258E9F18009965DC /* URL+BookPlayer.swift */; }; 5126F123258E9F18009965DC /* URL+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126F120258E9F18009965DC /* URL+BookPlayer.swift */; }; 5163037679ED3EE0D1866A8F /* AppServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FC8B923A5506F865253B97C /* AppServices.swift */; }; 52AA441379FD94339FEECB55 /* SortPreferencesResolving.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */; }; 59384C1A0B33B9EB42AE4C75 /* ChaptersViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F496A2BF4CBFFC745C453D42 /* ChaptersViewModelTests.swift */; }; + 5A589702CFB4A8F8EC55AC3F /* SortIntegrationHarness.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AF448F75392B02FC5451289 /* SortIntegrationHarness.swift */; }; 5A9506FC8DAB858289E0EF89 /* IntegrationServerAddressTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 623E13D0C96857091397B5EF /* IntegrationServerAddressTests.swift */; }; + 5B1559A45658B195521CC454 /* SyncResponseFixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C6581B92E4D292C2AFC361A /* SyncResponseFixtures.swift */; }; 5E20E8B93A65A58C51F1FF52 /* PKCETests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5A989BA90E16F60920A1DB0 /* PKCETests.swift */; }; + 5E699DCEB4EB06CB0A18A770 /* IntegrationConnectionPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A8030B619D18CA088DAA40A /* IntegrationConnectionPayload.swift */; }; 62793611272CBE910097837D /* ImportFileItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4163E3102148606600072AA2 /* ImportFileItem.swift */; }; 62AAE22D274AA6DE001EB9FF /* LibraryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62AAE22B274AA3EB001EB9FF /* LibraryService.swift */; }; 62AAE22E274AA6DE001EB9FF /* LibraryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62AAE22B274AA3EB001EB9FF /* LibraryService.swift */; }; 62AAE231274ABB5D001EB9FF /* LibraryServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62AAE230274ABB5D001EB9FF /* LibraryServiceTests.swift */; }; - 689DBBD518EB5F7760ED1518 /* QueryTimeSortRefactorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C78CCAAFEB5A9D78AA108EC /* QueryTimeSortRefactorTests.swift */; }; - 5B1559A45658B195521CC454 /* SyncResponseFixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C6581B92E4D292C2AFC361A /* SyncResponseFixtures.swift */; }; - 5A589702CFB4A8F8EC55AC3F /* SortIntegrationHarness.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AF448F75392B02FC5451289 /* SortIntegrationHarness.swift */; }; - 9DA710A0CC53EEC5F7AF93D3 /* QueryTimeSortSpikeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53AE3D4C955A493470C8EAA9 /* QueryTimeSortSpikeTests.swift */; }; - 759B9B1691932EB7A815CFFF /* SortCharacterizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F448E8BBF01860FC65EB697A /* SortCharacterizationTests.swift */; }; 62CADBA52725BCB200A4A98F /* AVAudioAssetImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 624AB20A2724808600F6A486 /* AVAudioAssetImageDataProvider.swift */; }; - 62CADBA82725BCE800A4A98F /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 62CADBA72725BCE800A4A98F /* Kingfisher */; }; - 62CADBAA2725BCF000A4A98F /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 62CADBA92725BCF000A4A98F /* Kingfisher */; }; 62CADBAB2725C23A00A4A98F /* ArtworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 415460F525E57B4F0085F8D9 /* ArtworkService.swift */; }; 62CADBAE2725FE2900A4A98F /* AVAudioAssetImageDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 624AB20A2724808600F6A486 /* AVAudioAssetImageDataProvider.swift */; }; 62CADBAF2725FE2C00A4A98F /* ArtworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 415460F525E57B4F0085F8D9 /* ArtworkService.swift */; }; @@ -378,12 +371,6 @@ 631C75C92AB92C540013E7E5 /* BPPushPresentationFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 631C75C82AB92C540013E7E5 /* BPPushPresentationFlow.swift */; }; 631C75CC2AB92FA60013E7E5 /* BPModalPresentationFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 631C75CB2AB92FA60013E7E5 /* BPModalPresentationFlow.swift */; }; 632119D72E543973005B3E10 /* ItemListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 632119D62E543973005B3E10 /* ItemListViewModel.swift */; }; - 632132502F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 6321324F2F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel */; }; - 632132512F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 6321324F2F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel */; }; - 632132522F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 6321324F2F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel */; }; - 632132532F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 6321324F2F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel */; }; - 632132542F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 6321324F2F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel */; }; - 632132552F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 6321324F2F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel */; }; 6327E0C62ADB9913004780DC /* DownloadState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FB20EA429A281140021663B /* DownloadState.swift */; }; 6327E0C72ADB9914004780DC /* DownloadState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FB20EA429A281140021663B /* DownloadState.swift */; }; 632941402AEEE739000AD2EE /* CircularView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6329413F2AEEE739000AD2EE /* CircularView.swift */; }; @@ -499,13 +486,7 @@ 638352CE2E67F327009EE79E /* TasksDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638352C72E67F327009EE79E /* TasksDataManager.swift */; }; 638352D02E67F327009EE79E /* SyncTasksModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638352C52E67F327009EE79E /* SyncTasksModels.swift */; }; 638352D12E67F327009EE79E /* SwiftDataModels+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638352C82E67F327009EE79E /* SwiftDataModels+Extensions.swift */; }; - 638487A22EC7722400DF442B /* AudiobookShelfLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879F2EC7722400DF442B /* AudiobookShelfLibrary.swift */; }; - 638487A32EC7722400DF442B /* AudiobookShelfLibraryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879A2EC7722400DF442B /* AudiobookShelfLibraryItem.swift */; }; - 638487A42EC7722400DF442B /* AudiobookShelfConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */; }; - 638487A52EC7722400DF442B /* AudiobookShelfConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879C2EC7722400DF442B /* AudiobookShelfConnectionData.swift */; }; - 638487A72EC7722400DF442B /* AudiobookShelfAudiobookDetailsData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487962EC7722400DF442B /* AudiobookShelfAudiobookDetailsData.swift */; }; 638487B32EC7750100DF442B /* AudiobookShelfConnectionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487AB2EC7750100DF442B /* AudiobookShelfConnectionViewModel.swift */; }; - 638487B72EC7752000DF442B /* AudiobookShelfLibraryLevelData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487B62EC7752000DF442B /* AudiobookShelfLibraryLevelData.swift */; }; 638487BB2EC7764800DF442B /* AudiobookShelfLibraryListItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487B82EC7764800DF442B /* AudiobookShelfLibraryListItemView.swift */; }; 638487BF2EC7765000DF442B /* AudiobookShelfLibraryGridItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487BC2EC7765000DF442B /* AudiobookShelfLibraryGridItemView.swift */; }; 638487C32EC7767000DF442B /* AudiobookShelfLibraryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487C22EC7767000DF442B /* AudiobookShelfLibraryViewModel.swift */; }; @@ -599,8 +580,6 @@ 63C48D522E50AAA1005FBB96 /* AccountPasskeySectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C48D532E50AAA1005FBB96 /* AccountPasskeySectionView.swift */; }; 63C6C2E62B5029BC00FFE0D8 /* SettingsAutolockView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C6C2E52B5029BC00FFE0D8 /* SettingsAutolockView.swift */; }; 63C6C2E82B5029FE00FFE0D8 /* SettingsAutolockViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C6C2E72B5029FE00FFE0D8 /* SettingsAutolockViewModel.swift */; }; - 63C6C30D2B538D8500FFE0D8 /* SyncTasksStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C6C30B2B538B7A00FFE0D8 /* SyncTasksStorage.swift */; }; - 63C6C30E2B538D8600FFE0D8 /* SyncTasksStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C6C30B2B538B7A00FFE0D8 /* SyncTasksStorage.swift */; }; 63C6C3112B54F16800FFE0D8 /* LibraryItemSyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C6C30F2B54F14800FFE0D8 /* LibraryItemSyncOperation.swift */; }; 63C6C3122B54F16800FFE0D8 /* LibraryItemSyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C6C30F2B54F14800FFE0D8 /* LibraryItemSyncOperation.swift */; }; 63C6C3192B5E102200FFE0D8 /* SyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C6C3172B5E0FE700FFE0D8 /* SyncTask.swift */; }; @@ -646,22 +625,22 @@ 63FB9E032E5774A500D1966F /* ListStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63FB9E022E5774A500D1966F /* ListStateManager.swift */; }; 63FCBBBE2DF7404000C50035 /* JellyfinLibraryListItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63FCBBBD2DF7404000C50035 /* JellyfinLibraryListItemView.swift */; }; 66DF1F3E6AFECB623A558F04 /* IntegrationDisconnectedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FDA0B60D7BE4CFE100A612 /* IntegrationDisconnectedView.swift */; }; + 689DBBD518EB5F7760ED1518 /* QueryTimeSortRefactorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C78CCAAFEB5A9D78AA108EC /* QueryTimeSortRefactorTests.swift */; }; 6906A55021720FDF00A9E0B2 /* BookSortServiceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6906A54F21720FDF00A9E0B2 /* BookSortServiceTest.swift */; }; 6906A553217211C600A9E0B2 /* StubFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6906A552217211C600A9E0B2 /* StubFactory.swift */; }; 69343D332133844D000C425E /* VoiceOverService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69343D322133844D000C425E /* VoiceOverService.swift */; }; - FBE2B360883B414695A54628 /* ReviewPromptService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C80A51B636D4C7381529505 /* ReviewPromptService.swift */; }; - 058C840BB5E944B2899BC769 /* ReviewPromptServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F83542FF9A240EC87E55AC8 /* ReviewPromptServiceTests.swift */; }; 69343D36213A07B4000C425E /* VoiceOverServiceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69343D35213A07B4000C425E /* VoiceOverServiceTest.swift */; }; 6C25A0E1ADBF2325CA78E8A4 /* mp3_NO_toc_v23.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 1BA32C89144C68DD64FD0B62 /* mp3_NO_toc_v23.mp3 */; }; 6DF751D96098B1A3224FDF43 /* IntegrationServerAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FFF7B7B6E62B274D230C207 /* IntegrationServerAddress.swift */; }; 6EC082E4BEF0CC2FAA42C0A7 /* mp3_WITH_toc.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 8D3EFD93E6D1E0366A3FD1E9 /* mp3_WITH_toc.mp3 */; }; - 760180C62F243705DE6B3224 /* IntegrationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0D0FA9BA32EDF5F367C757B /* IntegrationError.swift */; }; + 759B9B1691932EB7A815CFFF /* SortCharacterizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F448E8BBF01860FC65EB697A /* SortCharacterizationTests.swift */; }; + 77980C5A9B7CF1A948FE7CF1 /* PKCE.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E85F55E03D1981F097661C /* PKCE.swift */; }; 78D8C50324731BBDF9E9281E /* LibraryOptionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FBF775DDE66D0AA08818D45 /* LibraryOptionsView.swift */; }; 797E853F1A6F9CE2A713FD8B /* m4b_WELLFORMED.m4b in Resources */ = {isa = PBXBuildFile; fileRef = D6F6A0DE6FBE7828D4C7EC9C /* m4b_WELLFORMED.m4b */; }; 7CAD4B67352939D0A1E54A21 /* IntegrationConnectionFormViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3724BB21B1B88177C60BE4D8 /* IntegrationConnectionFormViewModelProtocol.swift */; }; - 81173188169F2573B4F5AA90 /* AudiobookShelfOIDCFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75010F6AB433BBEEB7FA9376 /* AudiobookShelfOIDCFlow.swift */; }; + 82BB1A19497560FC62C4741C /* WebAuthenticating.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */; }; 8322A3C6479B099448C63C47 /* IntegrationLibraryViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E070421575334E1CD85C049 /* IntegrationLibraryViewModelProtocol.swift */; }; - 843575DDF1CEEBC9A2EF015C /* IntegrationConnectionStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587EDC7DEA9D2985635F1161 /* IntegrationConnectionStore.swift */; }; + 89058F6081ECE1258DE9607D /* AudiobookShelfOIDCFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75010F6AB433BBEEB7FA9376 /* AudiobookShelfOIDCFlow.swift */; }; 8A0883CB5B4914B2DCB70A5E /* AudiobookShelfOIDCFlowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC10E1E47E1F6982D8F6A552 /* AudiobookShelfOIDCFlowTests.swift */; }; 8A2A22392CEFEB8E00E73A2D /* AdaptiveVGrid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A2A22382CEFEB8800E73A2D /* AdaptiveVGrid.swift */; }; 8A495CC62CC85D27001B4244 /* JellyfinAPI in Frameworks */ = {isa = PBXBuildFile; productRef = 8A495CC52CC85D27001B4244 /* JellyfinAPI */; }; @@ -674,18 +653,63 @@ 8A9D0D302CD0E074007A924D /* SingleFileDownloadService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9D0D2F2CD0E06F007A924D /* SingleFileDownloadService.swift */; }; 8AAA4F4C2CF1FF8C009D0777 /* MockCoordinatorPresentationFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAA4F4B2CF1FF77009D0777 /* MockCoordinatorPresentationFlow.swift */; }; 8AAD8A4F2CEE3650000A4B4B /* View+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A4E2CEE3650000A4B4B /* View+BookPlayer.swift */; }; - 8AAD8A552CEE884F000A4B4B /* JellyfinConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A542CEE8849000A4B4B /* JellyfinConnectionService.swift */; }; - 8AAD8A572CEE88E5000A4B4B /* JellyfinConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A562CEE88DE000A4B4B /* JellyfinConnectionData.swift */; }; + 8AC2579BAAAAFE0091DA9285 /* PKCE.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22E85F55E03D1981F097661C /* PKCE.swift */; }; 8ADD46222CF29A02002E9C50 /* TextFieldFocused.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD46212CF29A02002E9C50 /* TextFieldFocused.swift */; }; - 8ADD46242CF38F9F002E9C50 /* JellyfinAudiobookDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD46232CF38F91002E9C50 /* JellyfinAudiobookDetailsView.swift */; }; 8ADD46262CF67592002E9C50 /* JellyfinAudiobookDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD46252CF67587002E9C50 /* JellyfinAudiobookDetailsViewModel.swift */; }; 8AE4AAC52CCBA16F00BAA927 /* JellyfinConnectionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AE4AAC42CCBA16F00BAA927 /* JellyfinConnectionViewModel.swift */; }; - 8AF18A332CF0A26200238F8D /* JellyfinLibraryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF18A322CF0A26200238F8D /* JellyfinLibraryItem.swift */; }; 8AF18A3B2CF0E92F00238F8D /* KeychainServiceMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF18A3A2CF0E92800238F8D /* KeychainServiceMock.swift */; }; 9236C57F833C70652BDD1FA3 /* TabEditingEnvironmentKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DDD933F7FDEDC1BF67EC567 /* TabEditingEnvironmentKey.swift */; }; 9305492473601C69B999F588 /* VideoArtworkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCD948B0DFDC349DADE2A3D8 /* VideoArtworkView.swift */; }; 9586CECD8FB418C6CFB0A7DD /* IntegrationLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C407B5BD19D3CF9CC64EC7 /* IntegrationLibraryView.swift */; }; 98BA9BA4D6A94BC8BCCE5F8B /* IntegrationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D9D68F735D2519CDBC18495 /* IntegrationSettingsView.swift */; }; + 990442102F889201007E2A44 /* ExternalSyncInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */; }; + 990442122F88B101007E2A44 /* SyncInvitationCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990442112F88B0FC007E2A44 /* SyncInvitationCard.swift */; }; + 990442142F894DDB007E2A44 /* SubscriptionPillView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */; }; + 990775772FF33BD700E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 990775762FF33BD700E35FAE /* Get */; }; + 990775792FF33BE100E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 990775782FF33BE100E35FAE /* Get */; }; + 9907757C2FF33C0C00E35FAE /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 9907757B2FF33C0C00E35FAE /* Kingfisher */; }; + 9907757E2FF33C1500E35FAE /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 9907757D2FF33C1500E35FAE /* Kingfisher */; }; + 990775802FF33D5300E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 9907757F2FF33D5300E35FAE /* Get */; }; + 990BF7102FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 990BF7112FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 990BF7122FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 990BF7132FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 990BF7142FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 990BF7152FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 9911FBA92F71BD3000DC9A2B /* JellyfinConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A542CEE8849000A4B4B /* JellyfinConnectionService.swift */; }; + 9911FBAC2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */; }; + 9911FBAD2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */; }; + 9911FBAF2F71D03800DC9A2B /* ConcurrenceService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */; }; + 9911FBB02F71D03800DC9A2B /* ConcurrenceService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */; }; + 9911FBB22F71E54C00DC9A2B /* ConcurrentTasksRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */; }; + 9911FBB32F71E54C00DC9A2B /* ConcurrentTasksRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */; }; + 9911FBB52F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */; }; + 9911FBB62F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */; }; + 9911FBB82F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */; }; + 9911FBB92F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */; }; + 9911FBBB2F736C0500DC9A2B /* ConcurrentSyncTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBA2F736BFC00DC9A2B /* ConcurrentSyncTasksView.swift */; }; + 9911FBBE2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */; }; + 9911FBBF2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */; }; + 9911FBC12F7465EA00DC9A2B /* ConcurrentTasksCountService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC02F7465DC00DC9A2B /* ConcurrentTasksCountService.swift */; }; + 9911FBC22F7465EA00DC9A2B /* ConcurrentTasksCountService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC02F7465DC00DC9A2B /* ConcurrentTasksCountService.swift */; }; + 9911FBC42F76122400DC9A2B /* FileUploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */; }; + 9911FBC52F76122400DC9A2B /* FileUploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */; }; + 9911FBC72F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */; }; + 9911FBC82F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */; }; + 9911FBD72F7CACEC00DC9A2B /* QueuedTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */; }; + 992D6E102FA2BD290091849F /* DynamicWaveLoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 992D6E0F2FA2BD230091849F /* DynamicWaveLoadingView.swift */; }; + 992D6E132FA98B4D0091849F /* AudiobookShelfConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */; }; + 992D6E142FA98B4D0091849F /* AudiobookShelfConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879C2EC7722400DF442B /* AudiobookShelfConnectionData.swift */; }; + 992D6E152FA98B4D0091849F /* AudiobookShelfConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */; }; + 992D6E162FA98B4D0091849F /* AudiobookShelfConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879C2EC7722400DF442B /* AudiobookShelfConnectionData.swift */; }; + 992D6E172FA98C5C0091849F /* AudiobookShelfLibraryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879A2EC7722400DF442B /* AudiobookShelfLibraryItem.swift */; }; + 992D6E182FA98C5C0091849F /* AudiobookShelfLibraryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879A2EC7722400DF442B /* AudiobookShelfLibraryItem.swift */; }; + 992D6E192FA98C8F0091849F /* AudiobookShelfLibraryLevelData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487B62EC7752000DF442B /* AudiobookShelfLibraryLevelData.swift */; }; + 992D6E1A2FA98C8F0091849F /* AudiobookShelfLibraryLevelData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487B62EC7752000DF442B /* AudiobookShelfLibraryLevelData.swift */; }; + 992D6E1B2FA98CBE0091849F /* AudiobookShelfLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879F2EC7722400DF442B /* AudiobookShelfLibrary.swift */; }; + 992D6E1C2FA98CBE0091849F /* AudiobookShelfLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879F2EC7722400DF442B /* AudiobookShelfLibrary.swift */; }; + 992D6E1D2FA98E1A0091849F /* AudiobookShelfAudiobookDetailsData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487962EC7722400DF442B /* AudiobookShelfAudiobookDetailsData.swift */; }; + 992D6E1E2FA98E1A0091849F /* AudiobookShelfAudiobookDetailsData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487962EC7722400DF442B /* AudiobookShelfAudiobookDetailsData.swift */; }; 99329DB72F3AA8F6003F8E73 /* PlayControlsRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99329DB62F3AA8F6003F8E73 /* PlayControlsRowView.swift */; }; 99329DBB2F3AAA61003F8E73 /* ListeningProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99329DBA2F3AAA61003F8E73 /* ListeningProgressView.swift */; }; 99329DBD2F3AAAB4003F8E73 /* NavigationRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99329DBC2F3AAAB4003F8E73 /* NavigationRowView.swift */; }; @@ -703,8 +727,30 @@ 99329DD72F3E8A04003F8E73 /* SlickSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99329DD62F3E8A04003F8E73 /* SlickSlider.swift */; }; 99329DDB2F3ED5E5003F8E73 /* DurationPickerSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99329DDA2F3ED5E5003F8E73 /* DurationPickerSheet.swift */; }; 9961DA72E9D53B8DA131BEB2 /* BPFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ACFA02FA31A0CB0438C5228 /* BPFont.swift */; }; + 996D4CC52F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 996D4CC42F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel */; }; + 996D4CC62F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 996D4CC42F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel */; }; + 996D4CC72F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 996D4CC42F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel */; }; + 996D4CC82F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 996D4CC42F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel */; }; + 996D4CC92F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 996D4CC42F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel */; }; + 996D4CCA2F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 996D4CC42F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel */; }; + 996D4CD12F98A45300FC3B57 /* IntegrationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0D0FA9BA32EDF5F367C757B /* IntegrationError.swift */; }; + 996D4CD22F98A45300FC3B57 /* IntegrationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0D0FA9BA32EDF5F367C757B /* IntegrationError.swift */; }; + 996D4CD32F98A50C00FC3B57 /* IntegrationLibraryItemProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A823609A5B7EFC6D2D5D120 /* IntegrationLibraryItemProtocol.swift */; }; + 996D4CD42F98A50C00FC3B57 /* IntegrationLibraryItemProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A823609A5B7EFC6D2D5D120 /* IntegrationLibraryItemProtocol.swift */; }; 99B367FA2F4575C900C38F7F /* MediaAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99B367F92F4575C600C38F7F /* MediaAction.swift */; }; 99B367FC2F5108BF00C38F7F /* MediaActionRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99B367FB2F5108BF00C38F7F /* MediaActionRow.swift */; }; + 99C919CF2F99A8C100F66081 /* IntegrationDetailsViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 808E351A8B30ABCBA9EC00EF /* IntegrationDetailsViewModelProtocol.swift */; }; + 99C919D02F99A8C100F66081 /* IntegrationDetailsViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 808E351A8B30ABCBA9EC00EF /* IntegrationDetailsViewModelProtocol.swift */; }; + 99D995872F719E7600BAF216 /* JellyfinConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A542CEE8849000A4B4B /* JellyfinConnectionService.swift */; }; + 99D995892F719E7E00BAF216 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; + 99D9958A2F719E7E00BAF216 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; + 99D9958F2F71AB6800BAF216 /* JellyfinLibraryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF18A322CF0A26200238F8D /* JellyfinLibraryItem.swift */; }; + 99D995902F71AB6800BAF216 /* JellyfinLibraryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF18A322CF0A26200238F8D /* JellyfinLibraryItem.swift */; }; + 99D995932F71ABAA00BAF216 /* JellyfinAudiobookDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD46232CF38F91002E9C50 /* JellyfinAudiobookDetailsView.swift */; }; + 99D995952F71ABBD00BAF216 /* JellyfinAudiobookDetailsData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99D995942F71ABB700BAF216 /* JellyfinAudiobookDetailsData.swift */; }; + 99D995962F71ABBD00BAF216 /* JellyfinAudiobookDetailsData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99D995942F71ABB700BAF216 /* JellyfinAudiobookDetailsData.swift */; }; + 99D995982F71B02D00BAF216 /* JellyfinAPI in Frameworks */ = {isa = PBXBuildFile; productRef = 99D995972F71B02D00BAF216 /* JellyfinAPI */; }; + 99D9959A2F71B05700BAF216 /* JellyfinAPI in Frameworks */ = {isa = PBXBuildFile; productRef = 99D995992F71B05700BAF216 /* JellyfinAPI */; }; 99F3C1EC2F5BCE1600AC91A2 /* LibraryItemRef.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1EB2F5BCE1000AC91A2 /* LibraryItemRef.swift */; }; 99F3C1ED2F5BCE1600AC91A2 /* LibraryItemRef.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1EB2F5BCE1000AC91A2 /* LibraryItemRef.swift */; }; 99F3C1F72F5F873900AC91A2 /* UUIDMigrationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1F62F5F873500AC91A2 /* UUIDMigrationPolicy.swift */; }; @@ -712,7 +758,6 @@ 99F3C1F92F5F873900AC91A2 /* UUIDMigrationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1F62F5F873500AC91A2 /* UUIDMigrationPolicy.swift */; }; 99F3C1FA2F5F873900AC91A2 /* UUIDMigrationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1F62F5F873500AC91A2 /* UUIDMigrationPolicy.swift */; }; 99F3C1FB2F5F873900AC91A2 /* UUIDMigrationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1F62F5F873500AC91A2 /* UUIDMigrationPolicy.swift */; }; - 99F3C1FC2F5F873900AC91A2 /* UUIDMigrationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1F62F5F873500AC91A2 /* UUIDMigrationPolicy.swift */; }; 99F3C1FE2F5FC2F200AC91A2 /* SchemaV1SyncTasksModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1FD2F5FC2E600AC91A2 /* SchemaV1SyncTasksModels.swift */; }; 99F3C1FF2F5FC2F200AC91A2 /* SchemaV1SyncTasksModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1FD2F5FC2E600AC91A2 /* SchemaV1SyncTasksModels.swift */; }; 99F3C2042F5FC76D00AC91A2 /* MigrationPlan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2032F5FC76700AC91A2 /* MigrationPlan.swift */; }; @@ -721,6 +766,21 @@ 99F3C2082F5FD41300AC91A2 /* SchemaV2SyncTasksModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2062F5FD40C00AC91A2 /* SchemaV2SyncTasksModels.swift */; }; 99F3C20A2F62285800AC91A2 /* ApiResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2092F62285500AC91A2 /* ApiResponse.swift */; }; 99F3C20B2F62285800AC91A2 /* ApiResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2092F62285500AC91A2 /* ApiResponse.swift */; }; + 99F3C20E2F650F0900AC91A2 /* ExternalResource+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C20D2F650EEB00AC91A2 /* ExternalResource+CoreDataClass.swift */; }; + 99F3C20F2F650F0900AC91A2 /* ExternalResource+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C20D2F650EEB00AC91A2 /* ExternalResource+CoreDataClass.swift */; }; + 99F3C2112F650F1200AC91A2 /* ExternalResource+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2102F650F0C00AC91A2 /* ExternalResource+CoreDataProperties.swift */; }; + 99F3C2122F650F1200AC91A2 /* ExternalResource+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2102F650F0C00AC91A2 /* ExternalResource+CoreDataProperties.swift */; }; + 99F3C2142F65174700AC91A2 /* SimpleExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2132F65174000AC91A2 /* SimpleExternalResource.swift */; }; + 99F3C2152F65174700AC91A2 /* SimpleExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2132F65174000AC91A2 /* SimpleExternalResource.swift */; }; + 99F3C21F2F69D0AF00AC91A2 /* ExternalImportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C21E2F69D0AC00AC91A2 /* ExternalImportView.swift */; }; + 99F3C2212F69D32E00AC91A2 /* ExternalImportViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2202F69D32800AC91A2 /* ExternalImportViewModel.swift */; }; + 99F3C2342F6BBECC00AC91A2 /* JellyfinConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A562CEE88DE000A4B4B /* JellyfinConnectionData.swift */; }; + 99F3C2352F6BBECC00AC91A2 /* JellyfinConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A562CEE88DE000A4B4B /* JellyfinConnectionData.swift */; }; + 99F3C2362F6D04AE00AC91A2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 418B6D041D2707F800F974FB /* Assets.xcassets */; }; + 99F3C2372F6D04AE00AC91A2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 418B6D041D2707F800F974FB /* Assets.xcassets */; }; + 99F3C2412F6E322800AC91A2 /* SchemaV3SyncTasksModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2402F6E322000AC91A2 /* SchemaV3SyncTasksModels.swift */; }; + 99F3C2422F6E322800AC91A2 /* SchemaV3SyncTasksModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2402F6E322000AC91A2 /* SchemaV3SyncTasksModels.swift */; }; + 9DA710A0CC53EEC5F7AF93D3 /* QueryTimeSortSpikeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53AE3D4C955A493470C8EAA9 /* QueryTimeSortSpikeTests.swift */; }; 9F00A5FA294F8BFE005EA316 /* ClearableTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F00A5F9294F8BFE005EA316 /* ClearableTextField.swift */; }; 9F00A5FC294F9B9A005EA316 /* ItemDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F00A5FB294F9B9A005EA316 /* ItemDetailsView.swift */; }; 9F00A600295001C0005EA316 /* ItemDetailsArtworkSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F00A5FF295001C0005EA316 /* ItemDetailsArtworkSectionView.swift */; }; @@ -866,16 +926,17 @@ A7A0756EBA206652A801B9D3 /* VideoPlayerSurface.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2107EC31217A7421B2BA6A /* VideoPlayerSurface.swift */; }; A7FA45CB2BD6567C9B5EA372 /* IntegrationTagsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 643E169A5F153B754F726AE1 /* IntegrationTagsView.swift */; }; ADBA6DD206F76CF92C0765A3 /* WebAuthenticatingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4388D9707FA7C85F9D07E75 /* WebAuthenticatingTests.swift */; }; + AE284AB4D4139ED869288F99 /* IntegrationConnectionPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A8030B619D18CA088DAA40A /* IntegrationConnectionPayload.swift */; }; B14881000000000000000001 /* IntegrationCustomHeadersSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14881000000000000000002 /* IntegrationCustomHeadersSectionView.swift */; }; B26B34D894351E8452FBB64B /* IntegrationServerInformationSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5F919ABFCEF9B58EFE9D82E /* IntegrationServerInformationSectionView.swift */; }; B7F1E4A9D2C5B8F0A6E3C12A /* IntegrationImageSizing.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4D9C8B6E5F1D2A7C4E9B81B /* IntegrationImageSizing.swift */; }; + BF96AEBA456420ADE446427F /* URL+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126F120258E9F18009965DC /* URL+BookPlayer.swift */; }; C318DDBC20A48D4700C3A17B /* BPMarqueeLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C318DDBB20A48D4700C3A17B /* BPMarqueeLabel.swift */; }; C37A6873209F0F830063AEAC /* Credits.html in Resources */ = {isa = PBXBuildFile; fileRef = C37A6872209F0F830063AEAC /* Credits.html */; }; C39401E920DEE83200F3DC71 /* UIView+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C39401E820DEE83100F3DC71 /* UIView+BookPlayer.swift */; }; C3A479132094C8C300D92122 /* rubberBandDistance.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A479122094C8C300D92122 /* rubberBandDistance.swift */; }; C3A479152094CA3800D92122 /* UIImage+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A479142094CA3800D92122 /* UIImage+BookPlayer.swift */; }; C3A479192094CAF300D92122 /* UIViewController+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A479182094CAF300D92122 /* UIViewController+BookPlayer.swift */; }; - C3C998E7EA2919BB438B337C /* IntegrationLibraryItemProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A823609A5B7EFC6D2D5D120 /* IntegrationLibraryItemProtocol.swift */; }; C3EA7176218DEC870005D488 /* .swiftformat in Resources */ = {isa = PBXBuildFile; fileRef = C3EA7175218DEC870005D488 /* .swiftformat */; }; C3EC372E206EE0650094B4E8 /* SleepTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3EC372D206EE0650094B4E8 /* SleepTimer.swift */; }; C3FA301E20E0024900393DDA /* BPArtworkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3FA301D20E0024900393DDA /* BPArtworkView.swift */; }; @@ -885,6 +946,7 @@ C63BB893BC572482723FF7CE /* m4b_MALFORMED.m4b in Resources */ = {isa = PBXBuildFile; fileRef = A566F222C6660938B3A71638 /* m4b_MALFORMED.m4b */; }; C744B2254A1146AC9F78A68F /* PlayBookIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F847DAE94054533AACF8D85 /* PlayBookIntent.swift */; }; C86098383F7FC099EED24AF7 /* IntegrationQuickConnectViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056B7A76F1A44CEC30562382 /* IntegrationQuickConnectViews.swift */; }; + C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */; }; CCC7E1CC127610C3687B8A50 /* SortPreferencesResolving.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */; }; D080B0A77D9844C3A0737170 /* IntegrationConnectionFormViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FB91B577BC77F45EDB2AAAA /* IntegrationConnectionFormViewModel.swift */; }; @@ -895,14 +957,19 @@ D8886C9E9E2A183454C625CC /* VideoFullscreenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78387C7EDD9105363712F34 /* VideoFullscreenViewController.swift */; }; DCFC79BEBAEA628FB13F33A1 /* BPFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ACFA02FA31A0CB0438C5228 /* BPFont.swift */; }; E101E3603ACF4DB50AA0037B /* JellyfinQuickConnectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B8DAE18EF12485AD3509B2D /* JellyfinQuickConnectTests.swift */; }; + ED1900FB7892C8FA42A5A665 /* UUIDMigrationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C1F62F5F873500AC91A2 /* UUIDMigrationPolicy.swift */; }; + EF5A25679D73F58A5D551D01 /* IntegrationConnectionStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587EDC7DEA9D2985635F1161 /* IntegrationConnectionStore.swift */; }; F2535BF980A548BFB9D3E8C1 /* VideoPiPCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2EA56C448451F969BC0E2AB /* VideoPiPCoordinator.swift */; }; F50163BEFB92FB6B1B778C5E /* WindowHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BB8BFBB9A63469069F0D44A /* WindowHelper.swift */; }; + F575EA7BBE6C619D27225281 /* IntegrationConnectionStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587EDC7DEA9D2985635F1161 /* IntegrationConnectionStore.swift */; }; F6348C04290CD2CE7BE3F015 /* IntegrationConnectionDataDecodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BB8BD2F5EC900DC51D5D02D /* IntegrationConnectionDataDecodingTests.swift */; }; - F7CB281CF765C468BFA9B0D8 /* IntegrationDetailsViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 808E351A8B30ABCBA9EC00EF /* IntegrationDetailsViewModelProtocol.swift */; }; F906EF4FC85B1CCE138B230D /* PasskeyEmailInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3373A34FC2536111E50BF868 /* PasskeyEmailInputView.swift */; }; F97E68221AB7CDFB93CC0AF7 /* AudiobookShelfConnectionViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638A9B40CE7EECEF80FA9935 /* AudiobookShelfConnectionViewModelTests.swift */; }; F9FA95F9A4AE359006A85B88 /* PreferencesAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1E6918C51C370C2E89B24F9 /* PreferencesAPI.swift */; }; + FAE65B9ED5048BF9DD783BEF /* AudiobookShelfOIDCFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75010F6AB433BBEEB7FA9376 /* AudiobookShelfOIDCFlow.swift */; }; + FBE2B360883B414695A54628 /* ReviewPromptService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C80A51B636D4C7381529505 /* ReviewPromptService.swift */; }; FED52673ACD975949EF9E219 /* PreferencesSyncServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA09FE5A35CEA0B87F83EF3 /* PreferencesSyncServiceTests.swift */; }; + FED6216CFABF04A613866335 /* WebAuthenticating.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */; }; FEEDBABE0000000000000002 /* SharedWidgetStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEEDBABE0000000000000001 /* SharedWidgetStore.swift */; }; FEEDBABE0000000000000003 /* SharedWidgetStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEEDBABE0000000000000001 /* SharedWidgetStore.swift */; }; FEEDBABE0000000000000005 /* SharedWidgetStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEEDBABE0000000000000004 /* SharedWidgetStoreTests.swift */; }; @@ -1063,9 +1130,11 @@ 12EDB8401F38342155CBBC91 /* mp3_NO_chapters.mp3 */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = audio.mp3; path = mp3_NO_chapters.mp3; sourceTree = ""; }; 13C407B5BD19D3CF9CC64EC7 /* IntegrationLibraryView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationLibraryView.swift; sourceTree = ""; }; 1BA32C89144C68DD64FD0B62 /* mp3_NO_toc_v23.mp3 */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = audio.mp3; path = mp3_NO_toc_v23.mp3; sourceTree = ""; }; + 1C6581B92E4D292C2AFC361A /* SyncResponseFixtures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncResponseFixtures.swift; sourceTree = ""; }; 1FFF7B7B6E62B274D230C207 /* IntegrationServerAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationServerAddress.swift; sourceTree = ""; }; 22E85F55E03D1981F097661C /* PKCE.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PKCE.swift; sourceTree = ""; }; 269BB56618B150DCAA2CA5FB /* IntegrationConnectionStoreTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionStoreTests.swift; sourceTree = ""; }; + 2AF448F75392B02FC5451289 /* SortIntegrationHarness.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortIntegrationHarness.swift; sourceTree = ""; }; 2BB8BD2F5EC900DC51D5D02D /* IntegrationConnectionDataDecodingTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionDataDecodingTests.swift; sourceTree = ""; }; 2E070421575334E1CD85C049 /* IntegrationLibraryViewModelProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationLibraryViewModelProtocol.swift; sourceTree = ""; }; 3373A34FC2536111E50BF868 /* PasskeyEmailInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PasskeyEmailInputView.swift; sourceTree = ""; }; @@ -1073,6 +1142,7 @@ 3724BB21B1B88177C60BE4D8 /* IntegrationConnectionFormViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionFormViewModelProtocol.swift; sourceTree = ""; }; 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WebAuthenticating.swift; sourceTree = ""; }; 3ACFA02FA31A0CB0438C5228 /* BPFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BPFont.swift; sourceTree = ""; }; + 3C80A51B636D4C7381529505 /* ReviewPromptService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewPromptService.swift; sourceTree = ""; }; 3F6640892E162ABF00356522 /* AudioMetadataService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioMetadataService.swift; sourceTree = ""; }; 3F66408C2E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = MappingModel_v9_to_v10.xcmappingmodel; sourceTree = ""; }; 3F6640932E17386400356522 /* DeleteUserBookData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteUserBookData.swift; sourceTree = ""; }; @@ -1320,10 +1390,12 @@ 465D87532D31965100A4AA47 /* BookmarksViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksViewModel.swift; sourceTree = ""; }; 4BB8BFBB9A63469069F0D44A /* WindowHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowHelper.swift; sourceTree = ""; }; 4BFC5736E667F4BF8CBB9096 /* mp3_NO_toc_v24.mp3 */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = audio.mp3; path = mp3_NO_toc_v24.mp3; sourceTree = ""; }; + 4C78CCAAFEB5A9D78AA108EC /* QueryTimeSortRefactorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryTimeSortRefactorTests.swift; sourceTree = ""; }; 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionViewModelProtocol.swift; sourceTree = ""; }; 4D9D68F735D2519CDBC18495 /* IntegrationSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrationSettingsView.swift; sourceTree = ""; }; 5126F120258E9F18009965DC /* URL+BookPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URL+BookPlayer.swift"; sourceTree = ""; }; 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHTTPClient.swift; sourceTree = ""; }; + 53AE3D4C955A493470C8EAA9 /* QueryTimeSortSpikeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryTimeSortSpikeTests.swift; sourceTree = ""; }; 587EDC7DEA9D2985635F1161 /* IntegrationConnectionStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionStore.swift; sourceTree = ""; }; 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SortPreferencesResolving.swift; sourceTree = ""; }; 5CBB29522163A17F00E3A9FF /* ZIPFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ZIPFoundation.framework; path = Carthage/Build/iOS/ZIPFoundation.framework; sourceTree = ""; }; @@ -1335,11 +1407,6 @@ 624EB9832755D8E700D462A8 /* Audiobook Player 8.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Audiobook Player 8.xcdatamodel"; sourceTree = ""; }; 62AAE22B274AA3EB001EB9FF /* LibraryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryService.swift; sourceTree = ""; }; 62AAE230274ABB5D001EB9FF /* LibraryServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryServiceTests.swift; sourceTree = ""; }; - 4C78CCAAFEB5A9D78AA108EC /* QueryTimeSortRefactorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryTimeSortRefactorTests.swift; sourceTree = ""; }; - 1C6581B92E4D292C2AFC361A /* SyncResponseFixtures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncResponseFixtures.swift; sourceTree = ""; }; - 2AF448F75392B02FC5451289 /* SortIntegrationHarness.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortIntegrationHarness.swift; sourceTree = ""; }; - 53AE3D4C955A493470C8EAA9 /* QueryTimeSortSpikeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryTimeSortSpikeTests.swift; sourceTree = ""; }; - F448E8BBF01860FC65EB697A /* SortCharacterizationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortCharacterizationTests.swift; sourceTree = ""; }; 62CADB8D2724E41800A4A98F /* Audiobook Player 7.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Audiobook Player 7.xcdatamodel"; sourceTree = ""; }; 62F2F25E25E18C7500E1D6A0 /* ImportableItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportableItem.swift; sourceTree = ""; }; 63005A432AE7FD8000A4CA2C /* BookPlayerWidgetsWatch.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = BookPlayerWidgetsWatch.appex; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1605,7 +1672,6 @@ 63C48D532E50AAA1005FBB96 /* AccountPasskeySectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountPasskeySectionView.swift; sourceTree = ""; }; 63C6C2E52B5029BC00FFE0D8 /* SettingsAutolockView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAutolockView.swift; sourceTree = ""; }; 63C6C2E72B5029FE00FFE0D8 /* SettingsAutolockViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAutolockViewModel.swift; sourceTree = ""; }; - 63C6C30B2B538B7A00FFE0D8 /* SyncTasksStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncTasksStorage.swift; sourceTree = ""; }; 63C6C30F2B54F14800FFE0D8 /* LibraryItemSyncOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryItemSyncOperation.swift; sourceTree = ""; }; 63C6C3172B5E0FE700FFE0D8 /* SyncTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncTask.swift; sourceTree = ""; }; 63CD851C2CE2964900EDBEA8 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; @@ -1644,9 +1710,8 @@ 6906A54F21720FDF00A9E0B2 /* BookSortServiceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookSortServiceTest.swift; sourceTree = ""; }; 6906A552217211C600A9E0B2 /* StubFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StubFactory.swift; sourceTree = ""; }; 69343D322133844D000C425E /* VoiceOverService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceOverService.swift; sourceTree = ""; }; - 3C80A51B636D4C7381529505 /* ReviewPromptService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewPromptService.swift; sourceTree = ""; }; - 6F83542FF9A240EC87E55AC8 /* ReviewPromptServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewPromptServiceTests.swift; sourceTree = ""; }; 69343D35213A07B4000C425E /* VoiceOverServiceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceOverServiceTest.swift; sourceTree = ""; }; + 6F83542FF9A240EC87E55AC8 /* ReviewPromptServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewPromptServiceTests.swift; sourceTree = ""; }; 6FB91B577BC77F45EDB2AAAA /* IntegrationConnectionFormViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionFormViewModel.swift; sourceTree = ""; }; 700DFD61111AC10253D6EBAA /* SyncTasksStorageTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncTasksStorageTests.swift; sourceTree = ""; }; 75010F6AB433BBEEB7FA9376 /* AudiobookShelfOIDCFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AudiobookShelfOIDCFlow.swift; sourceTree = ""; }; @@ -1677,6 +1742,22 @@ 8D3EFD93E6D1E0366A3FD1E9 /* mp3_WITH_toc.mp3 */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = audio.mp3; path = mp3_WITH_toc.mp3; sourceTree = ""; }; 8DA0C0229963991F8CE1E941 /* IntegrationConnectionFlowView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionFlowView.swift; sourceTree = ""; }; 8FBF775DDE66D0AA08818D45 /* LibraryOptionsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LibraryOptionsView.swift; sourceTree = ""; }; + 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalSyncInfoView.swift; sourceTree = ""; }; + 990442112F88B0FC007E2A44 /* SyncInvitationCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncInvitationCard.swift; sourceTree = ""; }; + 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionPillView.swift; sourceTree = ""; }; + 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = MappingModel_v11_to_v12.xcmappingmodel; sourceTree = ""; }; + 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncOperation.swift; sourceTree = ""; }; + 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrenceService.swift; sourceTree = ""; }; + 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTasksRepository.swift; sourceTree = ""; }; + 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalUpdateProgressOperation.swift; sourceTree = ""; }; + 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentSyncTask.swift; sourceTree = ""; }; + 9911FBBA2F736BFC00DC9A2B /* ConcurrentSyncTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentSyncTasksView.swift; sourceTree = ""; }; + 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTaskProgressMonitor.swift; sourceTree = ""; }; + 9911FBC02F7465DC00DC9A2B /* ConcurrentTasksCountService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTasksCountService.swift; sourceTree = ""; }; + 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUploadOperation.swift; sourceTree = ""; }; + 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncableExternalResource.swift; sourceTree = ""; }; + 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTasksView.swift; sourceTree = ""; }; + 992D6E0F2FA2BD230091849F /* DynamicWaveLoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicWaveLoadingView.swift; sourceTree = ""; }; 99329DB62F3AA8F6003F8E73 /* PlayControlsRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayControlsRowView.swift; sourceTree = ""; }; 99329DBA2F3AAA61003F8E73 /* ListeningProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListeningProgressView.swift; sourceTree = ""; }; 99329DBC2F3AAAB4003F8E73 /* NavigationRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationRowView.swift; sourceTree = ""; }; @@ -1694,14 +1775,23 @@ 99329DD62F3E8A04003F8E73 /* SlickSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SlickSlider.swift; sourceTree = ""; }; 99329DDA2F3ED5E5003F8E73 /* DurationPickerSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DurationPickerSheet.swift; sourceTree = ""; }; 995787DD2F56674400BF0814 /* Audiobook Player 11.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Audiobook Player 11.xcdatamodel"; sourceTree = ""; }; + 996D4CC42F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = MappingModel_v10_to_v11.xcmappingmodel; sourceTree = ""; }; 99B367F92F4575C600C38F7F /* MediaAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaAction.swift; sourceTree = ""; }; 99B367FB2F5108BF00C38F7F /* MediaActionRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaActionRow.swift; sourceTree = ""; }; + 99D995942F71ABB700BAF216 /* JellyfinAudiobookDetailsData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinAudiobookDetailsData.swift; sourceTree = ""; }; 99F3C1EB2F5BCE1000AC91A2 /* LibraryItemRef.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryItemRef.swift; sourceTree = ""; }; 99F3C1F62F5F873500AC91A2 /* UUIDMigrationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UUIDMigrationPolicy.swift; sourceTree = ""; }; 99F3C1FD2F5FC2E600AC91A2 /* SchemaV1SyncTasksModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SchemaV1SyncTasksModels.swift; sourceTree = ""; }; 99F3C2032F5FC76700AC91A2 /* MigrationPlan.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationPlan.swift; sourceTree = ""; }; 99F3C2062F5FD40C00AC91A2 /* SchemaV2SyncTasksModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SchemaV2SyncTasksModels.swift; sourceTree = ""; }; 99F3C2092F62285500AC91A2 /* ApiResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApiResponse.swift; sourceTree = ""; }; + 99F3C20C2F64ED1900AC91A2 /* Audiobook Player 12.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Audiobook Player 12.xcdatamodel"; sourceTree = ""; }; + 99F3C20D2F650EEB00AC91A2 /* ExternalResource+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ExternalResource+CoreDataClass.swift"; sourceTree = ""; }; + 99F3C2102F650F0C00AC91A2 /* ExternalResource+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ExternalResource+CoreDataProperties.swift"; sourceTree = ""; }; + 99F3C2132F65174000AC91A2 /* SimpleExternalResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleExternalResource.swift; sourceTree = ""; }; + 99F3C21E2F69D0AC00AC91A2 /* ExternalImportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalImportView.swift; sourceTree = ""; }; + 99F3C2202F69D32800AC91A2 /* ExternalImportViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalImportViewModel.swift; sourceTree = ""; }; + 99F3C2402F6E322000AC91A2 /* SchemaV3SyncTasksModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SchemaV3SyncTasksModels.swift; sourceTree = ""; }; 9F00A5F9294F8BFE005EA316 /* ClearableTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClearableTextField.swift; sourceTree = ""; }; 9F00A5FB294F9B9A005EA316 /* ItemDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDetailsView.swift; sourceTree = ""; }; 9F00A5FF295001C0005EA316 /* ItemDetailsArtworkSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDetailsArtworkSectionView.swift; sourceTree = ""; }; @@ -1861,6 +1951,7 @@ EC40E520F644AFA46DAD76B0 /* AudioMetadataServiceTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AudioMetadataServiceTests.swift; sourceTree = ""; }; F1E6918C51C370C2E89B24F9 /* PreferencesAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreferencesAPI.swift; sourceTree = ""; }; F4388D9707FA7C85F9D07E75 /* WebAuthenticatingTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WebAuthenticatingTests.swift; sourceTree = ""; }; + F448E8BBF01860FC65EB697A /* SortCharacterizationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortCharacterizationTests.swift; sourceTree = ""; }; F496A2BF4CBFFC745C453D42 /* ChaptersViewModelTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChaptersViewModelTests.swift; sourceTree = ""; }; F5A989BA90E16F60920A1DB0 /* PKCETests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PKCETests.swift; sourceTree = ""; }; F6F0D505E060FDAEB6DB68E3 /* IntegrationLibraryListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationLibraryListView.swift; sourceTree = ""; }; @@ -1890,8 +1981,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 9907757E2FF33C1500E35FAE /* Kingfisher in Frameworks */, + 990775792FF33BE100E35FAE /* Get in Frameworks */, 9F00F6EA2807B5D300996BBB /* RevenueCat in Frameworks */, - 62CADBAA2725BCF000A4A98F /* Kingfisher in Frameworks */, + 99D9959A2F71B05700BAF216 /* JellyfinAPI in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1918,6 +2011,7 @@ 41F1A1D7254B07E80043FCF3 /* MarqueeLabel in Frameworks */, 8A495CC62CC85D27001B4244 /* JellyfinAPI in Frameworks */, 41F1A228254B0C6C0043FCF3 /* ZipArchive in Frameworks */, + 990775802FF33D5300E35FAE /* Get in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1932,8 +2026,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 9907757C2FF33C0C00E35FAE /* Kingfisher in Frameworks */, + 990775772FF33BD700E35FAE /* Get in Frameworks */, 9F00F6E82807B5CB00996BBB /* RevenueCat in Frameworks */, - 62CADBA82725BCE800A4A98F /* Kingfisher in Frameworks */, + 99D995982F71B02D00BAF216 /* JellyfinAPI in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2268,6 +2364,7 @@ 9F4A33DE292B0C710034CD4C /* BookPlayerShareExtension */, 418B6CF91D2707F800F974FB /* Products */, 41AABFFA1E705D18006BD2E0 /* Frameworks */, + 993BAADC2F9894D800FB8014 /* Recovered References */, ); indentWidth = 2; sourceTree = ""; @@ -2367,6 +2464,9 @@ 41A1B0F1226E9C5100EA0400 /* Shared */ = { isa = PBXGroup; children = ( + 996D4CD02F98A41E00FC3B57 /* Integrations */, + 99D9958B2F719ECF00BAF216 /* Jellyfin */, + 992D6E112FA98AEF0091849F /* AudiobookShelf */, 9F22DE3A288D771800056FCD /* Styleguide */, 9FC1E4572814E09700522FA8 /* Network */, 62AAE22F274AA6E9001EB9FF /* Services */, @@ -2458,6 +2558,7 @@ 41C8ABCF26836F03003B67D1 /* Import */ = { isa = PBXGroup; children = ( + 99F3C21D2F69D09A00AC91A2 /* ExternalSource */, 62793612272CC19E0097837D /* Models */, 62793613272CC9D50097837D /* Views */, 416B63A72146354B007D04B1 /* ImportManager.swift */, @@ -2480,7 +2581,8 @@ 41A359C2276232E00020D5F5 /* MappingModel_v7_to_v8.xcmappingmodel */, 9FF383D02A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel */, 3F66408C2E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel */, - 6321324F2F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel */, + 996D4CC42F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel */, + 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */, ); path = Migrations; sourceTree = ""; @@ -2628,6 +2730,7 @@ 41546FF026F54F0600825180 /* PlaybackState.swift */, 9FBF33EB29F6293C00501639 /* SimpleBookmark.swift */, 9FFCC08E289418CA00F4952E /* SimpleChapter.swift */, + 99F3C2132F65174000AC91A2 /* SimpleExternalResource.swift */, 3FA43BF72E110B4400DF9B1F /* SimpleHardcoverBook.swift */, 41546FF226F559CE00825180 /* SimpleItemType.swift */, 41188D3026ED715D0017124E /* SimpleLibraryItem.swift */, @@ -2651,6 +2754,8 @@ 4138CE1526E584B60014F11E /* BookmarkType.swift */, 41A1B111226F88C500EA0400 /* Chapter+CoreDataClass.swift */, 41A1B112226F88C500EA0400 /* Chapter+CoreDataProperties.swift */, + 99F3C20D2F650EEB00AC91A2 /* ExternalResource+CoreDataClass.swift */, + 99F3C2102F650F0C00AC91A2 /* ExternalResource+CoreDataProperties.swift */, 41A1B11B226F88C500EA0400 /* Folder+CoreDataClass.swift */, 41A1B11C226F88C500EA0400 /* Folder+CoreDataProperties.swift */, 3FF5BA682E10EA8000B82BCC /* HardcoverBook+CoreDataClass.swift */, @@ -2713,6 +2818,7 @@ 9FD8FE4C286566FF00EB2C3D /* Sync */, 64957AF0989CEBEEEC40E4BB /* Preferences */, FEEDBABE0000000000000001 /* SharedWidgetStore.swift */, + 9911FBAA2F71CD1600DC9A2B /* ConcurrentSync */, ); path = Services; sourceTree = ""; @@ -2880,8 +2986,8 @@ 636E77872DF4948F00D4DC0A /* Details */ = { isa = PBXGroup; children = ( - 8ADD46252CF67587002E9C50 /* JellyfinAudiobookDetailsViewModel.swift */, 8ADD46232CF38F91002E9C50 /* JellyfinAudiobookDetailsView.swift */, + 8ADD46252CF67587002E9C50 /* JellyfinAudiobookDetailsViewModel.swift */, ); path = Details; sourceTree = ""; @@ -2942,6 +3048,7 @@ 638352C62E67F327009EE79E /* Models */ = { isa = PBXGroup; children = ( + 99F3C2402F6E322000AC91A2 /* SchemaV3SyncTasksModels.swift */, 99F3C2062F5FD40C00AC91A2 /* SchemaV2SyncTasksModels.swift */, 99F3C1FD2F5FC2E600AC91A2 /* SchemaV1SyncTasksModels.swift */, 638352C52E67F327009EE79E /* SyncTasksModels.swift */, @@ -2972,7 +3079,6 @@ 638487972EC7722400DF442B /* Details */ = { isa = PBXGroup; children = ( - 638487962EC7722400DF442B /* AudiobookShelfAudiobookDetailsData.swift */, 638487CA2EC77B1200DF442B /* AudiobookShelfAudiobookDetailsView.swift */, 638487CB2EC77B1200DF442B /* AudiobookShelfAudiobookDetailsViewModel.swift */, ); @@ -3001,8 +3107,6 @@ 638487972EC7722400DF442B /* Details */, 638487982EC7722400DF442B /* GridLayout */, 638487992EC7722400DF442B /* ListLayout */, - 6384879A2EC7722400DF442B /* AudiobookShelfLibraryItem.swift */, - 638487B62EC7752000DF442B /* AudiobookShelfLibraryLevelData.swift */, 638487C02EC7767000DF442B /* AudiobookShelfLibraryItemImageView.swift */, 638487C12EC7767000DF442B /* AudiobookShelfLibraryView.swift */, 638487C22EC7767000DF442B /* AudiobookShelfLibraryViewModel.swift */, @@ -3016,7 +3120,6 @@ 6384879C2EC7722400DF442B /* AudiobookShelfConnectionData.swift */, 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */, 6384879F2EC7722400DF442B /* AudiobookShelfLibrary.swift */, - 75010F6AB433BBEEB7FA9376 /* AudiobookShelfOIDCFlow.swift */, ); path = Network; sourceTree = ""; @@ -3248,8 +3351,6 @@ 891E8E9FD0037C7E3C06C7B4 /* Connection */ = { isa = PBXGroup; children = ( - 7A8030B619D18CA088DAA40A /* IntegrationConnectionPayload.swift */, - 587EDC7DEA9D2985635F1161 /* IntegrationConnectionStore.swift */, 1FFF7B7B6E62B274D230C207 /* IntegrationServerAddress.swift */, ); name = Connection; @@ -3262,7 +3363,6 @@ 636E77872DF4948F00D4DC0A /* Details */, 636E777A2DF2907B00D4DC0A /* GridLayout */, 634FF7A02DF73DA0005D1C0D /* ListLayout */, - 8AF18A322CF0A26200238F8D /* JellyfinLibraryItem.swift */, 8A9D0D232CCED53C007A924D /* JellyfinLibraryViewModel.swift */, 8A9D0D252CCED543007A924D /* JellyfinLibraryView.swift */, 8A9D0D2B2CCFBEEE007A924D /* JellyfinLibraryItemImageView.swift */, @@ -3273,7 +3373,6 @@ 8AE4AAC32CCB9E3A00BAA927 /* Jellyfin */ = { isa = PBXGroup; children = ( - 636E777D2DF32FFC00D4DC0A /* Network */, 8A9D0D1A2CCCF36D007A924D /* Library Screen */, 8AE4AAC92CCBA1D200BAA927 /* Connection Screen */, 636E77882DF4C76600D4DC0A /* JellyfinRootView.swift */, @@ -3289,6 +3388,43 @@ path = "Connection Screen"; sourceTree = ""; }; + 9911FBAA2F71CD1600DC9A2B /* ConcurrentSync */ = { + isa = PBXGroup; + children = ( + 9911FBC02F7465DC00DC9A2B /* ConcurrentTasksCountService.swift */, + 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */, + 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */, + 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */, + 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */, + 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */, + 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */, + 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */, + ); + path = ConcurrentSync; + sourceTree = ""; + }; + 992D6E112FA98AEF0091849F /* AudiobookShelf */ = { + isa = PBXGroup; + children = ( + 638487962EC7722400DF442B /* AudiobookShelfAudiobookDetailsData.swift */, + 638487B62EC7752000DF442B /* AudiobookShelfLibraryLevelData.swift */, + 6384879A2EC7722400DF442B /* AudiobookShelfLibraryItem.swift */, + 992D6E122FA98B410091849F /* Network */, + ); + path = AudiobookShelf; + sourceTree = ""; + }; + 992D6E122FA98B410091849F /* Network */ = { + isa = PBXGroup; + children = ( + 6384879C2EC7722400DF442B /* AudiobookShelfConnectionData.swift */, + 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */, + 6384879F2EC7722400DF442B /* AudiobookShelfLibrary.swift */, + 75010F6AB433BBEEB7FA9376 /* AudiobookShelfOIDCFlow.swift */, + ); + path = Network; + sourceTree = ""; + }; 99329DB22F3A9B9C003F8E73 /* Views */ = { isa = PBXGroup; children = ( @@ -3296,6 +3432,7 @@ 4138CE1A26E5B4020014F11E /* Bookmarks */, 9F64C6222793C37C00B2493C /* Controls */, 9F3D0CE328C2BF2A00E9E8A3 /* ButtonFree */, + 992D6E0F2FA2BD230091849F /* DynamicWaveLoadingView.swift */, 99329DC02F3AAB57003F8E73 /* DismissableRegionView.swift */, 99329DB62F3AA8F6003F8E73 /* PlayControlsRowView.swift */, 99329DBA2F3AAA61003F8E73 /* ListeningProgressView.swift */, @@ -3332,6 +3469,39 @@ path = Models; sourceTree = ""; }; + 993BAADC2F9894D800FB8014 /* Recovered References */ = { + isa = PBXGroup; + children = ( + 6321324F2F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel */, + ); + name = "Recovered References"; + sourceTree = ""; + }; + 996D4CD02F98A41E00FC3B57 /* Integrations */ = { + isa = PBXGroup; + children = ( + B0D0FA9BA32EDF5F367C757B /* IntegrationError.swift */, + 7A823609A5B7EFC6D2D5D120 /* IntegrationLibraryItemProtocol.swift */, + 808E351A8B30ABCBA9EC00EF /* IntegrationDetailsViewModelProtocol.swift */, + 587EDC7DEA9D2985635F1161 /* IntegrationConnectionStore.swift */, + 7A8030B619D18CA088DAA40A /* IntegrationConnectionPayload.swift */, + 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */, + 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */, + 22E85F55E03D1981F097661C /* PKCE.swift */, + ); + path = Integrations; + sourceTree = ""; + }; + 99D9958B2F719ECF00BAF216 /* Jellyfin */ = { + isa = PBXGroup; + children = ( + 8AF18A322CF0A26200238F8D /* JellyfinLibraryItem.swift */, + 99D995942F71ABB700BAF216 /* JellyfinAudiobookDetailsData.swift */, + 636E777D2DF32FFC00D4DC0A /* Network */, + ); + path = Jellyfin; + sourceTree = ""; + }; 99F3C1F52F5F871F00AC91A2 /* Migration Policies */ = { isa = PBXGroup; children = ( @@ -3340,6 +3510,15 @@ path = "Migration Policies"; sourceTree = ""; }; + 99F3C21D2F69D09A00AC91A2 /* ExternalSource */ = { + isa = PBXGroup; + children = ( + 99F3C2202F69D32800AC91A2 /* ExternalImportViewModel.swift */, + 99F3C21E2F69D0AC00AC91A2 /* ExternalImportView.swift */, + ); + path = ExternalSource; + sourceTree = ""; + }; 9EDB4EF25480E070F2786662 /* MediaServerIntegration */ = { isa = PBXGroup; children = ( @@ -3348,9 +3527,7 @@ E55F466D61AE62A69DE4D371 /* BPNavigation.swift */, 3724BB21B1B88177C60BE4D8 /* IntegrationConnectionFormViewModelProtocol.swift */, 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */, - B0D0FA9BA32EDF5F367C757B /* IntegrationError.swift */, D5E6F7081A2B3C4D5E6F7080 /* MediaServersView.swift */, - 7A823609A5B7EFC6D2D5D120 /* IntegrationLibraryItemProtocol.swift */, 2E070421575334E1CD85C049 /* IntegrationLibraryViewModelProtocol.swift */, A4D9C8B6E5F1D2A7C4E9B81B /* IntegrationImageSizing.swift */, 7DDD933F7FDEDC1BF67EC567 /* TabEditingEnvironmentKey.swift */, @@ -3431,6 +3608,7 @@ 9FF710B62A212A19006490E0 /* QueuedSyncTasksView.swift */, 9FF710BC2A215686006490E0 /* QueuedSyncTaskType.swift */, 9FF710B82A213084006490E0 /* QueuedSyncTaskRowView.swift */, + 9911FBBA2F736BFC00DC9A2B /* ConcurrentSyncTasksView.swift */, 63AD93D42E3C72830077E73A /* ProfileScreen.swift */, ); path = Profile; @@ -3439,6 +3617,7 @@ 9F4691EC2800C90400A8F0E8 /* Login */ = { isa = PBXGroup; children = ( + 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */, 63C48D3D2E3E7F9E005FBB96 /* LoginViewModel.swift */, 9F2681B528898A7300359BD3 /* LoginDisclaimerView.swift */, 63C48C792E3DAC9D005FBB96 /* LoginView.swift */, @@ -3454,6 +3633,7 @@ 9F4691F32800F65400A8F0E8 /* CompleteAccount */ = { isa = PBXGroup; children = ( + 990442112F88B0FC007E2A44 /* SyncInvitationCard.swift */, 9F2DC9D82A008B19006CDF1F /* PricingOptionsView.swift */, 9F2DC9DA2A008B28006CDF1F /* PricingRowView.swift */, 9FAB93732A53117C005B92B2 /* CompleteAccountView.swift */, @@ -3489,6 +3669,8 @@ 9F5F13662978D9B800F061A0 /* Views */ = { isa = PBXGroup; children = ( + 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */, + 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */, 9F5F13452977A06300F061A0 /* ProfileCardView.swift */, ); path = Views; @@ -3553,6 +3735,7 @@ children = ( 63C6C3172B5E0FE700FFE0D8 /* SyncTask.swift */, 9FBDBC782879409600D315A2 /* SyncableItem.swift */, + 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */, 9F9C7B5229F9672700E257B0 /* SyncableBookmark.swift */, 9FBDBC7F2879C6C900D315A2 /* UploadItemResponse.swift */, 9FBDBC7C287940D900D315A2 /* ContentsResponse.swift */, @@ -3610,7 +3793,6 @@ 99F3C2092F62285500AC91A2 /* ApiResponse.swift */, 9F9F3B6F280E4E4B004359DA /* SyncService.swift */, 9FDDD2DD289BEE590020C428 /* SyncJobScheduler.swift */, - 63C6C30B2B538B7A00FFE0D8 /* SyncTasksStorage.swift */, 63C6C30F2B54F14800FFE0D8 /* LibraryItemSyncOperation.swift */, 638E64CD2B8E1CFD00DCFA3B /* SyncTasksCountService.swift */, ); @@ -3620,9 +3802,6 @@ A68DC2D5A126AAFBFEC4F7EF /* Auth */ = { isa = PBXGroup; children = ( - 22E85F55E03D1981F097661C /* PKCE.swift */, - 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */, - 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */, ); name = Auth; path = Auth; @@ -3902,8 +4081,10 @@ ); name = BookPlayerWatchKit; packageProductDependencies = ( - 62CADBA92725BCF000A4A98F /* Kingfisher */, 9F00F6E92807B5D300996BBB /* RevenueCat */, + 99D995992F71B05700BAF216 /* JellyfinAPI */, + 990775782FF33BE100E35FAE /* Get */, + 9907757D2FF33C1500E35FAE /* Kingfisher */, ); productName = BookPlayerWatchKit; productReference = 4140EA5E227289720009F794 /* BookPlayerWatchKit.framework */; @@ -3958,6 +4139,7 @@ 41F1A227254B0C6C0043FCF3 /* ZipArchive */, 8A495CC52CC85D27001B4244 /* JellyfinAPI */, 63AE44722E6161B60088668F /* DirectoryWatcher */, + 9907757F2FF33D5300E35FAE /* Get */, ); productName = "Audiobook Player"; productReference = 418B6CF81D2707F800F974FB /* BookPlayer.app */; @@ -3996,8 +4178,10 @@ ); name = BookPlayerKit; packageProductDependencies = ( - 62CADBA72725BCE800A4A98F /* Kingfisher */, 9F00F6E72807B5CB00996BBB /* RevenueCat */, + 99D995972F71B02D00BAF216 /* JellyfinAPI */, + 990775762FF33BD700E35FAE /* Get */, + 9907757B2FF33C0C00E35FAE /* Kingfisher */, ); productName = BookPlayerKit; productReference = 41A1B0D2226E9BC400EA0400 /* BookPlayerKit.framework */; @@ -4143,11 +4327,12 @@ 41F1A1F0254B09020043FCF3 /* XCRemoteSwiftPackageReference "IDZSwiftCommonCrypto" */, 41F1A202254B09C00043FCF3 /* XCRemoteSwiftPackageReference "Themeable" */, 41F1A20B254B0A0C0043FCF3 /* XCRemoteSwiftPackageReference "sentry-cocoa" */, - 41F1A214254B0AA40043FCF3 /* XCRemoteSwiftPackageReference "Kingfisher" */, 41F1A226254B0C6C0043FCF3 /* XCRemoteSwiftPackageReference "ZipArchive" */, 9FE8188D2805BCE40089A41E /* XCRemoteSwiftPackageReference "purchases-ios" */, 8A495CC42CC8589F001B4244 /* XCRemoteSwiftPackageReference "jellyfin-sdk-swift" */, 63AE44712E6161B60088668F /* XCRemoteSwiftPackageReference "DirectoryWatcher" */, + 990775752FF33BD700E35FAE /* XCRemoteSwiftPackageReference "Get" */, + 9907757A2FF33C0C00E35FAE /* XCRemoteSwiftPackageReference "Kingfisher" */, ); productRefGroup = 418B6CF91D2707F800F974FB /* Products */; projectDirPath = ""; @@ -4189,6 +4374,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 99F3C2372F6D04AE00AC91A2 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4307,6 +4493,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 99F3C2362F6D04AE00AC91A2 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4388,7 +4575,6 @@ 9FA334B127C1499A0064E8EA /* ItemCellView.swift in Sources */, 4140EA43227288EF0009F794 /* ExtensionDelegate.swift in Sources */, 41A359C4276232E00020D5F5 /* MappingModel_v7_to_v8.xcmappingmodel in Sources */, - 632132522F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, 418CABB325EF28FC00D8C878 /* MappingModel_v3_to_v4.xcmappingmodel in Sources */, 9F82DF7127DF8203001B0EA8 /* WatchConnectivityService.swift in Sources */, 6350E4742CF4D2660077CDC1 /* PlayerToolbarView.swift in Sources */, @@ -4399,6 +4585,7 @@ 6350E46A2CF429760077CDC1 /* SleepTimer.swift in Sources */, 630EC82F2CEF9F0700C19411 /* ForcedEnvironment.swift in Sources */, 6350E4642CF004160077CDC1 /* LoadingView.swift in Sources */, + 996D4CCA2F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, 41D20DB125D5F5A100AAEE30 /* MappingModel_v1_to_v2.xcmappingmodel in Sources */, 9F82DF6D27DE985A001B0EA8 /* NowPlayingPlaybackControlsView.swift in Sources */, 6334CF1B2CF8D87500F1FA17 /* SkipDurationListView.swift in Sources */, @@ -4425,6 +4612,7 @@ 6399D0702CEBA35D00A2E278 /* RemoteItemListView.swift in Sources */, 41C3396225E04103003ED2B0 /* MappingModel_v2_to_v3.xcmappingmodel in Sources */, 6350E4722CF4D0220077CDC1 /* PlayerControlsView.swift in Sources */, + 990BF7152FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 9FA334C727C28D650064E8EA /* PlaybackControlsView.swift in Sources */, 4140EA8522728A160009F794 /* BookPlayer.xcdatamodeld in Sources */, 63CD851D2CE2964900EDBEA8 /* SettingsView.swift in Sources */, @@ -4437,15 +4625,19 @@ files = ( 9FC1E46D2815A8CA00522FA8 /* LibraryAPI.swift in Sources */, 99F3C20B2F62285800AC91A2 /* ApiResponse.swift in Sources */, + 990BF7102FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 4140EA6C2272898F0009F794 /* DataManager.swift in Sources */, 4140EA71227289A20009F794 /* UIColor+BookPlayer.swift in Sources */, + 99C919D02F99A8C100F66081 /* IntegrationDetailsViewModelProtocol.swift in Sources */, 9F0872DC2A19867C00B7FD4A /* ArtworkResponse.swift in Sources */, 9FF383D42A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel in Sources */, 3F66408B2E162ABF00356522 /* AudioMetadataService.swift in Sources */, 4138CE1726E584B60014F11E /* BookmarkType.swift in Sources */, 9F9C7B5429F9672700E257B0 /* SyncableBookmark.swift in Sources */, 5126F123258E9F18009965DC /* URL+BookPlayer.swift in Sources */, + 9911FBAC2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */, 9FFCC090289418CA00F4952E /* SimpleChapter.swift in Sources */, + 9911FBC52F76122400DC9A2B /* FileUploadOperation.swift in Sources */, 6399EA392F12BB690077BB13 /* PasskeyModels.swift in Sources */, 419BD5992443FD04001E50A0 /* Intents.intentdefinition in Sources */, 62AAE22D274AA6DE001EB9FF /* LibraryService.swift in Sources */, @@ -4459,11 +4651,14 @@ 63CD851F2CE2EEE200EDBEA8 /* Fonts.swift in Sources */, 99F3C1FB2F5F873900AC91A2 /* UUIDMigrationPolicy.swift in Sources */, 9961DA72E9D53B8DA131BEB2 /* BPFont.swift in Sources */, + 9911FBA92F71BD3000DC9A2B /* JellyfinConnectionService.swift in Sources */, + 99F3C2352F6BBECC00AC91A2 /* JellyfinConnectionData.swift in Sources */, 41A90C4927564DAA00C30394 /* BookPlayerError.swift in Sources */, 3FF5BA6A2E10EA8000B82BCC /* HardcoverBook+CoreDataClass.swift in Sources */, 63344C022EA7097D00B90DF7 /* DatabaseBackupService.swift in Sources */, 41C23402272E1960006BC7B8 /* SimpleTheme.swift in Sources */, 638E64CF2B8E1CFD00DCFA3B /* SyncTasksCountService.swift in Sources */, + 992D6E1C2FA98CBE0091849F /* AudiobookShelfLibrary.swift in Sources */, 63125D132C36D97400D35533 /* EventsService.swift in Sources */, 3F6640902E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel in Sources */, 3FF5BA672E10EA6F00B82BCC /* HardcoverBook+CoreDataProperties.swift in Sources */, @@ -4476,6 +4671,7 @@ 4140EA76227289B50009F794 /* Chapter+CoreDataClass.swift in Sources */, 41A359C6276232E00020D5F5 /* MappingModel_v7_to_v8.xcmappingmodel in Sources */, 63CD851E2CE2EEBC00EDBEA8 /* UIFont+BookPlayer.swift in Sources */, + 99F3C2142F65174700AC91A2 /* SimpleExternalResource.swift in Sources */, 62CADBAE2725FE2900A4A98F /* AVAudioAssetImageDataProvider.swift in Sources */, 412AB71627017ABE00969618 /* DBVersion.swift in Sources */, 9FC1E45A2814E0B000522FA8 /* NetworkUtils.swift in Sources */, @@ -4487,6 +4683,7 @@ 6356F9CD2AC8A1CE00B7A027 /* DatabaseInitializer.swift in Sources */, 41C23400272E195B006BC7B8 /* SimpleItemType.swift in Sources */, 4140EA6D227289930009F794 /* Constants.swift in Sources */, + 99F3C2412F6E322800AC91A2 /* SchemaV3SyncTasksModels.swift in Sources */, 41EB071C2752FA6B00EFEE13 /* PlaybackService.swift in Sources */, 9FDDD2D9289B64440020C428 /* SyncStatus.swift in Sources */, 9F9C7B5129F9670100E257B0 /* BookmarksResponse.swift in Sources */, @@ -4495,9 +4692,10 @@ 63E1FF912E6C8C2000F2E003 /* SyncJobType.swift in Sources */, 9FC1E45D2814E6A500522FA8 /* NetworkProvider.swift in Sources */, 9FC1E4602814F66F00522FA8 /* AccountAPI.swift in Sources */, + 9911FBBF2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */, 9FC1E4792816001400522FA8 /* KeychainService.swift in Sources */, + 99D995902F71AB6800BAF216 /* JellyfinLibraryItem.swift in Sources */, 4140EA7F227289D20009F794 /* Library+CoreDataProperties.swift in Sources */, - 63C6C30E2B538D8600FFE0D8 /* SyncTasksStorage.swift in Sources */, 4140EA7A227289C20009F794 /* Book+CoreDataClass.swift in Sources */, 9F49072D2903663800054AD6 /* SortType.swift in Sources */, 6357F11A2A8BA084007947FC /* BPURLSession.swift in Sources */, @@ -4505,16 +4703,21 @@ 9FBDBC7E287940D900D315A2 /* ContentsResponse.swift in Sources */, 4140EA7C227289C70009F794 /* LibraryItem+CoreDataClass.swift in Sources */, 63C6C3122B54F16800FFE0D8 /* LibraryItemSyncOperation.swift in Sources */, + 9911FBAF2F71D03800DC9A2B /* ConcurrenceService.swift in Sources */, + 992D6E1A2FA98C8F0091849F /* AudiobookShelfLibraryLevelData.swift in Sources */, 638352CE2E67F327009EE79E /* TasksDataManager.swift in Sources */, 638352D02E67F327009EE79E /* SyncTasksModels.swift in Sources */, 638352D12E67F327009EE79E /* SwiftDataModels+Extensions.swift in Sources */, + 9911FBB82F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */, 4140EA74227289AE0009F794 /* Theme+CoreDataClass.swift in Sources */, 4140EA6E227289960009F794 /* DeleteMode.swift in Sources */, 9F6BC86727E6D03E002CF2A6 /* WatchApplicationContext.swift in Sources */, 9FAFC9F52995BB5C00FD531E /* RemoteFileURLResponse.swift in Sources */, 4140EA77227289B90009F794 /* Chapter+CoreDataProperties.swift in Sources */, 4140EA7B227289C40009F794 /* Book+CoreDataProperties.swift in Sources */, + 992D6E182FA98C5C0091849F /* AudiobookShelfLibraryItem.swift in Sources */, 4140EA81227289D80009F794 /* Folder+CoreDataProperties.swift in Sources */, + 992D6E1E2FA98E1A0091849F /* AudiobookShelfAudiobookDetailsData.swift in Sources */, 41EB07192752F1BA00EFEE13 /* PlayableChapter.swift in Sources */, 9FC1E44B2814C4DE00522FA8 /* NetworkClient.swift in Sources */, 3FA43BF92E110B4900DF9B1F /* SimpleHardcoverBook.swift in Sources */, @@ -4526,9 +4729,15 @@ 9F56C84E287B734C00EA9751 /* BPLogger.swift in Sources */, 6327E0C72ADB9914004780DC /* DownloadState.swift in Sources */, 418CABB525EF28FC00D8C878 /* MappingModel_v3_to_v4.xcmappingmodel in Sources */, + 9911FBC72F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */, 9F9F3B71280E4E4B004359DA /* SyncService.swift in Sources */, + 996D4CC62F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, + 992D6E152FA98B4D0091849F /* AudiobookShelfConnectionService.swift in Sources */, + 992D6E162FA98B4D0091849F /* AudiobookShelfConnectionData.swift in Sources */, + 996D4CD42F98A50C00FC3B57 /* IntegrationLibraryItemProtocol.swift in Sources */, 4124AB2225DFE1A60007C839 /* CoreDataStack.swift in Sources */, 9F7B64722803216100895ECC /* Account+CoreDataProperties.swift in Sources */, + 9911FBB22F71E54C00DC9A2B /* ConcurrentTasksRepository.swift in Sources */, 9F7B64752803217400895ECC /* Account+CoreDataClass.swift in Sources */, 9FBF33ED29F6293C00501639 /* SimpleBookmark.swift in Sources */, 639AC98B2AD9F2840053AFC6 /* BPTaskDownloadDelegate.swift in Sources */, @@ -4538,23 +4747,35 @@ 41A90C4627563F5A00C30394 /* ItemType.swift in Sources */, 9F2E00932A568F800001FE20 /* IdentifiersResponse.swift in Sources */, 4140EA7E227289CE0009F794 /* Library+CoreDataClass.swift in Sources */, + 9911FBB62F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */, 41C233FE272E1958006BC7B8 /* SimpleLibraryItem.swift in Sources */, + 996D4CD22F98A45300FC3B57 /* IntegrationError.swift in Sources */, + 9911FBC12F7465EA00DC9A2B /* ConcurrentTasksCountService.swift in Sources */, 416AAC3523F515B0005AD04F /* String+BookPlayer.swift in Sources */, + 99D995952F71ABBD00BAF216 /* JellyfinAudiobookDetailsData.swift in Sources */, 6308260B2AF5B66D002ACE0D /* UserDefaults+BookPlayer.swift in Sources */, FEEDBABE0000000000000002 /* SharedWidgetStore.swift in Sources */, 63398E3D2D68254000A6934E /* SimplePlaybackRecord.swift in Sources */, 99F3C2042F5FC76D00AC91A2 /* MigrationPlan.swift in Sources */, 41A8942B2652A7DF0032E972 /* Bundle+BookPlayer.swift in Sources */, 4138CE1226E5542D0014F11E /* Bookmark+CoreDataClass.swift in Sources */, + 99F3C2112F650F1200AC91A2 /* ExternalResource+CoreDataProperties.swift in Sources */, 41EB07162752F17B00EFEE13 /* PlayableItem.swift in Sources */, + 99D9958A2F719E7E00BAF216 /* BuildFile in Sources */, 4140EA84227289E60009F794 /* BookPlayer.xcdatamodeld in Sources */, - 632132552F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, + 99F3C20E2F650F0900AC91A2 /* ExternalResource+CoreDataClass.swift in Sources */, 99F3C2072F5FD41300AC91A2 /* SchemaV2SyncTasksModels.swift in Sources */, 412AB70A2701421600969618 /* ManualOrderMigrationUtils.swift in Sources */, 63B9149E2EE47951000918D8 /* AppEnvironment.swift in Sources */, F9FA95F9A4AE359006A85B88 /* PreferencesAPI.swift in Sources */, 2D7D5973F598D517CBCCE0ED /* PreferencesSyncService.swift in Sources */, CCC7E1CC127610C3687B8A50 /* SortPreferencesResolving.swift in Sources */, + 89058F6081ECE1258DE9607D /* AudiobookShelfOIDCFlow.swift in Sources */, + C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */, + 82BB1A19497560FC62C4741C /* WebAuthenticating.swift in Sources */, + AE284AB4D4139ED869288F99 /* IntegrationConnectionPayload.swift in Sources */, + EF5A25679D73F58A5D551D01 /* IntegrationConnectionStore.swift in Sources */, + 8AC2579BAAAAFE0091DA9285 /* PKCE.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4566,6 +4787,7 @@ 4106414025872614008EB8D0 /* BarView.swift in Sources */, 3F66408F2E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel in Sources */, 63E893B02CB0AA7100946CD4 /* LastBookStartPlaybackIntent.swift in Sources */, + 996D4CC92F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, 630826062AF525F1002ACE0D /* SharedWidgetContainerView.swift in Sources */, 4106414925872699008EB8D0 /* TimeListenedSmallView.swift in Sources */, 417D996F256D73B400C3B753 /* Intents.intentdefinition in Sources */, @@ -4587,6 +4809,7 @@ 416A29DA256AB6A900605395 /* BookPlayer.xcdatamodeld in Sources */, 630826112AF6CA44002ACE0D /* SharedIconWidget.swift in Sources */, 637DAB0B2AEB3F6D006DC2D1 /* WidgetEntries.swift in Sources */, + 990BF7112FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 418CABB625EF28FC00D8C878 /* MappingModel_v3_to_v4.xcmappingmodel in Sources */, 63E893932CAFA89000946CD4 /* BPPlayerError.swift in Sources */, 41ADD6DA2570AC6300660C64 /* RecentBooksWidgetView.swift in Sources */, @@ -4598,7 +4821,6 @@ 63E893B32CB0AACE00946CD4 /* PlayLastControlWidgetView.swift in Sources */, 639720722CAAF8290045A4DB /* LastPlayedProvider.swift in Sources */, 630826022AF295AE002ACE0D /* CornerView.swift in Sources */, - 632132532F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4615,7 +4837,6 @@ 0EF52614EF6770D09CA81CE4 /* IntegrationConnectedView.swift in Sources */, B26B34D894351E8452FBB64B /* IntegrationServerInformationSectionView.swift in Sources */, 634BA58D2C14D5330015314D /* SecondOnboardingType.swift in Sources */, - 8AF18A332CF0A26200238F8D /* JellyfinLibraryItem.swift in Sources */, 9F82DF9C27DFE46B001B0EA8 /* PhoneWatchConnectivityService.swift in Sources */, 9F00A600295001C0005EA316 /* ItemDetailsArtworkSectionView.swift in Sources */, 8A9D0D262CCED543007A924D /* JellyfinLibraryView.swift in Sources */, @@ -4680,6 +4901,7 @@ 63C1A8B02B0915EE00C4B418 /* WidgetUtils.swift in Sources */, 41B2A5ED21CCC6D100917584 /* AppNavigationController.swift in Sources */, 9F22DE40288D8BC800056FCD /* BaseLabel.swift in Sources */, + 990BF7142FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 63B407432C1B0CC1000A3B19 /* StorySkipControlsView.swift in Sources */, 99329DD02F3C282D003F8E73 /* AirplayPicker.swift in Sources */, 6338C7932E4AA4BA008016E5 /* LibraryNode.swift in Sources */, @@ -4709,6 +4931,7 @@ 9F5011F92A6580800075FEBA /* ShakeMotionService.swift in Sources */, 634BA5932C160B890015314D /* LoadingBar.swift in Sources */, 9F64C6242793C3DA00B2493C /* PlayerControlsViewModel.swift in Sources */, + 990442142F894DDB007E2A44 /* SubscriptionPillView.swift in Sources */, 63B4A3C22E92A87C00784A22 /* BookmarksFileTransferable.swift in Sources */, 6356F9B52AC7CC5600B7A027 /* CancelSleepTimerIntent.swift in Sources */, 6319089B2E335196009249C1 /* ContributorsListView.swift in Sources */, @@ -4723,6 +4946,7 @@ 99329DC72F3AF3B6003F8E73 /* BubbleButton.swift in Sources */, 4151A6DD26E4A13A00E49DBE /* MainCoordinator.swift in Sources */, 634BA54C2C0C21AF0015314D /* SecondOnboardingCoordinator.swift in Sources */, + 9911FBBB2F736C0500DC9A2B /* ConcurrentSyncTasksView.swift in Sources */, 631908AE2E369EDC009249C1 /* BoostVolumeSectionView.swift in Sources */, 631908F02E369EDC009249C1 /* StartupPlayerSectionView.swift in Sources */, 63C6C2E62B5029BC00FFE0D8 /* SettingsAutolockView.swift in Sources */, @@ -4744,16 +4968,19 @@ 63E893922CAFA89000946CD4 /* BPPlayerError.swift in Sources */, 63682CBE2E2F422900C15FC1 /* DebugFileTransferable.swift in Sources */, 4160A0A123F304530039166B /* LocalizableLabel.swift in Sources */, + 9911FBD72F7CACEC00DC9A2B /* QueuedTasksView.swift in Sources */, 4137BBCC272DAF2E009ED9FE /* MVVMControllerProtocol.swift in Sources */, 631B360C2ABE8ACC001F4C1C /* BPModalOnlyPresentationFlow.swift in Sources */, 99B367FC2F5108BF00C38F7F /* MediaActionRow.swift in Sources */, D6BA8F162A4CA94800C2BD9A /* StorageRowView.swift in Sources */, 9F3C436A284181690066D99A /* DataInitializerCoordinator.swift in Sources */, 9F3C436B284181C70066D99A /* AlertPresenter.swift in Sources */, + 990442102F889201007E2A44 /* ExternalSyncInfoView.swift in Sources */, 63E893B22CB0AACE00946CD4 /* PlayLastControlWidgetView.swift in Sources */, 63B760FC2C33B77F00AA98C7 /* SupportProfileView.swift in Sources */, 638487CD2EC77B1200DF442B /* AudiobookShelfAudiobookDetailsView.swift in Sources */, 638487CE2EC77B1200DF442B /* AudiobookShelfAudiobookDetailsViewModel.swift in Sources */, + 99F3C2212F69D32E00AC91A2 /* ExternalImportViewModel.swift in Sources */, 63344C002EA708F800B90DF7 /* BackupDatabaseOperation.swift in Sources */, 9F00A6212950F44B005EA316 /* ImagePicker.swift in Sources */, 638487BB2EC7764800DF442B /* AudiobookShelfLibraryListItemView.swift in Sources */, @@ -4785,11 +5012,7 @@ 99329DC12F3AAB57003F8E73 /* DismissableRegionView.swift in Sources */, 639DF4982E634C8600B29BBB /* MiniPlayerArtworkView.swift in Sources */, 9FB20EB729A423410021663B /* InterfaceUpdater.swift in Sources */, - 638487A22EC7722400DF442B /* AudiobookShelfLibrary.swift in Sources */, - 638487A32EC7722400DF442B /* AudiobookShelfLibraryItem.swift in Sources */, - 638487A42EC7722400DF442B /* AudiobookShelfConnectionService.swift in Sources */, - 638487A52EC7722400DF442B /* AudiobookShelfConnectionData.swift in Sources */, - 638487A72EC7722400DF442B /* AudiobookShelfAudiobookDetailsData.swift in Sources */, + 99F3C21F2F69D0AF00AC91A2 /* ExternalImportView.swift in Sources */, 3F7B64362E0F71E900299D97 /* HardcoverSettingsView.swift in Sources */, 631908A12E33EF50009249C1 /* ConfettiView.swift in Sources */, 6399EA352F12BA5B0077BB13 /* PasskeyService.swift in Sources */, @@ -4809,15 +5032,12 @@ 6338C7912E4AA32E008016E5 /* FolderView.swift in Sources */, 99329DD32F3D7493003F8E73 /* BPAlertModifier.swift in Sources */, 63B760F72C32734000AA98C7 /* SecondOnboardingResponse.swift in Sources */, - 99F3C1FC2F5F873900AC91A2 /* UUIDMigrationPolicy.swift in Sources */, 41640A3724416EE8004FB97B /* Intents.intentdefinition in Sources */, 63AD93DB2E3C7C020077E73A /* PlayerState.swift in Sources */, 6370427F2E2BEAC7005353D1 /* SettingsView.swift in Sources */, 41AD3DA1221C7CAB00DC41E1 /* Icon.swift in Sources */, 631908972E33442A009249C1 /* SettingsTipJarView.swift in Sources */, C39401E920DEE83200F3DC71 /* UIView+BookPlayer.swift in Sources */, - 8AAD8A552CEE884F000A4B4B /* JellyfinConnectionService.swift in Sources */, - 632132542F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, 637043542E2DED05005353D1 /* SettingsMailView.swift in Sources */, 8A2A22392CEFEB8E00E73A2D /* AdaptiveVGrid.swift in Sources */, 631908B02E369FFA009249C1 /* AutoSleepTimerSectionView.swift in Sources */, @@ -4838,7 +5058,6 @@ F50163BEFB92FB6B1B778C5E /* WindowHelper.swift in Sources */, 63E54C342D50576C0040355D /* TipJarView.swift in Sources */, 63AD93DD2E3C7F5A0077E73A /* ProfileProCalloutSectionView.swift in Sources */, - 638487B72EC7752000DF442B /* AudiobookShelfLibraryLevelData.swift in Sources */, 631908B62E36B007009249C1 /* SettingsAppIconsView.swift in Sources */, 63AD93D92E3C754B0077E73A /* ProfileListenedSectionView.swift in Sources */, 631686102E372FE7004A322F /* ThemesView.swift in Sources */, @@ -4854,6 +5073,7 @@ 6370434C2E2C046F005353D1 /* SettingsPrivacySectionView.swift in Sources */, 8A9D0D242CCED53C007A924D /* JellyfinLibraryViewModel.swift in Sources */, 631908AA2E369BDB009249C1 /* ProgressSeekingSectionView.swift in Sources */, + 992D6E102FA2BD290091849F /* DynamicWaveLoadingView.swift in Sources */, 636ED1E82D51331E00BFF3FD /* TipJarViewModel.swift in Sources */, 9F2E00DE2A5C2B810001FE20 /* StorageCloudDeletedViewModel.swift in Sources */, 3F7B64422E0FB27000299D97 /* AnyCodable.swift in Sources */, @@ -4879,13 +5099,13 @@ 9FE86B8E2A544CB200B5450E /* Binding+BookPlayer.swift in Sources */, 41A1B12E226FC7E500EA0400 /* ImportOperation.swift in Sources */, 6356D48C2C584EFD00994B71 /* CustomSkipForwardIntent.swift in Sources */, - 5126F121258E9F18009965DC /* URL+BookPlayer.swift in Sources */, 6370433B2E2BF77C005353D1 /* SettingsScreen.swift in Sources */, 9F5F13462977A06300F061A0 /* ProfileCardView.swift in Sources */, 9F2DA27F27F0C68D00C8EF2B /* CarPlaySceneDelegate.swift in Sources */, 4193E202243A91AE004D6A82 /* ActionParserService.swift in Sources */, 41A359C3276232E00020D5F5 /* MappingModel_v7_to_v8.xcmappingmodel in Sources */, 63B760F92C32738E00AA98C7 /* StoryAccountSubscriptionService.swift in Sources */, + 99D995932F71ABAA00BAF216 /* JellyfinAudiobookDetailsView.swift in Sources */, 9F5F12DB2976E8CD00F061A0 /* ProfileView.swift in Sources */, 41C8ABD126836F50003B67D1 /* ImportViewModel.swift in Sources */, 41D20DAF25D5F5A100AAEE30 /* MappingModel_v1_to_v2.xcmappingmodel in Sources */, @@ -4908,7 +5128,6 @@ 9F89D89C27EDFCA400F73947 /* SceneDelegate.swift in Sources */, 638761D32E62BD7A009332E8 /* ItemListSelectionView.swift in Sources */, 3F6640912E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel in Sources */, - 8ADD46242CF38F9F002E9C50 /* JellyfinAudiobookDetailsView.swift in Sources */, 99329DB72F3AA8F6003F8E73 /* PlayControlsRowView.swift in Sources */, 416AAC3323F51031005AD04F /* LocalizableButton.swift in Sources */, 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */, @@ -4935,18 +5154,16 @@ 4124122A26D19B9100B099DB /* StorageItem.swift in Sources */, 41A1B12F226FE0F900EA0400 /* Notification+BookPlayer.swift in Sources */, 3F6640942E17386400356522 /* DeleteUserBookData.swift in Sources */, + 990442122F88B101007E2A44 /* SyncInvitationCard.swift in Sources */, 6356F9BD2AC7CFFB00B7A027 /* CustomSleepTimerIntent.swift in Sources */, 63C48D512E3F1FCC005FBB96 /* ItemListView.swift in Sources */, 412AB70E2701463100969618 /* LoadingViewModel.swift in Sources */, 637043402E2BFD6C005353D1 /* SettingsStorageSectionView.swift in Sources */, - 8AAD8A572CEE88E5000A4B4B /* JellyfinConnectionData.swift in Sources */, 631908AC2E369E31009249C1 /* GlobalSpeedSectionView.swift in Sources */, F906EF4FC85B1CCE138B230D /* PasskeyEmailInputView.swift in Sources */, 07416E5AD384927D90BFB6EE /* PasskeyCreatingView.swift in Sources */, CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */, 7CAD4B67352939D0A1E54A21 /* IntegrationConnectionFormViewModelProtocol.swift in Sources */, - C3C998E7EA2919BB438B337C /* IntegrationLibraryItemProtocol.swift in Sources */, - 760180C62F243705DE6B3224 /* IntegrationError.swift in Sources */, D5E6F7081A2B3C4D5E6F7081 /* MediaServersView.swift in Sources */, 18D0AD99D1AAA10976F75C11 /* BPNavigation.swift in Sources */, 9236C57F833C70652BDD1FA3 /* TabEditingEnvironmentKey.swift in Sources */, @@ -4957,18 +5174,14 @@ 9586CECD8FB418C6CFB0A7DD /* IntegrationLibraryView.swift in Sources */, 41A6E5ED3159D85692581CC9 /* IntegrationLibraryGridView.swift in Sources */, C53864BEFAE4D1CEC668A6B3 /* IntegrationLibraryListView.swift in Sources */, - F7CB281CF765C468BFA9B0D8 /* IntegrationDetailsViewModelProtocol.swift in Sources */, + 996D4CC72F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, A7FA45CB2BD6567C9B5EA372 /* IntegrationTagsView.swift in Sources */, A34DA648F3EF87A9E11631B3 /* IntegrationAudiobookDetailsView.swift in Sources */, 78D8C50324731BBDF9E9281E /* LibraryOptionsView.swift in Sources */, - 81173188169F2573B4F5AA90 /* AudiobookShelfOIDCFlow.swift in Sources */, - 4E6F3810544774F70335675E /* PKCE.swift in Sources */, - 3FDACF42BAD03DBFA7AD918B /* IntegrationHTTPClient.swift in Sources */, - 0199296D1E63EE13FC3558E6 /* WebAuthenticating.swift in Sources */, - 0235B7EE8FA51C49AFBBBE71 /* IntegrationConnectionPayload.swift in Sources */, - 843575DDF1CEEBC9A2EF015C /* IntegrationConnectionStore.swift in Sources */, 6DF751D96098B1A3224FDF43 /* IntegrationServerAddress.swift in Sources */, 39313742614BCCA918DA7C0E /* IntegrationConnectionFlowView.swift in Sources */, + BF96AEBA456420ADE446427F /* URL+BookPlayer.swift in Sources */, + ED1900FB7892C8FA42A5A665 /* UUIDMigrationPolicy.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5024,8 +5237,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 996D4CC52F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, + 9911FBBE2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */, 9FC1E46C2815A8CA00522FA8 /* LibraryAPI.swift in Sources */, 9FAFC9F42995BB5C00FD531E /* RemoteFileURLResponse.swift in Sources */, + 9911FBB92F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */, + 992D6E172FA98C5C0091849F /* AudiobookShelfLibraryItem.swift in Sources */, 4124AB2125DFE1A60007C839 /* CoreDataStack.swift in Sources */, 41A1B11F226F88C500EA0400 /* Chapter+CoreDataClass.swift in Sources */, 4138CE1626E584B60014F11E /* BookmarkType.swift in Sources */, @@ -5033,17 +5250,21 @@ 412AB7092701421600969618 /* ManualOrderMigrationUtils.swift in Sources */, 63344C032EA7097D00B90DF7 /* DatabaseBackupService.swift in Sources */, 9F1345B82938DF360089B1DE /* UIFont+BookPlayer.swift in Sources */, + 9911FBC22F7465EA00DC9A2B /* ConcurrentTasksCountService.swift in Sources */, 639AC98C2AD9F2840053AFC6 /* BPTaskDownloadDelegate.swift in Sources */, 9FFCC08F289418CA00F4952E /* SimpleChapter.swift in Sources */, + 9911FBC42F76122400DC9A2B /* FileUploadOperation.swift in Sources */, 6399EA3A2F12BB690077BB13 /* PasskeyModels.swift in Sources */, 416AAC3423F515AF005AD04F /* String+BookPlayer.swift in Sources */, 9FBDBC792879409600D315A2 /* SyncableItem.swift in Sources */, + 996D4CD32F98A50C00FC3B57 /* IntegrationLibraryItemProtocol.swift in Sources */, 62AAE22E274AA6DE001EB9FF /* LibraryService.swift in Sources */, 9F2DC9E52A014BB5006CDF1F /* PricingModel.swift in Sources */, 41A1B126226F88C500EA0400 /* LibraryItem+CoreDataProperties.swift in Sources */, 6327E0C62ADB9913004780DC /* DownloadState.swift in Sources */, 63B9149F2EE47951000918D8 /* AppEnvironment.swift in Sources */, 63C6C3192B5E102200FFE0D8 /* SyncTask.swift in Sources */, + 99D9958F2F71AB6800BAF216 /* JellyfinLibraryItem.swift in Sources */, 3FF5BA662E10EA6F00B82BCC /* HardcoverBook+CoreDataProperties.swift in Sources */, 62CADBAB2725C23A00A4A98F /* ArtworkService.swift in Sources */, 9F7B64772803B0B000895ECC /* AccountService.swift in Sources */, @@ -5051,6 +5272,8 @@ 4138CE1126E5542C0014F11E /* Bookmark+CoreDataClass.swift in Sources */, 41A90C4827564DAA00C30394 /* BookPlayerError.swift in Sources */, 41C23401272E1960006BC7B8 /* SimpleTheme.swift in Sources */, + 992D6E132FA98B4D0091849F /* AudiobookShelfConnectionService.swift in Sources */, + 992D6E142FA98B4D0091849F /* AudiobookShelfConnectionData.swift in Sources */, 41A1B124226F88C500EA0400 /* Book+CoreDataProperties.swift in Sources */, 3FF5BA692E10EA8000B82BCC /* HardcoverBook+CoreDataClass.swift in Sources */, 41A1B108226E9DF800EA0400 /* DataManager.swift in Sources */, @@ -5060,16 +5283,23 @@ 9FDDD2DE289BEE590020C428 /* SyncJobScheduler.swift in Sources */, 41A8942A2652A7DF0032E972 /* Bundle+BookPlayer.swift in Sources */, 41A1B0F2226E9D1200EA0400 /* BookPlayer.xcdatamodeld in Sources */, + 99F3C2152F65174700AC91A2 /* SimpleExternalResource.swift in Sources */, 3F66408D2E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel in Sources */, 99F3C1F82F5F873900AC91A2 /* UUIDMigrationPolicy.swift in Sources */, 41A359C5276232E00020D5F5 /* MappingModel_v7_to_v8.xcmappingmodel in Sources */, 41A1B125226F88C500EA0400 /* LibraryItem+CoreDataClass.swift in Sources */, 62CADBA52725BCB200A4A98F /* AVAudioAssetImageDataProvider.swift in Sources */, 9FC1E4592814E0B000522FA8 /* NetworkUtils.swift in Sources */, + 990BF7122FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, + 9911FBB52F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */, + 992D6E192FA98C8F0091849F /* AudiobookShelfLibraryLevelData.swift in Sources */, + 99D995892F719E7E00BAF216 /* BuildFile in Sources */, 41C23403272E1965006BC7B8 /* PlaybackState.swift in Sources */, 99F3C2052F5FC76D00AC91A2 /* MigrationPlan.swift in Sources */, + 992D6E1B2FA98CBE0091849F /* AudiobookShelfLibrary.swift in Sources */, 41A1B120226F88C500EA0400 /* Chapter+CoreDataProperties.swift in Sources */, 41CE44A9227215B500C900AF /* Notification+BookPlayerKit.swift in Sources */, + 99F3C2422F6E322800AC91A2 /* SchemaV3SyncTasksModels.swift in Sources */, 41C233FF272E195B006BC7B8 /* SimpleItemType.swift in Sources */, 9FDDD2D8289B64440020C428 /* SyncStatus.swift in Sources */, 9FDDD2E1289BFCE20020C428 /* LibraryService+Sync.swift in Sources */, @@ -5078,6 +5308,7 @@ 6308260A2AF5B66D002ACE0D /* UserDefaults+BookPlayer.swift in Sources */, FEEDBABE0000000000000003 /* SharedWidgetStore.swift in Sources */, 63398E3E2D68254000A6934E /* SimplePlaybackRecord.swift in Sources */, + 99F3C2342F6BBECC00AC91A2 /* JellyfinConnectionData.swift in Sources */, 4140EA1F22723CFC0009F794 /* CommandParser.swift in Sources */, 6356F9CE2AC8A1CE00B7A027 /* DatabaseInitializer.swift in Sources */, 41EB071B2752FA6B00EFEE13 /* PlaybackService.swift in Sources */, @@ -5092,9 +5323,11 @@ 9FBDBC7D287940D900D315A2 /* ContentsResponse.swift in Sources */, 9F07B79829B770B7005A939D /* BPTaskUploadDelegate.swift in Sources */, 41C3394925E04091003ED2B0 /* MappingModel_v2_to_v3.xcmappingmodel in Sources */, + 996D4CD12F98A45300FC3B57 /* IntegrationError.swift in Sources */, 41640A452441ACE2004FB97B /* Intents.intentdefinition in Sources */, 41D20DB225D5F5A100AAEE30 /* MappingModel_v1_to_v2.xcmappingmodel in Sources */, 412AB71527017ABE00969618 /* DBVersion.swift in Sources */, + 99F3C2122F650F1200AC91A2 /* ExternalResource+CoreDataProperties.swift in Sources */, 9F6BC86627E6D03D002CF2A6 /* WatchApplicationContext.swift in Sources */, 4138CE1326E554320014F11E /* Bookmark+CoreDataProperties.swift in Sources */, 41A1B123226F88C500EA0400 /* Book+CoreDataClass.swift in Sources */, @@ -5104,6 +5337,7 @@ 41A1B10C226E9E9700EA0400 /* DeleteMode.swift in Sources */, 9FC1E44A2814C4DE00522FA8 /* NetworkClient.swift in Sources */, 9F9C7B5029F9670100E257B0 /* BookmarksResponse.swift in Sources */, + 9911FBC82F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */, 41EB07182752F1BA00EFEE13 /* PlayableChapter.swift in Sources */, 9F1345BA2938E0130089B1DE /* Spacing.swift in Sources */, 638352CA2E67F327009EE79E /* TasksDataManager.swift in Sources */, @@ -5111,28 +5345,33 @@ 638352CD2E67F327009EE79E /* SwiftDataModels+Extensions.swift in Sources */, 5126F122258E9F18009965DC /* URL+BookPlayer.swift in Sources */, 9F56C84D287B734C00EA9751 /* BPLogger.swift in Sources */, - 632132502F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, 418CABB425EF28FC00D8C878 /* MappingModel_v3_to_v4.xcmappingmodel in Sources */, + 99D995962F71ABBD00BAF216 /* JellyfinAudiobookDetailsData.swift in Sources */, 41A1B121226F88C500EA0400 /* PlaybackRecord+CoreDataClass.swift in Sources */, 99F3C1ED2F5BCE1600AC91A2 /* LibraryItemRef.swift in Sources */, 9F9F3B70280E4E4B004359DA /* SyncService.swift in Sources */, 41A1B104226E9DBA00EA0400 /* UIColor+BookPlayer.swift in Sources */, 9F7B64712803216100895ECC /* Account+CoreDataProperties.swift in Sources */, + 992D6E1D2FA98E1A0091849F /* AudiobookShelfAudiobookDetailsData.swift in Sources */, 639AC9892AD9F1D50053AFC6 /* BPDownloadURLSession.swift in Sources */, 9F7B64742803217400895ECC /* Account+CoreDataClass.swift in Sources */, + 9911FBB02F71D03800DC9A2B /* ConcurrenceService.swift in Sources */, 63E1FF922E6C8C2000F2E003 /* SyncJobType.swift in Sources */, 99F3C20A2F62285800AC91A2 /* ApiResponse.swift in Sources */, + 99D995872F719E7600BAF216 /* JellyfinConnectionService.swift in Sources */, 9FBDBC802879C6C900D315A2 /* UploadItemResponse.swift in Sources */, 41A1B11D226F88C500EA0400 /* Theme+CoreDataClass.swift in Sources */, 41A894202652A5DE0032E972 /* Configuration.swift in Sources */, + 99F3C20F2F650F0900AC91A2 /* ExternalResource+CoreDataClass.swift in Sources */, 41A90C4527563F5A00C30394 /* ItemType.swift in Sources */, 41A1B129226F88C500EA0400 /* Folder+CoreDataClass.swift in Sources */, 41C233FD272E1957006BC7B8 /* SimpleLibraryItem.swift in Sources */, 3FA43BF82E110B4900DF9B1F /* SimpleHardcoverBook.swift in Sources */, 41A1B12A226F88C500EA0400 /* Folder+CoreDataProperties.swift in Sources */, 638E64CE2B8E1CFD00DCFA3B /* SyncTasksCountService.swift in Sources */, + 9911FBAD2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */, 99F3C1FE2F5FC2F200AC91A2 /* SchemaV1SyncTasksModels.swift in Sources */, - 63C6C30D2B538D8500FFE0D8 /* SyncTasksStorage.swift in Sources */, + 9911FBB32F71E54C00DC9A2B /* ConcurrentTasksRepository.swift in Sources */, 3F66408A2E162ABF00356522 /* AudioMetadataService.swift in Sources */, 41EB07152752F17B00EFEE13 /* PlayableItem.swift in Sources */, 41A1B11E226F88C500EA0400 /* Theme+CoreDataProperties.swift in Sources */, @@ -5140,11 +5379,18 @@ 99F3C2082F5FD41300AC91A2 /* SchemaV2SyncTasksModels.swift in Sources */, DCFC79BEBAEA628FB13F33A1 /* BPFont.swift in Sources */, 63AD93D32E3C1BA70077E73A /* SimpleAccount.swift in Sources */, + 99C919CF2F99A8C100F66081 /* IntegrationDetailsViewModelProtocol.swift in Sources */, 41A1B127226F88C500EA0400 /* Library+CoreDataClass.swift in Sources */, 9F0872DB2A19867C00B7FD4A /* ArtworkResponse.swift in Sources */, FF95F8C692908D744A32D761 /* PreferencesAPI.swift in Sources */, A13B98C548AA6BFD0E6FC0C7 /* PreferencesSyncService.swift in Sources */, 52AA441379FD94339FEECB55 /* SortPreferencesResolving.swift in Sources */, + FAE65B9ED5048BF9DD783BEF /* AudiobookShelfOIDCFlow.swift in Sources */, + 2260D77EDD8BEEB0D433CD18 /* IntegrationHTTPClient.swift in Sources */, + FED6216CFABF04A613866335 /* WebAuthenticating.swift in Sources */, + 5E699DCEB4EB06CB0A18A770 /* IntegrationConnectionPayload.swift in Sources */, + F575EA7BBE6C619D27225281 /* IntegrationConnectionStore.swift in Sources */, + 77980C5A9B7CF1A948FE7CF1 /* PKCE.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5155,8 +5401,8 @@ 630826012AF29538002ACE0D /* SharedWidgetEntry.swift in Sources */, 6340D5692AF12D48003D0B09 /* SharedWidget.swift in Sources */, 63005A2D2AE7FD8000A4CA2C /* Intents.intentdefinition in Sources */, + 990BF7132FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 630825FE2AF293DC002ACE0D /* SharedWidgetContainerView.swift in Sources */, - 632132512F8AB05B0044353B /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, 630825FC2AF2923B002ACE0D /* WidgetUtils.swift in Sources */, 630826122AF6CA45002ACE0D /* SharedIconWidget.swift in Sources */, 3F66408E2E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel in Sources */, @@ -5166,6 +5412,7 @@ 63005A302AE7FD8000A4CA2C /* BookPlayerWidgets.swift in Sources */, 63005A312AE7FD8000A4CA2C /* MappingModel_v1_to_v2.xcmappingmodel in Sources */, 63F828572AED56FA00B5CE0C /* CornerView.swift in Sources */, + 996D4CC82F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, 63005A342AE7FD8000A4CA2C /* MappingModel_v2_to_v3.xcmappingmodel in Sources */, 6340D56E2AF13E4C003D0B09 /* RectangularView.swift in Sources */, 632941402AEEE739000AD2EE /* CircularView.swift in Sources */, @@ -6712,14 +6959,6 @@ version = 8.36.0; }; }; - 41F1A214254B0AA40043FCF3 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/onevcat/Kingfisher.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 7.9.0; - }; - }; 41F1A226254B0C6C0043FCF3 /* XCRemoteSwiftPackageReference "ZipArchive" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/GianniCarlo/ZipArchive.git"; @@ -6744,6 +6983,22 @@ minimumVersion = 0.4.0; }; }; + 990775752FF33BD700E35FAE /* XCRemoteSwiftPackageReference "Get" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/kean/Get.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.2.1; + }; + }; + 9907757A2FF33C0C00E35FAE /* XCRemoteSwiftPackageReference "Kingfisher" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/onevcat/Kingfisher.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 8.10.0; + }; + }; 9FE8188D2805BCE40089A41E /* XCRemoteSwiftPackageReference "purchases-ios" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/RevenueCat/purchases-ios.git"; @@ -6785,22 +7040,47 @@ package = 41F1A226254B0C6C0043FCF3 /* XCRemoteSwiftPackageReference "ZipArchive" */; productName = ZipArchive; }; - 62CADBA72725BCE800A4A98F /* Kingfisher */ = { + 63AE44722E6161B60088668F /* DirectoryWatcher */ = { + isa = XCSwiftPackageProductDependency; + package = 63AE44712E6161B60088668F /* XCRemoteSwiftPackageReference "DirectoryWatcher" */; + productName = DirectoryWatcher; + }; + 8A495CC52CC85D27001B4244 /* JellyfinAPI */ = { + isa = XCSwiftPackageProductDependency; + package = 8A495CC42CC8589F001B4244 /* XCRemoteSwiftPackageReference "jellyfin-sdk-swift" */; + productName = JellyfinAPI; + }; + 990775762FF33BD700E35FAE /* Get */ = { + isa = XCSwiftPackageProductDependency; + package = 990775752FF33BD700E35FAE /* XCRemoteSwiftPackageReference "Get" */; + productName = Get; + }; + 990775782FF33BE100E35FAE /* Get */ = { + isa = XCSwiftPackageProductDependency; + package = 990775752FF33BD700E35FAE /* XCRemoteSwiftPackageReference "Get" */; + productName = Get; + }; + 9907757B2FF33C0C00E35FAE /* Kingfisher */ = { isa = XCSwiftPackageProductDependency; - package = 41F1A214254B0AA40043FCF3 /* XCRemoteSwiftPackageReference "Kingfisher" */; + package = 9907757A2FF33C0C00E35FAE /* XCRemoteSwiftPackageReference "Kingfisher" */; productName = Kingfisher; }; - 62CADBA92725BCF000A4A98F /* Kingfisher */ = { + 9907757D2FF33C1500E35FAE /* Kingfisher */ = { isa = XCSwiftPackageProductDependency; - package = 41F1A214254B0AA40043FCF3 /* XCRemoteSwiftPackageReference "Kingfisher" */; + package = 9907757A2FF33C0C00E35FAE /* XCRemoteSwiftPackageReference "Kingfisher" */; productName = Kingfisher; }; - 63AE44722E6161B60088668F /* DirectoryWatcher */ = { + 9907757F2FF33D5300E35FAE /* Get */ = { isa = XCSwiftPackageProductDependency; - package = 63AE44712E6161B60088668F /* XCRemoteSwiftPackageReference "DirectoryWatcher" */; - productName = DirectoryWatcher; + package = 990775752FF33BD700E35FAE /* XCRemoteSwiftPackageReference "Get" */; + productName = Get; }; - 8A495CC52CC85D27001B4244 /* JellyfinAPI */ = { + 99D995972F71B02D00BAF216 /* JellyfinAPI */ = { + isa = XCSwiftPackageProductDependency; + package = 8A495CC42CC8589F001B4244 /* XCRemoteSwiftPackageReference "jellyfin-sdk-swift" */; + productName = JellyfinAPI; + }; + 99D995992F71B05700BAF216 /* JellyfinAPI */ = { isa = XCSwiftPackageProductDependency; package = 8A495CC42CC8589F001B4244 /* XCRemoteSwiftPackageReference "jellyfin-sdk-swift" */; productName = JellyfinAPI; @@ -6821,6 +7101,7 @@ 4165EDF920A743D500616EDF /* BookPlayer.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + 99F3C20C2F64ED1900AC91A2 /* Audiobook Player 12.xcdatamodel */, 995787DD2F56674400BF0814 /* Audiobook Player 11.xcdatamodel */, 3FF8EA3D2E11C7980054CD2C /* Audiobook Player 10.xcdatamodel */, 9F7B646F28031E9300895ECC /* Audiobook Player 9.xcdatamodel */, @@ -6833,7 +7114,7 @@ 41D20DAD25D5F0CA00AAEE30 /* Audiobook Player 2.xcdatamodel */, 4165EDFA20A743D500616EDF /* Audiobook Player.xcdatamodel */, ); - currentVersion = 995787DD2F56674400BF0814 /* Audiobook Player 11.xcdatamodel */; + currentVersion = 99F3C20C2F64ED1900AC91A2 /* Audiobook Player 12.xcdatamodel */; path = BookPlayer.xcdatamodeld; sourceTree = ""; versionGroupType = wrapper.xcdatamodel; diff --git a/BookPlayer.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/BookPlayer.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..0c67376eb --- /dev/null +++ b/BookPlayer.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,5 @@ + + + + + diff --git a/BookPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/BookPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index cde4a7949..801befa9e 100644 --- a/BookPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/BookPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "318e5e6f1fd44dd83a98bfdcc02c25efa21b9ba400d81e74fd9a319d50412e50", + "originHash" : "805dd10f49bb52f869285787fba58f83273717c272d6c319c6faa7d81b013cfc", "pins" : [ { "identity" : "devicekit", @@ -51,8 +51,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/onevcat/Kingfisher.git", "state" : { - "revision" : "2ef543ee21d63734e1c004ad6c870255e8716c50", - "version" : "7.12.0" + "revision" : "410984bf301f4fa224fe56277b3f8672cc465c79", + "version" : "8.11.0" } }, { diff --git a/BookPlayer/AppDelegate.swift b/BookPlayer/AppDelegate.swift index 770d6d25b..c05546733 100644 --- a/BookPlayer/AppDelegate.swift +++ b/BookPlayer/AppDelegate.swift @@ -22,7 +22,8 @@ import WatchConnectivity @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, BPLogger { - static weak var shared: AppDelegate? + static weak var shared: AppDelegate? + var pendingURLActions = [Action]() var window: UIWindow? @@ -63,6 +64,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate, BPLogger { Constants.UserDefaults.videoPictureInPictureEnabled: false, ]) + // Hardcover settings live in the shared (app group) suite. Register their defaults + // there so the service (`bool/object(forKey:)`) and the settings UI (`@AppStorage`) + // resolve to the same value before the user explicitly saves anything. + UserDefaults.sharedDefaults.register(defaults: [ + Constants.UserDefaults.hardcoverAutoAddWantToRead: true, + Constants.UserDefaults.hardcoverReadingThreshold: 1.0, + ]) + NotificationCenter.default.addObserver( self, selector: #selector(self.messageReceived), @@ -515,4 +524,4 @@ extension AppDelegate { queue.addOperation(backupOperation) } -} +} \ No newline at end of file diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index 374202d17..25859646d 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -7,6 +7,7 @@ // import SwiftUI +import BookPlayerKit struct AudiobookShelfRootView: View { let connectionService: AudiobookShelfConnectionService @@ -22,11 +23,13 @@ struct AudiobookShelfRootView: View { } @EnvironmentObject private var singleFileDownloadService: SingleFileDownloadService + @EnvironmentObject private var importManager: ImportManager @EnvironmentObject private var theme: ThemeViewModel @Environment(\.dismiss) var dismiss @Environment(\.listState) private var listState - + @Environment(\.accountService) private var accountService + init(connectionService: AudiobookShelfConnectionService) { self.connectionService = connectionService self._connectionViewModel = .init( @@ -55,6 +58,8 @@ struct AudiobookShelfRootView: View { libraryTitle: resolvedLibrary?.title ?? "", connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -69,6 +74,8 @@ struct AudiobookShelfRootView: View { libraryTitle: resolvedLibrary?.title ?? "", connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -83,6 +90,8 @@ struct AudiobookShelfRootView: View { libraryTitle: resolvedLibrary?.title ?? "", connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -97,6 +106,8 @@ struct AudiobookShelfRootView: View { libraryTitle: resolvedLibrary?.title ?? "", connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -111,6 +122,8 @@ struct AudiobookShelfRootView: View { libraryTitle: resolvedLibrary?.title ?? "", connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -297,7 +310,6 @@ struct AudiobookShelfRootView: View { } } - // MARK: - Per-Tab NavigationStack /// Each tab owns its own NavigationStack and BPNavigation. @@ -305,6 +317,8 @@ struct AudiobookShelfRootView: View { private struct AudiobookShelfTabRoot: View { let connectionService: AudiobookShelfConnectionService let singleFileDownloadService: SingleFileDownloadService + let accountService: AccountService + let importManager: ImportManager? let onDismiss: () -> Void var onSwitchLibrary: (() -> Void)? var dismissAll: DismissAction? @@ -321,12 +335,16 @@ private struct AudiobookShelfTabRoot: View { libraryTitle: String, connectionService: AudiobookShelfConnectionService, singleFileDownloadService: SingleFileDownloadService, + accountService: AccountService, + importManager: ImportManager, onDismiss: @escaping () -> Void, onSwitchLibrary: (() -> Void)? = nil, dismissAll: DismissAction? = nil ) { self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.accountService = accountService + self.importManager = importManager self.dismissAll = dismissAll self.onDismiss = onDismiss self.onSwitchLibrary = onSwitchLibrary @@ -338,6 +356,8 @@ private struct AudiobookShelfTabRoot: View { source: source, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, navigation: navigation, navigationTitle: libraryTitle ) @@ -356,6 +376,8 @@ private struct AudiobookShelfTabRoot: View { source: source, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, navigation: navigation, navigationTitle: title ) @@ -365,11 +387,19 @@ private struct AudiobookShelfTabRoot: View { viewModel: AudiobookShelfAudiobookDetailsViewModel( item: item, connectionService: connectionService, - singleFileDownloadService: singleFileDownloadService - ) + singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager + ), + showSubscribeButton: !accountService.hasSyncEnabled(), + allowStream: accountService.hasLiteEnabled(), ) { onDismiss() + } onStreamTap: { + navigation.path.append(AudiobookShelfLibraryLevelData.subscribe) } + case .subscribe: + ExternalSyncIntroView() } } .toolbar { diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift index 918205861..a732ba37a 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift @@ -7,6 +7,7 @@ // import SwiftUI +import BookPlayerKit /// Thin wrapper providing AudiobookShelf-specific cell, row, sort picker, and environment /// to the shared `IntegrationLibraryView`. diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 1d5377f1b..e5447bab4 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -19,6 +19,9 @@ enum AudiobookShelfLayout { @MainActor final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLogger { + var importManager: ImportManager? + var accountService: AccountService + enum Routes { case done } @@ -44,7 +47,9 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] - + @Published var useSelectedItems: Bool = false + @Published var showingDownloadConfirmation = false + var onTransition: BPTransition? let connectionService: AudiobookShelfConnectionService @@ -122,12 +127,16 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, source: AudiobookShelfLibraryViewSource, connectionService: AudiobookShelfConnectionService, singleFileDownloadService: SingleFileDownloadService, + accountService: AccountService, + importManager: ImportManager?, navigation: BPNavigation, navigationTitle: String ) { self.source = source self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.accountService = accountService + self.importManager = importManager self.navigation = navigation self.navigationTitle = navigationTitle @@ -222,6 +231,89 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, selectedItems.removeAll() } } + + func handleImportItems(useSelectedItems: Bool) { + if accountService.hasLiteEnabled() { + virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) + } else { + if useSelectedItems { + onDownloadTapped() + } else { + confirmDownloadFolder() + } + } + } + + @MainActor + func virtualImportFolderAudiobooks(useSelectedItems: Bool) { + let audiobooks = useSelectedItems + ? selectedItems.compactMap({ id in + self.items.first(where: { $0.id == id }) + }) + : self.items.filter { $0.kind == .audiobook } + + let libraryItems: [SimpleExternalResource] = audiobooks.map { item in + let fileExt = item.fileExtension ?? "m4a" + let libraryItem = SimpleLibraryItem( + title: item.title, + details: item.authorName ?? "voiceover_unknown_author".localized, + speed: 1, + currentTime: Double(item.currentTime ?? 0), + duration: Double(item.duration ?? 0), + percentCompleted: (item.progress ?? 0 > 0 && item.duration ?? 0 > 0) + ? Double(item.progress!) / Double(item.duration!) : 0, + isFinished: item.isFinished ?? false, + relativePath: "", + remoteURL: nil, + artworkURL: item.coverPath != nil ? URL(string: item.coverPath!) : nil, + orderRank: 0, + parentFolder: nil, + originalFileName: "\(item.title).\(fileExt)", + lastPlayDate: nil, + type: .book, + uuid: UUID().uuidString + ) + + let externalItem = SimpleExternalResource( + id: Int(Date.timeIntervalBetween1970AndReferenceDate), + providerName: ExternalResource.ProviderName.audiobookshelf.rawValue, + providerId: item.id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + libraryItem: libraryItem + ) + + return externalItem + } + + navigation.dismiss?() + importManager?.externalFiles.append(contentsOf: libraryItems) + importManager?.isShowingExternalImportView = true + } + + @MainActor + func onDownloadFolderTapped() { + useSelectedItems = false + showingDownloadConfirmation = true + } + + @MainActor + func confirmDownloadFolder() { + var requests = [URLRequest]() + for item in self.items { + do { + let request = try connectionService.createItemDownloadRequest(item) + requests.append(request) + } catch { + self.error = error + } + } + + guard !requests.isEmpty else { return } + singleFileDownloadService.handleDownload(requests) + navigation.dismiss?() + } @MainActor func onDownloadTapped() { @@ -243,6 +335,11 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, singleFileDownloadService.handleDownload(requests) navigation.dismiss?() } + + @MainActor + func goToSubscribe() { + self.navigation.path.append(AudiobookShelfLibraryLevelData.subscribe) + } private func handleSortChanged() { guard !items.isEmpty else { return } diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift index 81d5ed6f5..0fe5a0d99 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift @@ -7,6 +7,7 @@ // import SwiftUI +import BookPlayerKit /// Thin wrapper providing AudiobookShelf-specific image view to the shared details view. struct AudiobookShelfAudiobookDetailsView< @@ -15,12 +16,18 @@ struct AudiobookShelfAudiobookDetailsView< where Model.Item == AudiobookShelfLibraryItem, Model.Details == AudiobookShelfAudiobookDetailsData { @ObservedObject var viewModel: Model + var showSubscribeButton: Bool = false + var allowStream: Bool = false var onDownloadTap: () -> Void - + var onStreamTap: () -> Void + var body: some View { IntegrationAudiobookDetailsView( viewModel: viewModel, + showSubscribeButton: showSubscribeButton, + allowStream: allowStream, onDownloadTap: onDownloadTap, + onStreamTap: onStreamTap, imageContent: { AudiobookShelfLibraryItemImageView(item: viewModel.item) .environment(\.audiobookshelfService, audiobookShelfConnectionService) diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index 1eb2d503e..6d6e7266b 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -10,9 +10,10 @@ import BookPlayerKit import Foundation class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { - let item: AudiobookShelfLibraryItem let connectionService: AudiobookShelfConnectionService + let accountService: AccountService + let importManager: ImportManager? @Published var details: AudiobookShelfAudiobookDetailsData? @Published var error: Error? private var singleFileDownloadService: SingleFileDownloadService @@ -22,11 +23,15 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc init( item: AudiobookShelfLibraryItem, connectionService: AudiobookShelfConnectionService, - singleFileDownloadService: SingleFileDownloadService + singleFileDownloadService: SingleFileDownloadService, + accountService: AccountService, + importManager: ImportManager?, ) { self.item = item self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.accountService = accountService + self.importManager = importManager } @MainActor @@ -65,4 +70,50 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc let request = try connectionService.createItemDownloadRequest(item) singleFileDownloadService.handleDownload(request) } + + @MainActor + func handleImportAudiobook(_ item: AudiobookShelfLibraryItem) throws { + if accountService.hasLiteEnabled() { + virtualImportAudiobook(item) + } else { + try beginDownloadAudiobook(item) + } + } + + @MainActor + func virtualImportAudiobook(_ item: AudiobookShelfLibraryItem) { + let fileExt = item.fileExtension ?? "m4a" + let libraryItem = SimpleLibraryItem( + title: item.title, + details: item.authorName ?? "voiceover_unknown_author".localized, + speed: 1, + currentTime: Double(item.currentTime ?? 0), + duration: Double(item.duration ?? 0), + percentCompleted: (item.progress ?? 0 > 0 && item.duration ?? 0 > 0) + ? Double(item.progress!) / Double(item.duration!) : 0, + isFinished: item.isFinished ?? false, + relativePath: "", + remoteURL: nil, + artworkURL: item.coverPath != nil ? URL(string: item.coverPath!) : nil, + orderRank: 0, + parentFolder: nil, + originalFileName: "\(item.title).\(fileExt)", + lastPlayDate: nil, + type: .book, + uuid: UUID().uuidString + ) + + let externalItem = SimpleExternalResource( + id: UUID().hashValue, + providerName: ExternalResource.ProviderName.audiobookshelf.rawValue, + providerId: item.id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + libraryItem: libraryItem + ) + + importManager?.externalFiles.append(externalItem) + importManager?.isShowingExternalImportView = true + } } diff --git a/BookPlayer/AudiobookShelf/Library Screen/GridLayout/AudiobookShelfLibraryGridItemView.swift b/BookPlayer/AudiobookShelf/Library Screen/GridLayout/AudiobookShelfLibraryGridItemView.swift index 2ebf6b4e5..8d458fbd3 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/GridLayout/AudiobookShelfLibraryGridItemView.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/GridLayout/AudiobookShelfLibraryGridItemView.swift @@ -15,7 +15,7 @@ struct AudiobookShelfLibraryGridItemView: View { @State var item: AudiobookShelfLibraryItem - @ScaledMetric var accessabilityScale: CGFloat = 1 + @ScaledMetric var accessibilityScale: CGFloat = 1 var isSelected: Bool @@ -50,7 +50,7 @@ struct AudiobookShelfLibraryGridItemView: View { @ViewBuilder private var libraryBadge: some View { ZStack { - Circle().strokeBorder(.foreground, lineWidth: 1 * accessabilityScale) + Circle().strokeBorder(.foreground, lineWidth: 1 * accessibilityScale) .background(Circle().fill(.background)) Image(systemName: item.placeholderImageName) .resizable() diff --git a/BookPlayer/AudiobookShelf/Network/AudiobookShelfLibrary.swift b/BookPlayer/AudiobookShelf/Network/AudiobookShelfLibrary.swift deleted file mode 100644 index 5184f5e03..000000000 --- a/BookPlayer/AudiobookShelf/Network/AudiobookShelfLibrary.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// AudiobookShelfLibrary.swift -// BookPlayer -// -// Created by Gianni Carlo on 14/11/25. -// Copyright © 2025 BookPlayer LLC. All rights reserved. -// - -import Foundation - -struct AudiobookShelfLibrary: Codable, Identifiable { - let id: String - let name: String - let folders: [Folder] - let displayOrder: Int - let icon: String - let mediaType: String // "book" or "podcast" - let provider: String - - struct Folder: Codable { - let id: String - let fullPath: String - let libraryId: String - } -} - -struct AudiobookShelfLibrariesResponse: Codable { - let libraries: [AudiobookShelfLibrary] -} diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 878b83cfb..4cf7d361b 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -311,6 +311,7 @@ "choose_plan_title" = "Choose your plan"; "tasks_title" = "Tasks"; "queued_sync_tasks_title" = "Queued sync tasks (%d)"; +"sync_tasks_queued_count_title" = "Queued Tasks (%d)"; "sync_tasks_alert_description" = "If there's a synchronization task that is stuck and doesn't clear out after having an active internet connection, you can log out and sign in to clear out the current tasks. This will revert your library to the last state synchronized to our servers. Keep in mind that upload tasks can take some time, and the progress will be periodically posted on the previous screen. @@ -402,8 +403,6 @@ We're working hard on providing a seamless experience, if possible, please conta "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Donate"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Download Folder"; -"download_folder_confirmation_message" = "Download all %d files from this folder?"; "hardcover_searching_books" = "Searching books..."; "hardcover_unlink_button" = "Unlink"; "hardcover_auto_match_books" = "Auto-match books"; @@ -448,6 +447,11 @@ We're working hard on providing a seamless experience, if possible, please conta "hours" = "Hours"; "minutes" = "Minutes"; +"provider_title" = "Provider"; +"provider_id_title" = "Item ID"; +"host_title" = "Host"; +"external_resources_title" = "External Resources"; + // Passkey Authentication "passkey_unnamed_device" = "Unnamed Device"; "passkey_delete_title" = "Delete Passkey"; @@ -506,3 +510,22 @@ We're working hard on providing a seamless experience, if possible, please conta "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Save Your Storage!"; +"sync_invitation_learn_more_button" = "Learn more"; +"sync_invitation_description" = "You're about to %1 %2 items. %3"; +"sync_invitation_stream_description" = "Instead of taking up space, stream them directly from your server and keep your progress synced."; +"sync_tasks_concurrent_count_title" = "Concurrent Tasks (%d)"; +"sync_tasks_running_empty_title" = "No running tasks"; +"sync_tasks_empty_title" = "No queued tasks"; +"sync_tasks_empty_description" = "All your sync tasks are up to date."; +"sync_task_update_progress_label" = "Updating progress for %@"; +"sync_task_upload_file_label" = "Uploading file"; +"audiobook_details_narrator_label" = "Narrated by %@"; +"stream_button" = "Stream"; +"import_verb" = "import"; +"download_verb" = "download"; +"passkey_title" = "Passkey"; +"create_profile_title" = "Create your profile"; +"create_profile_description" = "To enable cloud sync, sign into your profile. You can always do this later from within the Profile tab"; +"not_now_button" = "Not now"; +"quick_action_label" = "Quick Action %d"; diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index ea0cfa4eb..ce0245da6 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -29,6 +29,7 @@ class MainCoordinator: NSObject { let watchConnectivityService: PhoneWatchConnectivityService let jellyfinConnectionService: JellyfinConnectionService let audiobookshelfConnectionService: AudiobookShelfConnectionService + let concurrenceService: ConcurrenceService let hardcoverService: HardcoverService let preferencesService: PreferencesSyncService @@ -58,6 +59,7 @@ class MainCoordinator: NSObject { playerLoaderService: coreServices.playerLoaderService, preferencesService: coreServices.preferencesService ) + self.concurrenceService = coreServices.concurrenceService self.singleFileDownloadService = SingleFileDownloadService(networkClient: NetworkClient()) self.watchConnectivityService = coreServices.watchService let jellyfinService = JellyfinConnectionService() @@ -108,6 +110,7 @@ class MainCoordinator: NSObject { .environment(\.playerLoaderService, playerLoaderService) .environment(\.playbackService, playbackService) .environment(\.preferencesService, preferencesService) + .environment(\.concurrenceService, concurrenceService) ) vc.modalPresentationStyle = .fullScreen vc.modalTransitionStyle = .crossDissolve diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index 05c1ccd62..c4b9d1c63 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -10,6 +10,7 @@ import AppKit #endif import Combine +import CoreData import BookPlayerKit @testable import BookPlayer class LibraryServiceProtocolMock: LibraryServiceProtocol { @@ -318,6 +319,24 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { return getSimpleItemWithReturnValue } } + var getSimpleItemForCallsCount = 0 + var getSimpleItemForCalled: Bool { + return getSimpleItemForCallsCount > 0 + } + var getSimpleItemForReceivedUuid: String? + var getSimpleItemForReceivedInvocations: [String] = [] + var getSimpleItemForReturnValue: SimpleLibraryItem? + var getSimpleItemForClosure: ((String) -> SimpleLibraryItem?)? + func getSimpleItem(for uuid: String) -> SimpleLibraryItem? { + getSimpleItemForCallsCount += 1 + getSimpleItemForReceivedUuid = uuid + getSimpleItemForReceivedInvocations.append(uuid) + if let getSimpleItemForClosure = getSimpleItemForClosure { + return getSimpleItemForClosure(uuid) + } else { + return getSimpleItemForReturnValue + } + } //MARK: - getItems var getItemsNotInParentFolderCallsCount = 0 @@ -977,6 +996,66 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { setHardcoverBookForReceivedInvocations.append((hardcoverBook: hardcoverBook, relativePath: relativePath)) await setHardcoverBookForClosure?(hardcoverBook, relativePath) } + //MARK: - setExternalResource + + var setExternalResourceProviderNameProviderIdForCallsCount = 0 + var setExternalResourceProviderNameProviderIdForCalled: Bool { + return setExternalResourceProviderNameProviderIdForCallsCount > 0 + } + var setExternalResourceProviderNameProviderIdForReceivedArguments: (providerName: String, providerId: String, uuid: String)? + var setExternalResourceProviderNameProviderIdForReceivedInvocations: [(providerName: String, providerId: String, uuid: String)] = [] + var setExternalResourceProviderNameProviderIdForReturnValue: SyncableExternalResource? + var setExternalResourceProviderNameProviderIdForClosure: ((String, String, String) async -> SyncableExternalResource?)? + func setExternalResource(providerName: String, providerId: String, for uuid: String) async -> SyncableExternalResource? { + setExternalResourceProviderNameProviderIdForCallsCount += 1 + setExternalResourceProviderNameProviderIdForReceivedArguments = (providerName: providerName, providerId: providerId, uuid: uuid) + setExternalResourceProviderNameProviderIdForReceivedInvocations.append((providerName: providerName, providerId: providerId, uuid: uuid)) + if let setExternalResourceProviderNameProviderIdForClosure = setExternalResourceProviderNameProviderIdForClosure { + return await setExternalResourceProviderNameProviderIdForClosure(providerName, providerId, uuid) + } else { + return setExternalResourceProviderNameProviderIdForReturnValue + } + } + //MARK: - removeExternalResource + + var removeExternalResourceProviderNameForCallsCount = 0 + var removeExternalResourceProviderNameForCalled: Bool { + return removeExternalResourceProviderNameForCallsCount > 0 + } + var removeExternalResourceProviderNameForReceivedArguments: (providerName: String, uuid: String)? + var removeExternalResourceProviderNameForReceivedInvocations: [(providerName: String, uuid: String)] = [] + var removeExternalResourceProviderNameForReturnValue: String? + var removeExternalResourceProviderNameForClosure: ((String, String) async -> String?)? + func removeExternalResource(providerName: String, for uuid: String) async -> String? { + removeExternalResourceProviderNameForCallsCount += 1 + removeExternalResourceProviderNameForReceivedArguments = (providerName: providerName, uuid: uuid) + removeExternalResourceProviderNameForReceivedInvocations.append((providerName: providerName, uuid: uuid)) + if let removeExternalResourceProviderNameForClosure = removeExternalResourceProviderNameForClosure { + return await removeExternalResourceProviderNameForClosure(providerName, uuid) + } else { + return removeExternalResourceProviderNameForReturnValue + } + } + //MARK: - getExternalResources + + var getExternalResourcesForCallsCount = 0 + var getExternalResourcesForCalled: Bool { + return getExternalResourcesForCallsCount > 0 + } + var getExternalResourcesForReceivedRelativePath: String? + var getExternalResourcesForReceivedInvocations: [String] = [] + var getExternalResourcesForReturnValue: [SimpleExternalResource]! = [] + var getExternalResourcesForClosure: ((String) async -> [SimpleExternalResource])? + func getExternalResources(for relativePath: String) async -> [SimpleExternalResource] { + getExternalResourcesForCallsCount += 1 + getExternalResourcesForReceivedRelativePath = relativePath + getExternalResourcesForReceivedInvocations.append(relativePath) + if let getExternalResourcesForClosure = getExternalResourcesForClosure { + return await getExternalResourcesForClosure(relativePath) + } else { + return getExternalResourcesForReturnValue + } + } //MARK: - getHardcoverBook var getHardcoverBookForCallsCount = 0 @@ -997,6 +1076,85 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { return getHardcoverBookForReturnValue } } + + //MARK: - findResource + + var findResourceForCallsCount = 0 + var findResourceForCalled: Bool { + return findResourceForCallsCount > 0 + } + var findResourceForReceivedArguments: (providerId: String, context: NSManagedObjectContext?)? + var findResourceForReceivedInvocations: [(providerId: String, context: NSManagedObjectContext?)] = [] + var findResourceForReturnValue: BookPlayerKit.ExternalResource? + var findResourceForClosure: ((String, NSManagedObjectContext?) -> BookPlayerKit.ExternalResource?)? + func findResource(for providerId: String, context: NSManagedObjectContext?) -> BookPlayerKit.ExternalResource? { + findResourceForCallsCount += 1 + findResourceForReceivedArguments = (providerId: providerId, context: context) + findResourceForReceivedInvocations.append((providerId: providerId, context: context)) + if let findResourceForClosure = findResourceForClosure { + return findResourceForClosure(providerId, context) + } else { + return findResourceForReturnValue + } + } + + //MARK: - findResources + + var findResourcesForCallsCount = 0 + var findResourcesForCalled: Bool { + return findResourcesForCallsCount > 0 + } + var findResourcesForReceivedArguments: (uuid: String, context: NSManagedObjectContext?)? + var findResourcesForReceivedInvocations: [(uuid: String, context: NSManagedObjectContext?)] = [] + var findResourcesForReturnValue: [BookPlayerKit.ExternalResource]? + var findResourcesForClosure: ((String, NSManagedObjectContext?) -> [BookPlayerKit.ExternalResource]?)? + func findResources(for uuid: String, context: NSManagedObjectContext?) -> [BookPlayerKit.ExternalResource]? { + findResourcesForCallsCount += 1 + findResourcesForReceivedArguments = (uuid: uuid, context: context) + findResourcesForReceivedInvocations.append((uuid: uuid, context: context)) + if let findResourcesForClosure = findResourcesForClosure { + return findResourcesForClosure(uuid, context) + } else { + return findResourcesForReturnValue + } + } + + //MARK: - insertItems + + var insertItemsFromResourcesCallsCount = 0 + var insertItemsFromResourcesCalled: Bool { + return insertItemsFromResourcesCallsCount > 0 + } + var insertItemsFromResourcesReceivedResources: [BookPlayerKit.SimpleExternalResource]? + var insertItemsFromResourcesReceivedInvocations: [[BookPlayerKit.SimpleExternalResource]] = [] + var insertItemsFromResourcesReturnValue: [BookPlayerKit.SimpleLibraryItem]! + var insertItemsFromResourcesClosure: (([BookPlayerKit.SimpleExternalResource]) async -> [BookPlayerKit.SimpleLibraryItem])? + func insertItems(from resources: [BookPlayerKit.SimpleExternalResource]) async -> [BookPlayerKit.SimpleLibraryItem] { + insertItemsFromResourcesCallsCount += 1 + insertItemsFromResourcesReceivedResources = resources + insertItemsFromResourcesReceivedInvocations.append(resources) + if let insertItemsFromResourcesClosure = insertItemsFromResourcesClosure { + return await insertItemsFromResourcesClosure(resources) + } else { + return insertItemsFromResourcesReturnValue + } + } + + //MARK: - handleSyncFromExternalResouce + + var handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount = 0 + var handleSyncFromExternalResouceRemoteItemsDictionaryCalled: Bool { + return handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount > 0 + } + var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedRemoteItemsDictionary: [String : BookPlayerKit.JellyfinLibraryItem]? + var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedInvocations: [[String : BookPlayerKit.JellyfinLibraryItem]] = [] + var handleSyncFromExternalResouceRemoteItemsDictionaryClosure: (([String : BookPlayerKit.JellyfinLibraryItem]) -> Void)? + func handleSyncFromExternalResouce(remoteItemsDictionary: [String : BookPlayerKit.JellyfinLibraryItem]) { + handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount += 1 + handleSyncFromExternalResouceRemoteItemsDictionaryReceivedRemoteItemsDictionary = remoteItemsDictionary + handleSyncFromExternalResouceRemoteItemsDictionaryReceivedInvocations.append(remoteItemsDictionary) + handleSyncFromExternalResouceRemoteItemsDictionaryClosure?(remoteItemsDictionary) + } } class PlaybackServiceProtocolMock: PlaybackServiceProtocol { //MARK: - updatePlaybackTime @@ -1155,6 +1313,9 @@ class PlaybackServiceProtocolMock: PlaybackServiceProtocol { } } class PlayerManagerProtocolMock: PlayerManagerProtocol { + let playerIsLoadingURL: Bool = false + var storedConnection: BookPlayerKit.JellyfinConnectionData? = nil + var currentItem: PlayableItem? var currentSpeed: Float { get { return underlyingCurrentSpeed } @@ -1988,6 +2149,36 @@ class SyncServiceProtocolMock: SyncServiceProtocol { scheduleUploadArtworkRelativePathUuidReceivedInvocations.append((relativePath: relativePath, uuid: uuid)) scheduleUploadArtworkRelativePathUuidClosure?(relativePath, uuid) } + //MARK: - scheduleExternalResourceUpload + + var scheduleExternalResourceUploadRelativePathUuidCallsCount = 0 + var scheduleExternalResourceUploadRelativePathUuidCalled: Bool { + return scheduleExternalResourceUploadRelativePathUuidCallsCount > 0 + } + var scheduleExternalResourceUploadRelativePathUuidReceivedArguments: (resource: SyncableExternalResource, relativePath: String, uuid: String)? + var scheduleExternalResourceUploadRelativePathUuidReceivedInvocations: [(resource: SyncableExternalResource, relativePath: String, uuid: String)] = [] + var scheduleExternalResourceUploadRelativePathUuidClosure: ((SyncableExternalResource, String, String) -> Void)? + func scheduleExternalResourceUpload(_ resource: SyncableExternalResource, relativePath: String, uuid: String) { + scheduleExternalResourceUploadRelativePathUuidCallsCount += 1 + scheduleExternalResourceUploadRelativePathUuidReceivedArguments = (resource: resource, relativePath: relativePath, uuid: uuid) + scheduleExternalResourceUploadRelativePathUuidReceivedInvocations.append((resource: resource, relativePath: relativePath, uuid: uuid)) + scheduleExternalResourceUploadRelativePathUuidClosure?(resource, relativePath, uuid) + } + //MARK: - scheduleExternalResourceDeletion + + var scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidCallsCount = 0 + var scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidCalled: Bool { + return scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidCallsCount > 0 + } + var scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidReceivedArguments: (providerName: String, providerId: String, relativePath: String, uuid: String)? + var scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidReceivedInvocations: [(providerName: String, providerId: String, relativePath: String, uuid: String)] = [] + var scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidClosure: ((String, String, String, String) -> Void)? + func scheduleExternalResourceDeletion(providerName: String, providerId: String, relativePath: String, uuid: String) { + scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidCallsCount += 1 + scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidReceivedArguments = (providerName: providerName, providerId: providerId, relativePath: relativePath, uuid: uuid) + scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidReceivedInvocations.append((providerName: providerName, providerId: providerId, relativePath: relativePath, uuid: uuid)) + scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidClosure?(providerName, providerId, relativePath, uuid) + } //MARK: - getAllQueuedJobs var getAllQueuedJobsCallsCount = 0 diff --git a/BookPlayer/Hardcover/ItemDetails Section/ItemDetailsHardcoverSectionView.swift b/BookPlayer/Hardcover/ItemDetails Section/ItemDetailsHardcoverSectionView.swift index dac44940e..97671f197 100644 --- a/BookPlayer/Hardcover/ItemDetails Section/ItemDetailsHardcoverSectionView.swift +++ b/BookPlayer/Hardcover/ItemDetails Section/ItemDetailsHardcoverSectionView.swift @@ -7,6 +7,7 @@ // import SwiftUI +import BookPlayerKit struct ItemDetailsHardcoverSectionView: View { @Environment(\.dismiss) var dismiss @@ -16,19 +17,21 @@ struct ItemDetailsHardcoverSectionView: View { var body: some View { Section( - header: Text("section_item_hardcover".localized) - .foregroundStyle(theme.secondaryColor) + header: HStack(spacing: Spacing.S) { + Text("section_item_hardcover".localized) + .foregroundStyle(theme.secondaryColor) + if viewModel.isFetchingBook { + ProgressView() + .controlSize(.small) + } + } ) { NavigationLink( destination: { HardcoverBookPickerView(viewModel: viewModel.pickerViewModel) }, label: { - if let row = viewModel.pickerViewModel.selected { - HardcoverBookRow(viewModel: row) - } else { - Text("select_title".localized) - } + HardcoverSelectionLabel(pickerViewModel: viewModel.pickerViewModel) } ) .accessibilityHint("voiceover_hardcover_navigation_hint".localized) @@ -37,9 +40,25 @@ struct ItemDetailsHardcoverSectionView: View { } } +/// Observes the picker view model directly so the row reflects `selected` as soon as it's +/// set — the section's own `@ObservedObject` won't fire for changes on the nested model. +private struct HardcoverSelectionLabel: View { + @ObservedObject var pickerViewModel: HardcoverBookPickerView.Model + + var body: some View { + if let row = pickerViewModel.selected { + HardcoverBookRow(viewModel: row) + } else { + Text("select_title".localized) + } + } +} + extension ItemDetailsHardcoverSectionView { class Model: ObservableObject { @Published var pickerViewModel: HardcoverBookPickerView.Model + /// True while fetching the linked book's info from Hardcover via its external resource + @Published var isFetchingBook: Bool = false init(pickerViewModel: HardcoverBookPickerView.Model = .init()) { self.pickerViewModel = pickerViewModel diff --git a/BookPlayer/Hardcover/Network/HardcoverService.swift b/BookPlayer/Hardcover/Network/HardcoverService.swift index 906f2b6b8..e29af6213 100644 --- a/BookPlayer/Hardcover/Network/HardcoverService.swift +++ b/BookPlayer/Hardcover/Network/HardcoverService.swift @@ -42,6 +42,11 @@ protocol HardcoverServiceProtocol { /// Remove a book from the user's Hardcover library /// - Parameter book: The Hardcover book to remove from library func removeFromLibrary(_ book: SimpleHardcoverBook) async throws + + /// Fetch a single book's info from Hardcover by its id + /// - Parameter id: The Hardcover book id (the external resource's providerId) + /// - Returns: The book info, or nil if not found + func getBook(id: Int) async throws -> SimpleHardcoverBook? } @Observable @@ -50,6 +55,7 @@ final class HardcoverService: BPLogger, HardcoverServiceProtocol { private let graphQL = GraphQLClient(baseURL: "https://api.hardcover.app/v1/graphql") private var audioMetadataService: AudioMetadataServiceProtocol! private var libraryService: LibraryServiceProtocol! + private var syncService: SyncServiceProtocol? private var metadataSubscription: AnyCancellable? private var progressSubscription: AnyCancellable? @@ -71,10 +77,12 @@ final class HardcoverService: BPLogger, HardcoverServiceProtocol { func setup( libraryService: LibraryServiceProtocol, + syncService: SyncServiceProtocol? = nil, keychain: KeychainServiceProtocol = KeychainService(), audioMetadataService: AudioMetadataServiceProtocol = AudioMetadataService() ) { self.libraryService = libraryService + self.syncService = syncService self.keychain = keychain self.audioMetadataService = audioMetadataService @@ -132,6 +140,38 @@ extension HardcoverService { return result } + func getBook(id: Int) async throws -> SimpleHardcoverBook? { + Self.logger.info("Fetching Hardcover book info for id \(id)") + + let queryString = """ + query GetBook($id: Int!) { + books(where: {id: {_eq: $id}}, limit: 1) { + id + title + image { url } + contributions { author { name } } + } + } + """ + + let result = try await graphQL.execute( + query: queryString, + variables: ["id": id], + authorization: authorization, + responseType: BookByIdData.self + ) + + guard let book = result.books.first else { return nil } + + return SimpleHardcoverBook( + id: book.id, + artworkURL: book.image?.url.flatMap(URL.init(string:)), + title: book.title, + author: book.contributions?.first?.author?.name ?? "", + status: .local + ) + } + private func insertUserBook(bookID: Int, status: HardcoverBook.Status) async throws -> InsertUserBookData { let mutation = """ mutation InsertUserBook($book_id: Int!, $status_id: Int!) { @@ -231,47 +271,67 @@ extension HardcoverService { } private func handleBookStarted(relativePath: String, percentCompleted: Double) async { - guard - percentCompleted > readingThreshold, - var item = await libraryService.getHardcoverBook(for: relativePath), - item.status < .reading - else { return } + guard percentCompleted > readingThreshold else { return } - do { - Self.logger.info("Updating Hardcover API: book \(item.id) to 'reading' status") - _ = try await insertUserBook( - bookID: item.id, - status: .reading - ) - Self.logger.info("Successfully updated Hardcover API for book \(item.id)") + await updateExternalResources(for: relativePath, to: .reading) + } - item.status = .reading - await libraryService.setHardcoverBook(item, for: relativePath) - Self.logger.info("Updated local status to 'reading' for \(relativePath)") - } catch { - Self.logger.error("Failed to update Hardcover status for book \(item.id): \(error)") + private func handleBookFinished(relativePath: String) async { + await updateExternalResources(for: relativePath, to: .read) + } + + /// Iterate the item's external resources and run the matching provider action for the new status. + private func updateExternalResources( + for relativePath: String, + to status: HardcoverBook.Status + ) async { + let resources = await libraryService.getExternalResources(for: relativePath) + + for resource in resources { + guard let provider = ExternalResource.ProviderName(rawValue: resource.providerName) else { continue } + + switch provider { + case .hardcover: + await updateHardcoverStatus(status, providerId: resource.providerId, for: relativePath) + case .jellyfin, .audiobookshelf: + break + } } } - private func handleBookFinished(relativePath: String) async { - guard - var item = await libraryService.getHardcoverBook(for: relativePath), - item.status != .read - else { return } + /// Push the given status to Hardcover for the book identified by `providerId`, + /// keeping the local reference in sync. No-op if it already reached `status`. + private func updateHardcoverStatus( + _ status: HardcoverBook.Status, + providerId: String, + for relativePath: String + ) async { + guard let bookID = Int(providerId) else { return } + + let existing = await libraryService.getHardcoverBook(for: relativePath) + if let existing, existing.status >= status { + return + } do { - Self.logger.info("Updating Hardcover API: book \(item.id) to 'read' status") - _ = try await insertUserBook( - bookID: item.id, - status: .read + Self.logger.info("Updating Hardcover API: book \(bookID) to '\(String(describing: status))' status") + let response = try await insertUserBook(bookID: bookID, status: status) + + var updated = existing ?? SimpleHardcoverBook( + id: bookID, + artworkURL: nil, + title: "", + author: "", + status: status ) - Self.logger.info("Successfully updated Hardcover API for book \(item.id)") - - item.status = .read - await libraryService.setHardcoverBook(item, for: relativePath) - Self.logger.info("Updated local status to 'read' for \(relativePath)") + updated.status = status + if updated.userBookID == nil { + updated.userBookID = response.insertUserBook.id + } + await libraryService.setHardcoverBook(updated, for: relativePath) + Self.logger.info("Updated local Hardcover status to '\(String(describing: status))' for \(relativePath)") } catch { - Self.logger.error("Failed to update Hardcover status for book \(item.id): \(error)") + Self.logger.error("Failed to update Hardcover status for book \(bookID): \(error)") } } @@ -325,6 +385,8 @@ extension HardcoverService { } await libraryService.setHardcoverBook(book, for: match.item.relativePath) + await uploadExternalResource(for: book, to: match.item) + await downloadArtworkIfNeeded(for: book, to: match.item) Self.logger.info("Auto-matched '\(match.item.title)' to Hardcover ID \(bookID)") processedCount += 1 } catch { @@ -343,6 +405,9 @@ extension HardcoverService { _ book: SimpleHardcoverBook?, to item: SimpleLibraryItem ) async { + /// Remove any existing hardcover resource first (handles both unlink and swap) + await deleteExternalResource(for: item) + guard let book else { await libraryService.setHardcoverBook(nil, for: item.relativePath) Self.logger.info("Removed Hardcover assignment from '\(item.title)'") @@ -351,25 +416,89 @@ extension HardcoverService { Self.logger.info("Assigning Hardcover book \(book.id) to '\(item.title)'") - guard autoAddWantToReadEnabled, authorization != nil else { + if autoAddWantToReadEnabled, authorization != nil { + do { + let response = try await insertUserBook( + bookID: book.id, + status: .library + ) + Self.logger.info("Added '\(item.title)' to Hardcover Want to Read list") + + var updated = book + updated.status = .library + updated.userBookID = response.insertUserBook.id + await libraryService.setHardcoverBook(updated, for: item.relativePath) + } catch { + Self.logger.error("Failed to add '\(item.title)' to Hardcover Want to Read: \(error)") + await libraryService.setHardcoverBook(book, for: item.relativePath) + } + } else { await libraryService.setHardcoverBook(book, for: item.relativePath) - return } - do { - let response = try await insertUserBook( - bookID: book.id, - status: .library + await uploadExternalResource(for: book, to: item) + await downloadArtworkIfNeeded(for: book, to: item) + } + + /// Create the hardcover external resource for the item and sync-upload it if a sync service is available. + private func uploadExternalResource( + for book: SimpleHardcoverBook, + to item: SimpleLibraryItem + ) async { + guard + let syncable = await libraryService.setExternalResource( + providerName: ExternalResource.ProviderName.hardcover.rawValue, + providerId: String(book.id), + for: item.uuid + ) + else { return } + + syncService?.scheduleExternalResourceUpload( + syncable, + relativePath: item.relativePath, + uuid: item.uuid + ) + } + + /// Delete the hardcover external resource for the item and schedule a delete sync task if a sync service is available. + private func deleteExternalResource(for item: SimpleLibraryItem) async { + let providerName = ExternalResource.ProviderName.hardcover.rawValue + + guard + let providerId = await libraryService.removeExternalResource( + providerName: providerName, + for: item.uuid ) - Self.logger.info("Added '\(item.title)' to Hardcover Want to Read list") + else { return } - var updated = book - updated.status = .library - updated.userBookID = response.insertUserBook.id - await libraryService.setHardcoverBook(updated, for: item.relativePath) + syncService?.scheduleExternalResourceDeletion( + providerName: providerName, + providerId: providerId, + relativePath: item.relativePath, + uuid: item.uuid + ) + } + + /// If the Hardcover book has artwork and the item has none, download it, set it as the + /// item's artwork, and run the artwork-upload process (which itself no-ops unless cloud + /// sync is active, i.e. the user is Pro/Lite). + private func downloadArtworkIfNeeded( + for book: SimpleHardcoverBook, + to item: SimpleLibraryItem + ) async { + guard + let artworkURL = book.artworkURL, + item.artworkURL == nil, + !ArtworkService.isCached(relativePath: item.relativePath) + else { return } + + do { + let (data, _) = try await URLSession.shared.data(from: artworkURL) + await ArtworkService.storeInCache(data, for: item.relativePath) + syncService?.scheduleUploadArtwork(relativePath: item.relativePath, uuid: item.uuid) + Self.logger.info("Set Hardcover artwork for '\(item.title)'") } catch { - Self.logger.error("Failed to add '\(item.title)' to Hardcover Want to Read: \(error)") - await libraryService.setHardcoverBook(book, for: item.relativePath) + Self.logger.error("Failed to download Hardcover artwork for '\(item.title)': \(error)") } } @@ -455,3 +584,27 @@ extension SimpleHardcoverBook { ) } } + +/// Response model for fetching a single book by its Hardcover id. +private struct BookByIdData: Codable { + let books: [Book] + + struct Book: Codable { + let id: Int + let title: String + let image: Artwork? + let contributions: [Contribution]? + + struct Artwork: Codable { + let url: String? + } + + struct Contribution: Codable { + let author: Author? + + struct Author: Codable { + let name: String? + } + } + } +} diff --git a/BookPlayer/Import/ExternalSource/ExternalImportView.swift b/BookPlayer/Import/ExternalSource/ExternalImportView.swift new file mode 100644 index 000000000..630714f55 --- /dev/null +++ b/BookPlayer/Import/ExternalSource/ExternalImportView.swift @@ -0,0 +1,125 @@ +// +// ExternalImportView.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 17/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// +import SwiftUI +import BookPlayerKit + +struct ExternalImportView: View { + @ObservedObject var viewModel: Model + @Environment(\.dismiss) var dismiss + @EnvironmentObject private var theme: ThemeViewModel + + var body: some View { + ZStack { + theme.systemBackgroundColor + .ignoresSafeArea() + + VStack(alignment: .leading, spacing: 20) { + HStack { + Button { + viewModel.resources = [] + dismiss() + } label: { + Image(systemName: "xmark") + .font(.system(size: 16, weight: .semibold)) + .foregroundColor(theme.primaryColor) + .frame(width: 44, height: 44) + .background( + Circle().stroke(theme.systemBackgroundColor.opacity(0.3), lineWidth: 1) + ) + } + + Spacer() + + Button { + Task { + await viewModel.handleImportResources() + dismiss() + } + } label: { + Image(systemName: "checkmark") + .font(.system(size: 16, weight: .semibold)) + .foregroundColor(theme.primaryColor) + .frame(width: 44, height: 44) + .background( + Circle().stroke(theme.systemBackgroundColor.opacity(0.3), lineWidth: 1) + ) + } + } + .safeAreaPadding(.top) + + // Headers + Text("Import") + .font(.system(size: 34, weight: .bold)) + .foregroundColor(theme.primaryColor) + + Text("import_warning_description".localized) + .font(.subheadline) + .foregroundColor(theme.primaryColor.opacity(0.6)) + .lineSpacing(4) + + Text("\(viewModel.resources.count) File\(viewModel.resources.count == 1 ? "" : "s")") + .font(.headline) + .foregroundColor(theme.primaryColor.opacity(0.6)) + .padding(.top, 10) + + ScrollView { + LazyVStack(spacing: 0) { + ForEach(viewModel.resources, id: \.providerId) { resource in + HStack(spacing: 16) { + Button { + withAnimation { + viewModel.removeResource(withId: resource.providerId) + } + } label: { + Image(systemName: "minus.circle.fill") + .foregroundColor(.red) + .font(.system(size: 20)) + } + + // Waveform Icon + Image(systemName: "waveform") + .foregroundColor(.pink) + + // File Name + Text(resource.libraryItem?.originalFileName ?? "Unknown Item") + .foregroundColor(theme.primaryColor) + .font(.system(size: 14)) + .lineLimit(1) + + Spacer() + } + .padding(.vertical, 14) + + // Separator + Divider() + .background(theme.systemBackgroundColor.opacity(0.2)) + } + } + } + + Spacer() + } + .padding(.horizontal, 24) + } + .onDisappear { + viewModel.resources = [] + } + } +} + +struct ExternalImportView_Previews: PreviewProvider { + static var previews: some View { + ExternalImportView( + viewModel: ExternalImportViewModel( + importManager: ImportManager( + libraryService: LibraryService() + ) + ) + ) + } +} diff --git a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift new file mode 100644 index 000000000..9a128943a --- /dev/null +++ b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift @@ -0,0 +1,43 @@ +// +// ExternalImportViewModel.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 17/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// +import Foundation +import SwiftUI +import BookPlayerKit + +protocol ExternalViewModelProtocol: ObservableObject { + var resources: [SimpleExternalResource] { get set } + func removeResource(withId id: String) + func handleImportResources() async +} + +class ExternalImportViewModel: ExternalViewModelProtocol { + let importManager: ImportManager + + var resources: [SimpleExternalResource] { + get { + return importManager.externalFiles + } + set { + importManager.externalFiles = newValue + } + } + + init( + importManager: ImportManager + ) { + self.importManager = importManager + } + + func removeResource(withId id: String) { + importManager.externalFiles.removeAll { $0.providerId == id } + } + + func handleImportResources() async { + await importManager.processExternalFiles() + } +} diff --git a/BookPlayer/Import/ImportManager.swift b/BookPlayer/Import/ImportManager.swift index 81fab0fe6..4e1197c15 100644 --- a/BookPlayer/Import/ImportManager.swift +++ b/BookPlayer/Import/ImportManager.swift @@ -22,8 +22,12 @@ final class ImportManager: ObservableObject { private var subscription: AnyCancellable? private var timer: Timer? private var files = CurrentValueSubject, Never>(Set()) - + public var operationPublisher = PassthroughSubject() + public var externalOperationPublisher = PassthroughSubject<[SimpleExternalResource], Never>() + + @Published var externalFiles: [SimpleExternalResource] = [] + @Published var isShowingExternalImportView: Bool = false init(libraryService: LibraryServiceProtocol) { self.libraryService = libraryService @@ -150,4 +154,30 @@ final class ImportManager: ObservableObject { } } } + + private func hasExistingBook(_ externalResource: SimpleExternalResource) -> Bool { + guard let simpleItem = externalResource.libraryItem else { return false } + let documentsFolder = DataManager.getDocumentsFolderURL() + let destinationURL = documentsFolder.appendingPathComponent(simpleItem.relativePath) + print(destinationURL) + if self.libraryService.findBooks(containing: destinationURL)?.first != nil { + return true + } + + if self.libraryService.findResource(for: externalResource.providerId, context: nil) != nil { + return true + } + + return false + } + + @MainActor + func processExternalFiles() { + guard self.externalFiles.count > 0 else { + return + } + let myExternalFiles = self.externalFiles.filter { !hasExistingBook($0) } + self.externalFiles = [] + self.externalOperationPublisher.send(myExternalFiles) + } } diff --git a/BookPlayer/Info.plist b/BookPlayer/Info.plist index 4698569eb..1008b8366 100644 --- a/BookPlayer/Info.plist +++ b/BookPlayer/Info.plist @@ -2,28 +2,6 @@ - UTImportedTypeDeclarations - - - UTTypeConformsTo - - com.pkware.zip-archive - - UTTypeIdentifier - com.pkware.lpf-zip-archive - UTTypeTagSpecification - - public.mime-type - - application/lpf+zip - - public.filename-extension - - lpf - - - - BGTaskSchedulerPermittedIdentifiers $(BP_BUNDLE_IDENTIFIER).background @@ -106,95 +84,95 @@ CFBundleAlternateIcons - Fruit Based26 + Ayu Light CFBundleIconFiles - fruit-based-26 + ayu-light - Music + Dark CFBundleIconFiles - music-26 + dark - Platinum + Forest Green CFBundleIconFiles - Platinum + forest-green - Pride26 + Fruit Based CFBundleIconFiles - pride-26 + fruit-based - Pride + Fruit Based26 CFBundleIconFiles - pride + fruit-based-26 - Ayu Light + Heart of Glass CFBundleIconFiles - ayu-light + heart-of-glass - Dark + Heart of Glass (Ayu) CFBundleIconFiles - dark + heart-of-glass-ayu - Forest Green + Heart of Glass (Forest) CFBundleIconFiles - forest-green + heart-of-glass-forest - Fruit Based + Music CFBundleIconFiles - fruit-based + music-26 - Heart of Glass + Neon CFBundleIconFiles - heart-of-glass + neon - Heart of Glass (Ayu) + Platinum CFBundleIconFiles - heart-of-glass-ayu + Platinum - Heart of Glass (Forest) + Pride CFBundleIconFiles - heart-of-glass-forest + pride - Neon + Pride26 CFBundleIconFiles - neon + pride-26 Retro @@ -225,8 +203,6 @@ - UIPrerenderedIcon - NSAppIconActionTintColorName ShortcutsForegroundColor NSAppIconComplementingColorNames @@ -234,101 +210,103 @@ ShortcutsBackgroundColor1 ShortcutsBackgroundColor2 + UIPrerenderedIcon + CFBundleIcons~ipad CFBundleAlternateIcons - Fruit Based26 + Ayu Light CFBundleIconFiles - fruit-based-ipad-26 + ayu-light-ipad - Music + Dark CFBundleIconFiles - music-ipad-26 + dark-ipad - Platinum + Forest Green CFBundleIconFiles - Platinum-ipad + forest-green-ipad - Pride26 + Fruit Based CFBundleIconFiles - pride-ipad-26 + fruit-based-ipad - Pride + Fruit Based26 CFBundleIconFiles - pride-ipad + fruit-based-ipad-26 - Ayu Light + Heart of Glass CFBundleIconFiles - ayu-light-ipad + heart-of-glass-ipad - Dark + Heart of Glass (Ayu) CFBundleIconFiles - dark-ipad + heart-of-glass-ayu-ipad - Forest Green + Heart of Glass (Forest) CFBundleIconFiles - forest-green-ipad + heart-of-glass-forest-ipad - Fruit Based + Music CFBundleIconFiles - fruit-based-ipad + music-ipad-26 - Heart of Glass + Neon CFBundleIconFiles - heart-of-glass-ipad + neon-ipad - Heart of Glass (Ayu) + Platinum CFBundleIconFiles - heart-of-glass-ayu-ipad + Platinum-ipad - Heart of Glass (Forest) + Pride CFBundleIconFiles - heart-of-glass-forest-ipad + pride-ipad - Neon + Pride26 CFBundleIconFiles - neon-ipad + pride-ipad-26 Retro @@ -400,6 +378,8 @@ NSAllowsArbitraryLoads + NSAllowsLocalNetworking + NSMicrophoneUsageDescription Enable microphone access so you can record audio @@ -475,5 +455,29 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown + UTImportedTypeDeclarations + + + UTTypeConformsTo + + com.pkware.zip-archive + + UTTypeIdentifier + com.pkware.lpf-zip-archive + UTTypeTagSpecification + + public.filename-extension + + lpf + + public.mime-type + + application/lpf+zip + + + + + LSApplicationCategoryType + diff --git a/BookPlayer/Jellyfin/Connection Screen/JellyfinConnectionFormViewModel.swift b/BookPlayer/Jellyfin/Connection Screen/JellyfinConnectionFormViewModel.swift new file mode 100644 index 000000000..22c3c65af --- /dev/null +++ b/BookPlayer/Jellyfin/Connection Screen/JellyfinConnectionFormViewModel.swift @@ -0,0 +1,23 @@ +// +// JellyfinConnectionFormViewModel.swift +// BookPlayer +// +// Created by Lysann Tranvouez on 2024-10-25. +// Copyright © 2024 BookPlayer LLC. All rights reserved. +// + +import Foundation +import BookPlayerKit + +class JellyfinConnectionFormViewModel: ObservableObject { + @Published var serverUrl: String = "" + @Published var serverName: String = "" + @Published var username: String = "" + @Published var password: String = "" + + func setValues(from connection: JellyfinConnectionData) { + serverUrl = connection.url.absoluteString + serverName = connection.serverName + username = connection.userName + } +} diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 04f67a862..841de40fb 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -7,6 +7,7 @@ // import SwiftUI +import BookPlayerKit struct JellyfinRootView: View { let connectionService: JellyfinConnectionService @@ -22,11 +23,14 @@ struct JellyfinRootView: View { } @EnvironmentObject private var singleFileDownloadService: SingleFileDownloadService + @EnvironmentObject private var importManager: ImportManager @EnvironmentObject private var theme: ThemeViewModel @Environment(\.dismiss) var dismiss @Environment(\.listState) private var listState + @Environment(\.accountService) private var accountService + init(connectionService: JellyfinConnectionService) { self.connectionService = connectionService self._connectionViewModel = .init( @@ -50,17 +54,7 @@ struct JellyfinRootView: View { var body: some View { TabView { Tab("books_title", systemImage: "books.vertical.fill") { - JellyfinTabRoot( - library: resolvedLibrary, - connectionService: connectionService, - singleFileDownloadService: singleFileDownloadService, - onDismiss: { listState.activeIntegrationSheet = nil }, - onSwitchLibrary: switchLibraryAction, - dismissAll: dismiss - ) - .id(resolvedLibrary?.id) - .toolbarBackground(.visible, for: .tabBar) - .toolbarBackground(theme.secondarySystemBackgroundColor, for: .tabBar) + tabRootView } Tab("Authors", systemImage: "person.2.fill") { JellyfinEntityTabRoot( @@ -73,6 +67,8 @@ struct JellyfinRootView: View { parentID: resolvedLibrary?.id, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: nav, navigationTitle: "Authors" ) @@ -142,9 +138,7 @@ struct JellyfinRootView: View { } .environmentObject(theme) .onChange(of: availableLibraries) { _, libraries in - if let libraries, libraries.count > 1, resolvedLibrary == nil { - showLibraryPicker = true - } + handleAvailableLibrariesChange(libraries) } .onChange(of: connectionService.connection?.id) { _, newValue in // The active connection was deleted out from under this library — signing out from the @@ -166,6 +160,28 @@ struct JellyfinRootView: View { } } } + + private func handleAvailableLibrariesChange(_ libraries: [JellyfinLibraryItem]?) { + if let libraries, libraries.count > 1, resolvedLibrary == nil { + showLibraryPicker = true + } + } + + private var tabRootView: some View { + JellyfinTabRoot( + library: resolvedLibrary, + connectionService: connectionService, + singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, + onDismiss: { listState.activeIntegrationSheet = nil }, + onSwitchLibrary: switchLibraryAction, + dismissAll: dismiss + ) + .id(resolvedLibrary?.id) + .toolbarBackground(.visible, for: .tabBar) + .toolbarBackground(theme.secondarySystemBackgroundColor, for: .tabBar) + } // MARK: - Library Picker @@ -221,6 +237,7 @@ struct JellyfinRootView: View { } } .environmentObject(theme) + .interactiveDismissDisabled(resolvedLibrary == nil) } private func loadLibraries() async { @@ -247,34 +264,40 @@ struct JellyfinRootView: View { // MARK: - Books Tab (folder-based, same as original) -private struct JellyfinTabRoot: View { +struct JellyfinTabRoot: View { let connectionService: JellyfinConnectionService let singleFileDownloadService: SingleFileDownloadService + let importManager: ImportManager? + let accountService: AccountService let onDismiss: () -> Void var onSwitchLibrary: (() -> Void)? var dismissAll: DismissAction? - + @StateObject private var navigation = BPNavigation() @StateObject var viewModel: JellyfinLibraryViewModel @State private var isEditing = false @State private var showConnectionDetails = false - + @EnvironmentObject private var theme: ThemeViewModel - + init( library: JellyfinLibraryItem?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, + importManager: ImportManager?, + accountService: AccountService, onDismiss: @escaping () -> Void, onSwitchLibrary: (() -> Void)? = nil, dismissAll: DismissAction? = nil ) { self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.importManager = importManager + self.accountService = accountService self.onDismiss = onDismiss self.onSwitchLibrary = onSwitchLibrary self.dismissAll = dismissAll - + let navigation = BPNavigation() self._navigation = .init(wrappedValue: navigation) self._viewModel = .init( @@ -282,13 +305,15 @@ private struct JellyfinTabRoot: View { folderID: library?.id, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: navigation, navigationTitle: library?.name ?? "" ) ) } - - var body: some View { + + public var body: some View { NavigationStack(path: $navigation.path) { JellyfinLibraryView(viewModel: viewModel) .navigationBarTitleDisplayMode(.inline) @@ -322,9 +347,9 @@ private struct JellyfinTabRoot: View { navigation.dismiss = onDismiss } } - + @ViewBuilder - private func destinationView(for destination: JellyfinLibraryLevelData) -> some View { + func destinationView(for destination: JellyfinLibraryLevelData) -> some View { switch destination { case .topLevel(let libraryName): JellyfinLibraryView( @@ -332,6 +357,8 @@ private struct JellyfinTabRoot: View { folderID: nil, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: navigation, navigationTitle: libraryName ) @@ -342,6 +369,8 @@ private struct JellyfinTabRoot: View { folderID: item.id, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: navigation, navigationTitle: item.name ) @@ -353,6 +382,8 @@ private struct JellyfinTabRoot: View { parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: navigation, navigationTitle: authorName ) @@ -364,6 +395,8 @@ private struct JellyfinTabRoot: View { parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: navigation, navigationTitle: personName ) @@ -373,15 +406,25 @@ private struct JellyfinTabRoot: View { viewModel: JellyfinAudiobookDetailsViewModel( item: item, connectionService: connectionService, - singleFileDownloadService: singleFileDownloadService - ) + singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, + navigation: navigation, + navigationTitle: item.name + ), + showSubscribeButton: !accountService.hasSyncEnabled(), + allowStream: accountService.hasLiteEnabled(), ) { onDismiss() + } onStreamTap: { + navigation.path.append(JellyfinLibraryLevelData.subscribe) } + case .subscribe: + ExternalSyncIntroView() } } - - private var cogMenu: some View { + + var cogMenu: some View { Menu { Button { showConnectionDetails = true @@ -399,8 +442,8 @@ private struct JellyfinTabRoot: View { } .accessibilityLabel("settings_title") } - - private var connectionDetailsSheet: some View { + + var connectionDetailsSheet: some View { NavigationStack { IntegrationSettingsView(integrationName: "Jellyfin") { JellyfinConnectionViewModel( @@ -431,25 +474,24 @@ private struct JellyfinTabRoot: View { .environmentObject(theme) } } - + // MARK: - Entity Tab Root (Authors / Narrators) // Reuses JellyfinTabRoot structure but with a list-specific ViewModel - -private struct JellyfinEntityTabRoot: View +struct JellyfinEntityTabRoot: View where ViewModel.Item == JellyfinLibraryItem { let connectionService: JellyfinConnectionService let singleFileDownloadService: SingleFileDownloadService let onDismiss: () -> Void var onSwitchLibrary: (() -> Void)? var dismissAll: DismissAction? - + @StateObject private var navigation = BPNavigation() @StateObject var viewModel: ViewModel @State private var isEditing = false @State private var showConnectionDetails = false - + @EnvironmentObject private var theme: ThemeViewModel - + init( connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, @@ -463,13 +505,13 @@ where ViewModel.Item == JellyfinLibraryItem { self.onDismiss = onDismiss self.onSwitchLibrary = onSwitchLibrary self.dismissAll = dismissAll - + let navigation = BPNavigation() let vm = makeViewModel(navigation) self._navigation = .init(wrappedValue: navigation) self._viewModel = .init(wrappedValue: vm) } - + var body: some View { NavigationStack(path: $navigation.path) { JellyfinLibraryView(viewModel: viewModel) @@ -479,6 +521,8 @@ where ViewModel.Item == JellyfinLibraryItem { for: destination, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: viewModel.importManager, + accountService: viewModel.accountService, navigation: navigation, onDismiss: onDismiss ) @@ -522,14 +566,14 @@ where ViewModel.Item == JellyfinLibraryItem { } } -// MARK: - Shared helpers on JellyfinTabRoot - extension JellyfinTabRoot { @ViewBuilder static func sharedDestinationView( for destination: JellyfinLibraryLevelData, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, + importManager: ImportManager?, + accountService: AccountService, navigation: BPNavigation, onDismiss: @escaping () -> Void ) -> some View { @@ -540,6 +584,8 @@ extension JellyfinTabRoot { folderID: nil, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: navigation, navigationTitle: libraryName ) @@ -550,6 +596,8 @@ extension JellyfinTabRoot { folderID: item.id, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: navigation, navigationTitle: item.name ) @@ -561,6 +609,8 @@ extension JellyfinTabRoot { parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: navigation, navigationTitle: authorName ) @@ -572,6 +622,8 @@ extension JellyfinTabRoot { parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + importManager: importManager, + accountService: accountService, navigation: navigation, navigationTitle: personName ) @@ -581,14 +633,24 @@ extension JellyfinTabRoot { viewModel: JellyfinAudiobookDetailsViewModel( item: item, connectionService: connectionService, - singleFileDownloadService: singleFileDownloadService - ) + singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, + navigation: navigation, + navigationTitle: item.name + ), + showSubscribeButton: !accountService.hasSyncEnabled(), + allowStream: accountService.hasLiteEnabled(), ) { onDismiss() + } onStreamTap: { + navigation.path.append(JellyfinLibraryLevelData.subscribe) } + case .subscribe: + ExternalSyncIntroView() } } - + static func cogMenuView( theme: ThemeViewModel, connectionService: JellyfinConnectionService, @@ -612,7 +674,7 @@ extension JellyfinTabRoot { } .accessibilityLabel("settings_title") } - + static func connectionDetailsSheetView( connectionService: JellyfinConnectionService, showConnectionDetails: Binding, diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift index 3162eaeb7..e7f6ba3c6 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift @@ -7,6 +7,7 @@ // import SwiftUI +import BookPlayerKit /// Thin wrapper providing Jellyfin-specific image view to the shared details view. struct JellyfinAudiobookDetailsView< @@ -15,12 +16,18 @@ struct JellyfinAudiobookDetailsView< where Model.Item == JellyfinLibraryItem, Model.Details == JellyfinAudiobookDetailsData { @ObservedObject var viewModel: Model + var showSubscribeButton: Bool = false + var allowStream: Bool = false var onDownloadTap: () -> Void - + var onStreamTap: () -> Void + var body: some View { IntegrationAudiobookDetailsView( viewModel: viewModel, + showSubscribeButton: showSubscribeButton, + allowStream: allowStream, onDownloadTap: onDownloadTap, + onStreamTap: onStreamTap, imageContent: { JellyfinLibraryItemImageView(item: viewModel.item) .environment(\.jellyfinService, jellyfinConnectionService) diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 8e6d430e0..bda79da4f 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -10,39 +10,16 @@ import BookPlayerKit import Foundation import JellyfinAPI -struct JellyfinAudiobookDetailsData: IntegrationDetailsDataProtocol { - let artist: String? - let filePath: String? - let fileSize: Int? - let overview: String? - let runtimeInSeconds: TimeInterval? - let genres: [String]? - let tags: [String]? - - var fileSizeString: String { - if let fileSize { - ByteCountFormatter.string( - fromByteCount: Int64(fileSize), - countStyle: ByteCountFormatter.CountStyle.file - ) - } else { - "file_size_unknown".localized - } - } - - var runtimeString: String { - if let runtimeInSeconds { - return TimeParser.formatTotalDuration(runtimeInSeconds) - } else { - return "runtime_unknown".localized - } - } -} - class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { - + typealias Item = JellyfinLibraryItem + typealias Details = JellyfinAudiobookDetailsData + let item: JellyfinLibraryItem let connectionService: JellyfinConnectionService + let accountService: AccountService + let importManager: ImportManager? + let navigation: BPNavigation + let navigationTitle: String @Published var details: JellyfinAudiobookDetailsData? @Published var error: Error? private var singleFileDownloadService: SingleFileDownloadService @@ -52,11 +29,20 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { init( item: JellyfinLibraryItem, connectionService: JellyfinConnectionService, - singleFileDownloadService: SingleFileDownloadService + singleFileDownloadService: SingleFileDownloadService, + accountService: AccountService, + importManager: ImportManager?, + navigation: BPNavigation, + navigationTitle: String ) { self.item = item self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.accountService = accountService + self.importManager = importManager + self.navigation = navigation + self.navigationTitle = navigationTitle + self.details = nil } @MainActor @@ -69,10 +55,10 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { defer { fetchTask = nil } do { - let details = try await connectionService.fetchItemDetails(for: item.id) + let detailsData = try await connectionService.fetchItemDetails(for: item.id) await MainActor.run { - self.details = details + self.details = detailsData } } catch is CancellationError { // ignore @@ -89,10 +75,56 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { fetchTask?.cancel() fetchTask = nil } + + @MainActor + func handleImportAudiobook(_ item: JellyfinLibraryItem) throws { + if accountService.hasLiteEnabled() { + virtualImportAudiobook(item) + } else { + try beginDownloadAudiobook(item) + } + } @MainActor func beginDownloadAudiobook(_ item: JellyfinLibraryItem) throws { let request = try connectionService.createItemDownloadRequest(item) singleFileDownloadService.handleDownload(request) } + + @MainActor + func virtualImportAudiobook(_ item: JellyfinLibraryItem) { + let fileExt = self.details?.fileExtension ?? "m4a" + let libraryItem = SimpleLibraryItem( + title: item.name, + details: self.details?.artist ?? "voiceover_unknown_author".localized, + speed: 1, + currentTime: Double(item.currentSeconds ?? 0), + duration: Double(item.durationSeconds ?? 0), + percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) + ? Double(item.currentSeconds!) / Double(item.durationSeconds!) : 0, + isFinished: item.isFinished ?? false, + relativePath: "", + remoteURL: nil, + artworkURL: try? connectionService.createItemImageURL(item, size: CGSize(width: 200, height: 200)), + orderRank: 0, + parentFolder: nil, + originalFileName: "\(item.name).\(fileExt)", + lastPlayDate: item.lastPlayedDate, + type: .book, + uuid: UUID().uuidString + ) + + let externalItem = SimpleExternalResource( + id: Int(Date.timeIntervalBetween1970AndReferenceDate), + providerName: ExternalResource.ProviderName.jellyfin.rawValue, + providerId: item.id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + libraryItem: libraryItem + ) + + importManager?.externalFiles.append(externalItem) + importManager?.isShowingExternalImportView = true + } } diff --git a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridItemView.swift b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridItemView.swift index e720e5e06..8df2a22ae 100644 --- a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridItemView.swift +++ b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridItemView.swift @@ -15,7 +15,7 @@ struct JellyfinLibraryGridItemView: View { @State var item: JellyfinLibraryItem - @ScaledMetric var accessabilityScale: CGFloat = 1 + @ScaledMetric var accessibilityScale: CGFloat = 1 @State private var imageSize: CGSize = CGSize.zero var isSelected: Bool @@ -60,7 +60,7 @@ struct JellyfinLibraryGridItemView: View { private var folderBadge: some View { let imageLength = min(imageSize.width, imageSize.height) ZStack { - Circle().strokeBorder(.foreground, lineWidth: 1 * accessabilityScale) + Circle().strokeBorder(.foreground, lineWidth: 1 * accessibilityScale) .background(Circle().fill(.background)) Image(systemName: "folder.fill") .resizable() diff --git a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift new file mode 100644 index 000000000..f9dd2e9e1 --- /dev/null +++ b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift @@ -0,0 +1,178 @@ +// +// JellyfinLibraryGridView.swift +// BookPlayer +// +// Created by Gianni Carlo on 5/6/25. +// Copyright © 2025 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import SwiftUI + +struct JellyfinLibraryGridView: View { + @ObservedObject var viewModel: Model + + @ScaledMetric var accessabilityScale: CGFloat = 1 + @State private var availableSize: CGSize = .zero + private let itemMinSizeBase = CGSize(width: 100, height: 100) + private let itemMaxSizeBase = CGSize(width: 250, height: 250) + private let itemSpacingBase = 20.0 + + private func adjustSize(_ size: CGSize, availableSize: CGSize) -> CGSize { + CGSize( + width: min(size.width, availableSize.width), + height: min(size.height * accessabilityScale, availableSize.height) + ) + } + + var body: some View { + GeometryReader { geometry in + AdaptiveVGrid( + numItems: viewModel.items.count, + itemMinSize: adjustSize(itemMinSizeBase, availableSize: geometry.size), + itemMaxSize: adjustSize(itemMaxSizeBase, availableSize: geometry.size), + itemSpacing: itemSpacingBase * accessabilityScale + ) { + ForEach(viewModel.items, id: \.id) { item in + JellyfinLibraryGridItemView(item: item, isSelected: viewModel.selectedItems.contains(item.id)) + .accessibilityAddTraits(.isButton) + .onTapGesture { + if viewModel.editMode.isEditing { + guard case .audiobook = item.kind else { return } + viewModel.onSelectTapped(for: item) + } else { + switch item.kind { + case .audiobook: + viewModel.navigation.path.append(JellyfinLibraryLevelData.details(data: item)) + case .userView, .folder: + viewModel.navigation.path.append(JellyfinLibraryLevelData.folder(data: item)) + } + } + } + .onAppear { + viewModel.fetchMoreItemsIfNeeded(currentItem: item) + } + .frame( + minWidth: adjustSize(itemMinSizeBase, availableSize: geometry.size).width, + maxWidth: CGFloat.greatestFiniteMagnitude, + minHeight: adjustSize(itemMinSizeBase, availableSize: geometry.size).height, + maxHeight: adjustSize(itemMaxSizeBase, availableSize: geometry.size).height + ) + } + } + } + } +} + +final class MockJellyfinLibraryViewModel: JellyfinLibraryViewModelProtocol, ObservableObject { + var useSelectedItems = false + var navigationTitle: String = "" + var navigation = BPNavigation() + var connectionService = JellyfinConnectionService() + var accountService = AccountService() + var importManager: ImportManager? + + let data: JellyfinLibraryLevelData + + var layout = JellyfinLayout.Options.grid + var sortBy = JellyfinLayout.SortBy.smart + + @Published var items: [JellyfinLibraryItem] = [] + var totalItems: Int { items.count } + var error: Error? + + var editMode: EditMode = .inactive + var selectedItems: Set = [] + var downloadRemaining: Int = 0 + var showingDownloadConfirmation: Bool = false + + init(data: JellyfinLibraryLevelData) { + self.data = data + } + + func fetchInitialItems() {} + func fetchMoreItemsIfNeeded(currentItem: JellyfinLibraryItem) {} + func cancelFetchItems() {} + + func handleDoneAction() {} + + func onEditToggleSelectTapped() {} + func onSelectTapped(for item: JellyfinLibraryItem) {} + func onSelectAllTapped() {} + func onDownloadTapped() {} + func onDownloadFolderTapped() {} + func confirmDownloadFolder() {} + func virtualImportFolderAudiobooks(useSelectedItems: Bool) {} + func handleImportItems(useSelectedItems: Bool) { } +} + +#Preview("top level") { + let model = { + let model = MockJellyfinLibraryViewModel(data: .topLevel(libraryName: "Mock Library")) + model.items = [ + JellyfinLibraryItem(id: "0.0", name: "subfolder", kind: .folder), + JellyfinLibraryItem(id: "0.1", name: "book", kind: .audiobook), + JellyfinLibraryItem(id: "0.2", name: "another book", kind: .audiobook), + JellyfinLibraryItem(id: "0.3", name: "subfolder 2", kind: .folder), + JellyfinLibraryItem( + id: "0.4", + name: "book 2 with a very very very very very long name\nmaybe even a line break?", + kind: .audiobook + ), + JellyfinLibraryItem(id: "0.5", name: "another book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.6", name: "subfolder 3", kind: .folder), + JellyfinLibraryItem(id: "0.7", name: "book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.8", name: "another book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.9", name: "subfolder 2", kind: .folder), + JellyfinLibraryItem(id: "0.10", name: "book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.11", name: "another book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.12", name: "subfolder 3", kind: .folder), + JellyfinLibraryItem(id: "0.13", name: "book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.14", name: "another book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.15", name: "subfolder 2", kind: .folder), + JellyfinLibraryItem(id: "0.16", name: "book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.17", name: "another book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.18", name: "subfolder 3", kind: .folder), + JellyfinLibraryItem(id: "0.19", name: "book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.20", name: "another book 3", kind: .audiobook), + ] + return model + }() + JellyfinLibraryView(viewModel: model) +} + +#Preview("folder") { + let model = { + let topLevelFolder = JellyfinLibraryItem(id: "0", name: "some folder", kind: .folder) + let model = MockJellyfinLibraryViewModel(data: .folder(data: topLevelFolder)) + model.items = [ + JellyfinLibraryItem(id: "0.0", name: "subfolder", kind: .folder), + JellyfinLibraryItem(id: "0.1", name: "book", kind: .audiobook), + JellyfinLibraryItem(id: "0.2", name: "another book", kind: .audiobook), + JellyfinLibraryItem(id: "0.3", name: "subfolder 2", kind: .folder), + JellyfinLibraryItem( + id: "0.4", + name: "book 2 with a very very long name\nmaybe even a line break?", + kind: .audiobook + ), + JellyfinLibraryItem(id: "0.5", name: "another book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.6", name: "subfolder 3", kind: .folder), + JellyfinLibraryItem(id: "0.7", name: "book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.8", name: "another book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.9", name: "subfolder 2", kind: .folder), + JellyfinLibraryItem(id: "0.10", name: "book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.11", name: "another book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.12", name: "subfolder 3", kind: .folder), + JellyfinLibraryItem(id: "0.13", name: "book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.14", name: "another book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.15", name: "subfolder 2", kind: .folder), + JellyfinLibraryItem(id: "0.16", name: "book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.17", name: "another book 2", kind: .audiobook), + JellyfinLibraryItem(id: "0.18", name: "subfolder 3", kind: .folder), + JellyfinLibraryItem(id: "0.19", name: "book 3", kind: .audiobook), + JellyfinLibraryItem(id: "0.20", name: "another book 3", kind: .audiobook), + ] + return model + }() + JellyfinLibraryView(viewModel: model) +} diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryItem.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryItem.swift deleted file mode 100644 index cf4d87354..000000000 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryItem.swift +++ /dev/null @@ -1,87 +0,0 @@ -// -// JellyfinLibraryItem.swift -// BookPlayer -// -// Created by Lysann Tranvouez on 2024-10-26. -// Copyright © 2024 BookPlayer LLC. All rights reserved. -// - -import Foundation -import JellyfinAPI - -struct JellyfinLibraryItem: IntegrationLibraryItemProtocol { - enum Kind { - case userView - case folder - case audiobook - case author - case narrator - } - - let id: String - let name: String - let kind: Kind - - let blurHash: String? - let imageAspectRatio: Double? - - var isDownloadable: Bool { - kind == .audiobook - } - - var isNavigable: Bool { - !isDownloadable - } - - var displayName: String { name } - - var placeholderImageName: String { - switch kind { - case .audiobook: "waveform" - case .userView, .folder: "folder" - case .author: "person" - case .narrator: "mic" - } - } -} - -extension JellyfinLibraryItem { - init(id: String, name: String, kind: Kind) { - self.init(id: id, name: name, kind: kind, blurHash: nil, imageAspectRatio: nil) - } -} - -extension JellyfinLibraryItem { - init?(apiItem: BaseItemDto) { - let kind: JellyfinLibraryItem.Kind? = switch apiItem.type { - case .userView, .collectionFolder: .userView - case .folder: .folder - case .audioBook: .audiobook - default: nil - } - - guard let id = apiItem.id, let kind else { - return nil - } - let name = apiItem.name ?? id - let blurHash = apiItem.imageBlurHashes?.primary?.first?.value - - self.init(id: id, name: name, kind: kind, blurHash: blurHash, imageAspectRatio: apiItem.primaryImageAspectRatio) - } - - /// Create an author item from an AlbumArtists API response - init?(authorApiItem: BaseItemDto) { - guard let id = authorApiItem.id else { return nil } - let name = authorApiItem.name ?? id - let blurHash = authorApiItem.imageBlurHashes?.primary?.first?.value - self.init(id: id, name: name, kind: .author, blurHash: blurHash, imageAspectRatio: authorApiItem.primaryImageAspectRatio) - } - - /// Create a narrator item from a Persons API response - init?(narratorApiItem: BaseItemDto) { - guard let id = narratorApiItem.id else { return nil } - let name = narratorApiItem.name ?? id - let blurHash = narratorApiItem.imageBlurHashes?.primary?.first?.value - self.init(id: id, name: name, kind: .narrator, blurHash: blurHash, imageAspectRatio: narratorApiItem.primaryImageAspectRatio) - } -} diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift index 1fadc20c4..73f954cfa 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift @@ -7,7 +7,7 @@ // import SwiftUI - +import BookPlayerKit /// Thin wrapper providing Jellyfin-specific cell, row, sort picker, and environment /// to the shared `IntegrationLibraryView`. struct JellyfinLibraryView: View diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index c5ceed50e..17cc90822 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -19,15 +19,9 @@ enum JellyfinLibraryLevelData: Equatable, Hashable { case authorBooks(authorID: String, authorName: String, parentID: String?) case narratorBooks(personID: String, personName: String, parentID: String?) case details(data: JellyfinLibraryItem) + case subscribe } -enum JellyfinLayout { - enum SortBy: String { - case recent, name, smart - } -} - -@MainActor final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLogger { enum Routes { case done @@ -43,6 +37,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog var sortBy: JellyfinLayout.SortBy = .smart { didSet { guard let folderID = folderID else { return } + fetchTask?.cancel() items = [] nextStartItemIndex = 0 totalItems = Int.max @@ -61,11 +56,14 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog var isSearchable: Bool { true } + var useSelectedItems = false var onTransition: BPTransition? let folderID: String? let recursive: Bool + var importManager: ImportManager? let connectionService: JellyfinConnectionService + var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -85,13 +83,17 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog recursive: Bool = false, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, + importManager: ImportManager?, + accountService: AccountService, navigation: BPNavigation, navigationTitle: String ) { self.folderID = folderID self.recursive = recursive self.connectionService = connectionService + self.importManager = importManager self.singleFileDownloadService = singleFileDownloadService + self.accountService = accountService self.navigation = navigation self.navigationTitle = navigationTitle @@ -306,6 +308,19 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog selectedItems.removeAll() } } + + @MainActor + func handleImportItems(useSelectedItems: Bool) { + if accountService.hasLiteEnabled() { + virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) + } else { + if useSelectedItems { + onDownloadTapped() + } else { + confirmDownloadFolder() + } + } + } @MainActor func onDownloadTapped() { @@ -328,6 +343,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog @MainActor func onDownloadFolderTapped() { + useSelectedItems = false showingDownloadConfirmation = true } @@ -359,6 +375,59 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog return try await connectionService.fetchAudiobookDownloadRequests(for: folderID) } } + + @MainActor + func virtualImportFolderAudiobooks(useSelectedItems: Bool) { + let audiobooks = useSelectedItems + ? selectedItems.compactMap({ id in + self.items.first(where: { $0.id == id }) + }) + : self.items.filter { $0.kind == .audiobook } + + let libraryItems: [SimpleExternalResource] = audiobooks.map { item in + let fileExt = item.details?.fileExtension ?? "m4a" + let libraryItem = SimpleLibraryItem( + title: item.name, + details: item.details?.artist ?? "voiceover_unknown_author".localized, + speed: 1, + currentTime: Double(item.currentSeconds ?? 0), + duration: Double(item.durationSeconds ?? 0), + percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) + ? Double(item.currentSeconds!) / Double(item.durationSeconds!) : 0, + isFinished: item.isFinished ?? false, + relativePath: "", + remoteURL: nil, + artworkURL: try? connectionService.createItemImageURL(item, size: CGSize(width: 200, height: 200)), + orderRank: 0, + parentFolder: nil, + originalFileName: "\(item.name).\(fileExt)", + lastPlayDate: item.lastPlayedDate, + type: .book, + uuid: UUID().uuidString + ) + + let externalItem = SimpleExternalResource( + id: Int(Date.timeIntervalBetween1970AndReferenceDate), + providerName: ExternalResource.ProviderName.jellyfin.rawValue, + providerId: item.id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + libraryItem: libraryItem + ) + + return externalItem + } + + navigation.dismiss?() + importManager?.externalFiles.append(contentsOf: libraryItems) + importManager?.isShowingExternalImportView = true + } + + @MainActor + func goToSubscribe() { + self.navigation.path.append(JellyfinLibraryLevelData.subscribe) + } } // MARK: - Author Books ViewModel @@ -384,11 +453,14 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] + @Published var useSelectedItems: Bool = false @Published var showingDownloadConfirmation = false var isSearchable: Bool { true } + var importManager: ImportManager? let connectionService: JellyfinConnectionService + var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? private var allItems: [JellyfinLibraryItem] = [] @@ -399,6 +471,8 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, + importManager: ImportManager?, + accountService: AccountService, navigation: BPNavigation, navigationTitle: String ) { @@ -406,6 +480,8 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B self.parentID = parentID self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.importManager = importManager + self.accountService = accountService self.navigation = navigation self.navigationTitle = navigationTitle @@ -502,6 +578,67 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B singleFileDownloadService.handleDownload(requests) navigation.dismiss?() } + + @MainActor + func handleImportItems(useSelectedItems: Bool) { + if accountService.hasLiteEnabled() { + virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) + } else { + if useSelectedItems { + onDownloadTapped() + } else { + confirmDownloadFolder() + } + } + } + + @MainActor + func virtualImportFolderAudiobooks(useSelectedItems: Bool) { + let audiobooks = useSelectedItems + ? selectedItems.compactMap({ id in + self.items.first(where: { $0.id == id }) + }) + : self.items.filter { $0.kind == .audiobook } + + let libraryItems: [SimpleExternalResource] = audiobooks.map { item in + let fileExt = item.details?.fileExtension ?? "m4a" + let libraryItem = SimpleLibraryItem( + title: item.name, + details: item.details?.artist ?? "voiceover_unknown_author".localized, + speed: 1, + currentTime: Double(item.currentSeconds ?? 0), + duration: Double(item.durationSeconds ?? 0), + percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) + ? Double(item.currentSeconds!) / Double(item.durationSeconds!) : 0, + isFinished: item.isFinished ?? false, + relativePath: "", + remoteURL: nil, + artworkURL: try? connectionService.createItemImageURL(item, size: CGSize(width: 200, height: 200)), + orderRank: 0, + parentFolder: nil, + originalFileName: "\(item.name).\(fileExt)", + lastPlayDate: item.lastPlayedDate, + type: .book, + uuid: UUID().uuidString + ) + + let externalItem = SimpleExternalResource( + id: Int(Date.timeIntervalBetween1970AndReferenceDate), + providerName: ExternalResource.ProviderName.jellyfin.rawValue, + providerId: item.id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + libraryItem: libraryItem + ) + + return externalItem + } + + navigation.dismiss?() + importManager?.externalFiles.append(contentsOf: libraryItems) + importManager?.isShowingExternalImportView = true + } @MainActor func onDownloadFolderTapped() {} @MainActor func confirmDownloadFolder() {} @@ -515,6 +652,11 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B } totalItems = items.count } + + @MainActor + func goToSubscribe() { + self.navigation.path.append(JellyfinLibraryLevelData.subscribe) + } } // MARK: - Narrator Books ViewModel @@ -540,10 +682,13 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] + @Published var useSelectedItems: Bool = false @Published var showingDownloadConfirmation = false var isSearchable: Bool { true } - + + var importManager: ImportManager? + var accountService: AccountService let connectionService: JellyfinConnectionService private let singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -555,6 +700,8 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, + importManager: ImportManager?, + accountService: AccountService, navigation: BPNavigation, navigationTitle: String ) { @@ -562,6 +709,8 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, self.parentID = parentID self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.importManager = importManager + self.accountService = accountService self.navigation = navigation self.navigationTitle = navigationTitle @@ -659,6 +808,67 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, singleFileDownloadService.handleDownload(requests) navigation.dismiss?() } + + @MainActor + func handleImportItems(useSelectedItems: Bool) { + if accountService.hasLiteEnabled() { + virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) + } else { + if useSelectedItems { + onDownloadTapped() + } else { + confirmDownloadFolder() + } + } + } + + @MainActor + func virtualImportFolderAudiobooks(useSelectedItems: Bool) { + let audiobooks = useSelectedItems + ? selectedItems.compactMap({ id in + self.items.first(where: { $0.id == id }) + }) + : self.items.filter { $0.kind == .audiobook } + + let libraryItems: [SimpleExternalResource] = audiobooks.map { item in + let fileExt = item.details?.fileExtension ?? "m4a" + let libraryItem = SimpleLibraryItem( + title: item.name, + details: item.details?.artist ?? "voiceover_unknown_author".localized, + speed: 1, + currentTime: Double(item.currentSeconds ?? 0), + duration: Double(item.durationSeconds ?? 0), + percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) + ? Double(item.currentSeconds!) / Double(item.durationSeconds!) : 0, + isFinished: item.isFinished ?? false, + relativePath: "", + remoteURL: nil, + artworkURL: try? connectionService.createItemImageURL(item, size: CGSize(width: 200, height: 200)), + orderRank: 0, + parentFolder: nil, + originalFileName: "\(item.name).\(fileExt)", + lastPlayDate: item.lastPlayedDate, + type: .book, + uuid: UUID().uuidString + ) + + let externalItem = SimpleExternalResource( + id: Int(Date.timeIntervalBetween1970AndReferenceDate), + providerName: ExternalResource.ProviderName.jellyfin.rawValue, + providerId: item.id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + libraryItem: libraryItem + ) + + return externalItem + } + + navigation.dismiss?() + importManager?.externalFiles.append(contentsOf: libraryItems) + importManager?.isShowingExternalImportView = true + } @MainActor func onDownloadFolderTapped() {} @MainActor func confirmDownloadFolder() {} @@ -672,6 +882,11 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, } totalItems = items.count } + + @MainActor + func goToSubscribe() { + self.navigation.path.append(JellyfinLibraryLevelData.subscribe) + } } // MARK: - Authors List ViewModel @@ -696,11 +911,14 @@ final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, B @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] + @Published var useSelectedItems: Bool = false @Published var showingDownloadConfirmation = false var isSearchable: Bool { true } let connectionService: JellyfinConnectionService + var importManager: ImportManager? + var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? private var allItems: [JellyfinLibraryItem] = [] @@ -710,12 +928,16 @@ final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, B parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, + importManager: ImportManager?, + accountService: AccountService, navigation: BPNavigation, navigationTitle: String ) { self.parentID = parentID self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.importManager = importManager + self.accountService = accountService self.navigation = navigation self.navigationTitle = navigationTitle @@ -757,12 +979,18 @@ final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, B @MainActor func onDownloadTapped() {} @MainActor func onDownloadFolderTapped() {} @MainActor func confirmDownloadFolder() {} + @MainActor func handleImportItems(useSelectedItems: Bool) {} private func applyLocalSearch() { let query = searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) items = query.isEmpty ? allItems : allItems.filter { $0.name.localizedCaseInsensitiveContains(query) } totalItems = items.count } + + @MainActor + func goToSubscribe() { + self.navigation.path.append(JellyfinLibraryLevelData.subscribe) + } } // MARK: - Narrators List ViewModel @@ -787,11 +1015,14 @@ final class JellyfinNarratorsListViewModel: IntegrationLibraryViewModelProtocol, @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] + @Published var useSelectedItems: Bool = false @Published var showingDownloadConfirmation = false var isSearchable: Bool { true } let connectionService: JellyfinConnectionService + var importManager: ImportManager? + var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? private var allItems: [JellyfinLibraryItem] = [] @@ -801,12 +1032,16 @@ final class JellyfinNarratorsListViewModel: IntegrationLibraryViewModelProtocol, parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, + importManager: ImportManager?, + accountService: AccountService, navigation: BPNavigation, navigationTitle: String ) { self.parentID = parentID self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.importManager = importManager + self.accountService = accountService self.navigation = navigation self.navigationTitle = navigationTitle @@ -848,10 +1083,16 @@ final class JellyfinNarratorsListViewModel: IntegrationLibraryViewModelProtocol, @MainActor func onDownloadTapped() {} @MainActor func onDownloadFolderTapped() {} @MainActor func confirmDownloadFolder() {} + @MainActor func handleImportItems(useSelectedItems: Bool) {} private func applyLocalSearch() { let query = searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) items = query.isEmpty ? allItems : allItems.filter { $0.name.localizedCaseInsensitiveContains(query) } totalItems = items.count } + + @MainActor + func goToSubscribe() { + self.navigation.path.append(JellyfinLibraryLevelData.subscribe) + } } diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift index 0889ee452..8aae613ce 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift @@ -53,6 +53,10 @@ struct ItemDetailsView: View { progress: viewModel.progress, lastPlayedDate: viewModel.lastPlayedDate ) + + if let externalResources = viewModel.item.externalResources { + ItemDetailsExternalResourceSectionView(externalResources: externalResources) + } } .onChange(of: viewModel.selectedImage) { viewModel.artworkIsUpdated = true @@ -128,3 +132,73 @@ struct ItemDetailsView: View { .applyListStyle(with: theme, background: theme.systemGroupedBackgroundColor) } } + +struct ItemDetailsExternalResourceSectionView: View { + let externalResources: [SimpleExternalResource] + + @EnvironmentObject private var theme: ThemeViewModel + + var body: some View { + if !externalResources.isEmpty { + ThemedSection { + ForEach(externalResources) { resource in + VStack(alignment: .leading, spacing: Spacing.S1) { + HStack { + Text("provider_title".localized) + .bold() + Spacer() + Text(resource.providerName.capitalized) + .lineLimit(1) + } + + HStack { + Text("provider_id_title".localized) + .bold() + Spacer() + Text(resource.providerId) + .lineLimit(1) + } + + if let hostId = resource.hostId, !hostId.isEmpty { + HStack { + Text("host_title".localized) + .bold() + Spacer() + Text(resolveHost(resource)) + .lineLimit(1) + .truncationMode(.tail) + } + } + } + .bpFont(.body) + .padding(.vertical, Spacing.S1) + } + } header: { + Text("external_resources_title".localized) + } + } + } + + private func resolveHost(_ resource: SimpleExternalResource) -> String { + let keychainService = KeychainService() + let hostId = resource.hostId ?? "" + + switch ExternalResource.ProviderName(rawValue: resource.providerName) { + case .jellyfin: + let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] + if let connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) { + return connection.url.absoluteString + } + case .audiobookshelf: + let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] + if let connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) { + return connection.url.absoluteString + } + default: + break + } + + return hostId + } +} + diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift index fdeb1f5f9..4a72d4eef 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift @@ -100,16 +100,70 @@ final class ItemDetailsViewModel: ObservableObject { ) Task { - if let item = await libraryService.getHardcoverBook(for: item.relativePath) { - hardcoverBook = item - hardcoverSectionViewModel?.pickerViewModel.selected = .init( - id: item.id, - artworkURL: item.artworkURL, - title: item.title, - author: item.author - ) - } + await resolveHardcoverSelection() + } + } + + /// Populate the Hardcover picker selection. Prefers the full local reference; otherwise + /// falls back to the hardcover external resource — showing the item's title right away, + /// then fetching the real book info from Hardcover by its providerId. + @MainActor + private func resolveHardcoverSelection() async { + if let book = await libraryService.getHardcoverBook(for: item.relativePath) { + hardcoverBook = book + hardcoverSectionViewModel?.pickerViewModel.selected = .init( + id: book.id, + artworkURL: book.artworkURL, + title: book.title, + author: book.author + ) + return } + + /// No full local reference — fall back to the hardcover external resource, if any + guard hardcoverSectionViewModel != nil else { return } + + let resources = await libraryService.getExternalResources(for: item.relativePath) + guard + let resource = resources.first(where: { + $0.providerName == ExternalResource.ProviderName.hardcover.rawValue + }), + let bookID = Int(resource.providerId) + else { return } + + /// Show at least the item's title so the row reflects a selection + hardcoverBook = SimpleHardcoverBook( + id: bookID, + artworkURL: nil, + title: item.title, + author: item.details, + status: .local + ) + hardcoverSectionViewModel?.pickerViewModel.selected = .init( + id: bookID, + artworkURL: nil, + title: item.title, + author: item.details + ) + + /// Fetch the real book info from Hardcover and update the selection + hardcoverSectionViewModel?.isFetchingBook = true + let fetched = try? await hardcoverService.getBook(id: bookID) + hardcoverSectionViewModel?.isFetchingBook = false + + /// Discard the result if the selection was swapped or unlinked while fetching + guard + let fetched, + hardcoverSectionViewModel?.pickerViewModel.selected?.id == bookID + else { return } + + hardcoverBook = fetched + hardcoverSectionViewModel?.pickerViewModel.selected = .init( + id: fetched.id, + artworkURL: fetched.artworkURL, + title: fetched.title, + author: fetched.author + ) } func handleSaveAction(_ loadingState: LoadingOverlayState, success: @escaping () -> Void) { diff --git a/BookPlayer/Library/ItemList/ItemListView.swift b/BookPlayer/Library/ItemList/ItemListView.swift index fd21451ea..ef8495876 100644 --- a/BookPlayer/Library/ItemList/ItemListView.swift +++ b/BookPlayer/Library/ItemList/ItemListView.swift @@ -250,7 +250,7 @@ struct ItemListView: View { } .task { focus = .primary - await model.syncList() + await model.syncList(jellyfinService: jellyfinService) } .task(id: playerState.loadedBookRelativePath) { playingItemParentPath = model.getPathForParentOfPlayingItem(playerState.loadedBookRelativePath) @@ -259,7 +259,7 @@ struct ItemListView: View { guard scenePhase == .active else { return } Task { - await model.syncList() + await model.syncList(jellyfinService: jellyfinService) } } .onChange(of: listState.token(for: .all), initial: false) { @@ -306,7 +306,7 @@ struct ItemListView: View { case .downloading: cancelDownload(of: item.id) case .downloaded, .notDownloaded: - loadPlayer(with: item.relativePath) + loadPlayer(with: item.uuid) } } .accessibilityAction { @@ -323,7 +323,7 @@ struct ItemListView: View { case .downloading: cancelDownload(of: item.id) case .downloaded, .notDownloaded: - loadPlayer(with: item.relativePath) + loadPlayer(with: item.uuid) } } } @@ -580,11 +580,11 @@ struct ItemListView: View { case .downloaded: switch item.type { case .folder: - if let relativePath = model.getNextPlayableBookPath(in: item) { - loadPlayer(with: relativePath) + if let uuid = model.getNextPlayableBookPath(in: item) { + loadPlayer(with: uuid) } case .bound, .book: - loadPlayer(with: item.relativePath) + loadPlayer(with: item.uuid) } } } @@ -596,12 +596,13 @@ struct ItemListView: View { } } - func loadPlayer(with relativePath: String) { + func loadPlayer(with uuid: String) { Task { do { - try await playerLoaderService.loadPlayer(relativePath, autoplay: true) + try await playerLoaderService.loadPlayer(uuid, autoplay: true) playerState.showPlayerBinding.wrappedValue = true } catch { + print(error) loadingState.error = error } } diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index bb51315f8..09ea9bbb4 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -10,20 +10,22 @@ import BookPlayerKit import SwiftUI @MainActor -final class ItemListViewModel: ObservableObject { +final class ItemListViewModel: ObservableObject, BPLogger { let libraryNode: LibraryNode private let libraryService: LibraryService private let playbackService: PlaybackService let playerManager: PlayerManager + let playerState: PlayerState private let syncService: SyncService + private let concurrenceService: ConcurrenceServiceProtocol private let listSyncRefreshService: ListSyncRefreshService private let loadingState: LoadingOverlayState private let listState: ListStateManager let singleFileDownloadService: SingleFileDownloadService - /// Reference to ongoing library fetch task var contentsFetchTask: Task<(), Error>? - + private var activeTasks: [String: Task<(), Error>] = [:] + @Published var items: [SimpleLibraryItem] = [] @Published var isLoading: Bool = false @Published var canLoadMore: Bool = true @@ -104,7 +106,9 @@ final class ItemListViewModel: ObservableObject { libraryService: LibraryService, playbackService: PlaybackService, playerManager: PlayerManager, + playerState: PlayerState, syncService: SyncService, + concurrenceService: ConcurrenceService, listSyncRefreshService: ListSyncRefreshService, loadingState: LoadingOverlayState, listState: ListStateManager, @@ -114,7 +118,9 @@ final class ItemListViewModel: ObservableObject { self.libraryService = libraryService self.playbackService = playbackService self.playerManager = playerManager + self.playerState = playerState self.syncService = syncService + self.concurrenceService = concurrenceService self.listSyncRefreshService = listSyncRefreshService self.loadingState = loadingState self.listState = listState @@ -246,7 +252,7 @@ final class ItemListViewModel: ObservableObject { return playbackService.processFoldersStaleProgress() } - func syncList() async { + func syncList(jellyfinService: JellyfinConnectionService? = nil) async { if processFoldersStaleProgress() { listState.reloadAll() } @@ -265,6 +271,9 @@ final class ItemListViewModel: ObservableObject { contentsFetchTask = Task { do { try await listSyncRefreshService.syncList(at: libraryNode.folderRelativePath) + if let jellyfinService { + await updateFromResource(jellyfinService: jellyfinService) + } await MainActor.run { listState.reloadAll() } @@ -371,7 +380,7 @@ final class ItemListViewModel: ObservableObject { isUnfinished: true ) - return nextPlayableItem?.relativePath + return nextPlayableItem?.uuid } } @@ -750,7 +759,7 @@ extension ItemListViewModel { if item.type == .folder || item.type == .bound { try DataManager.createBackingFolderIfNeeded(fileURL) } - + try await syncService.downloadRemoteFiles(for: item) loadingState.show = false } catch { @@ -863,10 +872,74 @@ extension ItemListViewModel { loadingState.error = BookPlayerError.networkError("Code \(statusCode)\n\(HTTPURLResponse.localizedString(forStatusCode: statusCode))") } } + + func updateFromResource(jellyfinService: JellyfinConnectionService) async { + // 1. Find and extract the Jellyfin resources in a single, safe pass. + let jellyfinResources = self.items.compactMap { item in + item.externalResources?.first { $0.providerName == ExternalResource.ProviderName.jellyfin.rawValue } + } + + // 2. Pass the pre-calculated, explicitly-typed array into the function. + guard let results = try? await jellyfinService.updateItemsFromJellyfin(jellyfinResources) else { return } + + libraryService.handleSyncFromExternalResouce(remoteItemsDictionary: results) + } } extension ItemListViewModel: PlaybackSyncProgressDelegate { func waitForSyncInProgress() async { _ = await contentsFetchTask?.result } + + func fetchExternalResource(_ playableItem: PlayableItem) async { + activeTasks[playableItem.uuid]?.cancel() + + activeTasks[playableItem.uuid] = Task { + let lastPlayDate = playableItem.lastPlayDate ?? Date.distantPast + let jellyfinService = JellyfinConnectionService() + jellyfinService.setup() + + let audiobookShelfService = AudiobookShelfConnectionService() + audiobookShelfService.setup() + + guard let externalResources = libraryService.findResources(for: playableItem.uuid) else { return } + + for externalResource in externalResources { + switch ExternalResource.ProviderName(rawValue: externalResource.providerName) { + case .jellyfin: + do { + if let jellyfinItem = try await jellyfinService.fetchItem(for: externalResource.providerId) { + let threshold: TimeInterval = 15 + let externalPlayDate = jellyfinItem.lastPlayedDate ?? Date.distantPast + let isExternalDateNewer = externalPlayDate > lastPlayDate.addingTimeInterval(threshold) + let isExternalSecondsFarther = TimeInterval(jellyfinItem.currentSeconds ?? 0) > (playableItem.currentTime + threshold) + if !playerState.showResumePopup && (isExternalDateNewer || isExternalSecondsFarther) { + playerState.remotePlayTime = Double(jellyfinItem.currentSeconds ?? 0) + playerState.showResumePopup = true + } + } + } catch { + Self.logger.error("Failed to fetch item from Jellyfin: \(error)") + } + case .audiobookshelf: + do { + if let audiobookShelfItem = try await audiobookShelfService.fetchItem(for: externalResource.providerId) { + let threshold: TimeInterval = 15 + let externalPlayDate = Date.distantPast + let isExternalDateNewer = externalPlayDate > lastPlayDate.addingTimeInterval(threshold) + let isExternalSecondsFarther = TimeInterval(audiobookShelfItem.currentTime ?? 0) > (playableItem.currentTime + threshold) + if !playerState.showResumePopup && (isExternalDateNewer || isExternalSecondsFarther) { + playerState.remotePlayTime = Double(audiobookShelfItem.currentTime ?? 0) + playerState.showResumePopup = true + } + } + } catch { + Self.logger.error("Failed to fetch item from AudiobookShelf: \(error)") + } + default: + break + } + } + } + } } diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index 06f808da9..43fa08f75 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -44,6 +44,7 @@ struct LibraryRootView: View { @Environment(\.libraryService) private var libraryService @Environment(\.playbackService) private var playbackService @Environment(\.syncService) private var syncService + @Environment(\.concurrenceService) private var concurrenceService @Environment(\.hardcoverService) private var hardcoverService @Environment(\.scenePhase) private var scenePhase @@ -55,7 +56,9 @@ struct LibraryRootView: View { libraryService: libraryService, playbackService: playbackService, playerManager: playerManager, + playerState: playerState, syncService: syncService, + concurrenceService: concurrenceService, listSyncRefreshService: listSyncRefreshService, loadingState: loadingState, listState: listState, @@ -69,7 +72,9 @@ struct LibraryRootView: View { libraryService: libraryService, playbackService: playbackService, playerManager: playerManager, + playerState: playerState, syncService: syncService, + concurrenceService: concurrenceService, listSyncRefreshService: listSyncRefreshService, loadingState: loadingState, listState: listState, @@ -119,12 +124,20 @@ struct LibraryRootView: View { DispatchQueue.main.async { self.importOperationState.isOperationActive = false self.importOperationState.processingTitle = "" - self.handleOperationCompletion(operation.processedFiles, suggestedFolderName: operation.suggestedFolderName) + self.handleOperationCompletion(.local(files: operation.processedFiles), suggestedFolderName: operation.suggestedFolderName) } } importManager.start(operation) } + .onReceive(importManager.externalOperationPublisher) { externalResources in + Task { + self.handleOperationCompletion(.external(files: externalResources), suggestedFolderName: nil) + } + } + .onReceive(NotificationCenter.default.publisher(for: .showMediaServers)) { _ in + listState.activeIntegrationSheet = .mediaServers + } } .tint(theme.linkColor) .environmentObject(theme) @@ -160,7 +173,7 @@ struct LibraryRootView: View { do { try await AppServices.shared.coreServices?.playerLoaderService.loadPlayer( - libraryItem.relativePath, + libraryItem.uuid, autoplay: false, recordAsLastBook: false ) @@ -183,15 +196,30 @@ struct LibraryRootView: View { } } - func handleOperationCompletion(_ files: [URL], suggestedFolderName: String?) { - guard !files.isEmpty else { + func handleOperationCompletion(_ importSource: ImportSource, suggestedFolderName: String?) { + let filesCount: Int + switch importSource { + case .local(let files): + filesCount = files.count + case .external(let externals): + filesCount = externals.count + } + + guard filesCount > 0 else { return } Task { @MainActor in - let processedItems = await libraryService.insertItems(from: files) + let processedItems: [SimpleLibraryItem] + switch importSource { + case .local(let files): + processedItems = await libraryService.insertItems(from: files) + case .external(let externals): + processedItems = await libraryService.insertItems(from: externals) + } + var itemIdentifiers = processedItems.map({ $0.relativePath }) - var itemIdentifiersPairs = processedItems.map({ LibraryItemRef(relativePath: $0.relativePath, uuid: $0.uuid) }) + let itemIdentifiersPairs = processedItems.map({ LibraryItemRef(relativePath: $0.relativePath, uuid: $0.uuid) }) do { await syncService.scheduleUpload(items: processedItems) /// Move imported files to current selected folder so the user can see them @@ -258,4 +286,4 @@ extension LibraryRootView { LibraryRootView { } showImport: { } -} \ No newline at end of file +} diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index e20ee2203..bb092e808 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -54,14 +54,36 @@ struct BookView: View { } .buttonStyle(.plain) .accessibilityLabel("voiceover_continue_playback_title") - VStack(alignment: .leading) { + VStack(alignment: .leading, spacing: 2) { Text(verbatim: displayTitle) .bpFont(.subheadline) .fontWeight(.bold) .foregroundStyle(titleColor) - Text(verbatim: item.details) - .foregroundStyle(theme.secondaryColor) - .bpFont(.caption) + HStack { + if let resources = item.externalResources { + ForEach(resources, id: \.providerId) { externalResource in + Group { + HStack { + Image((ExternalResource.ProviderName(rawValue: externalResource.providerName) ?? .jellyfin).icon) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 12, height: 12) + .foregroundStyle(theme.secondaryColor) + Text(verbatim: externalResource.providerName.capitalized) + .foregroundStyle(theme.secondaryColor) + .bpFont(.caption) + } + Text("•") + .foregroundColor(.gray) + .font(.caption) + } + } + Text(verbatim: item.details) + .foregroundStyle(theme.secondaryColor) + .bpFont(.caption) + } + } + Text(verbatim: item.durationFormatted) .foregroundStyle(theme.secondaryColor) .bpFont(.caption) @@ -88,11 +110,21 @@ struct BookView: View { libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) let accountService = AccountService() accountService.setup(dataManager: dataManager) + let tasksDataManager = TasksDataManager() + let concurrenceService = ConcurrenceService() + concurrenceService.setup( + libraryService: libraryService, + accessLevel: accountService.accessLevel, + tasksDataManager: tasksDataManager, + networkClient: NetworkClient(), + dataManager: dataManager + ) syncService.setup( isActive: true, libraryService: libraryService, accountService: accountService, - dataManager: dataManager + concurrenceService: concurrenceService, + tasksDataManager: tasksDataManager ) return syncService diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index 2e491c2c0..f5ab1094a 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -19,6 +19,8 @@ struct MainView: View { @Environment(\.libraryService) private var libraryService @Environment(\.playerState) private var playerState @Environment(\.syncService) private var syncService + @Environment(\.concurrenceService) private var concurrenceService + @Environment(\.accountService) private var accountService @Environment(\.jellyfinService) private var jellyfinService @Environment(\.audiobookshelfService) private var audiobookshelfService @Environment(\.playbackService) private var playbackService @@ -28,6 +30,7 @@ struct MainView: View { @EnvironmentObject private var listSyncRefreshService: ListSyncRefreshService @EnvironmentObject private var playerManager: PlayerManager + @EnvironmentObject private var importManager: ImportManager var body: some View { TabView { @@ -102,10 +105,25 @@ struct MainView: View { libraryService: libraryService, playbackService: playbackService, playerManager: playerManager, - syncService: syncService + syncService: syncService, + concurrenceService: concurrenceService ) } .presentationBackground(.clear) + .alert("Resume Playback", isPresented: playerState.showResumePopupBinding) { + Button("Yes") { playerManager.jumpTo(playerState.remotePlayTime ?? 0)} + Button("Ignore", role: .cancel) { } + } message: { + Text("There is another source with current play time \(TimeParser.formatTime(playerState.remotePlayTime ?? 0)). Play from this time?") + } + } + .sheet(isPresented: $importManager.isShowingExternalImportView) { + ExternalImportView( + viewModel: ExternalImportViewModel(importManager: importManager) + ) + .presentationBackground(.clear) + .environmentObject(importManager) + .environmentObject(theme) } .accessibilityAction(.magicTap) { playerManager.playPause() diff --git a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift index 9d0a6157b..4f51fe80d 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift +++ b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift @@ -7,6 +7,7 @@ // import SwiftUI +import BookPlayerKit enum IntegrationLayout { enum Options: String { @@ -29,7 +30,12 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { var editMode: EditMode { get set } var selectedItems: Set { get set } - + var showingDownloadConfirmation: Bool { get set } + var useSelectedItems: Bool { get set } + + var importManager: ImportManager? { get set } + var accountService: AccountService { get set } + var searchQuery: String { get set } var isSearchable: Bool { get } @@ -38,7 +44,6 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { var showsLayoutPreferences: Bool { get } var showsSortPreferences: Bool { get } var allowsEditing: Bool { get } - var showingDownloadConfirmation: Bool { get set } func fetchInitialItems() func fetchMoreItemsIfNeeded(currentItem: Item) @@ -49,9 +54,11 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { @MainActor func onEditToggleSelectTapped() @MainActor func onSelectTapped(for item: Item) @MainActor func onSelectAllTapped() + @MainActor func handleImportItems(useSelectedItems: Bool) @MainActor func onDownloadTapped() @MainActor func onDownloadFolderTapped() @MainActor func confirmDownloadFolder() + @MainActor func goToSubscribe() } extension IntegrationLibraryViewModelProtocol { @@ -63,6 +70,4 @@ extension IntegrationLibraryViewModelProtocol { get { false } set {} } - func onDownloadFolderTapped() {} - func confirmDownloadFolder() {} } diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index bfac49881..6ed4b965f 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -21,7 +21,10 @@ struct IntegrationAudiobookDetailsView< @ObservedObject var viewModel: Model @EnvironmentObject private var theme: ThemeViewModel + var showSubscribeButton: Bool = false + var allowStream: Bool = false var onDownloadTap: () -> Void + var onStreamTap: () -> Void @ViewBuilder let imageContent: () -> ImageContent var voiceOverBookInfo: String { @@ -57,7 +60,7 @@ struct IntegrationAudiobookDetailsView< } if let narrator = viewModel.details?.narrator, !narrator.isEmpty { - Text("Narrated by \(narrator)") + Text(String(format: "audiobook_details_narrator_label".localized, narrator)) .bpFont(.subheadline) .foregroundStyle(theme.secondaryColor) .lineLimit(1) @@ -75,56 +78,46 @@ struct IntegrationAudiobookDetailsView< .bpFont(.caption) } - Button { - do { - try viewModel.beginDownloadAudiobook(viewModel.item) - onDownloadTap() - } catch { - viewModel.error = error + HStack(spacing: 12) { + if allowStream || showSubscribeButton { + SmallDownloadButton + SynchronizeButton + } else { + DownloadButton } - } label: { - HStack { - Image(systemName: "square.and.arrow.down") - Text("download_title".localized) - .fontWeight(.semibold) - } - .frame(maxWidth: .infinity) - .padding() - .foregroundStyle(theme.systemBackgroundColor) - .background(theme.linkColor) - .cornerRadius(10) } .padding(.horizontal) + .padding(.vertical, 12) if let details = viewModel.details { VStack { if let filePath = details.filePath { - DisclosureGroup("File Path", isExpanded: $isFilePathExpanded) { + DisclosureGroup("file_path_title".localized, isExpanded: $isFilePathExpanded) { Text(filePath) } .accessibilityHidden(true) } if let genres = details.genres, !genres.isEmpty { - DisclosureGroup("Genres", isExpanded: $isGenresExpanded) { + DisclosureGroup("genres_title".localized, isExpanded: $isGenresExpanded) { IntegrationTagsView(tags: genres) } } if let overview = details.overview { - DisclosureGroup("Overview", isExpanded: $isOverviewExpanded) { + DisclosureGroup("overview_title".localized, isExpanded: $isOverviewExpanded) { Text(overview) } } if let tags = details.tags, !tags.isEmpty { - DisclosureGroup("Tags", isExpanded: $isTagsExpanded) { + DisclosureGroup("tags_title".localized, isExpanded: $isTagsExpanded) { IntegrationTagsView(tags: tags) } } if !details.seriesEntries.isEmpty { - DisclosureGroup("Series", isExpanded: .constant(true)) { + DisclosureGroup("series_title".localized, isExpanded: .constant(true)) { VStack(alignment: .leading, spacing: 8) { ForEach(details.seriesEntries) { item in Text(item.name) @@ -140,7 +133,7 @@ struct IntegrationAudiobookDetailsView< .applyListStyle(with: theme, background: theme.systemBackgroundColor) .tint(theme.linkColor) .errorAlert(error: $viewModel.error) - .onAppear { + .task(id: ObjectIdentifier(viewModel)) { viewModel.fetchData() } .onDisappear { @@ -148,4 +141,78 @@ struct IntegrationAudiobookDetailsView< } .scrollIndicators(.hidden) } + + @ViewBuilder + private var DownloadButton: some View { + Button { + do { + try viewModel.handleImportAudiobook(viewModel.item) + onDownloadTap() + } catch { + viewModel.error = error + } + } label: { + HStack { + Image(systemName: "square.and.arrow.down") + Text("download_title".localized) + .fontWeight(.semibold) + } + .frame(height: 24) + .frame(maxWidth: .infinity) + .padding() + .foregroundStyle(theme.primaryColor) + .background(theme.tertiarySystemBackgroundColor) + .cornerRadius(10) + } + } + + @ViewBuilder + private var SmallDownloadButton: some View { + Button { + do { + try viewModel.handleImportAudiobook(viewModel.item) + onDownloadTap() + } catch { + viewModel.error = error + } + } label: { + HStack { + Image(systemName: "square.and.arrow.down") + } + .frame(width: 36, height: 24) + .padding() + .foregroundStyle(theme.primaryColor) + .background(theme.tertiarySystemBackgroundColor) + .cornerRadius(10) + } + } + + @ViewBuilder + private var SynchronizeButton: some View { + Button { + if allowStream { + do { + try self.viewModel.handleImportAudiobook(viewModel.item) + onDownloadTap() + } catch { + viewModel.error = error + } + } else { + onStreamTap() + } + } label: { + HStack { + Image(systemName: "arrow.down.circle.dotted") + Text("stream_button".localized) + .foregroundStyle(theme.primaryColor) + .bpFont(.title) + } + .frame(height: 24) + .frame(maxWidth: .infinity) + .padding() + .foregroundStyle(theme.primaryColor) + .background(theme.linkColor) + .cornerRadius(10) + } + } } diff --git a/BookPlayer/MediaServerIntegration/Library Screen/GridLayout/IntegrationLibraryGridView.swift b/BookPlayer/MediaServerIntegration/Library Screen/GridLayout/IntegrationLibraryGridView.swift index bc22889ce..7459e60b1 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/GridLayout/IntegrationLibraryGridView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/GridLayout/IntegrationLibraryGridView.swift @@ -15,7 +15,7 @@ struct IntegrationLibraryGridView< @ObservedObject var viewModel: Model @ViewBuilder let cellContent: (Model.Item) -> CellContent - @ScaledMetric var accessabilityScale: CGFloat = 1 + @ScaledMetric var accessibilityScale: CGFloat = 1 private let itemMinSizeBase = CGSize(width: 100, height: 100) private let itemMaxSizeBase = CGSize(width: 250, height: 250) private let itemSpacingBase = 20.0 @@ -26,12 +26,12 @@ struct IntegrationLibraryGridView< minimum: itemMinSizeBase.width, maximum: itemMaxSizeBase.width ), - spacing: itemSpacingBase * accessabilityScale + spacing: itemSpacingBase * accessibilityScale )] } var body: some View { - LazyVGrid(columns: columns, spacing: itemSpacingBase * accessabilityScale) { + LazyVGrid(columns: columns, spacing: itemSpacingBase * accessibilityScale) { ForEach(viewModel.items, id: \.id) { item in cellContent(item) .accessibilityAddTraits(.isButton) diff --git a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift index 929166fe6..95a8bc319 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift @@ -34,15 +34,57 @@ struct IntegrationLibraryView< } var body: some View { - Group { - if viewModel.isGridEnabled, viewModel.layout == .grid { - ScrollView { - IntegrationLibraryGridView(viewModel: viewModel, cellContent: gridCell) - .padding() + ZStack { + Group { + if viewModel.isGridEnabled, viewModel.layout == .grid { + ScrollView { + IntegrationLibraryGridView(viewModel: viewModel, cellContent: gridCell) + .padding() + } + } else { + IntegrationLibraryListView(viewModel: viewModel, rowContent: listRow) + .scrollContentBackground(.hidden) } - } else { - IntegrationLibraryListView(viewModel: viewModel, rowContent: listRow) - .scrollContentBackground(.hidden) + } + + if viewModel.showingDownloadConfirmation { + // Dimmed background + Color.black.opacity(0.4) + .ignoresSafeArea() + .onTapGesture { + // Allow tapping outside to dismiss + withAnimation { viewModel.showingDownloadConfirmation = false } + } + // This prevents touches from passing through to the view behind it + .allowsHitTesting(true) + + // The charming card aligned to the bottom + VStack { + Spacer() + + SyncInvitationCard( + totalItems: viewModel.useSelectedItems ? viewModel.selectedItems.count : viewModel.totalItems, + subscription: viewModel.accountService.accessLevel, + onDownload: { + withAnimation { viewModel.showingDownloadConfirmation = false } + viewModel.handleImportItems(useSelectedItems: viewModel.useSelectedItems) + }, + onSync: { + withAnimation { viewModel.showingDownloadConfirmation = false } + viewModel.goToSubscribe() + }, + onCancel: { + withAnimation { viewModel.showingDownloadConfirmation = false } + } + ) + .padding(.horizontal, 16) + // Push it slightly off the bottom edge for a floating look + .padding(.bottom, 32) + } + // Animate the card sliding in from the bottom + .transition(.move(edge: .bottom).combined(with: .opacity)) + // Ensure it sits above everything else in the ZStack + .zIndex(1) } } .scrollDismissesKeyboard(.interactively) @@ -59,17 +101,6 @@ struct IntegrationLibraryView< .onChange(of: viewModel.editMode) { _, newValue in tabEditing.wrappedValue = newValue.isEditing } - .confirmationDialog( - "download_folder_confirmation_title".localized, - isPresented: $viewModel.showingDownloadConfirmation - ) { - Button("download_title".localized) { - viewModel.confirmDownloadFolder() - } - Button("cancel_button".localized, role: .cancel) {} - } message: { - Text(String.localizedStringWithFormat("download_folder_confirmation_message".localized, viewModel.totalItems)) - } .toolbar { ToolbarItem(placement: .principal) { navigationTitle @@ -99,7 +130,15 @@ struct IntegrationLibraryView< Button(action: viewModel.onEditToggleSelectTapped) { Label("select_title".localized, systemImage: "checkmark.circle") } - Button(action: viewModel.onDownloadFolderTapped) { + + Button { + if viewModel.accountService.hasLiteEnabled() { + viewModel.handleImportItems(useSelectedItems: false) + } else { + viewModel.useSelectedItems = true + withAnimation { viewModel.showingDownloadConfirmation = true } + } + } label: { Label("download_title".localized, systemImage: "arrow.down.to.line") } } @@ -141,7 +180,14 @@ struct IntegrationLibraryView< Spacer() - Button(action: viewModel.onDownloadTapped) { + Button { + if viewModel.accountService.hasLiteEnabled() { + viewModel.handleImportItems(useSelectedItems: true) + } else { + viewModel.useSelectedItems = true + withAnimation { viewModel.showingDownloadConfirmation = true } + } + } label: { Image(systemName: "arrow.down.to.line") } .disabled(viewModel.selectedItems.isEmpty) diff --git a/BookPlayer/MediaServerIntegration/MediaServersView.swift b/BookPlayer/MediaServerIntegration/MediaServersView.swift index e4dcad2ad..f30e5d37f 100644 --- a/BookPlayer/MediaServerIntegration/MediaServersView.swift +++ b/BookPlayer/MediaServerIntegration/MediaServersView.swift @@ -7,6 +7,7 @@ // import SwiftUI +import BookPlayerKit /// Unified screen for media-server integrations. Has two presentation styles: /// diff --git a/BookPlayer/Player/PlayerLoaderService.swift b/BookPlayer/Player/PlayerLoaderService.swift index d4ad8356e..c1bc9f3e0 100644 --- a/BookPlayer/Player/PlayerLoaderService.swift +++ b/BookPlayer/Player/PlayerLoaderService.swift @@ -36,44 +36,44 @@ final class PlayerLoaderService: @unchecked Sendable { @MainActor func loadPlayer( - _ relativePath: String, + _ uuid: String, autoplay: Bool, recordAsLastBook: Bool = true ) async throws { - let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(relativePath) - + guard let libraryItem = self.libraryService.getSimpleItem(for: uuid) + else { return } + + let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(libraryItem.relativePath) + if syncService.isActive == false, - !FileManager.default.fileExists(atPath: fileURL.path) + libraryItem.externalResources?.isEmpty ?? true, + !FileManager.default.fileExists(atPath: fileURL.path) { - throw BPPlayerError.fileMissing(relativePath: relativePath) + throw BPPlayerError.fileMissing(relativePath: libraryItem.relativePath) } - + // Only load if loaded book is a different one if playerManager.hasLoadedBook() == true, - relativePath == playerManager.currentItem?.relativePath + libraryItem.uuid == playerManager.currentItem?.uuid { if autoplay { playerManager.play() } return } - - guard - let libraryItem = self.libraryService.getSimpleItem(with: relativePath) - else { return } - + /// If the selected item is a bound book, check that the contents are loaded if syncService.isActive == true, - libraryItem.type == .bound, - libraryService.getMaxItemsCount(at: relativePath) == 0 + libraryItem.type == .bound, + libraryService.getMaxItemsCount(at: libraryItem.relativePath) == 0 { - _ = try await syncService.syncListContents(at: relativePath) + _ = try await syncService.syncListContents(at: libraryItem.relativePath) } - + let item = try self.playbackService.getPlayableItem(from: libraryItem) - + playerManager.load(item, autoplay: autoplay) - + if recordAsLastBook { libraryService.setLibraryLastBook(with: item.relativePath) } diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index c2ab85f08..7629ce046 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -40,11 +40,13 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { @Published private var playbackQueued: Bool? /// Flag determining if it's in the process of fetching the URL for playback @Published private var isFetchingRemoteURL: Bool? + @Published var playerIsLoadingURL: Bool = false /// Prevent loop from automatic URL refreshes private var canFetchRemoteURL = true /// Set when audio-session activation fails in the current process, so a later /// successful activation can tell whether recovery required an app relaunch. private var audioSessionFailedThisSession = false + private var canFetchExternalURL = true private var hasObserverRegistered = false private var observeStatus: Bool = false { didSet { @@ -67,7 +69,8 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { private var loadChapterTask: Task<(), Never>? @Published var currentItem: PlayableItem? @Published var currentSpeed: Float = 1.0 - + + var storedConnection: JellyfinConnectionData? var nowPlayingInfo = [String: Any]() private let queue = OperationQueue() @@ -170,6 +173,43 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { audioPlayer.allowsExternalPlayback = false bindTimeControlPassthroughPublisher() + setupPlayerObservers(player: audioPlayer) + } + + private func updatePlayerIsLoadingURL(_ isLoading: Bool) { + if Thread.isMainThread { + self.playerIsLoadingURL = isLoading + } else { + DispatchQueue.main.async { + self.playerIsLoadingURL = isLoading + } + } + } + + private func setupPlayerObservers(player: AVPlayer?) { + guard let player = player else { return } + + // 2. Observe Buffering (AVPlayer TimeControlStatus) + player.publisher(for: \.timeControlStatus) + .sink { [weak self, weak player] status in + guard let self = self, let player = player else { return } + + switch status { + case .waitingToPlayAtSpecifiedRate: + if player.reasonForWaitingToPlay == .toMinimizeStalls { + // We are actively buffering mid-playback (or right after hitting play) + self.updatePlayerIsLoadingURL(true) + } + case .playing, .paused: + // If the item status is still .unknown, we are still preparing + if self.playerItem?.status == .readyToPlay { + self.updatePlayerIsLoadingURL(false) + } + @unknown default: + break + } + } + .store(in: &disposeBag) // Keep the subscription alive } func currentItemPublisher() -> AnyPublisher { @@ -187,7 +227,6 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { @MainActor func loadRemoteURLAsset(for chapter: PlayableChapter, forceRefresh: Bool) async throws -> AVURLAsset { let fileURL: URL - if !forceRefresh, let chapterURL = chapter.remoteURL { @@ -204,16 +243,16 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { // TODO: Check if there's a way to reduce the time this operation takes // it's currently a bottleneck when streaming playback - await asset.loadValues(forKeys: [ - "duration", - "playable", - "preferredRate", - "preferredVolume", - "hasProtectedContent", - "providesPreciseDurationAndTiming", - "commonMetadata", - "metadata", - ]) + _ = try? await asset.load( + .duration, + .isPlayable, + .preferredRate, + .preferredVolume, + .hasProtectedContent, + .providesPreciseDurationAndTiming, + .commonMetadata, + .metadata + ) guard !Task.isCancelled else { throw BookPlayerError.cancelledTask @@ -250,15 +289,36 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { return asset } - func loadPlayerItem(for chapter: PlayableChapter, forceRefreshURL: Bool) async throws { + @MainActor + func loadPlayerItem(for chapter: PlayableChapter, forceRefreshURL: Bool) async throws -> PlayableChapter { let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(chapter.relativePath) let asset: AVURLAsset - if syncService.isActive, - !FileManager.default.fileExists(atPath: fileURL.path) + if !FileManager.default.fileExists(atPath: fileURL.path) { - asset = try await loadRemoteURLAsset(for: chapter, forceRefresh: forceRefreshURL) + if syncService.isActive, + (forceRefreshURL || chapter.externalUrl == nil) { + asset = try await loadRemoteURLAsset(for: chapter, forceRefresh: forceRefreshURL) + } else if let externalUrl = chapter.externalUrl { + asset = AVURLAsset(url: externalUrl, options: [ + AVURLAssetPreferPreciseDurationAndTimingKey: false, + "AVURLAssetHTTPHeaderFieldsKey": chapter.externalHeaders + ]) + + // Only load metadata if duration is unknown, to avoid network bottleneck + if chapter.duration == 0 { + _ = try? await asset.load(.duration, .isPlayable) + + await libraryService.loadChaptersIfNeeded(relativePath: chapter.relativePath, asset: asset) + if let libraryItem = libraryService.getSimpleItem(with: chapter.relativePath), + let updatedItem = try? playbackService.getPlayableItem(from: libraryItem) { + currentItem = updatedItem + } + } + } else { + asset = AVURLAsset(url: fileURL, options: [AVURLAssetPreferPreciseDurationAndTimingKey: false]) + } } else { asset = AVURLAsset(url: fileURL, options: [AVURLAssetPreferPreciseDurationAndTimingKey: true]) } @@ -268,11 +328,44 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { self.playerItem?.removeObserver(self, forKeyPath: "status") self.hasObserverRegistered = false } - + self.playerItem = AVPlayerItem(asset: asset) self.playerItem?.audioTimePitchAlgorithm = .timeDomain + + if chapter.externalUrl != nil { + // Buffer a reasonable amount for streaming (20 seconds) + self.playerItem?.preferredForwardBufferDuration = 20 + } + + setupPlayerItemObservers(playerItem: playerItem) + + return self.currentItem?.currentChapter ?? chapter } + + func setupPlayerItemObservers(playerItem: AVPlayerItem?) { + guard let playerItem else { + return + } + playerItem.publisher(for: \.status) + .sink { [weak self] status in + guard let self = self else { return } + + switch status { + case .readyToPlay: + // The item is fully loaded and ready to be played + self.updatePlayerIsLoadingURL(false) + case .failed: + self.updatePlayerIsLoadingURL(false) + case .unknown: + // Still evaluating the asset + self.updatePlayerIsLoadingURL(true) + @unknown default: + break + } + } + .store(in: &disposeBag) + } func load(_ item: PlayableItem, autoplay: Bool) { load(item, autoplay: autoplay, forceRefreshURL: false) } @@ -369,18 +462,29 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { if let autoplay { playbackQueued = autoplay } - + loadChapterTask = Task { @MainActor [unowned self] in do { - try await self.loadPlayerItem(for: chapter, forceRefreshURL: forceRefreshURL) - self.loadChapterOperation(chapter) + let updatedChapter = try await self.loadPlayerItem(for: chapter, forceRefreshURL: forceRefreshURL) + self.loadChapterOperation(updatedChapter) } catch BookPlayerError.cancelledTask { /// Do nothing, as it was cancelled to load another item } catch { + var actions = [BPActionItem.okAction] + + if chapter.externalUrl != nil, + !FileManager.default.fileExists(atPath: chapter.fileURL.path) { + actions.append( + BPActionItem(title: "media_servers_title".localized) { + NotificationCenter.default.post(name: .showMediaServers, object: nil) + } + ) + } + self.playbackQueued = nil self.isFetchingRemoteURL = nil self.observeStatus = false - self.showErrorAlert(title: "\("error_title".localized) Metadata", error.localizedDescription) + self.showErrorAlert(title: "\("error_title".localized) Metadata", error.localizedDescription, actions: actions) return } } @@ -407,6 +511,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { // Update UI on main thread DispatchQueue.main.async { self.isFetchingRemoteURL = nil + self.audioPlayer.replaceCurrentItem(with: playerItem) self.currentSpeed = self.speedService.getSpeed(relativePath: chapter.relativePath) @@ -844,6 +949,7 @@ extension PlayerManager { func prepareForPlayback(_ currentItem: PlayableItem) async -> Bool { /// Allow refetching remote URL if the action was initiating by the user canFetchRemoteURL = true + canFetchExternalURL = true guard let playerItem else { /// Check if the playbable item is in the process of being set @@ -1059,6 +1165,8 @@ extension PlayerManager { setNowPlayingBookTitle(chapter: currentItem.currentChapter) NotificationCenter.default.post(name: .bookPlayed, object: nil, userInfo: ["book": currentItem]) + + await syncProgressDelegate?.fetchExternalResource(currentItem) } } @@ -1152,10 +1260,27 @@ extension PlayerManager { { loadAndRefreshURL(item: currentItem) canFetchRemoteURL = false + } else if let currentItem, + currentItem.currentChapter.externalUrl != nil, + canFetchExternalURL { + loadAndRefreshURL(item: currentItem) + canFetchExternalURL = false } else { /// Avoid showing any alert if playback is not queued, this could be from the initial app launch /// where we preload the player with the last played item if playbackQueued == true { + var actions = [BPActionItem.okAction] + + if let chapter = currentItem?.currentChapter, + chapter.externalUrl != nil, + !FileManager.default.fileExists(atPath: chapter.fileURL.path) { + actions.append( + BPActionItem(title: "media_servers_title".localized) { + NotificationCenter.default.post(name: .showMediaServers, object: nil) + } + ) + } + if let nsError = item.error as? NSError { let errorDescription = """ \(nsError.localizedDescription) @@ -1166,9 +1291,9 @@ extension PlayerManager { Additional Info \(nsError.userInfo) """ - showErrorAlert(title: "\("error_title".localized) \(nsError.code)", errorDescription) + showErrorAlert(title: "\("error_title".localized) \(nsError.code)", errorDescription, actions: actions) } else { - showErrorAlert(title: "error_title".localized, item.error?.localizedDescription) + showErrorAlert(title: "error_title".localized, item.error?.localizedDescription, actions: actions) } } @@ -1509,11 +1634,22 @@ extension PlayerManager { } extension PlayerManager { - private func showErrorAlert(title: String, _ message: String?) { + private func showErrorAlert(title: String, _ message: String?, actions: [BPActionItem]? = nil) { DispatchQueue.main.async { - WindowHelper.activeWindow?.rootViewController? - .getTopVisibleViewController()? - .showAlert(title, message: message) + let viewController = WindowHelper.activeWindow?.rootViewController? + .getTopVisibleViewController() + + if let actions = actions { + let content = BPAlertContent( + title: title, + message: message, + style: .alert, + actionItems: actions + ) + viewController?.showAlert(content) + } else { + viewController?.showAlert(title, message: message) + } } } } diff --git a/BookPlayer/Player/PlayerManagerProtocol.swift b/BookPlayer/Player/PlayerManagerProtocol.swift index 7b7643090..9801bff2a 100644 --- a/BookPlayer/Player/PlayerManagerProtocol.swift +++ b/BookPlayer/Player/PlayerManagerProtocol.swift @@ -13,13 +13,14 @@ #endif import Combine import Foundation - /// sourcery: AutoMockable public protocol PlayerManagerProtocol: AnyObject { var currentItem: PlayableItem? { get set } var currentSpeed: Float { get set } var isPlaying: Bool { get } + var playerIsLoadingURL: Bool { get } var syncProgressDelegate: PlaybackSyncProgressDelegate? { get set } + var storedConnection: JellyfinConnectionData? { get set } func load(_ item: PlayableItem, autoplay: Bool) func awaitCurrentLoad() async @@ -55,4 +56,5 @@ public protocol PlayerManagerProtocol: AnyObject { /// Delegate that hooks into the playback sequence public protocol PlaybackSyncProgressDelegate: AnyObject { func waitForSyncInProgress() async + func fetchExternalResource(_ playableItem: PlayableItem) async } diff --git a/BookPlayer/Player/ViewModels/PlayerViewModel.swift b/BookPlayer/Player/ViewModels/PlayerViewModel.swift index d182f0d69..cc5afd97a 100644 --- a/BookPlayer/Player/ViewModels/PlayerViewModel.swift +++ b/BookPlayer/Player/ViewModels/PlayerViewModel.swift @@ -45,6 +45,7 @@ final class PlayerViewModel: ObservableObject { let playbackService: PlaybackServiceProtocol let playerManager: PlayerManager let syncService: SyncServiceProtocol + let concurrenceService: ConcurrenceServiceProtocol private var chapterBeforeSliderValueChange: PlayableChapter? private var isSliderDragging = false @@ -106,12 +107,14 @@ final class PlayerViewModel: ObservableObject { libraryService: LibraryService, playbackService: PlaybackService, playerManager: PlayerManager, - syncService: SyncService + syncService: SyncService, + concurrenceService: ConcurrenceService ) { self.libraryService = libraryService self.playbackService = playbackService self.playerManager = playerManager self.syncService = syncService + self.concurrenceService = concurrenceService let sharedDefaults = UserDefaults.sharedDefaults self.prefersChapterContext = sharedDefaults.bool(forKey: Constants.UserDefaults.chapterContextEnabled) self.prefersRemainingTime = sharedDefaults.bool(forKey: Constants.UserDefaults.remainingTimeEnabled) diff --git a/BookPlayer/Player/Views/Chapters/ChaptersView.swift b/BookPlayer/Player/Views/Chapters/ChaptersView.swift index 3f6097905..eef4f78cd 100644 --- a/BookPlayer/Player/Views/Chapters/ChaptersView.swift +++ b/BookPlayer/Player/Views/Chapters/ChaptersView.swift @@ -142,6 +142,7 @@ extension ChaptersView { duration: 300, relativePath: "book1.m4b", remoteURL: nil, + externalURL: nil, index: 0 ) @@ -156,6 +157,7 @@ extension ChaptersView { duration: 300, relativePath: "book1.m4b", remoteURL: nil, + externalURL: nil, index: 1 ), ], diff --git a/BookPlayer/Player/Views/DynamicWaveLoadingView.swift b/BookPlayer/Player/Views/DynamicWaveLoadingView.swift new file mode 100644 index 000000000..f8e26110c --- /dev/null +++ b/BookPlayer/Player/Views/DynamicWaveLoadingView.swift @@ -0,0 +1,70 @@ +// +// DynamicWaveLoadingView.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 29/4/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import SwiftUI + +struct DynamicWaveLoadingView: View { + // Controls the fade in/out of the background and wave + @State private var isPulsing = false + + // Stores the current random heights for the waveform bars + @State private var waveHeights: [CGFloat] = [0.5, 0.5, 0.5, 0.5, 0.5] + + // Customization properties + let animationDuration: TimeInterval = 0.8 + let barCount = 5 + + var body: some View { + ZStack { + // 1. The Dimming Background + Color.black + .opacity(isPulsing ? 0.6 : 0.2) // Pulses between slightly dark and very dark + .edgesIgnoringSafeArea(.all) + + // 2. The Sound Wave + HStack(spacing: 4) { + ForEach(0.. Void var body: some View { @@ -83,7 +84,7 @@ struct CompleteAccountView: View { showConfetti: showConfetti ) .errorAlert(error: $loadingState.error) - .navigationTitle("BookPlayer Pro") + .navigationTitle(subType == .lite ? "BookPlayer Lite" : "BookPlayer Pro") .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .cancellationAction) { @@ -105,7 +106,7 @@ struct CompleteAccountView: View { .foregroundStyle(theme.linkColor) } } - .alert("pro_welcome_title", isPresented: $showSuccessAlert) { + .alert(subType == .lite ? "Welcome to BookPlayer Lite!" : "pro_welcome_title", isPresented: $showSuccessAlert) { Button("ok_button") { onDismiss() } @@ -138,7 +139,7 @@ struct CompleteAccountView: View { } func loadProducts() async throws { - let options = try await accountService.getSubscriptionOptions() + let options = subType == .lite ? try await accountService.getLiteSubscriptionOptions() : try await accountService.getSubscriptionOptions() pricingOptions = options selectedPricingOption = options.first isLoadingPricingOptions = false diff --git a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift new file mode 100644 index 000000000..d5f812933 --- /dev/null +++ b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift @@ -0,0 +1,95 @@ +// +// SyncInvitationCard.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 9/4/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import SwiftUI +import BookPlayerKit + +struct SyncInvitationCard: View { + let totalItems: Int + let subscription: AccessLevel + let onDownload: () -> Void + let onSync: () -> Void + let onCancel: () -> Void + + var body: some View { + VStack(spacing: 24) { + Image(systemName: (subscription == .pro || subscription == .lite) ? "arrow.down.circle.fill" : "cloud.sun.fill") + .resizable() + .scaledToFit() + .frame(width: 64, height: 64) + .foregroundStyle(.white, .orange) + .padding(.top, 16) + + if !(subscription == .pro || subscription == .lite) { + VStack(spacing: 8) { + Text("sync_invitation_save_storage_title".localized) + .font(.title2) + .fontWeight(.bold) + .multilineTextAlignment(.center) + } + } + + Text(String(format: "sync_invitation_description".localized, + (subscription == .lite ? "import_verb" : "download_verb").localized, + totalItems, + ((subscription == .pro || subscription == .lite) ? "" : "sync_invitation_stream_description".localized))) + .font(.subheadline) + .foregroundColor(.secondary) + .multilineTextAlignment(.center) + + VStack(spacing: 12) { + if !(subscription == .pro || subscription == .lite) { + Button { + onSync() + } label: { + HStack { + Text("sync_invitation_learn_more_button".localized) + .fontWeight(.semibold) + } + .frame(maxWidth: .infinity) + .padding() + .background(Color.accentColor) + .foregroundColor(.white) + .cornerRadius(14) + } + .accessibilityLabel("Learn more") + .accessibilityHint("Learn more about streaming and syncing items from your server.") + } + + Button { + onDownload() + } label: { + Text(subscription == .lite ? "import_button".localized : "download_title".localized) + .fontWeight(.medium) + .frame(maxWidth: .infinity) + .padding() + .background(Color.secondary.opacity(0.15)) + .foregroundColor(.primary) + .cornerRadius(14) + } + .accessibilityLabel(subscription == .lite ? "Import" : "Download Locally") + .accessibilityHint(subscription == .lite ? "Import \(totalItems) items to your library." : "Download \(totalItems) items to your device storage.") + } + } + .padding(24) + .background(Color(UIColor.secondarySystemGroupedBackground)) + .cornerRadius(24) + .shadow(color: Color.black.opacity(0.15), radius: 20, x: 0, y: 10) + .overlay(alignment: .topLeading) { + Button(action: onCancel) { + Image(systemName: "xmark.circle.fill") + .font(.title2) + .foregroundStyle(.tertiary) + .frame(width: 44, height: 44) + } + .padding(16) + .accessibilityLabel("Close") + .accessibilityHint("Dismisses the invitation card.") + } + } +} diff --git a/BookPlayer/Profile/Login/ExternalSyncInfoView.swift b/BookPlayer/Profile/Login/ExternalSyncInfoView.swift new file mode 100644 index 000000000..5146fc778 --- /dev/null +++ b/BookPlayer/Profile/Login/ExternalSyncInfoView.swift @@ -0,0 +1,106 @@ +// +// ExternalSyncInfoView.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 9/4/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import SwiftUI +import AuthenticationServices +import BookPlayerKit + +struct ExternalSyncIntroView: View { + @EnvironmentObject private var theme: ThemeViewModel + @Environment(\.dismiss) private var dismiss + + // State to trigger your subscription tiers presentation + @State private var loadingState = LoadingOverlayState() + @State private var showCompleteAccount = false + @State private var showPasskeyRegistration = false + @Environment(\.accountService) private var accountService + + var body: some View { + ZStack(alignment: .bottom) { + Form { + // Feature 1: External Server Connection + LoginBenefitSectionView( + imageName: "server.rack", + title: "Bring Your Own Server", + subtitle: "Connect your existing Jellyfin or Audiobookshelf directly to the app." + ) + + // Feature 2: Streaming (No Local Storage) + LoginBenefitSectionView( + imageName: "waveform", + title: "Stream & Save Space", + subtitle: "Listen instantly by streaming directly from your source. No need to download files or use up local storage." + ) + + // Feature 3: Two-Way Sync + LoginBenefitSectionView( + imageName: "arrow.triangle.2.circlepath", + title: "Two-Way Progress Sync", + subtitle: "Your listening progress stays perfectly synced with your server and across all your devices." + ) + + LoginDisclaimerSectionView() + } + .applyListStyle(with: theme, background: theme.systemGroupedBackgroundColor) + .safeAreaInset(edge: .bottom) { + VStack(spacing: Spacing.S) { + if accountService.account.id.isEmpty { + AppleSignInLink { hasSubscription in + handleSignInResult(hasSubscription: hasSubscription) + } + + // Continue with Passkey - goes to registration/sign-in screen + ContinueWithPasskeyButton { + showPasskeyRegistration = true + } + .padding(.bottom, Spacing.S) + } else { + Button { + showCompleteAccount = true + } label: { + Text("continue_title".localized) + .font(.headline) + .foregroundColor(.white) + .frame(maxWidth: .infinity) + .padding() + .background(theme.linkColor) // Or whatever your primary button color is + .cornerRadius(12) + } + .padding(.horizontal) + .padding(.bottom, Spacing.S) + } + } + } + } + .listSectionSpacing(Spacing.S2) + .navigationTitle("Stream & Sync") + .navigationBarTitleDisplayMode(.inline) + .sheet(isPresented: $showCompleteAccount) { + NavigationStack { + CompleteAccountView(subType: .lite) { + dismiss() + } + } + .presentationDetents([.medium]) + } + .sheet(isPresented: $showPasskeyRegistration) { + PasskeyRegistrationView { hasSubscription in + showPasskeyRegistration = false + handleSignInResult(hasSubscription: hasSubscription) + } + } + } + + private func handleSignInResult(hasSubscription: Bool) { + if hasSubscription { + dismiss() + } else { + showCompleteAccount = true + } + } +} diff --git a/BookPlayer/Profile/Login/LoginView.swift b/BookPlayer/Profile/Login/LoginView.swift index 955dddcf4..b65e14ed2 100644 --- a/BookPlayer/Profile/Login/LoginView.swift +++ b/BookPlayer/Profile/Login/LoginView.swift @@ -14,7 +14,7 @@ struct LoginView: View { @State private var loadingState = LoadingOverlayState() @State private var showCompleteAccount = false @State private var showPasskeyRegistration = false - + @EnvironmentObject private var theme: ThemeViewModel @Environment(\.dismiss) private var dismiss diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift new file mode 100644 index 000000000..2ee79ef89 --- /dev/null +++ b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift @@ -0,0 +1,139 @@ +// +// ConcurrentSyncTasksView.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 24/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import SwiftData +import SwiftUI + +/// Task list for a single provider/upload queue +struct ConcurrentSyncTasksView: View { + let queueKey: String + + @AppStorage(Constants.UserDefaults.allowCellularData) + private var allowsCellularData: Bool = false + var monitor = ConcurrentTaskProgressMonitor.shared + @State private var queuedJobs = [ConcurrentSyncTask]() + @State private var jobsCount = 0 + @State private var showInfoAlert = false + @State private var networkMonitor = NetworkMonitor() + + @Environment(\.concurrenceService) private var concurrenceService + @EnvironmentObject private var theme: ThemeViewModel + + var body: some View { + List { + ThemedSection { + if queuedJobs.isEmpty { + // MARK: - Empty State + VStack(spacing: 12) { + Image(systemName: "checkmark.icloud") + .font(.system(size: 40)) + .foregroundStyle(.secondary) + + Text("sync_tasks_empty_title".localized) + .font(.headline) + + Text("sync_tasks_empty_description".localized) + .font(.subheadline) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + } + .padding(.vertical, 40) + .frame(maxWidth: .infinity) + .listRowBackground(Color.clear) + + } else { + ForEach(queuedJobs) { job in + QueuedSyncTaskRowView( + imageName: .constant(parseImageName(job.jobType)), + title: .constant(parseLabel(job.jobType, job.queueKey)), + progressKey: job.queueKey, + initialProgress: monitor.getTaskProgress(taskID: job.id), + isUpload: false + ) + } + } + } header: { + if !allowsCellularData && !networkMonitor.isConnectedViaWiFi { + HStack { + Spacer() + Image(systemName: "wifi") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 20, height: 20) + .foregroundStyle(theme.linkColor) + .padding([.trailing], 5) + Text("upload_wifi_required_title".localized) + .bpFont(.body) + .foregroundStyle(theme.secondaryColor) + Spacer() + } + } + } + } + .scrollContentBackground(.hidden) + .background(theme.systemBackgroundColor) + .toolbarColorScheme(theme.useDarkVariant ? .dark : .light, for: .navigationBar) + .navigationTitle(QueueDisplay.name(for: queueKey)) + .navigationBarTitleDisplayMode(.inline) + .alert("", isPresented: $showInfoAlert) { + Button("ok_button", role: .cancel) {} + .foregroundStyle(theme.linkColor) + } message: { + Text("sync_tasks_alert_description") + } + .onReceive( + concurrenceService.observeConcurrentTasksCount() + ) { count in + guard jobsCount != count else { return } + + jobsCount = count + reloadQueuedJobs() + } + .onAppear { + reloadQueuedJobs() + } + .toolbar { + ToolbarItem(placement: .confirmationAction) { + Button { + showInfoAlert = true + } label: { + Image(systemName: "info.circle") + } + .foregroundStyle(theme.linkColor) + } + } + } + + func reloadQueuedJobs() { + Task { @MainActor in + let allJobs = await concurrenceService.getOrderedQueuedJobs(activeTasks: monitor.activeTasks) + .filter { $0.queueKey == queueKey } + jobsCount = allJobs.count + queuedJobs = allJobs + } + } + + func parseImageName(_ jobType: SyncJobType) -> String { + switch jobType { + case .uploadFile: + return "square.and.arrow.up.badge.clock" + default: + return "arrow.2.circlepath" + } + } + + func parseLabel(_ jobType: SyncJobType, _ queueKey: String) -> String { + switch jobType { + case .uploadFile: + return "Uploading file" + default: + return "Updating progress for \(queueKey)" + } + } +} diff --git a/BookPlayer/Profile/Profile/ProfileCardSectionView.swift b/BookPlayer/Profile/Profile/ProfileCardSectionView.swift index ba1ee56f4..f4966e41b 100644 --- a/BookPlayer/Profile/Profile/ProfileCardSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileCardSectionView.swift @@ -18,7 +18,7 @@ struct ProfileCardSectionView: View { var body: some View { ThemedSection { Button(action: action) { - ProfileCardView(email: accountService.account.email) + ProfileCardView(email: accountService.account.email, sub: accountService.accessLevel.rawValue, subColor: theme.secondarySystemBackgroundColor) } } } diff --git a/BookPlayer/Profile/Profile/ProfileScreen.swift b/BookPlayer/Profile/Profile/ProfileScreen.swift index 49646c9ad..5eb9d72e5 100644 --- a/BookPlayer/Profile/Profile/ProfileScreen.swift +++ b/BookPlayer/Profile/Profile/ProfileScreen.swift @@ -8,6 +8,10 @@ import Foundation -enum ProfileScreen: String, Hashable { - case account, tasks +enum ProfileScreen: Hashable { + case account + /// Active queues overview + case queueTasks + /// Task list for one queue key + case queue(String) } diff --git a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift index 9d363608c..0635067e4 100644 --- a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift @@ -13,16 +13,18 @@ import SwiftUI struct ProfileSyncTasksSectionView: View { @State private var statusMessage: String = "" @State private var jobsCount = 0 + @State private var concurrentJobsCount = 0 private var buttonText: String { - String(format: "queued_sync_tasks_title".localized, jobsCount) + String(format: "queued_sync_tasks_title".localized, jobsCount + concurrentJobsCount) } @Environment(\.syncService) private var syncService + @Environment(\.concurrenceService) private var concurrenceService @EnvironmentObject private var theme: ThemeViewModel var body: some View { - NavigationLink(value: ProfileScreen.tasks) { + NavigationLink(value: ProfileScreen.queueTasks) { VStack { Text(buttonText) .bpFont(.body) @@ -37,6 +39,11 @@ struct ProfileSyncTasksSectionView: View { jobsCount = count } + .onReceive(concurrenceService.observeConcurrentTasksCount()) { count in + guard concurrentJobsCount != count else { return } + + concurrentJobsCount = count + } .onReceive( NotificationCenter.default.publisher(for: .uploadProgressUpdated) .receive(on: DispatchQueue.main) @@ -98,8 +105,23 @@ struct ProfileSyncTasksSectionView: View { libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) let accountService = AccountService() accountService.setup(dataManager: dataManager) + let tasksDataManager = TasksDataManager() + let concurrenceService = ConcurrenceService() + concurrenceService.setup( + libraryService: libraryService, + accessLevel: accountService.accessLevel, + tasksDataManager: tasksDataManager, + networkClient: NetworkClient(), + dataManager: dataManager + ) let syncService = SyncService() - syncService.setup(isActive: true, libraryService: libraryService, accountService: accountService, dataManager: dataManager) + syncService.setup( + isActive: true, + libraryService: libraryService, + accountService: accountService, + concurrenceService: concurrenceService, + tasksDataManager: tasksDataManager + ) return syncService }() diff --git a/BookPlayer/Profile/Profile/ProfileView.swift b/BookPlayer/Profile/Profile/ProfileView.swift index 9a29e2af9..1513afdb7 100644 --- a/BookPlayer/Profile/Profile/ProfileView.swift +++ b/BookPlayer/Profile/Profile/ProfileView.swift @@ -15,7 +15,7 @@ struct ProfileView: View { @Environment(\.accountService) private var accountService @Environment(\.playerState) private var playerState @EnvironmentObject private var theme: ThemeViewModel - + var body: some View { NavigationStack(path: $path) { VStack(spacing: 0) { @@ -26,7 +26,7 @@ struct ProfileView: View { } Spacer() - + if accountService.account.hasSubscription, !accountService.account.id.isEmpty { @@ -43,9 +43,17 @@ struct ProfileView: View { switch destination { case .account: AccountView() - case .tasks: - QueuedSyncTasksView() + case .queueTasks: + QueuedTasksView() .miniPlayerSafeAreaInset() + case .queue(let queueKey): + if queueKey == TaskQueueKey.sync { + QueuedSyncTasksView() + .miniPlayerSafeAreaInset() + } else { + ConcurrentSyncTasksView(queueKey: queueKey) + .miniPlayerSafeAreaInset() + } } } .sheet(isPresented: $showLogin) { diff --git a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift b/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift index 7c585cb08..92980c4a8 100644 --- a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift @@ -24,14 +24,35 @@ struct QueuedSyncTasksView: View { var body: some View { List { ThemedSection { - ForEach(queuedJobs) { job in - QueuedSyncTaskRowView( - imageName: .constant(parseImageName(job.jobType)), - title: job.jobType == .matchUuid ? .constant("sync_library_title".localized) : .constant(job.relativePath), - progressKey: job.progressKey, - initialProgress: job.jobType == .upload ? job.progress : 0, - isUpload: job.jobType == .upload - ) + if queuedJobs.isEmpty { + // MARK: - Empty State + VStack(spacing: 12) { + Image(systemName: "checkmark.icloud") + .font(.system(size: 40)) + .foregroundStyle(.secondary) + + Text("sync_tasks_empty_title".localized) + .font(.headline) + + Text("sync_tasks_empty_description".localized) + .font(.subheadline) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + } + .padding(.vertical, 40) + .frame(maxWidth: .infinity) + .listRowBackground(Color.clear) + + } else { + ForEach(queuedJobs) { job in + QueuedSyncTaskRowView( + imageName: .constant(parseImageName(job.jobType)), + title: job.jobType == .matchUuid ? .constant("sync_library_title".localized) : .constant(job.relativePath), + progressKey: job.progressKey, + initialProgress: job.jobType == .upload ? job.progress : 0, + isUpload: job.jobType == .upload + ) + } } } header: { if !allowsCellularData && !networkMonitor.isConnectedViaWiFi { @@ -116,6 +137,16 @@ struct QueuedSyncTasksView: View { return "photo" case .matchUuid: return "app.connected.to.app.below.fill" + case .externalResource: + return "arrow.up.forward.square" + case .externalResourceToDownload: + return "link.badge.plus" + case .deleteExternalResource: + return "xmark.bin" + case .externalUpdate: + return "arrow.2.circlepath" + case .uploadFile: + return "square.and.arrow.up.badge.clock" } } } diff --git a/BookPlayer/Profile/Profile/Views/ProfileCardView.swift b/BookPlayer/Profile/Profile/Views/ProfileCardView.swift index 697dddbe9..1a4cd8863 100644 --- a/BookPlayer/Profile/Profile/Views/ProfileCardView.swift +++ b/BookPlayer/Profile/Profile/Views/ProfileCardView.swift @@ -16,6 +16,8 @@ struct ProfileCardView: View { var cornerRadius: CGFloat = 10 var email: String = "" + var sub: String? + var subColor: Color? @EnvironmentObject var theme: ThemeViewModel var titleAccessibilityLabel: String { @@ -61,6 +63,8 @@ struct ProfileCardView: View { Text(status) .bpFont(.subheadline) .foregroundStyle(theme.secondaryColor) + } else if let sub, let subColor { + SubscriptionPillView(title: sub, backgroundColor: subColor, foregroundColor: theme.secondaryColor) } } diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift new file mode 100644 index 000000000..73703bc6d --- /dev/null +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -0,0 +1,100 @@ +// +// QueuedTasksView.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 31/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import SwiftUI +import BookPlayerKit +import SwiftData + +/// Display metadata for a task queue key +enum QueueDisplay { + static func name(for queueKey: String) -> String { + switch queueKey { + case TaskQueueKey.sync: + return "Library Sync" + case TaskQueueKey.uploadFile: + return "File Uploads" + default: + return queueKey.capitalized + } + } + + static func imageName(for queueKey: String) -> String { + switch queueKey { + case TaskQueueKey.sync: + return "arrow.triangle.2.circlepath.icloud" + case TaskQueueKey.uploadFile: + return "square.and.arrow.up.badge.clock" + default: + return "antenna.radiowaves.left.and.right" + } + } +} + +/// Overview of the active task queues; each row navigates to that queue's tasks +struct QueuedTasksView: View { + @State private var queues = [QueueSummary]() + + @Environment(\.syncService) private var syncService + @Environment(\.concurrenceService) private var concurrenceService + @EnvironmentObject private var theme: ThemeViewModel + + var body: some View { + List { + ThemedSection { + ForEach(queues) { queue in + NavigationLink(value: ProfileScreen.queue(queue.queueKey)) { + HStack(spacing: Spacing.S1) { + Image(systemName: QueueDisplay.imageName(for: queue.queueKey)) + .frame(width: 24) + .foregroundStyle(theme.linkColor) + Text(QueueDisplay.name(for: queue.queueKey)) + .bpFont(.body) + Spacer() + Text("\(queue.count)") + .bpFont(.subheadline) + .foregroundStyle(theme.secondaryColor) + } + .padding(.vertical, Spacing.S3) + } + .listRowBackground(theme.tertiarySystemBackgroundColor) + } + } + } + .listStyle(.insetGrouped) + .scrollContentBackground(.hidden) + .background(theme.systemBackgroundColor) + .toolbarColorScheme(theme.useDarkVariant ? .dark : .light, for: .navigationBar) + .navigationTitle("Queued Tasks") + .navigationBarTitleDisplayMode(.inline) + .onReceive(syncService.observeTasksCount()) { _ in + reloadQueues() + } + .onReceive(concurrenceService.observeConcurrentTasksCount()) { _ in + reloadQueues() + } + .onAppear { + reloadQueues() + } + } + + func reloadQueues() { + Task { @MainActor in + queues = await concurrenceService.getQueueSummaries() + } + } +} + +// MARK: - Preview +struct QueuedTasksView_Previews: PreviewProvider { + static var previews: some View { + ZStack { + Color(.secondarySystemBackground).edgesIgnoringSafeArea(.all) + QueuedTasksView() + } + } +} diff --git a/BookPlayer/Profile/Profile/Views/SubscriptionPillView.swift b/BookPlayer/Profile/Profile/Views/SubscriptionPillView.swift new file mode 100644 index 000000000..ffa5adb66 --- /dev/null +++ b/BookPlayer/Profile/Profile/Views/SubscriptionPillView.swift @@ -0,0 +1,27 @@ +// +// SubscriptionPillView.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 10/4/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import SwiftUI + +struct SubscriptionPillView: View { + let title: String + let backgroundColor: Color + let foregroundColor: Color + + var body: some View { + Text(title) + .bpFont(.caption) + // The padding here dictates the thickness and width of the pill + .padding(.horizontal, 8) + .padding(.vertical, 4) + .background(backgroundColor) + .foregroundColor(foregroundColor) + // This is what makes it a perfect pill shape + .clipShape(Capsule()) + } +} diff --git a/BookPlayer/SecondOnboarding/Support/SupportProfileView.swift b/BookPlayer/SecondOnboarding/Support/SupportProfileView.swift index e1c4adf5c..4badceffa 100644 --- a/BookPlayer/SecondOnboarding/Support/SupportProfileView.swift +++ b/BookPlayer/SecondOnboarding/Support/SupportProfileView.swift @@ -43,11 +43,11 @@ struct SupportProfileView: View { .accessibilityHidden(true) Group { - Text("Create your profile") + Text("create_profile_title".localized) .bpFont(.titleStory) .foregroundStyle(themeViewModel.primaryColor) .padding() - Text("To enable cloud sync, sign into your profile. You can always do this later from within the Profile tab") + Text("create_profile_description".localized) .bpFont(.bodyStory) .foregroundStyle(themeViewModel.primaryColor) .multilineTextAlignment(.center) @@ -70,7 +70,7 @@ struct SupportProfileView: View { Button(action: { viewModel.dismiss() }, label: { - Text("Not now") + Text("not_now_button".localized) .underline() .bpFont(.body) .foregroundStyle(themeViewModel.secondaryColor) diff --git a/BookPlayer/Services/CarPlayManager.swift b/BookPlayer/Services/CarPlayManager.swift index 2e6f470b5..211213fe3 100644 --- a/BookPlayer/Services/CarPlayManager.swift +++ b/BookPlayer/Services/CarPlayManager.swift @@ -748,4 +748,8 @@ extension CarPlayManager: PlaybackSyncProgressDelegate { func waitForSyncInProgress() async { _ = await contentsFetchTask?.result } + + func fetchExternalResource(_ playableItem: PlayableItem) async { + + } } diff --git a/BookPlayer/Settings/Sections/PlayerControls/GlobalSpeedSectionView.swift b/BookPlayer/Settings/Sections/PlayerControls/GlobalSpeedSectionView.swift index c9cecbc59..f04f0b7e7 100644 --- a/BookPlayer/Settings/Sections/PlayerControls/GlobalSpeedSectionView.swift +++ b/BookPlayer/Settings/Sections/PlayerControls/GlobalSpeedSectionView.swift @@ -32,7 +32,7 @@ struct GlobalSpeedSectionView: View { .foregroundStyle(theme.linkColor) } } label: { - Text("Quick Action 1") + Text(String(format: "quick_action_label".localized, 1)) .bpFont(.body) } .pickerStyle(.menu) @@ -44,7 +44,7 @@ struct GlobalSpeedSectionView: View { .foregroundStyle(theme.linkColor) } } label: { - Text("Quick Action 2") + Text(String(format: "quick_action_label".localized, 2)) .bpFont(.body) } .pickerStyle(.menu) @@ -56,12 +56,12 @@ struct GlobalSpeedSectionView: View { .foregroundStyle(theme.linkColor) } } label: { - Text("Quick Action 3") + Text(String(format: "quick_action_label".localized, 3)) .bpFont(.body) } .pickerStyle(.menu) Toggle(isOn: $globalSpeedEnabled) { - Text("settings_globalspeed_title") + Text("settings_globalspeed_title".localized) .bpFont(.body) } } header: { @@ -69,7 +69,7 @@ struct GlobalSpeedSectionView: View { .bpFont(.subheadline) .foregroundStyle(theme.secondaryColor) } footer: { - Text("settings_globalspeed_description") + Text("settings_globalspeed_description".localized) .bpFont(.caption) .foregroundStyle(theme.secondaryColor) } diff --git a/BookPlayer/Settings/Sections/SettingsIntegrationsSectionView.swift b/BookPlayer/Settings/Sections/SettingsIntegrationsSectionView.swift index dcff141f9..2ca4a0db7 100644 --- a/BookPlayer/Settings/Sections/SettingsIntegrationsSectionView.swift +++ b/BookPlayer/Settings/Sections/SettingsIntegrationsSectionView.swift @@ -23,7 +23,7 @@ struct SettingsIntegrationsSectionView: View { .bpFont(.body) } } header: { - Text("integrations_title") + Text("integrations_title".localized) .bpFont(.subheadline) .foregroundStyle(theme.secondaryColor) } diff --git a/BookPlayer/Settings/SettingsCompleteAccountView.swift b/BookPlayer/Settings/SettingsCompleteAccountView.swift index 6e4965820..c7a2e209d 100644 --- a/BookPlayer/Settings/SettingsCompleteAccountView.swift +++ b/BookPlayer/Settings/SettingsCompleteAccountView.swift @@ -7,13 +7,15 @@ // import SwiftUI +import BookPlayerKit struct SettingsCompleteAccountView: View { @Environment(\.dismiss) private var dismiss - + var subType: AccessLevel = .pro + var body: some View { NavigationStack { - CompleteAccountView { + CompleteAccountView(subType: subType) { dismiss() } } diff --git a/BookPlayer/Settings/SettingsView.swift b/BookPlayer/Settings/SettingsView.swift index cdd070702..d14e9dc4f 100644 --- a/BookPlayer/Settings/SettingsView.swift +++ b/BookPlayer/Settings/SettingsView.swift @@ -178,6 +178,8 @@ struct SettingsView: View { return "p" case .pro: return "c" + case .lite: + return "l" } } diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index ae2c0adc0..b9203d80c 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -77,10 +77,18 @@ final class AppServices: BPLogger { let accountService = makeAccountService(dataManager: dataManager) let audioMetadataService = makeAudioMetadataService() let libraryService = makeLibraryService(dataManager: dataManager, audioMetadataService: audioMetadataService) + let tasksDataManager = TasksDataManager() + let concurrenceService = makeConcurrenceService( + libraryService: libraryService, + accessLevel: accountService.accessLevel, + tasksDataManager: tasksDataManager, + dataManager: dataManager + ) let syncService = makeSyncService( accountService: accountService, libraryService: libraryService, - dataManager: dataManager + concurrenceService: concurrenceService, + tasksDataManager: tasksDataManager ) let playbackService = makePlaybackService(libraryService: libraryService) let playerManager = PlayerManager( @@ -102,7 +110,7 @@ final class AppServices: BPLogger { playbackService: playbackService, playerManager: playerManager ) - let hardcoverService = makeHardcoverService(libraryService: libraryService) + let hardcoverService = makeHardcoverService(libraryService: libraryService, syncService: syncService) let preferencesService = PreferencesSyncService() preferencesService.setup( @@ -122,6 +130,7 @@ final class AppServices: BPLogger { playerManager: playerManager, preferencesService: preferencesService, syncService: syncService, + concurrenceService: concurrenceService, watchService: watchService ) @@ -223,13 +232,32 @@ final class AppServices: BPLogger { private func makeSyncService( accountService: AccountService, libraryService: LibraryService, - dataManager: DataManager + concurrenceService: ConcurrenceService, + tasksDataManager: TasksDataManager ) -> SyncService { let service = SyncService() service.setup( isActive: accountService.hasSyncEnabled(), libraryService: libraryService, accountService: accountService, + concurrenceService: concurrenceService, + tasksDataManager: tasksDataManager + ) + return service + } + + private func makeConcurrenceService( + libraryService: LibraryService, + accessLevel: AccessLevel, + tasksDataManager: TasksDataManager, + dataManager: DataManager + ) -> ConcurrenceService { + let service = ConcurrenceService() + service.setup( + libraryService: libraryService, + accessLevel: accessLevel, + tasksDataManager: tasksDataManager, + networkClient: NetworkClient(), dataManager: dataManager ) return service @@ -257,9 +285,9 @@ final class AppServices: BPLogger { return service } - private func makeHardcoverService(libraryService: LibraryService) -> HardcoverService { + private func makeHardcoverService(libraryService: LibraryService, syncService: SyncService) -> HardcoverService { let service = HardcoverService() - service.setup(libraryService: libraryService) + service.setup(libraryService: libraryService, syncService: syncService) return service } } diff --git a/BookPlayer/Utils/CoreServices.swift b/BookPlayer/Utils/CoreServices.swift index aa365071c..5e41cbf63 100644 --- a/BookPlayer/Utils/CoreServices.swift +++ b/BookPlayer/Utils/CoreServices.swift @@ -19,5 +19,6 @@ struct CoreServices { let playerManager: PlayerManager let preferencesService: PreferencesSyncService let syncService: SyncService + let concurrenceService: ConcurrenceService let watchService: PhoneWatchConnectivityService } diff --git a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift index 06c60f893..ee775e055 100644 --- a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift +++ b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift @@ -15,6 +15,7 @@ extension EnvironmentValues { @Entry var syncService: SyncService = .init() @Entry var playerLoaderService: PlayerLoaderService = .init() @Entry var playbackService: PlaybackService = .init() + @Entry var concurrenceService: ConcurrenceService = .init() @Entry var jellyfinService: JellyfinConnectionService = .init() @Entry var audiobookshelfService: AudiobookShelfConnectionService = .init() @Entry var hardcoverService: HardcoverService = .init() diff --git a/BookPlayer/Utils/Extensions/Notification+BookPlayer.swift b/BookPlayer/Utils/Extensions/Notification+BookPlayer.swift index decbca539..5e8d1ae2f 100644 --- a/BookPlayer/Utils/Extensions/Notification+BookPlayer.swift +++ b/BookPlayer/Utils/Extensions/Notification+BookPlayer.swift @@ -18,4 +18,7 @@ extension Notification.Name { /// surface shares the same `AVPlayer`; the fullscreen surface takes over its video /// output, so the inline surface must reclaim rendering once fullscreen is gone. static let videoFullscreenDidDismiss = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).video.fullscreen.dismissed") + /// Posted to deep-link into Settings → Media Servers (e.g. from the missing-server + /// prompt when a synced-down external resource has no matching connection on this device). + static let showMediaServers = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).show.mediaservers") } diff --git a/BookPlayer/Utils/PlayerState.swift b/BookPlayer/Utils/PlayerState.swift index e2a361f69..fd2d093b4 100644 --- a/BookPlayer/Utils/PlayerState.swift +++ b/BookPlayer/Utils/PlayerState.swift @@ -13,7 +13,9 @@ class PlayerState { var loadedBookRelativePath: String? var showPlayer = false var isShowingPlayer = false - + var showResumePopup = false + var remotePlayTime: Double? = nil + var showPlayerBinding: Binding { .init( get: { self.showPlayer }, @@ -27,6 +29,13 @@ class PlayerState { set: { self.isShowingPlayer = $0 } ) } + + var showResumePopupBinding: Binding { + .init( + get: { self.showResumePopup }, + set: { self.showResumePopup = $0 } + ) + } init() {} } diff --git a/BookPlayer/ar.lproj/Localizable.strings b/BookPlayer/ar.lproj/Localizable.strings index 63442e413..868f14367 100644 --- a/BookPlayer/ar.lproj/Localizable.strings +++ b/BookPlayer/ar.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "وفر مساحة التخزين الخاصة بك!"; +"sync_invitation_learn_more_button" = "معرفة المزيد"; +"sync_invitation_description" = "أنت على وشك %1 %2 من العناصر. %3"; +"sync_invitation_stream_description" = "بدلاً من استهلاك المساحة، قم ببثها مباشرة من خادمك وحافظ على مزامنة تقدمك."; +"sync_tasks_concurrent_count_title" = "المهام المتزامنة (%d)"; +"sync_tasks_running_empty_title" = "لا توجد مهام قيد التشغيل"; +"sync_tasks_empty_title" = "لا توجد مهام في الانتظار"; +"sync_tasks_empty_description" = "جميع مهام المزامنة الخاصة بك محدثة."; +"sync_task_update_progress_label" = "جاري تحديث التقدم لـ %@"; +"sync_task_upload_file_label" = "جاري رفع الملف"; +"audiobook_details_narrator_label" = "رواية %@"; +"stream_button" = "بث"; +"import_verb" = "استيراد"; +"download_verb" = "تنزيل"; +"passkey_title" = "مفتاح المرور"; +"create_profile_title" = "أنشئ ملفك الشخصي"; +"create_profile_description" = "لتمكين المزامنة السحابية، قم بتسجيل الدخول إلى ملفك الشخصي. يمكنك القيام بذلك لاحقًا من علامة تبويب الملف الشخصي."; +"not_now_button" = "ليس الآن"; +"quick_action_label" = "إجراء سريع %d"; diff --git a/BookPlayer/ca.lproj/Localizable.strings b/BookPlayer/ca.lproj/Localizable.strings index 501bd14e2..52bac7c17 100644 --- a/BookPlayer/ca.lproj/Localizable.strings +++ b/BookPlayer/ca.lproj/Localizable.strings @@ -504,3 +504,22 @@ Estem treballant dur per oferir una experiència perfecta; si és possible, pose "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Estalvia espai d'emmagatzematge!"; +"sync_invitation_learn_more_button" = "Més informació"; +"sync_invitation_description" = "Estàs a punt de %1 %2 elements. %3"; +"sync_invitation_stream_description" = "En lloc d'ocupar espai, reprodueix-los directament des del teu servidor i mantén el teu progrés sincronitzat."; +"sync_tasks_concurrent_count_title" = "Tasques simultànies (%d)"; +"sync_tasks_running_empty_title" = "No hi ha tasques en curs"; +"sync_tasks_empty_title" = "No hi ha tasques a la cua"; +"sync_tasks_empty_description" = "Totes les tasques de sincronització estan al dia."; +"sync_task_update_progress_label" = "S'està actualitzant el progrés de %@"; +"sync_task_upload_file_label" = "S'està pujant el fitxer"; +"audiobook_details_narrator_label" = "Narrat per %@"; +"stream_button" = "Reprodueix"; +"import_verb" = "importar"; +"download_verb" = "descarregar"; +"passkey_title" = "Clau d'accés"; +"create_profile_title" = "Crea el teu perfil"; +"create_profile_description" = "Per habilitar la sincronització al núvol, inicia sessió al teu perfil. Pots fer-ho més tard des de la pestanya Perfil."; +"not_now_button" = "Ara no"; +"quick_action_label" = "Acció ràpida %d"; diff --git a/BookPlayer/cs.lproj/Localizable.strings b/BookPlayer/cs.lproj/Localizable.strings index 1678392c9..d16031ab1 100644 --- a/BookPlayer/cs.lproj/Localizable.strings +++ b/BookPlayer/cs.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Šetřete své úložiště!"; +"sync_invitation_learn_more_button" = "Dozvědět se více"; +"sync_invitation_description" = "Chystáte se %1 %2 položek. %3"; +"sync_invitation_stream_description" = "Místo zabírání místa je streamujte přímo ze svého serveru a udržujte svůj pokrok synchronizovaný."; +"sync_tasks_concurrent_count_title" = "Souběžné úkoly (%d)"; +"sync_tasks_running_empty_title" = "Žádné běžící úkoly"; +"sync_tasks_empty_title" = "Žádné úkoly ve frontě"; +"sync_tasks_empty_description" = "Všechny vaše synchronizační úkoly jsou aktuální."; +"sync_task_update_progress_label" = "Aktualizace průběhu pro %@"; +"sync_task_upload_file_label" = "Nahrávání souboru"; +"audiobook_details_narrator_label" = "Vypráví %@"; +"stream_button" = "Streamovat"; +"import_verb" = "importovat"; +"download_verb" = "stáhnout"; +"passkey_title" = "Passkey"; +"create_profile_title" = "Vytvořte si profil"; +"create_profile_description" = "Chcete-li povolit synchronizaci v cloudu, přihlaste se ke svému profilu. To můžete provést kdykoli později na kartě Profil."; +"not_now_button" = "Nyní ne"; +"quick_action_label" = "Rychlá akce %d"; diff --git a/BookPlayer/da.lproj/Localizable.strings b/BookPlayer/da.lproj/Localizable.strings index 6d8f2c993..940a6a9ed 100644 --- a/BookPlayer/da.lproj/Localizable.strings +++ b/BookPlayer/da.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Spar din lagerplads!"; +"sync_invitation_learn_more_button" = "Læs mere"; +"sync_invitation_description" = "Du er ved at %1 %2 emner. %3"; +"sync_invitation_stream_description" = "I stedet for at optage plads kan du streame dem direkte fra din server og holde din fremgang synkroniseret."; +"sync_tasks_concurrent_count_title" = "Samtidige opgaver (%d)"; +"sync_tasks_running_empty_title" = "Ingen aktive opgaver"; +"sync_tasks_empty_title" = "Ingen opgaver i kø"; +"sync_tasks_empty_description" = "Alle dine synkroniseringsopgaver er opdaterede."; +"sync_task_update_progress_label" = "Opdaterer fremdrift for %@"; +"sync_task_upload_file_label" = "Uploader fil"; +"audiobook_details_narrator_label" = "Indtalt af %@"; +"stream_button" = "Stream"; +"import_verb" = "importere"; +"download_verb" = "downloade"; +"passkey_title" = "Adgangsnøgle"; +"create_profile_title" = "Opret din profil"; +"create_profile_description" = "For at aktivere skysynkronisering skal du logge ind på din profil. Du kan altid gøre dette senere fra fanen Profil."; +"not_now_button" = "Ikke nu"; +"quick_action_label" = "Hurtig handling %d"; diff --git a/BookPlayer/de.lproj/Localizable.strings b/BookPlayer/de.lproj/Localizable.strings index e4c070aaa..c8ae0bc35 100644 --- a/BookPlayer/de.lproj/Localizable.strings +++ b/BookPlayer/de.lproj/Localizable.strings @@ -309,6 +309,7 @@ "choose_plan_title" = "Wähle deinen Plan"; "tasks_title" = "Aufgaben"; "queued_sync_tasks_title" = "Synchronisierungsaufgaben in der Warteschlange (%d)"; +"sync_tasks_queued_count_title" = "Warteschlangen-Aufgaben (%d)"; "sync_tasks_alert_description" = "Wenn eine Synchronisierungsaufgabe hängen bleibt und nach einer aktiven Internetverbindung nicht gelöscht werden kann, kannst du dich abmelden und wieder anmelden, um die aktuellen Aufgaben zu löschen. Dadurch wird deine Bibliothek auf den letzten mit unseren Servern synchronisierten Status zurückgesetzt. Beachte, dass Upload-Aufgaben einige Zeit in Anspruch nehmen können und der Fortschritt regelmäßig auf dem vorherigen Bildschirm angezeigt wird. @@ -504,3 +505,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Speicherplatz sparen!"; +"sync_invitation_learn_more_button" = "Mehr erfahren"; +"sync_invitation_description" = "Sie sind dabei"; +"sync_invitation_stream_description" = "Anstatt Platz zu beanspruchen, streamen Sie diese direkt von Ihrem Server und halten Sie Ihren Fortschritt synchronisiert."; +"sync_tasks_concurrent_count_title" = "Gleichzeitige Aufgaben (%d)"; +"sync_tasks_running_empty_title" = "Keine laufenden Aufgaben"; +"sync_tasks_empty_title" = "Keine Aufgaben in der Warteschlange"; +"sync_tasks_empty_description" = "Alle Ihre Synchronisierungsaufgaben sind auf dem neuesten Stand."; +"sync_task_update_progress_label" = "Fortschritt für %@ wird aktualisiert"; +"sync_task_upload_file_label" = "Datei wird hochgeladen"; +"audiobook_details_narrator_label" = "Gelesen von %@"; +"stream_button" = "Streamen"; +"import_verb" = "importieren"; +"download_verb" = "herunterladen"; +"passkey_title" = "Passkey"; +"create_profile_title" = "Profil erstellen"; +"create_profile_description" = "Um die Cloud-Synchronisierung zu aktivieren, melden Sie sich bei Ihrem Profil an. Sie können dies später jederzeit im Tab „Profil“ nachholen."; +"not_now_button" = "Nicht jetzt"; +"quick_action_label" = "Schnellaktion %d"; diff --git a/BookPlayer/el.lproj/Localizable.strings b/BookPlayer/el.lproj/Localizable.strings index 8d94ea286..4034bc608 100644 --- a/BookPlayer/el.lproj/Localizable.strings +++ b/BookPlayer/el.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Εξοικονομήστε χώρο αποθήκευσης!"; +"sync_invitation_learn_more_button" = "Μάθετε περισσότερα"; +"sync_invitation_description" = "Πρόκειται να %1 %2 στοιχεία. %3"; +"sync_invitation_stream_description" = "Αντί να καταλαμβάνουν χώρο, μεταδώστε τα απευθείας από τον διακομιστή σας και διατηρήστε την πρόοδό σας συγχρονισμένη."; +"sync_tasks_concurrent_count_title" = "Ταυτόχρονες εργασίες (%d)"; +"sync_tasks_running_empty_title" = "Δεν υπάρχουν εργασίες σε εκτέλεση"; +"sync_tasks_empty_title" = "Δεν υπάρχουν εργασίες σε αναμονή"; +"sync_tasks_empty_description" = "Όλες οι εργασίες συγχρονισμού είναι ενημερωμένες."; +"sync_task_update_progress_label" = "Ενημέρωση προόδου για %@"; +"sync_task_upload_file_label" = "Μεταφόρτωση αρχείου"; +"audiobook_details_narrator_label" = "Αφήγηση από %@"; +"stream_button" = "Μετάδοση"; +"import_verb" = "εισαγωγή"; +"download_verb" = "λήψη"; +"passkey_title" = "Κλειδί πρόσβασης"; +"create_profile_title" = "Δημιουργήστε το προφίλ σας"; +"create_profile_description" = "Για να ενεργοποιήσετε τον συγχρονισμό στο cloud, συνδεθείτε στο προφίλ σας. Μπορείτε να το κάνετε αργότερα από την καρτέλα Προφίλ."; +"not_now_button" = "Όχι τώρα"; +"quick_action_label" = "Γρήγορη ενέργεια %d"; diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index ac6954275..4ee39febf 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -312,11 +312,37 @@ "choose_plan_title" = "Choose your plan"; "tasks_title" = "Tasks"; "queued_sync_tasks_title" = "Queued sync tasks (%d)"; +"sync_tasks_queued_count_title" = "Queued Tasks (%d)"; "sync_tasks_alert_description" = "If there's a synchronization task that is stuck and doesn't clear out after having an active internet connection, you can log out and sign in to clear out the current tasks. This will revert your library to the last state synchronized to our servers. -Keep in mind that upload tasks can take some time, and the progress will be periodically posted on the previous screen. +Keep in mind that upload tasks can take some time, and the progress will be periodically posted on the previous screen."; -We're working hard on providing a seamless experience, if possible, please contact us at support@bookplayer.app with a screenshot of this screen. Thanks!"; +"sync_invitation_save_storage_title" = "Save Your Storage!"; +"sync_invitation_learn_more_button" = "Learn more"; +"sync_invitation_description" = "You're about to %1$@ %2$d items. %3$@"; +"sync_invitation_stream_description" = "Instead of taking up space, stream them directly from your server and keep your progress synced."; +"sync_tasks_concurrent_count_title" = "Concurrent Tasks (%d)"; +"sync_tasks_running_empty_title" = "No running tasks"; +"sync_tasks_empty_title" = "No queued tasks"; +"sync_tasks_empty_description" = "All your sync tasks are up to date."; +"sync_task_update_progress_label" = "Updating progress for %@"; +"sync_task_upload_file_label" = "Uploading file"; +"audiobook_details_narrator_label" = "Narrated by %@"; +"stream_button" = "Stream"; +"integrations_title" = "Integrations"; +"import_verb" = "import"; +"download_verb" = "download"; +"passkey_title" = "Passkey"; +"create_profile_title" = "Create your profile"; +"create_profile_description" = "To enable cloud sync, sign into your profile. You can always do this later from within the Profile tab"; +"not_now_button" = "Not now"; +"quick_action_label" = "Quick Action %d"; +"file_path_title" = "File Path"; +"genres_title" = "Genres"; +"overview_title" = "Overview"; +"tags_title" = "Tags"; +"series_title" = "Series"; +"apple_watch_beta_title" = "Apple Watch (Beta)"; "sort_by_size_title" = "Size"; "settings_storage_sync_deleted_description" = "Files removed (sync operations)"; "storage_sync_deleted_recover_description" = "You can import back your local books and folders if they were deleted by a sync operation. This will move all of them back to the documents folder, triggering the import process. If folders are involved, this could mean that the originals are still in the library, and some renaming will have to take place, sorry about this inconvenience"; @@ -430,7 +456,6 @@ We're working hard on providing a seamless experience, if possible, please conta "voiceover_hardcover_navigation_hint" = "Navigate to select a book from Hardcover"; "voiceover_book_cover" = "%@ by %@, book cover"; "voiceover_loading_book_cover" = "Loading book cover"; -"integrations_title" = "Integrations"; "File Path" = "File Path"; "Genres" = "Genres"; "Overview" = "Overview"; @@ -449,6 +474,11 @@ We're working hard on providing a seamless experience, if possible, please conta "hours" = "Hours"; "minutes" = "Minutes"; +"provider_title" = "Provider"; +"provider_id_title" = "Item ID"; +"host_title" = "Host"; +"external_resources_title" = "External Resources"; + // Passkey Authentication "passkey_continue_button" = "Continue with Passkey"; "passkey_signin_button" = "Sign in with Passkey"; diff --git a/BookPlayer/es.lproj/Localizable.strings b/BookPlayer/es.lproj/Localizable.strings index ddb81bbc5..4ae0f2639 100644 --- a/BookPlayer/es.lproj/Localizable.strings +++ b/BookPlayer/es.lproj/Localizable.strings @@ -309,6 +309,7 @@ "choose_plan_title" = "Elige tu plan"; "tasks_title" = "Tareas"; "queued_sync_tasks_title" = "Tareas de sincronización en cola (%d)"; +"sync_tasks_queued_count_title" = "Tareas en cola (%d)"; "sync_tasks_alert_description" = "Si hay una tarea de sincronización que está atascada y no se borra después de tener una conexión a Internet activa, puede cerrar sesión e iniciar sesión para borrar las tareas actuales. Esto revertirá su biblioteca al último estado sincronizado con nuestros servidores. Tenga en cuenta que las tareas de carga pueden llevar algún tiempo y el progreso se publicará periódicamente en la pantalla anterior. @@ -504,3 +505,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "¡Ahorra espacio!"; +"sync_invitation_learn_more_button" = "Más información"; +"sync_invitation_description" = "Estás a punto de %1 %2 elementos. %3"; +"sync_invitation_stream_description" = "En lugar de ocupar espacio, transmítelos directamente desde tu servidor y mantén tu progreso sincronizado."; +"sync_tasks_concurrent_count_title" = "Tareas simultáneas (%d)"; +"sync_tasks_running_empty_title" = "No hay tareas en curso"; +"sync_tasks_empty_title" = "No hay tareas en cola"; +"sync_tasks_empty_description" = "Todas tus tareas de sincronización están al día."; +"sync_task_update_progress_label" = "Actualizando progreso de %@"; +"sync_task_upload_file_label" = "Subiendo archivo"; +"audiobook_details_narrator_label" = "Narrado por %@"; +"stream_button" = "Transmitir"; +"import_verb" = "importar"; +"download_verb" = "descargar"; +"passkey_title" = "Llave de acceso"; +"create_profile_title" = "Crea tu perfil"; +"create_profile_description" = "Para habilitar la sincronización en la nube, inicia sesión en tu perfil. Siempre puedes hacerlo más tarde desde la pestaña Perfil."; +"not_now_button" = "Ahora no"; +"quick_action_label" = "Acción rápida %d"; diff --git a/BookPlayer/fi.lproj/Localizable.strings b/BookPlayer/fi.lproj/Localizable.strings index 454ffe20b..09f19e3b8 100644 --- a/BookPlayer/fi.lproj/Localizable.strings +++ b/BookPlayer/fi.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Säästä tallennustilaasi!"; +"sync_invitation_learn_more_button" = "Lue lisää"; +"sync_invitation_description" = "Olet aikeissa %1 %2 kohdetta. %3"; +"sync_invitation_stream_description" = "Tilan viemisen sijaan voit suoratoistaa ne suoraan palvelimeltasi ja pitää edistymisesi synkronoituna."; +"sync_tasks_concurrent_count_title" = "Samanaikaiset tehtävät (%d)"; +"sync_tasks_running_empty_title" = "Ei käynnissä olevia tehtäviä"; +"sync_tasks_empty_title" = "Ei jonossa olevia tehtäviä"; +"sync_tasks_empty_description" = "Kaikki synkronointitehtäväsi ovat ajan tasalla."; +"sync_task_update_progress_label" = "Päivitetään edistymistä kohteelle %@"; +"sync_task_upload_file_label" = "Ladataan tiedostoa"; +"audiobook_details_narrator_label" = "Lukija: %@"; +"stream_button" = "Suoratoista"; +"import_verb" = "tuoda"; +"download_verb" = "ladata"; +"passkey_title" = "Pääsyavain"; +"create_profile_title" = "Luo profiilisi"; +"create_profile_description" = "Ota pilvisynkronointi käyttöön kirjautumalla profiiliisi. Voit tehdä tämän myöhemmin Profiili-välilehdeltä."; +"not_now_button" = "Ei nyt"; +"quick_action_label" = "Pikatoiminto %d"; diff --git a/BookPlayer/fr.lproj/Localizable.strings b/BookPlayer/fr.lproj/Localizable.strings index 5fd95353f..62ff649a6 100644 --- a/BookPlayer/fr.lproj/Localizable.strings +++ b/BookPlayer/fr.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Économisez votre stockage !"; +"sync_invitation_learn_more_button" = "En savoir plus"; +"sync_invitation_description" = "Vous êtes sur le point de %1 %2 éléments. %3"; +"sync_invitation_stream_description" = "Au lieu de prendre de la place, diffusez-les directement depuis votre serveur et gardez votre progression synchronisée."; +"sync_tasks_concurrent_count_title" = "Tâches simultanées (%d)"; +"sync_tasks_running_empty_title" = "Aucune tâche en cours"; +"sync_tasks_empty_title" = "Aucune tâche en attente"; +"sync_tasks_empty_description" = "Toutes vos tâches de synchronisation sont à jour."; +"sync_task_update_progress_label" = "Mise à jour de la progression pour %@"; +"sync_task_upload_file_label" = "Chargement du fichier"; +"audiobook_details_narrator_label" = "Narré par %@"; +"stream_button" = "Diffuser"; +"import_verb" = "importer"; +"download_verb" = "télécharger"; +"passkey_title" = "Clé d'accès"; +"create_profile_title" = "Créez votre profil"; +"create_profile_description" = "Pour activer la synchronisation cloud, connectez-vous à votre profil. Vous pourrez toujours le faire plus tard via l'onglet Profil."; +"not_now_button" = "Pas maintenant"; +"quick_action_label" = "Action rapide %d"; diff --git a/BookPlayer/hu.lproj/Localizable.strings b/BookPlayer/hu.lproj/Localizable.strings index 444b8f23b..0a020b076 100644 --- a/BookPlayer/hu.lproj/Localizable.strings +++ b/BookPlayer/hu.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Spóroljon a tárhellyel!"; +"sync_invitation_learn_more_button" = "Tudjon meg többet"; +"sync_invitation_description" = "Éppen %1 %2 elemet. %3"; +"sync_invitation_stream_description" = "Ahelyett, hogy helyet foglalna, streamelje őket közvetlenül a szerveréről, és tartsa szinkronban a haladását."; +"sync_tasks_concurrent_count_title" = "Párhuzamos feladatok (%d)"; +"sync_tasks_running_empty_title" = "Nincsenek futó feladatok"; +"sync_tasks_empty_title" = "Nincsenek várakozó feladatok"; +"sync_tasks_empty_description" = "Minden szinkronizálási feladata naprakész."; +"sync_task_update_progress_label" = "Haladás frissítése a következőhöz: %@"; +"sync_task_upload_file_label" = "Fájl feltöltése"; +"audiobook_details_narrator_label" = "Felolvassa: %@"; +"stream_button" = "Streamelés"; +"import_verb" = "importálni"; +"download_verb" = "letölteni"; +"passkey_title" = "Jelkulcs"; +"create_profile_title" = "Hozza létre profilját"; +"create_profile_description" = "A felhőalapú szinkronizálás engedélyezéséhez jelentkezzen be profiljába. Ezt később bármikor megteheti a Profil lapon."; +"not_now_button" = "Most nem"; +"quick_action_label" = "Gyorsművelet %d"; diff --git a/BookPlayer/it.lproj/Localizable.strings b/BookPlayer/it.lproj/Localizable.strings index 1c203d3f4..d0250f915 100644 --- a/BookPlayer/it.lproj/Localizable.strings +++ b/BookPlayer/it.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Risparmia spazio!"; +"sync_invitation_learn_more_button" = "Scopri di più"; +"sync_invitation_description" = "Stai per %1 %2 elementi. %3"; +"sync_invitation_stream_description" = "Invece di occupare spazio, riproducili in streaming direttamente dal tuo server e mantieni i tuoi progressi sincronizzati."; +"sync_tasks_concurrent_count_title" = "Attività simultanee (%d)"; +"sync_tasks_running_empty_title" = "Nessuna attività in corso"; +"sync_tasks_empty_title" = "Nessuna attività in coda"; +"sync_tasks_empty_description" = "Tutte le tue attività di sincronizzazione sono aggiornate."; +"sync_task_update_progress_label" = "Aggiornamento dei progressi per %@"; +"sync_task_upload_file_label" = "Caricamento file"; +"audiobook_details_narrator_label" = "Narrato da %@"; +"stream_button" = "Streaming"; +"import_verb" = "importare"; +"download_verb" = "scaricare"; +"passkey_title" = "Passkey"; +"create_profile_title" = "Crea il tuo profilo"; +"create_profile_description" = "Per abilitare la sincronizzazione cloud, accedi al tuo profilo. Puoi farlo in qualsiasi momento dalla scheda Profilo."; +"not_now_button" = "Non ora"; +"quick_action_label" = "Azione rapida %d"; diff --git a/BookPlayer/ja.lproj/Localizable.strings b/BookPlayer/ja.lproj/Localizable.strings index 357060dbf..99a57f6d1 100644 --- a/BookPlayer/ja.lproj/Localizable.strings +++ b/BookPlayer/ja.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "ストレージを節約しましょう!"; +"sync_invitation_learn_more_button" = "詳細はこちら"; +"sync_invitation_description" = "%2$d 個のアイテムを %1$@ しようとしています。%3$@"; +"sync_invitation_stream_description" = "容量を占有する代わりに、サーバーから直接ストリーミングして進捗を同期させることができます。"; +"sync_tasks_concurrent_count_title" = "同時タスク (%d)"; +"sync_tasks_running_empty_title" = "実行中のタスクはありません"; +"sync_tasks_empty_title" = "待機中のタスクはありません"; +"sync_tasks_empty_description" = "すべての同期タスクは最新です。"; +"sync_task_update_progress_label" = "%@ の進捗を更新中"; +"sync_task_upload_file_label" = "ファイルをアップロード中"; +"audiobook_details_narrator_label" = "ナレーション: %@"; +"stream_button" = "ストリーム"; +"import_verb" = "インポート"; +"download_verb" = "ダウンロード"; +"passkey_title" = "パスキー"; +"create_profile_title" = "プロフィールを作成"; +"create_profile_description" = "クラウド同期を有効にするには、プロフィールにサインインしてください。これは後でプロフィールタブからいつでも行えます。"; +"not_now_button" = "後で"; +"quick_action_label" = "クイックアクション %d"; diff --git a/BookPlayer/nb.lproj/Localizable.strings b/BookPlayer/nb.lproj/Localizable.strings index f37e327f9..d21b7a10e 100644 --- a/BookPlayer/nb.lproj/Localizable.strings +++ b/BookPlayer/nb.lproj/Localizable.strings @@ -504,3 +504,22 @@ Vi jobber hardt for å gi deg en sømløs opplevelse. Hvis mulig, kontakt oss p "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Spar lagringsplass!"; +"sync_invitation_learn_more_button" = "Lær mer"; +"sync_invitation_description" = "Du er i ferd med å %1 %2 elementer. %3"; +"sync_invitation_stream_description" = "I stedet for å ta opp plass, kan du strømme dem direkte fra serveren din og holde fremgangen din synkronisert."; +"sync_tasks_concurrent_count_title" = "Samtidige oppgaver (%d)"; +"sync_tasks_running_empty_title" = "Ingen oppgaver kjører"; +"sync_tasks_empty_title" = "Ingen oppgaver i kø"; +"sync_tasks_empty_description" = "Alle synkroniseringsoppgavene dine er oppdatert."; +"sync_task_update_progress_label" = "Oppdaterer fremdrift for %@"; +"sync_task_upload_file_label" = "Laster opp fil"; +"audiobook_details_narrator_label" = "Lest av %@"; +"stream_button" = "Strøm"; +"import_verb" = "importere"; +"download_verb" = "laste ned"; +"passkey_title" = "Passnøkkel"; +"create_profile_title" = "Opprett din profil"; +"create_profile_description" = "Logg inn på profilen din for å aktivere skysynkronisering. Du kan alltid gjøre dette senere fra Profil-fanen."; +"not_now_button" = "Ikke nå"; +"quick_action_label" = "Hurtighandling %d"; diff --git a/BookPlayer/nl.lproj/Localizable.strings b/BookPlayer/nl.lproj/Localizable.strings index 2b4bf0c28..4684cbd43 100644 --- a/BookPlayer/nl.lproj/Localizable.strings +++ b/BookPlayer/nl.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Bespaar opslagruimte!"; +"sync_invitation_learn_more_button" = "Meer informatie"; +"sync_invitation_description" = "Je staat op het punt om %2 items te %1. %3"; +"sync_invitation_stream_description" = "In plaats van ruimte in beslag te nemen, kun je ze rechtstreeks vanaf je server streamen en je voortgang gesynchroniseerd houden."; +"sync_tasks_concurrent_count_title" = "Gelijktijdige taken (%d)"; +"sync_tasks_running_empty_title" = "Geen lopende taken"; +"sync_tasks_empty_title" = "Geen taken in de wachtrij"; +"sync_tasks_empty_description" = "Al je synchronisatietaken zijn up-to-date."; +"sync_task_update_progress_label" = "Voortgang bijwerken voor %@"; +"sync_task_upload_file_label" = "Bestand uploaden"; +"audiobook_details_narrator_label" = "Verteld door %@"; +"stream_button" = "Streamen"; +"import_verb" = "importeren"; +"download_verb" = "downloaden"; +"passkey_title" = "Toegangssleutel"; +"create_profile_title" = "Maak je profiel aan"; +"create_profile_description" = "Log in op je profiel om cloudsynchronisatie in te schakelen. Je kunt dit later altijd doen via het tabblad Profiel."; +"not_now_button" = "Niet nu"; +"quick_action_label" = "Snelle actie %d"; diff --git a/BookPlayer/pl.lproj/Localizable.strings b/BookPlayer/pl.lproj/Localizable.strings index a504e7696..d998b0542 100644 --- a/BookPlayer/pl.lproj/Localizable.strings +++ b/BookPlayer/pl.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Oszczędzaj miejsce na dysku!"; +"sync_invitation_learn_more_button" = "Dowiedz się więcej"; +"sync_invitation_description" = "Zaraz zaczniesz %1 %2 elementów. %3"; +"sync_invitation_stream_description" = "Zamiast zajmować miejsce, odtwarzaj je strumieniowo bezpośrednio z serwera i synchronizuj swoje postępy."; +"sync_tasks_concurrent_count_title" = "Zadania współbieżne (%d)"; +"sync_tasks_running_empty_title" = "Brak uruchomionych zadań"; +"sync_tasks_empty_title" = "Brak zadań w kolejce"; +"sync_tasks_empty_description" = "Wszystkie zadania synchronizacji są aktualne."; +"sync_task_update_progress_label" = "Aktualizacja postępu dla %@"; +"sync_task_upload_file_label" = "Przesyłanie pliku"; +"audiobook_details_narrator_label" = "Czyta %@"; +"stream_button" = "Strumieniuj"; +"import_verb" = "importować"; +"download_verb" = "pobierać"; +"passkey_title" = "Klucz dostępu"; +"create_profile_title" = "Utwórz swój profil"; +"create_profile_description" = "Aby włączyć synchronizację w chmurze, zaloguj się do swojego profilu. Możesz to zrobić później w zakładce Profil."; +"not_now_button" = "Nie teraz"; +"quick_action_label" = "Szybka akcja %d"; diff --git a/BookPlayer/pt-BR.lproj/Localizable.strings b/BookPlayer/pt-BR.lproj/Localizable.strings index a6229d3c4..76bfdab22 100644 --- a/BookPlayer/pt-BR.lproj/Localizable.strings +++ b/BookPlayer/pt-BR.lproj/Localizable.strings @@ -309,6 +309,7 @@ "choose_plan_title" = "Escolha seu plano"; "tasks_title" = "Tarefas"; "queued_sync_tasks_title" = "Tarefas de sincronização em fila (%d)"; +"sync_tasks_queued_count_title" = "Tarefas em fila (%d)"; "sync_tasks_alert_description" = "Se houver uma tarefa de sincronização que está travada e não é eliminada após uma conexão ativa com a Internet, você pode fazer logout e entrar para limpar as tarefas atuais. Isso reverterá sua biblioteca para o último estado sincronizado com nossos servidores. Lembre-se de que as tarefas de upload podem levar algum tempo e o progresso será postado periodicamente na tela anterior. @@ -504,3 +505,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Economize seu armazenamento!"; +"sync_invitation_learn_more_button" = "Saiba mais"; +"sync_invitation_description" = "Você está prestes a %1 %2 itens. %3"; +"sync_invitation_stream_description" = "Em vez de ocupar espaço, transmita-os diretamente do seu servidor e mantenha seu progresso sincronizado."; +"sync_tasks_concurrent_count_title" = "Tarefas Simultâneas (%d)"; +"sync_tasks_running_empty_title" = "Nenhuma tarefa em execução"; +"sync_tasks_empty_title" = "Nenhuma tarefa na fila"; +"sync_tasks_empty_description" = "Todas as suas tarefas de sincronização estão em dia."; +"sync_task_update_progress_label" = "Atualizando progresso para %@"; +"sync_task_upload_file_label" = "Enviando arquivo"; +"audiobook_details_narrator_label" = "Narrado por %@"; +"stream_button" = "Transmitir"; +"import_verb" = "importar"; +"download_verb" = "baixar"; +"passkey_title" = "Chave de Acesso"; +"create_profile_title" = "Crie seu perfil"; +"create_profile_description" = "Para ativar a sincronização na nuvem, entre no seu perfil. Você pode fazer isso mais tarde na aba Perfil."; +"not_now_button" = "Agora não"; +"quick_action_label" = "Ação Rápida %d"; diff --git a/BookPlayer/pt-PT.lproj/Localizable.strings b/BookPlayer/pt-PT.lproj/Localizable.strings index 4a3bfd468..b0bb317a6 100644 --- a/BookPlayer/pt-PT.lproj/Localizable.strings +++ b/BookPlayer/pt-PT.lproj/Localizable.strings @@ -309,6 +309,7 @@ "choose_plan_title" = "Escolha o seu plano"; "tasks_title" = "Tarefas"; "queued_sync_tasks_title" = "Tarefas de sincronização em fila (%d)"; +"sync_tasks_queued_count_title" = "Tarefas em fila (%d)"; "sync_tasks_alert_description" = "Se houver uma tarefa de sincronização que está bloquada e não é eliminada após uma ligação activa à Internet, você pode fazer logout e login novamente para limpar as tarefas actuais. Isso irá repor a sua biblioteca para o último estado sincronizado com nossos servidores. Tenha em atenção de que as tarefas de upload poderão levar algum tempo e o progresso será notificado periodicamente no ecrã anterior. @@ -504,3 +505,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Poupe o seu armazenamento!"; +"sync_invitation_learn_more_button" = "Saber mais"; +"sync_invitation_description" = "Está prestes a %1 %2 itens. %3"; +"sync_invitation_stream_description" = "Em vez de ocupar espaço, transmita-os diretamente do seu servidor e mantenha o seu progresso sincronizado."; +"sync_tasks_concurrent_count_title" = "Tarefas Simultâneas (%d)"; +"sync_tasks_running_empty_title" = "Nenhuma tarefa em execução"; +"sync_tasks_empty_title" = "Nenhuma tarefa na fila"; +"sync_tasks_empty_description" = "Todas as suas tarefas de sincronização estão em dia."; +"sync_task_update_progress_label" = "A atualizar o progresso de %@"; +"sync_task_upload_file_label" = "A enviar ficheiro"; +"audiobook_details_narrator_label" = "Narrado por %@"; +"stream_button" = "Transmitir"; +"import_verb" = "importar"; +"download_verb" = "transferir"; +"passkey_title" = "Chave de Acesso"; +"create_profile_title" = "Crie o seu perfil"; +"create_profile_description" = "Para ativar a sincronização na nuvem, inicie sessão no seu perfil. Pode fazê-lo mais tarde no separador Perfil."; +"not_now_button" = "Agora não"; +"quick_action_label" = "Ação Rápida %d"; diff --git a/BookPlayer/ro.lproj/Localizable.strings b/BookPlayer/ro.lproj/Localizable.strings index c6fc950c2..750102a7d 100644 --- a/BookPlayer/ro.lproj/Localizable.strings +++ b/BookPlayer/ro.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Economisiți spațiu de stocare!"; +"sync_invitation_learn_more_button" = "Aflați mai multe"; +"sync_invitation_description" = "Sunteți pe cale să %1 %2 elemente. %3"; +"sync_invitation_stream_description" = "În loc să ocupați spațiu, redați-le direct de pe server și păstrați progresul sincronizat."; +"sync_tasks_concurrent_count_title" = "Sarcini simultane (%d)"; +"sync_tasks_running_empty_title" = "Nicio sarcină în curs"; +"sync_tasks_empty_title" = "Nicio sarcină în coadă"; +"sync_tasks_empty_description" = "Toate sarcinile de sincronizare sunt la zi."; +"sync_task_update_progress_label" = "Se actualizează progresul pentru %@"; +"sync_task_upload_file_label" = "Se încarcă fișierul"; +"audiobook_details_narrator_label" = "Narat de %@"; +"stream_button" = "Redare"; +"import_verb" = "importa"; +"download_verb" = "descărca"; +"passkey_title" = "Cheie de acces"; +"create_profile_title" = "Creați-vă profilul"; +"create_profile_description" = "Pentru a activa sincronizarea în cloud, conectați-vă la profilul dvs. Puteți face acest lucru mai târziu din fila Profil."; +"not_now_button" = "Nu acum"; +"quick_action_label" = "Acțiune rapidă %d"; diff --git a/BookPlayer/ru.lproj/Localizable.strings b/BookPlayer/ru.lproj/Localizable.strings index 358ab227c..373ae5f27 100644 --- a/BookPlayer/ru.lproj/Localizable.strings +++ b/BookPlayer/ru.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Экономьте место!"; +"sync_invitation_learn_more_button" = "Узнать больше"; +"sync_invitation_description" = "Вы собираетесь %1 %2 элементов. %3"; +"sync_invitation_stream_description" = "Вместо того чтобы занимать место, транслируйте их прямо со своего сервера и синхронизируйте прогресс."; +"sync_tasks_concurrent_count_title" = "Параллельные задачи (%d)"; +"sync_tasks_running_empty_title" = "Нет запущенных задач"; +"sync_tasks_empty_title" = "В очереди нет задач"; +"sync_tasks_empty_description" = "Все задачи синхронизации выполнены."; +"sync_task_update_progress_label" = "Обновление прогресса для %@"; +"sync_task_upload_file_label" = "Загрузка файла"; +"audiobook_details_narrator_label" = "Текст читает %@"; +"stream_button" = "Транслировать"; +"import_verb" = "импортировать"; +"download_verb" = "скачать"; +"passkey_title" = "Ключ доступа"; +"create_profile_title" = "Создайте свой профиль"; +"create_profile_description" = "Чтобы включить облачную синхронизацию, войдите в свой профиль. Вы всегда можете сделать это позже во вкладке «Профиль»."; +"not_now_button" = "Не сейчас"; +"quick_action_label" = "Быстрое действие %d"; diff --git a/BookPlayer/sk-SK.lproj/Localizable.strings b/BookPlayer/sk-SK.lproj/Localizable.strings index d04b70474..06cb5d594 100644 --- a/BookPlayer/sk-SK.lproj/Localizable.strings +++ b/BookPlayer/sk-SK.lproj/Localizable.strings @@ -504,3 +504,22 @@ Usilovne pracujeme na poskytovaní bezproblémového zážitku, ak je to možné "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Šetrite svoje úložisko!"; +"sync_invitation_learn_more_button" = "Dozvedieť sa viac"; +"sync_invitation_description" = "Chystáte sa %1 %2 položiek. %3"; +"sync_invitation_stream_description" = "Namiesto zaberania miesta ich streamujte priamo zo svojho servera a udržujte svoj pokrok synchronizovaný."; +"sync_tasks_concurrent_count_title" = "Súbežné úlohy (%d)"; +"sync_tasks_running_empty_title" = "Žiadne bežiace úlohy"; +"sync_tasks_empty_title" = "Žiadne úlohy v poradí"; +"sync_tasks_empty_description" = "Všetky vaše synchronizačné úlohy sú aktuálne."; +"sync_task_update_progress_label" = "Aktualizácia priebehu pre %@"; +"sync_task_upload_file_label" = "Nahrávanie súboru"; +"audiobook_details_narrator_label" = "Rozpráva %@"; +"stream_button" = "Streamovať"; +"import_verb" = "importovať"; +"download_verb" = "stiahnuť"; +"passkey_title" = "Prístupový kľúč"; +"create_profile_title" = "Vytvorte si profil"; +"create_profile_description" = "Ak chcete povoliť synchronizáciu v cloude, prihláste sa do svojho profilu. Môžete to urobiť kedykoľvek neskôr na karte Profil."; +"not_now_button" = "Teraz nie"; +"quick_action_label" = "Rýchla akcia %d"; diff --git a/BookPlayer/sv.lproj/Localizable.strings b/BookPlayer/sv.lproj/Localizable.strings index f9c8b7b33..d92ed649c 100644 --- a/BookPlayer/sv.lproj/Localizable.strings +++ b/BookPlayer/sv.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Spara ditt lagringsutrymme!"; +"sync_invitation_learn_more_button" = "Läs mer"; +"sync_invitation_description" = "Du är på väg att %1 %2 objekt. %3"; +"sync_invitation_stream_description" = "Istället för att ta upp plats kan du streama dem direkt från din server och hålla dina framsteg synkroniserade."; +"sync_tasks_concurrent_count_title" = "Samtidiga uppgifter (%d)"; +"sync_tasks_running_empty_title" = "Inga pågående uppgifter"; +"sync_tasks_empty_title" = "Inga uppgifter i kön"; +"sync_tasks_empty_description" = "Alla dina synkroniseringsuppgifter är uppdaterade."; +"sync_task_update_progress_label" = "Uppdaterar framsteg för %@"; +"sync_task_upload_file_label" = "Laddar upp fil"; +"audiobook_details_narrator_label" = "Uppläst av %@"; +"stream_button" = "Streama"; +"import_verb" = "importera"; +"download_verb" = "ladda ner"; +"passkey_title" = "Nyckelkod"; +"create_profile_title" = "Skapa din profil"; +"create_profile_description" = "För att aktivera molnsynkronisering, logga in på din profil. Du kan alltid göra detta senare från Profil-fliken."; +"not_now_button" = "Inte nu"; +"quick_action_label" = "Snabbåtgärd %d"; diff --git a/BookPlayer/tr.lproj/Localizable.strings b/BookPlayer/tr.lproj/Localizable.strings index 755d74f47..e303a7dbc 100644 --- a/BookPlayer/tr.lproj/Localizable.strings +++ b/BookPlayer/tr.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Depolama Alanınızdan Tasarruf Edin!"; +"sync_invitation_learn_more_button" = "Daha fazla bilgi al"; +"sync_invitation_description" = "%2 öğeyi %1 etmek üzeresiniz. %3"; +"sync_invitation_stream_description" = "Yer kaplamak yerine, onları doğrudan sunucunuzdan yayınlayın ve ilerlemenizi senkronize tutun."; +"sync_tasks_concurrent_count_title" = "Eşzamanlı Görevler (%d)"; +"sync_tasks_running_empty_title" = "Çalışan görev yok"; +"sync_tasks_empty_title" = "Sırada bekleyen görev yok"; +"sync_tasks_empty_description" = "Tüm senkronizasyon görevleriniz güncel."; +"sync_task_update_progress_label" = "%@ için ilerleme güncelleniyor"; +"sync_task_upload_file_label" = "Dosya yükleniyor"; +"audiobook_details_narrator_label" = "Seslendiren: %@"; +"stream_button" = "Yayınla"; +"import_verb" = "içe aktarmak"; +"download_verb" = "indirmek"; +"passkey_title" = "Geçiş Anahtarı"; +"create_profile_title" = "Profilinizi oluşturun"; +"create_profile_description" = "Bulut senkronizasyonunu etkinleştirmek için profilinize giriş yapın. Bunu daha sonra Profil sekmesinden istediğiniz zaman yapabilirsiniz."; +"not_now_button" = "Şimdi değil"; +"quick_action_label" = "Hızlı Eylem %d"; diff --git a/BookPlayer/uk.lproj/Localizable.strings b/BookPlayer/uk.lproj/Localizable.strings index 5bffda43b..bf8c67d35 100644 --- a/BookPlayer/uk.lproj/Localizable.strings +++ b/BookPlayer/uk.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "Економте місце на пристрої!"; +"sync_invitation_learn_more_button" = "Докладніше"; +"sync_invitation_description" = "Ви збираєтеся %1 %2 елементів. %3"; +"sync_invitation_stream_description" = "Замість того, щоб займати місце, транслюйте їх безпосередньо з вашого сервера та синхронізуйте прогрес."; +"sync_tasks_concurrent_count_title" = "Паралельні завдання (%d)"; +"sync_tasks_running_empty_title" = "Немає запущених завдань"; +"sync_tasks_empty_title" = "Немає завдань у черзі"; +"sync_tasks_empty_description" = "Усі ваші завдання синхронізації виконані."; +"sync_task_update_progress_label" = "Оновлення прогресу для %@"; +"sync_task_upload_file_label" = "Завантаження файлу"; +"audiobook_details_narrator_label" = "Читає %@"; +"stream_button" = "Транслювати"; +"import_verb" = "імпортувати"; +"download_verb" = "завантажити"; +"passkey_title" = "Ключ доступу"; +"create_profile_title" = "Створіть свій профіль"; +"create_profile_description" = "Щоб увімкнути хмарну синхронізацію, увійдіть у свій профіль. Ви завжди можете зробити це пізніше у вкладці «Профіль»."; +"not_now_button" = "Не зараз"; +"quick_action_label" = "Швидка дія %d"; diff --git a/BookPlayer/zh-Hans.lproj/Localizable.strings b/BookPlayer/zh-Hans.lproj/Localizable.strings index f079faa85..f1fe27832 100644 --- a/BookPlayer/zh-Hans.lproj/Localizable.strings +++ b/BookPlayer/zh-Hans.lproj/Localizable.strings @@ -504,3 +504,22 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sync_invitation_save_storage_title" = "节省您的存储空间!"; +"sync_invitation_learn_more_button" = "了解更多"; +"sync_invitation_description" = "您即将 %1 %2 个项目。%3"; +"sync_invitation_stream_description" = "无需占用空间,直接从服务器流式传输并保持进度同步。"; +"sync_tasks_concurrent_count_title" = "并发任务 (%d)"; +"sync_tasks_running_empty_title" = "无正在运行的任务"; +"sync_tasks_empty_title" = "无排队任务"; +"sync_tasks_empty_description" = "您的所有同步任务均已完成。"; +"sync_task_update_progress_label" = "正在更新 %@ 的进度"; +"sync_task_upload_file_label" = "正在上传文件"; +"audiobook_details_narrator_label" = "讲述人:%@"; +"stream_button" = "流式传输"; +"import_verb" = "导入"; +"download_verb" = "下载"; +"passkey_title" = "通行密钥"; +"create_profile_title" = "创建您的个人资料"; +"create_profile_description" = "要启用云同步,请登录您的个人资料。您稍后可以随时在“个人资料”选项卡中执行此操作。"; +"not_now_button" = "以后再说"; +"quick_action_label" = "快速操作 %d"; diff --git a/BookPlayerTests/Mocks/AccountServiceMock.swift b/BookPlayerTests/Mocks/AccountServiceMock.swift index 0dbabd8dc..907ab51ca 100644 --- a/BookPlayerTests/Mocks/AccountServiceMock.swift +++ b/BookPlayerTests/Mocks/AccountServiceMock.swift @@ -122,4 +122,8 @@ class AccountServiceMock: AccountServiceProtocol { func logout() throws {} func deleteAccount() async throws -> String { return "Success" } + + func getAccessLevel() -> BookPlayerKit.AccessLevel { + return .plus + } } diff --git a/BookPlayerTests/Mocks/PlayableItemMock.swift b/BookPlayerTests/Mocks/PlayableItemMock.swift index 82f8d79c9..89aa44248 100644 --- a/BookPlayerTests/Mocks/PlayableItemMock.swift +++ b/BookPlayerTests/Mocks/PlayableItemMock.swift @@ -22,6 +22,7 @@ extension PlayableItem { duration: 100, relativePath: "test-path", remoteURL: nil, + externalURL: nil, index: 0 ) ], @@ -49,6 +50,7 @@ extension PlayableItem { duration: 100, relativePath: "test-path", remoteURL: nil, + externalURL: nil, index: 0 ) ], diff --git a/BookPlayerTests/PlayableItemTests.swift b/BookPlayerTests/PlayableItemTests.swift index 222d004a0..5f1511e09 100644 --- a/BookPlayerTests/PlayableItemTests.swift +++ b/BookPlayerTests/PlayableItemTests.swift @@ -24,6 +24,7 @@ class PlayableItemTests: XCTestCase { duration: 50, relativePath: "", remoteURL: nil, + externalURL: nil, index: 1 ) let testChapter2 = PlayableChapter( @@ -33,6 +34,7 @@ class PlayableItemTests: XCTestCase { duration: 100, relativePath: "", remoteURL: nil, + externalURL: nil, index: 1 ) self.sut = PlayableItem( diff --git a/BookPlayerTests/PlayerManagerTests.swift b/BookPlayerTests/PlayerManagerTests.swift index e9191b628..c5929b0db 100644 --- a/BookPlayerTests/PlayerManagerTests.swift +++ b/BookPlayerTests/PlayerManagerTests.swift @@ -47,6 +47,7 @@ class PlayerManagerTests: XCTestCase { duration: 50, relativePath: "", remoteURL: nil, + externalURL: nil, index: 0 ) let testChapter2 = PlayableChapter( @@ -56,6 +57,7 @@ class PlayerManagerTests: XCTestCase { duration: 100, relativePath: "", remoteURL: nil, + externalURL: nil, index: 1 ) return PlayableItem( @@ -84,6 +86,7 @@ class PlayerManagerTests: XCTestCase { duration: 50, relativePath: "", remoteURL: nil, + externalURL: nil, index: 1 ) let chapter2 = PlayableChapter( @@ -93,6 +96,7 @@ class PlayerManagerTests: XCTestCase { duration: 100, relativePath: "", remoteURL: nil, + externalURL: nil, index: 2 ) return PlayableItem( diff --git a/BookPlayerTests/Services/PreferencesSyncServiceTests.swift b/BookPlayerTests/Services/PreferencesSyncServiceTests.swift index 370573dd9..0172f2652 100644 --- a/BookPlayerTests/Services/PreferencesSyncServiceTests.swift +++ b/BookPlayerTests/Services/PreferencesSyncServiceTests.swift @@ -642,4 +642,7 @@ private final class SyncToggleAccountStub: AccountServiceProtocol { func restorePurchases() async throws -> CustomerInfo { try await Purchases.shared.customerInfo() } func logout() throws {} func deleteAccount() async throws -> String { "" } + func getAccessLevel() -> BookPlayerKit.AccessLevel { + return .plus + } } diff --git a/BookPlayerTests/Services/SyncTasksStorageTests.swift b/BookPlayerTests/Services/SyncTasksStorageTests.swift index 8e50373cc..e5db123f0 100644 --- a/BookPlayerTests/Services/SyncTasksStorageTests.swift +++ b/BookPlayerTests/Services/SyncTasksStorageTests.swift @@ -13,14 +13,12 @@ import XCTest @testable import BookPlayer @testable import BookPlayerKit -final class SyncTasksStorageTests: XCTestCase { +final class SyncTasksRepositoryTests: XCTestCase { private var tasksDataManager: TasksDataManager! - private var storage: SyncTasksStorage! + private var repository: ConcurrentTasksRepository! override func setUpWithError() throws { let schema = Schema([ - SyncTasksContainer.self, - SyncTaskReferenceModel.self, UploadTaskModel.self, UpdateTaskModel.self, MoveTaskModel.self, @@ -29,16 +27,23 @@ final class SyncTasksStorageTests: XCTestCase { SetBookmarkTaskModel.self, RenameFolderTaskModel.self, ArtworkUploadTaskModel.self, - MatchUuidsTaskModel.self + MatchUuidsTaskModel.self, + UploadExternalResourceTaskModel.self, + ExternalResourceToDownloadTaskModel.self, + DeleteExternalResourceTaskModel.self, + ConcurrentTasksContainer.self, + ConcurrentTaskReferenceModel.self, + ExternalUpdateTaskModel.self, + ConcurrentUploadTaskModel.self, ]) let config = ModelConfiguration(isStoredInMemoryOnly: true, cloudKitDatabase: .none) let container = try ModelContainer(for: schema, configurations: config) tasksDataManager = TasksDataManager(container: container) - storage = try SyncTasksStorage(tasksDataManager: tasksDataManager) + repository = ConcurrentTasksRepository(tasksDataManager: tasksDataManager) } override func tearDown() { - storage = nil + repository = nil tasksDataManager = nil super.tearDown() } @@ -50,7 +55,7 @@ final class SyncTasksStorageTests: XCTestCase { let relativePath = "Folder/Book.mp3" try await appendUploadTask(uuid: uuid, relativePath: relativePath) - let references = await storage.getAllTasks(progress: [uuid: 0.42]) + let references = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [uuid: 0.42]) XCTAssertEqual(references.count, 1) let reference = try XCTUnwrap(references.first) @@ -64,7 +69,7 @@ final class SyncTasksStorageTests: XCTestCase { let relativePath = "Folder/Other.mp3" try await appendUploadTask(uuid: uuid, relativePath: relativePath) - let references = await storage.getAllTasks(progress: [relativePath: 0.75]) + let references = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [relativePath: 0.75]) XCTAssertEqual(references.count, 1) let reference = try XCTUnwrap(references.first) @@ -77,7 +82,7 @@ final class SyncTasksStorageTests: XCTestCase { let relativePath = "Folder/Legacy.mp3" try await appendUploadTask(uuid: Constants.legacyUuidPlaceholder, relativePath: relativePath) - let references = await storage.getAllTasks(progress: [relativePath: 0.6]) + let references = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [relativePath: 0.6]) XCTAssertEqual(references.count, 1) let reference = try XCTUnwrap(references.first) @@ -89,7 +94,7 @@ final class SyncTasksStorageTests: XCTestCase { let relativePath = "Folder/Local.mp3" try await appendUploadTask(uuid: Constants.uuidPlaceholder, relativePath: relativePath) - let references = await storage.getAllTasks(progress: [relativePath: 0.33]) + let references = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [relativePath: 0.33]) XCTAssertEqual(references.count, 1) let reference = try XCTUnwrap(references.first) @@ -104,13 +109,13 @@ final class SyncTasksStorageTests: XCTestCase { let relativePath = "Folder/Swap.mp3" try await appendUploadTask(uuid: oldUuid, relativePath: relativePath) - try await storage.applyMatchUuidConflicts([ItemConflict(key: oldUuid, uuid: newUuid)]) + try await repository.applyMatchUuidConflicts([ItemConflict(key: oldUuid, uuid: newUuid)]) - let refs = await storage.getAllTasks(progress: [:]) + let refs = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) XCTAssertEqual(refs.count, 1) XCTAssertEqual(refs.first?.uuid, newUuid) - let tasks = await storage.getAllTasksWithParams() + let tasks = await repository.getAllTasksWithParams(in: TaskQueueKey.sync) XCTAssertEqual(tasks.count, 1) XCTAssertEqual(tasks.first?.uuid, newUuid) } @@ -120,9 +125,9 @@ final class SyncTasksStorageTests: XCTestCase { let uuid = "existing-uuid" try await appendUploadTask(uuid: uuid, relativePath: "Folder/Other.mp3") - try await storage.applyMatchUuidConflicts([ItemConflict(key: "ghost-uuid", uuid: "never")]) + try await repository.applyMatchUuidConflicts([ItemConflict(key: "ghost-uuid", uuid: "never")]) - let refs = await storage.getAllTasks(progress: [:]) + let refs = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) XCTAssertEqual(refs.first?.uuid, uuid) } @@ -136,10 +141,10 @@ final class SyncTasksStorageTests: XCTestCase { // and introduces a new key (should be added). try await appendMatchUuidTask(uuids: ["folder/A.mp3": "uuid-A-prime", "folder/C.mp3": "uuid-C"]) - let refs = await storage.getAllTasks(progress: [:]) + let refs = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) XCTAssertEqual(refs.filter { $0.jobType == .matchUuid }.count, 1) - let tasks = await storage.getAllTasksWithParams() + let tasks = await repository.getAllTasksWithParams(in: TaskQueueKey.sync) let matchTask = try XCTUnwrap(tasks.first(where: { $0.jobType == .matchUuid })) let mergedUuids = try XCTUnwrap(matchTask.parameters["uuids"] as? [String: String]) XCTAssertEqual(mergedUuids["folder/A.mp3"], "uuid-A") // existing preserved @@ -152,7 +157,7 @@ final class SyncTasksStorageTests: XCTestCase { func testAppendMatchUuidTask_noExisting_createsNewTask() async throws { try await appendMatchUuidTask(uuids: ["folder/A.mp3": "uuid-A"]) - let refs = await storage.getAllTasks(progress: [:]) + let refs = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) XCTAssertEqual(refs.count, 1) XCTAssertEqual(refs.first?.jobType, .matchUuid) } @@ -163,15 +168,15 @@ final class SyncTasksStorageTests: XCTestCase { func testAppendMatchUuidTask_firstInFlight_queuesSecondAndMergesIntoIt() async throws { try await appendMatchUuidTask(uuids: ["folder/A.mp3": "uuid-A"]) - // Simulate the first task being in flight — the scheduler calls getNextTask() + // Simulate the first task being in flight — the worker calls getNextTask(for:) // to hand the snapshot to the operation queue; the task stays in the store. - let inFlight = try await storage.getNextTask() + let inFlight = await repository.getNextTask(for: TaskQueueKey.sync) XCTAssertEqual(inFlight?.jobType, .matchUuid) // A second schedule must bypass the in-flight task and create a fresh one. try await appendMatchUuidTask(uuids: ["folder/B.mp3": "uuid-B"]) - let refsAfterSecond = await storage.getAllTasks(progress: [:]) + let refsAfterSecond = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) let matchRefsAfterSecond = refsAfterSecond.filter { $0.jobType == .matchUuid } XCTAssertEqual(matchRefsAfterSecond.count, 2) @@ -179,7 +184,7 @@ final class SyncTasksStorageTests: XCTestCase { // leaving the in-flight task's dict unchanged. try await appendMatchUuidTask(uuids: ["folder/C.mp3": "uuid-C"]) - let tasksAfterThird = await storage.getAllTasksWithParams() + let tasksAfterThird = await repository.getAllTasksWithParams(in: TaskQueueKey.sync) let matchTasks = tasksAfterThird.filter { $0.jobType == .matchUuid } XCTAssertEqual(matchTasks.count, 2) @@ -192,15 +197,102 @@ final class SyncTasksStorageTests: XCTestCase { XCTAssertEqual(queuedUuids, ["folder/B.mp3": "uuid-B", "folder/C.mp3": "uuid-C"]) } + /// Sync tasks and concurrent (provider) tasks share the container but must remain + /// isolated per queue: counts, listings, and getNextTask never cross queue keys. + func testQueueIsolation_syncAndProviderQueues() async throws { + try await appendUploadTask(uuid: "sync-uuid", relativePath: "Folder/Book.mp3") + try await repository.storeTask(parameters: [ + "id": UUID().uuidString, + "jobType": SyncJobType.externalUpdate.rawValue, + "queueKey": "jellyfin", + "providerName": "jellyfin", + "providerId": "provider-item-1", + "currentTime": 10.0, + "percentCompleted": 5.0 + ]) + + let syncCount = await repository.getTasksCount(in: TaskQueueKey.sync) + XCTAssertEqual(syncCount, 1) + let providerCount = await repository.getTasksCount(in: "jellyfin") + XCTAssertEqual(providerCount, 1) + + let syncTasks = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) + XCTAssertEqual(syncTasks.map(\.jobType), [.upload]) + + let nonSyncTasks = await repository.getAllTasks() + XCTAssertEqual(nonSyncTasks.map(\.jobType), [.externalUpdate]) + + let nextProviderTask = await repository.getNextTask(for: "jellyfin") + XCTAssertEqual(nextProviderTask?.jobType, .externalUpdate) + } + + /// Popping a task must delete both the reference and its payload model. + func testPop_removesReferenceAndPayload() async throws { + try await appendUploadTask(uuid: "pop-uuid", relativePath: "Folder/Pop.mp3") + + let nextTask = await repository.getNextTask(for: TaskQueueKey.sync) + let task = try XCTUnwrap(nextTask) + await repository.pop(task) + + let count = await repository.getTasksCount(in: TaskQueueKey.sync) + XCTAssertEqual(count, 0) + let hasUpload = await repository.hasUploadTask(for: "Folder/Pop.mp3") + XCTAssertFalse(hasUpload) + } + + /// The sync queue is pinned in the summaries even when idle; other queues only + /// appear while they have pending tasks, and the sync queue always sorts first. + func testGetQueueSummaries_pinsSyncQueue() async throws { + let idleSummaries = await repository.getQueueSummaries() + XCTAssertEqual(idleSummaries.map(\.queueKey), [TaskQueueKey.sync]) + XCTAssertEqual(idleSummaries.first?.count, 0) + + try await repository.storeTask(parameters: [ + "id": UUID().uuidString, + "jobType": SyncJobType.externalUpdate.rawValue, + "queueKey": "jellyfin", + "providerName": "jellyfin", + "providerId": "provider-item-1", + "currentTime": 10.0, + "percentCompleted": 5.0 + ]) + + let summaries = await repository.getQueueSummaries() + XCTAssertEqual(summaries.map(\.queueKey), [TaskQueueKey.sync, "jellyfin"]) + XCTAssertEqual(summaries.map(\.count), [0, 1]) + } + + /// Clearing one queue must not touch the others. + func testClearAll_inQueue_leavesOtherQueuesUntouched() async throws { + try await appendUploadTask(uuid: "sync-uuid", relativePath: "Folder/Book.mp3") + try await repository.storeTask(parameters: [ + "id": UUID().uuidString, + "jobType": SyncJobType.externalUpdate.rawValue, + "queueKey": "jellyfin", + "providerName": "jellyfin", + "providerId": "provider-item-1", + "currentTime": 10.0, + "percentCompleted": 5.0 + ]) + + try await repository.clearAll(in: TaskQueueKey.sync) + + let syncCount = await repository.getTasksCount(in: TaskQueueKey.sync) + XCTAssertEqual(syncCount, 0) + let providerCount = await repository.getTasksCount(in: "jellyfin") + XCTAssertEqual(providerCount, 1) + } + private func appendMatchUuidTask(uuids: [String: String]) async throws { let parameters: [String: Any] = [ "id": UUID().uuidString, "jobType": SyncJobType.matchUuid.rawValue, + "queueKey": TaskQueueKey.sync, "relativePath": "", "uuid": "", "uuids": uuids ] - try await storage.appendTask(parameters: parameters) + try await repository.storeTask(parameters: parameters) } private func appendUploadTask(uuid: String, relativePath: String) async throws { @@ -217,8 +309,9 @@ final class SyncTasksStorageTests: XCTestCase { "isFinished": false, "orderRank": 0, "type": SimpleItemType.book.rawValue, - "jobType": SyncJobType.upload.rawValue + "jobType": SyncJobType.upload.rawValue, + "queueKey": TaskQueueKey.sync ] - try await storage.appendTask(parameters: parameters) + try await repository.storeTask(parameters: parameters) } } diff --git a/BookPlayerTests/SharedWidgetStoreTests.swift b/BookPlayerTests/SharedWidgetStoreTests.swift index dc088fd89..191ff3ad7 100644 --- a/BookPlayerTests/SharedWidgetStoreTests.swift +++ b/BookPlayerTests/SharedWidgetStoreTests.swift @@ -34,6 +34,7 @@ class SharedWidgetStoreTests: XCTestCase { duration: 100, relativePath: relativePath, remoteURL: nil, + externalURL: nil, index: 0 ) return PlayableItem( diff --git a/BookPlayerTests/ViewModels/ChaptersViewModelTests.swift b/BookPlayerTests/ViewModels/ChaptersViewModelTests.swift index 3cb1789ab..2b4fed260 100644 --- a/BookPlayerTests/ViewModels/ChaptersViewModelTests.swift +++ b/BookPlayerTests/ViewModels/ChaptersViewModelTests.swift @@ -30,6 +30,7 @@ final class ChaptersViewModelTests: XCTestCase { duration: 10, relativePath: relativePath, remoteURL: nil, + externalURL: nil, index: Int16(index) ) } diff --git a/BookPlayerWatch/CoreServices.swift b/BookPlayerWatch/CoreServices.swift index 064b15df4..9e93dbfa9 100644 --- a/BookPlayerWatch/CoreServices.swift +++ b/BookPlayerWatch/CoreServices.swift @@ -13,6 +13,7 @@ class CoreServices: ObservableObject { let dataManager: DataManager let accountService: AccountServiceProtocol var syncService: SyncServiceProtocol + var concurrenceService: ConcurrenceServiceProtocol let libraryService: LibraryService let playbackService: PlaybackServiceProtocol let playerManager: PlayerManager @@ -29,6 +30,7 @@ class CoreServices: ObservableObject { dataManager: DataManager, accountService: AccountServiceProtocol, syncService: SyncServiceProtocol, + concurrenceService: ConcurrenceServiceProtocol, libraryService: LibraryService, playbackService: PlaybackServiceProtocol, playerManager: PlayerManager, @@ -39,6 +41,7 @@ class CoreServices: ObservableObject { self.dataManager = dataManager self.accountService = accountService self.syncService = syncService + self.concurrenceService = concurrenceService self.libraryService = libraryService self.playbackService = playbackService self.hasSyncEnabled = accountService.hasSyncEnabled() @@ -50,10 +53,15 @@ class CoreServices: ObservableObject { func checkAndReloadIfSyncIsEnabled() { self.hasSyncEnabled = accountService.hasSyncEnabled() + self.updateConcurrentService(accountService.getAccessLevel()) } func updateSyncEnabled(_ enabled: Bool) { hasSyncEnabled = enabled syncService.updateSyncEnabled(enabled) } + + func updateConcurrentService(_ accessLevel: AccessLevel) { + concurrenceService.updateConcurrentService(accessLevel) + } } diff --git a/BookPlayerWatch/ExtensionDelegate.swift b/BookPlayerWatch/ExtensionDelegate.swift index 378a1fdef..054d9c45c 100644 --- a/BookPlayerWatch/ExtensionDelegate.swift +++ b/BookPlayerWatch/ExtensionDelegate.swift @@ -71,12 +71,22 @@ class ExtensionDelegate: NSObject, WKApplicationDelegate, ObservableObject { let audioMetadataService = AudioMetadataService() let libraryService = LibraryService() libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) + let tasksDataManager = TasksDataManager() + let concurrenceService = ConcurrenceService() + concurrenceService.setup( + libraryService: libraryService, + accessLevel: accountService.accessLevel, + tasksDataManager: tasksDataManager, + networkClient: NetworkClient(), + dataManager: dataManager + ) let syncService = SyncService() syncService.setup( isActive: accountService.hasSyncEnabled(), libraryService: libraryService, accountService: accountService, - dataManager: dataManager + concurrenceService: concurrenceService, + tasksDataManager: tasksDataManager ) let playbackService = PlaybackService() playbackService.setup(libraryService: libraryService) @@ -110,6 +120,7 @@ class ExtensionDelegate: NSObject, WKApplicationDelegate, ObservableObject { dataManager: dataManager, accountService: accountService, syncService: syncService, + concurrenceService: concurrenceService, libraryService: libraryService, playbackService: playbackService, playerManager: playerManager, @@ -302,6 +313,18 @@ class ExtensionDelegate: NSObject, WKApplicationDelegate, ObservableObject { extension ExtensionDelegate: PurchasesDelegate { func purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) { - coreServices?.updateSyncEnabled(customerInfo.entitlements.all["pro"]?.isActive == true) + let enableSync = customerInfo.entitlements.all["pro"]?.isActive == true + || customerInfo.entitlements.all["lite"]?.isActive == true + coreServices?.updateSyncEnabled(enableSync) + + let accessLevel: AccessLevel = customerInfo.entitlements.all["pro"]?.isActive == true + ? .pro + : customerInfo.entitlements.all["lite"]?.isActive == true + ? .lite + : customerInfo.entitlements["plus"]?.isActive == true + ? .plus + : .free + + coreServices?.updateConcurrentService(accessLevel) } } diff --git a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift index e63a5c61c..d56853bad 100644 --- a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift +++ b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift @@ -36,6 +36,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { @Published private var playbackQueued: Bool? /// Flag determining if it's in the process of fetching the URL for playback @Published private var isFetchingRemoteURL: Bool? + @Published var playerIsLoadingURL: Bool = false /// Prevent loop from automatic URL refreshes private var canFetchRemoteURL = true private var hasObserverRegistered = false @@ -62,7 +63,8 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { @Published var currentSpeed: Float = 1.0 @Published private(set) var currentPlaybackTime: TimeInterval = 0 @Published var error: Error? - + + var storedConnection: JellyfinConnectionData? var nowPlayingInfo = [String: Any]() private let queue = OperationQueue() @@ -193,16 +195,15 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { // TODO: Check if there's a way to reduce the time this operation takes // it's currently a bottleneck when streaming playback - await asset.loadValues(forKeys: [ - "duration", - "playable", - "preferredRate", - "preferredVolume", - "hasProtectedContent", - "providesPreciseDurationAndTiming", - "commonMetadata", - "metadata", - ]) + _ = try? await asset.load( + .duration, + .isPlayable, + .preferredRate, + .preferredVolume, + .providesPreciseDurationAndTiming, + .commonMetadata, + .metadata + ) guard !Task.isCancelled else { throw BookPlayerError.cancelledTask diff --git a/IAP-Configuration.storekit b/IAP-Configuration.storekit index 1993f28e2..c666d1e75 100644 --- a/IAP-Configuration.storekit +++ b/IAP-Configuration.storekit @@ -1,4 +1,14 @@ { + "appPolicies" : { + "eula" : "", + "policies" : [ + { + "locale" : "en_US", + "policyText" : "", + "policyURL" : "" + } + ] + }, "identifier" : "B145B4D1", "nonRenewingSubscriptions" : [ @@ -96,55 +106,51 @@ } ], "settings" : { + "_askToBuyEnabled" : false, + "_billingGracePeriodEnabled" : false, + "_billingIssuesEnabled" : false, "_compatibilityTimeRate" : { "3" : 6 }, + "_disableDialogs" : false, "_failTransactionsEnabled" : false, "_locale" : "en_US", + "_renewalBillingIssuesEnabled" : false, "_storefront" : "USA", "_storeKitErrors" : [ { - "current" : null, "enabled" : false, "name" : "Load Products" }, { - "current" : null, "enabled" : false, "name" : "Purchase" }, { - "current" : null, "enabled" : false, "name" : "Verification" }, { - "current" : null, "enabled" : false, "name" : "App Store Sync" }, { - "current" : null, "enabled" : false, "name" : "Subscription Status" }, { - "current" : null, "enabled" : false, "name" : "App Transaction" }, { - "current" : null, "enabled" : false, "name" : "Manage Subscriptions Sheet" }, { - "current" : null, "enabled" : false, "name" : "Refund Request Sheet" }, { - "current" : null, "enabled" : false, "name" : "Offer Code Redeem Sheet" } @@ -170,7 +176,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "404D4313", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -182,7 +190,10 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "pro.subscription", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -195,7 +206,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "FBD1E1A1", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -207,7 +220,10 @@ "recurringSubscriptionPeriod" : "P1Y", "referenceName" : "pro.subscription.yearly", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -220,7 +236,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "EE383201", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -232,7 +250,10 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "subscription.support.1", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -245,7 +266,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "FCF99805", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -257,7 +280,10 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "subscription.support.2", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -270,7 +296,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "B7B02088", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -282,7 +310,10 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "subscription.support.3", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -295,7 +326,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "570A9BCB", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -307,7 +340,10 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "subscription.support.4", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -320,7 +356,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "4F02881E", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -332,7 +370,10 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "subscription.support.6", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -345,7 +386,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "2DCC769A", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -357,7 +400,10 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "subscription.support.7", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -370,7 +416,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "A977972B", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -382,7 +430,10 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "subscription.support.8", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -395,7 +446,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "9410B8C0", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -407,7 +460,10 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "subscription.support.9", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] }, { "adHocOffers" : [ @@ -420,7 +476,9 @@ "familyShareable" : false, "groupNumber" : 1, "internalID" : "0DEF0B7A", - "introductoryOffer" : null, + "introductoryOffers" : [ + + ], "localizations" : [ { "description" : "", @@ -432,13 +490,76 @@ "recurringSubscriptionPeriod" : "P1M", "referenceName" : "subscription.support.10", "subscriptionGroupID" : "652B5FC0", - "type" : "RecurringSubscription" + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] + }, + { + "adHocOffers" : [ + + ], + "codeOffers" : [ + + ], + "displayPrice" : "2.99", + "familyShareable" : false, + "groupNumber" : 1, + "internalID" : "0E8484DC", + "introductoryOffers" : [ + + ], + "localizations" : [ + { + "description" : "", + "displayName" : "", + "locale" : "en_US" + } + ], + "productID" : "com.tortugapower.audiobookplayer.subscription.lite", + "recurringSubscriptionPeriod" : "P1M", + "referenceName" : "lite.subscription", + "subscriptionGroupID" : "652B5FC0", + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] + }, + { + "adHocOffers" : [ + + ], + "codeOffers" : [ + + ], + "displayPrice" : "29.99", + "familyShareable" : false, + "groupNumber" : 1, + "internalID" : "CF2B5AFC", + "introductoryOffers" : [ + + ], + "localizations" : [ + { + "description" : "", + "displayName" : "", + "locale" : "en_US" + } + ], + "productID" : "com.tortugapower.audiobookplayer.subscription.lite.yearly", + "recurringSubscriptionPeriod" : "P1Y", + "referenceName" : "lite.subscription.yearly", + "subscriptionGroupID" : "652B5FC0", + "type" : "RecurringSubscription", + "winbackOffers" : [ + + ] } ] } ], "version" : { - "major" : 3, + "major" : 5, "minor" : 0 } } diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsData.swift b/Shared/AudiobookShelf/AudiobookShelfAudiobookDetailsData.swift similarity index 80% rename from BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsData.swift rename to Shared/AudiobookShelf/AudiobookShelfAudiobookDetailsData.swift index 6a0ea408f..9509d03b1 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsData.swift +++ b/Shared/AudiobookShelf/AudiobookShelfAudiobookDetailsData.swift @@ -6,40 +6,40 @@ // Copyright © 2025 BookPlayer LLC. All rights reserved. // -import BookPlayerKit import Foundation -struct AudiobookShelfAudiobookDetailsData: IntegrationDetailsDataProtocol { - let artist: String? - let narrator: String? - let filePath: String? - let fileSize: Int64? - let overview: String? - let runtimeInSeconds: TimeInterval? - let genres: [String]? - let tags: [String]? - let publishedYear: String? - let publisher: String? - let series: [Series]? +public struct AudiobookShelfAudiobookDetailsData: IntegrationDetailsDataProtocol { + public let id: String = UUID().uuidString + public let artist: String? + public let narrator: String? + public let filePath: String? + public let fileSize: Int64? + public let overview: String? + public let runtimeInSeconds: TimeInterval? + public let genres: [String]? + public let tags: [String]? + public let publishedYear: String? + public let publisher: String? + public let series: [Series]? - struct Series: Identifiable, Hashable { - let id: String - let name: String - let sequence: String? + public struct Series: Identifiable, Hashable { + public let id: String + public let name: String + public let sequence: String? } - var runtimeString: String { + public var runtimeString: String { guard let runtime = runtimeInSeconds else { return "runtime_unknown".localized } return TimeParser.formatTotalDuration(runtime) } - var seriesEntries: [IntegrationSeriesEntry] { + public var seriesEntries: [IntegrationSeriesEntry] { (series ?? []).map { IntegrationSeriesEntry(id: $0.id, name: $0.name, sequence: $0.sequence) } } - var fileSizeString: String { + public var fileSizeString: String { guard let size = fileSize else { return "file_size_unknown".localized } @@ -52,7 +52,7 @@ struct AudiobookShelfAudiobookDetailsData: IntegrationDetailsDataProtocol { // MARK: - API Response Model -struct AudiobookShelfItemDetailsResponse: Codable { +public struct AudiobookShelfItemDetailsResponse: Codable { let id: String let libraryId: String let media: Media diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryItem.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift similarity index 57% rename from BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryItem.swift rename to Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift index f87657834..5863a3b4b 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryItem.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift @@ -8,14 +8,14 @@ import Foundation -struct AudiobookShelfSeriesReference: Codable, Hashable { +public struct AudiobookShelfSeriesReference: Codable, Hashable { let id: String let name: String let sequence: String? } -struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable { - enum Kind: String, Codable { +public struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable { + public enum Kind: String, Codable { case audiobook = "book" case podcast = "podcast" case library = "library" @@ -26,35 +26,36 @@ struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable { case narrator = "narrator" } - let id: String - let title: String - let kind: Kind - let libraryId: String + public let id: String + public let title: String + public let kind: Kind + public let libraryId: String // Metadata - let authorName: String? - let narratorName: String? - let duration: TimeInterval? - let size: Int64? - let subtitle: String? - let series: [AudiobookShelfSeriesReference]? - let addedAt: Int64? - let updatedAt: Int64? - + public let authorName: String? + public let narratorName: String? + public let duration: TimeInterval? + public let size: Int64? + public let subtitle: String? + public let series: [AudiobookShelfSeriesReference]? + public let addedAt: Int64? + public let updatedAt: Int64? + public let fileExtension: String? + // Cover image - let coverPath: String? - let coverItemId: String? + public let coverPath: String? + public let coverItemId: String? // Progress (if included) - let progress: Double? - let currentTime: TimeInterval? - let isFinished: Bool? + public let progress: Double? + public let currentTime: TimeInterval? + public let isFinished: Bool? // Browse metadata - let browseCategory: AudiobookShelfBrowseCategory? - let filter: AudiobookShelfItemFilter? + public let browseCategory: AudiobookShelfBrowseCategory? + public let filter: AudiobookShelfItemFilter? - init( + public init( id: String, title: String, kind: Kind, @@ -66,6 +67,7 @@ struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable { subtitle: String? = nil, series: [AudiobookShelfSeriesReference]? = nil, addedAt: Int64? = nil, + fileExtension: String? = nil, updatedAt: Int64? = nil, coverPath: String? = nil, coverItemId: String? = nil, @@ -85,6 +87,7 @@ struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable { self.size = size self.subtitle = subtitle self.series = series + self.fileExtension = fileExtension self.addedAt = addedAt self.updatedAt = updatedAt self.coverPath = coverPath @@ -98,17 +101,17 @@ struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable { } extension AudiobookShelfLibraryItem { - var displayName: String { title } + public var displayName: String { title } - var isDownloadable: Bool { + public var isDownloadable: Bool { kind == .audiobook || kind == .podcast } - var isNavigable: Bool { + public var isNavigable: Bool { !isDownloadable } - var placeholderImageName: String { + public var placeholderImageName: String { switch kind { case .podcast, .audiobook: "waveform" case .library: "folder" @@ -128,11 +131,11 @@ extension AudiobookShelfLibraryItem { } } - func seriesSequence(for seriesID: String) -> String? { + public func seriesSequence(for seriesID: String) -> String? { series?.first(where: { $0.id == seriesID })?.sequence } - init(library: AudiobookShelfLibrary) { + public init(library: AudiobookShelfLibrary) { self.init( id: library.id, title: library.name, @@ -142,7 +145,7 @@ extension AudiobookShelfLibraryItem { ) } - init(category: AudiobookShelfBrowseCategory, libraryId: String) { + public init(category: AudiobookShelfBrowseCategory, libraryId: String) { self.init( id: category.rawValue, title: category.title, @@ -153,7 +156,7 @@ extension AudiobookShelfLibraryItem { ) } - init(author: AudiobookShelfLibraryFilterData.NamedEntity, libraryId: String) { + public init(author: AudiobookShelfLibraryFilterData.NamedEntity, libraryId: String) { self.init( id: author.id, title: author.name, @@ -164,7 +167,7 @@ extension AudiobookShelfLibraryItem { ) } - init(series: AudiobookShelfLibraryFilterData.NamedEntity, libraryId: String) { + public init(series: AudiobookShelfLibraryFilterData.NamedEntity, libraryId: String) { self.init( id: series.id, title: series.name, @@ -175,7 +178,7 @@ extension AudiobookShelfLibraryItem { ) } - init(narrator: String, libraryId: String) { + public init(narrator: String, libraryId: String) { self.init( id: narrator, title: narrator, @@ -186,7 +189,7 @@ extension AudiobookShelfLibraryItem { ) } - init(collection: AudiobookShelfCollection) { + public init(collection: AudiobookShelfCollection) { self.init( id: collection.id, title: collection.name, @@ -197,12 +200,11 @@ extension AudiobookShelfLibraryItem { ) } - init?(apiItem: AudiobookShelfAPIItem) { + public init?(apiItem: AudiobookShelfAPIItem) { guard let mediaType = apiItem.mediaType, let kind = Kind(rawValue: mediaType) else { return nil } - self.init( id: apiItem.id, title: apiItem.media.metadata.title, @@ -214,6 +216,7 @@ extension AudiobookShelfLibraryItem { size: apiItem.size, series: apiItem.media.metadata.series, addedAt: apiItem.addedAt, + fileExtension: apiItem.media.audioFiles?.first?.ext ?? nil, updatedAt: apiItem.updatedAt, coverPath: apiItem.media.coverPath, progress: apiItem.userMediaProgress?.progress, @@ -221,34 +224,48 @@ extension AudiobookShelfLibraryItem { isFinished: apiItem.userMediaProgress?.isFinished ) } + + public init(progressItem: AudiobookShelfAPIItem.UserMediaProgress) { + self.init( + id: "", + title: "", + kind: Kind.audiobook, + libraryId: "", + progress: progressItem.progress, + currentTime: progressItem.currentTime, + isFinished: progressItem.isFinished + ) + } } // MARK: - API Response Models -struct AudiobookShelfAPIItem: Codable { - let id: String - let libraryId: String - let addedAt: Int64? - let updatedAt: Int64? - let mediaType: String? - let media: Media - let size: Int64? - let userMediaProgress: UserMediaProgress? - - struct Media: Codable { - let metadata: Metadata - let coverPath: String? - let duration: TimeInterval? - - struct Metadata: Codable { - let title: String - let authorName: String? - let narratorName: String? - let authors: [NamedEntity]? - let narrators: [String]? - let series: [AudiobookShelfSeriesReference]? - - enum CodingKeys: String, CodingKey { +public struct AudiobookShelfAPIItem: Codable { + public let id: String + public let libraryId: String + public let addedAt: Int64? + public let updatedAt: Int64? + public let mediaType: String? + public let media: Media + public let size: Int64? + public let userMediaProgress: UserMediaProgress? + public let relPath: String? + + public struct Media: Codable { + public let metadata: Metadata + public let coverPath: String? + public let duration: TimeInterval? + public let audioFiles: [AudioFile]? + + public struct Metadata: Codable { + public let title: String + public let authorName: String? + public let narratorName: String? + public let authors: [NamedEntity]? + public let narrators: [String]? + public let series: [AudiobookShelfSeriesReference]? + + public enum CodingKeys: String, CodingKey { case title case authorName case narratorName @@ -257,7 +274,7 @@ struct AudiobookShelfAPIItem: Codable { case series } - init(from decoder: Decoder) throws { + public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) title = try container.decode(String.self, forKey: .title) @@ -275,40 +292,45 @@ struct AudiobookShelfAPIItem: Codable { } } - var primaryAuthorName: String? { + public var primaryAuthorName: String? { authorName ?? authors?.first?.name } - var primaryNarratorName: String? { + public var primaryNarratorName: String? { narratorName ?? narrators?.first } } - struct NamedEntity: Codable { - let id: String - let name: String + public struct NamedEntity: Codable { + public let id: String + public let name: String + } + + public struct AudioFile: Codable { + let filename: String + let ext: String } } - struct UserMediaProgress: Codable { - let progress: Double - let currentTime: TimeInterval - let isFinished: Bool + public struct UserMediaProgress: Codable { + public let progress: Double + public let currentTime: TimeInterval + public let isFinished: Bool } } -struct AudiobookShelfItemsResponse: Codable { - let results: [AudiobookShelfAPIItem] - let total: Int - let limit: Int? - let page: Int? +public struct AudiobookShelfItemsResponse: Codable { + public let results: [AudiobookShelfAPIItem] + public let total: Int + public let limit: Int? + public let page: Int? } -struct AudiobookShelfSearchResponse: Codable { - let book: [SearchResult] +public struct AudiobookShelfSearchResponse: Codable { + public let book: [SearchResult] - struct SearchResult: Codable { - let libraryItem: AudiobookShelfAPIItem + public struct SearchResult: Codable { + public let libraryItem: AudiobookShelfAPIItem } } @@ -316,34 +338,34 @@ struct AudiobookShelfSearchResponse: Codable { /// Vue web client uses for the author-detail page). `libraryItems` is hydrated /// directly from the author record rather than via the `bookAuthors` join, which /// avoids orphan-row matches that can occur after ABS dedups authors on import. -struct AudiobookShelfAuthorWithItemsResponse: Codable { - let id: String - let name: String - let libraryItems: [AudiobookShelfAPIItem]? +public struct AudiobookShelfAuthorWithItemsResponse: Codable { + public let id: String + public let name: String + public let libraryItems: [AudiobookShelfAPIItem]? } -struct AudiobookShelfLibraryFilterData: Codable { - let authors: [NamedEntity] - let genres: [String] - let tags: [String] - let series: [NamedEntity] - let narrators: [String] - let languages: [String] - - struct NamedEntity: Codable, Hashable { - let id: String - let name: String +public struct AudiobookShelfLibraryFilterData: Codable { + public let authors: [NamedEntity] + public let genres: [String] + public let tags: [String] + public let series: [NamedEntity] + public let narrators: [String] + public let languages: [String] + + public struct NamedEntity: Codable, Hashable { + public let id: String + public let name: String } } -struct AudiobookShelfCollection: Codable { - let id: String - let libraryId: String - let name: String - let description: String? - let books: [AudiobookShelfAPIItem] +public struct AudiobookShelfCollection: Codable { + public let id: String + public let libraryId: String + public let name: String + public let description: String? + public let books: [AudiobookShelfAPIItem] } -struct AudiobookShelfCollectionsResponse: Codable { - let results: [AudiobookShelfCollection] +public struct AudiobookShelfCollectionsResponse: Codable { + public let results: [AudiobookShelfCollection] } diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryLevelData.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryLevelData.swift similarity index 66% rename from BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryLevelData.swift rename to Shared/AudiobookShelf/AudiobookShelfLibraryLevelData.swift index fe61bbf5a..b383ab6b0 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryLevelData.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryLevelData.swift @@ -8,14 +8,14 @@ import Foundation -enum AudiobookShelfBrowseCategory: String, CaseIterable, Codable, Hashable { +public enum AudiobookShelfBrowseCategory: String, CaseIterable, Codable, Hashable { case books case series case collections case authors case narrators - var title: String { + public var title: String { switch self { case .books: "Books" case .series: "Series" @@ -26,30 +26,30 @@ enum AudiobookShelfBrowseCategory: String, CaseIterable, Codable, Hashable { } } -enum AudiobookShelfItemFilterGroup: String, Codable, Hashable { +public enum AudiobookShelfItemFilterGroup: String, Codable, Hashable { case authors case series case narrators } -struct AudiobookShelfItemFilter: Codable, Hashable { - let group: AudiobookShelfItemFilterGroup - let value: String - let title: String +public struct AudiobookShelfItemFilter: Codable, Hashable { + public let group: AudiobookShelfItemFilterGroup + public let value: String + public let title: String - var queryValue: String { + public var queryValue: String { let base64Value = Data(value.utf8).base64EncodedString() return "\(group.rawValue).\(base64Value)" } } -enum AudiobookShelfLibraryViewSource: Equatable, Hashable { +public enum AudiobookShelfLibraryViewSource: Equatable, Hashable { case libraries case books(libraryID: String, filter: AudiobookShelfItemFilter?) case entities(libraryID: String, category: AudiobookShelfBrowseCategory) case collection(id: String) - var libraryID: String { + public var libraryID: String { switch self { case .libraries: "" case .books(let libraryID, _): libraryID @@ -59,7 +59,8 @@ enum AudiobookShelfLibraryViewSource: Equatable, Hashable { } } -enum AudiobookShelfLibraryLevelData: Equatable, Hashable { +public enum AudiobookShelfLibraryLevelData: Equatable, Hashable { case library(source: AudiobookShelfLibraryViewSource, title: String) case details(data: AudiobookShelfLibraryItem) + case subscribe } diff --git a/BookPlayer/AudiobookShelf/Network/AudiobookShelfConnectionData.swift b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift similarity index 62% rename from BookPlayer/AudiobookShelf/Network/AudiobookShelfConnectionData.swift rename to Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift index cdf98eb34..ea3d252a9 100644 --- a/BookPlayer/AudiobookShelf/Network/AudiobookShelfConnectionData.swift +++ b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift @@ -8,22 +8,24 @@ import Foundation -struct AudiobookShelfConnectionData: Codable, Identifiable { - let id: String - let url: URL - let serverName: String - let userID: String - let userName: String - let apiToken: String - var selectedLibraryId: String? - var customHeaders: [String: String] = [:] +public struct AudiobookShelfConnectionData: Codable, Identifiable { + public let id: String + public let serverId: String? + public let url: URL + public let serverName: String + public let userID: String + public let userName: String + public let apiToken: String + public var selectedLibraryId: String? + public var customHeaders: [String: String] = [:] - enum CodingKeys: String, CodingKey { - case id, url, serverName, userID, userName, apiToken, selectedLibraryId, customHeaders + public enum CodingKeys: String, CodingKey { + case id, serverId, url, serverName, userID, userName, apiToken, selectedLibraryId, customHeaders } - init( + public init( id: String = UUID().uuidString, + serverId: String? = nil, url: URL, serverName: String, userID: String, @@ -33,6 +35,7 @@ struct AudiobookShelfConnectionData: Codable, Identifiable { customHeaders: [String: String] = [:] ) { self.id = id + self.serverId = serverId self.url = url self.serverName = serverName self.userID = userID @@ -42,9 +45,10 @@ struct AudiobookShelfConnectionData: Codable, Identifiable { self.customHeaders = customHeaders } - init(from decoder: Decoder) throws { + public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.id = (try? container.decode(String.self, forKey: .id)) ?? UUID().uuidString + self.serverId = try? container.decodeIfPresent(String.self, forKey: .serverId) self.url = try container.decode(URL.self, forKey: .url) self.serverName = try container.decode(String.self, forKey: .serverName) self.userID = try container.decode(String.self, forKey: .userID) @@ -62,8 +66,13 @@ extension AudiobookShelfConnectionData: IntegrationConnectionPayload { } extension AudiobookShelfConnectionData: CustomDebugStringConvertible { - var debugDescription: String { + public var debugDescription: String { let apiTokenDebugDesc = apiToken.isEmpty ? "" : "" - return "AudiobookShelfConnectionData(\(url), \(serverName), \(userID), \(userName), \(apiTokenDebugDesc))" + let serverIdDesc = serverId ?? "" + return "AudiobookShelfConnectionData(\(url), serverId: \(serverIdDesc), \(serverName), \(userID), \(userName), \(apiTokenDebugDesc))" + } + + public func buildAudiobookshelfDownloadUrl(providerId: String) -> String { + return "\(self.url.absoluteString)/api/items/\(providerId)/download" } } diff --git a/BookPlayer/AudiobookShelf/Network/AudiobookShelfConnectionService.swift b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift similarity index 85% rename from BookPlayer/AudiobookShelf/Network/AudiobookShelfConnectionService.swift rename to Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift index f1e45bca9..3e4644b47 100644 --- a/BookPlayer/AudiobookShelf/Network/AudiobookShelfConnectionService.swift +++ b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift @@ -6,12 +6,11 @@ // Copyright © 2025 BookPlayer LLC. All rights reserved. // -import BookPlayerKit import Foundation @MainActor @Observable -class AudiobookShelfConnectionService: BPLogger { +public class AudiobookShelfConnectionService: BPLogger { /// `nonisolated` so the `nonisolated init` below can read it without crossing isolation. private nonisolated static let activeConnectionIDKey = "audiobookshelf_active_connection_id" @@ -19,22 +18,54 @@ class AudiobookShelfConnectionService: BPLogger { /// Reads below forward into it so views keep observing through this service. private let store: IntegrationConnectionStore - var connections: [AudiobookShelfConnectionData] { store.connections } - var connection: AudiobookShelfConnectionData? { store.active } + public var connections: [AudiobookShelfConnectionData] { store.connections } + /// A connection pinned by the sync/stream engine for a specific external resource — + /// overrides the UI's active selection until cleared. Set via ``useConnection(_:)``. + private var manualConnection: AudiobookShelfConnectionData? + public var connection: AudiobookShelfConnectionData? { + if let manualConnection { return manualConnection } + return store.active + } + + /// Pins `connection` (used when consuming a stream for a resource whose host resolved + /// to a non-active saved server). ABS clients are stateless, so no rebuild is needed. + public func useConnection(_ connection: AudiobookShelfConnectionData) { + manualConnection = connection + } private let urlSession: URLSession /// Redirect-aware HTTP client for the OIDC handshake. Separate from `urlSession` because the /// handshake needs a client that can decline redirects *and* share one cookie jar across its two /// server calls — see ``AudiobookShelfOIDCFlow``. private nonisolated let httpClient: IntegrationHTTPClient +#if !os(watchOS) /// `nonisolated` (not `nonisolated(unsafe)`) because `WebAuthenticating` is `Sendable`: the compiler /// checks that holding one here is safe, instead of the safety resting on a comment that a future - /// edit could invalidate. + /// edit could invalidate. Browser-based SSO is iOS-only — the watch never signs in by itself. private nonisolated let webAuthenticator: WebAuthenticating +#endif - var activeConnectionID: String? { store.activeConnectionID } + public var activeConnectionID: String? { store.activeConnectionID } - nonisolated init( +#if os(watchOS) + public nonisolated init( + keychainService: KeychainServiceProtocol = KeychainService(), + httpClient: IntegrationHTTPClient = IntegrationURLSessionClient(), + defaults: UserDefaults = .standard + ) { + self.store = IntegrationConnectionStore( + keychainKey: .audiobookshelfConnection, + activeIDDefaultsKey: Self.activeConnectionIDKey, + keychain: keychainService, + defaults: defaults + ) + self.httpClient = httpClient + let configuration = URLSessionConfiguration.default + configuration.timeoutIntervalForRequest = 15 + self.urlSession = URLSession(configuration: configuration) + } +#else + public nonisolated init( keychainService: KeychainServiceProtocol = KeychainService(), httpClient: IntegrationHTTPClient = IntegrationURLSessionClient(), webAuthenticator: WebAuthenticating = WebAuthenticationSession(), @@ -52,8 +83,9 @@ class AudiobookShelfConnectionService: BPLogger { configuration.timeoutIntervalForRequest = 15 self.urlSession = URLSession(configuration: configuration) } +#endif - func setup() { + public func setup() { store.reload() } @@ -99,17 +131,22 @@ class AudiobookShelfConnectionService: BPLogger { } /// What a server told us it can do, so the UI only offers sign-in methods that can actually work. - struct ServerCapabilities: Equatable { - var supportsOIDC: Bool = false + public struct ServerCapabilities: Equatable { + public init(supportsOIDC: Bool = false, oidcButtonText: String? = nil, supportsLocal: Bool = true) { + self.supportsOIDC = supportsOIDC + self.oidcButtonText = oidcButtonText + self.supportsLocal = supportsLocal + } + public var supportsOIDC: Bool = false /// The provider button label ABS's own web UI shows, e.g. "Login with OpenId". Preferring the /// server's wording means a user sees the same label here as in the browser. - var oidcButtonText: String? + public var oidcButtonText: String? /// Whether the server accepts username/password sign-in at all. ABS admins can disable local /// auth outright (SSO-only servers), and `authMethods` then omits `"local"` — a case the probe /// used to ignore, leaving those users a password form that cannot possibly work. Defaults to /// `true` because that is the failure-safe direction: when the probe can't answer, offering a /// password form that might work beats hiding the only sign-in path a server may have. - var supportsLocal: Bool = true + public var supportsLocal: Bool = true } /// Best-effort capability probe against `/status`. @@ -197,9 +234,15 @@ class AudiobookShelfConnectionService: BPLogger { throw IntegrationError.unexpectedResponse(code: nil) } + // The login response carries the instance's stable id in the "server" object — the + // cross-device host identity for synced external resources. Best-effort: absence must + // never fail the sign-in, and must not wipe a previously captured id. + let serverId = (json["server"] as? [String: Any])?["id"] as? String + persist( url: url, serverName: serverName, + serverId: serverId, userID: userID, userName: username, apiToken: apiToken, @@ -218,6 +261,7 @@ class AudiobookShelfConnectionService: BPLogger { private func persist( url: URL, serverName: String, + serverId: String? = nil, userID: String, userName: String, apiToken: String, @@ -227,6 +271,7 @@ class AudiobookShelfConnectionService: BPLogger { let result = store.upsert(url: url, userID: userID, replacingID: replacingID) { existing in AudiobookShelfConnectionData( id: existing?.id ?? UUID().uuidString, + serverId: serverId ?? existing?.serverId, url: url, serverName: serverName, userID: userID, @@ -244,6 +289,7 @@ class AudiobookShelfConnectionService: BPLogger { } } +#if !os(watchOS) /// Sign in via AudiobookShelf's native OpenID Connect ("SSO") flow and store the connection. /// /// The handshake itself lives in ``AudiobookShelfOIDCFlow`` — the hop ordering there is subtle and @@ -287,33 +333,35 @@ class AudiobookShelfConnectionService: BPLogger { ) } - func updateCustomHeaders(_ headers: [String: String]) { +#endif + + public func updateCustomHeaders(_ headers: [String: String]) { guard let activeID = connection?.id else { return } updateCustomHeaders(id: activeID, headers) } /// Persist `headers` to the connection with the given id, regardless of which is active. - func updateCustomHeaders(id: String, _ headers: [String: String]) { + public func updateCustomHeaders(id: String, _ headers: [String: String]) { store.updateCustomHeaders(id: id, headers) } - func saveSelectedLibrary(id: String?) { + public func saveSelectedLibrary(id: String?) { guard let activeID = connection?.id else { return } store.setSelectedLibrary(id: activeID, libraryId: id) } - func activateConnection(id: String) { + public func activateConnection(id: String) { store.setActive(id: id) } - func deleteConnection(id: String) { + public func deleteConnection(id: String) { // Revoke the dropped connection's token server-side so ABS doesn't accumulate orphans. if let removed = store.remove(id: id) { revokeTokenInBackground(connection: removed) } } - func deleteConnection() { + public func deleteConnection() { if let id = connection?.id { deleteConnection(id: id) } @@ -638,6 +686,56 @@ class AudiobookShelfConnectionService: BPLogger { /// Returns a URLRequest for downloading a library item, carrying the bearer /// token via the standard `Authorization: Bearer` header plus the user-defined /// custom HTTP headers (needed for servers behind Cloudflare Access etc.). + /// Fetches the user's saved progress for one library item (`GET /api/me/progress/{id}`). + public func fetchItem(for id: String) async throws -> AudiobookShelfLibraryItem? { + guard let connection else { + throw URLError(.userAuthenticationRequired) + } + + let url = connection.url + .appendingPathComponent("api") + .appendingPathComponent("me") + .appendingPathComponent("progress") + .appendingPathComponent(id) + + var request = URLRequest(url: url) + applyAuthenticatedHeaders(to: &request, connection: connection) + let (data, response) = try await httpClient.data(for: request) + _ = try validateAuthenticatedResponse(response) + let progress = try JSONDecoder().decode(AudiobookShelfAPIItem.UserMediaProgress.self, from: data) + return AudiobookShelfLibraryItem(progressItem: progress) + } + + /// Pushes playback progress for one library item (`PATCH /api/me/progress/{id}`), mirroring + /// what the Android app's external-update task sends. + public func updateProgress( + for id: String, + progress: Double, + currentTime: Double + ) async throws { + guard let connection else { + throw URLError(.userAuthenticationRequired) + } + + let url = connection.url + .appendingPathComponent("api") + .appendingPathComponent("me") + .appendingPathComponent("progress") + .appendingPathComponent(id) + + var request = URLRequest(url: url) + request.httpMethod = "PATCH" + applyAuthenticatedHeaders(to: &request, connection: connection) + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try JSONSerialization.data(withJSONObject: [ + "progress": progress, + "currentTime": currentTime, + ]) + + let (_, response) = try await httpClient.data(for: request) + _ = try validateAuthenticatedResponse(response) + } + public func createItemDownloadRequest(_ item: AudiobookShelfLibraryItem) throws -> URLRequest { guard let connection else { throw URLError(.userAuthenticationRequired) diff --git a/Shared/AudiobookShelf/Network/AudiobookShelfLibrary.swift b/Shared/AudiobookShelf/Network/AudiobookShelfLibrary.swift new file mode 100644 index 000000000..d0afa2db6 --- /dev/null +++ b/Shared/AudiobookShelf/Network/AudiobookShelfLibrary.swift @@ -0,0 +1,29 @@ +// +// AudiobookShelfLibrary.swift +// BookPlayer +// +// Created by Gianni Carlo on 14/11/25. +// Copyright © 2025 BookPlayer LLC. All rights reserved. +// + +import Foundation + +public struct AudiobookShelfLibrary: Codable, Identifiable { + public let id: String + public let name: String + public let folders: [Folder] + public let displayOrder: Int + public let icon: String + public let mediaType: String // "book" or "podcast" + public let provider: String + + public struct Folder: Codable { + let id: String + let fullPath: String + let libraryId: String + } +} + +public struct AudiobookShelfLibrariesResponse: Codable { + let libraries: [AudiobookShelfLibrary] +} diff --git a/BookPlayer/AudiobookShelf/Network/AudiobookShelfOIDCFlow.swift b/Shared/AudiobookShelf/Network/AudiobookShelfOIDCFlow.swift similarity index 98% rename from BookPlayer/AudiobookShelf/Network/AudiobookShelfOIDCFlow.swift rename to Shared/AudiobookShelf/Network/AudiobookShelfOIDCFlow.swift index 10a7f30d0..c35041880 100644 --- a/BookPlayer/AudiobookShelf/Network/AudiobookShelfOIDCFlow.swift +++ b/Shared/AudiobookShelf/Network/AudiobookShelfOIDCFlow.swift @@ -6,7 +6,9 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // -import BookPlayerKit +// The browser-based SSO handshake is iOS-only: ASWebAuthenticationSession presentation +// and UIKit anchors don't exist on watchOS, and the watch never signs in by itself. +#if !os(watchOS) import Foundation /// AudiobookShelf's native OpenID Connect ("SSO") handshake. @@ -347,3 +349,5 @@ struct AudiobookShelfOIDCFlow: BPLogger { } } } + +#endif diff --git a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift new file mode 100644 index 000000000..247d09490 --- /dev/null +++ b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift @@ -0,0 +1,36 @@ +// +// ExternalResource+CoreDataClass.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 13/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation +import CoreData +import SwiftUI + +extension ExternalResource { + public enum SyncStatus: String, Codable { + case notSynced = "not_synced" + case stream = "stream" + case downloaded = "downloaded" + } + + public enum ProviderName: String, Codable { + case jellyfin + case hardcover + case audiobookshelf + + public var icon: ImageResource { + switch self { + case .jellyfin: + return .jellyfinIcon + case .hardcover: + return .plusImageAppIcons + case .audiobookshelf: + return .audiobookshelfIcon + } + } + } +} diff --git a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift new file mode 100644 index 000000000..9dba62356 --- /dev/null +++ b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift @@ -0,0 +1,72 @@ +// +// ExternalResource+CoreDataProperties.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 13/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation +import CoreData + +@objc(ExternalResource) +public class ExternalResource: NSManagedObject { + @nonobjc public class func fetchRequest() -> NSFetchRequest { + return NSFetchRequest(entityName: "ExternalResource") + } + + @NSManaged public var id: Int32 + @NSManaged public var providerName: String + @NSManaged public var providerId: String + @NSManaged public var syncStatus: String + @NSManaged public var lastSyncedAt: Date? + @NSManaged public var processedFile: Bool + @NSManaged public var hostId: String? + + @NSManaged public var libraryItem: LibraryItem? + + @nonobjc public class func create( + _ item: SimpleExternalResource, + libraryItem: LibraryItem?, + in context: NSManagedObjectContext + ) -> ExternalResource { + // swiftlint:disable:next force_cast + let entity = NSEntityDescription.insertNewObject(forEntityName: "ExternalResource", into: context) as! ExternalResource + + entity.id = Int32(item.id) + entity.providerName = item.providerName + entity.providerId = item.providerId + entity.lastSyncedAt = item.lastSyncedAt + entity.syncStatus = item.syncStatus + entity.processedFile = false + entity.hostId = item.hostId + + if let item = libraryItem { + entity.libraryItem = item + } + + return entity + } + + @nonobjc public class func create( + _ item: SyncableExternalResource, + libraryItem: LibraryItem?, + in context: NSManagedObjectContext + ) -> ExternalResource { + // swiftlint:disable:next force_cast + let entity = NSEntityDescription.insertNewObject(forEntityName: "ExternalResource", into: context) as! ExternalResource + + entity.providerName = item.providerName + entity.providerId = item.providerId + entity.lastSyncedAt = item.lastSyncedAt + entity.syncStatus = item.syncStatus + entity.processedFile = false + entity.hostId = item.hostId + + if let item = libraryItem { + entity.libraryItem = item + } + + return entity + } +} diff --git a/Shared/CoreData/Backed-Models/LibraryItem+CoreDataProperties.swift b/Shared/CoreData/Backed-Models/LibraryItem+CoreDataProperties.swift index 78e5da2b4..e50438d61 100644 --- a/Shared/CoreData/Backed-Models/LibraryItem+CoreDataProperties.swift +++ b/Shared/CoreData/Backed-Models/LibraryItem+CoreDataProperties.swift @@ -35,6 +35,30 @@ extension LibraryItem { @NSManaged public var details: String! @NSManaged public var type: ItemType @NSManaged public var hardcoverBook: HardcoverBook? + @NSManaged public var externalResources: NSSet? +} + +// MARK: Generated accessors for externalResources +extension LibraryItem { + @objc(addExternalResourcesObject:) + @NSManaged public func addToExternalResources(_ value: ExternalResource) + + @objc(removeExternalResourcesObject:) + @NSManaged public func removeFromExternalResources(_ value: ExternalResource) + + @objc(addExternalResources:) + @NSManaged public func addToExternalResources(_ values: NSSet) + + @objc(removeExternalResources:) + @NSManaged public func removeFromExternalResources(_ values: NSSet) + + public var resourcesArray: [ExternalResource] { + return externalResources?.allObjects as? [ExternalResource] ?? [] + } + + public var jellyfinResource: ExternalResource? { + return resourcesArray.first { $0.providerName == ExternalResource.ProviderName.jellyfin.rawValue } + } } // MARK: Generated accessors for bookmarks diff --git a/Shared/CoreData/BookPlayer.xcdatamodeld/.xccurrentversion b/Shared/CoreData/BookPlayer.xcdatamodeld/.xccurrentversion index 53134484e..6eed3fb59 100644 --- a/Shared/CoreData/BookPlayer.xcdatamodeld/.xccurrentversion +++ b/Shared/CoreData/BookPlayer.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - Audiobook Player 11.xcdatamodel + Audiobook Player 12.xcdatamodel diff --git a/Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel/contents b/Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel/contents new file mode 100644 index 000000000..6c2ca5a02 --- /dev/null +++ b/Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel/contents @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Shared/CoreData/CoreDataStack.swift b/Shared/CoreData/CoreDataStack.swift index 4633f7f2e..3ffd0f1f3 100644 --- a/Shared/CoreData/CoreDataStack.swift +++ b/Shared/CoreData/CoreDataStack.swift @@ -62,16 +62,42 @@ public class CoreDataStack { } } + private let saveLock = NSRecursiveLock() + private var isSaving = false + private var pendingSave = false + public func saveContext() { saveContext(managedContext) } public func saveContext(_ context: NSManagedObjectContext) { - guard context.hasChanges else { return } - do { - try context.save() - } catch let error as NSError { - fatalError("Unresolved error \(error), \(error.userInfo)") + saveLock.lock() + if isSaving { + pendingSave = true + saveLock.unlock() + return + } + isSaving = true + saveLock.unlock() + + context.performAndWait { + guard context.hasChanges else { return } + do { + try context.save() + } catch let error as NSError { + // Only crash in debug to allow investigation, or keep fatalError if strictly required + assertionFailure("Unresolved error \(error), \(error.userInfo)") + } + } + + saveLock.lock() + isSaving = false + let shouldRetry = pendingSave + pendingSave = false + saveLock.unlock() + + if shouldRetry { + saveContext(context) } } } diff --git a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift index 15afd9b73..b4dc71004 100644 --- a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift +++ b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift @@ -19,9 +19,11 @@ public struct PlayableChapter: Codable, Identifiable { public let duration: TimeInterval public let relativePath: String public let remoteURL: URL? + public var externalUrl: URL? public let index: Int16 public let chapterOffset: TimeInterval - + public let externalHeaders: [String: String] + public var end: TimeInterval { return start + duration } @@ -44,8 +46,10 @@ public struct PlayableChapter: Codable, Identifiable { duration: TimeInterval, relativePath: String, remoteURL: URL?, + externalURL: URL?, index: Int16, - chapterOffset: TimeInterval = 0 + chapterOffset: TimeInterval = 0, + externalHeaders: [String: String] = [:] ) { self.title = title self.author = author @@ -53,8 +57,10 @@ public struct PlayableChapter: Codable, Identifiable { self.duration = duration self.relativePath = relativePath self.remoteURL = remoteURL + self.externalUrl = externalURL self.index = index self.chapterOffset = chapterOffset + self.externalHeaders = externalHeaders } } diff --git a/Shared/CoreData/Lightweight-Models/PlayableItem.swift b/Shared/CoreData/Lightweight-Models/PlayableItem.swift index 86440a42a..b65564c69 100644 --- a/Shared/CoreData/Lightweight-Models/PlayableItem.swift +++ b/Shared/CoreData/Lightweight-Models/PlayableItem.swift @@ -11,7 +11,7 @@ import Foundation public final class PlayableItem: NSObject, Identifiable { public var id: String { - return relativePath + return uuid } public let title: String public let author: String diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift new file mode 100644 index 000000000..2e4bf71d4 --- /dev/null +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -0,0 +1,59 @@ +// +// SimpleExternalResource.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 13/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +public struct SimpleExternalResource: Identifiable { + public let id: Int + public let providerName: String + public let providerId: String + public let syncStatus: String + public var lastSyncedAt: Date? + public var processedFile = false + public var hostId: String? + public var libraryItemUuid: String? + public var libraryItemName: String? + public var libraryItem: SimpleLibraryItem? + + public init( + id: Int = 0, + providerName: String, + providerId: String, + syncStatus: String, + lastSyncedAt: Date?, + hostId: String? = nil, + libraryItemUuid: String? = nil, + libraryItemName: String? = nil, + libraryItem: SimpleLibraryItem? = nil + ) { + self.id = id + self.providerName = providerName + self.providerId = providerId + self.syncStatus = syncStatus + self.lastSyncedAt = lastSyncedAt + self.hostId = hostId + self.libraryItemUuid = libraryItemUuid + self.libraryItemName = libraryItemName + self.libraryItem = libraryItem + } +} + +extension SimpleExternalResource { + public init(from item: ExternalResource, ignoreLibraryItem: Bool = false) { + self.id = Int(item.id) + self.providerName = item.providerName + self.providerId = item.providerId + self.syncStatus = item.syncStatus + self.lastSyncedAt = item.lastSyncedAt + self.hostId = item.hostId + self.libraryItemUuid = item.libraryItem?.uuid + self.libraryItemName = item.libraryItem?.title + self.libraryItem = (!ignoreLibraryItem && item.libraryItem != nil) ? SimpleLibraryItem(from: item.libraryItem!) : nil + } +} + diff --git a/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift b/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift index 01c3e104d..054be7331 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift @@ -29,6 +29,7 @@ public struct SimpleLibraryItem: Identifiable, Hashable, Equatable { public let lastPlayDate: Date? public let type: SimpleItemType public let uuid: String + public let externalResources: [SimpleExternalResource]? public var progress: Double { if type == .folder, @@ -70,7 +71,7 @@ public struct SimpleLibraryItem: Identifiable, Hashable, Equatable { "originalFileName", "lastPlayDate", "type", - "uuid", + "uuid" ] public func hash(into hasher: inout Hasher) { @@ -97,7 +98,8 @@ public struct SimpleLibraryItem: Identifiable, Hashable, Equatable { originalFileName: String, lastPlayDate: Date?, type: SimpleItemType, - uuid: String + uuid: String, + externalResources: [SimpleExternalResource]? = nil ) { self.title = title self.details = details @@ -116,6 +118,7 @@ public struct SimpleLibraryItem: Identifiable, Hashable, Equatable { self.lastPlayDate = lastPlayDate self.type = type self.uuid = uuid + self.externalResources = externalResources } } @@ -138,6 +141,8 @@ extension SimpleLibraryItem { self.lastPlayDate = item.lastPlayDate self.uuid = item.uuid + self.externalResources = item.resourcesArray.map({ SimpleExternalResource(from: $0, ignoreLibraryItem: true) }) + switch item.type { case .folder: self.type = .folder diff --git a/Shared/CoreData/Migrations/DBVersion.swift b/Shared/CoreData/Migrations/DBVersion.swift index 31e0e982d..967ccb54a 100644 --- a/Shared/CoreData/Migrations/DBVersion.swift +++ b/Shared/CoreData/Migrations/DBVersion.swift @@ -10,7 +10,7 @@ import CoreData import Foundation enum DBVersion: CaseIterable { - case v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 + case v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12 func model() -> NSManagedObjectModel { let modelURLs = Bundle.main @@ -40,6 +40,8 @@ enum DBVersion: CaseIterable { modelName = "Audiobook Player 10" case .v11: modelName = "Audiobook Player 11" + case .v12: + modelName = "Audiobook Player 12" } let model = modelURLs @@ -65,6 +67,8 @@ enum DBVersion: CaseIterable { return "MappingModel_v9_to_v10" case .v11: return "MappingModel_v10_to_v11" + case .v12: + return "MappingModel_v11_to_v12" default: return nil } diff --git a/Shared/CoreData/Migrations/MappingModel_v10_to_v11.xcmappingmodel/xcmapping.xml b/Shared/CoreData/Migrations/MappingModel_v10_to_v11.xcmappingmodel/xcmapping.xml index e01d8dd87..aa5903faf 100644 --- a/Shared/CoreData/Migrations/MappingModel_v10_to_v11.xcmappingmodel/xcmapping.xml +++ b/Shared/CoreData/Migrations/MappingModel_v10_to_v11.xcmappingmodel/xcmapping.xml @@ -1,18 +1,18 @@ - + 134481920 - BCA5FFB8-2A43-4E0E-83E2-CB57C40EDD3B + BBCFC426-ECB1-425B-99DC-BBFEF01E5B6A 206 NSPersistenceFrameworkVersion - 1526 + 1523 NSPersistenceMaximumFrameworkVersion - 1526 + 1523 NSStoreModelVersionChecksumKey bMpud663vz0bXQE24C6Rh4MvJ5jVnzsD2sI3njZkKbc= NSStoreModelVersionHashes @@ -51,507 +51,507 @@ - time - + lastPlayDate + - - date - + + Bookmark + Undefined + 3 + Bookmark + 1 + + + percentCompleted - + - originalFileName - + currentTime + - - lightPrimaryHex - + + Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 10.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 +cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIAgALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78D1APVA90D3gPqA/4EDQQcBCsELwQ+BE0EXARrBHoEhgSYBJkEmgSbBJwEnQSeBJ8ErgSvBL4EzQTcBN0E7AT7BQoFEgUnBSgFMAU8BVAFXwVuBX0FgQWQBZ8FrgW9BcwF2AXqBfkGCAYXBiYGNQZEBlMGWwZwBnEGeQaFBpkGqAa3BsYGygbZBugG9wcGBxUHIQczB0IHUQdgB28HiQeKB5AHnAeyB8EHxAfTB+IH5Qf0CAMIBggVCCQIKAg3CEYIUghTCFQIVQhqCGsIcwh/CJMIogixCMAIxAjTCOII8QkACQ8JGwktCTwJSwlaCWkJeAmHCZYJqwmsCbQJwAnUCeMJ8goBCgUKFAojCjIKQQpQClwKbgp9CowKmwqqCrkKyArXCuwK7Qr1CwELFQskCzMLQgtGC1ULZAtzC4ILkQudC68LvgvNC9wL6wv6DAkMGAwtDC4MNgxCDFYMZQx0DIMMhwyWDKUMtAzDDNIM3gzwDP8NDg0dDSwNRg1HDU0NWQ1vDX4NgQ2QDZENoA2jDbINwQ3EDdMN4g3mDfUOBA4+Dj8OQA5BDkIOQw5EDkUORg5HDkgOSQ5KDksOTA5NDk4OTw5QDlEOUg5TDlQOVQ5WDlcObA5tDnUOgQ6VDqQOsw7CDsYO1Q7kDvMPAg8DDxIPHg8wDz8PTg9dD2wPbQ98D4sPmg+vD7APuA/ED9gP5w/2EAUQCRAYECcQNhBFEFQQYBByEIEQkBCfEK4QvRDMENsQ8BDxEPkRBREZESgRNxFGEUoRWRF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UWJxYqFi8WMtY2ljpWO1Y/FkLWRpZKVk4WURZVlllWXRZg1mSWaFZsFm/WdRZ1VndWelZ/VoMWhtaKlouWj1aTFpbWmpaeVqFWpdaplq1WsRa01riWvFbAFsVWxZbHlsqWz5bTVtcW2tbb1t+W41bnFurW7pbxlvYW+db9lwFXBRcI1wyXEFcRFxTXGJccVx1XHZcfFyDXIRck1yiXLFctVzPXNBc1lziXPhdB10KXRldKF0rXTpdSV1MXVtdal1uXX1djF2YXZldml2bXbBdsV25XcVd2V3oXfdeBl4KXhleKF43XkZeVV5hXnNegl6RXqBer16+Xs1e3F7xXvJe+l8GXxpfKV84X0dfS19aX2lfeF+HX5Zfol+0X8Nf0l/hX/Bf/2AOYB1gMmAzYDtgR2BbYGpgeWCIYIxgm2CqYLlgyGDXYONg9WEEYRNhImExYUBhT2FeYXNhdGF8YYhhnGGrYbphyWHNYdxh62H6YgliGGIkYjZiRWJUYmNicmKBYpBin2KiYrxivWLDYs9i5WL0YvdjBmMVYxhjJ2M2YzljSGNXY1tjamN5Y3pjgmODY5hjmWOhY61jwWPQY99j7mPyZAFkEGQfZC5kPWRJZFtkamR5ZIhkl2SmZLVkxGTZZNpk4mTuZQJlEWUgZS9lM2VCZVFlYGVvZX5limWcZatlumXJZdhl52X2ZgVmCGYMZhBmFGYcZh9mI2YkVSRudWxs1gANAA4ADwAQABEAEgATABQAFQAWABcAGF8QD194ZF9yb290UGFja2FnZVYkY2xhc3NdX3hkX21vZGVsTmFtZVxfeGRfY29tbWVudHNfEBVfY29uZmlndXJhdGlvbnNCeU5hbWVfEBdfbW9kZWxWZXJzaW9uSWRlbnRpZmllcoACgQgBgACBB/6BB/+BCADeABoAGwAcAB0AHgAfACAADgAhACIAIwAkACUAJgAnACgAKQAJACcAFQAtAC4ALwAwADEAJwAnABVfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASBB/yBB/qAAYAEgACBB/uBB/0QAIAFgAOABIAEgABQU1lFU9MAOAA5AA4AOgBFAFBXTlMua2V5c1pOUy5vYmplY3RzqgA7ADwAPQA+AD8AQABBAEIAQwBEgAaAB4AIgAmACoALgAyADYAOgA+qAEYARwBIAEkASgBLAEwATQBOAE+AEIEFNoEGhYEGDIEGrYBhgQdDgQe2gNaBAUWAL1ZGb2xkZXJdSGFyZGNvdmVyQm9va1RCb29rWEJvb2ttYXJrV0NoYXB0ZXJbTGlicmFyeUl0ZW1XQWNjb3VudF5QbGF5YmFja1JlY29yZFdMaWJyYXJ5VVRoZW1l3xAQAFwAXQBeAF8AHwBgAGEAIQBiAGMADgAjAGQAZQAmAGYAZwBoACcAJwATAGwAbQAvACcAZwBwADsAZwBzAHQAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZVtfaXNBYnN0cmFjdIASgDaABIAEgAKAE4ED/4AEgBKBBAGABoASgQdCgBEIEuEnSGpXb3JkZXJlZNMAOAA5AA4AeQB7AFChAHqAFKEAfIAVgC9eWERfUFN0ZXJlb3R5cGXZAB8AIwCAAA4AJgCBACEAZgCCAEYAegBnAIYAFQAnAC8AdQCKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgBCAFIASgDWAAIAECIAW0wA4ADkADgCMAJYAUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pAJcAmACZAJoAmwCcAJ0AngCfgCCAJIAmgCiAKYArgC2AMIA0gC9fEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGVhEUE1VbmlxdWVuZXNzQ29uc3RyYWludHNfEBpYRF9QU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QGVhEX1BTS19mZXRjaFJlcXVlc3RzQXJyYXlfEBFYRF9QU0tfaXNBYnN0cmFjdF8QD1hEX1BTS191c2VySW5mb18QE1hEX1BTS19jbGFzc01hcHBpbmdfEBZYRF9QU0tfZW50aXR5Q2xhc3NOYW1l3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAtgAVAHwAdQB1AHUALwB1AL0AjQB1AHUAFQB1VV90eXBlWF9kZWZhdWx0XF9hc3NvY2lhdGlvbltfaXNSZWFkT25seVlfaXNTdGF0aWNZX2lzVW5pcXVlWl9pc0Rlcml2ZWRaX2lzT3JkZXJlZFxfaXNDb21wb3NpdGVXX2lzTGVhZoAAgCGAAIAVCAgICIAjgBcICIAACNIAOQAOAMQAxaCAItIAxwDIAMkAylokY2xhc3NuYW1lWCRjbGFzc2VzXk5TTXV0YWJsZUFycmF5owDJAMsAzFdOU0FycmF5WE5TT2JqZWN00gDHAMgAzgDPXxAQWERVTUxQcm9wZXJ0eUltcKQA0ADRANIAzF8QEFhEVU1MUHJvcGVydHlJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVANUAFQB8AHUAdQB1AC8AdQC9AI4AdQB1ABUAdYAAgCWAAIAVCAgICIAjgBgICIAACFpQbGF5bGlzdFYz3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUA5QAVAHwAdQB1AHUALwB1AL0AjwB1AHUAFQB1gACAJ4AAgBUICAgIgCOAGQgIgAAI0gA5AA4A8wDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVAHwAdQB1AHUALwB1AL0AkAB1AHUAFQB1gACAAIAAgBUICAgIgCOAGggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBBgAVAHwAdQB1AHUALwB1AL0AkQB1AHUAFQB1gACAKoAAgBUICAgIgCOAGwgIgAAI0gA5AA4BFADFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVAHwAdQB1AHUALwB1AL0AkgB1AHUAFQB1gACALIAAgBUICAgIgCOAHAgIgAAICN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVASgAFQB8AHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgC6AAIAVCAgICIAjgB0ICIAACNMAOAA5AA4BNgE3AFCgoIAv0gDHAMgBOgE7XxATTlNNdXRhYmxlRGljdGlvbmFyeaMBOgE8AMxcTlNEaWN0aW9uYXJ53xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBPwAVAHwAdQB1AHUALwB1AL0AlAB1AHUAFQB1gACAMYAAgBUICAgIgCOAHggIgAAI1gAjAA4AJgBmAB8AIQFNAU4AFQB1ABUAL4AygDOAAAiAAF8QFFhER2VuZXJpY1JlY29yZENsYXNz0gDHAMgBVAFVXVhEVU1MQ2xhc3NJbXCmAVYBVwFYAVkBWgDMXVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAOwAVAHwAdQB1AHUALwB1AL0AlQB1AHUAFQB1gACABoAAgBUICAgIgCOAHwgIgAAI0gDHAMgBawFsXxASWERVTUxTdGVyZW90eXBlSW1wpwFtAW4BbwFwAXEBcgDMXxASWERVTUxTdGVyZW90eXBlSW1wXVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w0wA4ADkADgF0AXYAUKEBdYA3oQF3gDiAL1VpdGVtc98QEgCrAKwArQF7AB8ArwCwAXwAIQCuAX0AsQAOACMAsgCzACYAtAAVABUAFQAnAEYAdQB1AYUALwB1AGcAdQGJAXUAdQB1AY0AdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgBAICIA6CIASCIDBgDcICIA5CBL74hWf0wA4ADkADgGRAZQAUKIBkgGTgDuAPKIBlQGWgD2AUoAvXxASWERfUFByb3BTdGVyZW90eXBlXxAQWERfUFJfU3RlcmVvdHlwZdkAHwAjAZsADgAmAZwAIQBmAZ0BdwGSAGcAhgAVACcALwB1AaVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAOIA7gBKANYAAgAQIgD7TADgAOQAOAacBsABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqAGxAbIBswG0AbUBtgG3AbiAR4BIgEmAS4BMgE6AT4BRgC9fEBtYRF9QUFNLX2lzU3RvcmVkSW5UcnV0aEZpbGVfEBtYRF9QUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBBYRF9QUFNLX3VzZXJJbmZvXxARWERfUFBTS19pc0luZGV4ZWRfEBJYRF9QUFNLX2lzT3B0aW9uYWxfEBpYRF9QUFNLX2lzU3BvdGxpZ2h0SW5kZXhlZF8QEVhEX1BQU0t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AgQaFgQaFgQc7gGHfEBBTI1MkUyVTJgAfUydTKAAhUylTKgAOACNTK1MsACYAZgBnUy4AJwAnABNTMgBtAC8AJwBnAHAAPQBnUzlTOgB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgBKBBpeABIAEgAKBBoeBA/+ABIASgQQBgAiAEoEHOoEGhggSbWCTy9MAOAA5AA5TPlNAAFChAHqAFKFTQYEGiIAv2QAfACNTRAAOACZTRQAhAGZTRgBIAHoAZwCGABUAJwAvAHVTTl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEGhYAUgBKANYAAgAQIgQaJ0wA4ADkADlNQU1oAUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pU1tTXFNdU15TX1NgU2FTYlNjgQaKgQaMgQaNgQaPgQaQgQaSgQaTgQaVgQaWgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFVNnABVTQQB1AHUAdQAvAHUAvQCNAHUAdQAVAHWAAIEGi4AAgQaICAgICIAjgBcICIAACNIAOQAOU3UAxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAA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ZAAAWWwAAFl0AABZfAAAWYQAAFmMAABZlAAAWZwAAFmkAABZrAAAWbQAAFoMAABaWAAAWsgAAFs8AABbrAAAW/wAAFxEAABcnAAAXQAAAF38AABeFAAAXjgAAF5sAABenAAAXsQAAF7sAABfGAAAX0QAAF94AABfmAAAX6AAAF+oAABfsAAAX7gAAF+8AABfwAAAX8QAAF/IAABf0AAAX9gAAF/cAABf4AAAX+gAAF/sAABgEAAAYBQAAGAcAABgQAAAYGwAAGCQAABgzAAAYOgAAGEIAABhLAAAYVAAAGGcAABhwAAAYgwAAGJoAABisAAAY6wAAGO0AABjvAAAY8QAAGPMAABj0AAAY9QAAGPYAABj3AAAY+QAAGPsAABj8AAAY/QAAGP8AABkAAAAZCwAAGUoAABlMAAAZTgAAGVAAABlSAAAZUwAAGVQAABlVAAAZVgAAGVgAABlaAAAZWwAAGVwAABleAAAZXwAAGWgAABlpAAAZawAAGaoAABmsAAAZrgAAGbAAABmyAAAZswAAGbQAABm1AAAZtgAAGbgAABm6AAAZuwAAGbwAABm+AAAZvwAAGf4AABoAAAAaAgAAGgQAABoGAAAaBwAAGggAABoJAAAaCgAAGgwAABoOAAAaDwAAGhAAABoSAAAaEwAAGhwAABodAAAaHwAAGl4AABpgAAAaYgAAGmQAABpmAAAaZwAAGmgAABppAAAaagAAGmwAABpuAAAabwAAGnAAABpyAAAacwAAGnQAABqzAAAatQAAGrcAABq5AAAauwAAGrwAABq9AAAavgAAGr8AABrBAAAawwAAGsQAABrFAAAaxwAAGsgAABrVAAAa1gAAGtcAABrZAAAa4gAAGvgAABr/AAAbDAAAG0sAABtNAAAbTwAAG1EAABtTAAAbVAAAG1UAABtWAAAbVwAAG1kAABtbAAAbXAAAG10AABtfAAAbYAAAG3kAABt7AAAbfQAAG38AABuAAAAbggAAG5kAABuiAAAbsAAAG70AABvLAAAb4AAAG/QAABwLAAAcHQAAHFwAABxeAAAcYAAAHGIAABxkAAAcZQAAHGYAABxnAAAcaAAAHGoAABxsAAAcbQAAHG4AABxwAAAccQAAHHoAAByPAAAcngAAHLMAABzBAAAc1gAAHOoAAB0BAAAdEwAAHSAAAB0jAAAdJQAAHSgAAB0qAAAdLAAAHTIAAB19AAAdoAAAHcAAAB3gAAAd4gAAHeQAAB3mAAAd6AAAHeoAAB3rAAAd7AAAHe4AAB3vAAAd8QAAHfIAAB30AAAd9gAAHfcAAB34AAAd+gAAHfsAAB4AAAAeDQAAHhIAAB4UAAAeFgAAHhsAAB4dAAAeHwAAHiEAAB42AAAeSQAAHm4AAB6SAAAeuQAAHt0AAB7fAAAe4QAAHuMAAB7lAAAe5wAAHukAAB7qAAAe7AAAHvkAAB8KAAAfDAAAHw4AAB8QAAAfEgAAHxQAAB8WAAAfGAAAHxoAAB8rAAAfLQAAHy8AAB8xAAAfMwAAHzUAAB83AAAfOQAAHzsAAB89AAAfWwAAH3kAAB+MAAAfoAAAH7UAAB/SAAAf5gAAH/wAACA7AAAgPQAAID8AACBBAAAgQwAAIEQAACBFAAAgRgAAIEcAACBJAAAgSwAAIEwAACBNAAAgTwAAIFAAACCPAAAgkQAAIJMAACCVAAAglwAAIJgAACCZAAAgmgAAIJsAACCdAAAgnwAAIKAAACChAAAgowAAIKQAACDjAAAg5QAAIOcAACDpAAAg6wAAIOwAACDtAAAg7gAAIO8AACDxAAAg8wAAIPQAACD1AAAg9wAAIPgAACEFAAAhBgAAIQcAACEJAAAhSAAAIUoAACFMAAAhTgAAIVAAACFRAAAhUgAAIVMAACFUAAAhVgAAIVgAACFZAAAhWgAAIVwAACFdAAAhnAAAIZ4AACGgAAAhogAAIaQAACGlAAAhpgAAIacAACGoAAAhqgAAIawAACGtAAAhrgAAIbAAACGxAAAhsgAAIfEAACHzAAAh9QAAIfcAACH5AAAh+gAAIfsAACH8AAAh/QAAIf8AACIBAAAiAgAAIgMAACIFAAAiBgAAIkUAACJHAAAiSQAAIksAACJNAAAiTgAAIk8AACJQAAAiUQAAIlMAACJVAAAiVgAAIlcAACJZAAAiWgAAImkAACKoAAAiqgAAIqwAACKuAAAisAAAIrEAACKyAAAiswAAIrQAACK2AAAiuAAAIrkAACK6AAAivAAAIr0AACLiAAAjBgAAIy0AACNRAAAjUwAAI1UAACNXAAAjWQAAI1sAACNdAAAjXgAAI2AAACNtAAAjfAAAI34AACOAAAAjggAAI4QAACOGAAAjiAAAI4oAACOZAAAjmwAAI50AACOfAAAjoQAAI6QAACOnAAAjqgAAI6wAACO+AAAj0gAAI+QAACP5AAAkCwAAJBoAACQ3AAAkdgAAJHgAACR6AAAkfAAAJH4AACR/AAAkgAAAJIEAACSCAAAkhAAAJIYAACSHAAAkiAAAJIoAACSLAAAkygAAJMwAACTOAAAk0AAAJNIAACTTAAAk1AAAJNUAACTWAAAk2AAAJNoAACTbAAAk3AAAJN4AACTfAAAk4QAAJSAAACUiAAAlJAAAJSYAACUoAAAlKQAAJSoAACUrAAAlLAAAJS4AACUwAAAlMQAAJTIAACU0AAAlNQAAJXQAACV2AAAleAAAJXoAACV8AAAlfQAAJX4AACV/AAAlgAAAJYIAACWEAAAlhQAAJYYAACWIAAAliQAAJdwAACYAAAAmJAAAJkQAACZrAAAmkgAAJrIAACbZAAAm/QAAJyAAACdHAAAnawAAJ48AACezAAAn2gAAJ9sAACfdAAAn3wAAJ+EAACfjAAAn5gAAJ+gAACfqAAAn7QAAJ+8AACfxAAAn9AAAJ/YAACf4AAAn+gAAJ/wAACf+AAAoAQAAKAQAACgJAAAoFgAAKBkAACgbAAAoHgAAKCAAACgiAAAoRwAAKGsAACiSAAAotgAAKLgAACi6AAAovAAAKL4AACjAAAAowgAAKMMAACjFAAAo0gAAKOUAACjnAAAo6QAAKOsAACjtAAAo7wAAKPEAACjzAAAo9QAAKPcAACkKAAApDAAAKQ4AACkQAAApEgAAKRQAACkWAAApGAAAKRoAACkcAAApHgAAKV0AAClfAAApYQAAKWMAACllAAApZgAAKWcAACloAAApaQAAKWsAACltAAApbgAAKW8AAClxAAApcgAAKXsAACl8AAApfgAAKb0AACm/AAApwQAAKcMAACnFAAApxgAAKccAACnIAAApyQAAKcsAACnNAAApzgAAKc8AACnRAAAp0gAAKhEAACoTAAAqFQAAKhcAACoZAAAqGgAAKhsAACocAAAqHQAAKh8AACohAAAqIgAAKiMAAColAAAqJgAAKi8AACowAAAqMgAAKnEAACpzAAAqdQAAKncAACp5AAAqegAAKnsAACp8AAAqfQAAKn8AACqBAAAqggAAKoMAACqFAAAqhgAAKsUAACrHAAAqyQAAKssAACrNAAAqzgAAKs8AACrQAAAq0QAAKtMAACrVAAAq1gAAKtcAACrZAAAq2gAAKuMAACrkAAAq5gAAKyUAACsnAAArKQAAKysAACstAAArLgAAKy8AACswAAArMQAAKzMAACs1AAArNgAAKzcAACs5AAArOgAAK3kAACt7AAArfQAAK38AACuBAAArggAAK4MAACuEAAArhQAAK4cAACuJAAArigAAK4sAACuNAAArjgAAK5sAACucAAArnQAAK58AACveAAAr4AAAK+IAACvkAAAr5gAAK+cAACvoAAAr6QAAK+oAACvsAAAr7gAAK+8AACvwAAAr8gAAK/MAACwyAAAsNAAALDYAACw4AAAsOgAALDsAACw8AAAsPQAALD4AACxAAAAsQgAALEMAACxEAAAsRgAALEcAACxTAAAsYAAALIkAACyLAAAsjQAALI8AACyRAAAskwAALJUAACyXAAAsmQAALJsAACydAAAsnwAALKEAACyjAAAspQAALKcAACypAAAsqwAALK0AACyvAAAs2AAALNoAACzcAAAs3gAALOEAACzkAAAs5wAALOoAACztAAAs8AAALPMAACz2AAAs+QAALPwAACz/AAAtAgAALQUAAC0IAAAtCwAALQ4AAC0QAAAtFgAALR0AAC0lAAAtLwAALTkAAC1EAAAtTwAALVcAAC1qAAAtfQAALYoAAC2WAAAtowAALakAAC2uAAAtvAAALcUAAC3QAAAt2gAALiUAAC5IAAAuaAAALogAAC6KAAAujAAALo4AAC6QAAAukgAALpMAAC6UAAAulgAALpcAAC6ZAAAumgAALpwAAC6eAAAunwAALqAAAC6iAAAuowAALqgAAC61AAAuugAALrwAAC6+AAAuwwAALsUAAC7HAAAuyQAALt4AAC8DAAAvJwAAL04AAC9yAAAvdAAAL3YAAC94AAAvegAAL3wAAC9+AAAvfwAAL4EAAC+OAAAvnwAAL6EAAC+jAAAvpQAAL6cAAC+pAAAvqwAAL60AAC+vAAAvwAAAL8IAAC/EAAAvxgAAL8gAAC/KAAAvzAAAL84AAC/QAAAv0gAAMBEAADATAAAwFQAAMBcAADAZAAAwGgAAMBsAADAcAAAwHQAAMB8AADAhAAAwIgAAMCMAADAlAAAwJgAAMGUAADBnAAAwaQAAMGsAADBtAAAwbgAAMG8AADBwAAAwcQAAMHMAADB1AAAwdgAAMHcAADB5AAAwegAAMLkAADC7AAAwvQAAML8AADDBAAAwwgAAMMMAADDEAAAwxQAAMMcAADDJAAAwygAAMMsAADDNAAAwzgAAMNsAADDcAAAw3QAAMN8AADEeAAAxIAAAMSIAADEkAAAxJgAAMScAADEoAAAxKQAAMSoAADEsAAAxLgAAMS8AADEwAAAxMgAAMTMAADFyAAAxdAAAMXYAADF4AAAxegAAMXsAADF8AAAxfQAAMX4AADGAAAAxggAAMYMAADGEAAAxhgAAMYcAADHGAAAxyAAAMcoAADHMAAAxzgAAMc8AADHQAAAx0QAAMdIAADHUAAAx1gAAMdcAADHYAAAx2gAAMdsAADIaAAAyHAAAMh4AADIgAAAyIgAAMiMAADIkAAAyJQAAMiYAADIoAAAyKgAAMisAADIsAAAyLgAAMi8AADJuAAAycAAAMnIAADJ0AAAydgAAMncAADJ4AAAyeQAAMnoAADJ8AAAyfgAAMn8AADKAAAAyggAAMoMAADKoAAAyzAAAMvMAADMXAAAzGQAAMxsAADMdAAAzHwAAMyEAADMjAAAzJAAAMyYAADMzAAAzQgAAM0QAADNGAAAzSAAAM0oAADNMAAAzTgAAM1AAADNfAAAzYQAAM2MAADNlAAAzZwAAM2kAADNrAAAzbQAAM28AADOPAAAzugAAM9QAADPtAAA0BwAANCcAADRKAAA0iQAANIsAADSNAAA0jwAANJEAADSSAAA0kwAANJQAADSVAAA0lwAANJkAADSaAAA0mwAANJ0AADSeAAA0oAAANN8AADThAAA04wAANOUAADTnAAA06AAANOkAADTqAAA06wAANO0AADTvAAA08AAANPEAADTzAAA09AAANTMAADU1AAA1NwAANTkAADU7AAA1PAAANT0AADU+AAA1PwAANUEAADVDAAA1RAAANUUAADVHAAA1SAAANYcAADWJAAA1iwAANY0AADWPAAA1kAAANZEAADWSAAA1kwAANZUAADWXAAA1mAAANZkAADWbAAA1nAAANZ8AADXeAAA14AAANeIAADXkAAA15gAANecAADXoAAA16QAANeoAADXsAAA17gAANe8AADXwAAA18gAANfMAADYyAAA2NAAANjYAADY4AAA2OgAANjsAADY8AAA2PQAANj4AADZAAAA2QgAANkMAADZEAAA2RgAANkcAADaGAAA2iAAANooAADaMAAA2jgAANo8AADaQAAA2kQAANpIAADaUAAA2lgAANpcAADaYAAA2mgAANpsAADakAAA2sgAANr8AADbNAAA22gAANu0AADcEAAA3FgAAN2EAADeEAAA3pAAAN8QAADfGAAA3yAAAN8oAADfMAAA3zgAAN88AADfQAAA30gAAN9MAADfVAAA31gAAN9gAADfaAAA32wAAN9wAADfeAAA33wAAN+QAADfxAAA39gAAN/gAADf6AAA3/wAAOAEAADgDAAA4BQAAOCoAADhOAAA4dQAAOJkAADibAAA4nQAAOJ8AADihAAA4owAAOKUAADimAAA4qAAAOLUAADjGAAA4yAAAOMoAADjMAAA4zgAAONAAADjSAAA41AAAONYAADjnAAA46QAAOOsAADjtAAA47wAAOPEAADjzAAA49QAAOPcAADj5AAA5OAAAOToAADk8AAA5PgAAOUAAADlBAAA5QgAAOUMAADlEAAA5RgAAOUgAADlJAAA5SgAAOUwAADlNAAA5jAAAOY4AADmQAAA5kgAAOZQAADmVAAA5lgAAOZcAADmYAAA5mgAAOZwAADmdAAA5ngAAOaAAADmhAAA54AAAOeIAADnkAAA55gAAOegAADnpAAA56gAAOesAADnsAAA57gAAOfAAADnxAAA58gAAOfQAADn1AAA6AgAAOgMAADoEAAA6BgAAOkUAADpHAAA6SQAAOksAADpNAAA6TgAAOk8AADpQAAA6UQAAOlMAADpVAAA6VgAAOlcAADpZAAA6WgAAOpkAADqbAAA6nQAAOp8AADqhAAA6ogAAOqMAADqkAAA6pQAAOqcAADqpAAA6qgAAOqsAADqtAAA6rgAAOu0AADrvAAA68QAAOvMAADr1AAA69gAAOvcAADr4AAA6+QAAOvsAADr9AAA6/gAAOv8AADsBAAA7AgAAO0EAADtDAAA7RQAAO0cAADtJAAA7SgAAO0sAADtMAAA7TQAAO08AADtRAAA7UgAAO1MAADtVAAA7VgAAO5UAADuXAAA7mQAAO5sAADudAAA7ngAAO58AADugAAA7oQAAO6MAADulAAA7pgAAO6cAADupAAA7qgAAO88AADvzAAA8GgAAPD4AADxAAAA8QgAAPEQAADxGAAA8SAAAPEoAADxLAAA8TQAAPFoAADxpAAA8awAAPG0AADxvAAA8cQAAPHMAADx1AAA8dwAAPIYAADyIAAA8igAAPIwAADyOAAA8kAAAPJIAADyUAAA8lgAAPNUAADzXAAA82QAAPNsAADzdAAA83gAAPN8AADzgAAA84QAAPOMAADzlAAA85gAAPOcAADzpAAA86gAAPSkAAD0rAAA9LQAAPS8AAD0xAAA9MgAAPTMAAD00AAA9NQAAPTcAAD05AAA9OgAAPTsAAD09AAA9PgAAPX0AAD1/AAA9gQAAPYMAAD2FAAA9hgAAPYcAAD2IAAA9iQAAPYsAAD2NAAA9jgAAPY8AAD2RAAA9kgAAPdEAAD3TAAA91QAAPdcAAD3ZAAA92gAAPdsAAD3cAAA93QAAPd8AAD3hAAA94gAAPeMAAD3lAAA95gAAPiUAAD4nAAA+KQAAPisAAD4tAAA+LgAAPi8AAD4wAAA+MQAAPjMAAD41AAA+NgAAPjcAAD45AAA+OgAAPnkAAD57AAA+fQAAPn8AAD6BAAA+ggAAPoMAAD6EAAA+hQAAPocAAD6JAAA+igAAPosAAD6NAAA+jgAAPs0AAD7PAAA+0QAAPtMAAD7VAAA+1gAAPtcAAD7YAAA+2QAAPtsAAD7dAAA+3gAAPt8AAD7hAAA+4gAAPusAAD7+AAA/CwAAPx4AAD8rAAA/PgAAP1UAAD9nAAA/sgAAP9UAAD/1AABAFQAAQBcAAEAZAABAGwAAQB0AAEAfAABAIAAAQCEAAEAjAABAJAAAQCYAAEAnAABAKQAAQCsAAEAsAABALQAAQC8AAEAwAABANQAAQEIAAEBHAABASQAAQEsAAEBQAABAUgAAQFQAAEBWAABAewAAQJ8AAEDGAABA6gAAQOwAAEDuAABA8AAAQPIAAED0AABA9gAAQPcAAED5AABBBgAAQRcAAEEZAABBGwAAQR0AAEEfAABBIQAAQSMAAEElAABBJwAAQTgAAEE6AABBPAAAQT4AAEFAAABBQgAAQUQAAEFGAABBSAAAQUoAAEGJAABBiwAAQY0AAEGPAABBkQAAQZIAAEGTAABBlAAAQZUAAEGXAABBmQAAQZoAAEGbAABBnQAAQZ4AAEHdAABB3wAAQeEAAEHjAABB5QAAQeYAAEHnAABB6AAAQekAAEHrAABB7QAAQe4AAEHvAABB8QAAQfIAAEIxAABCMwAAQjUAAEI3AABCOQAAQjoAAEI7AABCPAAAQj0AAEI/AABCQQAAQkIAAEJDAABCRQAAQkYAAEJTAABCVAAAQlUAAEJXAABClgAAQpgAAEKaAABCnAAAQp4AAEKfAABCoAAAQqEAAEKiAABCpAAAQqYAAEKnAABCqAAAQqoAAEKrAABC6gAAQuwAAELuAABC8AAAQvIAAELzAABC9AAAQvUAAEL2AABC+AAAQvoAAEL7AABC/AAAQv4AAEL/AABDPgAAQ0AAAENCAABDRAAAQ0YAAENHAABDSAAAQ0kAAENKAABDTAAAQ04AAENPAABDUAAAQ1IAAENTAABDkgAAQ5QAAEOWAABDmAAAQ5oAAEObAABDnAAAQ50AAEOeAABDoAAAQ6IAAEOjAABDpAAAQ6YAAEOnAABD5gAAQ+gAAEPqAABD7AAAQ+4AAEPvAABD8AAAQ/EAAEPyAABD9AAAQ/YAAEP3AABD+AAAQ/oAAEP7AABEIAAAREQAAERrAABEjwAARJEAAESTAABElQAARJcAAESZAABEmwAARJwAAESeAABEqwAARLoAAES8AABEvgAARMAAAETCAABExAAARMYAAETIAABE1wAARNkAAETbAABE3QAARN8AAETiAABE5QAAROgAAETqAABFKQAARSsAAEUtAABFLwAARTEAAEUyAABFMwAARTQAAEU1AABFNwAARTkAAEU6AABFOwAART0AAEU+AABFfQAARX8AAEWBAABFgwAARYUAAEWGAABFhwAARYgAAEWJAABFiwAARY0AAEWOAABFjwAARZEAAEWSAABF0QAARdMAAEXVAABF1wAARdkAAEXaAABF2wAARdwAAEXdAABF3wAAReEAAEXiAABF4wAAReUAAEXmAABGJQAARicAAEYpAABGKwAARi0AAEYuAABGLwAARjAAAEYxAABGMwAARjUAAEY2AABGNwAARjkAAEY6AABGfQAARqEAAEbFAABG6AAARw8AAEcvAABHVgAAR30AAEedAABHwQAAR+UAAEfnAABH6QAAR+sAAEftAABH7wAAR/EAAEf0AABH9gAAR/gAAEf7AABH/QAAR/8AAEgCAABIBAAASAUAAEgKAABIFwAASBoAAEgcAABIHwAASCEAAEgjAABISAAASGwAAEiTAABItwAASLkAAEi7AABIvQAASL8AAEjBAABIwwAASMQAAEjGAABI0wAASOYAAEjoAABI6gAASOwAAEjuAABI8AAASPIAAEj0AABI9gAASPgAAEkLAABJDQAASQ8AAEkRAABJEwAASRUAAEkXAABJGQAASRsAAEkdAABJHwAASV4AAElgAABJYgAASWQAAElmAABJZwAASWgAAElpAABJagAASWwAAEluAABJbwAASXAAAElyAABJcwAASXwAAEl9AABJfwAASb4AAEnAAABJwgAAScQAAEnGAABJxwAAScgAAEnJAABJygAAScwAAEnOAABJzwAASdAAAEnSAABJ0wAAShIAAEoUAABKFgAAShgAAEoaAABKGwAAShwAAEodAABKHgAASiAAAEoiAABKIwAASiQAAEomAABKJwAASjAAAEoxAABKMwAASnIAAEp0AABKdgAASngAAEp6AABKewAASnwAAEp9AABKfgAASoAAAEqCAABKgwAASoQAAEqGAABKhwAASsYAAErIAABKygAASswAAErOAABKzwAAStAAAErRAABK0gAAStQAAErWAABK1wAAStgAAEraAABK2wAASuQAAErlAABK5wAASyYAAEsoAABLKgAASywAAEsuAABLLwAASzAAAEsxAABLMgAASzQAAEs2AABLNwAASzgAAEs6AABLOwAAS3oAAEt8AABLfgAAS4AAAEuCAABLgwAAS4QAAEuFAABLhgAAS4gAAEuKAABLiwAAS4wAAEuOAABLjwAAS5wAAEudAABLngAAS6AAAEvfAABL4QAAS+MAAEvlAABL5wAAS+gAAEvpAABL6gAAS+sAAEvtAABL7wAAS/AAAEvxAABL8wAAS/QAAEwzAABMNQAATDcAAEw5AABMOwAATDwAAEw9AABMPgAATD8AAExBAABMQwAATEQAAExFAABMRwAATEgAAExVAABMXgAATGAAAExiAABMZAAATGYAAExvAABMcQAATHQAAEx3AABMegAATHwAAEyLAABMnQAATKoAAEz1AABNGAAATTgAAE1YAABNWgAATVwAAE1eAABNYAAATWIAAE1jAABNZAAATWYAAE1nAABNaQAATWoAAE1sAABNbgAATW8AAE1wAABNcgAATXMAAE14AABNhQAATYoAAE2MAABNjgAATZMAAE2VAABNlwAATZkAAE2+AABN4gAATgkAAE4tAABOLwAATjEAAE4zAABONQAATjcAAE45AABOOgAATjwAAE5JAABOWgAATlwAAE5eAABOYAAATmIAAE5kAABOZgAATmgAAE5qAABOewAATn0AAE5/AABOgQAAToMAAE6FAABOhwAATokAAE6LAABOjQAATswAAE7OAABO0AAATtIAAE7UAABO1QAATtYAAE7XAABO2AAATtoAAE7cAABO3QAATt4AAE7gAABO4QAATyAAAE8iAABPJAAATyYAAE8oAABPKQAATyoAAE8rAABPLAAATy4AAE8wAABPMQAATzIAAE80AABPNQAAT3QAAE92AABPeAAAT3oAAE98AABPfQAAT34AAE9/AABPgAAAT4IAAE+EAABPhQAAT4YAAE+IAABPiQAAT5YAAE+XAABPmAAAT5oAAE/ZAABP2wAAT90AAE/fAABP4QAAT+IAAE/jAABP5AAAT+UAAE/nAABP6QAAT+oAAE/rAABP7QAAT+4AAFAtAABQLwAAUDEAAFAzAABQNQAAUDYAAFA3AABQOAAAUDkAAFA7AABQPQAAUD4AAFA/AABQQQAAUEIAAFCBAABQgwAAUIUAAFCHAABQiQAAUIoAAFCLAABQjAAAUI0AAFCPAABQkQAAUJIAAFCTAABQlQAAUJYAAFDVAABQ1wAAUNkAAFDbAABQ3QAAUN4AAFDfAABQ4AAAUOEAAFDjAABQ5QAAUOYAAFDnAABQ6QAAUOoAAFEpAABRKwAAUS0AAFEvAABRMQAAUTIAAFEzAABRNAAAUTUAAFE3AABROQAAUToAAFE7AABRPQAAUT4AAFFjAABRhwAAUa4AAFHSAABR1AAAUdYAAFHYAABR2gAAUdwAAFHeAABR3wAAUeEAAFHuAABR/QAAUf8AAFIBAABSAwAAUgUAAFIHAABSCQAAUgsAAFIaAABSHAAAUh4AAFIgAABSIgAAUiUAAFIoAABSKwAAUi0AAFJsAABSbgAAUnAAAFJyAABSdAAAUnUAAFJ2AABSdwAAUngAAFJ6AABSfAAAUn0AAFJ+AABSgAAAUoEAAFLAAABSwgAAUsQAAFLGAABSyAAAUskAAFLKAABSywAAUswAAFLOAABS0AAAUtEAAFLSAABS1AAAUtUAAFMUAABTFgAAUxgAAFMaAABTHAAAUx0AAFMeAABTHwAAUyAAAFMiAABTJAAAUyUAAFMmAABTKAAAUykAAFNoAABTagAAU2wAAFNuAABTcAAAU3EAAFNyAABTcwAAU3QAAFN2AABTeAAAU3kAAFN6AABTfAAAU30AAFO8AABTvgAAU8AAAFPCAABTxAAAU8UAAFPGAABTxwAAU8gAAFPKAABTzAAAU80AAFPOAABT0AAAU9EAAFQQAABUEgAAVBQAAFQWAABUGAAAVBkAAFQaAABUGwAAVBwAAFQeAABUIAAAVCEAAFQiAABUJAAAVCUAAFRkAABUZgAAVGkAAFRrAABUbQAAVG4AAFRvAABUcAAAVHEAAFRzAABUdQAAVHYAAFR3AABUeQAAVHoAAFTFAABU6AAAVQgAAFUoAABVKgAAVSwAAFUuAABVMAAAVTIAAFUzAABVNAAAVTcAAFU4AABVOgAAVTsAAFU9AABVPwAAVUAAAFVBAABVRAAAVUUAAFVKAABVVwAAVVwAAFVeAABVYAAAVWUAAFVoAABVawAAVW0AAFWSAABVtgAAVd0AAFYBAABWBAAAVgYAAFYIAABWCgAAVgwAAFYOAABWDwAAVhIAAFYfAABWMAAAVjIAAFY0AABWNgAAVjgAAFY6AABWPAAAVj4AAFZAAABWUQAAVlQAAFZXAABWWgAAVl0AAFZgAABWYwAAVmYAAFZpAABWawAAVqoAAFasAABWrgAAVrAAAFazAABWtAAAVrUAAFa2AABWtwAAVrkAAFa7AABWvAAAVr0AAFa/AABWwAAAVv8AAFcBAABXAwAAVwUAAFcIAABXCQAAVwoAAFcLAABXDAAAVw4AAFcQAABXEQAAVxIAAFcUAABXFQAAV1QAAFdWAABXWQAAV1sAAFdeAABXXwAAV2AAAFdhAABXYgAAV2QAAFdmAABXZwAAV2gAAFdqAABXawAAV3gAAFd5AABXegAAV3wAAFe7AABXvQAAV78AAFfBAABXxAAAV8UAAFfGAABXxwAAV8gAAFfKAABXzAAAV80AAFfOAABX0AAAV9EAAFgQAABYEgAAWBQAAFgWAABYGQAAWBoAAFgbAABYHAAAWB0AAFgfAABYIQAAWCIAAFgjAABYJQAAWCYAAFhlAABYZwAAWGkAAFhrAABYbgAAWG8AAFhwAABYcQAAWHIAAFh0AABYdgAAWHcAAFh4AABYegAAWHsAAFi6AABYvAAAWL4AAFjAAABYwwAAWMQAAFjFAABYxgAAWMcAAFjJAABYywAAWMwAAFjNAABYzwAAWNAAAFkPAABZEQAAWRMAAFkVAABZGAAAWRkAAFkaAABZGwAAWRwAAFkeAABZIAAAWSEAAFkiAABZJAAAWSUAAFlKAABZbgAAWZUAAFm5AABZvAAAWb4AAFnAAABZwgAAWcQAAFnGAABZxwAAWcoAAFnXAABZ5gAAWegAAFnqAABZ7AAAWe4AAFnwAABZ8gAAWfQAAFoDAABaBgAAWgkAAFoMAABaDwAAWhIAAFoVAABaGAAAWhoAAFpZAABaWwAAWl0AAFpfAABaYgAAWmMAAFpkAABaZQAAWmYAAFpoAABaagAAWmsAAFpsAABabgAAWm8AAFquAABasAAAWrIAAFq0AABatwAAWrgAAFq5AABaugAAWrsAAFq9AABavwAAWsAAAFrBAABawwAAWsQAAFsDAABbBQAAWwcAAFsJAABbDAAAWw0AAFsOAABbDwAAWxAAAFsSAABbFAAAWxUAAFsWAABbGAAAWxkAAFtYAABbWgAAW1wAAFteAABbYQAAW2IAAFtjAABbZAAAW2UAAFtnAABbaQAAW2oAAFtrAABbbQAAW24AAFutAABbrwAAW7EAAFuzAABbtgAAW7cAAFu4AABbuQAAW7oAAFu8AABbvgAAW78AAFvAAABbwgAAW8MAAFwCAABcBAAAXAYAAFwIAABcCwAAXAwAAFwNAABcDgAAXA8AAFwRAABcEwAAXBQAAFwVAABcFwAAXBgAAFxXAABcWQAAXFsAAFxdAABcYAAAXGEAAFxiAABcYwAAXGQAAFxmAABcaAAAXGkAAFxqAABcbAAAXG0AAFy4AABc2wAAXPsAAF0bAABdHQAAXR8AAF0hAABdIwAAXSUAAF0mAABdJwAAXSoAAF0rAABdLQAAXS4AAF0wAABdMgAAXTMAAF00AABdNwAAXTgAAF09AABdSgAAXU8AAF1RAABdUwAAXVgAAF1bAABdXgAAXWAAAF2FAABdqQAAXdAAAF30AABd9wAAXfkAAF37AABd/QAAXf8AAF4BAABeAgAAXgUAAF4SAABeIwAAXiUAAF4nAABeKQAAXisAAF4tAABeLwAAXjEAAF4zAABeRAAAXkcAAF5KAABeTQAAXlAAAF5TAABeVgAAXlkAAF5cAABeXgAAXp0AAF6fAABeoQAAXqMAAF6mAABepwAAXqgAAF6pAABeqgAAXqwAAF6uAABerwAAXrAAAF6yAABeswAAXvIAAF70AABe9gAAXvgAAF77AABe/AAAXv0AAF7+AABe/wAAXwEAAF8DAABfBAAAXwUAAF8HAABfCAAAX0cAAF9JAABfTAAAX04AAF9RAABfUgAAX1MAAF9UAABfVQAAX1cAAF9ZAABfWgAAX1sAAF9dAABfXgAAX2sAAF9sAABfbQAAX28AAF+uAABfsAAAX7IAAF+0AABftwAAX7gAAF+5AABfugAAX7sAAF+9AABfvwAAX8AAAF/BAABfwwAAX8QAAGADAABgBQAAYAcAAGAJAABgDAAAYA0AAGAOAABgDwAAYBAAAGASAABgFAAAYBUAAGAWAABgGAAAYBkAAGBYAABgWgAAYFwAAGBeAABgYQAAYGIAAGBjAABgZAAAYGUAAGBnAABgaQAAYGoAAGBrAABgbQAAYG4AAGCtAABgrwAAYLEAAGCzAABgtgAAYLcAAGC4AABguQAAYLoAAGC8AABgvgAAYL8AAGDAAABgwgAAYMMAAGECAABhBAAAYQYAAGEIAABhCwAAYQwAAGENAABhDgAAYQ8AAGERAABhEwAAYRQAAGEVAABhFwAAYRgAAGE9AABhYQAAYYgAAGGsAABhrwAAYbEAAGGzAABhtQAAYbcAAGG5AABhugAAYb0AAGHKAABh2QAAYdsAAGHdAABh3wAAYeEAAGHjAABh5QAAYecAAGH2AABh+QAAYfwAAGH/AABiAgAAYgUAAGIIAABiCwAAYg0AAGJMAABiTgAAYlAAAGJSAABiVQAAYlYAAGJXAABiWAAAYlkAAGJbAABiXQAAYl4AAGJfAABiYQAAYmIAAGKhAABiowAAYqUAAGKnAABiqgAAYqsAAGKsAABirQAAYq4AAGKwAABisgAAYrMAAGK0AABitgAAYrcAAGL2AABi+AAAYvoAAGL8AABi/wAAYwAAAGMBAABjAgAAYwMAAGMFAABjBwAAYwgAAGMJAABjCwAAYwwAAGNLAABjTQAAY08AAGNRAABjVAAAY1UAAGNWAABjVwAAY1gAAGNaAABjXAAAY10AAGNeAABjYAAAY2EAAGOgAABjogAAY6QAAGOmAABjqQAAY6oAAGOrAABjrAAAY60AAGOvAABjsQAAY7IAAGOzAABjtQAAY7YAAGP1AABj9wAAY/kAAGP7AABj/gAAY/8AAGQAAABkAQAAZAIAAGQEAABkBgAAZAcAAGQIAABkCgAAZAsAAGRKAABkTAAAZE4AAGRQAABkUwAAZFQAAGRVAABkVgAAZFcAAGRZAABkWwAAZFwAAGRdAABkXwAAZGAAAGSrAABkzgAAZO4AAGUOAABlEAAAZRIAAGUUAABlFgAAZRgAAGUZAABlGgAAZR0AAGUeAABlIAAAZSEAAGUjAABlJQAAZSYAAGUnAABlKgAAZSsAAGUwAABlPQAAZUIAAGVEAABlRgAAZUsAAGVOAABlUQAAZVMAAGV4AABlnAAAZcMAAGXnAABl6gAAZewAAGXuAABl8AAAZfIAAGX0AABl9QAAZfgAAGYFAABmFgAAZhgAAGYaAABmHAAAZh4AAGYgAABmIgAAZiQAAGYmAABmNwAAZjoAAGY9AABmQAAAZkMAAGZGAABmSQAAZkwAAGZPAABmUQAAZpAAAGaSAABmlAAAZpYAAGaZAABmmgAAZpsAAGacAABmnQAAZp8AAGahAABmogAAZqMAAGalAABmpgAAZuUAAGbnAABm6QAAZusAAGbuAABm7wAAZvAAAGbxAABm8gAAZvQAAGb2AABm9wAAZvgAAGb6AABm+wAAZzoAAGc8AABnPwAAZ0EAAGdEAABnRQAAZ0YAAGdHAABnSAAAZ0oAAGdMAABnTQAAZ04AAGdQAABnUQAAZ14AAGdfAABnYAAAZ2IAAGehAABnowAAZ6UAAGenAABnqgAAZ6sAAGesAABnrQAAZ64AAGewAABnsgAAZ7MAAGe0AABntgAAZ7cAAGf2AABn+AAAZ/oAAGf8AABn/wAAaAAAAGgBAABoAgAAaAMAAGgFAABoBwAAaAgAAGgJAABoCwAAaAwAAGhLAABoTQAAaE8AAGhRAABoVAAAaFUAAGhWAABoVwAAaFgAAGhaAABoXAAAaF0AAGheAABoYAAAaGEAAGigAABoogAAaKQAAGimAABoqQAAaKoAAGirAABorAAAaK0AAGivAABosQAAaLIAAGizAABotQAAaLYAAGj1AABo9wAAaPkAAGj7AABo/gAAaP8AAGkAAABpAQAAaQIAAGkEAABpBgAAaQcAAGkIAABpCgAAaQsAAGkwAABpVAAAaXsAAGmfAABpogAAaaQAAGmmAABpqAAAaaoAAGmsAABprQAAabAAAGm9AABpzAAAac4AAGnQAABp0gAAadQAAGnWAABp2AAAadoAAGnpAABp7AAAae8AAGnyAABp9QAAafgAAGn7AABp/gAAagAAAGo/AABqQQAAakMAAGpFAABqSAAAakkAAGpKAABqSwAAakwAAGpOAABqUAAAalEAAGpSAABqVAAAalUAAGqUAABqlgAAapgAAGqaAABqnQAAap4AAGqfAABqoAAAaqEAAGqjAABqpQAAaqYAAGqnAABqqQAAaqoAAGrpAABq6wAAau0AAGrvAABq8gAAavMAAGr0AABq9QAAavYAAGr4AABq+gAAavsAAGr8AABq/gAAav8AAGs+AABrQAAAa0MAAGtFAABrSAAAa0kAAGtKAABrSwAAa0wAAGtOAABrUAAAa1EAAGtSAABrVAAAa1UAAGuYAABrvAAAa+AAAGwDAABsKgAAbEoAAGxxAABsmAAAbLgAAGzcAABtAAAAbQIAAG0FAABtBwAAbQkAAG0LAABtDgAAbREAAG0TAABtFQAAbRgAAG0aAABtHAAAbR8AAG0iAABtIwAAbSgAAG01AABtOAAAbToAAG09AABtQAAAbUIAAG1nAABtiwAAbbIAAG3WAABt2QAAbdsAAG3dAABt3wAAbeEAAG3jAABt5AAAbecAAG30AABuBwAAbgkAAG4LAABuDQAAbg8AAG4RAABuEwAAbhUAAG4XAABuGQAAbiwAAG4vAABuMgAAbjUAAG44AABuOwAAbj4AAG5BAABuRAAAbkcAAG5JAABuiAAAbooAAG6NAABujwAAbpIAAG6TAABulAAAbpUAAG6WAABumAAAbpoAAG6bAABunAAAbp4AAG6fAABuqAAAbqkAAG6rAABu6gAAbuwAAG7vAABu8QAAbvQAAG71AABu9gAAbvcAAG74AABu+gAAbvwAAG79AABu/gAAbwAAAG8BAABvDwAAb04AAG9QAABvUwAAb1UAAG9YAABvWQAAb1oAAG9bAABvXAAAb14AAG9gAABvYQAAb2IAAG9kAABvZQAAb24AAG9vAABvcQAAb7AAAG+yAABvtAAAb7YAAG+5AABvugAAb7sAAG+8AABvvQAAb78AAG/BAABvwgAAb8MAAG/FAABvxgAAcAUAAHAHAABwCgAAcAwAAHAPAABwEAAAcBEAAHASAABwEwAAcBUAAHAXAABwGAAAcBkAAHAbAABwHAAAcCUAAHAmAABwKAAAcGcAAHB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pAACIaAAAiGoAAIhsAACIbgAAiHEAAIhyAACIcwAAiHQAAIh1AACIdwAAiHkAAIh6AACIewAAiH0AAIh+AACIvQAAiL8AAIjBAACIwwAAiMYAAIjHAACIyAAAiMkAAIjKAACIzAAAiM4AAIjPAACI0AAAiNIAAIjTAACJEgAAiRQAAIkWAACJGAAAiRsAAIkcAACJHQAAiR4AAIkfAACJIQAAiSMAAIkkAACJJQAAiScAAIkoAACJZwAAiWkAAIlrAACJbQAAiXAAAIlxAACJcgAAiXMAAIl0AACJdgAAiXgAAIl5AACJegAAiXwAAIl9AACJvAAAib4AAInAAACJwgAAicUAAInGAACJxwAAicgAAInJAACJywAAic0AAInOAACJzwAAidEAAInSAACJ9wAAihsAAIpCAACKZgAAimkAAIprAACKbQAAim8AAIpxAACKcwAAinQAAIp3AACKhAAAipMAAIqVAACKlwAAipkAAIqbAACKnQAAip8AAIqhAACKsAAAirMAAIq2AACKuQAAirwAAIq/AACKwgAAisUAAIrHAACLBgAAiwgAAIsKAACLDAAAiw8AAIsQAACLEQAAixIAAIsTAACLFQAAixcAAIsYAACLGQAAixsAAIscAACLWwAAi10AAItfAACLYQAAi2QAAItlAACLZgAAi2cAAItoAACLagAAi2wAAIttAACLbgAAi3AAAItxAACLsAAAi7IAAIu0AACLtgAAi7kAAIu6AACLuwAAi7wAAIu9AACLvwAAi8EAAIvCAACLwwAAi8UAAIvGAACMBQAAjAcAAIwKAACMDAAAjA8AAIwQAACMEQAAjBIAAIwTAACMFQAAjBcAAIwYAACMGQAAjBsAAIwcAACMWwAAjF0AAIxfAACMYQAAjGQAAIxlAACMZgAAjGcAAIxoAACMagAAjGwAAIxtAACMbgAAjHAAAIxxAACMsAAAjLIAAIy0AACMtgAAjLkAAIy6AACMuwAAjLwAAIy9AACMvwAAjMEAAIzCAACMwwAAjMUAAIzGAACNBQAAjQcAAI0JAACNCwAAjQ4AAI0PAACNEAAAjREAAI0SAACNFAAAjRYAAI0XAACNGAAAjRoAAI0bAACNZgAAjYkAAI2pAACNyQAAjcsAAI3NAACNzwAAjdEAAI3UAACN1QAAjdYAAI3ZAACN2gAAjdwAAI3dAACN3wAAjeIAAI3jAACN5AAAjecAAI3oAACN7QAAjfoAAI3/AACOAQAAjgMAAI4IAACOCwAAjg4AAI4QAACONQAAjlkAAI6AAACOpAAAjqcAAI6pAACOqwAAjq0AAI6vAACOsQAAjrIAAI61AACOwgAAjtMAAI7VAACO1wAAjtkAAI7bAACO3QAAjt8AAI7hAACO4wAAjvQAAI73AACO+gAAjv0AAI8AAACPAwAAjwYAAI8JAACPDAAAjw4AAI9NAACPTwAAj1EAAI9TAACPVgAAj1cAAI9YAACPWQAAj1oAAI9cAACPXgAAj18AAI9gAACPYgAAj2MAAI+iAACPpAAAj6YAAI+oAACPqwAAj6wAAI+tAACPrgAAj68AAI+xAACPswAAj7QAAI+1AACPtwAAj7gAAI/3AACP+QAAj/wAAI/+AACQAQAAkAIAAJADAACQBAAAkAUAAJAHAACQCQAAkAoAAJALAACQDQAAkA4AAJAbAACQHAAAkB0AAJAfAACQXgAAkGAAAJBiAACQZAAAkGcAAJBoAACQaQAAkGoAAJBrAACQbQAAkG8AAJBwAACQcQAAkHMAAJB0AACQswAAkLUAAJC3AACQuQAAkLwAAJC9AACQvgAAkL8AAJDAAACQwgAAkMQAAJDFAACQxgAAkMgAAJDJAACRCAAAkQoAAJEMAACRDgAAkREAAJESAACREwAAkRQAAJEVAACRFwAAkRkAAJEaAACRGwAAkR0AAJEeAACRXQAAkV8AAJFiAACRZAAAkWcAAJFoAACRaQAAkWoAAJFrAACRbQAAkW8AAJFwAACRcQAAkXMAAJF0AACRigAAkckAAJHLAACRzQAAkc8AAJHSAACR0wAAkdQAAJHVAACR1gAAkdgAAJHaAACR2wAAkdwAAJHeAACR3wAAkgQAAJIoAACSTwAAknMAAJJ2AACSeAAAknoAAJJ8AACSfgAAkoAAAJKBAACShAAAkpEAAJKgAACSogAAkqQAAJKmAACSqAAAkqoAAJKsAACSrgAAkr0AAJLAAACSwwAAksYAAJLJAACSzAAAks8AAJLSAACS1AAAkxMAAJMVAACTFwAAkxkAAJMcAACTHQAAkx4AAJMfAACTIAAAkyIAAJMkAACTJQAAkyYAAJMoAACTKQAAk2gAAJNqAACTbAAAk24AAJNxAACTcgAAk3MAAJN0AACTdQAAk3cAAJN5AACTegAAk3sAAJN9AACTfgAAk70AAJO/AACTwQAAk8MAAJPGAACTxwAAk8gAAJPJAACTygAAk8wAAJPOAACTzwAAk9AAAJPSAACT0wAAlBIAAJQUAACUFwAAlBkAAJQcAACUHQAAlB4AAJQfAACUIAAAlCIAAJQkAACUJQAAlCYAAJQoAACUKQAAlGgAAJRqAACUbAAAlG4AAJRxAACUcgAAlHMAAJR0AACUdQAAlHcAAJR5AACUegAAlHsAAJR9AACUfgAAlL0AAJS/AACUwQAAlMMAAJTGAACUxwAAlMgAAJTJAACUygAAlMwAAJTOAACUzwAAlNAAAJTSAACU0wAAlRIAAJUUAACVFgAAlRgAAJUbAACVHAAAlR0AAJUeAACVHwAAlSEAAJUjAACVJAAAlSUAAJUnAACVKAAAlXMAAJWWAACVtgAAldYAAJXYAACV2gAAldwAAJXeAACV4QAAleIAAJXjAACV5gAAlecAAJXpAACV6gAAlewAAJXvAACV8AAAlfEAAJX0AACV9QAAlfoAAJYHAACWDAAAlg4AAJYQAACWFQAAlhgAAJYbAACWHQAAlkIAAJZmAACWjQAAlrEAAJa0AACWtgAAlrgAAJa6AACWvAAAlr4AAJa/AACWwgAAls8AAJbgAACW4gAAluQAAJbmAACW6AAAluoAAJbsAACW7gAAlvAAAJcBAACXBAAAlwcAAJcKAACXDQAAlxAAAJcTAACXFgAAlxkAAJcbAACXWgAAl1wAAJdeAACXYAAAl2MAAJdkAACXZQAAl2YAAJdnAACXaQAAl2sAAJdsAACXbQAAl28AAJdwAACXrwAAl7EAAJezAACXtQAAl7gAAJe5AACXugAAl7sAAJe8AACXvgAAl8AAAJfBAACXwgAAl8QAAJfFAACYBAAAmAYAAJgJAACYCwAAmA4AAJgPAACYEAAAmBEAAJgSAACYFAAAmBYAAJgXAACYGAAAmBoAAJgbAACYKAAAmCkAAJgqAACYLAAAmGsAAJhtAACYbwAAmHEAAJh0AACYdQAAmHYAAJh3AACYeAAAmHoAAJh8AACYfQAAmH4AAJiAAACYgQAAmMAAAJjCAACYxAAAmMYAAJjJAACYygAAmMsAAJjMAACYzQAAmM8AAJjRAACY0gAAmNMAAJjVAACY1gAAmRUAAJkXAACZGQAAmRsAAJkeAACZHwAAmSAAAJkhAACZIgAAmSQAAJkmAACZJwAAmSgAAJkqAACZKwAAmWoAAJlsAACZbgAAmXAAAJlzAACZdAAAmXUAAJl2AACZdwAAmXkAAJl7AACZfAAAmX0AAJl/AACZgAAAmb8AAJnBAACZwwAAmcUAAJnIAACZyQAAmcoAAJnLAACZzAAAmc4AAJnQAACZ0QAAmdIAAJnUAACZ1QAAmfoAAJoeAACaRQAAmmkAAJpsAACabgAAmnAAAJpyAACadAAAmnYAAJp3AACaegAAmocAAJqWAACamAAAmpoAAJqcAACangAAmqAAAJqiAACapAAAmrMAAJq2AACauQAAmrwAAJq/AACawgAAmsUAAJrIAACaygAAmwkAAJsLAACbDQAAmw8AAJsSAACbEwAAmxQAAJsVAACbFgAAmxgAAJsaAACbGwAAmxwAAJseAACbHwAAm14AAJtgAACbYgAAm2QAAJtnAACbaAAAm2kAAJtqAACbawAAm20AAJtvAACbcAAAm3EAAJtzAACbdAAAm7MAAJu1AACbtwAAm7kAAJu8AACbvQAAm74AAJu/AACbwAAAm8IAAJvEAACbxQAAm8YAAJvIAACbyQAAnAgAAJwKAACcDQAAnA8AAJwSAACcEwAAnBQAAJwVAACcFgAAnBgAAJwaAACcGwAAnBwAAJweAACcHwAAnF4AAJxgAACcYgAAnGQAAJxnAACcaAAAnGkAAJxqAACcawAAnG0AAJxvAACccAAAnHEAAJxzAACcdAAAnLMAAJy1AACctwAAnLkAAJy8AACcvQAAnL4AAJy/AACcwAAAnMIAAJzEAACcxQAAnMYAAJzIAACcyQAAnQgAAJ0KAACdDAAAnQ4AAJ0RAACdEgAAnRMAAJ0UAACdFQAAnRcAAJ0ZAACdGgAAnRsAAJ0dAACdHgAAnWkAAJ2MAACdrAAAncwAAJ3OAACd0AAAndIAAJ3UAACd1wAAndgAAJ3ZAACd3AAAnd0AAJ3fAACd4AAAneIAAJ3lAACd5gAAnecAAJ3qAACd6wAAnfAAAJ39AACeAgAAngQAAJ4GAACeCwAAng4AAJ4RAACeEwAAnjgAAJ5cAACegwAAnqcAAJ6qAACerAAAnq4AAJ6wAACesgAAnrQAAJ61AACeuAAAnsUAAJ7WAACe2AAAntoAAJ7cAACe3gAAnuAAAJ7iAACe5AAAnuYAAJ73AACe+gAAnv0AAJ8AAACfAwAAnwYAAJ8JAACfDAAAnw8AAJ8RAACfUAAAn1IAAJ9UAACfVgAAn1kAAJ9aAACfWwAAn1wAAJ9dAACfXwAAn2EAAJ9iAACfYwAAn2UAAJ9mAACfpQAAn6cAAJ+pAACfqwAAn64AAJ+vAACfsAAAn7EAAJ+yAACftAAAn7YAAJ+3AACfuAAAn7oAAJ+7AACf+gAAn/wAAJ//AACgAQAAoAQAAKAFAACgBgAAoAcAAKAIAACgCgAAoAwAAKANAACgDgAAoBAAAKARAACgHgAAoB8AAKAgAACgIgAAoGEAAKBjAACgZQAAoGcAAKBqAACgawAAoGwAAKBtAACgbgAAoHAAAKByAACgcwAAoHQAAKB2AACgdwAAoLYAAKC4AACgugAAoLwAAKC/AACgwAAAoMEAAKDCAACgwwAAoMUAAKDHAACgyAAAoMkAAKDLAACgzAAAoQsAAKENAAChDwAAoREAAKEUAAChFQAAoRYAAKEXAAChGAAAoRoAAKEcAAChHQAAoR4AAKEgAAChIQAAoWAAAKFiAAChZAAAoWYAAKFpAAChagAAoWsAAKFsAAChbQAAoW8AAKFxAAChcgAAoXMAAKF1AAChdgAAobUAAKG3AAChuQAAobsAAKG+AAChvwAAocAAAKHBAAChwgAAocQAAKHGAAChxwAAocgAAKHKAAChywAAofAAAKIUAACiOwAAol8AAKJiAACiZAAAomYAAKJoAACiagAAomwAAKJtAACicAAAon0AAKKMAACijgAAopAAAKKSAACilAAAopYAAKKYAACimgAAoqkAAKKsAACirwAAorIAAKK1AACiuAAAorsAAKK+AACiwAAAov8AAKMBAACjAwAAowUAAKMIAACjCQAAowoAAKMLAACjDAAAow4AAKMQAACjEQAAoxIAAKMUAACjFQAAo1QAAKNWAACjWAAAo1oAAKNdAACjXgAAo18AAKNgAACjYQAAo2MAAKNlAACjZgAAo2cAAKNpAACjagAAo6kAAKOrAACjrQAAo68AAKOyAACjswAAo7QAAKO1AACjtgAAo7gAAKO6AACjuwAAo7wAAKO+AACjvwAAo/4AAKQAAACkAwAApAUAAKQIAACkCQAApAoAAKQLAACkDAAApA4AAKQQAACkEQAApBIAAKQUAACkFQAApFQAAKRWAACkWAAApFoAAKRdAACkXgAApF8AAKRgAACkYQAApGMAAKRlAACkZgAApGcAAKRpAACkagAApKkAAKSrAACkrQAApK8AAKSyAACkswAApLQAAKS1AACktgAApLgAAKS6AACkuwAApLwAAKS+AACkvwAApP4AAKUAAAClAgAApQQAAKUHAAClCAAApQkAAKUKAAClCwAApQ0AAKUPAAClEAAApREAAKUTAAClFAAApV8AAKWCAAClogAApcIAAKXEAAClxgAApcgAAKXKAAClzQAApc4AAKXPAACl0gAApdMAAKXVAACl1gAApdgAAKXbAACl3AAApd0AAKXgAACl4QAApeYAAKXzAACl+AAApfoAAKX8AACmAQAApgQAAKYHAACmCQAApi4AAKZSAACmeQAApp0AAKagAACmogAApqQAAKamAACmqAAApqoAAKarAACmrgAAprsAAKbMAACmzgAAptAAAKbSAACm1AAAptYAAKbYAACm2gAAptwAAKbtAACm8AAApvMAAKb2AACm+QAApvwAAKb/AACnAgAApwUAAKcHAACnRgAAp0gAAKdKAACnTAAAp08AAKdQAACnUQAAp1IAAKdTAACnVQAAp1cAAKdYAACnWQAAp1sAAKdcAACnmwAAp50AAKefAACnoQAAp6QAAKelAACnpgAAp6cAAKeoAACnqgAAp6wAAKetAACnrgAAp7AAAKexAACn8AAAp/IAAKf1AACn9wAAp/oAAKf7AACn/AAAp/0AAKf+AACoAAAAqAIAAKgDAACoBAAAqAYAAKgHAACoFAAAqBUAAKgWAACoGAAAqFcAAKhZAACoWwAAqF0AAKhgAACoYQAAqGIAAKhjAACoZAAAqGYAAKhoAACoaQAAqGoAAKhsAACobQAAqKwAAKiuAACosAAAqLIAAKi1AACotgAAqLcAAKi4AACouQAAqLsAAKi9AACovgAAqL8AAKjBAACowgAAqQEAAKkDAACpBQAAqQcAAKkKAACpCwAAqQwAAKkNAACpDgAAqRAAAKkSAACpEwAAqRQAAKkWAACpFwAAqVYAAKlYAACpWgAAqVwAAKlfAACpYAAAqWEAAKliAACpYwAAqWUAAKlnAACpaAAAqWkAAKlrAACpbAAAqasAAKmtAACprwAAqbEAAKm0AACptQAAqbYAAKm3AACpuAAAqboAAKm8AACpvQAAqb4AAKnAAACpwQAAqeYAAKoKAACqMQAAqlUAAKpYAACqWgAAqlwAAKpeAACqYAAAqmIAAKpjAACqZgAAqnMAAKqCAACqhAAAqoYAAKqIAACqigAAqowAAKqOAACqkAAAqp8AAKqiAACqpQAAqqgAAKqrAACqrgAAqrEAAKq0AACqtgAAqvUAAKr3AACq+QAAqvsAAKr+AACq/wAAqwAAAKsBAACrAgAAqwQAAKsGAACrBwAAqwgAAKsKAACrCwAAq0oAAKtMAACrTgAAq1AAAKtTAACrVAAAq1UAAKtWAACrVwAAq1kAAKtbAACrXAAAq10AAKtfAACrYAAAq58AAKuhAACrowAAq6UAAKuoAACrqQAAq6oAAKurAACrrAAAq64AAKuwAACrsQAAq7IAAKu0AACrtQAAq/QAAKv2AACr+QAAq/sAAKv+AACr/wAArAAAAKwBAACsAgAArAQAAKwGAACsBwAArAgAAKwKAACsCwAArEoAAKxMAACsTgAArFAAAKxTAACsVAAArFUAAKxWAACsVwAArFkAAKxbAACsXAAArF0AAKxfAACsYAAArJ8AAKyhAACsowAArKUAAKyoAACsqQAArKoAAKyrAACsrAAArK4AAKywAACssQAArLIAAKy0AACstQAArPQAAKz2AACs+AAArPoAAKz9AACs/gAArP8AAK0AAACtAQAArQMAAK0FAACtBgAArQcAAK0JAACtCgAArVUAAK14AACtmAAArbgAAK26AACtvAAArb4AAK3AAACtwwAArcQAAK3FAACtyAAArckAAK3LAACtzAAArc4AAK3RAACt0gAArdMAAK3WAACt1wAArdwAAK3pAACt7gAArfAAAK3yAACt9wAArfoAAK39AACt/wAAriQAAK5IAACubwAArpMAAK6WAACumAAArpoAAK6cAACungAArqAAAK6hAACupAAArrEAAK7CAACuxAAArsYAAK7IAACuygAArswAAK7OAACu0AAArtIAAK7jAACu5gAArukAAK7sAACu7wAArvIAAK71AACu+AAArvsAAK79AACvPAAArz4AAK9AAACvQgAAr0UAAK9GAACvRwAAr0gAAK9JAACvSwAAr00AAK9OAACvTwAAr1EAAK9SAACvkQAAr5MAAK+VAACvlwAAr5oAAK+bAACvnAAAr50AAK+eAACvoAAAr6IAAK+jAACvpAAAr6YAAK+nAACv5gAAr+gAAK/rAACv7QAAr/AAAK/xAACv8gAAr/MAAK/0AACv9gAAr/gAAK/5AACv+gAAr/wAAK/9AACwCgAAsAsAALAMAACwDgAAsE0AALBPAACwUQAAsFMAALBWAACwVwAAsFgAALBZAACwWgAAsFwAALBeAACwXwAAsGAAALBiAACwYwAAsKIAALCkAACwpgAAsKgAALCrAACwrAAAsK0AALCuAACwrwAAsLEAALCzAACwtAAAsLUAALC3AACwuAAAsPcAALD5AACw+wAAsP0AALEAAACxAQAAsQIAALEDAACxBAAAsQYAALEIAACxCQAAsQoAALEMAACxDQAAsUwAALFOAACxUAAAsVIAALFVAACxVgAAsVcAALFYAACxWQAAsVsAALFdAACxXgAAsV8AALFhAACxYgAAsaEAALGjAACxpQAAsacAALGqAACxqwAAsawAALGtAACxrgAAsbAAALGyAACxswAAsbQAALG2AACxtwAAsdwAALIAAACyJwAAsksAALJOAACyUAAAslIAALJUAACyVgAAslgAALJZAACyXAAAsmkAALJ4AACyegAAsnwAALJ+AACygAAAsoIAALKEAACyhgAAspUAALKYAACymwAAsp4AALKhAACypAAAsqcAALKqAACyrAAAsusAALLtAACy7wAAsvEAALL0AACy9QAAsvYAALL3AACy+AAAsvoAALL8AACy/QAAsv4AALMAAACzAQAAs0AAALNCAACzRAAAs0YAALNJAACzSgAAs0sAALNMAACzTQAAs08AALNRAACzUgAAs1MAALNVAACzVgAAs5UAALOXAACzmQAAs5sAALOeAACznwAAs6AAALOhAACzogAAs6QAALOmAACzpwAAs6gAALOqAACzqwAAs+oAALPsAACz7wAAs/EAALP0AACz9QAAs/YAALP3AACz+AAAs/oAALP8AACz/QAAs/4AALQAAAC0AQAAtEAAALRCAAC0RAAAtEYAALRJAAC0SgAAtEsAALRMAAC0TQAAtE8AALRRAAC0UgAAtFMAALRVAAC0VgAAtJUAALSXAAC0mQAAtJsAALSeAAC0nwAAtKAAALShAAC0ogAAtKQAALSmAAC0pwAAtKgAALSqAAC0qwAAtOoAALTsAAC07gAAtPAAALTzAAC09AAAtPUAALT2AAC09wAAtPkAALT7AAC0/AAAtP0AALT/AAC1AAAAtUsAALVuAAC1jgAAta4AALWwAAC1sgAAtbQAALW2AAC1uQAAtboAALW7AAC1vgAAtb8AALXBAAC1wgAAtcQAALXHAAC1yAAAtckAALXMAAC1zQAAtdIAALXfAAC15AAAteYAALXoAAC17QAAtfAAALXzAAC19QAAthoAALY+AAC2ZQAAtokAALaMAAC2jgAAtpAAALaSAAC2lAAAtpYAALaXAAC2mgAAtqcAALa4AAC2ugAAtrwAALa+AAC2wAAAtsIAALbEAAC2xgAAtsgAALbZAAC23AAAtt8AALbiAAC25QAAtugAALbrAAC27gAAtvEAALbzAAC3MgAAtzQAALc2AAC3OAAAtzsAALc8AAC3PQAAtz4AALc/AAC3QQAAt0MAALdEAAC3RQAAt0cAALdIAAC3hwAAt4kAALeLAAC3jQAAt5AAALeRAAC3kgAAt5MAALeUAAC3lgAAt5gAALeZAAC3mgAAt5wAALedAAC33AAAt94AALfhAAC34wAAt+YAALfnAAC36AAAt+kAALfqAAC37AAAt+4AALfvAAC38AAAt/IAALfzAAC4AAAAuAEAALgCAAC4BAAAuEMAALhFAAC4RwAAuEkAALhMAAC4TQAAuE4AALhPAAC4UAAAuFIAALhUAAC4VQAAuFYAALhYAAC4WQAAuJgAALiaAAC4nAAAuJ4AALihAAC4ogAAuKMAALikAAC4pQAAuKcAALipAAC4qgAAuKsAALitAAC4rgAAuO0AALjvAAC48QAAuPMAALj2AAC49wAAuPgAALj5AAC4+gAAuPwAALj+AAC4/wAAuQAAALkCAAC5AwAAuUIAALlEAAC5RgAAuUgAALlLAAC5TAAAuU0AALlOAAC5TwAAuVEAALlTAAC5VAAAuVUAALlXAAC5WAAAuZcAALmZAAC5mwAAuZ0AALmgAAC5oQAAuaIAALmjAAC5pAAAuaYAALmoAAC5qQAAuaoAALmsAAC5rQAAudIAALn2AAC6HQAAukEAALpEAAC6RgAAukgAALpKAAC6TAAAuk4AALpPAAC6UgAAul8AALpuAAC6cAAAunIAALp0AAC6dgAAungAALp6AAC6fAAAuosAALqOAAC6kQAAupQAALqXAAC6mgAAup0AALqgAAC6ogAAuuEAALrjAAC65QAAuucAALrqAAC66wAAuuwAALrtAAC67gAAuvAAALryAAC68wAAuvQAALr2AAC69wAAuzYAALs4AAC7OgAAuzwAALs/AAC7QAAAu0EAALtCAAC7QwAAu0UAALtHAAC7SAAAu0kAALtLAAC7TAAAu4sAALuNAAC7jwAAu5EAALuUAAC7lQAAu5YAALuXAAC7mAAAu5oAALucAAC7nQAAu54AALugAAC7oQAAu+AAALviAAC75QAAu+cAALvqAAC76wAAu+wAALvtAAC77gAAu/AAALvyAAC78wAAu/QAALv2AAC79wAAvDYAALw4AAC8OgAAvDwAALw/AAC8QAAAvEEAALxCAAC8QwAAvEUAALxHAAC8SAAAvEkAALxLAAC8TAAAvIsAALyNAAC8jwAAvJEAALyUAAC8lQAAvJYAALyXAAC8mAAAvJoAALycAAC8nQAAvJ4AALygAAC8oQAAvOAAALziAAC85AAAvOYAALzpAAC86gAAvOsAALzsAAC87QAAvO8AALzxAAC88gAAvPMAALz1AAC89gAAvUEAAL1kAAC9hAAAvaQAAL2mAAC9qAAAvaoAAL2sAAC9rwAAvbAAAL2xAAC9tAAAvbUAAL23AAC9uAAAvboAAL29AAC9vgAAvb8AAL3CAAC9wwAAvcgAAL3VAAC92gAAvdwAAL3eAAC94wAAveYAAL3pAAC96wAAvhAAAL40AAC+WwAAvn8AAL6CAAC+hAAAvoYAAL6IAAC+igAAvowAAL6NAAC+kAAAvp0AAL6uAAC+sAAAvrIAAL60AAC+tgAAvrgAAL66AAC+vAAAvr4AAL7PAAC+0gAAvtUAAL7YAAC+2wAAvt4AAL7hAAC+5AAAvucAAL7pAAC/KAAAvyoAAL8sAAC/LgAAvzEAAL8yAAC/MwAAvzQAAL81AAC/NwAAvzkAAL86AAC/OwAAvz0AAL8+AAC/fQAAv38AAL+BAAC/gwAAv4YAAL+HAAC/iAAAv4kAAL+KAAC/jAAAv44AAL+PAAC/kAAAv5IAAL+TAAC/0gAAv9QAAL/XAAC/2QAAv9wAAL/dAAC/3gAAv98AAL/gAAC/4gAAv+QAAL/lAAC/5gAAv+gAAL/pAAC/9gAAv/cAAL/4AAC/+gAAwDkAAMA7AADAPQAAwD8AAMBCAADAQwAAwEQAAMBFAADARgAAwEgAAMBKAADASwAAwEwAAMBOAADATwAAwI4AAMCQAADAkgAAwJQAAMCXAADAmAAAwJkAAMCaAADAmwAAwJ0AAMCfAADAoAAAwKEAAMCjAADApAAAwOMAAMDlAADA5wAAwOkAAMDsAADA7QAAwO4AAMDvAADA8AAAwPIAAMD0AADA9QAAwPYAAMD4AADA+QAAwTgAAME6AADBPQAAwT8AAMFCAADBQwAAwUQAAMFFAADBRgAAwUgAAMFKAADBSwAAwUwAAMFOAADBTwAAwWYAAMGlAADBpwAAwakAAMGrAADBrgAAwa8AAMGwAADBsQAAwbIAAMG0AADBtgAAwbcAAMG4AADBugAAwbsAAMHgAADCBAAAwisAAMJPAADCUgAAwlQAAMJWAADCWAAAwloAAMJcAADCXQAAwmAAAMJtAADCfAAAwn4AAMKAAADCggAAwoQAAMKGAADCiAAAwooAAMKZAADCnAAAwp8AAMKiAADCpQAAwqgAAMKrAADCrgAAwrAAAMLvAADC8QAAwvMAAML1AADC+AAAwvkAAML6AADC+wAAwvwAAML+AADDAAAAwwEAAMMCAADDBAAAwwUAAMNEAADDRgAAw0gAAMNKAADDTQAAw04AAMNPAADDUAAAw1EAAMNTAADDVQAAw1YAAMNXAADDWQAAw1oAAMOZAADDmwAAw50AAMOfAADDogAAw6MAAMOkAADDpQAAw6YAAMOoAADDqgAAw6sAAMOsAADDrgAAw68AAMPuAADD8AAAw/MAAMP1AADD+AAAw/kAAMP6AADD+wAAw/wAAMP+AADEAAAAxAEAAMQCAADEBAAAxAUAAMREAADERgAAxEgAAMRKAADETQAAxE4AAMRPAADEUAAAxFEAAMRTAADEVQAAxFYAAMRXAADEWQAAxFoAAMSZAADEmwAAxJ0AAMSfAADEogAAxKMAAMSkAADEpQAAxKYAAMSoAADEqgAAxKsAAMSsAADErgAAxK8AAMTuAADE8AAAxPIAAMT0AADE9wAAxPgAAMT5AADE+gAAxPsAAMT9AADE/wAAxQAAAMUBAADFAwAAxQQAAMVPAADFcgAAxZIAAMWyAADFtAAAxbYAAMW4AADFugAAxb0AAMW+AADFvwAAxcIAAMXDAADFxQAAxcYAAMXIAADFywAAxcwAAMXNAADF0AAAxdEAAMXWAADF4wAAxegAAMXqAADF7AAAxfEAAMX0AADF9wAAxfkAAMYeAADGQgAAxmkAAMaNAADGkAAAxpIAAMaUAADGlgAAxpgAAMaaAADGmwAAxp4AAMarAADGvAAAxr4AAMbAAADGwgAAxsQAAMbGAADGyAAAxsoAAMbMAADG3QAAxuAAAMbjAADG5gAAxukAAMbsAADG7wAAxvIAAMb1AADG9wAAxzYAAMc4AADHOgAAxzwAAMc/AADHQAAAx0EAAMdCAADHQwAAx0UAAMdHAADHSAAAx0kAAMdLAADHTAAAx4sAAMeNAADHjwAAx5EAAMeUAADHlQAAx5YAAMeXAADHmAAAx5oAAMecAADHnQAAx54AAMegAADHoQAAx+AAAMfiAADH5QAAx+cAAMfqAADH6wAAx+wAAMftAADH7gAAx/AAAMfyAADH8wAAx/QAAMf2AADH9wAAyAQAAMgFAADIBgAAyAgAAMhHAADISQAAyEsAAMhNAADIUAAAyFEAAMhSAADIUwAAyFQAAMhWAADIWAAAyFkAAMhaAADIXAAAyF0AAMicAADIngAAyKAAAMiiAADIpQAAyKYAAMinAADIqAAAyKkAAMirAADIrQAAyK4AAMivAADIsQAAyLIAAMjxAADI8wAAyPUAAMj3AADI+gAAyPsAAMj8AADI/QAAyP4AAMkAAADJAgAAyQMAAMkEAADJBgAAyQcAAMlGAADJSAAAyUoAAMlMAADJTwAAyVAAAMlRAADJUgAAyVMAAMlVAADJVwAAyVgAAMlZAADJWwAAyVwAAMmbAADJnQAAyZ8AAMmhAADJpAAAyaUAAMmmAADJpwAAyagAAMmqAADJrAAAya0AAMmuAADJsAAAybEAAMnWAADJ+gAAyiEAAMpFAADKSAAAykoAAMpMAADKTgAAylAAAMpSAADKUwAAylYAAMpjAADKcgAAynQAAMp2AADKeAAAynoAAMp8AADKfgAAyoAAAMqPAADKkgAAypUAAMqYAADKmwAAyp4AAMqhAADKpAAAyqYAAMrlAADK5wAAyukAAMrrAADK7gAAyu8AAMrwAADK8QAAyvIAAMr0AADK9gAAyvcAAMr4AADK+gAAyvsAAMs6AADLPAAAyz4AAMtAAADLQwAAy0QAAMtFAADLRgAAy0cAAMtJAADLSwAAy0wAAMtNAADLTwAAy1AAAMuPAADLkQAAy5MAAMuVAADLmAAAy5kAAMuaAADLmwAAy5wAAMueAADLoAAAy6EAAMuiAADLpAAAy6UAAMvkAADL5gAAy+kAAMvrAADL7gAAy+8AAMvwAADL8QAAy/IAAMv0AADL9gAAy/cAAMv4AADL+gAAy/sAAMw6AADMPAAAzD4AAMxAAADMQwAAzEQAAMxFAADMRgAAzEcAAMxJAADMSwAAzEwAAMxNAADMTwAAzFAAAMyPAADMkQAAzJMAAMyVAADMmAAAzJkAAMyaAADMmwAAzJwAAMyeAADMoAAAzKEAAMyiAADMpAAAzKUAAMzkAADM5gAAzOgAAMzqAADM7QAAzO4AAMzvAADM8AAAzPEAAMzzAADM9QAAzPYAAMz3AADM+QAAzPoAAM1FAADNaAAAzYgAAM2oAADNqgAAzawAAM2uAADNsAAAzbMAAM20AADNtQAAzbgAAM25AADNuwAAzbwAAM2+AADNwQAAzcIAAM3DAADNxgAAzccAAM3MAADN2QAAzd4AAM3gAADN4gAAzecAAM3qAADN7QAAze8AAM4UAADOOAAAzl8AAM6DAADOhgAAzogAAM6KAADOjAAAzo4AAM6QAADOkQAAzpQAAM6hAADOsgAAzrQAAM62AADOuAAAzroAAM68AADOvgAAzsAAAM7CAADO0wAAztYAAM7ZAADO3AAAzt8AAM7iAADO5QAAzugAAM7rAADO7QAAzywAAM8uAADPMAAAzzIAAM81AADPNgAAzzcAAM84AADPOQAAzzsAAM89AADPPgAAzz8AAM9BAADPQgAAz4EAAM+DAADPhQAAz4cAAM+KAADPiwAAz4wAAM+NAADPjgAAz5AAAM+SAADPkwAAz5QAAM+WAADPlwAAz9YAAM/YAADP2wAAz90AAM/gAADP4QAAz+IAAM/jAADP5AAAz+YAAM/oAADP6QAAz+oAAM/sAADP7QAAz/oAAM/7AADP/AAAz/4AANA9AADQPwAA0EEAANBDAADQRgAA0EcAANBIAADQSQAA0EoAANBMAADQTgAA0E8AANBQAADQUgAA0FMAANCSAADQlAAA0JYAANCYAADQmwAA0JwAANCdAADQngAA0J8AANChAADQowAA0KQAANClAADQpwAA0KgAANDnAADQ6QAA0OsAANDtAADQ8AAA0PEAANDyAADQ8wAA0PQAAND2AADQ+AAA0PkAAND6AADQ/AAA0P0AANE8AADRPgAA0UAAANFCAADRRQAA0UYAANFHAADRSAAA0UkAANFLAADRTQAA0U4AANFPAADRUQAA0VIAANGRAADRkwAA0ZUAANGXAADRmgAA0ZsAANGcAADRnQAA0Z4AANGgAADRogAA0aMAANGkAADRpgAA0acAANHMAADR8AAA0hcAANI7AADSPgAA0kAAANJCAADSRAAA0kYAANJIAADSSQAA0kwAANJZAADSaAAA0moAANJsAADSbgAA0nAAANJyAADSdAAA0nYAANKFAADSiAAA0osAANKOAADSkQAA0pQAANKXAADSmgAA0pwAANLbAADS3QAA0t8AANLhAADS5AAA0uUAANLmAADS5wAA0ugAANLqAADS7AAA0u0AANLuAADS8AAA0vEAANMwAADTMgAA0zQAANM2AADTOQAA0zoAANM7AADTPAAA0z0AANM/AADTQQAA00IAANNDAADTRQAA00YAANOFAADThwAA04kAANOLAADTjgAA048AANOQAADTkQAA05IAANOUAADTlgAA05cAANOYAADTmgAA05sAANPaAADT3AAA098AANPhAADT5AAA0+UAANPmAADT5wAA0+gAANPqAADT7AAA0+0AANPuAADT8AAA0/EAANQwAADUMgAA1DQAANQ2AADUOQAA1DoAANQ7AADUPAAA1D0AANQ/AADUQQAA1EIAANRDAADURQAA1EYAANSFAADUhwAA1IkAANSLAADUjgAA1I8AANSQAADUkQAA1JIAANSUAADUlgAA1JcAANSYAADUmgAA1JsAANTaAADU3AAA1N4AANTgAADU4wAA1OQAANTlAADU5gAA1OcAANTpAADU6wAA1OwAANTtAADU7wAA1PAAANU7AADVXgAA1X4AANWeAADVoAAA1aIAANWkAADVpgAA1akAANWqAADVqwAA1a4AANWvAADVsQAA1bIAANW0AADVtwAA1bgAANW5AADVvAAA1b0AANXGAADV0wAA1dgAANXaAADV3AAA1eEAANXkAADV5wAA1ekAANYOAADWMgAA1lkAANZ9AADWgAAA1oIAANaEAADWhgAA1ogAANaKAADWiwAA1o4AANabAADWrAAA1q4AANawAADWsgAA1rQAANa2AADWuAAA1roAANa8AADWzQAA1tAAANbTAADW1gAA1tkAANbcAADW3wAA1uIAANblAADW5wAA1yYAANcoAADXKgAA1ywAANcvAADXMAAA1zEAANcyAADXMwAA1zUAANc3AADXOAAA1zkAANc7AADXPAAA13sAANd9AADXfwAA14EAANeEAADXhQAA14YAANeHAADXiAAA14oAANeMAADXjQAA144AANeQAADXkQAA19AAANfSAADX1QAA19cAANfaAADX2wAA19wAANfdAADX3gAA1+AAANfiAADX4wAA1+QAANfmAADX5wAA1/QAANf1AADX9gAA1/gAANg3AADYOQAA2DsAANg9AADYQAAA2EEAANhCAADYQwAA2EQAANhGAADYSAAA2EkAANhKAADYTAAA2E0AANiMAADYjgAA2JAAANiSAADYlQAA2JYAANiXAADYmAAA2JkAANibAADYnQAA2J4AANifAADYoQAA2KIAANjhAADY4wAA2OUAANjnAADY6gAA2OsAANjsAADY7QAA2O4AANjwAADY8gAA2PMAANj0AADY9gAA2PcAANk2AADZOAAA2ToAANk8AADZPwAA2UAAANlBAADZQgAA2UMAANlFAADZRwAA2UgAANlJAADZSwAA2UwAANmLAADZjQAA2Y8AANmRAADZlAAA2ZUAANmWAADZlwAA2ZgAANmaAADZnAAA2Z0AANmeAADZoAAA2aEAANnGAADZ6gAA2hEAANo1AADaOAAA2joAANo8AADaPgAA2kAAANpCAADaQwAA2kYAANpTAADaYgAA2mQAANpmAADaaAAA2moAANpsAADabgAA2nAAANp/AADaggAA2oUAANqIAADaiwAA2o4AANqRAADalAAA2pYAANrVAADa1wAA2tkAANrbAADa3gAA2t8AANrgAADa4QAA2uIAANrkAADa5gAA2ucAANroAADa6gAA2usAANsqAADbLAAA2y4AANswAADbMwAA2zQAANs1AADbNgAA2zcAANs5AADbOwAA2zwAANs9AADbPwAA20AAANt/AADbgQAA24MAANuFAADbiAAA24kAANuKAADbiwAA24wAANuOAADbkAAA25EAANuSAADblAAA25UAANvUAADb1gAA29kAANvbAADb3gAA298AANvgAADb4QAA2+IAANvkAADb5gAA2+cAANvoAADb6gAA2+sAANwqAADcLAAA3C4AANwwAADcMwAA3DQAANw1AADcNgAA3DcAANw5AADcOwAA3DwAANw9AADcPwAA3EAAANx/AADcgQAA3IMAANyFAADciAAA3IkAANyKAADciwAA3IwAANyOAADckAAA3JEAANySAADclAAA3JUAANzUAADc1gAA3NgAANzaAADc3QAA3N4AANzfAADc4AAA3OEAANzjAADc5QAA3OYAANznAADc6QAA3OoAAN01AADdWAAA3XgAAN2YAADdmgAA3ZwAAN2eAADdoAAA3aMAAN2kAADdpQAA3agAAN2pAADdqwAA3awAAN2uAADdsAAA3bEAAN2yAADdtQAA3bYAAN27AADdyAAA3c0AAN3PAADd0QAA3dYAAN3ZAADd3AAA3d4AAN4DAADeJwAA3k4AAN5yAADedQAA3ncAAN55AADeewAA3n0AAN5/AADegAAA3oMAAN6QAADeoQAA3qMAAN6lAADepwAA3qkAAN6rAADerQAA3q8AAN6xAADewgAA3sUAAN7IAADeywAA3s4AAN7RAADe1AAA3tcAAN7aAADe3AAA3xsAAN8dAADfHwAA3yEAAN8kAADfJQAA3yYAAN8nAADfKAAA3yoAAN8sAADfLQAA3y4AAN8wAADfMQAA33AAAN9yAADfdAAA33YAAN95AADfegAA33sAAN98AADffQAA338AAN+BAADfggAA34MAAN+FAADfhgAA38UAAN/HAADfygAA38wAAN/PAADf0AAA39EAAN/SAADf0wAA39UAAN/XAADf2AAA39kAAN/bAADf3AAA3+kAAN/qAADf6wAA3+0AAOAsAADgLgAA4DAAAOAyAADgNQAA4DYAAOA3AADgOAAA4DkAAOA7AADgPQAA4D4AAOA/AADgQQAA4EIAAOCBAADggwAA4IUAAOCHAADgigAA4IsAAOCMAADgjQAA4I4AAOCQAADgkgAA4JMAAOCUAADglgAA4JcAAODWAADg2AAA4NoAAODcAADg3wAA4OAAAODhAADg4gAA4OMAAODlAADg5wAA4OgAAODpAADg6wAA4OwAAOErAADhLQAA4S8AAOExAADhNAAA4TUAAOE2AADhNwAA4TgAAOE6AADhPAAA4T0AAOE+AADhQAAA4UEAAOGAAADhggAA4YQAAOGGAADhiQAA4YoAAOGLAADhjAAA4Y0AAOGPAADhkQAA4ZIAAOGTAADhlQAA4ZYAAOG7AADh3wAA4gYAAOIqAADiLQAA4i8AAOIxAADiMwAA4jUAAOI3AADiOAAA4jsAAOJIAADiVwAA4lkAAOJbAADiXQAA4l8AAOJhAADiYwAA4mUAAOJ0AADidwAA4noAAOJ9AADigAAA4oMAAOKGAADiiQAA4osAAOLKAADizAAA4s4AAOLQAADi0wAA4tQAAOLVAADi1gAA4tcAAOLZAADi2wAA4twAAOLdAADi3wAA4uAAAOMfAADjIQAA4yMAAOMlAADjKAAA4ykAAOMqAADjKwAA4ywAAOMuAADjMAAA4zEAAOMyAADjNAAA4zUAAON0AADjdgAA43gAAON6AADjfQAA434AAON/AADjgAAA44EAAOODAADjhQAA44YAAOOHAADjiQAA44oAAOPJAADjywAA484AAOPQAADj0wAA49QAAOPVAADj1gAA49cAAOPZAADj2wAA49wAAOPdAADj3wAA4+AAAOQfAADkIQAA5CMAAOQlAADkKAAA5CkAAOQqAADkKwAA5CwAAOQuAADkMAAA5DEAAOQyAADkNAAA5DUAAOR0AADkdgAA5HgAAOR6AADkfQAA5H4AAOR/AADkgAAA5IEAAOSDAADkhQAA5IYAAOSHAADkiQAA5IoAAOTJAADkywAA5M0AAOTPAADk0gAA5NMAAOTUAADk1QAA5NYAAOTYAADk2gAA5NsAAOTcAADk3gAA5N8AAOUqAADlTQAA5W0AAOWNAADljwAA5ZEAAOWTAADllQAA5ZgAAOWZAADlmgAA5Z0AAOWeAADloAAA5aEAAOWjAADlpgAA5acAAOWoAADlqwAA5awAAOWxAADlvgAA5cMAAOXFAADlxwAA5cwAAOXPAADl0gAA5dQAAOX5AADmHQAA5kQAAOZoAADmawAA5m0AAOZvAADmcQAA5nMAAOZ1AADmdgAA5nkAAOaGAADmlwAA5pkAAOabAADmnQAA5p8AAOahAADmowAA5qUAAOanAADmuAAA5rsAAOa+AADmwQAA5sQAAObHAADmygAA5s0AAObQAADm0gAA5xEAAOcTAADnFQAA5xcAAOcaAADnGwAA5xwAAOcdAADnHgAA5yAAAOciAADnIwAA5yQAAOcmAADnJwAA52YAAOdoAADnagAA52wAAOdvAADncAAA53EAAOdyAADncwAA53UAAOd3AADneAAA53kAAOd7AADnfAAA57sAAOe9AADnwAAA58IAAOfFAADnxgAA58cAAOfIAADnyQAA58sAAOfNAADnzgAA588AAOfRAADn0gAA598AAOfgAADn4QAA5+MAAOgiAADoJAAA6CYAAOgoAADoKwAA6CwAAOgtAADoLgAA6C8AAOgxAADoMwAA6DQAAOg1AADoNwAA6DgAAOh3AADoeQAA6HsAAOh9AADogAAA6IEAAOiCAADogwAA6IQAAOiGAADoiAAA6IkAAOiKAADojAAA6I0AAOjMAADozgAA6NAAAOjSAADo1QAA6NYAAOjXAADo2AAA6NkAAOjbAADo3QAA6N4AAOjfAADo4QAA6OIAAOkhAADpIwAA6SYAAOkoAADpKwAA6SwAAOktAADpLgAA6S8AAOkxAADpMwAA6TQAAOk1AADpNwAA6TgAAOlLAADpigAA6YwAAOmOAADpkAAA6ZMAAOmUAADplQAA6ZYAAOmXAADpmQAA6ZsAAOmcAADpnQAA6Z8AAOmgAADpxQAA6ekAAOoQAADqNAAA6jcAAOo5AADqOwAA6j0AAOo/AADqQQAA6kIAAOpFAADqUgAA6mEAAOpjAADqZQAA6mcAAOppAADqawAA6m0AAOpvAADqfgAA6oEAAOqEAADqhwAA6ooAAOqNAADqkAAA6pMAAOqVAADq1AAA6tYAAOrYAADq2gAA6t0AAOreAADq3wAA6uAAAOrhAADq4wAA6uUAAOrmAADq5wAA6ukAAOrqAADrKQAA6ysAAOstAADrLwAA6zIAAOszAADrNAAA6zUAAOs2AADrOAAA6zoAAOs7AADrPAAA6z4AAOs/AADrfgAA64AAAOuCAADrhAAA64cAAOuIAADriQAA64oAAOuLAADrjQAA648AAOuQAADrkQAA65MAAOuUAADr0wAA69UAAOvYAADr2gAA690AAOveAADr3wAA6+AAAOvhAADr4wAA6+UAAOvmAADr5wAA6+kAAOvqAADsKQAA7CsAAOwtAADsLwAA7DIAAOwzAADsNAAA7DUAAOw2AADsOAAA7DoAAOw7AADsPAAA7D4AAOw/AADsfgAA7IAAAOyCAADshAAA7IcAAOyIAADsiQAA7IoAAOyLAADsjQAA7I8AAOyQAADskQAA7JMAAOyUAADs0wAA7NUAAOzXAADs2QAA7NwAAOzdAADs3gAA7N8AAOzgAADs4gAA7OQAAOzlAADs5gAA7OgAAOzpAADtNAAA7VcAAO13AADtlwAA7ZkAAO2bAADtnQAA7Z8AAO2iAADtowAA7aQAAO2nAADtqAAA7aoAAO2rAADtrQAA7bAAAO2xAADtsgAA7bUAAO22AADtuwAA7cgAAO3NAADtzwAA7dEAAO3WAADt2QAA7dwAAO3eAADuAwAA7icAAO5OAADucgAA7nUAAO53AADueQAA7nsAAO59AADufwAA7oAAAO6DAADukAAA7qEAAO6jAADupQAA7qcAAO6pAADuqwAA7q0AAO6vAADusQAA7sIAAO7FAADuyAAA7ssAAO7OAADu0QAA7tQAAO7XAADu2gAA7twAAO8bAADvHQAA7x8AAO8hAADvJAAA7yUAAO8mAADvJwAA7ygAAO8qAADvLAAA7y0AAO8uAADvMAAA7zEAAO9wAADvcgAA73QAAO92AADveQAA73oAAO97AADvfAAA730AAO9/AADvgQAA74IAAO+DAADvhQAA74YAAO/FAADvxwAA78oAAO/MAADvzwAA79AAAO/RAADv0gAA79MAAO/VAADv1wAA79gAAO/ZAADv2wAA79wAAO/pAADv6gAA7+sAAO/tAADwLAAA8C4AAPAwAADwMgAA8DUAAPA2AADwNwAA8DgAAPA5AADwOwAA8D0AAPA+AADwPwAA8EEAAPBCAADwgQAA8IMAAPCFAADwhwAA8IoAAPCLAADwjAAA8I0AAPCOAADwkAAA8JIAAPCTAADwlAAA8JYAAPCXAADw1gAA8NgAAPDaAADw3AAA8N8AAPDgAADw4QAA8OIAAPDjAADw5QAA8OcAAPDoAADw6QAA8OsAAPDsAADxKwAA8S0AAPEvAADxMQAA8TQAAPE1AADxNgAA8TcAAPE4AADxOgAA8TwAAPE9AADxPgAA8UAAAPFBAADxgAAA8YIAAPGEAADxhgAA8YkAAPGKAADxiwAA8YwAAPGNAADxjwAA8ZEAAPGSAADxkwAA8ZUAAPGWAADxuwAA8d8AAPIGAADyKgAA8i0AAPIvAADyMQAA8jMAAPI1AADyNwAA8jgAAPI7AADySAAA8lcAAPJZAADyWwAA8l0AAPJfAADyYQAA8mMAAPJlAADydAAA8ncAAPJ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cAAEDHQABAx8AAQMgAAEDXwABA2EAAQNjAAEDZQABA2gAAQNpAAEDagABA2sAAQNsAAEDbgABA3AAAQNxAAEDcgABA3QAAQN1AAEDtAABA7YAAQO5AAEDuwABA74AAQO/AAEDwAABA8EAAQPCAAEDxAABA8YAAQPHAAEDyAABA8oAAQPLAAEECgABBAwAAQQOAAEEEAABBBMAAQQUAAEEFQABBBYAAQQXAAEEGQABBBsAAQQcAAEEHQABBB8AAQQgAAEEXwABBGEAAQRjAAEEZQABBGgAAQRpAAEEagABBGsAAQRsAAEEbgABBHAAAQRxAAEEcgABBHQAAQR1AAEEtAABBLYAAQS4AAEEugABBL0AAQS+AAEEvwABBMAAAQTBAAEEwwABBMUAAQTGAAEExwABBMkAAQTKAAEFFQABBTgAAQVYAAEFeAABBXoAAQV8AAEFfgABBYAAAQWDAAEFhAABBYUAAQWIAAEFiQABBYsAAQWMAAEFjgABBZEAAQWSAAEFkwABBZYAAQWXAAEFnAABBakAAQWuAAEFsAABBbIAAQW3AAEFugABBb0AAQW/AAEF5AABBggAAQYvAAEGUwABBlYAAQZYAAEGWgABBlwAAQZeAAEGYAABBmEAAQZkAAEGcQABBoIAAQaEAAEGhgABBogAAQaKAAEGjAABBo4AAQaQAAEGkgABBqMAAQamAAEGqQABBqwAAQavAAEGsgABBrUAAQa4AAEGuwABBr0AAQb8AAEG/gABBwAAAQcCAAEHBQABBwYAAQcHAAEHCAABBwkAAQcLAAEHDQABBw4AAQcPAAEHEQABBxIAAQdRAAEHUwABB1UAAQdXAAEHWgABB1sAAQdcAAEHXQABB14AAQdgAAEHYgABB2MAAQdkAAEHZgABB2cAAQemAAEHqAABB6sAAQetAAEHsAABB7EAAQeyAAEHswABB7QAAQe2AAEHuAABB7kAAQe6AAEHvAABB70AAQfKAAEHywABB8wAAQfOAAEIDQABCA8AAQgRAAEIEwABCBYAAQgXAAEIGAABCBkAAQgaAAEIHAABCB4AAQgfAAEIIAABCCIAAQgjAAEIYgABCGQAAQhmAAEIaAABCGsAAQhsAAEIbQABCG4AAQhvAAEIcQABCHMAAQh0AAEIdQABCHcAAQh4AAEItwABCLkAAQi7AAEIvQABCMAAAQjBAAEIwgABCMMAAQjEAAEIxgABCMgAAQjJAAEIygABCMwAAQjNAAEJDAABCQ4AAQkRAAEJEwABCRYAAQkXAAEJGAABCRkAAQkaAAEJHAABCR4AAQkfAAEJIAABCSIAAQkjAAEJNwABCXYAAQl4AAEJegABCXwAAQl/AAEJgAABCYEAAQmCAAEJgwABCYUAAQmHAAEJiAABCYkAAQmLAAEJjAABCbEAAQnVAAEJ/AABCiAAAQojAAEKJQABCicAAQopAAEKKwABCi0AAQouAAEKMQABCj4AAQpNAAEKTwABClEAAQpTAAEKVQABClcAAQpZAAEKWwABCmoAAQptAAEKcAABCnMAAQp2AAEKeQABCnwAAQp/AAEKgQABCsAAAQrCAAEKxAABCsYAAQrJAAEKygABCssAAQrMAAEKzQABCs8AAQrRAAEK0gABCtMAAQrVAAEK1gABCxUAAQsXAAELGQABCxsAAQseAAELHwABCyAAAQshAAELIgABCyQAAQsmAAELJwABCygAAQsqAAELKwABC2oAAQtsAAELbgABC3AAAQtzAAELdAABC3UAAQt2AAELdwABC3kAAQt7AAELfAABC30AAQt/AAELgAABC78AAQvBAAELxAABC8YAAQvJAAELygABC8sAAQvMAAELzQABC88AAQvRAAEL0gABC9MAAQvVAAEL1gABDBUAAQwXAAEMGQABDBsAAQweAAEMHwABDCAAAQwhAAEMIgABDCQAAQwmAAEMJwABDCgAAQwqAAEMKwABDGoAAQxsAAEMbgABDHAAAQxzAAEMdAABDHUAAQx2AAEMdwABDHkAAQx7AAEMfAABDH0AAQx/AAEMgAABDL8AAQzBAAEMwwABDMUAAQzIAAEMyQABDMoAAQzLAAEMzAABDM4AAQzQAAEM0QABDNIAAQzUAAEM1QABDSAAAQ1DAAENYwABDYMAAQ2FAAENhwABDYkAAQ2LAAENjgABDY8AAQ2QAAENkwABDZQAAQ2WAAENlwABDZkAAQ2cAAENnQABDZ4AAQ2hAAENogABDasAAQ24AAENvQABDb8AAQ3BAAENxgABDckAAQ3MAAENzgABDfMAAQ4XAAEOPgABDmIAAQ5lAAEOZwABDmkAAQ5rAAEObQABDm8AAQ5wAAEOcwABDoAAAQ6RAAEOkwABDpUAAQ6XAAEOmQABDpsAAQ6dAAEOnwABDqEAAQ6yAAEOtQABDrgAAQ67AAEOvgABDsEAAQ7EAAEOxwABDsoAAQ7MAAEPCwABDw0AAQ8PAAEPEQABDxQAAQ8VAAEPFgABDxcAAQ8YAAEPGgABDxwAAQ8dAAEPHgABDyAAAQ8hAAEPYAABD2IAAQ9kAAEPZgABD2kAAQ9qAAEPawABD2wAAQ9tAAEPbwABD3EAAQ9yAAEPcwABD3UAAQ92AAEPtQABD7cAAQ+6AAEPvAABD78AAQ/AAAEPwQABD8IAAQ/DAAEPxQABD8cAAQ/IAAEPyQABD8sAAQ/MAAEP2QABD9oAAQ/bAAEP3QABEBwAARAeAAEQIAABECIAARAlAAEQJgABECcAARAoAAEQKQABECsAARAtAAEQLgABEC8AARAxAAEQMgABEHEAARBzAAEQdQABEHcAARB6AAEQewABEHwAARB9AAEQfgABEIAAARCCAAEQgwABEIQAARCGAAEQhwABEMYAARDIAAEQygABEMwAARDPAAEQ0AABENEAARDSAAEQ0wABENUAARDXAAEQ2AABENkAARDbAAEQ3AABERsAAREdAAERIAABESIAARElAAERJgABEScAAREoAAERKQABESsAAREtAAERLgABES8AARExAAERMgABEUEAARGAAAERggABEYQAARGGAAERiQABEYoAARGLAAERjAABEY0AARGPAAERkQABEZIAARGTAAERlQABEZYAARG7AAER3wABEgYAARIqAAESLQABEi8AARIxAAESMwABEjUAARI3AAESOAABEjsAARJIAAESVwABElkAARJbAAESXQABEl8AARJhAAESYwABEmUAARJ0AAESdwABEnoAARJ9AAESgAABEoMAARKGAAESiQABEosAARLKAAESzAABEs4AARLQAAES0wABEtQAARLVAAES1gABEtcAARLZAAES2wABEtwAARLdAAES3wABEuAAARMfAAETIQABEyMAARMlAAETKAABEykAARMqAAETKwABEywAARMuAAETMAABEzEAARMyAAETNAABEzUAARN0AAETdgABE3gAARN6AAETfQABE34AARN/AAETgAABE4EAARODAAEThQABE4YAAROHAAETiQABE4oAARPJAAETywABE84AARPQAAET0wABE9QAARPVAAET1gABE9cAARPZAAET2wABE9wAARPdAAET3wABE+AAARQfAAEUIQABFCMAARQlAAEUKAABFCkAARQqAAEUKwABFCwAARQuAAEUMAABFDEAARQyAAEUNAABFDUAARR0AAEUdgABFHgAARR6AAEUfQABFH4AARR/AAEUgAABFIEAARSDAAEUhQABFIYAARSHAAEUiQABFIoAARTJAAEUywABFM0AARTPAAEU0gABFNMAARTUAAEU1QABFNYAARTYAAEU2gABFNsAARTcAAEU3gABFN8AARUqAAEVTQABFW0AARWNAAEVjwABFZEAARWTAAEVlQABFZgAARWZAAEVmgABFZ0AARWeAAEVoAABFaEAARWjAAEVpgABFacAARWoAAEVqwABFawAARWxAAEVvgABFcMAARXFAAEVxwABFcwAARXPAAEV0gABFdQAARX5AAEWHQABFkQAARZoAAEWawABFm0AARZvAAEWcQABFnMAARZ1AAEWdgABFnkAARaGAAEWlwABFpkAARabAAEWnQABFp8AARahAAEWowABFqUAARanAAEWuAABFrsAARa+AAEWwQABFsQAARbHAAEWygABFs0AARbQAAEW0gABFxEAARcTAAEXFQABFxcAARcaAAEXGwABFxwAARcdAAEXHgABFyAAARciAAEXIwABFyQAARcmAAEXJwABF2YAARdoAAEXagABF2wAARdvAAEXcAABF3EAARdyAAEXcwABF3UAARd3AAEXeAABF3kAARd7AAEXfAABF7sAARe9AAEXwAABF8IAARfFAAEXxgABF8cAARfIAAEXyQABF8sAARfNAAEXzgABF88AARfRAAEX0gABF98AARfgAAEX4QABF+MAARgiAAEYJAABGCYAARgoAAEYKwABGCwAARgtAAEYLgABGC8AARgxAAEYMwABGDQAARg1AAEYNwABGDgAARh3AAEYeQABGHsAARh9AAEYgAABGIEAARiCAAEYgwABGIQAARiGAAEYiAABGIkAARiKAAEYjAABGI0AARjMAAEYzgABGNAAARjSAAEY1QABGNYAARjXAAEY2AABGNkAARjbAAEY3QABGN4AARjfAAEY4QABGOIAARkhAAEZIwABGSYAARkoAAEZKwABGSwAARktAAEZLgABGS8AARkxAAEZMwABGTQAARk1AAEZNwABGTgAARlMAAEZiwABGY0AARmPAAEZkQABGZQAARmVAAEZlgABGZcAARmYAAEZmgABGZwAARmdAAEZngABGaAAARmhAAEZxgABGeoAARoRAAEaNQABGjgAARo6AAEaPAABGj4AARpAAAEaQgABGkMAARpGAAEaUwABGmIAARpkAAEaZgABGmgAARpqAAEabAABGm4AARpwAAEafwABGoIAARqFAAEaiAABGosAARqOAAEakQABGpQAARqWAAEa1QABGtcAARrZAAEa2wABGt4AARrfAAEa4AABGuEAARriAAEa5AABGuYAARrnAAEa6AABGuoAARrrAAEbKgABGywAARsuAAEbMAABGzMAARs0AAEbNQABGzYAARs3AAEbOQABGzsAARs8AAEbPQABGz8AARtAAAEbfwABG4EAARuDAAEbhQABG4gAARuJAAEbigABG4sAARuMAAEbjgABG5AAARuRAAEbkgABG5QAARuVAAEb1AABG9YAARvZAAEb2wABG94AARvfAAEb4AABG+EAARviAAEb5AABG+YAARvnAAEb6AABG+oAARvrAAEcKgABHCwAARwuAAEcMAABHDMAARw0AAEcNQABHDYAARw3AAEcOQABHDsAARw8AAEcPQABHD8AARxAAAEcfwABHIEAARyDAAEchQABHIgAARyJAAEcigABHIsAARyMAAEcjgABHJAAARyRAAEckgABHJQAARyVAAEc1AABHNYAARzYAAEc2gABHN0AARzeAAEc3wABHOAAARzhAAEc4wABHOUAARzmAAEc5wABHOkAARzqAAEdNQABHVgAAR14AAEdmAABHZoAAR2cAAEdngABHaAAAR2jAAEdpAABHaUAAR2oAAEdqQABHasAAR2sAAEdrgABHbEAAR2yAAEdswABHbYAAR23AAEdvAABHckAAR3OAAEd0AABHdIAAR3XAAEd2gABHd0AAR3fAAEeBAABHigAAR5PAAEecwABHnYAAR54AAEeegABHnwAAR5+AAEegAABHoEAAR6EAAEekQABHqIAAR6kAAEepgABHqgAAR6qAAEerAABHq4AAR6wAAEesgABHsMAAR7GAAEeyQABHswAAR7PAAEe0gABHtUAAR7YAAEe2wABHt0AAR8cAAEfHgABHyAAAR8iAAEfJQABHyYAAR8nAAEfKAABHykAAR8rAAEfLQABHy4AAR8vAAEfMQABHzIAAR9xAAEfcwABH3UAAR93AAEfegABH3sAAR98AAEffQABH34AAR+AAAEfggABH4MAAR+EAAEfhgABH4cAAR/GAAEfyAABH8sAAR/NAAEf0AABH9EAAR/SAAEf0wABH9QAAR/WAAEf2AABH9kAAR/aAAEf3AABH90AAR/qAAEf6wABH+wAAR/uAAEgLQABIC8AASAxAAEgMwABIDYAASA3AAEgOAABIDkAASA6AAEgPAABID4AASA/AAEgQAABIEIAASBDAAEgggABIIQAASCGAAEgiAABIIsAASCMAAEgjQABII4AASCPAAEgkQABIJMAASCUAAEglQABIJcAASCYAAEg1wABINkAASDbAAEg3QABIOAAASDhAAEg4gABIOMAASDkAAEg5gABIOgAASDpAAEg6gABIOwAASDtAAEhLAABIS4AASEwAAEhMgABITUAASE2AAEhNwABITgAASE5AAEhOwABIT0AASE+AAEhPwABIUEAASFCAAEhgQABIYMAASGFAAEhhwABIYoAASGLAAEhjAABIY0AASGOAAEhkAABIZIAASGTAAEhlAABIZYAASGXAAEhvAABIeAAASIHAAEiKwABIi4AASIwAAEiMgABIjQAASI2AAEiOAABIjkAASI8AAEiSQABIlgAASJaAAEiXAABIl4AASJgAAEiYgABImQAASJmAAEidQABIngAASJ7AAEifgABIoEAASKEAAEihwABIooAASKMAAEiywABIs0AASLPAAEi0QABItQAASLVAAEi1gABItcAASLYAAEi2gABItwAASLdAAEi3gABIuAAASLhAAEjIAABIyIAASMkAAEjJgABIykAASMqAAEjKwABIywAASMtAAEjLwABIzEAASMyAAEjMwABIzUAASM2AAEjdQABI3cAASN5AAEjewABI34AASN/AAEjgAABI4EAASOCAAEjhAABI4YAASOHAAEjiAABI4oAASOLAAEjygABI8wAASPPAAEj0QABI9QAASPVAAEj1gABI9cAASPYAAEj2gABI9wAASPdAAEj3gABI+AAASPhAAEkIAABJCIAASQkAAEkJgABJCkAASQqAAEkKwABJCwAASQtAAEkLwABJDEAASQyAAEkMwABJDUAASQ2AAEkdQABJHcAASR5AAEkewABJH4AASR/AAEkgAABJIEAASSCAAEkhAABJIYAASSHAAEkiAABJIoAASSLAAEkygABJMwAASTOAAEk0AABJNMAASTUAAEk1QABJNYAASTXAAEk2QABJNsAASTcAAEk3QABJN8AASTgAAElKwABJU4AASVuAAEljgABJZAAASWSAAEllAABJZYAASWZAAElmgABJZsAASWeAAElnwABJaEAASWiAAElpAABJacAASWoAAElqQABJawAASWtAAElsgABJb8AASXEAAElxgABJcgAASXNAAEl0AABJdMAASXVAAEl+gABJh4AASZFAAEmaQABJmwAASZuAAEmcAABJnIAASZ0AAEmdgABJncAASZ6AAEmhwABJpgAASaaAAEmnAABJp4AASagAAEmogABJqQAASamAAEmqAABJrkAASa8AAEmvwABJsIAASbFAAEmyAABJssAASbOAAEm0QABJtMAAScSAAEnFAABJxYAAScYAAEnGwABJxwAAScdAAEnHgABJx8AASchAAEnIwABJyQAASclAAEnJwABJygAASdnAAEnaQABJ2sAASdtAAEncAABJ3EAASdyAAEncwABJ3QAASd2AAEneAABJ3kAASd6AAEnfAABJ30AASe8AAEnvgABJ8EAASfDAAEnxgABJ8cAASfIAAEnyQABJ8oAASfMAAEnzgABJ88AASfQAAEn0gABJ9MAASfgAAEn4QABJ+IAASfkAAEoIwABKCUAASgnAAEoKQABKCwAASgtAAEoLgABKC8AASgwAAEoMgABKDQAASg1AAEoNgABKDgAASg5AAEoeAABKHoAASh8AAEofgABKIEAASiCAAEogwABKIQAASiFAAEohwABKIkAASiKAAEoiwABKI0AASiOAAEozQABKM8AASjRAAEo0wABKNYAASjXAAEo2AABKNkAASjaAAEo3AABKN4AASjfAAEo4AABKOIAASjjAAEpIgABKSQAASkmAAEpKAABKSsAASksAAEpLQABKS4AASkvAAEpMQABKTMAASk0AAEpNQABKTcAASk4AAEpdwABKXkAASl7AAEpfQABKYAAASmBAAEpggABKYMAASmEAAEphgABKYgAASmJAAEpigABKYwAASmNAAEpsgABKdYAASn9AAEqIQABKiQAASomAAEqKAABKioAASosAAEqLgABKi8AASoyAAEqPwABKk4AASpQAAEqUgABKlQAASpWAAEqWAABKloAASpcAAEqawABKm4AASpxAAEqdAABKncAASp6AAEqfQABKoAAASqCAAEqwQABKsMAASrFAAEqxwABKsoAASrLAAEqzAABKs0AASrOAAEq0AABKtIAASrTAAEq1AABKtYAASrXAAErFgABKxgAASsaAAErHAABKx8AASsgAAErIQABKyIAASsjAAErJQABKycAASsoAAErKQABKysAASssAAErawABK20AAStvAAErcQABK3QAASt1AAErdgABK3cAASt4AAEregABK3wAASt9AAErfgABK4AAASuBAAErwAABK8IAASvFAAErxwABK8oAASvLAAErzAABK80AASvOAAEr0AABK9IAASvTAAEr1AABK9YAASvXAAEsFgABLBgAASwaAAEsHAABLB8AASwgAAEsIQABLCIAASwjAAEsJQABLCcAASwoAAEsKQABLCsAASwsAAEsawABLG0AASxvAAEscQABLHQAASx1AAEsdgABLHcAASx4AAEsegABLHwAASx9AAEsfgABLIAAASyBAAEswAABLMIAASzEAAEsxgABLMkAASzKAAEsywABLMwAASzNAAEszwABLNEAASzSAAEs0wABLNUAASzWAAEtIQABLUQAAS1kAAEthAABLYYAAS2IAAEtigABLYwAAS2PAAEtkAABLZEAAS2UAAEtlQABLZcAAS2YAAEtmgABLZ0AAS2eAAEtnwABLaIAAS2jAAEtqAABLbUAAS26AAEtvAABLb4AAS3DAAEtxgABLckAAS3LAAEt8AABLhQAAS47AAEuXwABLmIAAS5kAAEuZgABLmgAAS5qAAEubAABLm0AAS5wAAEufQABLo4AAS6QAAEukgABLpQAAS6WAAEumAABLpoAAS6cAAEungABLq8AAS6yAAEutQABLrgAAS67AAEuvgABLsEAAS7EAAEuxwABLskAAS8IAAEvCgABLwwAAS8OAAEvEQABLxIAAS8TAAEvFAABLxUAAS8XAAEvGQABLxoAAS8bAAEvHQABLx4AAS9dAAEvXwABL2EAAS9jAAEvZgABL2cAAS9oAAEvaQABL2oAAS9sAAEvbgABL28AAS9wAAEvcgABL3MAAS+yAAEvtAABL7cAAS+5AAEvvAABL70AAS++AAEvvwABL8AAAS/CAAEvxAABL8UAAS/GAAEvyAABL8kAAS/WAAEv1wABL9gAAS/aAAEwGQABMBsAATAdAAEwHwABMCIAATAjAAEwJAABMCUAATAmAAEwKAABMCoAATArAAEwLAABMC4AATAvAAEwbgABMHAAATByAAEwdAABMHcAATB4AAEweQABMHoAATB7AAEwfQABMH8AATCAAAEwgQABMIMAATCEAAEwwwABMMUAATDHAAEwyQABMMwAATDNAAEwzgABMM8AATDQAAEw0gABMNQAATDVAAEw1gABMNgAATDZAAExGAABMRoAATEcAAExHgABMSEAATEiAAExIwABMSQAATElAAExJwABMSkAATEqAAExKwABMS0AATEuAAExbQABMW8AATFxAAExcwABMXYAATF3AAExeAABMXkAATF6AAExfAABMX4AATF/AAExgAABMYIAATGDAAExqAABMcwAATHzAAEyFwABMhoAATIcAAEyHgABMiAAATIiAAEyJAABMiUAATIoAAEyNQABMkQAATJGAAEySAABMkoAATJMAAEyTgABMlAAATJSAAEyYQABMmQAATJnAAEyagABMm0AATJwAAEycwABMnYAATJ4AAEytwABMrkAATK7AAEyvQABMsAAATLBAAEywgABMsMAATLEAAEyxgABMsgAATLJAAEyygABMswAATLNAAEzDAABMw4AATMQAAEzEgABMxUAATMWAAEzFwABMxgAATMZAAEzGwABMx0AATMeAAEzHwABMyEAATMiAAEzYQABM2MAATNlAAEzZwABM2oAATNrAAEzbAABM20AATNuAAEzcAABM3IAATNzAAEzdAABM3YAATN3AAEztgABM7gAATO6AAEzvAABM78AATPAAAEzwQABM8IAATPDAAEzxQABM8cAATPIAAEzyQABM8sAATPMAAE0CwABNA0AATQPAAE0EQABNBQAATQVAAE0FgABNBcAATQYAAE0GgABNBwAATQdAAE0HgABNCAAATQhAAE0YAABNGIAATRkAAE0ZgABNGkAATRqAAE0awABNGwAATRtAAE0bwABNHEAATRyAAE0cwABNHUAATR2AAE0tQABNLcAATS6AAE0vAABNL8AATTAAAE0wQABNMIAATTDAAE0xQABNMcAATTIAAE0yQABNMsAATTMAAE1FwABNToAATVaAAE1egABNXwAATV+AAE1gAABNYIAATWEAAE1hQABNYYAATWJAAE1igABNYwAATWNAAE1jwABNZEAATWSAAE1kwABNZYAATWXAAE1nAABNakAATWuAAE1sAABNbIAATW3AAE1ugABNb0AATW/AAE15AABNggAATYvAAE2UwABNlYAATZYAAE2WgABNlwAATZeAAE2YAABNmEAATZkAAE2cQABNoIAATaEAAE2hgABNogAATaKAAE2jAABNo4AATaQAAE2kgABNqMAATamAAE2qQABNqwAATavAAE2sgABNrUAATa4AAE2uwABNr0AATb8AAE2/gABNwAAATcCAAE3BQABNwYAATcHAAE3CAABNwkAATcLAAE3DQABNw4AATcPAAE3EQABNxIAATdRAAE3UwABN1UAATdXAAE3WgABN1sAATdcAAE3XQABN14AATdgAAE3YgABN2MAATdkAAE3ZgABN2cAATemAAE3qAABN6sAATetAAE3sAABN7EAATeyAAE3swABN7QAATe2AAE3uAABN7kAATe6AAE3vAABN70AATfKAAE3ywABN8wAATfOAAE4DQABOA8AATgRAAE4EwABOBYAATgXAAE4GAABOBkAATgaAAE4HAABOB4AATgfAAE4IAABOCIAATgjAAE4YgABOGQAAThmAAE4aAABOGsAAThsAAE4bQABOG4AAThvAAE4cQABOHMAATh0AAE4dQABOHcAATh4AAE4twABOLkAATi7AAE4vQABOMAAATjBAAE4wgABOMMAATjEAAE4xgABOMgAATjJAAE4ygABOMwAATjNAAE5DAABOQ4AATkQAAE5EgABORUAATkWAAE5FwABORgAATkZAAE5GwABOR0AATkeAAE5HwABOSEAATkiAAE5YQABOWMAATllAAE5ZwABOWoAATlrAAE5bAABOW0AATluAAE5cAABOXIAATlzAAE5dAABOXYAATl3AAE5nAABOcAAATnnAAE6CwABOg4AAToQAAE6EgABOhQAAToWAAE6GAABOhkAATocAAE6KQABOjgAATo6AAE6PAABOj4AATpAAAE6QgABOkQAATpGAAE6VQABOlgAATpbAAE6XgABOmEAATpkAAE6ZwABOmoAATpsAAE6qwABOq0AATqvAAE6sQABOrQAATq1AAE6tgABOrcAATq4AAE6ugABOrwAATq9AAE6vgABOsAAATrBAAE7AAABOwIAATsEAAE7BgABOwkAATsKAAE7CwABOwwAATsNAAE7DwABOxEAATsSAAE7EwABOxUAATsWAAE7VQABO1cAATtZAAE7WwABO14AATtfAAE7YAABO2EAATtiAAE7ZAABO2YAATtnAAE7aAABO2oAATtrAAE7qgABO6wAATuvAAE7sQABO7QAATu1AAE7tgABO7cAATu4AAE7ugABO7wAATu9AAE7vgABO8AAATvBAAE8AAABPAIAATwEAAE8BgABPAkAATwKAAE8CwABPAwAATwNAAE8DwABPBEAATwSAAE8EwABPBUAATwWAAE8VQABPFcAATxZAAE8WwABPF4AATxfAAE8YAABPGEAATxiAAE8ZAABPGYAATxnAAE8aAABPGoAATxrAAE8qgABPKwAATyvAAE8sQABPLQAATy1AAE8tgABPLcAATy4AAE8ugABPLwAATy9AAE8vgABPMAAATzBAAE9DAABPS8AAT1PAAE9bwABPXEAAT1zAAE9dQABPXcAAT16AAE9ewABPXwAAT1/AAE9gAABPYIAAT2DAAE9hQABPYgAAT2JAAE9igABPY0AAT2OAAE9kwABPaAAAT2lAAE9pwABPakAAT2uAAE9sQABPbQAAT22AAE92wABPf8AAT4mAAE+SgABPk0AAT5PAAE+UQABPlMAAT5VAAE+VwABPlgAAT5bAAE+aAABPnkAAT57AAE+fQABPn8AAT6BAAE+gwABPoUAAT6HAAE+iQABPpoAAT6dAAE+oAABPqMAAT6mAAE+qQABPqwAAT6vAAE+sgABPrQAAT7zAAE+9QABPvcAAT75AAE+/AABPv0AAT7+AAE+/wABPwAAAT8CAAE/BAABPwUAAT8GAAE/CAABPwkAAT9IAAE/SgABP0wAAT9OAAE/UQABP1IAAT9TAAE/VAABP1UAAT9XAAE/WQABP1oAAT9bAAE/XQABP14AAT+dAAE/nwABP6IAAT+kAAE/pwABP6gAAT+pAAE/qgABP6sAAT+tAAE/rwABP7AAAT+xAAE/swABP7QAAT/BAAE/wgABP8MAAT/FAAFABAABQAYAAUAIAAFACgABQA0AAUAOAAFADwABQBAAAUARAAFAEwABQBUAAUAWAAFAFwABQBkAAUAaAAFAWQABQFsAAUBdAAFAXwABQGIAAUBjAAFAZAABQGUAAUBmAAFAaAABQGoAAUBrAAFAbAABQG4AAUBvAAFArgABQLAAAUCyAAFAtAABQLcAAUC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EAAFXBQABVwYAAVcIAAFXCgABVwsAAVcMAAFXDgABVw8AAVdOAAFXUAABV1MAAVdVAAFXVwABV1gAAVdZAAFXWgABV1sAAVddAAFXXwABV2AAAVdhAAFXYwABV2QAAVevAAFX0gABV/IAAVgSAAFYFAABWBYAAVgYAAFYGgABWBwAAVgdAAFYHgABWCEAAVgiAAFYJAABWCUAAVgnAAFYKQABWCoAAVgrAAFYLgABWC8AAVg0AAFYQQABWEYAAVhIAAFYSgABWE8AAVhSAAFYVQABWFcAAVh8AAFYoAABWMcAAVjrAAFY7gABWPAAAVjyAAFY9AABWPYAAVj4AAFY+QABWPwAAVkJAAFZGgABWRwAAVkeAAFZIAABWSIAAVkkAAFZJgABWSgAAVkqAAFZOwABWT4AAVlBAAFZRAABWUcAAVlKAAFZTQABWVAAAVlTAAFZVQABWZQAAVmWAAFZmAABWZoAAVmdAAFZngABWZ8AAVmgAAFZoQABWaMAAVmlAAFZpgABWacAAVmpAAFZqgABWekAAVnrAAFZ7QABWe8AAVnyAAFZ8wABWfQAAVn1AAFZ9gABWfgAAVn6AAFZ+wABWfwAAVn+AAFZ/wABWj4AAVpAAAFaQwABWkUAAVpIAAFaSQABWkoAAVpLAAFaTAABWk4AAVpQAAFaUQABWlIAAVpUAAFaVQABWmIAAVpjAAFaZAABWmYAAVqlAAFapwABWqkAAVqrAAFargABWq8AAVqwAAFasQABWrIAAVq0AAFatgABWrcAAVq4AAFaugABWrsAAVr6AAFa/AABWv4AAVsAAAFbAwABWwQAAVsFAAFbBgABWwcAAVsJAAFbCwABWwwAAVsNAAFbDwABWxAAAVtPAAFbUQABW1MAAVtVAAFbWAABW1kAAVtaAAFbWwABW1wAAVteAAFbYAABW2EAAVtiAAFbZAABW2UAAVukAAFbpgABW6gAAVuqAAFbrQABW64AAVuvAAFbsAABW7EAAVuzAAFbtQABW7YAAVu3AAFbuQABW7oAAVv5AAFb+wABW/0AAVv/AAFcAgABXAMAAVwEAAFcBQABXAYAAVwIAAFcCgABXAsAAVwMAAFcDgABXA8AAVw0AAFcWAABXH8AAVyjAAFcpgABXKgAAVyqAAFcrAABXK4AAVywAAFcsQABXLQAAVzBAAFc0AABXNIAAVzUAAFc1gABXNgAAVzaAAFc3AABXN4AAVztAAFc8AABXPMAAVz2AAFc+QABXPwAAVz/AAFdAgABXQQAAV1DAAFdRQABXUcAAV1JAAFdTAABXU0AAV1OAAFdTwABXVAAAV1SAAFdVAABXVUAAV1WAAFdWAABXVkAAV2YAAFdmgABXZwAAV2eAAFdoQABXaIAAV2jAAFdpAABXaUAAV2nAAFdqQABXaoAAV2rAAFdrQABXa4AAV3tAAFd7wABXfEAAV3zAAFd9gABXfcAAV34AAFd+QABXfoAAV38AAFd/gABXf8AAV4AAAFeAgABXgMAAV5CAAFeRAABXkcAAV5JAAFeTAABXk0AAV5OAAFeTwABXlAAAV5SAAFeVAABXlUAAV5WAAFeWAABXlkAAV5cAAFemwABXp0AAV6fAAFeoQABXqQAAV6lAAFepgABXqcAAV6oAAFeqgABXqwAAV6tAAFergABXrAAAV6xAAFe8AABXvIAAV70AAFe9gABXvkAAV76AAFe+wABXvwAAV79AAFe/wABXwEAAV8CAAFfAwABXwUAAV8GAAFfRQABX0cAAV9JAAFfSwABX04AAV9PAAFfUAABX1EAAV9SAAFfVAABX1YAAV9XAAFfWAABX1oAAV9bAAFfpgABX8kAAV/pAAFgCQABYAsAAWANAAFgDwABYBEAAWATAAFgFAABYBUAAWAYAAFgGQABYBsAAWAcAAFgHgABYCAAAWAhAAFgIgABYCUAAWAmAAFgKwABYDgAAWA9AAFgPwABYEEAAWBGAAFgSQABYEwAAWBOAAFgcwABYJcAAWC+AAFg4gABYOUAAWDnAAFg6QABYOsAAWDtAAFg7wABYPAAAWDzAAFhAAABYREAAWETAAFhFQABYRcAAWEZAAFhGwABYR0AAWEfAAFhIQABYTIAAWE1AAFhOAABYTsAAWE+AAFhQQABYUQAAWFHAAFhSgABYUwAAWGLAAFhjQABYY8AAWGRAAFhlAABYZUAAWGWAAFhlwABYZgAAWGaAAFhnAABYZ0AAWGeAAFhoAABYaEAAWHgAAFh4gABYeQAAWHmAAFh6QABYeoAAWHrAAFh7AABYe0AAWHvAAFh8QABYfIAAWHzAAFh9QABYfYAAWI1AAFiNwABYjoAAWI8AAFiPwABYkAAAWJBAAFiQgABYkMAAWJFAAFiRwABYkgAAWJJAAFiSwABYkwAAWJZAAFiWgABYlsAAWJdAAFinAABYp4AAWKgAAFiogABYqUAAWKmAAFipwABYqgAAWKpAAFiqwABYq0AAWKuAAFirwABYrEAAWKyAAFi8QABYvMAAWL1AAFi9wABYvoAAWL7AAFi/AABYv0AAWL+AAFjAAABYwIAAWMDAAFjBAABYwYAAWMHAAFjRgABY0gAAWNKAAFjTAABY08AAWNQAAFjUQABY1IAAWNTAAFjVQABY1cAAWNYAAFjWQABY1sAAWNcAAFjmwABY50AAWOfAAFjoQABY6QAAWOlAAFjpgABY6cAAWOoAAFjqgABY6wAAWOtAAFjrgABY7AAAWOxAAFj8AABY/IAAWP0AAFj9gABY/kAAWP6AAFj+wABY/wAAWP9AAFj/wABZAEAAWQCAAFkAwABZAUAAWQGAAFkKwABZE8AAWR2AAFkmgABZJ0AAWSfAAFkoQABZKMAAWSlAAFkpwABZKgAAWSrAAFkuAABZMcAAWTJAAFkywABZM0AAWTPAAFk0QABZNMAAWTVAAFk5AABZOcAAWTqAAFk7QABZPAAAWTzAAFk9gABZPkAAWT7AAFlOgABZTwAAWU/AAFlQQABZUQAAWVFAAFlRgABZUcAAWVIAAFlSgABZUwAAWVNAAFlTgABZVAAAWVRAAFlUwABZZIAAWWUAAFllgABZZgAAWWbAAFlnAABZZ0AAWWeAAFlnwABZaEAAWWjAAFlpAABZaUAAWWnAAFlqAABZecAAWXpAAFl6wABZe0AAWXwAAFl8QABZfIAAWXzAAFl9AABZfYAAWX4AAFl+QABZfoAAWX8AAFl/QABZjwAAWY+AAFmQQABZkMAAWZGAAFmRwABZkgAAWZJAAFmSgABZkwAAWZOAAFmTwABZlAAAWZSAAFmUwABZlUAAWaUAAFmlgABZpgAAWaaAAFmnQABZp4AAWafAAFmoAABZqEAAWajAAFmpQABZqYAAWanAAFmqQABZqoAAWbpAAFm6wABZu0AAWbvAAFm8gABZvMAAWb0AAFm9QABZvYAAWb4AAFm+gABZvsAAWb8AAFm/gABZv8AAWc+AAFnQAABZ0IAAWdEAAFnRwABZ0gAAWdJAAFnSgABZ0sAAWdNAAFnTwABZ1AAAWdRAAFnUwABZ1QAAWefAAFnwgABZ+IAAWgCAAFoBAABaAYAAWgIAAFoCgABaAwAAWgNAAFoDgABaBEAAWgSAAFoFAABaBUAAWgXAAFoGQABaBoAAWgbAAFoHgABaB8AAWgkAAFoMQABaDYAAWg4AAFoOgABaD8AAWhCAAFoRQABaEcAAWhsAAFokAABaLcAAWjbAAFo3gABaOAAAWjiAAFo5AABaOYAAWjoAAFo6QABaOwAAWj5AAFpCgABaQwAAWkOAAFpEAABaRIAAWkUAAFpFgABaRgAAWkaAAFpKwABaS4AAWkxAAFpNAABaTcAAWk6AAFpPQABaUAAAWlDAAFpRQABaYQAAWmGAAFpiAABaYoAAWmNAAFpjgABaY8AAWmQAAFpkQABaZMAAWmVAAFplgABaZcAAWmZAAFpmgABadkAAWnbAAFp3QABad8AAWniAAFp4wABaeQAAWnlAAFp5gABaegAAWnqAAFp6wABaewAAWnuAAFp7wABai4AAWowAAFqMwABajUAAWo4AAFqOQABajoAAWo7AAFqPAABaj4AAWpAAAFqQQABakIAAWpEAAFqRQABalIAAWpTAAFqVAABalYAAWqVAAFqlwABapkAAWqbAAFqngABap8AAWqgAAFqoQABaqIAAWqkAAFqpgABaqcAAWqoAAFqqgABaqsAAWrqAAFq7AABau4AAWrwAAFq8wABavQAAWr1AAFq9gABavcAAWr5AAFq+wABavwAAWr9AAFq/wABawAAAWs/AAFrQQABa0MAAWtFAAFrSAABa0kAAWtKAAFrSwABa0wAAWtOAAFrUAABa1EAAWtSAAFrVAABa1UAAWuUAAFrlgABa5gAAWuaAAFrnQABa54AAWufAAFroAABa6EAAWujAAFrpQABa6YAAWunAAFrqQABa6oAAWvpAAFr6wABa+0AAWvvAAFr8gABa/MAAWv0AAFr9QABa/YAAWv4AAFr+gABa/sAAWv8AAFr/gABa/8AAWwkAAFsSAABbG8AAWyTAAFslgABbJgAAWyaAAFsnAABbJ4AAWygAAFsoQABbKQAAWyxAAFswAABbMIAAWzEAAFsxgABbMgAAWzKAAFszAABbM4AAWzdAAFs4AABbOMAAWzmAAFs6QABbOwAAWzvAAFs8gABbPQAAW0zAAFtNQABbTgAAW06AAFtPQABbT4AAW0/AAFtQAABbUEAAW1DAAFtRQABbUYAAW1HAAFtSQABbUoAAW1NAAFtjAABbY4AAW2QAAFtkgABbZUAAW2WAAFtlwABbZgAAW2ZAAFtmwABbZ0AAW2eAAFtnwABbaEAAW2iAAFt4QABbeMAAW3lAAFt5wABbeoAAW3rAAFt7AABbe0AAW3uAAFt8AABbfIAAW3zAAFt9AABbfYAAW33AAFuNgABbjgAAW47AAFuPQABbkAAAW5BAAFuQgABbkMAAW5EAAFuRgABbkgAAW5JAAFuSgABbkwAAW5NAAFuUAABbo8AAW6RAAFukwABbpUAAW6YAAFumQABbpoAAW6bAAFunAABbp4AAW6gAAFuoQABbqIAAW6kAAFupQABbuQAAW7mAAFu6AABbuoAAW7tAAFu7gABbu8AAW7wAAFu8QABbvMAAW71AAFu9gABbvcAAW75AAFu+gABbzkAAW87AAFvPQABbz8AAW9CAAFvQwABb0QAAW9FAAFvRgABb0gAAW9KAAFvSwABb0wAAW9OAAFvTwABb5oAAW+9AAFv3QABb/0AAW//AAFwAQABcAMAAXAFAAFwBwABcAgAAXAJAAFwDAABcA0AAXAPAAFwEAABcBIAAXAUAAFwFQABcBYAAXAZAAFwGgABcCMAAXAwAAFwNQABcDcAAXA5AAFwPgABcEEAAXBEAAFwRgABcGsAAXCPAAFwtgABcNoAAXDdAAFw3wABcOEAAXDjAAFw5QABcOcAAXDoAAFw6wABcPgAAXEJAAFxCwABcQ0AAXEPAAFxEQABcRMAAXEVAAFxFwABcRkAAXEqAAFxLQABcTAAAXEzAAFxNgABcTkAAXE8AAFxPwABcUIAAXFEAAFxgwABcYUAAXGHAAFxiQABcYwAAXGNAAFxjgABcY8AAXGQAAFxkgABcZQAAXGVAAFxlgABcZgAAXGZAAFx2AABcdoAAXHcAAFx3gABceEAAXHiAAFx4wABceQAAXHlAAFx5wABcekAAXHqAAFx6wABce0AAXHuAAFyLQABci8AAXIyAAFyNAABcjcAAXI4AAFyOQABcjoAAXI7AAFyPQABcj8AAXJAAAFyQQABckMAAXJEAAFyUQABclIAAXJTAAFyVQABcpQAAXKWAAFymAABcpoAAXKdAAFyngABcp8AAXKgAAFyoQABcqMAAXKlAAFypgABcqcAAXKpAAFyqgABcukAAXLrAAFy7QABcu8AAXLyAAFy8wABcvQAAXL1AAFy9gABcvgAAXL6AAFy+wABcvwAAXL+AAFy/wABcz4AAXNAAAFzQgABc0QAAXNHAAFzSAABc0kAAXNKAAFzSwABc00AAXNPAAFzUAABc1EAAXNTAAFzVAABc5MAAXOVAAFzlwABc5kAAXOcAAFznQABc54AAXOfAAFzoAABc6IAAXOkAAFzpQABc6YAAXOoAAFzqQABc+gAAXPqAAFz7AABc+4AAXPxAAFz8gABc/MAAXP0AAFz9QABc/cAAXP5AAFz+gABc/sAAXP9AAFz/gABdCMAAXRHAAF0bgABdJIAAXSVAAF0lwABdJkAAXSbAAF0nQABdJ8AAXSgAAF0owABdLAAAXS/AAF0wQABdMMAAXTFAAF0xwABdMkAAXTLAAF0zQABdNwAAXTfAAF04gABdOUAAXToAAF06wABdO4AAXTxAAF08wABdTIAAXU0AAF1NgABdTgAAXU7AAF1PAABdT0AAXU+AAF1PwABdUEAAXVDAAF1RAABdUUAAXVHAAF1SAABdYcAAXWJAAF1iwABdY0AAXWQAAF1kQABdZIAAXWTAAF1lAABdZYAAXWYAAF1mQABdZoAAXWcAAF1nQABddwAAXXeAAF14AABdeIAAXXlAAF15gABdecAAXXoAAF16QABdesAAXXtAAF17gABde8AAXXxAAF18gABdjEAAXYzAAF2NgABdjgAAXY7AAF2PAABdj0AAXY+AAF2PwABdkEAAXZDAAF2RAABdkUAAXZHAAF2SAABdocAAXaJAAF2iwABdo0AAXaQAAF2kQABdpIAAXaTAAF2lAABdpYAAXaYAAF2mQABdpoAAXacAAF2nQABdtwAAXbeAAF24AABduIAAXblAAF25gABducAAXboAAF26QABdusAAXbtAAF27gABdu8AAXbxAAF28gABdzEAAXczAAF3NQABdzcAAXc6AAF3OwABdzwAAXc9AAF3PgABd0AAAXdCAAF3QwABd0QAAXdGAAF3RwABd5IAAXe1AAF31QABd/UAAXf3AAF3+QABd/sAAXf9AAF3/wABeAAAAXgBAAF4BAABeAUAAXgHAAF4CAABeAoAAXgMAAF4DQABeA4AAXgRAAF4EgABeBsAAXgoAAF4LQABeC8AAXgxAAF4NgABeDkAAXg8AAF4PgABeGMAAXiHAAF4rgABeNIAAXjVAAF41wABeNkAAXjbAAF43QABeN8AAXjgAAF44wABePAAAXkBAAF5AwABeQUAAXkHAAF5CQABeQsAAXkNAAF5DwABeREAAXkiAAF5JQABeSgAAXkrAAF5LgABeTEAAXk0AAF5NwABeToAAXk8AAF5ewABeX0AAXl/AAF5gQABeYQAAXmFAAF5hgABeYcAAXmIAAF5igABeYwAAXmNAAF5jgABeZAAAXmRAAF50AABedIAAXnUAAF51gABedkAAXnaAAF52wABedwAAXndAAF53wABeeEAAXniAAF54wABeeUAAXnmAAF6JQABeicAAXoqAAF6LAABei8AAXowAAF6MQABejIAAXozAAF6NQABejcAAXo4AAF6OQABejsAAXo8AAF6SQABekoAAXpLAAF6TQABeowAAXqOAAF6kAABepIAAXqVAAF6lgABepcAAXqYAAF6mQABepsAAXqdAAF6ngABep8AAXqhAAF6ogABeuEAAXrjAAF65QABeucAAXrqAAF66wABeuwAAXrtAAF67gABevAAAXryAAF68wABevQAAXr2AAF69wABezYAAXs4AAF7OgABezwAAXs/AAF7QAABe0EAAXtCAAF7QwABe0UAAXtHAAF7SAABe0kAAXtLAAF7TAABe4sAAXuNAAF7jwABe5EAAXuUAAF7lQABe5YAAXuXAAF7mAABe5oAAXucAAF7nQABe54AAXugAAF7oQABe+AAAXviAAF75AABe+YAAXvpAAF76gABe+sAAXvsAAF77QABe+8AAXvxAAF78gABe/MAAXv1AAF79gABfBsAAXw/AAF8ZgABfIoAAXyNAAF8jwABfJEAAXyTAAF8lQABfJcAAXyYAAF8mwABfKgAAXy3AAF8uQABfLsAAXy9AAF8vwABfMEAAXzDAAF8xQABfNQAAXzXAAF82gABfN0AAXzgAAF84wABfOYAAXzpAAF86wABfSoAAX0sAAF9LgABfTAAAX0zAAF9NAABfTUAAX02AAF9NwABfTkAAX07AAF9PAABfT0AAX0/AAF9QAABfX8AAX2BAAF9gwABfYUAAX2IAAF9iQABfYoAAX2LAAF9jAABfY4AAX2QAAF9kQABfZIAAX2UAAF9lQABfdQAAX3WAAF92AABfdoAAX3dAAF93gABfd8AAX3gAAF94QABfeMAAX3lAAF95gABfecAAX3pAAF96gABfikAAX4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2AAGJdwABiXgAAYl6AAGJfAABiX0AAYl+AAGJgAABiYEAAYnAAAGJwgABicQAAYnGAAGJyQABicoAAYnLAAGJzAABic0AAYnPAAGJ0QABidIAAYnTAAGJ1QABidYAAYoVAAGKFwABihoAAYocAAGKHwABiiAAAYohAAGKIgABiiMAAYolAAGKJwABiigAAYopAAGKKwABiiwAAYo5AAGKOgABijsAAYo9AAGKfAABin4AAYqAAAGKggABioUAAYqGAAGKhwABiogAAYqJAAGKiwABio0AAYqOAAGKjwABipEAAYqSAAGK0QABitMAAYrVAAGK1wABitoAAYrbAAGK3AABit0AAYreAAGK4AABiuIAAYrjAAGK5AABiuYAAYrnAAGLJgABiygAAYsqAAGLLAABiy8AAYswAAGLMQABizIAAYszAAGLNQABizcAAYs4AAGLOQABizsAAYs8AAGLewABi30AAYt/AAGLgQABi4QAAYuFAAGLhgABi4cAAYuIAAGLigABi4wAAYuNAAGLjgABi5AAAYuRAAGL0AABi9IAAYvUAAGL1gABi9kAAYvaAAGL2wABi9wAAYvdAAGL3wABi+EAAYviAAGL4wABi+UAAYvmAAGMCwABjC8AAYxWAAGMegABjH0AAYx/AAGMgQABjIMAAYyFAAGMhwABjIgAAYyLAAGMmAABjKcAAYypAAGMqwABjK0AAYyvAAGMsQABjLMAAYy1AAGMxAABjMcAAYzKAAGMzQABjNAAAYzTAAGM1gABjNkAAYzbAAGNGgABjRwAAY0eAAGNIAABjSMAAY0kAAGNJQABjSYAAY0nAAGNKQABjSsAAY0sAAGNLQABjS8AAY0wAAGNbwABjXEAAY1zAAGNdQABjXgAAY15AAGNegABjXsAAY18AAGNfgABjYAAAY2BAAGNggABjYQAAY2FAAGNxAABjcYAAY3IAAGNygABjc0AAY3OAAGNzwABjdAAAY3RAAGN0wABjdUAAY3WAAGN1wABjdkAAY3aAAGOGQABjhsAAY4eAAGOIAABjiMAAY4kAAGOJQABjiYAAY4nAAGOKQABjisAAY4sAAGOLQABji8AAY4wAAGObwABjnEAAY5zAAGOdQABjngAAY55AAGOegABjnsAAY58AAGOfgABjoAAAY6BAAGOggABjoQAAY6FAAGOxAABjsYAAY7IAAGOygABjs0AAY7OAAGOzwABjtAAAY7RAAGO0wABjtUAAY7WAAGO1wABjtkAAY7aAAGPGQABjxsAAY8dAAGPHwABjyIAAY8jAAGPJAABjyUAAY8mAAGPKAABjyoAAY8rAAGPLAABjy4AAY8vAAGPegABj50AAY+9AAGP3QABj98AAY/hAAGP4wABj+UAAY/nAAGP6AABj+kAAY/sAAGP7QABj+8AAY/wAAGP8gABj/QAAY/1AAGP9gABj/kAAY/6AAGP/wABkAwAAZARAAGQEwABkBUAAZAaAAGQHQABkCAAAZAiAAGQRwABkGsAAZCSAAGQtgABkLkAAZC7AAGQvQABkL8AAZDBAAGQwwABkMQAAZDHAAGQ1AABkOUAAZDnAAGQ6QABkOsAAZDtAAGQ7wABkPEAAZDzAAGQ9QABkQYAAZEJAAGRDAABkQ8AAZESAAGRFQABkRgAAZEbAAGRHgABkSAAAZFfAAGRYQABkWMAAZFlAAGRaAABkWkAAZFqAAGRawABkWwAAZFuAAGRcAABkXEAAZFyAAGRdAABkXUAAZG0AAGRtgABkbgAAZG6AAGRvQABkb4AAZG/AAGRwAABkcEAAZHDAAGRxQABkcYAAZHHAAGRyQABkcoAAZIJAAGSCwABkg4AAZIQAAGSEwABkhQAAZIVAAGSFgABkhcAAZIZAAGSGwABkhwAAZIdAAGSHwABkiAAAZItAAGSLgABki8AAZIxAAGScAABknIAAZJ0AAGSdgABknkAAZJ6AAGSewABknwAAZJ9AAGSfwABkoEAAZKCAAGSgwABkoUAAZKGAAGSxQABkscAAZLJAAGSywABks4AAZLPAAGS0AABktEAAZLSAAGS1AABktYAAZLXAAGS2AABktoAAZLbAAGTGgABkxwAAZMeAAGTIAABkyMAAZMkAAGTJQABkyYAAZMnAAGTKQABkysAAZMsAAGTLQABky8AAZMwAAGTbwABk3EAAZNzAAGTdQABk3gAAZN5AAGTegABk3sAAZN8AAGTfgABk4AAAZOBAAGTggABk4QAAZOFAAGTxAABk8YAAZPIAAGTygABk80AAZPOAAGTzwABk9AAAZPRAAGT0wABk9UAAZPWAAGT1wABk9kAAZPaAAGT/wABlCMAAZRKAAGUbgABlHEAAZRzAAGUdQABlHcAAZR5AAGUewABlHwAAZR/AAGUjAABlJsAAZSdAAGUnwABlKEAAZSjAAGUpQABlKcAAZSpAAGUuAABlLsAAZS+AAGUwQABlMQAAZTHAAGUygABlM0AAZTPAAGVDgABlRAAAZUSAAGVFAABlRcAAZUYAAGVGQABlRoAAZUbAAGVHQABlR8AAZUgAAGVIQABlSMAAZUkAAGVYwABlWUAAZVnAAGVaQABlWwAAZVtAAGVbgABlW8AAZVwAAGVcgABlXQAAZV1AAGVdgABlXgAAZV5AAGVuAABlboAAZW8AAGVvgABlcEAAZXCAAGVwwABlcQAAZXFAAGVxwABlckAAZXKAAGVywABlc0AAZXOAAGWDQABlg8AAZYSAAGWFAABlhcAAZYYAAGWGQABlhoAAZYbAAGWHQABlh8AAZYgAAGWIQABliMAAZYkAAGWYwABlmUAAZZnAAGWaQABlmwAAZZtAAGWbgABlm8AAZZwAAGWcgABlnQAAZZ1AAGWdgABlngAAZZ5AAGWuAABlroAAZa8AAGWvgABlsEAAZbCAAGWwwABlsQAAZbFAAGWxwABlskAAZbKAAGWywABls0AAZbOAAGXDQABlw8AAZcRAAGXEwABlxYAAZcXAAGXGAABlxkAAZcaAAGXHAABlx4AAZcfAAGXIAABlyIAAZcjAAGXbgABl5EAAZexAAGX0QABl9MAAZfVAAGX1wABl9kAAZfbAAGX3AABl90AAZfgAAGX4QABl+MAAZfkAAGX5gABl+gAAZfpAAGX6gABl+0AAZfuAAGX8wABmAAAAZgFAAGYBwABmAkAAZgOAAGYEQABmBQAAZgWAAGYOwABmF8AAZiGAAGYqgABmK0AAZivAAGYsQABmLMAAZi1AAGYtwABmLgAAZi7AAGYyAABmNkAAZjbAAGY3QABmN8AAZjhAAGY4wABmOUAAZjnAAGY6QABmPoAAZj9AAGZAAABmQMAAZkGAAGZCQABmQwAAZkPAAGZEgABmRQAAZlTAAGZVQABmVcAAZlZAAGZXAABmV0AAZleAAGZXwABmWAAAZliAAGZZAABmWUAAZlmAAGZaAABmWkAAZmoAAGZqgABmawAAZmuAAGZsQABmbIAAZmzAAGZtAABmbUAAZm3AAGZuQABmboAAZm7AAGZvQABmb4AAZn9AAGZ/wABmgIAAZoEAAGaBwABmggAAZoJAAGaCgABmgsAAZoNAAGaDwABmhAAAZoRAAGaEwABmhQAAZohAAGaIgABmiMAAZolAAGaZAABmmYAAZpoAAGaagABmm0AAZpuAAGabwABmnAAAZpxAAGacwABmnUAAZp2AAGadwABmnkAAZp6AAGauQABmrsAAZq9AAGavwABmsIAAZrDAAGaxAABmsUAAZrGAAGayAABmsoAAZrLAAGazAABms4AAZrPAAGbDgABmxAAAZsSAAGbFAABmxcAAZsYAAGbGQABmxoAAZsbAAGbHQABmx8AAZsgAAGbIQABmyMAAZskAAGbYwABm2UAAZtnAAGbaQABm2wAAZttAAGbbgABm28AAZtwAAGbcgABm3QAAZt1AAGbdgABm3gAAZt5AAGbuAABm7oAAZu8AAGbvgABm8EAAZvCAAGbwwABm8QAAZvFAAGbxwABm8kAAZvKAAGbywABm80AAZvOAAGb8wABnBcAAZw+AAGcYgABnGUAAZxnAAGcaQABnGsAAZxtAAGcbwABnHAAAZxzAAGcgAABnI8AAZyRAAGckwABnJUAAZyXAAGcmQABnJsAAZydAAGcrAABnK8AAZyyAAGctQABnLgAAZy7AAGcvgABnMEAAZzDAAGdAgABnQQAAZ0HAAGdCQABnQwAAZ0NAAGdDgABnQ8AAZ0QAAGdEgABnRQAAZ0VAAGdFgABnRgAAZ0ZAAGdWAABnVoAAZ1cAAGdXgABnWEAAZ1iAAGdYwABnWQAAZ1lAAGdZwABnWkAAZ1qAAGdawABnW0AAZ1uAAGdrQABna8AAZ2xAAGdswABnbYAAZ23AAGduAABnbkAAZ26AAGdvAABnb4AAZ2/AAGdwAABncIAAZ3DAAGeAgABngQAAZ4HAAGeCQABngwAAZ4NAAGeDgABng8AAZ4QAAGeEgABnhQAAZ4VAAGeFgABnhgAAZ4ZAAGeWAABnloAAZ5cAAGeXgABnmEAAZ5iAAGeYwABnmQAAZ5lAAGeZwABnmkAAZ5qAAGeawABnm0AAZ5uAAGerQABnq8AAZ6xAAGeswABnrYAAZ63AAGeuAABnrkAAZ66AAGevAABnr4AAZ6/AAGewAABnsIAAZ7DAAGfAgABnwQAAZ8GAAGfCAABnwsAAZ8MAAGfDQABnw4AAZ8PAAGfEQABnxMAAZ8UAAGfFQABnxcAAZ8YAAGfYwABn4YAAZ+mAAGfxgABn8gAAZ/KAAGfzAABn84AAZ/QAAGf0QABn9IAAZ/VAAGf1gABn9gAAZ/ZAAGf2wABn90AAZ/eAAGf3wABn+IAAZ/jAAGf6AABn/UAAZ/6AAGf/AABn/4AAaADAAGgBgABoAkAAaALAAGgMAABoFQAAaB7AAGgnwABoKIAAaCkAAGgpgABoKgAAaCqAAGgrAABoK0AAaCwAAGgvQABoM4AAaDQAAGg0gABoNQAAaDWAAGg2AABoNoAAaDcAAGg3gABoO8AAaDyAAGg9QABoPgAAaD7AAGg/gABoQEAAaEEAAGhBwABoQkAAaFIAAGhSgABoUwAAaFOAAGhUQABoVIAAaFTAAGhVAABoVUAAaFXAAGhWQABoVoAAaFbAAGhXQABoV4AAaGdAAGhnwABoaEAAaGjAAGhpgABoacAAaGoAAGhqQABoaoAAaGsAAGhrgABoa8AAaGwAAGhsgABobMAAaHyAAGh9AABofcAAaH5AAGh/AABof0AAaH+AAGh/wABogAAAaICAAGiBAABogUAAaIGAAGiCAABogkAAaIWAAGiFwABohgAAaIaAAGiWQABolsAAaJdAAGiXwABomIAAaJjAAGiZAABomUAAaJmAAGiaAABomoAAaJrAAGibAABom4AAaJvAAGirgABorAAAaKyAAGitAABorcAAaK4AAGiuQABoroAAaK7AAGivQABor8AAaLAAAGiwQABosMAAaLEAAGjAwABowUAAaMHAAGjCQABowwAAaMNAAGjDgABow8AAaMQAAGjEgABoxQAAaMVAAGjFgABoxgAAaMZAAGjWAABo1oAAaNcAAGjXgABo2EAAaNiAAGjYwABo2QAAaNlAAGjZwABo2kAAaNqAAGjawABo20AAaNuAAGjrQABo68AAaOxAAGjswABo7YAAaO3AAGjuAABo7kAAaO6AAGjvAABo74AAaO/AAGjwAABo8IAAaPDAAGj6AABpAwAAaQzAAGkVwABpFoAAaRcAAGkXgABpGAAAaRiAAGkZAABpGUAAaRoAAGkdQABpIQAAaSGAAGkiAABpIoAAaSMAAGkjgABpJAAAaSSAAGkoQABpKQAAaSnAAGkqgABpK0AAaSwAAGkswABpLYAAaS4AAGk9wABpPkAAaT7AAGk/QABpQAAAaUBAAGlAgABpQMAAaUEAAGlBgABpQgAAaUJAAGlCgABpQwAAaUNAAGlTAABpU4AAaVQAAGlUgABpVUAAaVWAAGlVwABpVgAAaVZAAGlWwABpV0AAaVeAAGlXwABpWEAAaViAAGloQABpaMAAaWlAAGlpwABpaoAAaWrAAGlrAABpa0AAaWuAAGlsAABpbIAAaWzAAGltAABpbYAAaW3AAGl9gABpfgAAaX7AAGl/QABpgAAAaYBAAGmAgABpgMAAaYEAAGmBgABpggAAaYJAAGmCgABpgwAAaYNAAGmEAABpk8AAaZRAAGmUwABplUAAaZYAAGmWQABploAAaZbAAGmXAABpl4AAaZgAAGmYQABpmIAAaZkAAGmZQABpqQAAaamAAGmqAABpqoAAaatAAGmrgABpq8AAaawAAGmsQABprMAAaa1AAGmtgABprcAAaa5AAGmugABpvkAAab7AAGm/QABpv8AAacCAAGnAwABpwQAAacFAAGnBgABpwgAAacKAAGnCwABpwwAAacOAAGnDwABp1oAAad9AAGnnQABp70AAae/AAGnwQABp8MAAafFAAGnxwABp8gAAafJAAGnzAABp80AAafPAAGn0AABp9IAAafUAAGn1QABp9YAAafZAAGn2gABp98AAafsAAGn8QABp/MAAaf1AAGn+gABp/0AAagAAAGoAgABqCcAAahLAAGocgABqJYAAaiZAAGomwABqJ0AAaifAAGooQABqKMAAaikAAGopwABqLQAAajFAAGoxwABqMkAAajLAAGozQABqM8AAajRAAGo0wABqNUAAajmAAGo6QABqOwAAajvAAGo8gABqPUAAaj4AAGo+wABqP4AAakAAAGpPwABqUEAAalDAAGpRQABqUgAAalJAAGpSgABqUsAAalMAAGpTgABqVAAAalRAAGpUgABqVQAAalVAAGplAABqZYAAamYAAGpmgABqZ0AAameAAGpnwABqaAAAamhAAGpowABqaUAAammAAGppwABqakAAamqAAGp6QABqesAAanuAAGp8AABqfMAAan0AAGp9QABqfYAAan3AAGp+QABqfsAAan8AAGp/QABqf8AAaoAAAGqDQABqg4AAaoPAAGqEQABqlAAAapSAAGqVAABqlYAAapZAAGqWgABqlsAAapcAAGqXQABql8AAaphAAGqYgABqmMAAaplAAGqZgABqqUAAaqnAAGqqQABqqsAAaquAAGqrwABqrAAAaqxAAGqsgABqrQAAaq2AAGqtwABqrgAAaq6AAGquwABqvoAAar8AAGq/gABqwAAAasDAAGrBAABqwUAAasGAAGrBwABqwkAAasLAAGrDAABqw0AAasPAAGrEAABq08AAatRAAGrUwABq1UAAatYAAGrWQABq1oAAatbAAGrXAABq14AAatgAAGrYQABq2IAAatkAAGrZQABq6QAAaumAAGrqAABq6oAAautAAGrrgABq68AAauwAAGrsQABq7MAAau1AAGrtgABq7cAAau5AAGrugABq98AAawDAAGsKgABrE4AAaxRAAGsUwABrFUAAaxXAAGsWQABrFsAAaxcAAGsXwABrGwAAax7AAGsfQABrH8AAayBAAGsgwABrIUAAayHAAGsiQABrJgAAaybAAGsngABrKEAAaykAAGspwABrKoAAaytAAGsrwABrO4AAazwAAGs8gABrPQAAaz3AAGs+AABrPkAAaz6AAGs+wABrP0AAaz/AAGtAAABrQEAAa0DAAGtBAABrUMAAa1FAAGtRwABrUkAAa1MAAGtTQABrU4AAa1PAAGtUAABrVIAAa1UAAGtVQABrVYAAa1YAAGtWQABrZgAAa2aAAGtnAABrZ4AAa2hAAGtogABraMAAa2kAAGtpQABracAAa2pAAGtqgABrasAAa2tAAGtrgABre0AAa3vAAGt8gABrfQAAa33AAGt+AABrfkAAa36AAGt+wABrf0AAa3/AAGuAAABrgEAAa4DAAGuBAABrkMAAa5FAAGuRwABrkkAAa5MAAGuTQABrk4AAa5PAAGuUAABrlIAAa5UAAGuVQABrlYAAa5YAAGuWQABrpgAAa6aAAGunAABrp4AAa6hAAGuogABrqMAAa6kAAGupQABrqcAAa6pAAGuqgABrqsAAa6tAAGurgABru0AAa7vAAGu8QABrvMAAa72AAGu9wABrvgAAa75AAGu+gABrvwAAa7+AAGu/wABrwAAAa8CAAGvAwABr04AAa9xAAGvkQABr7EAAa+zAAGvtQABr7cAAa+5AAGvuwABr7wAAa+9AAGvwAABr8EAAa/DAAGvxAABr8YAAa/IAAGvyQABr8oAAa/NAAGvzgABr9MAAa/gAAGv5QABr+cAAa/pAAGv7gABr/EAAa/0AAGv9gABsBsAAbA/AAGwZgABsIoAAbCNAAGwjwABsJEAAbCTAAGwlQABsJcAAbCYAAGwmwABsKgAAbC5AAGwuwABsL0AAbC/AAGwwQABsMMAAbDFAAGwxwABsMkAAbDaAAGw3QABsOAAAbDjAAGw5gABsOkAAbDsAAGw7wABsPIAAbD0AAGxMwABsTUAAbE3AAGxOQABsTwAAbE9AAGxPgABsT8AAbFAAAGxQgABsUQAAbFFAAGxRgABsUgAAbFJAAGxiAABsYoAAbGMAAGxjgABsZEAAbGSAAGxkwABsZQAAbGVAAGxlwABsZkAAbGaAAGxmwABsZ0AAbGeAAGx3QABsd8AAbHiAAGx5AABsecAAbHoAAGx6QABseoAAbHrAAGx7QABse8AAbHwAAGx8QABsfMAAbH0AAGyAQABsgIAAbIDAAGyBQABskQAAbJGAAGySAABskoAAbJNAAGyTgABsk8AAbJQAAGyUQABslMAAbJVAAGyVgABslcAAbJZAAGyWgABspkAAbKbAAGynQABsp8AAbKiAAGyowABsqQAAbKlAAGypgABsqgAAbKqAAGyqwABsqwAAbKuAAGyrwABsu4AAbLwAAGy8gABsvQAAbL3AAGy+AABsvkAAbL6AAGy+wABsv0AAbL/AAGzAAABswEAAbMDAAGzBAABs0MAAbNFAAGzRwABs0kAAbNMAAGzTQABs04AAbNPAAGzUAABs1IAAbNUAAGzVQABs1YAAbNYAAGzWQABs5gAAbOaAAGznAABs54AAbOhAAGzogABs6MAAbOkAAGzpQABs6cAAbOpAAGzqgABs6sAAbOtAAGzrgABs9MAAbP3AAG0HgABtEIAAbRFAAG0RwABtEkAAbRLAAG0TQABtE8AAbRQAAG0UwABtGAAAbRvAAG0cQABtHMAAbR1AAG0dwABtHkAAbR7AAG0fQABtIwAAbSPAAG0kgABtJUAAbSYAAG0mwABtJ4AAbShAAG0owABtOIAAbTkAAG05wABtOkAAbTsAAG07QABtO4AAbTvAAG08AABtPIAAbT0AAG09QABtPYAAbT4AAG0+QABtTgAAbU6AAG1PAABtT4AAbVBAAG1QgABtUMAAbVEAAG1RQABtUcAAbVJAAG1SgABtUsAAbVNAAG1TgABtY0AAbWPAAG1kQABtZMAAbWWAAG1lwABtZgAAbWZAAG1mgABtZwAAbWeAAG1nwABtaAAAbWiAAG1owABteIAAbXkAAG15wABtekAAbXsAAG17QABte4AAbXvAAG18AABtfIAAbX0AAG19QABtfYAAbX4AAG1+QABtjgAAbY6AAG2PAABtj4AAbZBAAG2QgABtkMAAbZEAAG2RQABtkcAAbZJAAG2SgABtksAAbZNAAG2TgABto0AAbaPAAG2kQABtpMAAbaWAAG2lwABtpgAAbaZAAG2mgABtpwAAbaeAAG2nwABtqAAAbaiAAG2owABtuIAAbbkAAG25gABtugAAbbrAAG27AABtu0AAbbuAAG27wABtvEAAbbzAAG29AABtvUAAbb3AAG2+AABt0MAAbdmAAG3hgABt6YAAbeoAAG3qgABt6wAAbeuAAG3sAABt7EAAbeyAAG3tQABt7YAAbe4AAG3uQABt7sAAbe9AAG3vgABt78AAbfCAAG3wwABt8gAAbfVAAG32gABt9wAAbfeAAG34wABt+YAAbfpAAG36wABuBAAAbg0AAG4WwABuH8AAbiCAAG4hAABuIYAAbiIAAG4igABuIwAAbiNAAG4kAABuJ0AAbiuAAG4sAABuLIAAbi0AAG4tgABuLgAAbi6AAG4vAABuL4AAbjPAAG40gABuNUAAbjYAAG42wABuN4AAbjhAAG45AABuOcAAbjpAAG5KAABuSoAAbksAAG5LgABuTEAAbkyAAG5MwABuTQAAbk1AAG5NwABuTkAAbk6AAG5OwABuT0AAbk+AAG5fQABuX8AAbmBAAG5gwABuYYAAbmHAAG5iAABuYkAAbmKAAG5jAABuY4AAbmPAAG5kAABuZIAAbmTAAG50gABudQAAbnXAAG52QABudwAAbndAAG53gABud8AAbngAAG54gABueQAAbnlAAG55gABuegAAbnpAAG59gABufcAAbn4AAG5+gABujkAAbo7AAG6PQABuj8AAbpCAAG6QwABukQAAbpFAAG6RgABukgAAbpKAAG6SwABukwAAbpOAAG6TwABuo4AAbqQAAG6kgABupQAAbqXAAG6mAABupkAAbqaAAG6mwABup0AAbqfAAG6oAABuqEAAbqjAAG6pAABuuMAAbrlAAG65wABuukAAbrsAAG67QABuu4AAbrvAAG68AABuvIAAbr0AAG69QABuvYAAbr4AAG6+QABuzgAAbs6AAG7PAABuz4AAbtBAAG7QgABu0MAAbtEAAG7RQABu0cAAbt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NAAHHjwABx5AAAceRAAHHkwABx5QAAcfTAAHH1QABx9cAAcfZAAHH3AABx90AAcfeAAHH3wABx+AAAcfiAAHH5AABx+UAAcfmAAHH6AABx+kAAcgoAAHIKgAByCwAAcguAAHIMQAByDIAAcgzAAHINAAByDUAAcg3AAHIOQAByDoAAcg7AAHIPQAByD4AAchjAAHIhwAByK4AAcjSAAHI1QAByNcAAcjZAAHI2wAByN0AAcjfAAHI4AAByOMAAcjwAAHI/wAByQEAAckDAAHJBQAByQcAAckJAAHJCwAByQ0AAckcAAHJHwABySIAAcklAAHJKAABySsAAckuAAHJMQAByTMAAclyAAHJdAAByXcAAcl5AAHJfAAByX0AAcl+AAHJfwAByYAAAcmCAAHJhAAByYUAAcmGAAHJiAAByYkAAcnIAAHJygABycwAAcnOAAHJ0QABydIAAcnTAAHJ1AABydUAAcnXAAHJ2QABydoAAcnbAAHJ3QAByd4AAcodAAHKHwAByiEAAcojAAHKJgAByicAAcooAAHKKQAByioAAcosAAHKLgAByi8AAcowAAHKMgAByjMAAcpyAAHKdAAByncAAcp5AAHKfAAByn0AAcp+AAHKfwAByoAAAcqCAAHKhAAByoUAAcqGAAHKiAAByokAAcrIAAHKygAByswAAcrOAAHK0QABytIAAcrTAAHK1AABytUAAcrXAAHK2QABytoAAcrbAAHK3QAByt4AAcsdAAHLHwAByyEAAcsjAAHLJgAByycAAcsoAAHLKQAByyoAAcssAAHLLgAByy8AAcswAAHLMgAByzMAActyAAHLdAABy3YAAct4AAHLewABy3wAAct9AAHLfgABy38AAcuBAAHLgwABy4QAAcuFAAHLhwABy4gAAcvTAAHL9gABzBYAAcw2AAHMOAABzDoAAcw8AAHMPgABzEEAAcxCAAHMQwABzEYAAcxHAAHMSQABzEoAAcxMAAHMTwABzFAAAcxRAAHMVAABzFUAAcxaAAHMZwABzGwAAcxuAAHMcAABzHUAAcx4AAHMewABzH0AAcyiAAHMxgABzO0AAc0RAAHNFAABzRYAAc0YAAHNGgABzRwAAc0eAAHNHwABzSIAAc0vAAHNQAABzUIAAc1EAAHNRgABzUgAAc1KAAHNTAABzU4AAc1QAAHNYQABzWQAAc1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oAAHYKgAB2CsAAdhQAAHYdAAB2JsAAdi/AAHYwgAB2MQAAdjGAAHYyAAB2MoAAdjMAAHYzQAB2NAAAdjdAAHY7AAB2O4AAdjwAAHY8gAB2PQAAdj2AAHY+AAB2PoAAdkJAAHZDAAB2Q8AAdkSAAHZFQAB2RgAAdkbAAHZHgAB2SAAAdlfAAHZYQAB2WMAAdllAAHZaAAB2WkAAdlqAAHZawAB2WwAAdluAAHZcAAB2XEAAdlyAAHZdAAB2XUAAdm0AAHZtgAB2bgAAdm6AAHZvQAB2b4AAdm/AAHZwAAB2cEAAdnDAAHZxQAB2cYAAdnHAAHZyQAB2coAAdoJAAHaCwAB2g0AAdoPAAHaEgAB2hMAAdoUAAHaFQAB2hYAAdoYAAHaGgAB2hsAAdocAAHaHgAB2h8AAdpeAAHaYAAB2mMAAdplAAHaaAAB2mkAAdpqAAHaawAB2mwAAdpuAAHacAAB2nEAAdpyAAHadAAB2nUAAdq0AAHatgAB2rgAAdq6AAHavQAB2r4AAdq/AAHawAAB2sEAAdrDAAHaxQAB2sYAAdrHAAHayQAB2soAAdsJAAHbCwAB2w0AAdsPAAHbEgAB2xMAAdsUAAHbFQAB2xYAAdsYAAHbGgAB2xsAAdscAAHbHgAB2x8AAdteAAHbYAAB22IAAdtkAAHbZwAB22gAAdtpAAHbagAB22sAAdttAAHbbwAB23AAAdtxAAHbcwAB23QAAdu/AAHb4gAB3AIAAdwiAAHcJAAB3CYAAdwoAAHcKgAB3C0AAdwuAAHcLwAB3DIAAdwzAAHcNQAB3DYAAdw4AAHcOwAB3DwAAdw9AAHcQAAB3EEAAdxKAAHcVwAB3FwAAdxeAAHcYAAB3GUAAdxoAAHcawAB3G0AAdySAAHctgAB3N0AAd0BAAHdBAAB3QYAAd0IAAHdCgAB3QwAAd0OAAHdDwAB3RIAAd0fAAHdMAAB3TIAAd00AAHdNgAB3TgAAd06AAHdPAAB3T4AAd1AAAHdUQAB3VQAAd1XAAHdWgAB3V0AAd1gAAHdYwAB3WYAAd1pAAHdawAB3aoAAd2sAAHdrgAB3bAAAd2zAAHdtAAB3bUAAd22AAHdtwAB3bkAAd27AAHdvAAB3b0AAd2/AAHdwAAB3f8AAd4BAAHeAwAB3gUAAd4IAAHeCQAB3goAAd4LAAHeDAAB3g4AAd4QAAHeEQAB3hIAAd4UAAHeFQAB3lQAAd5WAAHeWQAB3lsAAd5eAAHeXwAB3mAAAd5hAAHeYgAB3mQAAd5mAAHeZwAB3mgAAd5qAAHeawAB3ngAAd55AAHeegAB3nwAAd67AAHevQAB3r8AAd7BAAHexAAB3sUAAd7GAAHexwAB3sgAAd7KAAHezAAB3s0AAd7OAAHe0AAB3tEAAd8QAAHfEgAB3xQAAd8WAAHfGQAB3xoAAd8bAAHfHAAB3x0AAd8fAAHfIQAB3yIAAd8jAAHfJQAB3yYAAd9lAAHfZwAB32kAAd9rAAHfbgAB328AAd9wAAHfcQAB33IAAd90AAHfdgAB33cAAd94AAHfegAB33sAAd+6AAHfvAAB374AAd/AAAHfwwAB38QAAd/FAAHfxgAB38cAAd/JAAHfywAB38wAAd/NAAHfzwAB39AAAeAPAAHgEQAB4BMAAeAVAAHgGAAB4BkAAeAaAAHgGwAB4BwAAeAeAAHgIAAB4CEAAeAiAAHgJAAB4CUAAeBKAAHgbgAB4JUAAeC5AAHgvAAB4L4AAeDAAAHgwgAB4MQAAeDGAAHgxwAB4MoAAeDXAAHg5gAB4OgAAeDqAAHg7AAB4O4AAeDwAAHg8gAB4PQAAeEDAAHhBgAB4QkAAeEMAAHhDwAB4RIAAeEVAAHhGAAB4RoAAeFZAAHhWwAB4V4AAeFgAAHhYwAB4WQAAeFlAAHhZgAB4WcAAeFpAAHhawAB4WwAAeFtAAHhbwAB4XAAAeGvAAHhsQAB4bMAAeG1AAHhuAAB4bkAAeG6AAHhuwAB4bwAAeG+AAHhwAAB4cEAAeHCAAHhxAAB4cUAAeIEAAHiBgAB4ggAAeIKAAHiDQAB4g4AAeIPAAHiEAAB4hEAAeITAAHiFQAB4hYAAeIXAAHiGQAB4hoAAeJZAAHiWwAB4l4AAeJgAAHiYwAB4mQAAeJlAAHiZgAB4mcAAeJpAAHiawAB4mwAAeJtAAHibwAB4nAAAeJyAAHisQAB4rMAAeK1AAHitwAB4roAAeK7AAHivAAB4r0AAeK+AAHiwAAB4sIAAeLDAAHixAAB4sYAAeLHAAHjBgAB4wgAAeMKAAHjDAAB4w8AAeMQAAHjEQAB4xIAAeMTAAHjFQAB4xcAAeMYAAHjGQAB4xsAAeMcAAHjWwAB410AAeNfAAHjYQAB42QAAeN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6AAHuvAAB7r4AAe6/AAHuwAAB7sIAAe7DAAHvAgAB7wQAAe8GAAHvCAAB7wsAAe8MAAHvDQAB7w4AAe8PAAHvEQAB7xMAAe8UAAHvFQAB7xcAAe8YAAHvVwAB71kAAe9bAAHvXQAB72AAAe9hAAHvYgAB72MAAe9kAAHvZgAB72gAAe9pAAHvagAB72wAAe9tAAHvrAAB764AAe+wAAHvsgAB77UAAe+2AAHvtwAB77gAAe+5AAHvuwAB770AAe++AAHvvwAB78EAAe/CAAHwAQAB8AMAAfAFAAHwBwAB8AoAAfALAAHwDAAB8A0AAfAOAAHwEAAB8BIAAfATAAHwFAAB8BYAAfAXAAHwPAAB8GAAAfCHAAHwqwAB8K4AAfCwAAHwsgAB8LQAAfC2AAHwuAAB8LkAAfC8AAHwyQAB8NgAAfDaAAHw3AAB8N4AAfDgAAHw4gAB8OQAAfDmAAHw9QAB8PgAAfD7AAHw/gAB8QEAAfEEAAHxBwAB8QoAAfEMAAHxSwAB8U0AAfFQAAHxUgAB8VUAAfFWAAHxVwAB8VgAAfFZAAHxWwAB8V0AAfFeAAHxXwAB8WEAAfFiAAHxoQAB8aMAAfGlAAHxpwAB8aoAAfGrAAHxrAAB8a0AAfGuAAHxsAAB8bIAAfGzAAHxtAAB8bYAAfG3AAHx9gAB8fgAAfH6AAHx/AAB8f8AAfIAAAHyAQAB8gIAAfIDAAHyBQAB8gcAAfIIAAHyCQAB8gsAAfIMAAHySwAB8k0AAfJQAAHyUgAB8lUAAfJWAAHyVwAB8lgAAfJZAAHyWwAB8l0AAfJeAAHyXwAB8mEAAfJiAAHyoQAB8qMAAfKlAAHypwAB8qoAAfKrAAHyrAAB8q0AAfKuAAHysAAB8rIAAfKzAAHytAAB8rYAAfK3AAHy9gAB8vgAAfL6AAHy/AAB8v8AAfMAAAHzAQAB8wIAAfMDAAHzBQAB8wcAAfMIAAHzCQAB8wsAAfMMAAHzSwAB800AAfNPAAHzUQAB81QAAfNVAAHzVgAB81cAAfNYAAHzWgAB81wAAfNdAAHzXgAB82AAAfNhAAHzagAB82sAAfNtAAHzrAAB864AAfOwAAHzsgAB87UAAfO2AAHztwAB87gAAfO5AAHzuwAB870AAfO+AAHzvwAB88EAAfPCAAH0AQAB9AMAAfQFAAH0BwAB9AoAAfQ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LAAIFzgACBdEAAgXSAAIF1wACBeQAAgXnAAIF6QACBewAAgXvAAIF8QACBhYAAgY6AAIGYQACBoUAAgaIAAIGigACBowAAgaOAAIGkAACBpIAAgaTAAIGlgACBqMAAga2AAIGuAACBroAAga8AAIGvgACBsAAAgbCAAIGxAACBsYAAgbIAAIG2wACBt4AAgbhAAIG5AACBucAAgbqAAIG7QACBvAAAgbzAAIG9gACBvgAAgc3AAIHOQACBzwAAgc+AAIHQQACB0IAAgdDAAIHRAACB0UAAgdHAAIHSQACB0oAAgdLAAIHTQACB04AAgdXAAIHWAACB1oAAgeZAAIHmwACB50AAgefAAIHogACB6MAAgekAAIHpQACB6YAAgeoAAIHqgACB6sAAgesAAIHrgACB68AAgfuAAIH8AACB/MAAgf1AAIH+AACB/kAAgf6AAIH+wACB/wAAgf+AAIIAAACCAEAAggCAAIIBAACCAUAAggOAAIIDwACCBEAAghQAAIIUgACCFQAAghWAAIIWQACCFoAAghbAAIIXAACCF0AAghfAAIIYQACCGIAAghjAAIIZQACCGYAAgilAAIIpwACCKoAAgisAAIIrwACCLAAAgixAAIIsgACCLMAAgi1AAIItwACCLgAAgi5AAIIuwACCLwAAgjFAAIIxgACCMgAAgkHAAIJCQACCQsAAgkNAAIJEAACCREAAgkSAAIJEwACCRQAAgkWAAIJGAACCRkAAgkaAAIJHAACCR0AAglcAAIJXgACCWEAAgljAAIJZgACCWcAAgloAAIJaQACCWoAAglsAAIJbgACCW8AAglwAAIJcgACCXMAAgmAAAIJgQACCYIAAgmEAAIJwwACCcUAAgnHAAIJyQACCcwAAgnNAAIJzgACCc8AAgnQAAIJ0gACCdQAAgnVAAIJ1gACCdgAAgnZAAIKGAACChoAAgocAAIKHgACCiEAAgoiAAIKIwACCiQAAgolAAIKJwACCikAAgoqAAIKKwACCi0AAgouAAIKOwACCkQAAgpHAAIKSQACCkwAAgpPAAIKWAACClsAAgpeAAIKYQACCmQAAgpmAAIKawACCnAAAgp1AAIKwAACCuMAAgsDAAILIwACCyUAAgsnAAILKQACCysAAgsuAAILLwACCzAAAgszAAILNAACCzYAAgs3AAILOQACCzwAAgs9AAILPgACC0EAAgtCAAILRwACC1QAAgtZAAILWwACC10AAgtiAAILZQACC2gAAgtqAAILjwACC7MAAgvaAAIL/gACDAEAAgwDAAIMBQACDAcAAgwJAAIMCwACDAwAAgwPAAIMHAACDC0AAgwvAAIMMQACDDMAAgw1AAIMNwACDDkAAgw7AAIMPQACDE4AAgxRAAIMVAACDFcAAgxaAAIMXQACDGAAAgxjAAIMZgACDGgAAgynAAIMqQACDKsAAgytAAIMsAACDLEAAgyyAAIMswACDLQAAgy2AAIMuAACDLkAAgy6AAIMvAACDL0AAgz8AAIM/gACDQAAAg0CAAINBQACDQYAAg0HAAINCAACDQkAAg0LAAINDQACDQ4AAg0PAAINEQACDRIAAg1RAAINUwACDVYAAg1YAAINWwACDVwAAg1dAAINXgACDV8AAg1hAAINYwACDWQAAg1lAAINZwACDWgAAg11AAINdgACDXcAAg15AAINuAACDboAAg28AAINvgACDcEAAg3CAAINwwACDcQAAg3FAAINxwACDckAAg3KAAINywACDc0AAg3OAAIODQACDg8AAg4RAAIOEwACDhYAAg4XAAIOGAACDhkAAg4aAAIOHAACDh4AAg4fAAIOIAACDiIAAg4jAAIOYgACDmQAAg5mAAIOaAACDmsAAg5sAAIObQACDm4AAg5vAAIOcQACDnMAAg50AAIOdQACDncAAg54AAIOtwACDrkAAg67AAIOvQACDsAAAg7BAAIOwgACDsMAAg7EAAIOxgACDsgAAg7JAAIOygACDswAAg7NAAIPDAACDw4AAg8QAAIPEgACDxUAAg8WAAIPFwACDxgAAg8ZAAIPGwACDx0AAg8eAAIPHwACDyEAAg8iAAIPRwACD2sAAg+SAAIPtgACD7kAAg+7AAIPvQACD78AAg/BAAIPwwACD8QAAg/HAAIP1AACD+MAAg/lAAIP5wACD+kAAg/rAAIP7QACD+8AAg/xAAIQAAACEAMAAhAGAAIQCQACEAwAAhAPAAIQEgACEBUAAhAXAAIQVgACEFgAAhBaAAIQXAACEF8AAhBgAAIQYQACEGIAAhBjAAIQZQACEGcAAhBoAAIQaQACEGsAAhBsAAIQqwACEK0AAhCvAAIQsQACELQAAhC1AAIQtgACELcAAhC4AAIQugACELwAAhC9AAIQvgACEMAAAhDBAAIRAAACEQIAAhEEAAIRBgACEQkAAhEKAAIRCwACEQwAAhENAAIRDwACEREAAhESAAIREwACERUAAhEWAAIRVQACEVcAAhFZAAIRWwACEV4AAhFfAAIRYAACEWEAAhFiAAIRZAACEWYAAhFnAAIRaAACEWoAAhFrAAIRqgACEawAAhGuAAIRsAACEbMAAhG0AAIRtQACEbYAAhG3AAIRuQACEbsAAhG8AAIRvQACEb8AAhHAAAIR/wACEgEAAhIDAAISBQACEggAAhIJAAISCgACEgsAAhIMAAISDgACEhAAAhIRAAISEgACEhQAAhIVAAISVAACElYAAhJZAAISWwACEl4AAhJfAAISYAACEmEAAhJiAAISZAACEmYAAhJnAAISaAACEmoAAhJrAAIStgACEtkAAhL5AAITGQACExsAAhMdAAITHwACEyEAAhMkAAITJQACEyYAAhMpAAITKgACEywAAhMtAAITLwACEzEAAhMyAAITMwACEzYAAhM3AAITPAACE0kAAhNOAAITUAACE1IAAhNXAAITWgACE10AAhNfAAIThAACE6gAAhPPAAIT8wACE/YAAhP4AAIT+gACE/wAAhP+AAIUAAACFAEAAhQEAAIUEQACFCIAAhQkAAIUJgACFCgAAhQqAAIULAACFC4AAhQwAAIUMgACFEMAAhRGAAIUSQACFEwAAhRPAAIUUgACFFUAAhRYAAIUWwACFF0AAhScAAIUngACFKAAAhSiAAIUpQACFKYAAhSnAAIUqAACFKkAAhSrAAIUrQACFK4AAhSvAAIUsQACFLIAAhTxAAIU8wACFPUAAhT3AAIU+gACFPsAAhT8AAIU/QACFP4AAhUAAAIVAgACFQMAAhUEAAIVBgACFQcAAhVGAAIVSAACFUsAAhVNAAIVUAACFVEAAhVSAAIVUwACFVQAAhVWAAIVWAACFVkAAhVaAAIVXAACFV0AAhVqAAIVawACFWwAAhVuAAIVrQACFa8AAhWxAAIVswACFbYAAhW3AAIVuAACFbkAAhW6AAIVvAACFb4AAhW/AAIVwAACFcIAAhXDAAIWAgACFgQAAhYGAAIWCAACFgsAAhYMAAIWDQACFg4AAhYPAAIWEQACFhMAAhYUAAIWFQACFhcAAhYYAAIWVwACFlkAAhZbAAIWXQACFmAAAhZhAAIWYgACFmMAAhZkAAIWZgACFmgAAhZpAAIWagACFmwAAhZtAAIWrAACFq4AAhawAAIWsgACFrUAAha2AAIWtwACFrgAAha5AAIWuwACFr0AAha+AAIWvwACFsEAAhbCAAIXAQACFwMAAhcFAAIXBwACFwoAAhcLAAIXDAACFw0AAhcOAAIXEAACFxIAAhcTAAIXFAACFxYAAhcXAAIXPAACF2AAAheHAAIXqwACF64AAhewAAIXsgACF7QAAhe2AAIXuAACF7kAAhe8AAIXyQACF9gAAhfaAAIX3AACF94AAhfgAAIX4gACF+QAAhfmAAIX9QACF/gAAhf7AAIX/gACGAEAAhgEAAIYBwACGAoAAhgMAAIYSwACGE0AAhhQAAIYUgACGFUAAhhWAAIYVwACGFgAAhhZAAIYWwACGF0AAhheAAIYXwACGGEAAhhiAAIYoQACGKMAAhilAAIYpwACGKoAAhirAAIYrAACGK0AAhiuAAIYsAACGLIAAhizAAIYtAACGLYAAhi3AAIY9gACGPgAAhj6AAIY/AACGP8AAhkAAAIZAQACGQIAAhkDAAIZBQACGQcAAhkIAAIZCQACGQsAAhkMAAIZSwACGU0AAhlQAAIZUgACGVUAAhlWAAIZVwACGVgAAhlZAAIZWwACGV0AAhleAAIZXwACGWEAAhliAAIZoQACGaMAAhmlAAIZpwACGaoAAhmrAAIZrAACGa0AAhmuAAIZsAACGbIAAhmzAAIZtAACGbYAAhm3AAIZ9gACGfgAAhn6AAIZ/AACGf8AAhoAAAIaAQACGgIAAhoDAAIaBQACGgcAAhoIAAIaCQACGgsAAhoMAAIaSwACGk0AAhpPAAIaUQACGlQAAhpVAAIaVgACGlcAAhpYAAIaWgACGlwAAhpdAAIaXgACGmAAAhphAAIarAACGs8AAhrvAAIbDwACGxEAAhsTAAIbFQACGxcAAhsaAAIbGwACGxwAAhsfAAIbIAACGyIAAhsjAAIbJQACGygAAhspAAIbKgACGy0AAhsuAAIbMwACG0AAAhtFAAIbRwACG0kAAhtOAAIbUQACG1QAAhtWAAIbewACG58AAhvGAAIb6gACG+0AAhvvAAIb8QACG/MAAhv1AAIb9wACG/gAAhv7AAIcCAACHBkAAhwbAAIcHQACHB8AAhwhAAIcIwACHCUAAhwnAAIcKQACHDoAAhw9AAIcQAACHEMAAhxGAAIcSQACHEwAAhxPAAIcUgACHFQAAhyTAAIclQACHJcAAhyZAAIcnAACHJ0AAhyeAAIcnwACHKAAAhyiAAIcpAACHKUAAhymAAIcqAACHKkAAhzoAAIc6gACHOwAAhzuAAIc8QACHPIAAhzzAAIc9AACHPUAAhz3AAIc+QACHPoAAhz7AAIc/QACHP4AAh09AAIdPwACHUIAAh1EAAIdRwACHUgAAh1JAAIdSgACHUsAAh1NAAIdTwACHVAAAh1RAAIdUwACHVQAAh1hAAIdYgACHWMAAh1lAAIdpAACHaYAAh2oAAIdqgACHa0AAh2uAAIdrwACHbAAAh2xAAIdswACHbUAAh22AAIdtwACHbkAAh26AAId+QACHfsAAh39AAId/wACHgIAAh4DAAIeBAACHgUAAh4GAAIeCAACHgoAAh4LAAIeDAACHg4AAh4PAAIeTgACHlAAAh5SAAIeVAACHlcAAh5YAAIeWQACHloAAh5bAAIeXQACHl8AAh5gAAIeYQACHmMAAh5kAAIeowACHqUAAh6nAAIeqQACHqwAAh6tAAIergACHq8AAh6wAAIesgACHrQAAh61AAIetgACHrgAAh65AAIe+AACHvoAAh78AAIe/gACHwEAAh8CAAIfAwACHwQAAh8FAAIfBwACHwkAAh8KAAIfCwACHw0AAh8OAAIfMwACH1cAAh9+AAIfogACH6UAAh+nAAIfqQACH6sAAh+tAAIfrwACH7AAAh+zAAIfwAACH88AAh/RAAIf0wACH9UAAh/XAAIf2QACH9sAAh/dAAIf7AACH+8AAh/yAAIf9QACH/gAAh/7AAIf/gACIAEAAiADAAIgQgACIEQAAiBHAAIgSQACIEwAAiBNAAIgTgACIE8AAiBQAAIgUgACIFQAAiBVAAIgVgACIFgAAiBZAAIgmAACIJoAAiCcAAIgngACIKEAAiCiAAIgowACIKQAAiClAAIgpwACIKkAAiCqAAIgqwACIK0AAiCuAAIg7QACIO8AAiDxAAIg8wACIPYAAiD3AAIg+AACIPkAAiD6AAIg/AACIP4AAiD/AAIhAAACIQIAAiEDAAIhQgACIUQAAiFHAAIhSQACIUwAAiFNAAIhTgACIU8AAiFQAAIhUgACIVQAAiFVAAIhVgACIVgAAiFZAAIhmAACIZoAAiGcAAIhngACIaEAAiGiAAIhowACIaQAAiGlAAIhpwACIakAAiGqAAIhqwACIa0AAiGuAAIh7QACIe8AAiHxAAIh8wACIfYAAiH3AAIh+AACIfkAAiH6AAIh/AACIf4AAiH/AAIiAAACIgIAAiIDAAIiQgACIkQAAiJGAAIiSAACIksAAiJMAAIiTQACIk4AAiJPAAIiUQACIlMAAiJUAAIiVQACIlcAAiJYAAIiowACIsYAAiLmAAIjBgACIwgAAiMKAAIjDAACIw4AAiMRAAIjEgACIxMAAiMWAAIjFwACIxkAAiMaAAIjHAACIx8AAiMgAAIjIQACIyQAAiMlAAIjKgACIzcAAiM8AAIjPgACI0AAAiNFAAIjSAACI0sAAiNNAAIjcgACI5YAAiO9AAIj4QACI+QAAiPmAAIj6AACI+oAAiPsAAIj7gACI+8AAiPyAAIj/wACJBAAAiQSAAIkFAACJBYAAiQYAAIkGgACJBwAAiQeAAIkIAACJDEAAiQ0AAIkNwACJDoAAiQ9AAIkQAACJEMAAiRGAAIkSQACJEsAAiSKAAIkjAACJI4AAiSQAAIkkwACJJQAAiSVAAIklgACJJcAAiSZAAIkmwACJJwAAiSdAAIknwACJKAAAiTfAAIk4QACJOMAAiTlAAIk6AACJOkAAiTqAAIk6wACJOwAAiTuAAIk8AACJPEAAiTyAAIk9AACJPUAAiU0AAIlNgACJTkAAiU7AAIlPgACJT8AAiVAAAIlQQACJUIAAiVEAAIlRgACJUcAAiVIAAIlSgACJUsAAiVYAAIlWQACJVoAAiVcAAIlmwACJZ0AAiWfAAIloQACJaQAAiWlAAIlpgACJacAAiWoAAIlqgACJawAAiWtAAIlrgACJbAAAiWxAAIl8AACJfIAAiX0AAIl9gACJfkAAiX6AAIl+wACJfwAAiX9AAIl/wACJgEAAiYCAAImAwACJgUAAiYGAAImRQACJkcAAiZJAAImSwACJk4AAiZPAAImUAACJlEAAiZSAAImVAACJlYAAiZXAAImWAACJloAAiZbAAImmgACJpwAAiaeAAImoAACJqMAAiakAAImpQACJqYAAianAAImqQACJqsAAiasAAImrQACJq8AAiawAAIm7wACJvEAAibzAAIm9QACJvgAAib5AAIm+gACJvsAAib8AAIm/gACJwAAAicBAAInAgACJwQAAicFAAInKgACJ04AAid1AAInmQACJ5wAAieeAAInoAACJ6IAAiekAAInpgACJ6cAAieqAAIntwACJ8YAAifIAAInygACJ8wAAifOAAIn0AACJ9IAAifUAAIn4wACJ+YAAifpAAIn7AACJ+8AAifyAAIn9QACJ/gAAif6AAIoOQACKDsAAig9AAIoPwACKEIAAihDAAIoRAACKEUAAihGAAIoSAACKEoAAihLAAIoTAACKE4AAihPAAIojgACKJAAAiiSAAIolAACKJcAAiiYAAIomQACKJoAAiibAAIonQACKJ8AAiigAAIooQACKKMAAiikAAIo4wACKOUAAijnAAIo6QACKOwAAijtAAIo7gACKO8AAijwAAIo8gACKPQAAij1AAIo9gACKPgAAij5AAIpOAACKToAAik9AAIpPwACKUIAAilDAAIpRAACKUUAAilGAAIpSAACKUoAAilLAAIpTAACKU4AAilPAAIpjgACKZAAAimSAAIplAACKZcAAimYAAIpmQACKZoAAimbAAIpnQACKZ8AAimgAAIpoQACKaMAAimkAAIp4wACKeUAAinnAAIp6QACKewAAintAAIp7gACKe8AAinwAAIp8gACKfQAAin1AAIp9gACKfgAAin5AAIqOAACKjoAAio8AAIqPgACKkEAAipCAAIqQwACKkQAAipFAAIqRwACKkkAAipKAAIqSwACKk0AAipOAAIqVwACKlgAAipaAAIqmQACKpsAAiqdAAIqnwACKqIAAiqjAAIqpAACKqUAAiqmAAIqqAACKqoAAiqrAAIqrAACKq4AAiqvAAIq7gACKvAAAiryAAIq9AACKvcAAir4AAIq+QACKvoAAir7AAIq/QACKv8AAisAAAIrAQACKwMAAisEAAIrQwACK0UAAitIAAIrSgACK00AAitOAAIrTwACK1AAAitRAAIrUwACK1UAAitWAAIrVwACK1kAAitaAAIrYwACK2QAAitmAAIrbwACK3QAAit3AAIregACK3wAAiuZAAIrowACK6wAAiuvAAIrsQACK7QAAiu3AAIrugACK7wAAiv/AAIsIwACLEcAAixqAAIskQACLLEAAizYAAIs/wACLR8AAi1DAAItZwACLWkAAi1sAAItbgACLXAAAi1yAAItdQACLXgAAi16AAItfAACLX8AAi2BAAItgwACLYYAAi2JAAItigACLY8AAi2cAAItnwACLaEAAi2kAAItpwACLakAAi3OAAIt8gACLhkAAi49AAIuQAACLkIAAi5EAAIuRgACLkgAAi5KAAIuSwACLk4AAi5bAAIubgACLnAAAi5yAAIudAACLnYAAi54AAIuegACLnwAAi5+AAIugAACLpMAAi6WAAIumQACLpwAAi6fAAIuogACLqUAAi6oAAIuqwACLq4AAi6wAAIu7wACLvEAAi70AAIu9gACLvkAAi76AAIu+wACLvwAAi79AAIu/wACLwEAAi8CAAIvAwACLwUAAi8GAAIvDwACLxAAAi8SAAIvUQACL1MAAi9VAAIvVwACL1oAAi9bAAIvXAACL10AAi9eAAIvYAACL2IAAi9jAAIvZAACL2YAAi9nAAIvpgACL6gAAi+rAAIvrQACL7AAAi+xAAIvsgACL7MAAi+0AAIvtgACL7gAAi+5AAIvugACL7wAAi+9AAIvxgACL8cAAi/JAAIwCAACMAoAAjAMAAIwDgACMBEAAjASAAIwEwACMBQAAjAVAAIwFwACMBkAAjAaAAIwGwACMB0AAjAeAAIwXQACMF8AAjBiAAIwZAACMGcAAjBoAAIwaQACMGoAAjBrAAIwbQACMG8AAjBwAAIwcQACMHMAAjB0AAIwfQACMH4AAjCAAAIwvwACMMEAAjDDAAIwxQACMMgAAjDJAAIwygACMMsAAjDMAAIwzgACMNAAAjDRAAIw0gACMNQAAjDVAAIxFAACMRYAAjEZAAIxGwACMR4AAjEfAAIxIAACMSEAAjEiAAIxJAACMSYAAjEnAAIxKAACMSoAAjErAAIxOAACMTkAAjE6AAIxPAACMXsAAjF9AAIxfwACMYEAAjGEAAIxhQACMYYAAjGHAAIxiAACMYoAAjGMAAIxjQACMY4AAjGQAAIxkQACMdAAAjHSAAIx1AACMdYAAjHZAAIx2gACMdsAAjHcAAIx3QACMd8AAjHhAAIx4gACMeMAAjHlAAIx5gACMfMAAjH2AAIx+QACMfwAAjH/AAIyAQACMgoAAjJVAAIyeAACMpgAAjK4AAIyugACMrwAAjK+AAIywAACMsMAAjLEAAIyxQACMsgAAjLJAAIyywACMswAAjLOAAIy0QACMtIAAjLTAAIy1gACMtcAAjL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VAAJVVgACVVcAAlVYAAJVWgACVVwAAlVdAAJVXgACVWAAAlVhAAJVoAACVaIAAlWkAAJVpgACVakAAlWqAAJVqwACVawAAlWtAAJVrwACVbEAAlWyAAJVswACVbUAAlW2AAJV9QACVfcAAlX5AAJV+wACVf4AAlX/AAJWAAACVgEAAlYCAAJWBAACVgYAAlYHAAJWCAACVgoAAlYLAAJWSgACVkwAAlZPAAJWUQACVlQAAlZVAAJWVgACVlcAAlZYAAJWWgACVlwAAlZdAAJWXgACVmAAAlZhAAJWoAACVqIAAlakAAJWpgACVqkAAlaqAAJWqwACVqwAAlatAAJWrwACVrEAAlayAAJWswACVrUAAla2AAJW9QACVvcAAlb5AAJW+wACVv4AAlb/AAJXAAACVwEAAlcCAAJXBAACVwYAAlcHAAJXCAACVwoAAlcLAAJXSgACV0wAAldOAAJXUAACV1MAAldUAAJXVQACV1YAAldXAAJXWQACV1sAAldcAAJXXQACV18AAldgAAJXqwACV84AAlfuAAJYDgACWBAAAlgSAAJYFAACWBYAAlgZAAJYGgACWBsAAlgeAAJYHwACWCEAAlgiAAJYJAACWCcAAlgoAAJYKQACWCwAAlgtAAJYMgACWD8AAlhEAAJYRgACWEgAAlhNAAJYUAACWFMAAlhVAAJYegACWJ4AAljFAAJY6QACWOwAAljuAAJY8AACWPIAAlj0AAJY9gACWPcAAlj6AAJZBwACWRgAAlkaAAJZHAACWR4AAlkgAAJZIgACWSQAAlkmAAJZKAACWTkAAlk8AAJZPwACWUIAAllFAAJZSAACWUsAAllOAAJZUQACWVMAAlmSAAJZlAACWZYAAlmYAAJZmwACWZwAAlmdAAJZngACWZ8AAlmhAAJZowACWaQAAlmlAAJZpwACWagAAlnnAAJZ6QACWesAAlntAAJZ8AACWfEAAlnyAAJZ8wACWfQAAln2AAJZ+AACWfkAAln6AAJZ/AACWf0AAlo8AAJaPgACWkEAAlpDAAJaRgACWkcAAlpIAAJaSQACWkoAAlpMAAJaTgACWk8AAlpQAAJaUgACWlMAAlpgAAJaYQACWmIAAlpkAAJaowACWqUAAlqnAAJaqQACWqwAAlqtAAJargACWq8AAlqwAAJasgACWrQAAlq1AAJatgACWrgAAlq5AAJa+AACWvoAAlr8AAJa/gACWwEAAlsCAAJbAwACWwQAAlsFAAJbBwACWwkAAlsKAAJbCwACWw0AAlsOAAJbTQACW08AAltRAAJbUwACW1YAAltXAAJbWAACW1kAAltaAAJbXAACW14AAltfAAJbYAACW2IAAltjAAJbogACW6QAAlumAAJbqAACW6sAAlusAAJbrQACW64AAluvAAJbsQACW7MAAlu0AAJbtQACW7cAAlu4AAJb9wACW/kAAlv7AAJb/QACXAAAAlwBAAJcAgACXAMAAlwEAAJcBgACXAgAAlwJAAJcCgACXAwAAlwNAAJcMgACXFYAAlx9AAJcoQACXKQAAlymAAJcqAACXKoAAlysAAJcrgACXK8AAlyyAAJcvwACXM4AAlzQAAJc0gACXNQAAlzWAAJc2AACXNoAAlzcAAJc6wACXO4AAlzxAAJc9AACXPcAAlz6AAJc/QACXQAAAl0CAAJdQQACXUMAAl1FAAJdRwACXUoAAl1LAAJdTAACXU0AAl1OAAJdUAACXVIAAl1TAAJdVAACXVYAAl1XAAJdlgACXZgAAl2aAAJdnAACXZ8AAl2gAAJdoQACXaIAAl2jAAJdpQACXacAAl2oAAJdqQACXasAAl2sAAJd6wACXe0AAl3vAAJd8QACXfQAAl31AAJd9gACXfcAAl34AAJd+gACXfwAAl39AAJd/gACXgAAAl4BAAJeQAACXkIAAl5FAAJeRwACXkoAAl5LAAJeTAACXk0AAl5OAAJeUAACXlIAAl5TAAJeVAACXlYAAl5XAAJelgACXpgAAl6aAAJenAACXp8AAl6gAAJeoQACXqIAAl6jAAJepQACXqcAAl6oAAJeqQACXqsAAl6sAAJe6wACXu0AAl7vAAJe8QACXvQAAl71AAJe9gACXvcAAl74AAJe+gACXvwAAl79AAJe/gACXwAAAl8BAAJfQAACX0IAAl9FAAJfRwACX0oAAl9LAAJfTAACX00AAl9OAAJfUAACX1IAAl9TAAJfVAACX1YAAl9XAAJfogACX8UAAl/lAAJgBQACYAcAAmAJAAJgCwACYA0AAmAQAAJgEQACYBIAAmAVAAJgFgACYBgAAmAZAAJgGwACYB4AAmAfAAJgIAACYCMAAmAkAAJgKQACYDYAAmA7AAJgPQACYD8AAmBEAAJgRwACYEoAAmBMAAJgcQACYJUAAmC8AAJg4AACYOMAAmDlAAJg5wACYOkAAmDrAAJg7QACYO4AAmDxAAJg/gACYQ8AAmERAAJhEwACYRUAAmEXAAJhGQACYRsAAmEdAAJhHwACYTAAAmEzAAJhNgACYTkAAmE8AAJhPwACYUIAAmFFAAJhSAACYUoAAmGJAAJhiwACYY0AAmGPAAJhkgACYZMAAmGUAAJhlQACYZYAAmGYAAJhmgACYZsAAmGcAAJhngACYZ8AAmHeAAJh4AACYeIAAmHkAAJh5wACYegAAmHpAAJh6gACYesAAmHtAAJh7wACYfAAAmHxAAJh8wACYfQAAmIzAAJiNQACYjgAAmI6AAJiPQACYj4AAmI/AAJiQAACYkEAAmJDAAJiRQACYkYAAmJHAAJiSQACYkoAAmJXAAJiWAACYlkAAmJbAAJimgACYpwAAmKeAAJioAACYqMAAmKkAAJipQACYqYAAmKnAAJiqQACYqsAAmKsAAJirQACYq8AAmKwAAJi7wACYvEAAmLzAAJi9QACYvgAAmL5AAJi+gACYvsAAmL8AAJi/gACYwAAAmMBAAJjAgACYwQAAmMFAAJjRAACY0YAAmNIAAJjSgACY00AAmNOAAJjTwACY1AAAmNRAAJjUwACY1UAAmNWAAJjVwACY1kAAmNaAAJjmQACY5sAAmOdAAJjnwACY6IAAmOjAAJjpAACY6UAAmOmAAJjqAACY6oAAmOrAAJjrAACY64AAmOvAAJj7gACY/AAAmPyAAJj9AACY/cAAmP4AAJj+QACY/oAAmP7AAJj/QACY/8AAmQAAAJkAQACZAMAAmQEAAJkKQACZE0AAmR0AAJkmAACZJsAAmSdAAJknwACZKEAAmSjAAJkpQACZKYAAmSpAAJktgACZMUAAmTHAAJkyQACZMsAAmTNAAJkzwACZNEAAmTTAAJk4gACZOUAAmToAAJk6wACZO4AAmTxAAJk9AACZPcAAmT5AAJlOAACZToAAmU9AAJlPwACZUIAAmVDAAJlRAACZUUAAmVGAAJlSAACZUoAAmVLAAJlTAACZU4AAmVPAAJljgACZZAAAmWSAAJllAACZZcAAmWYAAJlmQACZZoAAmWbAAJlnQACZZ8AAmWgAAJloQACZaMAAmWkAAJl4wACZeUAAmXnAAJl6QACZewAAmXtAAJl7gACZe8AAmXwAAJl8gACZfQAAmX1AAJl9gACZfgAAmX5AAJmOAACZjoAAmY9AAJmPwACZkIAAmZDAAJmRAACZkUAAmZGAAJmSAACZkoAAmZLAAJmTAACZk4AAmZPAAJmjgACZpAAAmaSAAJmlAACZpcAAmaYAAJmmQACZpoAAmabAAJmnQACZp8AAmagAAJmoQACZqMAAmakAAJm4wACZuUAAmbnAAJm6QACZuwAAmbtAAJm7gACZu8AAmbwAAJm8gACZvQAAmb1AAJm9gACZvgAAmb5AAJnOAACZzoAAmc8AAJnPgACZ0EAAmdCAAJnQwACZ0QAAmdFAAJnRwACZ0kAAmdKAAJnSwACZ00AAmdOAAJnVwACZ1gAAmdaAAJnmQACZ5sAAmedAAJnnwACZ6IAAmejAAJnpAACZ6UAAmemAAJnqAACZ6oAAmerAAJnrAACZ64AAmevAAJn7gACZ/AAAmfyAAJn9AACZ/cAAmf4AAJn+QACZ/oAAmf7AAJn/QACZ/8AAmgAAAJoAQACaAMAAmgEAAJoQwACaEUAAmhIAAJoSgACaE0AAmhOAAJoTwACaFAAAmhRAAJoUwACaFUAAmhWAAJoVwACaFkAAmhaAAJoYwACaGYAAmhpAAJoawACaHAAAmh5AAJokgACaJsAAmi0AAJoywACaN0AAmj6AAJo/QACaP8AAmkBAAJpAwACaQYAAmkIAAJpDQACaUwAAmlOAAJpUAACaVIAAmlUAAJpVQACaVYAAmlXAAJpWAACaVoAAmlcAAJpXQACaV4AAmlgAAJpYQACaaAAAmmiAAJppAACaaYAAmmoAAJpqQACaaoAAmmrAAJprAACaa4AAmmwAAJpsQACabIAAmm0AAJptQACafQAAmn2AAJp+AACafoAAmn8AAJp/QACaf4AAmn/AAJqAAACagIAAmoEAAJqBQACagYAAmoIAAJqCQACahIAAmoVAAJqGAACahoAAmpdAAJqgQACaqUAAmrIAAJq7wACaw8AAms2AAJrXQACa30AAmuhAAJrxQACa8cAAmvKAAJrzAACa84AAmvQAAJr0wACa9YAAmvYAAJr2gACa90AAmvfAAJr4QACa+QAAmvnAAJr6AACa+0AAmv6AAJr/QACa/8AAmwCAAJsBQACbAcAAmwsAAJsUAACbHcAAmybAAJsngACbKAAAmyiAAJspAACbKYAAmyoAAJsqQACbKwAAmy5AAJszAACbM4AAmzQAAJs0gACbNQAAmzWAAJs2AACbNoAAmzcAAJs3gACbPEAAmz0AAJs9wACbPoAAmz9AAJtAAACbQMAAm0GAAJtCQACbQwAAm0OAAJtTQACbU8AAm1SAAJtVAACbVcAAm1YAAJtWQACbVoAAm1bAAJtXQACbV8AAm1gAAJtYQACbWMAAm1kAAJtbQACbW4AAm1wAAJtrwACbbEAAm2zAAJttQACbbgAAm25AAJtugACbbsAAm28AAJtvgACbcAAAm3BAAJtwgACbcQAAm3FAAJuBAACbgYAAm4JAAJuCwACbg4AAm4PAAJuEAACbhEAAm4SAAJuFAACbhYAAm4XAAJuGAACbhoAAm4bAAJuJAACbiUAAm4nAAJuZgACbmgAAm5qAAJubAACbm8AAm5wAAJucQACbnIAAm5zAAJudQACbncAAm54AAJueQACbnsAAm58AAJuuwACbr0AAm7AAAJuwgACbsUAAm7GAAJuxwACbsgAAm7JAAJuywACbs0AAm7OAAJuzwACbtEAAm7SAAJu2wACbtwAAm7eAAJvHQACbx8AAm8hAAJvIwACbyYAAm8nAAJvKAACbykAAm8qAAJvLAACby4AAm8vAAJvMAACbzIAAm8zAAJvcgACb3QAAm93AAJveQACb3wAAm99AAJvfgACb38AAm+AAAJvggACb4QAAm+FAAJvhgACb4gAAm+JAAJvlgACb5cAAm+YAAJvmgACb9kAAm/bAAJv3QACb98AAm/iAAJv4wACb+QAAm/lAAJv5gACb+gAAm/qAAJv6wACb+wAAm/uAAJv7wACcC4AAnAwAAJwMgACcDQAAnA3AAJwOAACcDkAAnA6AAJwOwACcD0AAnA/AAJwQAACcEEAAnBDAAJwRAACcFEAAnBaAAJwXQACcGAAAnBjAAJwZgACcG8AAnByAAJwdQACcHgAAnB7AAJwfQACcIMAAnCVAAJwogACcO0AAnEQAAJxMAACcVAAAnFSAAJxVAACcVYAAnFYAAJxWwACcVwAAnFdAAJxYAACcWEAAnFjAAJxZAACcWYAAnFpAAJxagACcWsAAnFuAAJxbwACcXQAAnGBAAJxhgACcYgAAnGKAAJxjwACcZIAAnGVAAJxlwACcbwAAnHgAAJyBwACcisAAnIuAAJyMAACcjIAAnI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mAAKIJwACiCgAAogpAAKIKgACiCwAAoguAAKILwACiDAAAogyAAKIMwACiHIAAoh0AAKIdgACiHgAAoh7AAKIfAACiH0AAoh+AAKIfwACiIEAAoiDAAKIhAACiIUAAoiHAAKIiAACiNMAAoj2AAKJFgACiTYAAok4AAKJOgACiTwAAok+AAKJQQACiUIAAolDAAKJRgACiUcAAolJAAKJSgACiUwAAolPAAKJUAACiVEAAolUAAKJVQACiVoAAolnAAKJbAACiW4AAolwAAKJdQACiXgAAol7AAKJfQACiaIAAonGAAKJ7QACihEAAooUAAKKFgACihgAAooaAAKKHAACih4AAoofAAKKIgACii8AAopAAAKKQgACikQAAopGAAKKSAACikoAAopMAAKKTgACilAAAophAAKKZAACimcAAopqAAKKbQACinAAAopzAAKKdgACinkAAop7AAKKugACirwAAoq+AAKKwAACisMAAorEAAKKxQACisYAAorHAAKKyQACissAAorMAAKKzQACis8AAorQAAKLDwACixEAAosTAAKLFQACixgAAosZAAKLGgACixsAAoscAAKLHgACiyAAAoshAAKLIgACiyQAAoslAAKLZAACi2YAAotpAAKLawACi24AAotvAAKLcAACi3EAAotyAAKLdAACi3YAAot3AAKLeAACi3oAAot7AAKLiAACi4kAAouKAAKLjAACi8sAAovNAAKLzwACi9EAAovUAAKL1QACi9YAAovXAAKL2AACi9oAAovcAAKL3QACi94AAovgAAKL4QACjCAAAowiAAKMJAACjCYAAowpAAKMKgACjCsAAowsAAKMLQACjC8AAowxAAKMMgACjDMAAow1AAKMNgACjHUAAox3AAKMeQACjHsAAox+AAKMfwACjIAAAoyBAAKMggACjIQAAoyGAAKMhwACjIgAAoyKAAKMiwACjMoAAozMAAKMzgACjNAAAozTAAKM1AACjNUAAozWAAKM1wACjNkAAozbAAKM3AACjN0AAozfAAKM4AACjR8AAo0hAAKNIwACjSUAAo0oAAKNKQACjSoAAo0rAAKNLAACjS4AAo0wAAKNMQACjTIAAo00AAKNNQACjVoAAo1+AAKNpQACjckAAo3MAAKNzgACjdAAAo3SAAKN1AACjdYAAo3XAAKN2gACjecAAo32AAKN+AACjfoAAo38AAKN/gACjgAAAo4CAAKOBAACjhMAAo4WAAKOGQACjhwAAo4fAAKOIgACjiUAAo4oAAKOKgACjmkAAo5rAAKObQACjm8AAo5yAAKOcwACjnQAAo51AAKOdgACjngAAo56AAKOewACjnwAAo5+AAKOfwACjr4AAo7AAAKOwgACjsQAAo7HAAKOyAACjskAAo7KAAKOywACjs0AAo7PAAKO0AACjtEAAo7TAAKO1AACjxMAAo8VAAKPFwACjxkAAo8cAAKPHQACjx4AAo8fAAKPIAACjyIAAo8kAAKPJQACjyYAAo8oAAKPKQACj2gAAo9qAAKPbQACj28AAo9yAAKPcwACj3QAAo91AAKPdgACj3gAAo96AAKPewACj3wAAo9+AAKPfwACj74AAo/AAAKPwgACj8QAAo/HAAKPyAACj8kAAo/KAAKPywACj80AAo/PAAKP0AACj9EAAo/TAAKP1AACkBMAApAVAAKQFwACkBkAApAcAAKQHQACkB4AApAfAAKQIAACkCIAApAkAAKQJQACkCYAApAoAAKQKQACkGgAApBqAAKQbAACkG4AApBxAAKQcgACkHMAApB0AAKQdQACkHcAApB5AAKQegACkHsAApB9AAKQfgACkIcAApCIAAKQigACkM0AApDxAAKRFQACkTgAApFfAAKRfwACkaYAApHNAAKR7QACkhEAApI1AAKSNwACkjoAApI8AAKSPgACkkAAApJDAAKSRgACkkgAApJKAAKSTQACkk8AApJRAAKSVAACklcAApJYAAKSXQACkmoAApJtAAKSbwACknIAApJ1AAKSdwACkpwAApLAAAKS5wACkwsAApMOAAKTEAACkxIAApMUAAKTFgACkxgAApMZAAKTHAACkykAApM8AAKTPgACk0AAApNCAAKTRAACk0YAApNIAAKTSgACk0wAApNOAAKTYQACk2QAApNnAAKTagACk20AApNwAAKTcwACk3YAApN5AAKTfAACk34AApO9AAKTvwACk8IAApPEAAKTxwACk8gAApPJAAKTygACk8sAApPNAAKTzwACk9AAApPRAAKT0wACk9QAApPdAAKT3gACk+AAApQfAAKUIQAClCMAApQlAAKUKAAClCkAApQqAAKUKwAClCwAApQuAAKUMAAClDEAApQyAAKUNAAClDUAApR0AAKUdgAClHkAApR7AAKUfgAClH8AApSAAAKUgQAClIIAApSEAAKUhgAClIcAApSIAAKUigAClIsAApSUAAKUlQAClJcAApTWAAKU2AAClNoAApTcAAKU3wAClOAAApThAAKU4gAClOMAApTlAAKU5wAClOgAApTpAAKU6wAClOwAApUrAAKVLQAClTAAApUyAAKVNQAClTYAApU3AAKVOAAClTkAApU7AAKVPQAClT4AApU/AAKVQQAClUIAApVLAAKVTAAClU4AApWNAAKVjwAClZEAApWTAAKVlgAClZcAApWYAAKVmQAClZoAApWcAAKVngAClZ8AApWgAAKVogAClaMAApXiAAKV5AAClecAApXpAAKV7AACle0AApXuAAKV7wAClfAAApXyAAKV9AAClfUAApX2AAKV+AAClfkAApYGAAKWBwAClggAApYKAAKWSQAClksAApZNAAKWTwACllIAApZTAAKWVAACllUAApZWAAKWWAAClloAApZbAAKWXAACll4AApZfAAKWngAClqAAApajAAKWpQAClqgAApapAAKWqgAClqsAApasAAKWrgAClrAAApaxAAKWsgAClrQAApa1AAKWxAACltEAApbWAAKW2QACltwAApbhAAKW5AAClucAApbpAAKW7gAClzkAApdcAAKXfAACl5wAApeeAAKXoAACl6IAApekAAKXpwACl6gAApepAAKXrAACl60AApevAAKXsAACl7IAApe1AAKXtgACl7cAApe6AAKXuwACl8AAApfNAAKX0gACl9QAApfWAAKX2wACl94AApfhAAKX4wACmAgAApgsAAKYUwACmHcAAph6AAKYfAACmH4AApiAAAKYggACmIQAApiFAAKYiAACmJUAApimAAKYqAACmKoAApisAAKYrgACmLAAApiyAAKYtAACmLYAApjHAAKYygACmM0AApjQAAKY0wACmNYAApjZAAKY3AACmN8AApjhAAKZIAACmSIAApkkAAKZJgACmSkAApkqAAKZKwACmSwAApktAAKZLwACmTEAApkyAAKZMwACmTUAApk2AAKZdQACmXcAApl5AAKZewACmX4AApl/AAKZgAACmYEAApmCAAKZhAACmYYAApmHAAKZiAACmYoAApmLAAKZygACmcwAApnPAAKZ0QACmdQAApnVAAKZ1gACmdcAApnYAAKZ2gACmdwAApndAAKZ3gACmeAAApnhAAKZ7gACme8AApnwAAKZ8gACmjEAApozAAKaNQACmjcAApo6AAKaOwACmjwAApo9AAKaPgACmkAAAppCAAKaQwACmkQAAppGAAKaRwACmoYAApqIAAKaigACmowAApqPAAKakAACmpEAApqSAAKakwACmpUAApqXAAKamAACmpkAApqbAAKanAACmtsAAprdAAKa3wACmuEAAprkAAKa5QACmuYAAprnAAKa6AACmuoAAprsAAKa7QACmu4AAprwAAKa8QACmzAAApsyAAKbNAACmzYAAps5AAKbOgACmzsAAps8AAKbPQACmz8AAptBAAKbQgACm0MAAptFAAKbRgACm4UAApuHAAKbiQACm4sAApuOAAKbjwACm5AAApuRAAKbkgACm5QAApuWAAKblwACm5gAApuaAAKbmwACm8AAApvkAAKcCwACnC8AApwyAAKcNAACnDYAApw4AAKcOgACnDwAApw9AAKcQAACnE0AApxcAAKcXgACnGAAApxiAAKcZAACnGYAApxoAAKcagACnHkAApx8AAKcfwACnIIAApyFAAKciAACnIsAApyOAAKckAACnM8AApzRAAKc0wACnNUAApzYAAKc2QACnNoAApzbAAKc3AACnN4AApzgAAKc4QACnOIAApzkAAKc5QACnSQAAp0mAAKdKAACnSoAAp0tAAKdLgACnS8AAp0wAAKdMQACnTMAAp01AAKdNgACnTcAAp05AAKdOgACnXkAAp17AAKdfQACnX8AAp2CAAKdgwACnYQAAp2FAAKdhgACnYgAAp2KAAKdiwACnYwAAp2OAAKdjwACnc4AAp3QAAKd0wACndUAAp3YAAKd2QACndoAAp3bAAKd3AACnd4AAp3gAAKd4QACneIAAp3kAAKd5QACniQAAp4mAAKeKAACnioAAp4tAAKeLgACni8AAp4wAAKeMQACnjMAAp41AAKeNgACnjcAAp45AAKeOgACnnkAAp57AAKefQACnn8AAp6CAAKegwACnoQAAp6FAAKehgACnogAAp6KAAKeiwACnowAAp6OAAKejwACns4AAp7QAAKe0gACntQAAp7XAAKe2AACntkAAp7aAAKe2wACnt0AAp7fAAKe4AACnuEAAp7jAAKe5AACny8AAp9SAAKfcgACn5IAAp+UAAKflgACn5gAAp+aAAKfnQACn54AAp+fAAKfogACn6MAAp+lAAKfpgACn6gAAp+rAAKfrAACn60AAp+wAAKfsQACn7oAAp/HAAKfzAACn84AAp/QAAKf1QACn9gAAp/bAAKf3QACoAIAAqAmAAKgTQACoHEAAqB0AAKgdgACoHgAAqB6AAKgfAACoH4AAqB/AAKgggACoI8AAqCgAAKgogACoKQAAqCmAAKgqAACoKoAAqCsAAKgrgACoLAAAqDBAAKgxAACoMcAAqDKAAKgzQACoNAAAqDTAAKg1gACoNkAAqDbAAKhGgACoRwAAqEeAAKhIAACoSMAAqEkAAKhJQACoSYAAqEnAAKhKQACoSsAAqEsAAKhLQACoS8AAqEwAAKhbwACoXEAAqFzAAKhdQACoXgAAqF5AAKhegACoXsAAqF8AAKhfgACoYAAAqGBAAKhggACoYQAAqGFAAKhxAACocYAAqHJAAKhywACoc4AAqHPAAKh0AACodEAAqHSAAKh1AACodYAAqHXAAKh2AACodoAAqHbAAKh6AACoekAAqHqAAKh7AACoisAAqItAAKiLwACojEAAqI0AAKiNQACojYAAqI3AAKiOAACojoAAqI8AAKiPQACoj4AAqJAAAKiQQACooAAAqKCAAKihAACooYAAqKJAAKiigACoosAAqKMAAKijQACoo8AAqKRAAKikgACopMAAqKVAAKilgACotUAAqLXAAKi2QACotsAAqLeAAKi3wACouAAAqLhAAKi4gACouQAAqLmAAKi5wACougAAqLqAAKi6wACoyoAAqMsAAKjLgACozAAAqMzAAKjNAACozUAAqM2AAKjNwACozkAAqM7AAKjPAACoz0AAqM/AAKjQAACo38AAqOBAAKjgwACo4UAAqOIAAKjiQACo4oAAqOLAAKjjAACo44AAqOQAAKjkQACo5IAAqOUAAKjlQACo7oAAqPeAAKkBQACpCkAAqQsAAKkLgACpDAAAqQyAAKkNAACpDYAAqQ3AAKkOgACpEcAAqRWAAKkWAACpFoAAqRcAAKkXgACpGAAAqRiAAKkZAACpHMAAqR2AAKkeQACpHwAAqR/AAKkggACpIUAAqSIAAKkigACpMkAAqTLAAKkzgACpNAAAqTTAAKk1AACpNUAAqTWAAKk1wACpNkAAqTbAAKk3AACpN0AAqTfAAKk4AACpR8AAqUhAAKlIwACpSUAAqUoAAKlKQACpSoAAqUrAAKlLAACpS4AAqUwAAKlMQACpTIAAqU0AAKlNQACpXQAAqV2AAKleAACpXoAAqV9AAKlfgACpX8AAqWAAAKlgQACpYMAAqWFAAKlhgACpYcAAqWJAAKligACpckAAqXLAAKlzgACpdAAAqXTAAKl1AACpdUAAqXWAAKl1wACpdkAAqXbAAKl3AACpd0AAqXfAAKl4AACph8AAqYhAAKmIwACpiUAAqYoAAKmKQACpioAAqYrAAKmLAACpi4AAqYwAAKmMQACpjIAAqY0AAKmNQACpnQAAqZ2AAKmeAACpnoAAqZ9AAKmfgACpn8AAqaAAAKmgQACpoMAAqaFAAKmhgACpocAAqaJAAKmigACpskAAqbLAAKmzQACps8AAqbSAAKm0wACptQAAqbVAAKm1gACptgAAqbaAAKm2wACptwAAqbeAAKm3wACpugAAqbpAAKm6wACpvgAAqb5AAKm+gACpvwAAqcJAAKnCgACpwsAAqcNAAKnGgACpxsAAqccAAKnHgACpycAAqc2AAKnQwACp1IAAqdkAAKneAACp48AAqehAAKnqgACp6sAAqetAAKnugACp7sAAqe8AAKnvgACp78AAqfIAAKn0gACp9kAAAAAAAAEAgAAAAAAAGYoAAAAAAAAAAAAAAAAAAKn4Q== + + Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 11.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 +cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIMwALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPXA9gD4APsBAAEDwQeBC0EMQRABE8EXgRtBHwEiASaBKkEuATHBNYE5QT0BQMFCwUgBSEFKQUqBTYFSgVZBWgFdwV7BYoFmQWoBbcFxgXSBeQF5QXmBecF6AXpBeoF6wX6BgkGGAYnBigGNwZGBlUGXQZyBnMGewaHBpsGqga5BsgGzAbbBuoG+QcIBxcHIwc1B0QHUwdUB2MHcgeMB40HkwefB7UHxAfHB9YH5QfoB/cIBggJCBgIJwgrCDoISQhKCFwIXQheCF8IYAhhCGIIdwh4CIAIjAigCK8IvgjNCNEI4AjvCP4JDQkcCSgJOglJCUoJWQloCXcJeAmHCZYJpQm6CbsJwwnPCeMJ8goBChAKFAojCjIKQQpQCl8Kawp9CowKmwqqCrkKyArXCuYK+wr8CwQLEAskCzMLQgtRC1ULZAtzC4ILkQugC6wLvgvNC9wL6wv6C/sMCgwZDCgMPQw+DEYMUgxmDHUMhAyTDJcMpgy1DMQM0wziDO4NAA0PDR4NLQ08DUsNWg1pDX4Nfw2HDZMNpw22DcUN1A3YDecN9g4FDhQOIw4vDkEOUA5fDm4OfQ6MDpsOqg6/DsAOyA7UDugO9w8GDxUPGQ8oDzcPRg9VD2QPcA+CD5EPoA+vD74Pvw/OD90P7BABEAIQChAWECoQORBIEFcQWxBqEHkQiBCXEKYQshDEENMQ4hDxEQARDxEeES0RLhExEToRSRFYEWcRfBF9EYURkRGlEbQRwxHSEdYR5RH0EgMSEhIhEi0SPxJOEk8SXhJtEnwSfRKMEpsSqhK/EsASyBLUEugS9xMGExUTGRMoEzcTRhNVE2QTcBOCE5EToBOvE74TzRPcE+sUABQBFAkUFRQpFDgURxRWFFoUaRR4FIcUlhSlFLEUwxTSFOEU8BT/FQ4VHRUsFUEVQhVKFVYVahV5FYgVlxWbFaoVuRXIFdcV5hXyFgQWExYUFiMWMhZBFkIWURZgFm8WhBaFFo0WmRatFrwWyxbaFt4W7Rb8FwsXGhcpFzUXRxdWF2UXdBeDF5IXoRewF8UXxhfOF9oX7hf9GAwYGxgfGC4YPRhMGFsYahh2GIgYlximGLUYxBjTGOIY8RkGGQcZDxkbGS8ZPhlNGVwZYBlvGX4ZjRmcGasZtxnJGdgZ5xn2GgUaBhoVGiQaMxpIGkkaURpdGnEagBqPGp4aohqxGsAazxreGu0a+RsLGxobKRs4G0cbYRtiG2gbdBuKG5kbnBurG7obvRvMG9sb3hvtG/wcABwPHB4cKhwrHCwcLRxCHEMcSxxXHGscehyJHJgcnByrHLocyRzYHOcc8x0FHRQdIx0yHUEdUB1fHW4dgx2EHYwdmB2sHbsdyh3ZHd0d7B37HgoeGR4oHjQeRh5VHmQecx6CHpEeoB6vHsQexR7NHtke7R78HwsfGh8eHy0fPB9LH1ofaR91H4cflh+lH7Qfwx/SH+Ef8CAFIAYgDiAaIC4gPSBMIFsgXyBuIH0gjCCbIKogtiDIINcg5iD1IQQhHiEfISUhMSFHIVYhWSFoIWkheCF7IYohmSGcIashuiG+Ic0h3CIWIhciGCIZIhoiGyIcIh0iHiIfIiAiISIiIiMiJCIlIiYiJyIoIikiKiIrIiwiLSIuIi8iRCJFIk0iWSJtInwiiyKaIp4irSK8Issi2iLbIuoi9iMIIxcjJiM1I0QjUyNiI3EjhiOHI48jmyOvI74jzSPcI+Aj7yP+JA0kHCQrJDckSSRYJGckdiSFJJQkoySyJMckyCTQJNwk8CT/JQ4lHSUhJTAlPyVOJV0lbCV4JYolmSWoJbclxiXVJeQl8yYIJgkmESYdJjEmQCZPJl4mYiZxJoAmjyaeJp8mria6Jswm2ybqJvknCCcXJyYnNSdKJ0snUydfJ3MngieRJ6AnpCezJ8In0SfgJ+8n+ygNKBwoKyg6KEkoWChnKHYoiyiMKJQooCi0KMMo0ij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UWJVYqlirWLNYv1jTWOJY8VkAWQRZE1kiWTFZQFlPWVtZbVl8WYtZmlmpWbhZx1nWWetZ7Fn0WgBaFFojWjJaQVpFWlRaY1pyWoFakFqcWq5avVrMWtta6lr5WwhbF1ssWy1bNVtBW1VbZFtzW4JbhluVW6Rbs1vCW9Fb3VvvW/5cDVwcXCtcOlxJXFhcbVxuXHZcglyWXKVctFzDXMdc1lzlXPRdA10SXR5dMF0/XU5dXV1sXXtdil2ZXa5dr123XcNd113mXfVeBF4IXhdeJl41XkReU15fXnFegF6PXp5erV68Xste2l7dXuxe+18KXw5fD18VXxxfHV8sXztfSl9OX2hfaV9vX3tfkV+gX6Nfsl/BX8Rf01/iX+Vf9GADYAdgFmAlYDFgMmAzYDRgSWBKYFJgXmByYIFgkGCfYKNgsmDBYNBg32DuYPphDGEbYSphOWFIYVdhZmF1YYphi2GTYZ9hs2HCYdFh4GHkYfNiAmIRYiBiL2I7Yk1iXGJrYnpiiWKYYqditmLLYsxi1GLgYvRjA2MSYyFjJWM0Y0NjUmNhY3BjfGOOY51jrGO7Y8pj2WPoY/dkDGQNZBVkIWQ1ZERkU2RiZGZkdWSEZJNkomSxZL1kz2TeZO1k/GULZRplKWU4ZTtlVWVWZVxlaGV+ZY1lkGWfZa5lsWXAZc9l0mXhZfBl9GYDZhJmE2YbZhxmMWYyZjpmRmZaZmlmeGaHZotmmmapZrhmx2bWZuJm9GcDZxJnIWcwZz9nTmddZ3Jnc2d7Z4dnm2eqZ7lnyGfMZ9tn6mf5aAhoF2gjaDVoRGhTaGJocWiAaI9onmihaKVoqWitaLVouGi8aL1VJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCDKAAIEIL4EIMIEIMd4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEILYEIK4ABgASAAIEILIEILhAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEUAUFdOUy5rZXlzWk5TLm9iamVjdHOqADsAPAA9AD4APwBAAEEAQgBDAESABoAHgAiACYAKgAuADIANgA6AD6oARgBHAEgASQBKAEsATABNAE4AT4AQgNeBBraBBg+BBt6AYYEHdIEH54ECVoECxYAvVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbVdBY2NvdW50XlBsYXliYWNrUmVjb3JkV0xpYnJhcnlVVGhlbWXfEBAAXABdAF4AXwAfAGAAYQAhAGIAYwAOACMAZABlACYAZgBnAGgAJwAnABMAbABtAC8AJwBnAHAAOwBnAHMAdAB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gBKANoAEgASAAoATgQGWgASAEoEBmIAGgBKBB3OAEQgS4Vx/9VdvcmRlcmVk0wA4ADkADgB5AHsAUKEAeoAUoQB8gBWAL15YRF9QU3RlcmVvdHlwZdkAHwAjAIAADgAmAIEAIQBmAIIARgB6AGcAhgAVACcALwB1AIpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAEIAUgBKANYAAgAQIgBbTADgAOQAOAIwAlgBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6kAlwCYAJkAmgCbAJwAnQCeAJ+AIIAkgCaAKIApgCuALYAwgDSAL18QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAZWERfUFNLX2ZldGNoUmVxdWVzdHNBcnJheV8QEVhEX1BTS19pc0Fic3RyYWN0XxAPWERfUFNLX3VzZXJJbmZvXxATWERfUFNLX2NsYXNzTWFwcGluZ18QFlhEX1BTS19lbnRpdHlDbGFzc05hbWXfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQC2ABUAfAB1AHUAdQAvAHUAvQCNAHUAdQAVAHVVX3R5cGVYX2RlZmF1bHRcX2Fzc29jaWF0aW9uW19pc1JlYWRPbmx5WV9pc1N0YXRpY1lfaXNVbmlxdWVaX2lzRGVyaXZlZFpfaXNPcmRlcmVkXF9pc0NvbXBvc2l0ZVdfaXNMZWFmgACAIYAAgBUICAgIgCOAFwgIgAAI0gA5AA4AxADFoIAi0gDHAMgAyQDKWiRjbGFzc25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjAMkAywDMV05TQXJyYXlYTlNPYmplY3TSAMcAyADOAM9fEBBYRFVNTFByb3BlcnR5SW1wpADQANEA0gDMXxAQWERVTUxQcm9wZXJ0eUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUA1QAVAHwAdQB1AHUALwB1AL0AjgB1AHUAFQB1gACAJYAAgBUICAgIgCOAGAgIgAAIWlBsYXlsaXN0VjPfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQDlABUAfAB1AHUAdQAvAHUAvQCPAHUAdQAVAHWAAIAngACAFQgICAiAI4AZCAiAAAjSADkADgDzAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUAfAB1AHUAdQAvAHUAvQCQAHUAdQAVAHWAAIAAgACAFQgICAiAI4AaCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEGABUAfAB1AHUAdQAvAHUAvQCRAHUAdQAVAHWAAIAqgACAFQgICAiAI4AbCAiAAAjSADkADgEUAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUAfAB1AHUAdQAvAHUAvQCSAHUAdQAVAHWAAIAsgACAFQgICAiAI4AcCAiAAAgI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBKAAVAHwAdQB1AHUALwB1AL0AkwB1AHUAFQB1gACALoAAgBUICAgIgCOAHQgIgAAI0wA4ADkADgE2ATcAUKCggC/SAMcAyAE6ATtfEBNOU011dGFibGVEaWN0aW9uYXJ5owE6ATwAzFxOU0RpY3Rpb25hcnnfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQE/ABUAfAB1AHUAdQAvAHUAvQCUAHUAdQAVAHWAAIAxgACAFQgICAiAI4AeCAiAAAjWACMADgAmAGYAHwAhAU0BTgAVAHUAFQAvgDKAM4AACIAAXxAUWERHZW5lcmljUmVjb3JkQ2xhc3PSAMcAyAFUAVVdWERVTUxDbGFzc0ltcKYBVgFXAVgBWQFaAMxdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQA7ABUAfAB1AHUAdQAvAHUAvQCVAHUAdQAVAHWAAIAGgACAFQgICAiAI4AfCAiAAAjSAMcAyAFrAWxfEBJYRFVNTFN0ZXJlb3R5cGVJbXCnAW0BbgFvAXABcQFyAMxfEBJYRFVNTFN0ZXJlb3R5cGVJbXBdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDTADgAOQAOAXQBdgBQoQF1gDehAXeAOIAvVWl0ZW1z3xASAKsArACtAXsAHwCvALABfAAhAK4BfQCxAA4AIwCyALMAJgC0ABUAFQAVACcARgB1AHUBhQAvAHUAZwB1AYkBdQB1AHUBjQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAEAgIgDoIgBIIgKCANwgIgDkIEo2znYXTADgAOQAOAZEBlABQogGSAZOAO4A8ogGVAZaAPYBSgC9fEBJYRF9QUHJvcFN0ZXJlb3R5cGVfEBBYRF9QUl9TdGVyZW90eXBl2QAfACMBmwAOACYBnAAhAGYBnQF3AZIAZwCGABUAJwAvAHUBpV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYA4gDuAEoA1gACABAiAPtMAOAA5AA4BpwGwAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoAbEBsgGzAbQBtQG2AbcBuIBHgEiASYBLgEyAToBPgFGAL18QG1hEX1BQU0tfaXNTdG9yZWRJblRydXRoRmlsZV8QG1hEX1BQU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8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1bmRIZXhfEB5kYXJrU3lzdGVtR3JvdXBlZEJhY2tncm91bmRIZXhfECBkYXJrU2Vjb25kYXJ5U3lzdGVtQmFja2dyb3VuZEhleF8QGGxpZ2h0U3lzdGVtQmFja2dyb3VuZEhleF8QEGRhcmtTZXBhcmF0b3JIZXhfEBFkYXJrU3lzdGVtRmlsbEhleF8QGmxpZ2h0VGVydGlhcnlTeXN0ZW1GaWxsSGV4XmxpZ2h0QWNjZW50SGV4XxARbGlnaHRTZXBhcmF0b3JIZXhfEBJsaWdodFN5c3RlbUZpbGxIZXhfEA9saWdodFByaW1hcnlIZXheZGFya1ByaW1hcnlIZXhfEBdkYXJrU3lzdGVtQmFja2dyb3VuZEhleF8QGWRhcmtUZXJ0aWFyeVN5c3RlbUZpbGxIZXhfEBtsaWdodFNlY29uZGFyeVN5c3RlbUZpbGxIZXhYc2VsZWN0ZWRdZGFya0FjY2VudEhleF8QIGxpZ2h0VGVydGlhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAfbGlnaHRTeXN0ZW1Hcm91cGVkQmFja2dyb3VuZEhleN8QEgCrAKwArSIwAB8ArwCwIjEAIQCuIjIAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1IjoALwB1AGcAdQUaId4AdQB1IkIAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBAvQIgBIIgMGBAtkICIEC8wgSUCiUntMAOAA5AA4iRiJJAFCiAZIFJIA7gKSiIkoiS4EC9YEDAYAv2QAfACMiTgAOACYiTwAhAGYiUCH6AZIAZwCGABUAJwAvAHUiWF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEC8oA7gBKANYAAgAQIgQL20wA4ADkADiJaImMAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgiZCJlImYiZyJ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vACcAZwBwAD4AZ00lTSYAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgQYhgASABIACgQYRgQGWgASAEoEBmIAJgBKBBoGBBhAIEqxQdq/TADgAOQAOTSpNLABQoQB6gBShTS2BBhKAL9kAHwAjTTAADgAmTTEAIQBmTTIASQB6AGcAhgAVACcALwB1TTpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBg+AFIASgDWAAIAECIEGE9MAOAA5AA5NPE1GAFCpAI0AjgCPAJAAkQCSAJMAlACVgBeAGIAZgBqAG4AcgB2AHoAfqU1HTUhNSU1KTUtNTE1NTU5NT4EGFIEGFoEGF4EGGYEGGoEGHIEGHYEGH4EGIIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVNUwAVTS0AdQB1AHUALwB1AL0AjQB1AHUAFQB1gACBBhWAAIEGEggICAiAI4AXCAiAAAjSADkADk1hAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVNLQB1AHUAdQAvAHUAvQCOAHUAdQAVAHWAAIAAgACBBhIICAgIgCOAGAgIgAAI3xAPAKsArACtAB8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SADkADmi2AMWggCLTADgAOQAOaLlougBQoKCAL1DSAMcAyGi+aL9ZWERQTU1vZGVso2i+aMAAzFdYRE1vZGVsAAAACAAAABkAAAAiAAAALAAAADEAAAA6AAAAPwAAAFEAAABWAAAAWwAAAF0AABDHAAAQzQAAEOYAABD4AAAQ/wAAEQ0AABEaAAARMgAAEUwAABFOAAARUQAAEVMAABFWAAARWQAAEVwAABGVAAARtAAAEdEAABHwAAASAgAAEiIAABIpAAASRwAAElMAABJvAAASdQAAEpcAABK4AAASywAAEs0AABLQAAAS0wAAEtUAABLXAAAS2QAAEtwAABLfAAAS4QAAEuMAABLlAAAS5wAAEukAABLrAAAS7AAAEvAAABL9AAATBQAAExAAABMlAAATJwAAEykAABMrAAATLQAAEy8AABMxAAATMwAAEzUAABM3AAATOQAAE04AABNQAAATUgAAE1UAABNYAAATWwAAE10AABNgAAATYwAAE2YAABNpAAATawAAE3IAABOAAAAThQAAE44AABOWAAATogAAE6oAABO5AAATwQAAE8cAABQKAAAULgAAFFIAABR1AAAUnAAAFLwAABTjAAAVCgAAFSoAABVOAAAVcgAAFX4AABWAAAAVggAAFYQAABWGAAAViAAAFYoAABWNAAAVjwAAFZEAABWUAAAVlgAAFZgAABWbAAAVnQAAFZ4AABWjAAAVqwAAFbgAABW7AAAVvQAAFcAAABXCAAAVxAAAFdMAABX4AAAWHAAAFkMAABZnAAAWaQAAFmsAABZtAAAWbwAAFnEAABZzAAAWdAAAFnYAABaDAAAWlgAAFpgAABaaAAAWnAAAFp4AABagAAAWogAAFqQAABamAAAWqAAAFrsAABa9AAAWvwAAFsEAABbDAAAWxQAAFscAABbJAAAWywAAFs0AABbPAAAW5QAAFvgAABcUAAAXMQAAF00AABdhAAAXcwAAF4kAABeiAAAX4QAAF+cAABfwAAAX/QAAGAkAABgTAAAYHQAAGCgAABgzAAAYQAAAGEgAABhKAAAYTAAAGE4AABhQAAAYUQAAGFIAABhTAAAYVAAAGFYAABhYAAAYWQAAGFoAABhcAAAYXQAAGGYAABhnAAAYaQAAGHIAABh9AAAYhgAAGJUAABicAAAYpAAAGK0AABi2AAAYyQAAGNI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AACWXAAAl1gAAJdgAACXaAAAl3AAAJd4AACXfAAAl4AAAJeEAACXiAAAl5AAAJeYAACXnAAAl6AAAJeoAACXrAAAmPgAAJmIAACaGAAAmpgAAJs0AACb0AAAnFAAAJzsAACdfAAAnggAAJ6kAACfNAAAn8QAAKBUAACg8AAAoPQAAKD8AAChBAAAoQwAAKEUAAChIAAAoSgAAKEwAAChPAAAoUQAAKFMAAChWAAAoWAAAKFoAAChcAAAoXgAAKGAAAChjAAAoZgAAKG8AACh8AAAofwAAKIEAACiEAAAohgAAKIgAACitAAAo0QAAKPgAACkcAAApHgAAKSAAACkiAAApJAAAKSYAACkoAAApKQAAKSsAACk4AAApSwAAKU0AAClPAAApUQAAKVMAAClVAAApVwAAKVkAAClbAAApXQAAKXAAAClyAAApdAAAKXYAACl4AAApegAAKXwAACl+AAApgAAAKYIAACmEAAApwwAAKcUAACnHAAApyQAAKcsAACnMAAApzQAAKc4AACnPAAAp0QAAKdMAACnUAAAp1QAAKdcAACnYAAAp4QAAKeIAACnkAAAqIwAAKiUAAConAAAqKQAAKisAACosAAAqLQAAKi4AACovAAAqMQAAKjMAACo0AAAqNQAAKjcAACo4AAAqdwAAKnkAACp7AAAqfQAAKn8AACqAAAAqgQAAKoIAACqDAAAqhQAAKocAACqIAAAqiQAAKosAACqMAAAqlQAAKpYAACqYAAAq1wAAKtkAACrbAAAq3QAAKt8AACrgAAAq4QAAKuIAACrjAAAq5QAAKucAACroAAAq6QAAKusAACrsAAArKwAAKy0AACsvAAArMQAAKzMAACs0AAArNQAAKzYAACs3AAArOQAAKzsAACs8AAArPQAAKz8AACtAAAArSQAAK0oAACtMAAAriwAAK40AACuPAAArkQAAK5MAACuUAAArlQAAK5YAACuXAAArmQAAK5sAACucAAArnQAAK58AACugAAAr3wAAK+EAACvjAAAr5QAAK+cAACvoAAAr6QAAK+oAACvrAAAr7QAAK+8AACvwAAAr8QAAK/MAACv0AAAsAQAALAIAACwDAAAsBQAALEQAACxGAAAsSAAALEoAACxMAAAsTQAALE4AACxPAAAsUAAALFIAACxUAAAsVQAALFYAACxYAAAsWQAALJgAACyaAAAsnAAALJ4AACygAAAsoQAALKIAACyjAAAspAAALKYAACyoAAAsqQAALKoAACysAAAsrQAALLkAACzGAAAs8QAALPMAACz1AAAs9wAALPkAACz7AAAs/QAALP8AAC0BAAAtAwAALQUAAC0HAAAtCQAALQsAAC0NAAAtDwAALREAAC0TAAAtFQAALRcAAC0ZAAAtRAAALUYAAC1IAAAtSgAALU0AAC1QAAAtUwAALVYAAC1ZAAAtXAAALV8AAC1iAAAtZQAALWgAAC1rAAAtbgAALXEAAC10AAAtdwAALXoAAC19AAAtfwAALYYAAC2MAAAtmgAALaMAAC2vAAAtwgAALcgAAC3SAAAt1wAALeQAAC3vAAAt+gAALf8AAC4HAAAuDwAALhkAAC4kAAAuLgAALkEAAC5OAAAumQAALrwAAC7cAAAu/AAALv4AAC8AAAAvAgAALwQAAC8GAAAvBwAALwgAAC8KAAAvCwAALw0AAC8OAAAvEAAALxIAAC8TAAAvFAAALxYAAC8XAAAvHAAALykAAC8uAAAvMAAALzIAAC83AAAvOQAALzsAAC89AAAvYgAAL4YAAC+tAAAv0QAAL9MAAC/VAAAv1wAAL9kAAC/bAAAv3QAAL94AAC/gAAAv7QAAL/4AADAAAAAwAgAAMAQAADAGAAAwCAAAMAoAADAMAAAwDgAAMB8AADAhAAAwIwAAMCUAADAnAAAwKQAAMCsAADAtAAAwLwAAMDEAADBwAAAwcgAAMHQAADB2AAAweAAAMHkAADB6AAAwewAAMHwAADB+AAAwgAAAMIEAADCCAAAwhAAAMIUAADDEAAAwxgAAMMgAADDKAAAwzAAAMM0AADDOAAAwzwAAMNAAADDSAAAw1AAAMNUAADDWAAAw2AAAMNkAADEYAAAxGgAAMRwAADEeAAAxIAAAMSEAADEiAAAxIwAAMSQAADEmAAAxKAAAMSkAADEqAAAxLAAAMS0AADE6AAAxOwAAMTwAADE+AAAxfQAAMX8AADGBAAAxgwAAMYUAADGGAAAxhwAAMYgAADGJAAAxiwAAMY0AADGOAAAxjwAAMZEAADGSAAAx0QAAMdMAADHVAAAx1wAAMdkAADHaAAAx2wAAMdwAADHdAAAx3wAAMeEAADHiAAAx4wAAMeUAADHmAAAyJQAAMicAADIpAAAyKwAAMi0AADIuAAAyLwAAMjAAADIxAAAyMwAAMjUAADI2AAAyNwAAMjkAADI6AAAyeQAAMnsAADJ9AAAyfwAAMoEAADKCAAAygwAAMoQAADKFAAAyhwAAMokAADKKAAAyiwAAMo0AADKOAAAyzQAAMs8AADLRAAAy0wAAMtUAADLWAAAy1wAAMtgAADLZAAAy2wAAMt0AADLeAAAy3wAAMuEAADLiAAAzBwAAMysAADNSAAAzdgAAM3gAADN6AAAzfAAAM34AADOAAAAzggAAM4MAADOFAAAzkgAAM6EAADOjAAAzpQAAM6cAADOpAAAzqwAAM60AADOvAAAzvgAAM8AAADPCAAAzxAAAM8YAADPIAAAzygAAM8wAADPOAAA0DQAANA8AADQRAAA0EwAANBUAADQWAAA0FwAANBgAADQZAAA0GwAANB0AADQeAAA0HwAANCEAADQiAAA0YQAANGMAADRlAAA0ZwAANGkAADRqAAA0awAANGwAADRtAAA0bwAANHEAADRyAAA0cwAANHUAADR2AAA0tQAANLcAADS5AAA0uwAANL0AADS+AAA0vwAANMAAADTBAAA0wwAANMUAADTGAAA0xwAANMkAADTKAAA1CQAANQsAADUNAAA1DwAANREAADUSAAA1EwAANRQAADUVAAA1FwAANRkAADUaAAA1GwAANR0AADUeAAA1XQAANV8AADVhAAA1YwAANWUAADVmAAA1ZwAANWgAADVpAAA1awAANW0AADVuAAA1bwAANXEAADVyAAA1sQAANbMAADW1AAA1twAANbkAADW6AAA1uwAANbwAADW9AAA1vwAANcEAADXCAAA1wwAANcUAADXGAAA2BQAANgcAADYJAAA2CwAANg0AADYOAAA2DwAANhAAADYRAAA2EwAANhUAADYWAAA2FwAANhkAADYaAAA2IwAANjYAADZDAAA2VgAANmMAADZ2AAA2jQAANp8AADbqAAA3DQAANy0AADdNAAA3TwAAN1EAADdTAAA3VQAAN1cAADdYAAA3WQAAN1sAADdcAAA3XgAAN18AADdhAAA3YwAAN2QAADdlAAA3ZwAAN2gAADdtAAA3egAAN38AADeBAAA3gwAAN4gAADeKAAA3jAAAN44AADejAAA3yAAAN+wAADgTAAA4NwAAODkAADg7AAA4PQAAOD8AADhBAAA4QwAAOEQ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AAEPEAABDxQAARAQAAEQGAABECAAARAoAAEQMAABEDQAARA4AAEQPAABEEAAARBIAAEQUAABEFQAARBYAAEQYAABEGQAARFgAAERaAABEXAAARF4AAERgAABEYQAARGIAAERjAABEZAAARGYAAERoAABEaQAARGoAAERsAABEbQAARJIAAES2AABE3QAARQEAAEUDAABFBQAARQcAAEUJAABFCwAARQ0AAEUOAABFEAAARR0AAEUsAABFLgAARTAAAEUyAABFNAAARTYAAEU4AABFOgAARUkAAEVLAABFTQAARU8AAEVRAABFVAAARVcAAEVaAABFXAAARZsAAEWdAABFnwAARaEAAEWjAABFpAAARaUAAEWmAABFpwAARakAAEWrAABFrAAARa0AAEWvAABFsAAARe8AAEXxAABF8wAARfUAAEX3AABF+AAARfkAAEX6AABF+wAARf0AAEX/AABGAAAARgEAAEYDAABGBAAARgYAAEZFAABGRwAARkkAAEZLAABGTQAARk4AAEZPAABGUAAARlEAAEZTAABGVQAARlYAAEZXAABGWQAARloAAEaZAABGmwAARp0AAEafAABGoQAARqIAAEajAABGpAAARqUAAEanAABGqQAARqoAAEarAABGrQAARq4AAEbxAABHFQAARzkAAEdcAABHgwAAR6MAAEfKAABH8QAASBEAAEg1AABIWQAASFsAAEhdAABIXwAASGEAAEhjAABIZQAASGgAAEhqAABIbAAASG8AAEhxAABIcwAASHYAAEh4AABIeQAASIIAAEiPAABIkgAASJQAAEiXAABImQAASJsAAEjAAABI5AAASQsAAEkvAABJMQAASTMAAEk1AABJNwAASTkAAEk7AABJPAAAST4AAElLAABJXgAASWAAAEliAABJZAAASWYAAEloAABJagAASWwAAEluAABJcAAASYMAAEmFAABJhwAASYkAAEmLAABJjQAASY8AAEmRAABJkwAASZUAAEmXAABJ1gAASdgAAEnaAABJ3AAASd4AAEnfAABJ4AAASeEAAEniAABJ5AAASeYAAEnnAABJ6AAASeoAAEnrAABJ9AAASfUAAEn3AABKNgAASjgAAEo6AABKPAAASj4AAEo/AABKQAAASkEAAEpCAABKRAAASkYAAEpHAABKSAAASkoAAEpLAABKigAASowAAEqOAABKkAAASpIAAEqTAABKlAAASpUAAEqWAABKmAAASpoAAEqbAABKnAAASp4AAEqfAABKqAAASqkAAEqrAABK6gAASuwAAEruAABK8AAASvIAAErzAABK9AAASvUAAEr2AABK+AAASvoAAEr7AABK/AAASv4AAEr/AABLPgAAS0AAAEtCAABLRAAAS0YAAEtHAABLSAAAS0kAAEtKAABLTAAAS04AAEtPAABLUAAAS1IAAEtTAABLXAAAS10AAEtfAABLngAAS6AAAEuiAABLpAAAS6YAAEunAABLqAAAS6kAAEuqAABLrAAAS64AAEuvAABLsAAAS7IAAEuzAABL8gAAS/QAAEv2AABL+AAAS/oAAEv7AABL/AAAS/0AAEv+AABMAAAATAIAAEwDAABMBAAATAYAAEwHAABMFAAATBUAAEwWAABMGAAATFcAAExZAABMWwAATF0AAExfAABMYAAATGEAAExiAABMYwAATGUAAExnAABMaAAATGkAAExrAABMbAAATKsAAEytAABMrwAATLEAAEyzAABMtAAATLUAAEy2AABMtwAATLkAAEy7AABMvAAATL0AAEy/AABMwAAATM4AAEzbAABM6gAATOwAAEzuAABM8AAATPIAAEz0AABM9gAATPgAAE0HAABNCQAATQwAAE0PAABNEgAATRUAAE0YAABNGwAATR0AAE0kAABNKwAATS4AAE05AABNRAAATVAAAE2bAABNvgAATd4AAE3+AABOAAAATgIAAE4EAABOBgAATggAAE4JAABOCgAATgwAAE4NAABODwAAThAAAE4SAABOFAAAThUAAE4WAABOGAAAThkAAE4eAABOKwAATjAAAE4yAABONAAATjkAAE47AABOPQAATj8AAE5kAABOiAAATq8AAE7TAABO1QAATtcAAE7ZAABO2wAATt0AAE7fAABO4AAATuIAAE7vAABPAAAATwIAAE8EAABPBgAATwgAAE8KAABPDAAATw4AAE8QAABPIQAATyMAAE8lAABPJwAATykAAE8rAABPLQAATy8AAE8xAABPMwAAT3IAAE90AABPdgAAT3gAAE96AABPewAAT3wAAE99AABPfgAAT4AAAE+CAABPgwAAT4QAAE+GAABPhwAAT8YAAE/IAABPygAAT8wAAE/OAABPzwAAT9AAAE/RAABP0gAAT9QAAE/WAABP1wAAT9gAAE/aAABP2wAAUBoAAFAcAABQHgAAUCAAAFAiAABQIwAAUCQAAFAlAABQJgAAUCgAAFAqAABQKwAAUCwAAFAuAABQLwAAUDwAAFA9AABQPgAAUEAAAFB/AABQgQAAUIMAAFCFAABQhwAAUIgAAFCJAABQigAAUIsAAFCNAABQjwAAUJAAAFCRAABQkwAAUJQAAFDTAABQ1QAAUNcAAFDZAABQ2wAAUNwAAFDdAABQ3gAAUN8AAFDhAABQ4wAAUOQAAFDlAABQ5wAAUOgAAFEnAABRKQAAUSsAAFEtAABRLwAAUTAAAFExAABRMgAAUTMAAFE1AABRNwAAUTgAAFE5AABROwAAUTwAAFF7AABRfQAAUX8AAFGBAABRgwAAUYQAAFGFAABRhgAAUYcAAFGJAABRiwAAUYwAAFGNAABRjwAAUZAAAFHPAABR0QAAUdMAAFHVAABR1wAAUdgAAFHZAABR2gAAUdsAAFHdAABR3wAAUeAAAFHhAABR4wAAUeQAAFIJAABSLQAAUlQAAFJ4AABSegAAUnwAAFJ+AABSgAAAUoIAAFKEAABShQAAUogAAFKVAABSpAAAUqYAAFKoAABSqgAAUqwAAFKuAABSsAAAUrIAAFLBAABSxAAAUscAAFLKAABSzQAAUtAAAFLTAABS1gAAUtgAAFMXAABTGQAAUxwAAFMeAABTIAAAUyEAAFMiAABTIwAAUyQAAFMmAABTKAAAUykAAFMqAABTLAAAUy0AAFMvAABTbgAAU3AAAFNyAABTdAAAU3YAAFN3AABTeAAAU3kAAFN6AABTfAAAU34AAFN/AABTgAAAU4IAAFODAABTwgAAU8QAAFPGAABTyAAAU8oAAFPLAABTzAAAU80AAFPOAABT0AAAU9IAAFPTAABT1AAAU9YAAFPXAABUFgAAVBgAAFQbAABUHQAAVB8AAFQgAABUIQAAVCIAAFQjAABUJQAAVCcAAFQoAABUKQAAVCsAAFQsAABULgAAVG0AAFRvAABUcQAAVHMAAFR1AABUdgAAVHcAAFR4AABUeQAAVHsAAFR9AABUfgAAVH8AAFSBAABUggAAVMEAAFTDAABUxQAAVMcAAFTJAABUygAAVMsAAFTMAABUzQAAVM8AAFTRAABU0gAAVNMAAFTVAABU1gAAVRUAAFUXAABVGQAAVRsAAFUdAABVHgAAVR8AAFUgAABVIQAAVSMAAFUlAABVJgAAVScAAFUpAABVKgAAVXUAAFWYAABVuAAAVdgAAFXaAABV3AAAVd4AAFXgAABV4gAAVeMAAFXkAABV5wAAVegAAFXqAABV6wAAVe0AAFXvAABV8AAAVfEAAFX0AABV9QAAVf4AAFYLAABWEAAAVhIAAFYUAABWGQAAVhwAAFYfAABWIQAAVkYAAFZqAABWkQAAVrUAAFa4AABWugAAVrwAAFa+AABWwAAAVsIAAFbDAABWxgAAVtMAAFbkAABW5gAAVugAAFbqAABW7AAAVu4AAFbwAABW8gAAVvQAAFcFAABXCAAAVwsAAFcOAABXEQAAVxQAAFcXAABXGgAAVx0AAFcfAABXXgAAV2AAAFdiAABXZAAAV2cAAFdoAABXaQAAV2oAAFdrAABXbQAAV28AAFdwAABXcQAAV3MAAFd0AABXswAAV7UAAFe3AABXuQAAV7wAAFe9AABXvgAAV78AAFfAAABXwgAAV8QAAFfFAABXxgAAV8gAAFfJAABYCAAAWAoAAFgNAABYDwAAWBIAAFgTAABYFAAAWBUAAFgWAABYGAAAWBoAAFgbAABYHAAAWB4AAFgfAABYLAAAWC0AAFguAABYMAAAWG8AAFhxAABYcwAAWHUAAFh4AABYeQAAWHoAAFh7AABYfAAAWH4AAFiAAABYgQAAWIIAAFiEAABYhQAAWMQAAFjGAABYyAAAWMoAAFjNAABYzgAAWM8AAFjQAABY0QAAWNMAAFjVAABY1gAAWNcAAFjZAABY2gAAWRkAAFkbAABZHQAAWR8AAFkiAABZIwAAWSQAAFklAABZJgAAWSgAAFkqAABZKwAAWSwAAFkuAABZLwAAWW4AAFlwAABZcgAAWXQAAFl3AABZeAAAWXkAAFl6AABZewAAWX0AAFl/AABZgAAAWYEAAFmDAABZhAAAWcMAAFnFAABZxwAAWckAAFnMAABZzQAAWc4AAFnPAABZ0AAAWdIAAFnUAABZ1QAAWdYAAFnYAABZ2QAAWf4AAFoiAABaSQAAWm0AAFpwAABacgAAWnQAAFp2AABaeAAAWnoAAFp7AABafgAAWosAAFqaAABanAAAWp4AAFqgAABaogAAWqQAAFqmAABaqAAAWrcAAFq6AABavQAAWsAAAFrDAABaxgAAWsk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AAGXoAABl9QAAZfoAAGX8AABl/gAAZgMAAGYGAABmCQAAZgsAAGYwAABmVAAAZnsAAGafAABmogAAZqQAAGamAABmqAAAZqoAAGasAABmrQAAZrAAAGa9AABmzgAAZtAAAGbSAABm1AAAZtYAAGbYAABm2gAAZtwAAGbeAABm7wAAZvIAAGb1AABm+AAAZvsAAGb+AABnAQAAZwQAAGcHAABnCQAAZ0gAAGdKAABnTAAAZ04AAGdRAABnUgAAZ1MAAGdUAABnVQAAZ1cAAGdZAABnWgAAZ1sAAGddAABnXgAAZ50AAGefAABnoQAAZ6MAAGemAABnpwAAZ6gAAGepAABnqgAAZ6wAAGeuAABnrwAAZ7AAAGeyAABnswAAZ/IAAGf0AABn9wAAZ/kAAGf8AABn/QAAZ/4AAGf/AABoAAAAaAIAAGgEAABoBQAAaAYAAGgIAABoCQAAaBYAAGgXAABoGAAAaBoAAGhZAABoWwAAaF0AAGhfAABoYgAAaGMAAGhkAABoZQAAaGYAAGhoAABoagAAaGsAAGhsAABobgAAaG8AAGiuAABosAAAaLIAAGi0AABotwAAaLgAAGi5AABougAAaLsAAGi9AABovwAAaMAAAGjBAABowwAAaMQAAGkDAABpBQAAaQcAAGkJAABpDAAAaQ0AAGkOAABpDwAAaRAAAGkSAABpFAAAaRUAAGkWAABpGAAAaRkAAGlYAABpWgAAaVwAAGleAABpYQAAaWIAAGljAABpZAAAaWUAAGlnAABpaQAAaWoAAGlrAABpbQAAaW4AAGmtAABprwAAabEAAGmzAABptgAAabcAAGm4AABpuQAAaboAAGm8AABpvgAAab8AAGnAAABpwgAAacMAAGnoAABqDAAAajMAAGpXAABqWgAAalwAAGpeAABqYAAAamIAAGpkAABqZQAAamgAAGp1AABqhAAAaoYAAGqIAABqigAAaowAAGqOAABqkAAAapIAAGqhAABqpAAAaqcAAGqqAABqrQAAarAAAGqzAABqtgAAargAAGr3AABq+QAAavsAAGr9AABrAAAAawEAAGsCAABrAwAAawQAAGsGAABrCAAAawkAAGsKAABrDAAAaw0AAGtMAABrTgAAa1AAAGtSAABrVQAAa1YAAGtXAABrWAAAa1kAAGtbAABrXQAAa14AAGtfAABrYQAAa2IAAGuhAABrowAAa6UAAGunAABrqgAAa6sAAGusAABrrQAAa64AAGuwAABrsgAAa7MAAGu0AABrtgAAa7cAAGv2AABr+AAAa/oAAGv8AABr/wAAbAAAAGwBAABsAgAAbAMAAGwFAABsBwAAbAgAAGwJAABsCwAAbAwAAGxLAABsTQAAbE8AAGxRAABsVAAAbFUAAGxWAABsVwAAbFgAAGxaAABsXAAAbF0AAGxeAABsYAAAbGEAAGygAABsogAAbKQAAGymAABsqQAAbKoAAGyrAABsrAAAbK0AAGyvAABssQAAbLIAAGyzAABstQAAbLYAAGz1AABs9wAAbPkAAGz7AABs/gAAbP8AAG0AAABtAQAAbQIAAG0EAABtBgAAbQcAAG0IAABtCgAAbQsAAG1WAABteQAAbZkAAG25AABtuwAAbb0AAG2/AABtwQAAbcMAAG3EAABtxQAAbcgAAG3JAABtywAAbcwAAG3OAABt0AAAbdEAAG3SAABt1QAAbdYAAG3bAABt6AAAbe0AAG3vAABt8QAAbfYAAG35AABt/AAAbf4AAG4jAABuRwAAbm4AAG6SAABulQAAbpcAAG6ZAABumwAAbp0AAG6fAABuoAAAbqMAAG6wAABuwQAAbsMAAG7FAABuxwAAbskAAG7LAABuzQAAbs8AAG7RAABu4gAAbuUAAG7oAABu6wAAbu4AAG7xAABu9AAAbvcAAG76AABu/AAAbzsAAG89AABvPwAAb0EAAG9EAABvRQAAb0YAAG9HAABvSAAAb0oAAG9MAABvTQAAb04AAG9QAABvUQAAb5AAAG+SAABvlAAAb5YAAG+ZAABvmgAAb5sAAG+cAABvnQAAb58AAG+hAABvogAAb6MAAG+lAABvpgAAb+UAAG/nAABv6gAAb+wAAG/vAABv8AAAb/EAAG/yAABv8wAAb/UAAG/3AABv+AAAb/kAAG/7AABv/AAAcAkAAHAKAABwCwAAcA0AAHBMAABwTgAAcFAAAHBSAABwVQAAcFYAAHBXAABwWAAAcFkAAHBbAABwXQAAcF4AAHBfAABwYQAAcGIAAHChAABwowAAcKUAAHCnAABwqgAAcKsAAHCsAABwrQAAcK4AAHCwAABwsgAAcLMAAHC0AABwtgAAcLcAAHD2AABw+AAAcPoAAHD8AABw/wAAcQAAAHEBAABxAgAAcQMAAHEFAABxBwAAcQgAAHEJAABxCwAAcQwAAHFLAABxTQAAcU8AAHFRAABxVAAAcVUAAHFWAABxVwAAcVgAAHFaAABxXAAAcV0AAHFeAABxYAAAcWEAAHGgAABxogAAcaQAAHGmAABxqQAAcaoAAHGrAABxrAAAca0AAHGvAABxsQAAcbIAAHGzAABxtQAAcbYAAHHbAABx/wAAciYAAHJKAAByTQAAck8AAHJRAAByUwAAclUAAHJXAAByWAAAclsAAHJoAABydwAAcnkAAHJ7AAByfQAAcn8AAHKBAABygwAAcoUAAHKUAABylwAAcpoAAHKdAAByoAAAcqMAAHKmAAByqQAAcqsAAHLqAABy7AAAcu8AAHLxAABy9AAAcvUAAHL2AABy9wAAcvgAAHL6AABy/AAAcv0AAHL+AABzAAAAcwEAAHNAAABzQgAAc0QAAHNGAABzSQAAc0oAAHNLAABzTAAAc00AAHNPAABzUQAAc1IAAHNTAABzVQAAc1YAAHOVAABzlwAAc5kAAHObAABzngAAc58AAHOgAABzoQAAc6IAAHOkAABzpgAAc6cAAHOoAABzqgAAc6sAAHPqAABz7AAAc+8AAHPxAABz9AAAc/UAAHP2AABz9wAAc/gAAHP6AABz/AAAc/0AAHP+AAB0AAAAdAEAAHRAAAB0QgAAdEQAAHRGAAB0SQAAdEoAAHRLAAB0TAAAdE0AAHRPAAB0UQAAdFIAAHRTAAB0VQAAdFYAAHSVAAB0lwAAdJkAAHSbAAB0ngAAdJ8AAHSgAAB0oQAAdKIAAHSkAAB0pgAAdKcAAHSoAAB0qgAAdKsAAHTqAAB07AAAdO4AAHTwAAB08wAAdPQAAHT1AAB09gAAdPcAAHT5AAB0+wAAdPwAAHT9AAB0/wAAdQAAAHVLAAB1bgAAdY4AAHWuAAB1sAAAdbIAAHW0AAB1tgAAdbgAAHW5AAB1ugAAdb0AAHW+AAB1wAAAdcEAAHXDAAB1xQAAdcYAAHXHAAB1ygAAdcsAAHXUAAB14QAAdeYAAHXoAAB16gAAde8AAHXyAAB19QAAdfcAAHYcAAB2QAAAdmcAAHaLAAB2jgAAdpAAAHaSAAB2lAAAdpYAAHaYAAB2mQAAdpwAAHapAAB2ugAAdrwAAHa+AAB2wAAAdsIAAHbEAAB2xgAAdsgAAHbKAAB22wAAdt4AAHbhAAB25AAAducAAHbqAAB27QAAdvAAAHbzAAB29QAAdzQAAHc2AAB3OAAAdzoAAHc9AAB3PgAAdz8AAHdAAAB3QQAAd0MAAHdFAAB3RgAAd0cAAHdJAAB3SgAAd4kAAHeLAAB3jQAAd48AAHeSAAB3kwAAd5QAAHeVAAB3lgAAd5gAAHeaAAB3mwAAd5wAAHeeAAB3nwAAd94AAHfgAAB34wAAd+UAAHfoAAB36QAAd+oAAHfrAAB37AAAd+4AAHfwAAB38QAAd/IAAHf0AAB39QAAeAIAAHgDAAB4BAAAeAYAAHhFAAB4RwAAeEkAAHhLAAB4TgAAeE8AAHhQAAB4UQAAeFIAAHhUAAB4VgAAeFcAAHhYAAB4WgAAeFsAAHiaAAB4nAAAeJ4AAHigAAB4owAAeKQAAHilAAB4pgAAeKcAAHipAAB4qwAAeKwAAHitAAB4rwAAeLAAAHjvAAB48QAAePMAAHj1AAB4+AAAePkAAHj6AAB4+wAAePwAAHj+AAB5AAAAeQEAAHkCAAB5BAAAeQUAAHlEAAB5RgAAeUgAAHlKAAB5TQAAeU4AAHlPAAB5UAAAeVEAAHlTAAB5VQAAeVYAAHlXAAB5WQAAeVoAAHmZAAB5mwAAeZ0AAHmfAAB5ogAAeaMAAHmkAAB5pQAAeaYAAHmoAAB5qgAAeasAAHmsAAB5rgAAea8AAHnUAAB5+AAAeh8AAHpDAAB6RgAAekgAAHpKAAB6TAAAek4AAHpQAAB6UQAAelQAAHphAAB6cAAAenIAAHp0AAB6dgAAengAAHp6AAB6fAAAen4AAHqNAAB6kAAAepMAAHqWAAB6mQAAepwAAHqfAAB6ogAAeqQAAHrjAAB65QAAeucAAHrpAAB67AAAeu0AAHruAAB67wAAevAAAHryAAB69AAAevUAAHr2AAB6+AAAevkAAHs4AAB7OgAAezwAAHs+AAB7QQAAe0IAAHtDAAB7RAAAe0UAAHtHAAB7SQAAe0oAAHtLAAB7TQAAe04AAHuNAAB7jwAAe5EAAHuTAAB7lgAAe5cAAHuYAAB7mQAAe5oAAHucAAB7ngAAe58AAHugAAB7ogAAe6MAAHviAAB75AAAe+cAAHvpAAB77AAAe+0AAHvuAAB77wAAe/AAAHvyAAB79AAAe/UAAHv2AAB7+AAAe/kAAHv8AAB8OwAAfD0AAHw/AAB8QQAAfEQAAHxFAAB8RgAAfEcAAHxIAAB8SgAAfEwAAHxNAAB8TgAAfFAAAHxRAAB8kAAAfJIAAHyUAAB8lgAAfJkAAHyaAAB8mwAAfJwAAHydAAB8nwAAfKEAAHyiAAB8owAAfKUAAHymAAB85QAAfOcAAHzpAAB86wAAfO4AAHzvAAB88AAAfPEAAHzyAAB89AAAfPYAAHz3AAB8+AAAfPoAAHz7AAB9RgAAfWkAAH2JAAB9qQAAfasAAH2tAAB9rwAAfbEAAH2zAAB9tAAAfbUAAH24AAB9uQAAfbsAAH28AAB9vgAAfcAAAH3BAAB9wgAAfcUAAH3GAAB9ywAAfdgAAH3dAAB93wAAfeEAAH3mAAB96QAAfewAAH3uAAB+EwAAfjcAAH5eAAB+ggAAfoUAAH6HAAB+iQAAfosAAH6NAAB+jwAAfpAAAH6TAAB+oAAAfrEAAH6zAAB+tQAAfrcAAH65AAB+uwAAfr0AAH6/AAB+wQAAftIAAH7VAAB+2AAAftsAAH7eAAB+4QAAfuQAAH7nAAB+6gAAfuwAAH8rAAB/LQAAfy8AAH8xAAB/NAAAfzUAAH82AAB/NwAAfzgAAH86AAB/PAAAfz0AAH8+AAB/QAAAf0EAAH+AAAB/ggAAf4QAAH+GAAB/iQAAf4oAAH+LAAB/jAAAf40AAH+PAAB/kQAAf5IAAH+TAAB/lQAAf5YAAH/VAAB/1wAAf9oAAH/cAAB/3wAAf+AAAH/hAAB/4gAAf+MAAH/lAAB/5wAAf+gAAH/pAAB/6wAAf+wAAH/5AAB/+gAAf/sAAH/9AACAPAAAgD4AAIBAAACAQgAAgEUAAIBGAACARwAAgEgAAIBJAACASwAAgE0AAIBOAACATwAAgFEAAIBSAACAkQAAgJMAAICVAACAlwAAgJoAAICbAACAnAAAgJ0AAICeAACAoAAAgKIAAICjAACApAAAgKYAAICnAACA5gAAgOgAAIDqAACA7AAAgO8AAIDwAACA8QAAgPIAAIDzAACA9QAAgPcAAID4AACA+QAAgPsAAID8AACBOwAAgT0AAIE/AACBQQAAgUQAAIFFAACBRgAAgUcAAIFIAACBSgAAgUwAAIFNAACBTgAAgVAAAIFRAACBkAAAgZIAAIGUAACBlgAAgZkAAIGaAACBmwAAgZwAAIGdAACBnwAAgaEAAIGiAACBowAAgaUAAIGmAACBywAAge8AAIIWAACCOgAAgj0AAII/AACCQQAAgkMAAIJFAACCRwAAgkgAAIJLAACCWAAAgmcAAIJpAACCawAAgm0AAIJvAACCcQAAgnMAAIJ1AACChAAAgocAAIKKAACCjQAAgpAAAIKTAACClgAAgpkAAIKbAACC2gAAgtwAAILeAACC4AAAguMAAILkAACC5QAAguYAAILnAACC6QAAgusAAILsAACC7QAAgu8AAILwAACDLwAAgzEAAIMzAACDNQAAgzgAAIM5AACDOgAAgzsAAIM8AACDPgAAg0AAAINBAACDQgAAg0QAAINFAACDhAAAg4YAAIOIAACDigAAg40AAIOOAACDjwAAg5AAAIORAACDkwAAg5UAAIOWAACDlwAAg5kAAIOaAACD2QAAg9sAAIPdAACD3wAAg+IAAIPjAACD5AAAg+UAAIPmAACD6AAAg+oAAIPrAACD7AAAg+4AAIPvAACELgAAhDAAAIQyAACENAAAhDcAAIQ4AACEOQAAhDoAAIQ7AACEPQAAhD8AAIRAAACEQQAAhEMAAIREAACEgwAAhIUAAISHAACEiQAAhIwAAISNAACEjgAAhI8AAISQAACEkgAAhJQAAISVAACElgAAhJgAAISZAACE2AAAhNoAAITcAACE3gAAhOEAAITiAACE4wAAhOQAAITlAACE5wAAhOkAAITqAACE6wAAhO0AAITuAACE+QAAhQIAAIUDAACFBQAAhQ4AAIUZAACFKAAAhTMAAIVBAACFVgAAhWoAAIWBAACFkwAAhdIAAIXUAACF1gAAhdgAAIXaAACF2wAAhdwAAIXdAACF3gAAheAAAIXiAACF4wAAheQAAIXmAACF5wAAhiYAAIYoAACGKgAAhiwAAIYuAACGLwAAhjAAAIYxAACGMgAAhjQAAIY2AACGNwAAhjgAAIY6AACGOwAAhnoAAIZ8AACGfwAAhoEAAIaDAACGhAAAhoUAAIaGAACGhwAAhokAAIaLAACGjAAAho0AAIaPAACGkAAAhtsAAIb+AACHHgAAhz4AAIdAAACHQgAAh0QAAIdGAACHSAAAh0kAAIdKAACHTQAAh04AAIdQAACHUQAAh1MAAIdVAACHVgAAh1cAAIdaAACHWwAAh2QAAIdxAACHdgAAh3gAAId6AACHfwAAh4IAAIeFAACHhwAAh6wAAIfQAACH9wAAiBsAAIgeAACIIAAAiCIAAIgkAACIJgAAiCgAAIgpAACILAAAiDkAAIhKAACITAAAiE4AAIhQAACIUgAAiFQAAIhWAACIWAAAiFoAAIhrAACIbgAAiHEAAIh0AACIdwAAiHoAAIh9AACIgAAAiIMAAIiFAACIxAAAiMYAAIjIAACIygAAiM0AAIjOAACIzwAAiNAAAIjRAACI0wAAiNUAAIjWAACI1wAAiNkAAIjaAACJGQAAiRsAAIkdAACJHwAAiSIAAIkjAACJJAAAiSUAAIkmAACJKAAAiSoAAIkrAACJLAAAiS4AAIkvAACJbgAAiXAAAIlzAACJdQAAiXgAAIl5AACJegAAiXsAAIl8AACJfgAAiYAAAImBAACJggAAiYQAAImFAACJkgAAiZMAAImUAACJlgAAidUAAInXAACJ2QAAidsAAIneAACJ3wAAieAAAInhAACJ4gAAieQAAInmAACJ5wAAiegAAInqAACJ6wAAiioAAIosAACKLgAAijAAAIozAACKNAAAijUAAIo2AACKNwAAijkAAIo7AACKPAAAij0AAIo/AACKQAAAin8AAIqBAACKgwAAioUAAIqIAACKiQAAiooAAIqLAACKjAAAio4AAIqQAACKkQAAipIAAIqUAACKlQAAitQAAIrWAACK2AAAitoAAIrdAACK3gAAit8AAIrgAACK4QAAiuMAAIrlAACK5gAAiucAAIrpAACK6gAAiykAAIsrAACLLQAAiy8AAIsyAACLMwAAizQAAIs1AACLNgAAizgAAIs6AACLOwAAizwAAIs+AACLPwAAi2QAAIuIAACLrwAAi9MAAIvWAACL2AAAi9oAAIvcAACL3gAAi+AAAIvhAACL5AAAi/EAAIwAAACMAgAAjAQAAIwGAACMCAAAjAoAAIwMAACMDgAAjB0AAIwgAACMIwAAjCYAAIwpAACMLAAAjC8AAIwyAACMNAAAjHMAAIx1AACMeAAAjHoAAIx9AACMfgAAjH8AAIyAAACMgQAAjIMAAIyFAACMhgAAjIcAAIyJAACMigAAjI4AAIzNAACMzwAAjNEAAIzTAACM1gAAjNcAAIzYAACM2QAAjNoAAIzcAACM3gAAjN8AAIzgAACM4gAAjOMAAI0iAACNJAAAjSYAAI0oAACNKwAAjSwAAI0tAACNLgAAjS8AAI0xAACNMwAAjTQAAI01AACNNwAAjTgAAI13AACNeQAAjXwAAI1+AACNgQAAjYIAAI2DAACNhAAAjYUAAI2HAACNiQAAjYoAAI2LAACNjQAAjY4AAI2RAACN0AAAjdIAAI3UAACN1gAAjdkAAI3aAACN2wAAjdwAAI3dAACN3wAAjeEAAI3iAACN4wAAjeUAAI3mAACOJQAAjicAAI4pAACOKwAAji4AAI4vAACOMAAAjjEAAI4yAACONAAAjjYAAI43AACOOAAAjjoAAI47AACOegAAjnwAAI5+AACOgAAAjoMAAI6EAACOhQAAjoYAAI6HAACOiQAAjosAAI6MAACOjQAAjo8AAI6QAACO2wAAjv4AAI8eAACPPgAAj0AAAI9CAACPRAAAj0YAAI9IAACPSQAAj0oAAI9NAACPTgAAj1AAAI9RAACPUwAAj1UAAI9WAACPVwAAj1oAAI9bAACPYAAAj20AAI9yAACPdAAAj3YAAI97AACPfgAAj4EAAI+DAACPqAAAj8wAAI/zAACQFwAAkBoAAJAcAACQHgAAkCAAAJAiAACQJAAAkCUAAJAoAACQNQAAkEYAAJBIAACQSgAAkEwAAJBOAACQUAAAkFIAAJBUAACQVgAAkGcAAJBqAACQbQAAkHAAAJBzAACQdgAAkHkAAJB8AACQfwAAkIEAAJDAAACQwgAAkMQAAJDGAACQyQAAkMoAAJDLAACQzAAAkM0AAJDPAACQ0QAAkNIAAJDTAACQ1QAAkNYAAJEVAACRFwAAkRkAAJEbAACRHgAAkR8AAJEgAACRIQAAkSIAAJEkAACRJgAAkScAAJEoAACRKgAAkSsAAJFqAACRbAAAkW8AAJFxAACRdAAAkXUAAJF2AACRdwAAkXgAAJF6AACRfAAAkX0AAJF+AACRgAAAkYEAAJGOAACRjwAAkZAAAJGSAACR0QAAkdMAAJHVAACR1wAAkdoAAJHbAACR3AAAkd0AAJHeAACR4AAAkeIAAJHjAACR5AAAkeYAAJHnAACSJgAAkigAAJIqAACSLAAAki8AAJIwAACSMQAAkjIAAJIzAACSNQAAkjcAAJI4AACSOQAAkjsAAJI8AACSewAAkn0AAJJ/AACSgQAAkoQAAJKFAACShgAAkocAAJKIAACSigAAkowAAJKNAACSjgAAkpAAAJKRAACS0AAAktIAAJLUAACS1gAAktkAAJLaAACS2wAAktwAAJLdAACS3wAAkuEAAJLiAACS4wAAkuUAAJLmAACTJQAAkycAAJMpAACTKwAAky4AAJMvAACTMAAAkzEAAJMyAACTNAAAkzYAAJM3AACTOAAAkzoAAJM7AACTYAAAk4QAAJOrAACTzwAAk9IAAJPUAACT1gAAk9gAAJPaAACT3AAAk90AAJPgAACT7QAAk/wAAJP+AACUAAAAlAIAAJQEAACUBgAAlAgAAJQKAACUGQAAlBwAAJQfAACUIgAAlCUAAJQoAACUKwAAlC4AAJQwAACUbwAAlHEAAJR0AACUdgAAlHkAAJR6AACUewAAlHwAAJR9AACUfwAAlIEAAJSCAACUgwAAlIUAAJSGAACUxQAAlMcAAJTJAACUywAAlM4AAJTPAACU0AAAlNEAAJTSAACU1AAAlNYAAJTXAACU2AAAlNoAAJTbAACVGgAAlRwAAJUeAACVIAAAlSMAAJUkAACVJQAAlSYAAJUnAACVKQAAlSsAAJUsAACVLQAAlS8AAJUwAACVbwAAlXEAAJV0AACVdgAAlXkAAJV6AACVewAAlXwAAJV9AACVfwAAlYEAAJWCAACVgwAAlYUAAJWGAACVxQAAlccAAJXJAACVywAAlc4AAJXPAACV0AAAldEAAJXSAACV1AAAldYAAJXXAACV2AAAldoAAJXbAACWGgAAlhwAAJYeAACWIAAAliMAAJYkAACWJQAAliYAAJYnAACWKQAAlisAAJYsAACWLQAAli8AAJYwAACWbwAAlnEAAJZzAACWdQAAlngAAJZ5AACWegAAlnsAAJZ8AACWfgAAloAAAJaBAACWggAAloQAAJaFAACW0AAAlvMAAJcTAACXMwAAlzUAAJc3AACXOQAAlzsAAJc9AACXPgAAlz8AAJdCAACXQwAAl0UAAJdGAACXSAAAl0oAAJdLAACXTAAAl08AAJdQAACXWQAAl2YAAJdrAACXbQAAl28AAJd0AACXdwAAl3oAAJd8AACXoQAAl8UAAJfsAACYEAAAmBMAAJgVAACYFwAAmBkAAJgbAACYHQAAmB4AAJghAACYLgAAmD8AAJhBAACYQwAAmEUAAJhHAACYSQAAmEsAAJhNAACYTwAAmGAAAJhjAACYZgAAmGkAAJhsAACYbwAAmHIAAJh1AACYeAAAmHoAAJi5AACYuwAAmL0AAJi/AACYwgAAmMMAAJjEAACYxQAAmMYAAJjIAACYygAAmMsAAJjMAACYzgAAmM8AAJkOAACZEAAAmRIAAJkUAACZFwAAmRgAAJkZAACZGgAAmRsAAJkdAACZHwAAmSAAAJkhAACZIwAAmSQAAJljAACZZQAAmWgAAJlqAACZbQAAmW4AAJlvAACZcAAAmXEAAJlzAACZdQAAmXYAAJl3AACZeQAAmXoAAJmHAACZiAAAmYkAAJmLAACZygAAmcwAAJnOAACZ0AAAmdMAAJnUAACZ1QAAmdYAAJnXAACZ2QAAmdsAAJncAACZ3QAAmd8AAJngAACaHwAAmiEAAJojAACaJQAAmigAAJopAACaKgAAmisAAJosAACaLgAAmjAAAJoxAACaMgAAmjQAAJo1AACadAAAmnYAAJp4AACaegAAmn0AAJp+AACafwAAmoAAAJqBAACagwAAmoUAAJqGAACahwAAmokAAJqKAACayQAAmssAAJrNAACazwAAmtIAAJrTAACa1AAAmtUAAJrWAACa2AAAmtoAAJrbAACa3AAAmt4AAJrfAACbHgAAmyAAAJsiAACbJAAAmycAAJsoAACbKQAAmyoAAJsrAACbLQAAmy8AAJswAACbMQAAmzMAAJs0AACbWQAAm30AAJukAACbyAAAm8sAAJvNAACbzwAAm9EAAJvTAACb1QAAm9YAAJvZAACb5gAAm/UAAJv3AACb+QAAm/sAAJv9AACb/wAAnAEAAJwDAACcEgAAnBUAAJwYAACcGwAAnB4AAJwhAACcJAAAnCcAAJwpAACcaAAAnGoAAJxsAACcbgAAnHEAAJxyAACccwAAnHQAAJx1AACcdwAAnHkAAJx6AACcewAAnH0AAJx+AACcvQAAnL8AAJzBAACcwwAAnMYAAJzHAACcyAAAnMkAAJzKAACczAAAnM4AAJzPAACc0AAAnNIAAJzTAACdEgAAnRQAAJ0WAACdGAAAnRsAAJ0cAACdHQAAnR4AAJ0fAACdIQAAnSMAAJ0kAACdJQAAnScAAJ0oAACdZwAAnWkAAJ1rAACdbQAAnXAAAJ1xAACdcgAAnXMAAJ10AACddgAAnXgAAJ15AACdegAAnXwAAJ19AACdvAAAnb4AAJ3AAACdwgAAncUAAJ3GAACdxwAAncgAAJ3JAACdywAAnc0AAJ3OAACdzwAAndEAAJ3SAACeEQAAnhMAAJ4VAACeFwAAnhoAAJ4bAACeHAAAnh0AAJ4eAACeIAAAniIAAJ4jAACeJAAAniYAAJ4nAACeZgAAnmgAAJ5qAACebAAAnm8AAJ5wAACecQAAnnIAAJ5zAACedQAAnncAAJ54AACeeQAAnnsAAJ58AACexwAAnuoAAJ8KAACfKgAAnywAAJ8uAACfMAAAnzIAAJ80AACfNQAAnzYAAJ85AACfOgAAnzwAAJ89AACfPwAAn0EAAJ9CAACfQwAAn0YAAJ9HAACfTAAAn1kAAJ9eAACfYAAAn2IAAJ9nAACfagAAn20AAJ9vAACflAAAn7gAAJ/fAACgAwAAoAYAAKAIAACgCgAAoAwAAKAOAACgEAAAoBEAAKAUAACgIQAAoDIAAKA0AACgNgAAoDgAAKA6AACgPAAAoD4AAKBAAACgQgAAoFMAAKBWAACgWQAAoFwAAKBfAACgYgAAoGUAAKBoAACgawAAoG0AAKCsAACgrgAAoLAAAKCyAACgtQAAoLYAAKC3AACguAAAoLkAAKC7AACgvQAAoL4AAKC/AACgwQAAoMIAAKEBAAChAwAAoQUAAKEHAAChCgAAoQsAAKEMAAChDQAAoQ4AAKEQAAChEgAAoRMAAKEUAAChFgAAoRcAAKFWAAChWAAAoVsAAKFdAAChYAAAoWEAAKFiAAChYwAAoWQAAKFmAAChaAAAoWkAAKFqAAChbAAAoW0AAKF6AAChewAAoXwAAKF+AAChvQAAob8AAKHBAAChwwAAocYAAKHHAAChyAAAockAAKHKAAChzAAAoc4AAKHPAACh0AAAodIAAKHTAACiEgAAohQAAKIWAACiGAAAohsAAKIcAACiHQAAoh4AAKIfAACiIQAAoiMAAKIkAACiJQAAoicAAKIoAACiZwAAomkAAKJrAACibQAAonAAAKJxAACicgAAonMAAKJ0AACidgAAongAAKJ5AACiegAAonwAAKJ9AACivAAAor4AAKLAAACiwgAAosUAAKLGAACixwAAosgAAKLJAACiywAAos0AAKLOAACizwAAotEAAKLSAACjEQAAoxMAAKMVAACjFwAAoxoAAKMbAACjHAAAox0AAKMeAACjIAAAoyIAAKMjAACjJAAAoyYAAKMnAACjTAAAo3AAAKOXAACjuwAAo74AAKPAAACjwgAAo8QAAKPGAACjyAAAo8kAAKPMAACj2QAAo+gAAKPqAACj7AAAo+4AAKPwAACj8gAAo/QAAKP2AACkBQAApAgAAKQLAACkDgAApBEAAKQUAACkFwAApBoAAKQcAACkWwAApF0AAKRgAACkYgAApGUAAKRmAACkZwAApGgAAKRpAACkawAApG0AAKRuAACkbwAApHEAAKRyAACkdAAApLMAAKS1AACktwAApLkAAKS8AACkvQAApL4AAKS/AACkwAAApMIAAKTEAACkxQAApMYAAKTIAACkyQAApQgAAKUKAAClDAAApQ4AAKURAAClEgAApRMAAKUUAAClFQAApRcAAKUZAAClGgAApRsAAKUdAAClHgAApV0AAKVfAAClYgAApWQAAKVnAAClaAAApWkAAKVqAAClawAApW0AAKVvAAClcAAApXEAAKVzAACldAAApXcAAKW2AACluAAApboAAKW8AAClvwAApcAAAKXBAAClwgAApcMAAKXFAAClxwAApcgAAKXJAAClywAApcwAAKYLAACmDQAApg8AAKYRAACmFAAAphUAAKYWAACmFwAAphgAAKYaAACmHAAAph0AAKYeAACmIAAApiEAAKZgAACmYgAApmQAAKZmAACmaQAApmoAAKZrAACmbAAApm0AAKZvAACmcQAApnIAAKZzAACmdQAApnYAAKbBAACm5AAApwQAAKckAACnJgAApygAAKcqAACnLAAApy4AAKcvAACnMAAApzMAAKc0AACnNgAApzcAAKc5AACnOwAApzwAAKc9AACnQAAAp0EAAKdGAACnUwAAp1gAAKdaAACnXAAAp2EAAKdkAACnZwAAp2kAAKeOAACnsgAAp9kAAKf9AACoAAAAqAIAAKgEAACoBgAAqAgAAKgKAACoCwAAqA4AAKgbAACoLAAAqC4AAKgwAACoMgAAqDQAAKg2AACoOAAAqDoAAKg8AACoTQAAqFAAAKhTAACoVgAAqFkAAKhcAACoXwAAqGIAAKhlAACoZwAAqKYAAKioAACoqgAAqKwAAKivAACosAAAqLEAAKiyAACoswAAqLUAAKi3AACouAAAqLkAAKi7AACovAAAqPsAAKj9AACo/wAAqQEAAKkEAACpBQAAqQYAAKkHAACpCAAAqQoAAKkMAACpDQAAqQ4AAKkQAACpEQAAqVAAAKlSAACpVQAAqVcAAKlaAACpWwAAqVwAAKldAACpXgAAqWAAAKliAACpYwAAqWQAAKlmAACpZwAAqXQAAKl1AACpdgAAqXgAAKm3AACpuQAAqbsAAKm9AACpwAAAqcEAAKnCAACpwwAAqcQAAKnGAACpyAAAqckAAKnKAACpzAAAqc0AAKoMAACqDgAAqhAAAKoSAACqFQAAqhYAAKoXAACqGAAAqhkAAKobAACqHQAAqh4AAKofAACqIQAAqiIAAKphAACqYwAAqmUAAKpnAACqagAAqmsAAKpsAACqbQAAqm4AAKpwAACqcgAAqnMAAKp0AACqdgAAqncAAKq2AACquAAAqroAAKq8AACqvwAAqsAAAKrBAACqwgAAqsMAAKrFAACqxwAAqsgAAKrJAACqywAAqswAAKsLAACrDQAAqw8AAKsRAACrFAAAqxUAAKsWAACrFwAAqxgAAKsaAACrHAAAqx0AAKseAACrIAAAqyEAAKtGAACragAAq5EAAKu1AACruAAAq7oAAKu8AACrvgAAq8AAAKvCAACrwwAAq8YAAKvTAACr4gAAq+QAAKvmAACr6AAAq+oAAKvsAACr7gAAq/AAAKv/AACsAgAArAUAAKwIAACsCwAArA4AAKwRAACsFAAArBYAAKxVAACsVwAArFoAAKxcAACsXwAArGAAAKxhAACsYgAArGMAAKxlAACsZwAArGgAAKxpAACsawAArGwAAKyrAACsrQAArK8AAKyxAACstAAArLUAAKy2AACstwAArLgAAKy6AACsvAAArL0AAKy+AACswAAArMEAAK0AAACtAgAArQQAAK0GAACtCQAArQoAAK0LAACtDAAArQ0AAK0PAACtEQAArRIAAK0TAACtFQAArRYAAK1VAACtVwAArVoAAK1cAACtXwAArWAAAK1hAACtYgAArWMAAK1lAACtZwAArWgAAK1pAACtawAArWwAAK2rAACtrQAAra8AAK2xAACttAAArbUAAK22AACttwAArbgAAK26AACtvAAArb0AAK2+AACtwAAArcEAAK4AAACuAgAArgQAAK4GAACuCQAArgoAAK4LAACuDAAArg0AAK4PAACuEQAArhIAAK4TAACuFQAArhYAAK5VAACuVwAArlkAAK5bAACuXgAArl8AAK5gAACuYQAArmIAAK5kAACuZgAArmcAAK5oAACuagAArmsAAK62AACu2QAArvkAAK8ZAACvGwAArx0AAK8fAACvIQAAryMAAK8kAACvJQAArygAAK8pAACvKwAArywAAK8uAACvMAAArzEAAK8yAACvNQAArzYAAK87AACvSAAAr00AAK9PAACvUQAAr1YAAK9ZAACvXAAAr14AAK+DAACvpwAAr84AAK/yAACv9QAAr/cAAK/5AACv+wAAr/0AAK//AACwAAAAsAMAALAQAACwIQAAsCMAALAlAACwJwAAsCkAALArAACwLQAAsC8AALAxAACwQgAAsEUAALBIAACwSwAAsE4AALBRAACwVAAAsFcAALBaAACwXAAAsJsAALCdAACwnwAAsKEAALCkAACwpQAAsKYAALCnAACwqAAAsKoAALCsAACwrQAAsK4AALCwAACwsQAAsPAAALDyAACw9AAAsPYAALD5AACw+gAAsPsAALD8AACw/QAAsP8AALEBAACxAgAAsQMAALEFAACxBgAAsUUAALFHAACxSgAAsUwAALFPAACxUAAAsVEAALFSAACxUwAAsVUAALFXAACxWAAAsVkAALFbAACxXAAAsWkAALFqAACxawAAsW0AALGsAACxrgAAsbAAALGyAACxtQAAsbYAALG3AACxuAAAsbkAALG7AACxvQAAsb4AALG/AACxwQAAscIAALIBAACyAwAAsgUAALIHAACyCgAAsgsAALIMAACyDQAAsg4AALIQAACyEgAAshMAALIUAACyFgAAshcAALJWAACyWAAAsloAALJcAACyXwAAsmAAALJhAACyYgAAsmMAALJlAACyZwAAsmgAALJpAACyawAAsmwAALKrAACyrQAAsq8AALKxAACytAAAsrUAALK2AACytwAAsrgAALK6AACyvAAAsr0AALK+AACywAAAssEAALMAAACzAgAAswQAALMGAACzCQAAswoAALMLAACzDAAAsw0AALMPAACzEQAAsxIAALMTAACzFQAAsxYAALM7AACzXwAAs4YAALOqAACzrQAAs68AALOxAACzswAAs7UAALO3AACzuAAAs7sAALPIAACz1wAAs9kAALPbAACz3QAAs98AALPhAACz4wAAs+UAALP0AACz9wAAs/oAALP9AAC0AAAAtAMAALQGAAC0CQAAtAsAALRKAAC0TAAAtE4AALRQAAC0UwAAtFQAALRVAAC0VgAAtFcAALRZAAC0WwAAtFwAALRdAAC0XwAAtGAAALSfAAC0oQAAtKMAALSlAAC0qAAAtKkAALSqAAC0qwAAtKwAALSuAAC0sAAAtLEAALSyAAC0tAAAtLUAALT0AAC09gAAtPgAALT6AAC0/QAAtP4AALT/AAC1AAAAtQEAALUDAAC1BQAAtQYAALUHAAC1CQAAtQoAALVJAAC1SwAAtU0AALVPAAC1UgAAtVMAALVUAAC1VQAAtVYAALVYAAC1WgAAtVsAALVcAAC1XgAAtV8AALWeAAC1oAAAtaIAALWkAAC1pwAAtagAALWpAAC1qgAAtasAALWtAAC1rwAAtbAAALWxAAC1swAAtbQAALXzAAC19QAAtfcAALX5AAC1/AAAtf0AALX+AAC1/wAAtgAAALYCAAC2BAAAtgUAALYGAAC2CAAAtgkAALZIAAC2SgAAtkwAALZOAAC2UQAAtlIAALZTAAC2VAAAtlUAALZXAAC2WQAAtloAALZbAAC2XQAAtl4AALapAAC2zAAAtuwAALcMAAC3DgAAtxAAALcSAAC3FAAAtxYAALcXAAC3GAAAtxsAALccAAC3HgAAtx8AALchAAC3IwAAtyQAALclAAC3KAAAtykAALcuAAC3OwAAt0AAALdCAAC3RAAAt0kAALdMAAC3TwAAt1EAALd2AAC3mgAAt8EAALflAAC36AAAt+oAALfsAAC37gAAt/AAALfyAAC38wAAt/YAALgDAAC4FAAAuBYAALgYAAC4GgAAuBwAALgeAAC4IAAAuCIAALgkAAC4NQAAuDgAALg7AAC4PgAAuEEAALhEAAC4RwAAuEoAALhNAAC4TwAAuI4AALiQAAC4kgAAuJQAALiXAAC4mAAAuJkAALiaAAC4mwAAuJ0AALifAAC4oAAAuKEAALijAAC4pAAAuOMAALjlAAC45wAAuOkAALjsAAC47QAAuO4AALjvAAC48AAAuPIAALj0AAC49QAAuPYAALj4AAC4+QAAuTgAALk6AAC5PQAAuT8AALlCAAC5QwAAuUQAALlFAAC5RgAAuUgAALlKAAC5SwAAuUwAALlOAAC5TwAAuVwAALldAAC5XgAAuWAAALmfAAC5oQAAuaMAALmlAAC5qAAAuakAALmqAAC5qwAAuawAALmuAAC5sAAAubEAALmyAAC5tAAAubUAALn0AAC59gAAufgAALn6AAC5/QAAuf4AALn/AAC6AAAAugEAALoDAAC6BQAAugYAALoHAAC6CQAAugoAALpJAAC6SwAAuk0AALpPAAC6UgAAulMAALpUAAC6VQAAulYAALpYAAC6WgAAulsAALpcAAC6XgAAul8AALqeAAC6oAAAuqIAALqkAAC6pwAAuqgAALqpAAC6qgAAuqsAALqtAAC6rwAAurAAALqxAAC6swAAurQAALrzAAC69QAAuvcAALr5AAC6/AAAuv0AALr+AAC6/wAAuwAAALsCAAC7BAAAuwUAALsGAAC7CAAAuwkAALsuAAC7UgAAu3kAALudAAC7oAAAu6IAALukAAC7pgAAu6gAALuqAAC7qwAAu64AALu7AAC7ygAAu8wAALvOAAC70AAAu9IAALvUAAC71gAAu9gAALvnAAC76gAAu+0AALvwAAC78wAAu/YAALv5AAC7/AAAu/4AALw9AAC8PwAAvEEAALxDAAC8RgAAvEcAALxIAAC8SQAAvEoAALxMAAC8TgAAvE8AALxQAAC8UgAAvFMAALySAAC8lAAAvJYAALyYAAC8mwAAvJwAALydAAC8ngAAvJ8AALyhAAC8owAAvKQAALylAAC8pwAAvKgAALznAAC86QAAvOsAALztAAC88AAAvPEAALzyAAC88wAAvPQAALz2AAC8+AAAvPkAALz6AAC8/AAAvP0AAL08AAC9PgAAvUEAAL1DAAC9RgAAvUcAAL1IAAC9SQAAvUoAAL1MAAC9TgAAvU8AAL1QAAC9UgAAvVMAAL1WAAC9lQAAvZcAAL2ZAAC9mwAAvZ4AAL2fAAC9oAAAvaEAAL2iAAC9pAAAvaYAAL2nAAC9qAAAvaoAAL2rAAC96gAAvewAAL3uAAC98AAAvfMAAL30AAC99QAAvfYAAL33AAC9+QAAvfsAAL38AAC9/QAAvf8AAL4AAAC+PwAAvkEAAL5DAAC+RQAAvkgAAL5JAAC+SgAAvksAAL5MAAC+TgAAvlAAAL5RAAC+UgAAvlQAAL5VAAC+oAAAvsMAAL7jAAC/AwAAvwUAAL8HAAC/CQAAvwsAAL8NAAC/DgAAvw8AAL8SAAC/EwAAvxUAAL8WAAC/GAAAvxoAAL8bAAC/HAAAvx8AAL8gAAC/JQAAvzIAAL83AAC/OQAAvzsAAL9AAAC/QwAAv0YAAL9IAAC/bQAAv5EAAL+4AAC/3AAAv98AAL/hAAC/4wAAv+UAAL/nAAC/6QAAv+oAAL/tAAC/+gAAwAsAAMANAADADwAAwBEAAMATAADAFQAAwBcAAMAZAADAGwAAwCwAAMAvAADAMgAAwDUAAMA4AADAOwAAwD4AAMBBAADARAAAwEYAAMCFAADAhwAAwIkAAMCLAADAjgAAwI8AAMCQAADAkQAAwJIAAMCUAADAlgAAwJcAAMCYAADAmgAAwJsAAMDaAADA3AAAwN4AAMDgAADA4wAAwOQAAMDlAADA5gAAwOcAAMDpAADA6wAAwOwAAMDtAADA7wAAwPAAAMEvAADBMQAAwTQAAME2AADBOQAAwToAAME7AADBPAAAwT0AAME/AADBQQAAwUIAAMFDAADBRQAAwUYAAMFTAADBVAAAwVUAAMFXAADBlgAAwZgAAMGaAADBnAAAwZ8AAMGgAADBoQAAwaIAAMGjAADBpQAAwacAAMGoAADBqQAAwasAAMGsAADB6wAAwe0AAMHvAADB8QAAwfQAAMH1AADB9gAAwfcAAMH4AADB+gAAwfwAAMH9AADB/gAAwgAAAMIBAADCQAAAwkIAAMJEAADCRgAAwkkAAMJKAADCSwAAwkwAAMJNAADCTwAAwlEAAMJSAADCUwAAwlUAAMJWAADClQAAwpcAAMKZAADCmwAAwp4AAMKfAADCoAAAwqEAAMKiAADCpAAAwqYAAMKnAADCqAAAwqoAAMKrAADC6gAAwuwAAMLuAADC8AAAwvMAAML0AADC9QAAwvYAAML3AADC+QAAwvsAAML8AADC/QAAwv8AAMMAAADDJQAAw0kAAMNwAADDlAAAw5cAAMOZAADDmwAAw50AAMOfAADDoQAAw6IAAMOlAADDsgAAw8EAAMPDAADDxQAAw8cAAMPJAADDywAAw80AAMPPAADD3gAAw+EAAMPkAADD5wAAw+oAAMPtAADD8AAAw/MAAMP1AADENAAAxDYAAMQ4AADEOgAAxD0AAMQ+AADEPwAAxEAAAMRBAADEQwAAxEUAAMRGAADERwAAxEkAAMRKAADEiQAAxIsAAMSNAADEjwAAxJIAAMSTAADElAAAxJUAAMSWAADEmAAAxJoAAMSbAADEnAAAxJ4AAMSfAADE3gAAxOAAAMTiAADE5AAAxOcAAMToAADE6QAAxOoAAMTrAADE7QAAxO8AAMTwAADE8QAAxPMAAMT0AADFMwAAxTUAAMU4AADFOgAAxT0AAMU+AADFPwAAxUAAAMVBAADFQwAAxUUAAMVGAADFRwAAxUkAAMVKAADFjQAAxbEAAMXVAADF+AAAxh8AAMY/AADGZgAAxo0AAMatAADG0QAAxvUAAMb3AADG+gAAxvwAAMb+AADHAAAAxwMAAMcGAADHCAAAxwoAAMcNAADHDwAAxxEAAMcUAADHFwAAxxgAAMcdAADHKgAAxy0AAMcvAADHMgAAxzUAAMc3AADHXAAAx4AAAMenAADHywAAx84AAMfQAADH0gAAx9QAAMfWAADH2AAAx9kAAMfcAADH6QAAx/wAAMf+AADIAAAAyAIAAMgEAADIBgAAyAgAAMgKAADIDAAAyA4AAMghAADIJAAAyCcAAMgqAADILQAAyDAAAMgzAADINgAAyDkAAMg8AADIPgAAyH0AAMh/AADIggAAyIQAAMiHAADIiAAAyIkAAMiKAADIiwAAyI0AAMiPAADIkAAAyJEAAMiTAADIlAAAyJ0AAMieAADIoAAAyN8AAMjhAADI4wAAyOUAAMjoAADI6QAAyOoAAMjrAADI7AAAyO4AAMjwAADI8QAAyPIAAMj0AADI9QAAyTQAAMk2AADJOQAAyTsAAMk+AADJPwAAyUAAAMlBAADJQgAAyUQAAMlGAADJRwAAyUgAAMlKAADJSwAAyVQAAMlVAADJVwAAyZYAAMmYAADJmgAAyZwAAMmfAADJoAAAyaEAAMmiAADJowAAyaUAAMmnAADJqAAAyakAAMmrAADJrAAAyesAAMntAADJ8AAAyfIAAMn1AADJ9gAAyfcAAMn4AADJ+QAAyfsAAMn9AADJ/gAAyf8AAMoBAADKAgAAygsAAMoMAADKDgAAyk0AAMpPAADKUQAAylMAAMpWAADKVwAAylgAAMpZAADKWgAAylwAAMpeAADKXwAAymAAAMpiAADKYwAAyqIAAMqkAADKpwAAyqkAAMqsAADKrQAAyq4AAMqvAADKsAAAyrIAAMq0AADKtQAAyrYAAMq4AADKuQAAysYAAMrHAADKyAAAysoAAMsJAADLCwAAyw0AAMsPAADLEgAAyxMAAMsUAADLFQAAyxYAAMsYAADLGgAAyxsAAMscAADLHgAAyx8AAMteAADLYAAAy2IAAMtkAADLZwAAy2gAAMtpAADLagAAy2sAAMttAADLbwAAy3AAAMtxAADLcwAAy3QAAMuBAADLigAAy40AAMuPAADLkgAAy5UAAMueAADLoQAAy6QAAMunAADLqgAAy6wAAMu7AADLzQAAy9oAAMwlAADMSAAAzGgAAMyIAADMigAAzIwAAMyOAADMkAAAzJMAAMyUAADMlQAAzJgAAMyZAADMmwAAzJwAAMyeAADMoQAAzKIAAMyjAADMpgAAzKcAAMysAADMuQAAzL4AAMzAAADMwgAAzMcAAMzKAADMzQAAzM8AAMz0AADNGAAAzT8AAM1jAADNZgAAzWgAAM1qAADNbAAAzW4AAM1wAADNcQAAzXQAAM2BAADNkgAAzZQAAM2WAADNmAAAzZoAAM2cAADNngAAzaAAAM2iAADNswAAzbYAAM25AADNvAAAzb8AAM3CAADNxQAAzcgAAM3LAADNzQAAzgwAAM4OAADOEAAAzhIAAM4VAADOFgAAzhcAAM4YAADOGQAAzhsAAM4dAADOHgAAzh8AAM4hAADOIgAAzmEAAM5jAADOZQAAzmcAAM5qAADOawAAzmwAAM5tAADObgAAznAAAM5yAADOcwAAznQAAM52AADOdwAAzrYAAM64AADOuwAAzr0AAM7AAADOwQAAzsIAAM7DAADOxAAAzsYAAM7IAADOyQAAzsoAAM7MAADOzQAAztoAAM7bAADO3AAAzt4AAM8dAADPHwAAzyEAAM8jAADPJgAAzycAAM8oAADPKQAAzyoAAM8sAADPLgAAzy8AAM8wAADPMgAAzzMAAM9yAADPdAAAz3YAAM94AADPewAAz3wAAM99AADPfgAAz38AAM+BAADPgwAAz4QAAM+FAADPhwAAz4gAAM/HAADPyQAAz8sAAM/NAADP0AAAz9EAAM/SAADP0wAAz9QAAM/WAADP2AAAz9kAAM/aAADP3AAAz90AANAcAADQHgAA0CAAANAiAADQJQAA0CYAANAnAADQKAAA0CkAANArAADQLQAA0C4AANAvAADQMQAA0DIAANBxAADQcwAA0HUAANB3AADQegAA0HsAANB8AADQfQAA0H4AANCAAADQggAA0IMAANCEAADQhgAA0IcAANCsAADQ0AAA0PcAANEbAADRHgAA0SAAANEiAADRJAAA0SYAANEoAADRKQAA0SwAANE5AADRSAAA0UoAANFMAADRTgAA0VAAANFSAADRVAAA0VYAANFlAADRaAAA0WsAANFuAADRcQAA0XQAANF3AADRegAA0XwAANG7AADRvQAA0b8AANHBAADRxAAA0cUAANHGAADRxwAA0cgAANHKAADRzAAA0c0AANHOAADR0AAA0dEAANIQAADSEgAA0hQAANIWAADSGQAA0hoAANIbAADSHAAA0h0AANIfAADSIQAA0iIAANIjAADSJQAA0iYAANJlAADSZwAA0mkAANJrAADSbgAA0m8AANJwAADScQAA0nIAANJ0AADSdgAA0ncAANJ4AADSegAA0nsAANK6AADSvAAA0r4AANLAAADSwwAA0sQAANLFAADSxgAA0scAANLJAADSywAA0swAANLNAADSzwAA0tAAANMPAADTEQAA0xMAANMVAADTGAAA0xkAANMaAADTGwAA0xwAANMeAADTIAAA0yEAANMiAADTJAAA0yUAANNkAADTZgAA02gAANNqAADTbQAA024AANNvAADTcAAA03EAANNzAADTdQAA03YAANN3AADTeQAA03oAANO5AADTuwAA074AANPAAADTwwAA08QAANPFAADTxgAA08cAANPJAADTywAA08wAANPNAADTzwAA09AAANQbAADUPgAA1F4AANR+AADUgAAA1IIAANSEAADUhgAA1IkAANSKAADUiwAA1I4AANSPAADUkQAA1JIAANSUAADUlgAA1JcAANSYAADUmwAA1JwAANShAADUrgAA1LMAANS1AADUtwAA1LwAANS/AADUwgAA1MQAANTpAADVDQAA1TQAANVYAADVWwAA1V0AANVfAADVYQAA1WMAANVlAADVZgAA1WkAANV2AADVhwAA1YkAANWLAADVjQAA1Y8AANWRAADVkwAA1ZUAANWXAADVqAAA1asAANWuAADVsQAA1bQAANW3AADVugAA1b0AANXAAADVwgAA1gEAANYDAADWBQAA1gcAANYKAADWCwAA1gwAANYNAADWDgAA1hAAANYSAADWEwAA1hQAANYWAADWFwAA1lYAANZYAADWWgAA1lwAANZfAADWYAAA1mEAANZiAADWYwAA1mUAANZnAADWaAAA1mkAANZrAADWbAAA1qsAANatAADWsAAA1rIAANa1AADWtgAA1rcAANa4AADWuQAA1rsAANa9AADWvgAA1r8AANbBAADWwgAA1s8AANbQAADW0QAA1tMAANcSAADXFAAA1xYAANcYAADXGwAA1xwAANcdAADXHgAA1x8AANchAADXIwAA1yQAANclAADXJwAA1ygAANdnAADXaQAA12sAANdtAADXcAAA13EAANdyAADXcwAA13QAANd2AADXeAAA13kAANd6AADXfAAA130AANe8AADXvgAA18AAANfCAADXxQAA18YAANfHAADXyAAA18kAANfLAADXzQAA184AANfPAADX0QAA19IAANgRAADYEwAA2BUAANgXAADYGgAA2BsAANgcAADYHQAA2B4AANggAADYIgAA2CMAANgkAADYJgAA2CcAANhmAADYaAAA2GoAANhsAADYbwAA2HAAANhxAADYcgAA2HMAANh1AADYdwAA2HgAANh5AADYewAA2HwAANihAADYxQAA2OwAANkQAADZEwAA2RUAANkXAADZGQAA2RsAANkdAADZHgAA2SEAANkuAADZPQAA2T8AANlBAADZQwAA2UUAANlHAADZSQAA2UsAANlaAADZXQAA2WAAANljAADZZgAA2WkAANlsAADZbwAA2XEAANmwAADZsgAA2bQAANm2AADZuQAA2boAANm7AADZvAAA2b0AANm/AADZwQAA2cIAANnDAADZxQAA2cYAANoFAADaBwAA2gkAANoLAADaDgAA2g8AANoQAADaEQAA2hIAANoUAADaFgAA2hcAANoYAADaGgAA2hsAANpaAADaXAAA2l4AANpgAADaYwAA2mQAANplAADaZgAA2mcAANppAADaawAA2mwAANptAADabwAA2nAAANqvAADasQAA2rMAANq1AADauAAA2rkAANq6AADauwAA2rwAANq+AADawAAA2sEAANrCAADaxAAA2sUAANsEAADbBgAA2wgAANsKAADbDQAA2w4AANsPAADbEAAA2xEAANsTAADbFQAA2xYAANsXAADbGQAA2xoAANtZAADbWwAA210AANtfAADbYgAA22MAANtkAADbZQAA22YAANtoAADbagAA22sAANtsAADbbgAA228AANuuAADbsAAA27MAANu1AADbuAAA27kAANu6AADbuwAA27wAANu+AADbwAAA28EAANvCAADbxAAA28UAANwQAADcMwAA3FMAANxzAADcdQAA3HcAANx5AADcewAA3H0AANx+AADcfwAA3IIAANyDAADchQAA3IYAANyIAADcigAA3IsAANyMAADcjwAA3JAAANyVAADcogAA3KcAANypAADcqwAA3LAAANyzAADctgAA3LgAANzdAADdAQAA3SgAAN1MAADdTwAA3VEAAN1TAADdVQAA3VcAAN1ZAADdWgAA3V0AAN1qAADdewAA3X0AAN1/AADdgQAA3YMAAN2FAADdhwAA3YkAAN2LAADdnAAA3Z8AAN2iAADdpQAA3agAAN2rAADdrgAA3bEAAN20AADdtgAA3fUAAN33AADd+QAA3fsAAN3+AADd/wAA3gAAAN4BAADeAgAA3gQAAN4GAADeBwAA3ggAAN4KAADeCwAA3koAAN5MAADeTgAA3lAAAN5TAADeVAAA3lUAAN5WAADeVwAA3lkAAN5bAADeXAAA3l0AAN5fAADeYAAA3p8AAN6hAADepAAA3qYAAN6pAADeqgAA3qsAAN6sAADerQAA3q8AAN6xAADesgAA3rMAAN61AADetgAA3sMAAN7EAADexQAA3scAAN8GAADfCAAA3woAAN8MAADfDwAA3xAAAN8RAADfEgAA3xMAAN8VAADfFwAA3xgAAN8ZAADfGwAA3xwAAN9bAADfXQAA318AAN9hAADfZAAA32UAAN9mAADfZwAA32gAAN9qAADfbAAA320AAN9uAADfcAAA33EAAN+wAADfsgAA37QAAN+2AADfuQAA37oAAN+7AADfvAAA370AAN+/AADfwQAA38IAAN/DAADfxQAA38YAAOAFAADgBwAA4AkAAOALAADgDgAA4A8AAOAQAADgEQAA4BIAAOAUAADgFgAA4BcAAOAYAADgGgAA4BsAAOBaAADgXAAA4F4AAOBgAADgYwAA4GQAAOBlAADgZgAA4GcAAOBpAADgawAA4GwAAOBtAADgbwAA4HAAAOCVAADguQAA4OAAAOEEAADhBwAA4QkAAOELAADhDQAA4Q8AAOERAADhEgAA4RUAAOEiAADhMQAA4TMAAOE1AADhNwAA4TkAAOE7AADhPQAA4T8AAOFOAADhUQAA4VQAAOFXAADhWgAA4V0AAOFgAADhYwAA4WUAAOGkAADhpgAA4agAAOGqAADhrQAA4a4AAOGvAADhsAAA4bEAAOGzAADhtQAA4bY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AAQAuAAEAMAABADEAAQAyAAEANAABADUAAQB0AAEAdgABAHgAAQB6AAEAfQABAH4AAQB/AAEAgAABAIEAAQCDAAEAhQABAIYAAQCHAAEAiQABAIoAAQDJAAEAywABAM0AAQDPAAEA0gABANMAAQDUAAEA1QABANYAAQDYAAEA2gABANsAAQDcAAEA3gABAN8AAQEeAAEBIAABASIAAQEkAAEBJwABASgAAQEpAAEBKgABASsAAQEtAAEBLwABATAAAQExAAEBMwABATQAAQFZAAEBfQABAaQAAQHIAAEBywABAc0AAQHPAAEB0QABAdMAAQHVAAEB1gABAdkAAQHmAAEB9QABAfcAAQH5AAEB+wABAf0AAQH/AAECAQABAgMAAQISAAECFQABAhgAAQIbAAECHgABAiEAAQIkAAECJwABAikAAQJoAAECagABAmwAAQJuAAECcQABAnIAAQJzAAECdAABAnUAAQJ3AAECeQABAnoAAQJ7AAECfQABAn4AAQK9AAECvwABAsEAAQLDAAECxgABAscAAQLIAAECyQABAsoAAQLMAAECzgABAs8AAQLQAAEC0gABAtMAAQMSAAEDFAABAxYAAQMYAAEDGwABAxwAAQMdAAEDHgABAx8AAQMhAAEDIwABAyQAAQMlAAEDJwABAygAAQNnAAEDaQABA2sAAQNtAAEDcAABA3EAAQNyAAEDcwABA3QAAQN2AAEDeAABA3kAAQN6AAEDfAABA30AAQO8AAEDvgABA8AAAQPCAAEDxQABA8YAAQPHAAEDyAABA8kAAQPLAAEDzQABA84AAQPPAAED0QABA9IAAQQRAAEEEwABBBUAAQQXAAEEGgABBBsAAQQcAAEEHQABBB4AAQQgAAEEIgABBCMAAQQkAAEEJgABBCcAAQRmAAEEaAABBGoAAQRsAAEEbwABBHAAAQRxAAEEcgABBHMAAQR1AAEEdwABBHgAAQR5AAEEewABBHwAAQTHAAEE6gABBQoAAQUqAAEFLAABBS4AAQUwAAEFMgABBTUAAQU2AAEFNwABBToAAQU7AAEFPQABBT4AAQVAAAEFQwABBUQAAQVFAAEFSAABBUkAAQVOAAEFWwABBWAAAQViAAEFZAABBWkAAQVsAAEFbwABBXEAAQWWAAEFugABBeEAAQYFAAEGCAABBgoAAQYMAAEGDgABBhA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AARDHAAEQyQABEMoAARDgAAERHwABESEAAREjAAERJQABESgAAREpAAERKgABESsAAREsAAERLgABETAAARExAAERMgABETQAARE1AAERWgABEX4AARGlAAERyQABEcwAARHOAAER0AABEdIAARHUAAER1gABEdcAARHaAAER5wABEfYAARH4AAER+gABEfwAARH+AAESAAABEgIAARIEAAESEwABEhYAARIZAAESHAABEh8AARIiAAESJQABEigAARIqAAESaQABEmsAARJtAAESbwABEnIAARJzAAESdAABEnUAARJ2AAESeAABEnoAARJ7AAESfAABEn4AARJ/AAESvgABEsAAARLCAAESxAABEscAARLIAAESyQABEsoAARLLAAESzQABEs8AARLQAAES0QABEtMAARLUAAETEwABExUAARMXAAETGQABExwAARMdAAETHgABEx8AARMgAAETIgABEyQAARMlAAETJgABEygAARMpAAETaAABE2oAARNsAAETbgABE3EAARNyAAETcwABE3QAARN1AAETdwABE3kAARN6AAETewABE30AARN+AAETvQABE78AARPBAAETwwABE8YAARPHAAETyAABE8kAARPKAAETzAABE84AARPPAAET0AABE9IAARPTAAEUEgABFBQAARQWAAEUGAABFBsAARQcAAEUHQABFB4AARQfAAEUIQABFCMAARQkAAEUJQABFCcAARQoAAEUZwABFGkAARRrAAEUbQABFHAAARRxAAEUcgABFHMAARR0AAEUdgABFHgAARR5AAEUegABFHwAARR9AAEUyAABFOsAARULAAEVKwABFS0AARUvAAEVMQABFTMAARU2AAEVNwABFTgAARU7AAEVPAABFT4AARU/AAEVQQABFUQAARVFAAEVRgABFUkAARVKAAEVTwABFVwAARVhAAEVYwABFWUAARVqAAEVbQABFXAAARVyAAEVlwABFbsAARXiAAEWBgABFgkAARYLAAEWDQABFg8AARYRAAEWEwABFhQAARYXAAEWJAABFjUAARY3AAEWOQABFjsAARY9AAEWPwABFkEAARZDAAEWRQABFlYAARZZAAEWXAABFl8AARZiAAEWZQABFmgAARZrAAEWbgABFnAAARavAAEWsQABFrMAARa1AAEWuAABFrkAARa6AAEWuwABFrwAARa+AAEWwAABFsEAARbCAAEWxAABFsUAARcEAAEXBgABFwgAARcKAAEXDQABFw4AARcPAAEXEAABFxEAARcTAAEXFQABFxYAARcXAAEXGQABFxoAARdZAAEXWwABF14AARdgAAEXYwABF2QAARdlAAEXZgABF2cAARdpAAEXawABF2wAARdtAAEXbwABF3AAARd9AAEXfgABF38AAReBAAEXwAABF8IAARfEAAEXxgABF8kAARfKAAEXywABF8wAARfNAAEXzwABF9EAARfSAAEX0wABF9UAARfWAAEYFQABGBcAARgZAAEYGwABGB4AARgfAAEYIAABGCEAARgiAAEYJAABGCYAARgnAAEYKAABGCoAARgrAAEYagABGGwAARhuAAEYcAABGHMAARh0AAEYdQABGHYAARh3AAEYeQABGHsAARh8AAEYfQABGH8AARiAAAEYvwABGMEAARjDAAEYxQABGMgAARjJAAEYygABGMsAARjMAAEYzgABGNAAARjRAAEY0gABGNQAARjVAAEZFAABGRYAARkYAAEZGgABGR0AARkeAAEZHwABGSAAARkhAAEZIwABGSUAARkmAAEZJwABGSkAARkqAAEZTwABGXMAARmaAAEZvgABGcEAARnDAAEZxQABGccAARnJAAEZywABGcwAARnPAAEZ3AABGesAARntAAEZ7wABGfEAARnzAAEZ9QABGfcAARn5AAEaCAABGgsAARoOAAEaEQABGhQAARoXAAEaGgABGh0AARofAAEaXgABGmAAARpiAAEaZAABGmcAARpoAAEaaQABGmoAARprAAEabQABGm8AARpwAAEacQABGnMAARp0AAEaswABGrUAARq3AAEauQABGrwAARq9AAEavgABGr8AARrAAAEawgABGsQAARrFAAEaxgABGsgAARrJAAEbCAABGwoAARsMAAEbDgABGxEAARsSAAEbEwABGxQAARsVAAEbFwABGxkAARsaAAEbGwABGx0AARseAAEbXQABG18AARthAAEbYwABG2YAARtnAAEbaAABG2kAARtqAAEbbAABG24AARtvAAEbcAABG3IAARtzAAEbsgABG7QAARu2AAEbuAABG7sAARu8AAEbvQABG74AARu/AAEbwQABG8MAARvEAAEbxQABG8cAARvIAAEcBwABHAkAARwLAAEcDQABHBAAARwRAAEcEgABHBMAARwUAAEcFgABHBgAARwZAAEcGgABHBwAARwdAAEcXAABHF4AARxgAAEcYgABHGUAARxmAAEcZwABHGgAARxpAAEcawABHG0AARxuAAEcbwABHHEAARxyAAEcvQABHOAAAR0AAAEdIAABHSIAAR0kAAEdJgABHSgAAR0rAAEdLAABHS0AAR0wAAEdMQABHTMAAR00AAEdNgABHTkAAR06AAEdOwABHT4AAR0/AAEdSAABHVUAAR1aAAEdXAABHV4AAR1jAAEdZgABHWkAAR1rAAEdkAABHbQAAR3bAAEd/wABHgIAAR4EAAEeBgABHggAAR4KAAEeDAABHg0AAR4QAAEeHQABHi4AAR4wAAEeMgABHjQAAR42AAEeOAABHjoAAR48AAEePgABHk8AAR5SAAEeVQABHlgAAR5bAAEeXgABHmEAAR5kAAEeZwABHmkAAR6oAAEeqgABHqwAAR6uAAEesQABHrIAAR6zAAEetAABHrUAAR63AAEeuQABHroAAR67AAEevQABHr4AAR79AAEe/wABHwEAAR8DAAEfBgABHwcAAR8IAAEfCQABHwoAAR8MAAEfDgABHw8AAR8QAAEfEgABHxMAAR9SAAEfVAABH1cAAR9ZAAEfXAABH10AAR9eAAEfXwABH2AAAR9iAAEfZAABH2UAAR9mAAEfaAABH2kAAR92AAEfdwABH3gAAR96AAEfuQABH7sAAR+9AAEfvwABH8IAAR/DAAEfxAABH8UAAR/GAAEfyAABH8oAAR/LAAEfzAABH84AAR/PAAEgDgABIBAAASASAAEgFAABIBcAASAYAAEgGQABIBoAASAbAAEgHQABIB8AASAgAAEgIQABICMAASAkAAEgYwABIGUAASBnAAEgaQABIGwAASBtAAEgbgABIG8AASBwAAEgcgABIHQAASB1AAEgdgABIHgAASB5AAEguAABILoAASC8AAEgvgABIMEAASDCAAEgwwABIMQAASDFAAEgxwABIMkAASDKAAEgywABIM0AASDOAAEhDQABIQ8AASERAAEhEwABIRYAASEXAAEhGAABIRkAASEaAAEhHAABIR4AASEfAAEhIAABISIAASEjAAEhSAABIWwAASGTAAEhtwABIboAASG8AAEhvgABIcAAASHCAAEhxAABIcUAASHIAAEh1QABIeQAASHmAAEh6AABIeoAASHsAAEh7gABIfAAASHyAAEiAQABIgQAASIHAAEiCgABIg0AASIQAAEiEwABIhYAASIYAAEiVwABIlkAASJbAAEiXQABImAAASJhAAEiYgABImMAASJkAAEiZgABImgAASJpAAEiagABImwAASJtAAEirAABIq4AASKwAAEisgABIrUAASK2AAEitwABIrgAASK5AAEiuwABIr0AASK+AAEivwABIsEAASLCAAEjAQABIwMAASMFAAEjBwABIwoAASMLAAEjDAABIw0AASMOAAEjEAABIxIAASMTAAEjFAABIxYAASMXAAEjVgABI1gAASNaAAEjXAABI18AASNgAAEjYQABI2IAASNjAAEjZQABI2cAASNoAAEjaQABI2sAASNsAAEjqwABI60AASOvAAEjsQABI7QAASO1AAEjtgABI7cAASO4AAEjugABI7wAASO9AAEjvgABI8AAASPBAAEkAAABJAIAASQEAAEkBgABJAkAASQKAAEkCwABJAwAASQNAAEkDwABJBEAASQSAAEkEwABJBUAASQWAAEkVQABJFcAASRZAAEkWwABJF4AASRfAAEkYAABJGEAASRiAAEkZAABJGYAASRnAAEkaAABJGoAASRrAAEktgABJNkAAST5AAElGQABJRsAASUdAAElHwABJSEAASUkAAElJQABJSYAASUpAAElKgABJSwAASUtAAElLwABJTIAASUzAAElNAABJTcAASU4AAElPQABJUoAASVPAAElUQABJVMAASVYAAElWwABJV4AASVgAAElhQABJakAASXQAAEl9AABJfcAASX5AAEl+wABJf0AASX/AAEmAQABJgIAASYFAAEmEgABJiMAASYlAAEmJwABJikAASYrAAEmLQABJi8AASYxAAEmMwABJkQAASZHAAEmSgABJk0AASZQAAEmUwABJlYAASZZAAEmXAABJl4AASadAAEmnwABJqEAASajAAEmpgABJqcAASaoAAEmqQABJqoAASasAAEmrgABJq8AASawAAEmsgABJrMAASbyAAEm9AABJvYAASb4AAEm+wABJvwAASb9AAEm/gABJv8AAScBAAEnAwABJwQAAScFAAEnBwABJwgAASdHAAEnSQABJ0wAASdOAAEnUQABJ1IAASdTAAEnVAABJ1UAASdXAAEnWQABJ1oAASdbAAEnXQABJ14AASdrAAEnbAABJ20AASdvAAEnrgABJ7AAASeyAAEntAABJ7cAASe4AAEnuQABJ7oAASe7AAEnvQABJ78AASfAAAEnwQABJ8MAASfEAAEoAwABKAUAASgHAAEoCQABKAwAASgNAAEoDgABKA8AASgQAAEoEgABKBQAASgVAAEoFgABKBgAASgZAAEoWAABKFoAAShcAAEoXgABKGEAAShiAAEoYwABKGQAAShlAAEoZwABKGkAAShqAAEoawABKG0AAShuAAEorQABKK8AASixAAEoswABKLYAASi3AAEouAABKLkAASi6AAEovAABKL4AASi/AAEowAABKMIAASjDAAEpAgABKQQAASkGAAEpCAABKQsAASkMAAEpDQABKQ4AASkPAAEpEQABKRMAASkUAAEpFQABKRcAASkYAAEpPQABKWEAASmIAAEprAABKa8AASmxAAEpswABKbUAASm3AAEpuQABKboAASm9AAEpygABKdkAASnbAAEp3QABKd8AASnhAAEp4wABKeUAASnnAAEp9gABKfkAASn8AAEp/wABKgIAASoFAAEqCAABKgsAASoNAAEqTAABKk4AASpQAAEqUgABKlUAASpWAAEqVwABKlgAASpZAAEqWwABKl0AASpeAAEqXwABKmEAASpiAAEqoQABKqMAASqlAAEqpwABKqoAASqrAAEqrAABKq0AASquAAEqsAABKrIAASqzAAEqtAABKrYAASq3AAEq9gABKvgAASr6AAEq/AABKv8AASsAAAErAQABKwIAASsDAAErBQABKwcAASsIAAErCQABKwsAASsMAAErSwABK00AAStPAAErUQABK1QAAStVAAErVgABK1cAAStYAAErWgABK1wAAStdAAErXgABK2AAASthAAEroAABK6IAASukAAErpgABK6kAASuqAAErqwABK6wAASutAAErrwABK7EAASuyAAErswABK7UAASu2AAEr9QABK/cAASv5AAEr+wABK/4AASv/AAEsAAABLAEAASwCAAEsBAABLAYAASwHAAEsCAABLAoAASwLAAEsSgABLEwAASxOAAEsUAABLFMAASxUAAEsVQABLFYAASxXAAEsWQABLFsAASxcAAEsXQABLF8AASxgAAEsqwABLM4AASzuAAEtDgABLRAAAS0SAAEtFAABLRYAAS0ZAAEtGgABLRsAAS0eAAEtHwABLSEAAS0iAAEtJAABLScAAS0oAAEtKQABLSwAAS0tAAEtMgABLT8AAS1EAAEtRgABLUgAAS1NAAEtUAABLVMAAS1VAAEtegABLZ4AAS3FAAEt6QABLewAAS3uAAEt8AABLfIAAS30AAEt9gABLfcAAS36AAEuBwABLhgAAS4aAAEuHAABLh4AAS4gAAEuIgABLiQAAS4mAAEuKAABLjkAAS48AAEuPwABLkIAAS5FAAEuSAABLksAAS5OAAEuUQABLlMAAS6SAAEulAABLpYAAS6YAAEumwABLpwAAS6dAAEungABLp8AAS6hAAEuowABLqQAAS6lAAEupwABLqgAAS7nAAEu6QABLusAAS7tAAEu8AABLvEAAS7yAAEu8wABLvQAAS72AAEu+AABLvkAAS76AAEu/AABLv0AAS88AAEvPgABL0EAAS9DAAEvRgABL0cAAS9IAAEvSQABL0oAAS9MAAEvTgABL08AAS9QAAEvUgABL1MAAS9gAAEvYQABL2IAAS9kAAEvowABL6UAAS+nAAEvqQABL6wAAS+tAAEvrgABL68AAS+wAAEvsgABL7QAAS+1AAEvtgABL7gAAS+5AAEv+AABL/oAAS/8AAEv/gABMAEAATACAAEwAwABMAQAATAFAAEwBwABMAkAATAKAAEwCwABMA0AATAOAAEwTQABME8AATBRAAEwUwABMFYAATBXAAEwWAABMFkAATBaAAEwXAABMF4AATBfAAEwYAABMGIAATBjAAEwogABMKQAATCmAAEwqAABMKsAATCsAAEwrQABMK4AATCvAAEwsQABMLMAATC0AAEwtQABMLcAATC4AAEw9wABMPkAATD7AAEw/QABMQAAATEBAAExAgABMQMAATEEAAExBgABMQgAATEJAAExCgABMQwAATENAAExMgABMVYAATF9AAExoQABMaQAATGmAAExqAABMaoAATGsAAExrgABMa8AATGyAAExvwABMc4AATHQAAEx0gABMdQAATHWAAEx2AABMdoAATHcAAEx6wABMe4AATHxAAEx9AABMfcAATH6AAEx/QABMgAAATICAAEyQQABMkMAATJFAAEyRwABMkoAATJLAAEyTAABMk0AATJOAAEyUAABMlIAATJTAAEyVAABMlYAATJXAAEylgABMpgAATKaAAEynAABMp8AATKgAAEyoQABMqIAATKjAAEypQABMqcAATKoAAEyqQABMqsAATKsAAEy6wABMu0AATLvAAEy8QABMvQAATL1AAEy9gABMvcAATL4AAEy+gABMvwAATL9AAEy/gABMwAAATMBAAEzQAABM0IAATNEAAEzRgABM0kAATNKAAEzSwABM0wAATNNAAEzTwABM1EAATNSAAEzUwABM1UAATNWAAEzlQABM5cAATOZAAEzmwABM54AATOfAAEzoAABM6EAATOiAAEzpAABM6YAATOnAAEzqAABM6oAATOrAAEz6gABM+wAATPuAAEz8AABM/MAATP0AAEz9QABM/YAATP3AAEz+QABM/sAATP8AAEz/QABM/8AATQAAAE0PwABNEEAATRDAAE0RQABNEgAATRJAAE0SgABNEsAATRMAAE0TgABNFAAATRRAAE0UgABNFQAATRVAAE0oAABNMMAATTjAAE1AwABNQUAATUHAAE1CQABNQsAATUOAAE1DwABNRAAATUTAAE1FAABNRYAATUXAAE1GQABNRwAATUdAAE1HgABNSEAATUiAAE1JwABNTQAATU5AAE1OwABNT0AATVCAAE1RQABNUgAATVKAAE1bwABNZMAATW6AAE13gABNeEAATXjAAE15QABNecAATXpAAE16wABNewAATXvAAE1/AABNg0AATYPAAE2EQABNhMAATYVAAE2FwABNhkAATYbAAE2HQABNi4AATYxAAE2NAABNjcAATY6AAE2PQABNkAAATZDAAE2RgABNkgAATaHAAE2iQABNosAATaNAAE2kAABNpEAATaSAAE2kwABNpQAATaWAAE2mAABNpkAATaaAAE2nAABNp0AATbcAAE23gABNuAAATbiAAE25QABNuYAATbnAAE26AABNukAATbrAAE27QABNu4AATbvAAE28QABNvIAATcxAAE3MwABNzYAATc4AAE3OwABNzwAATc9AAE3PgABNz8AATdBAAE3QwABN0QAATdFAAE3RwABN0gAATdVAAE3VgABN1cAATdZAAE3mAABN5oAATecAAE3ngABN6EAATeiAAE3owABN6QAATelAAE3pwABN6kAATeqAAE3qwABN60AATeuAAE37QABN+8AATfxAAE38wABN/YAATf3AAE3+AABN/kAATf6AAE3/AABN/4AATf/AAE4AAABOAIAATgDAAE4QgABOEQAAThGAAE4SAABOEsAAThMAAE4TQABOE4AAThPAAE4UQABOFMAAThUAAE4VQABOFcAAThYAAE4lwABOJkAATibAAE4nQABOKAAATihAAE4ogABOKMAATikAAE4pgABOKgAATipAAE4qgABOKwAATitAAE47AABOO4AATjwAAE48gABOPUAATj2AAE49wABOPgAATj5AAE4+wABOP0AATj+AAE4/wABOQEAATkCAAE5JwABOUsAATlyAAE5lgABOZkAATmbAAE5nQABOZ8AATmhAAE5owABOaQAATmnAAE5tAABOcMAATnFAAE5xwABOckAATnLAAE5zQABOc8AATnRAAE54AABOeMAATnmAAE56QABOewAATnvAAE58gABOfUAATn3AAE6NgABOjgAATo6AAE6PAABOj8AATpAAAE6QQABOkIAATpDAAE6RQABOkcAATpIAAE6SQABOksAATpMAAE6iwABOo0AATqPAAE6kQABOpQAATqVAAE6lgABOpcAATqYAAE6mgABOpwAATqdAAE6ngABOqAAATqhAAE64AABOuIAATrkAAE65gABOukAATrqAAE66wABOuwAATrtAAE67wABOvEAATryAAE68wABOvUAATr2AAE7NQABOzcAATs5AAE7OwABOz4AATs/AAE7QAABO0EAATtCAAE7RAABO0YAATtHAAE7SAABO0oAATtLAAE7igABO4wAATuOAAE7kAABO5MAATuUAAE7lQABO5YAATuXAAE7mQABO5sAATucAAE7nQABO58AATugAAE73wABO+EAATvjAAE75QABO+gAATvpAAE76gABO+sAATvsAAE77gABO/AAATvxAAE78gABO/QAATv1AAE8NAABPDYAATw4AAE8OgABPD0AATw+AAE8PwABPEAAATxBAAE8QwABPEUAATxGAAE8RwABPEkAATxKAAE8lQABPLgAATzYAAE8+AABPPoAATz8AAE8/gABPQAAAT0DAAE9BAABPQUAAT0IAAE9CQABPQsAAT0MAAE9DgABPREAAT0SAAE9EwABPRYAAT0XAAE9HAABPSkAAT0uAAE9MAABPTIAAT03AAE9OgABPT0AAT0/AAE9ZAABPYgAAT2vAAE90wABPdYAAT3YAAE92gABPdwAAT3eAAE94AABPeE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AAU6QAAFOkQABTpMAAU6UAAFO0wABTtUAAU7XAAFO2QABTtwAAU7dAAFO3gABTt8AAU7gAAFO4gABTuQAAU7lAAFO5gABTugAAU7pAAFPKAABTyoAAU8tAAFPLwABTzIAAU8zAAFPNAABTzUAAU82AAFPOAABTzoAAU87AAFPPAABTz4AAU8/AAFPTAABT00AAU9OAAFPUAABT48AAU+RAAFPkwABT5UAAU+YAAFPmQABT5oAAU+bAAFPnAABT54AAU+gAAFPoQABT6IAAU+kAAFPpQABT+QAAU/mAAFP6AABT+oAAU/tAAFP7gABT+8AAU/wAAFP8QABT/MAAU/1AAFP9gABT/cAAU/5AAFP+gABUDkAAVA7AAFQPQABUD8AAVBCAAFQQwABUEQAAVBFAAFQRgABUEgAAVBKAAFQSwABUEwAAVBOAAFQTwABUI4AAVCQAAFQkgABUJQAAVCXAAFQmAABUJkAAVCaAAFQmwABUJ0AAVCfAAFQoAABUKEAAVCjAAFQpAABUOMAAVDlAAFQ5wABUOkAAVDsAAFQ7QABUO4AAVDvAAFQ8AABUPIAAVD0AAFQ9QABUPYAAVD4AAFQ+QABUR4AAVFCAAFRaQABUY0AAVGQAAFRkgABUZQAAVGWAAFRmAABUZoAAVGbAAFRngABUasAAVG6AAFRvAABUb4AAVHAAAFRwgABUcQAAVHGAAFRyAABUdcAAVHaAAFR3QABUeAAAVHjAAFR5gABUekAAVHsAAFR7gABUi0AAVIvAAFSMQABUjMAAVI2AAFSNwABUjgAAVI5AAFSOgABUjwAAVI+AAFSPwABUkAAAVJCAAFSQwABUoIAAVKEAAFShgABUogAAVKLAAFSjAABUo0AAVKOAAFSjwABUpEAAVKTAAFSlAABUpUAAVKXAAFSmAABUtcAAVLZAAFS2wABUt0AAVLgAAFS4QABUuIAAVLjAAFS5AABUuYAAVLoAAFS6QABUuoAAVLsAAFS7QABUywAAVMuAAFTMAABUzIAAVM1AAFTNgABUzcAAVM4AAFTOQABUzsAAVM9AAFTPgABUz8AAVNBAAFTQgABU4EAAVODAAFThQABU4cAAVOKAAFTiwABU4wAAVONAAFTjgABU5AAAVOSAAFTkwABU5QAAVOWAAFTlwABU9YAAVPYAAFT2gABU9wAAVPfAAFT4AABU+EAAVPiAAFT4wABU+UAAVPnAAFT6AABU+kAAVPrAAFT7AABVCsAAVQtAAFULwABVDEAAVQ0AAFUNQABVDYAAVQ3AAFUOAABVDoAAVQ8AAFUPQABVD4AAVRAAAFUQQABVIwAAVSvAAFUzwABVO8AAVTxAAFU8wABVPUAAVT3AAFU+gABVPsAAVT8AAFU/wABVQAAAVUCAAFVAwABVQUAAVUIAAFVCQABVQoAAVUNAAFVDgABVRMAAVUgAAFVJQABVScAAVUpAAFVLgABVTEAAVU0AAFVNgABVVsAAVV/AAFVpgABVcoAAVXNAAFVzwABVdEAAVXTAAFV1QABVdcAAVXYAAFV2wABVegAAVX5AAFV+wABVf0AAVX/AAFWAQABVgMAAVYFAAFWBwABVgkAAVYaAAFWHQABViAAAVYjAAFWJgABVikAAVYsAAFWLwABVjIAAVY0AAFWcwABVnUAAVZ3AAFWeQABVnwAAVZ9AAFWfgABVn8AAVaAAAFWggABVoQAAVaFAAFWhgABVogAAVaJAAFWyAABVsoAAVbMAAFWzgABVtEAAVbSAAFW0wABVtQAAVbVAAFW1wABVtkAAVbaAAFW2wABVt0AAVbeAAFXHQABVx8AAVciAAFXJAABVycAAVcoAAFXKQABVyoAAVcrAAFXLQABVy8AAVcwAAFXMQABVzMAAVc0AAFXQQABV0IAAVdDAAFXRQABV4QAAVeGAAFXiAABV4oAAVeNAAFXjgABV48AAVeQAAFXkQABV5MAAVeVAAFXlgABV5cAAVeZAAFXmgABV9kAAVfbAAFX3QABV98AAVfiAAFX4wABV+QAAVflAAFX5gABV+gAAVfqAAFX6wABV+wAAVfuAAFX7wABWC4AAVgwAAFYMgABWDQAAVg3AAFYOAABWDkAAVg6AAFYOwABWD0AAVg/AAFYQAABWEEAAVhDAAFYRAABWIMAAViFAAFYhwABWIkAAViMAAFYjQABWI4AAViPAAFYkAABWJIAAViUAAFYlQABWJYAAViYAAFYmQABWNgAAVjaAAFY3AABWN4AAVjhAAFY4gABWOMAAVjkAAFY5QABWOcAAVjpAAFY6gABWOsAAVjtAAFY7gABWRMAAVk3AAFZXgABWYIAAVmFAAFZhwABWYkAAVmLAAFZjQABWY8AAVmQAAFZkwABWaAAAVmvAAFZsQABWbMAAVm1AAFZtwABWbkAAVm7AAFZvQABWcwAAVnPAAFZ0gABWdUAAVnYAAFZ2wABWd4AAVnhAAFZ4wABWiIAAVokAAFaJgABWigAAVorAAFaLAABWi0AAVouAAFaLwABWjEAAVozAAFaNAABWjUAAVo3AAFaOAABWncAAVp5AAFaewABWn0AAVqAAAFagQABWoIAAVqDAAFahAABWoYAAVqIAAFaiQABWooAAVqMAAFajQABWswAAVrOAAFa0AABWtIAAVrVAAFa1gABWtcAAVrYAAFa2QABWtsAAVrdAAFa3gABWt8AAVrhAAFa4gABWyEAAVsjAAFbJQABWycAAVsqAAFbKwABWywAAVstAAFbLgABWzAAAVsyAAFbMwABWzQAAVs2AAFbNwABW3YAAVt4AAFbegABW3wAAVt/AAFbgAABW4EAAVuCAAFbgwABW4UAAVuHAAFbiAABW4kAAVuLAAFbjAABW8sAAVvNAAFbzwABW9EAAVvUAAFb1QABW9YAAVvXAAFb2AABW9oAAVvcAAFb3QABW94AAVvgAAFb4QABXCAAAVwiAAFcJAABXCYAAVwpAAFcKgABXCsAAVwsAAFcLQABXC8AAVwxAAFcMgABXDMAAVw1AAFcNgABXIEAAVykAAFcxAABXOQAAVzmAAFc6AABXOoAAVzsAAFc7wABXPAAAVzxAAFc9AABXPUAAVz3AAFc+AABXPoAAVz8AAFc/QABXP4AAV0BAAFdAgABXQcAAV0UAAFdGQABXRsAAV0dAAFdIgABXSUAAV0oAAFdKgABXU8AAV1zAAFdmgABXb4AAV3BAAFdwwABXcUAAV3HAAFdyQABXcsAAV3MAAFdzwABXdwAAV3tAAFd7wABXfEAAV3zAAFd9QABXfcAAV35AAFd+wABXf0AAV4OAAFeEQABXhQAAV4XAAFeGgABXh0AAV4gAAFeIwABXiYAAV4oAAFeZwABXmkAAV5rAAFebQABXnAAAV5xAAFecgABXnMAAV50AAFedgABXngAAV55AAFeegABXnwAAV59AAFevAABXr4AAV7AAAFewgABXsUAAV7GAAFexwABXsgAAV7JAAFeywABXs0AAV7OAAFezwABXtEAAV7SAAFfEQABXxMAAV8WAAFfGAABXxsAAV8cAAFfHQABXx4AAV8fAAFfIQABXyMAAV8kAAFfJQABXycAAV8oAAFfNQABXzYAAV83AAFfOQABX3gAAV96AAFffAABX34AAV+BAAFfggABX4MAAV+EAAFfhQABX4cAAV+JAAFfigABX4sAAV+NAAFfjgABX80AAV/PAAFf0QABX9MAAV/WAAFf1wABX9gAAV/ZAAFf2gABX9wAAV/eAAFf3wABX+AAAV/iAAFf4wABYCIAAWAkAAFgJgABYCgAAWArAAFgLAABYC0AAWAuAAFgLwABYDEAAWAzAAFgNAABYDUAAWA3AAFgOAABYHcAAWB5AAFgewABYH0AAWCAAAFggQABYIIAAWCDAAFghAABYIYAAWCIAAFgiQABYIoAAWCMAAFgjQABYMwAAWDOAAFg0AABYNIAAWDVAAFg1gABYNcAAWDYAAFg2QABYNsAAWDdAAFg3gABYN8AAWDhAAFg4gABYQcAAWErAAFhUgABYXYAAWF5AAFhewABYX0AAWF/AAFhgQABYYMAAWGEAAFhhwABYZQAAWGjAAFhpQABYacAAWGpAAFhqwABYa0AAWGvAAFhsQABYcAAAWHDAAFhxgABYckAAWHMAAFhzwABYdIAAWHVAAFh1wABYhYAAWIYAAFiGgABYhwAAWIfAAFiIAABYiEAAWIiAAFiIwABYiUAAWInAAFiKAABYikAAWIrAAFiLAABYmsAAWJtAAFibwABYnEAAWJ0AAFidQABYnYAAWJ3AAFieAABYnoAAWJ8AAFifQABYn4AAWKAAAFigQABYsAAAWLCAAFixAABYsYAAWLJAAFiygABYssAAWLMAAFizQABYs8AAWLRAAFi0gABYtMAAWLVAAFi1gABYxUAAWMXAAFjGQABYxsAAWMeAAFjHwABYyAAAWMhAAFjIgABYyQAAWMmAAFjJwABYygAAWMqAAFjKwABY2oAAWNsAAFjbgABY3AAAWNzAAFjdAABY3UAAWN2AAFjdwABY3kAAWN7AAFjfAABY30AAWN/AAFjgAABY78AAWPBAAFjwwABY8UAAWPIAAFjyQABY8oAAWPLAAFjzAABY84AAWPQAAFj0QABY9IAAWPUAAFj1QABZBQAAWQWAAFkGAABZBoAAWQdAAFkHgABZB8AAWQgAAFkIQABZCMAAWQlAAFkJgABZCcAAWQpAAFkKgABZHUAAWSYAAFkuAABZNgAAWTaAAFk3AABZN4AAWTgAAFk4wABZOQAAWTlAAFk6AABZOkAAWTrAAFk7AABZO4AAWTxAAFk8gABZPMAAWT2AAFk9wABZPwAAWUJAAFlDgABZRAAAWUSAAFlFwABZRoAAWUdAAFlHwABZUQAAWVoAAFljwABZbMAAWW2AAFluAABZboAAWW8AAFlvgABZcAAAWXBAAFlxAABZdEAAWXiAAFl5AABZeYAAWXoAAFl6gABZewAAWXuAAFl8AABZfIAAWYDAAFmBgABZgkAAWYMAAFmDwABZhIAAWYVAAFmGAABZhsAAWYdAAFmXAABZl4AAWZgAAFmYgABZmUAAWZmAAFmZwABZmgAAWZpAAFmawABZm0AAWZuAAFmbwABZnEAAWZyAAFmsQABZrMAAWa1AAFmtwABZroAAWa7AAFmvAABZr0AAWa+AAFmwAABZsIAAWbDAAFmxAABZsYAAWbHAAFnBgABZwgAAWcLAAFnDQABZxAAAWcRAAFnEgABZxMAAWcUAAFnFgABZxgAAWcZAAFnGgABZxwAAWcdAAFnKgABZysAAWcsAAFnLgABZ20AAWdvAAFncQABZ3MAAWd2AAFndwABZ3gAAWd5AAFnegABZ3wAAWd+AAFnfwABZ4AAAWeCAAFngwABZ8IAAWfEAAFnxgABZ8gAAWfLAAFnzAABZ80AAWfOAAFnzwABZ9EAAWfTAAFn1AABZ9UAAWfXAAFn2AABaBcAAWgZAAFoGwABaB0AAWggAAFoIQABaCIAAWgjAAFoJAABaCYAAWgoAAFoKQABaCoAAWgsAAFoLQABaGwAAWhuAAFocQABaHMAAWh2AAFodwABaHgAAWh5AAFoegABaHwAAWh+AAFofwABaIAAAWiCAAFogwABaJYAAWjVAAFo1wABaNkAAWjbAAFo3gABaN8AAWjgAAFo4QABaOIAAWjkAAFo5gABaOcAAWjoAAFo6gABaOsAAWkQAAFpNAABaVsAAWl/AAFpggABaYQAAWmGAAFpiAABaYoAAWmMAAFpjQABaZAAAWmdAAFprAABaa4AAWmwAAFpsgABabQAAWm2AAFpuAABaboAAWnJAAFpzAABac8AAWnSAAFp1QABadgAAWnbAAFp3gABaeAAAWofAAFqIQABaiMAAWolAAFqKAABaikAAWoqAAFqKwABaiwAAWouAAFqMAABajEAAWoyAAFqNAABajUAAWp0AAFqdgABangAAWp6AAFqfQABan4AAWp/AAFqgAABaoEAAWqDAAFqhQABaoYAAWqHAAFqiQABaooAAWrJAAFqywABas0AAWrPAAFq0gABatMAAWrUAAFq1QABatYAAWrYAAFq2gABatsAAWrcAAFq3gABat8AAWseAAFrIAABayIAAWskAAFrJwABaygAAWspAAFrKgABaysAAWstAAFrLwABazAAAWsxAAFrMwABazQAAWtzAAFrdQABa3cAAWt5AAFrfAABa30AAWt+AAFrfwABa4AAAWuCAAFrhAABa4UAAWuGAAFriAABa4kAAWvIAAFrygABa8wAAWvOAAFr0QABa9IAAWvTAAFr1AABa9UAAWvXAAFr2QABa9oAAWvbAAFr3QABa94AAWwdAAFsHwABbCEAAWwjAAFsJgABbCcAAWwoAAFsKQABbCoAAWwsAAFsLgABbC8AAWwwAAFsMgABbDMAAWx+AAFsoQABbMEAAWzhAAFs4wABbOUAAWznAAFs6QABbOwAAWztAAFs7gABbPEAAWzyAAFs9AABbPUAAWz3AAFs+gABbPsAAWz8AAFs/wABbQAAAW0FAAFtEgABbRcAAW0ZAAFtGwABbSAAAW0jAAFtJgABbSgAAW1NAAFtcQABbZgAAW28AAFtvwABbcEAAW3DAAFtxQABbccAAW3JAAFtygABbc0AAW3aAAFt6wABbe0AAW3vAAFt8QABbfMAAW31AAFt9wABbfkAAW37AAFuDAABbg8AAW4SAAFuFQABbhgAAW4bAAFuHgABbiEAAW4kAAFuJgABbmUAAW5nAAFuaQABbmsAAW5uAAFubwABbnAAAW5xAAFucgABbnQAAW52AAFudwABbngAAW56AAFuewABbroAAW68AAFuvgABbsAAAW7DAAFuxAABbsUAAW7GAAFuxwABbskAAW7LAAFuzAABbs0AAW7PAAFu0AABbw8AAW8RAAFvFAABbxYAAW8ZAAFvGgABbxsAAW8cAAFvHQABbx8AAW8hAAFvIgABbyMAAW8lAAFvJgABbzMAAW80AAFvNQABbzcAAW92AAFveAABb3oAAW98AAFvfwABb4AAAW+BAAFvggABb4MAAW+FAAFvhwABb4gAAW+JAAFviwABb4wAAW/LAAFvzQABb88AAW/RAAFv1AABb9UAAW/WAAFv1wABb9gAAW/aAAFv3AABb90AAW/eAAFv4AABb+EAAXAgAAFwIgABcCQAAXAmAAFwKQABcCoAAXArAAFwLAABcC0AAXAvAAFwMQABcDIAAXAzAAFwNQABcDYAAXB1AAFwdwABcHkAAXB7AAFwfgABcH8AAXCAAAFwgQABcIIAAXCEAAFwhgABcIcAAXCIAAFwigABcIsAAXDKAAFwzAABcM4AAXDQAAFw0wABcNQAAXDVAAFw1gABcNcAAXDZAAFw2wABcNwAAXDdAAFw3wABcOAAAXEFAAFxKQABcVAAAXF0AAFxdwABcXkAAXF7AAFxfQABcX8AAXGBAAFxggABcYUAAXGSAAFxoQABcaMAAXGlAAFxpwABcakAAXGrAAFxrQABca8AAXG+AAFxwQABccQAAXHHAAFxygABcc0AAXHQAAFx0wABcdUAAXIUAAFyFgABchgAAXIaAAFyHQABch4AAXIfAAFyIAABciEAAXIjAAFyJQABciYAAXInAAFyKQABcioAAXJpAAFyawABcm0AAXJvAAFycgABcnMAAXJ0AAFydQABcnYAAXJ4AAFyegABcnsAAXJ8AAFyfgABcn8AAXK+AAFywAABcsIAAXLEAAFyxwABcsgAAXLJAAFyygABcssAAXLNAAFyzwABctAAAXLRAAFy0wABctQAAXMTAAFzFQABcxcAAXMZAAFzHAABcx0AAXMeAAFzHwABcyAAAXMiAAFzJAABcyUAAXMmAAFzKAABcykAAXNoAAFzagABc2wAAXNuAAFzcQABc3IAAXNzAAFzdAABc3UAAXN3AAFzeQABc3oAAXN7AAFzfQABc34AAXO9AAFzvwABc8EAAXPDAAFzxgABc8cAAXPIAAFzyQABc8oAAXPMAAFzzgABc88AAXPQAAFz0gABc9MAAXQSAAF0FAABdBYAAXQYAAF0GwABdBwAAXQdAAF0HgABdB8AAXQhAAF0IwABdCQAAXQlAAF0JwABdCgAAXRzAAF0lgABdLYAAXTWAAF02AABdNoAAXTcAAF03gABdOEAAXTiAAF04wABdOYAAXTnAAF06QABdOoAAXTsAAF07gABdO8AAXTwAAF08wABdPQAAXT5AAF1BgABdQsAAXUNAAF1DwABdRQAAXUXAAF1GgABdRwAAXVBAAF1ZQABdYwAAXWwAAF1swABdbUAAXW3AAF1uQABdbsAAXW9AAF1vgABdcE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AAYC1AAGAtwABgLkAAYC7AAGAvgABgL8AAYDAAAGAwQABgMIAAYDEAAGAxgABgMcAAYDIAAGAygABgMsAAYDwAAGBFAABgTsAAYFfAAGBYgABgWQAAYFmAAGBaAABgWoAAYFsAAGBbQABgXAAAYF9AAGBjAABgY4AAYGQAAGBkgABgZQAAYGWAAGBmAABgZoAAYGpAAGBrAABga8AAYGyAAGBtQABgbgAAYG7AAGBvgABgcAAAYH/AAGCAQABggMAAYIFAAGCCAABggkAAYIKAAGCCwABggwAAYIOAAGCEAABghEAAYISAAGCFAABghUAAYJUAAGCVgABglgAAYJaAAGCXQABgl4AAYJfAAGCYAABgmEAAYJjAAGCZQABgmYAAYJnAAGCaQABgmoAAYKpAAGCqwABgq0AAYKvAAGCsgABgrMAAYK0AAGCtQABgrYAAYK4AAGCugABgrsAAYK8AAGCvgABgr8AAYL+AAGDAAABgwIAAYMEAAGDBwABgwgAAYMJAAGDCgABgwsAAYMNAAGDDwABgxAAAYMRAAGDEwABgxQAAYNTAAGDVQABg1cAAYNZAAGDXAABg10AAYNeAAGDXwABg2AAAYNiAAGDZAABg2UAAYNmAAGDaAABg2kAAYOoAAGDqgABg6wAAYOuAAGDsQABg7IAAYOzAAGDtAABg7UAAYO3AAGDuQABg7oAAYO7AAGDvQABg74AAYP9AAGD/wABhAEAAYQDAAGEBgABhAcAAYQIAAGECQABhAoAAYQMAAGEDgABhA8AAYQQAAGEEgABhBMAAYReAAGEgQABhKEAAYTBAAGEwwABhMUAAYTHAAGEyQABhMwAAYTNAAGEzgABhNEAAYTSAAGE1AABhNUAAYTXAAGE2gABhNsAAYTcAAGE3wABhOAAAYTpAAGE9gABhPsAAYT9AAGE/wABhQQAAYUHAAGFCgABhQwAAYUxAAGFVQABhXwAAYWgAAGFowABhaUAAYWnAAGFqQABhasAAYWtAAGFrgABhbEAAYW+AAGFzwABhdEAAYXTAAGF1QABhdcAAYXZAAGF2wABhd0AAYXfAAGF8AABhfMAAYX2AAGF+QABhfwAAYX/AAGGAgABhgUAAYYIAAGGCgABhkkAAYZLAAGGTQABhk8AAYZSAAGGUwABhlQAAYZVAAGGVgABhlgAAYZaAAGGWwABhlwAAYZeAAGGXwABhp4AAYagAAGGogABhqQAAYanAAGGqAABhqkAAYaqAAGGqwABhq0AAYavAAGGsAABhrEAAYazAAGGtAABhvMAAYb1AAGG+AABhvoAAYb9AAGG/gABhv8AAYcAAAGHAQABhwMAAYcFAAGHBgABhwcAAYcJAAGHCgABhxcAAYcYAAGHGQABhxsAAYdaAAGHXAABh14AAYdgAAGHYwABh2QAAYdlAAGHZgABh2cAAYdpAAGHawABh2wAAYdtAAGHbwABh3AAAYevAAGHsQABh7MAAYe1AAGHuAABh7kAAYe6AAGHuwABh7wAAYe+AAGHwAABh8EAAYfCAAGHxAABh8UAAYgEAAGIBgABiAgAAYgKAAGIDQABiA4AAYgPAAGIEAABiBEAAYgTAAGIFQABiBYAAYgXAAGIGQABiBoAAYhZAAGIWwABiF4AAYhgAAGIYwABiGQAAYhlAAGIZgABiGcAAYhpAAGIawABiGwAAYhtAAGIbwABiHAAAYiEAAGIwwABiMUAAYjHAAGIyQABiMwAAYjNAAGIzgABiM8AAYjQAAGI0gABiNQAAYjVAAGI1gABiNgAAYjZAAGI/gABiSIAAYlJAAGJbQABiXAAAYlyAAGJdAABiXYAAYl4AAGJegABiXsAAYl+AAGJiwABiZoAAYmcAAGJngABiaAAAYmiAAGJpAABiaYAAYmoAAGJtwABiboAAYm9AAGJwAABicMAAYnGAAGJyQABicwAAYnOAAGKDQABig8AAYoRAAGKEwABihYAAYoXAAGKGAABihkAAYoaAAGKHAABih4AAYofAAGKIAABiiIAAYojAAGKYgABimQAAYpmAAGKaAABimsAAYpsAAGKbQABim4AAYpvAAGKcQABinMAAYp0AAGKdQABincAAYp4AAGKtwABirkAAYq7AAGKvQABisAAAYrBAAGKwgABisMAAYrEAAGKxgABisgAAYrJAAGKygABiswAAYrNAAGLDAABiw4AAYsQAAGLEgABixUAAYsWAAGLFwABixgAAYsZAAGLGwABix0AAYseAAGLHwABiyEAAYsiAAGLYQABi2MAAYtlAAGLZwABi2oAAYtrAAGLbAABi20AAYtuAAGLcAABi3IAAYtzAAGLdAABi3YAAYt3AAGLtgABi7gAAYu6AAGLvAABi78AAYvAAAGLwQABi8I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AAZcZAAGXJgABlycAAZcoAAGXKgABl2kAAZdrAAGXbQABl28AAZdyAAGXcwABl3QAAZd1AAGXdgABl3gAAZd6AAGXewABl3wAAZd+AAGXfwABl74AAZfAAAGXwgABl8QAAZfHAAGXyAABl8kAAZfKAAGXywABl80AAZfPAAGX0AABl9EAAZfTAAGX1AABmBMAAZgVAAGYFwABmBkAAZgcAAGYHQABmB4AAZgfAAGYIAABmCIAAZgkAAGYJQABmCYAAZgoAAGYKQABmGgAAZhqAAGYbQABmG8AAZhyAAGYcwABmHQAAZh1AAGYdgABmHgAAZh6AAGYewABmHwAAZh+AAGYfwABmJMAAZjSAAGY1AABmNYAAZjYAAGY2wABmNwAAZjdAAGY3gABmN8AAZjhAAGY4wABmOQAAZjlAAGY5wABmOgAAZkNAAGZMQABmVgAAZl8AAGZfwABmYEAAZmDAAGZhQABmYcAAZmJAAGZigABmY0AAZmaAAGZqQABmasAAZmtAAGZrwABmbEAAZmzAAGZtQABmbcAAZnGAAGZyQABmcwAAZnPAAGZ0gABmdUAAZnYAAGZ2wABmd0AAZocAAGaHgABmiAAAZoiAAGaJQABmiYAAZonAAGaKAABmikAAZorAAGaLQABmi4AAZovAAGaMQABmjIAAZpxAAGacwABmnUAAZp3AAGaegABmnsAAZp8AAGafQABmn4AAZqAAAGaggABmoMAAZqEAAGahgABmocAAZrGAAGayAABmsoAAZrMAAGazwABmtAAAZrRAAGa0gABmtMAAZrVAAGa1wABmtgAAZrZAAGa2wABmtwAAZsbAAGbHQABmx8AAZshAAGbJAABmyUAAZsmAAGbJwABmygAAZsqAAGbLAABmy0AAZsuAAGbMAABmzEAAZtwAAGbcgABm3QAAZt2AAGbeQABm3oAAZt7AAGbfAABm30AAZt/AAGbgQABm4IAAZuDAAGbhQABm4YAAZvFAAGbxwABm8kAAZvLAAGbzgABm88AAZvQAAGb0QABm9IAAZvUAAGb1gABm9cAAZvYAAGb2gABm9sAAZwaAAGcHAABnB4AAZwgAAGcIwABnCQAAZwlAAGcJgABnCcAAZwpAAGcKwABnCwAAZwtAAGcLwABnDAAAZx7AAGcngABnL4AAZzeAAGc4AABnOIAAZzkAAGc5gABnOkAAZzqAAGc6wABnO4AAZzvAAGc8QABnPIAAZz0AAGc9wABnPgAAZz5AAGc/AABnP0AAZ0CAAGdDwABnRQAAZ0WAAGdGAABnR0AAZ0gAAGdIwABnSUAAZ1KAAGdbgABnZUAAZ25AAGdvAABnb4AAZ3AAAGdwgABncQAAZ3GAAGdxwABncoAAZ3XAAGd6AABneoAAZ3sAAGd7gABnfAAAZ3yAAGd9AABnfYAAZ34AAGeCQABngwAAZ4PAAGeEgABnhUAAZ4YAAGeGwABnh4AAZ4hAAGeIwABnmIAAZ5kAAGeZgABnmgAAZ5rAAGebAABnm0AAZ5uAAGebwABnnEAAZ5zAAGedAABnnUAAZ53AAGeeAABnrcAAZ65AAGeuwABnr0AAZ7AAAGewQABnsIAAZ7DAAGexAABnsYAAZ7IAAGeyQABnsoAAZ7MAAGezQABnwwAAZ8OAAGfEQABnxMAAZ8WAAGfFwABnxgAAZ8ZAAGfGgABnxwAAZ8eAAGfHwABnyAAAZ8iAAGfIwABnzAAAZ8xAAGfMgABnzQAAZ9zAAGfdQABn3cAAZ95AAGffAABn30AAZ9+AAGffwABn4AAAZ+CAAGfhAABn4UAAZ+GAAGfiAABn4kAAZ/IAAGfygABn8wAAZ/OAAGf0QABn9IAAZ/TAAGf1AABn9UAAZ/XAAGf2QABn9oAAZ/bAAGf3QABn94AAaAdAAGgHwABoCEAAaAjAAGgJgABoCcAAaAoAAGgKQABoCoAAaAsAAGgLgABoC8AAaAwAAGgMgABoDMAAaByAAGgdAABoHYAAaB4AAGgewABoHwAAaB9AAGgfgABoH8AAaCBAAGggwABoIQAAaCFAAGghwABoIgAAaDHAAGgyQABoMsAAaDNAAGg0AABoNEAAaDSAAGg0wABoNQAAaDWAAGg2AABoNkAAaDaAAGg3AABoN0AAaECAAGhJgABoU0AAaFxAAGhdAABoXYAAaF4AAGhegABoXwAAaF+AAGhfwABoYIAAaGPAAGhngABoaAAAaGiAAGhpAABoaYAAaGoAAGhqgABoawAAaG7AAGhvgABocEAAaHEAAGhxwABocoAAaHNAAGh0AABodIAAaIRAAGiEwABohUAAaIXAAGiGgABohsAAaIcAAGiHQABoh4AAaIgAAGiIgABoiMAAaIkAAGiJgABoicAAaJmAAGiaAABomoAAaJsAAGibwABonAAAaJxAAGicgABonMAAaJ1AAGidwABongAAaJ5AAGiewABonwAAaK7AAGivQABor8AAaLBAAGixAABosUAAaLGAAGixwABosgAAaLKAAGizAABos0AAaLOAAGi0AABotEAAaMQAAGjEgABoxQAAaMWAAGjGQABoxoAAaMbAAGjHAABox0AAaMfAAGjIQABoyIAAaMjAAGjJQABoyYAAaNlAAGjZwABo2kAAaNrAAGjbgABo28AAaNwAAGjcQABo3IAAaN0AAGjdgABo3cAAaN4AAGjegABo3sAAaO6AAGjvAABo74AAaPAAAGjwwABo8QAAaPFAAGjxgABo8cAAaPJAAGjywABo8wAAaPNAAGjzwABo9AAAaQPAAGkEQABpBMAAaQVAAGkGAABpBkAAaQaAAGkGwABpBwAAaQeAAGkIAABpCEAAaQiAAGkJAABpCUAAaRwAAGkkwABpLMAAaTTAAGk1QABpNcAAaTZAAGk2wABpN4AAaTfAAGk4AABpOMAAaTkAAGk5gABpOcAAaTpAAGk7AABpO0AAaTuAAGk8QABpPIAAaT3AAGlBAABpQkAAaULAAGlDQABpRIAAaUVAAGlGAABpRoAAaU/AAGlYwABpYoAAaWuAAGlsQABpbMAAaW1AAGltwABpbkAAaW7AAGlvAABpb8AAaXMAAGl3QABpd8AAaXhAAGl4wABpeUAAaXnAAGl6QABpesAAaXtAAGl/gABpgEAAaYEAAGmBwABpgoAAaYNAAGmEAABphMAAaYWAAGmGAABplcAAaZZAAGmWwABpl0AAaZgAAGmYQABpmIAAaZjAAGmZAABpmYAAaZoAAGmaQABpmoAAaZsAAGmbQABpqwAAaauAAGmsAABprIAAaa1AAGmtgABprcAAaa4AAGmuQABprsAAaa9AAGmvgABpr8AAabBAAGmwgABpwEAAacDAAGnBgABpwgAAacLAAGnDAABpw0AAacOAAGnDwABpxEAAacTAAGnFAABpxUAAacXAAGnGAABpyUAAacmAAGnJwABpykAAadoAAGnagABp2wAAaduAAGncQABp3IAAadzAAGndAABp3UAAad3AAGneQABp3oAAad7AAGnfQABp34AAae9AAGnvwABp8EAAafDAAGnxgABp8cAAafIAAGnyQABp8oAAafMAAGnzgABp88AAafQAAGn0gABp9MAAagSAAGoFAABqBYAAagYAAGoGwABqBwAAagdAAGoHgABqB8AAaghAAGoIwABqCQAAaglAAGoJwABqCgAAahnAAGoaQABqGsAAahtAAGocAABqHEAAahyAAGocwABqHQAAah2AAGoeAABqHkAAah6AAGofAABqH0AAai8AAGovgABqMAAAajCAAGoxQABqMYAAajHAAGoyAABqMkAAajLAAGozQABqM4AAajPAAGo0QABqNIAAaj3AAGpGwABqUIAAalmAAGpaQABqWsAAaltAAGpbwABqXEAAalzAAGpdAABqXcAAamEAAGpkwABqZUAAamXAAGpmQABqZsAAamdAAGpnwABqaEAAamwAAGpswABqbYAAam5AAGpvAABqb8AAanCAAGpxQABqccAAaoGAAGqCAABqgoAAaoMAAGqDwABqhAAAaoRAAGqEgABqhMAAaoVAAGqFwABqhgAAaoZAAGqGwABqhwAAapbAAGqXQABql8AAaphAAGqZAABqmUAAapmAAGqZwABqmgAAapqAAGqbAABqm0AAapuAAGqcAABqnEAAaqwAAGqsgABqrQAAaq2AAGquQABqroAAaq7AAGqvAABqr0AAaq/AAGqwQABqsIAAarDAAGqxQABqsYAAasFAAGrBwABqwkAAasLAAGrDgABqw8AAasQAAGrEQABqxIAAasUAAGrFgABqxcAAasYAAGrGgABqxsAAataAAGrXAABq14AAatgAAGrYwABq2QAAatlAAGrZgABq2cAAatpAAGrawABq2wAAattAAGrbwABq3AAAauvAAGrsQABq7MAAau1AAGruAABq7kAAau6AAGruwABq7wAAau+AAGrwAABq8EAAavCAAGrxAABq8UAAawEAAGsBgABrAgAAawKAAGsDQABrA4AAawPAAGsEAABrBEAAawTAAGsFQABrBYAAawXAAGsGQABrBoAAaxlAAGsiAABrKgAAazIAAGsygABrMwAAazOAAGs0AABrNMAAazUAAGs1QABrNgAAazZAAGs2wABrNwAAazeAAGs4QABrOIAAazjAAGs5gABrOcAAazsAAGs+QABrP4AAa0AAAGtAgABrQcAAa0KAAGtDQABrQ8AAa00AAGtWAABrX8AAa2jAAGtpgABragAAa2qAAGtrAABra4AAa2wAAGtsQABrbQAAa3BAAGt0gABrdQAAa3WAAGt2AABrdoAAa3cAAGt3gABreAAAa3iAAGt8wABrfYAAa35AAGt/AABrf8AAa4CAAGuBQABrggAAa4LAAGuDQABrkwAAa5OAAGuUAABrlIAAa5VAAGuVgABrlcAAa5YAAGuWQABrlsAAa5dAAGuXgABrl8AAa5hAAGuYgABrqEAAa6jAAGupQABrqcAAa6qAAGuqwABrqwAAa6tAAGurgABrrAAAa6yAAGuswABrrQAAa62AAGutwABrvYAAa74AAGu+wABrv0AAa8AAAGvAQABrwIAAa8DAAGvBAABrwYAAa8IAAGvCQABrwoAAa8MAAGvDQABrxoAAa8bAAGvHAABrx4AAa9dAAGvXwABr2EAAa9jAAGvZgABr2cAAa9oAAGvaQABr2oAAa9sAAGvbgABr28AAa9wAAGvcgABr3MAAa+yAAGvtAABr7YAAa+4AAGvuwABr7wAAa+9AAGvvgABr78AAa/BAAGvwwABr8QAAa/FAAGvxwABr8gAAbAHAAGwCQABsAsAAbANAAGwEAABsBEAAbASAAGwEwABsBQAAbAWAAGwGAABsBkAAbAaAAGwHAABsB0AAbBcAAGwXgABsGAAAbBiAAGwZQABsGYAAbBnAAGwaAABsGkAAbBrAAGwbQABsG4AAbBvAAGwcQABsHIAAbCxAAGwswABsLUAAbC3AAGwugABsLsAAbC8AAGwvQABsL4AAbDAAAGwwgABsMMAAbDEAAGwxgABsMcAAbDsAAGxEAABsTcAAbFbAAGxXgABsWAAAbFiAAGxZAABsWYAAbFoAAGxaQABsWwAAbF5AAGxiAABsYoAAbGMAAGxjgABsZAAAbGSAAGxlAABsZYAAbGlAAGxqAABsasAAbGuAAGxsQABsbQAAbG3AAGxugABsbwAAbH7AAGx/QABsf8AAbIBAAGyBAABsgUAAbIGAAGyBwABsggAAbIKAAGyDAABsg0AAbIOAAGyEAABshEAAbJQAAGyUgABslQAAbJWAAGyWQABsloAAbJbAAGyXAABsl0AAbJfAAGyYQABsmIAAbJjAAGyZQABsmYAAbKlAAGypwABsqkAAbKrAAGyrgABsq8AAbKwAAGysQABsrIAAbK0AAGytgABsrcAAbK4AAGyugABsrsAAbL6AAGy/AABsv8AAbMBAAGzBAABswUAAbMGAAGzBwABswgAAbMKAAGzDAABsw0AAbMOAAGzEAABsxEAAbNQAAGzUgABs1QAAbNWAAGzWQABs1oAAbNbAAGzXAABs10AAbNfAAGzYQABs2IAAbNjAAGzZQABs2YAAbOlAAGzpwABs6kAAbOrAAGzrgABs68AAbOwAAGzsQABs7IAAbO0AAGztgABs7cAAbO4AAGzugABs7sAAbP6AAGz/AABs/8AAbQBAAG0BAABtAUAAbQGAAG0BwABtAgAAbQKAAG0DAABtA0AAbQOAAG0EAABtBEAAbRcAAG0fwABtJ8AAbS/AAG0wQABtMMAAbTFAAG0xwABtMoAAbTLAAG0zAABtM8AAbTQAAG00gABtNMAAbTVAAG02AABtNkAAbTaAAG03QABtN4AAbTjAAG08AABtPUAAbT3AAG0+QABtP4AAbUBAAG1BAABtQYAAbUrAAG1TwABtXYAAbWaAAG1nQABtZ8AAbWhAAG1owABtaUAAbWnAAG1qAABtasAAbW4AAG1yQABtcsAAbXNAAG1zwABtdEAAbXTAAG11QABtdcAAbXZAAG16gABte0AAbXwAAG18wABtfYAAbX5AAG1/AABtf8AAbYCAAG2BAABtkMAAbZFAAG2RwABtkkAAbZMAAG2TQABtk4AAbZPAAG2UAABtlIAAbZUAAG2VQABtlYAAbZYAAG2WQABtpgAAbaaAAG2nAABtp4AAbahAAG2ogABtqMAAbakAAG2pQABtqcAAbapAAG2qgABtqsAAbatAAG2rgABtu0AAbbvAAG28gABtvQAAbb3AAG2+AABtvkAAbb6AAG2+wABtv0AAbb/AAG3AAABtwEAAbcDAAG3BAABtxEAAbcSAAG3EwABtxUAAbdUAAG3VgABt1gAAbdaAAG3XQABt14AAbdfAAG3YAABt2EAAbdjAAG3ZQABt2YAAbdnAAG3aQABt2oAAbepAAG3qwABt60AAbevAAG3sgABt7MAAbe0AAG3tQABt7YAAbe4AAG3ugABt7sAAbe8AAG3vgABt78AAbf+AAG4AAABuAIAAbgEAAG4BwABuAgAAbgJAAG4CgABuAsAAbgNAAG4DwABuBAAAbgRAAG4EwABuBQAAbhTAAG4VQABuFcAAbhZAAG4XAABuF0AAbheAAG4XwABuGAAAbhiAAG4ZAABuGUAAbhmAAG4aAABuGkAAbioAAG4qgABuKwAAbiuAAG4sQABuLIAAbizAAG4tAABuLUAAbi3AAG4uQABuLoAAbi7AAG4vQABuL4AAbjjAAG5BwABuS4AAblSAAG5VQABuVcAAblZAAG5WwABuV0AAblfAAG5YAABuWMAAblwAAG5fwABuYEAAbmDAAG5hQABuYcAAbmJAAG5iwABuY0AAbmcAAG5nwABuaIAAbmlAAG5qAABuasAAbmuAAG5sQABubMAAbnyAAG59AABufYAAbn4AAG5+wABufwAAbn9AAG5/gABuf8AAboBAAG6AwABugQAAboFAAG6BwABuggAAbpHAAG6SQABuksAAbpNAAG6UAABulEAAbpSAAG6UwABulQAAbpWAAG6WAABulkAAbpaAAG6XAABul0AAbqcAAG6ngABuqAAAbqiAAG6pQABuqYAAbqnAAG6qAABuqkAAbqrAAG6rQABuq4AAbqvAAG6sQABurIAAbrxAAG68wABuvYAAbr4AAG6+wABuvwAAbr9AAG6/gABuv8AAbsBAAG7AwABuwQAAbsFAAG7BwABuwgAAbtHAAG7SQABu0sAAbtNAAG7UAABu1EAAbtSAAG7UwABu1QAAbtWAAG7WAABu1kAAbtaAAG7XAABu10AAbucAAG7ngABu6AAAbuiAAG7pQABu6YAAbunAAG7qAABu6kAAburAAG7rQABu64AAbuvAAG7sQABu7IAAbvxAAG78wABu/YAAbv4AAG7+wABu/wAAbv9AAG7/gABu/8AAbwBAAG8AwABvAQAAbwFAAG8BwABvAgAAbxTAAG8dgABvJYAAby2AAG8uAABvLoAAby8AAG8vgABvMEAAbzCAAG8wwABvMYAAbzHAAG8yQABvMoAAbzMAAG8zwABvNAAAbzRAAG81AABvNUAAbzaAAG85wABvOwAAbzuAAG88AABvPUAAbz4AAG8+wABvP0AAb0iAAG9RgABvW0AAb2RAAG9lAABvZYAAb2YAAG9mgABvZwAAb2eAAG9nwABvaIAAb2vAAG9wAABvcIAAb3EAAG9xgABvcgAAb3KAAG9zAABvc4AAb3QAAG94QABveQAAb3nAAG96gABve0AAb3wAAG98wABvfYAAb35AAG9+wABvjoAAb48AAG+PgABvkAAAb5DAAG+RAABvkUAAb5GAAG+RwABvkkAAb5LAAG+TAABvk0AAb5PAAG+UAABvo8AAb6RAAG+kwABvpUAAb6YAAG+mQABvpoAAb6bAAG+nAABvp4AAb6gAAG+oQABvqIAAb6kAAG+pQABvuQAAb7mAAG+6QABvusAAb7uAAG+7wABvvAAAb7xAAG+8gABvvQAAb72AAG+9wABvvgAAb76AAG++wABvwgAAb8JAAG/CgABvwwAAb9LAAG/TQABv08AAb9RAAG/VAABv1UAAb9WAAG/VwABv1gAAb9aAAG/XAABv10AAb9eAAG/YAABv2EAAb+gAAG/ogABv6QAAb+mAAG/qQABv6oAAb+rAAG/rAABv60AAb+vAAG/sQABv7IAAb+zAAG/tQABv7YAAb/1AAG/9wABv/kAAb/7AAG//gABv/8AAcAAAAHAAQABwAIAAcAEAAHABgABwAcAAcAIAAHACgABwAsAAcBKAAHATAABwE8AAcBRAAHAVAABwFUAAcBWAAHAVwABwFgAAcBaAAHAXAABwF0AAcBeAAHAYAABwGEAAcBvAAHArgABwLAAAcCyAAHAtAABwLcAAcC4AAHAuQABwLoAAcC7AAHAvQABwL8AAcDAAAHAwQABwMMAAcDEAAHA6QABwQ0AAcE0AAHBWAABwVsAAcFdAAHBXwABwWEAAcFjAAHBZQABwWYAAcFpAAHBdgABwYUAAcGHAAHBiQABwYsAAcGNAAHBjwABwZEAAcGTAAHBogABwaUAAcGoAAHBqwABwa4AAcGxAAHBtAABwbcAAcG5AAHB+AABwfoAAcH8AAHB/gABwgEAAcICAAHCAwABwgQAAcIFAAHCBwABwgkAAcIKAAHCCwABwg0AAcIOAAHCTQABwk8AAcJRAAHCUwABwlYAAcJXAAHCWAABwlkAAcJaAAHCXAABwl4AAcJfAAHCYAABwmIAAcJjAAHCogABwqQAAcKmAAHCqAABwqsAAcKsAAHCrQABwq4AAcKvAAHCsQABwrMAAcK0AAHCtQABwrcAAcK4AAHC9wABwvkAAcL7AAHC/QABwwAAAcMBAAHDAgABwwMAAcMEAAHDBgABwwgAAcMJAAHDCgABwwwAAcMNAAHDTAABw04AAcNQAAHDUgABw1UAAcNWAAHDVwABw1gAAcNZAAHDWwABw10AAcNeAAHDXwABw2EAAcNiAAHDoQABw6MAAcOlAAHDpwABw6oAAcOrAAHDrAABw60AAcOuAAHDsAABw7IAAcOzAAHDtAABw7YAAcO3AAHD9gABw/gAAcP6AAHD/AABw/8AAcQAAAHEAQABxAIAAcQDAAHEBQABxAcAAcQIAAHECQABxAsAAcQMAAHEVwABxHoAAcSaAAHEugABxLwAAcS+AAHEwAABxMIAAcTFAAHExgABxMcAAcTKAAHEywABxM0AAcTOAAHE0AABxNMAAcTUAAHE1QABxNgAAcTZAAHE3gABxOsAAcTwAAHE8gABxPQAAcT5AAHE/AABxP8AAcUBAAHFJgABxUoAAcVxAAHFlQABxZgAAcWaAAHFnAABxZ4AAcWgAAHFogABxaMAAcWmAAHFswABxcQAAcXGAAHFyAABxcoAAcXMAAHFzgABxdAAAcXSAAHF1AABxeUAAcXoAAHF6wABxe4AAcXxAAHF9AABxfcAAcX6AAHF/QABxf8AAcY+AAHGQAABxkIAAcZEAAHGRwABxkgAAcZJAAHGSgABxksAAcZNAAHGTwABxlAAAcZRAAHGUwABxlQAAcaTAAHGlQABxpcAAcaZAAHGnAABxp0AAcaeAAHGnwABxqAAAcaiAAHGpAABxqUAAcamAAHGqAABxqkAAcboAAHG6gABxu0AAcbvAAHG8gABxvMAAcb0AAHG9QABxvYAAcb4AAHG+gABxvsAAcb8AAHG/gABxv8AAccMAAHHDQABxw4AAccQAAHHTwABx1EAAcdTAAHHVQABx1gAAcdZAAHHWgABx1sAAcdcAAHHXgABx2AAAcdhAAHHYgABx2QAAcdlAAHHpAABx6YAAceoAAHHqgABx60AAceuAAHHrwABx7AAAcexAAHHswABx7UAAce2AAHHtwABx7kAAce6AAHH+QABx/sAAcf9AAHH/wAByAIAAcgDAAHIBAAByAUAAcgGAAHICAAByAoAAcgLAAHIDAAByA4AAcgPAAHITgAByFAAAchSAAHIVAAByFcAAchYAAHIWQAByFoAAchbAAHIXQAByF8AAchgAAHIYQAByGMAAchkAAHIowAByKUAAcinAAHIqQAByKwAAcitAAHIrgAByK8AAciwAAHIsgAByLQAAci1AAHItgAByLgAAci5AAHI3gAByQIAAckpAAHJTQAByVAAAclSAAHJVAAByVYAAclYAAHJWgAByVsAAcleAAHJawAByXoAAcl8AAHJfgAByYAAAcmCAAHJhAAByYYAAcmIAAHJlwAByZoAAcmdAAHJoAAByaMAAcmmAAHJqQAByawAAcmuAAHJ7QABye8AAcnxAAHJ8wAByfYAAcn3AAHJ+AAByfkAAcn6AAHJ/AAByf4AAcn/AAHKAAABygIAAcoDAAHKQgABykQAAcpGAAHKSAAByksAAcpMAAHKTQAByk4AAcpPAAHKUQABylMAAcpUAAHKVQABylcAAcpYAAHKlwABypkAAcqbAAHKnQAByqAAAcqhAAHKogAByqMAAcqkAAHKpgAByqgAAcqpAAHKqgAByqwAAcqtAAHK7AAByu4AAcrwAAHK8gAByvUAAcr2AAHK9wAByvgAAcr5AAHK+wAByv0AAcr+AAHK/wABywEAAcsCAAHLQQABy0MAActFAAHLRwABy0oAActLAAHLTAABy00AActOAAHLUAABy1IAActTAAHLVAABy1YAActXAAHLlgABy5gAAcuaAAHLnAABy58AAcugAAHLoQABy6IAAcujAAHLpQABy6cAAcuoAAHLqQABy6sAAcusAAHL6wABy+0AAcvvAAHL8QABy/QAAcv1AAHL9gABy/cAAcv4AAHL+gABy/wAAcv9AAHL/gABzAAAAcwBAAHMTAABzG8AAcyPAAHMrwABzLEAAcyzAAHMtQABzLcAAcy6AAHMuwABzLwAAcy/AAHMwAABzMIAAczDAAHMxQABzMgAAczJAAHMygABzM0AAczOAAHM0wABzOAAAczlAAHM5wABzOkAAczuAAHM8QABzPQAAcz2AAHNGwABzT8AAc1mAAHNigABzY0AAc2PAAHNkQABzZMAAc2VAAHNlwABzZgAAc2bAAHNqAABzbkAAc27AAHNvQABzb8AAc3BAAHNwwABzcUAAc3HAAHNyQABzdoAAc3dAAHN4AABzeMAAc3mAAHN6QABzewAAc3vAAHN8gABzfQAAc4zAAHONQABzjcAAc45AAHOPAABzj0AAc4+AAHOPwABzkAAAc5CAAHORAABzkUAAc5GAAHOSAABzkkAAc6IAAHOigABzowAAc6OAAHOkQABzpIAAc6TAAHOlAABzpUAAc6XAAHOmQABzpoAAc6bAAHOnQABzp4AAc7dAAHO3wABzuIAAc7kAAHO5wABzugAAc7pAAHO6gABzusAAc7tAAHO7wABzvAAAc7xAAHO8wABzvQAAc8BAAHPAgABzwMAAc8FAAHPRAABz0YAAc9IAAHPSgABz00AAc9OAAHPTwABz1AAAc9RAAHPUwABz1UAAc9WAAHPVwABz1kAAc9aAAHPmQABz5sAAc+dAAHPnwABz6IAAc+jAAHPpAABz6UAAc+mAAHPqAABz6oAAc+rAAHPrAABz64AAc+vAAHP7gABz/AAAc/yAAHP9AABz/cAAc/4AAHP+QABz/oAAc/7AAHP/QABz/8AAdAAAAHQAQAB0AMAAdAEAAHQQwAB0EUAAdBHAAHQSQAB0EwAAdBNAAHQTgAB0E8AAdBQAAHQUgAB0FQAAdBVAAHQVgAB0FgAAdBZAAHQmAAB0JoAAdCcAAHQngAB0KEAAdCiAAHQowAB0KQAAdClAAHQpwAB0KkAAdCqAAHQqwAB0K0AAdCuAAHQ0wAB0PcAAdEeAAHRQgAB0UUAAdFHAAHRSQAB0UsAAdFNAAHRTwAB0VAAAdFTAAHRYAAB0W8AAdFxAAHRcwAB0XUAAdF3AAHReQAB0XsAAdF9AAHRjAAB0Y8AAdGSAAHRlQAB0ZgAAdGbAAHRngAB0aEAAdGjAAHR4gAB0eQAAdHmAAHR6AAB0esAAdHsAAHR7QAB0e4AAdHvAAHR8QAB0fMAAdH0AAHR9QAB0fcAAdH4AAHSNwAB0jkAAdI7AAHSPQAB0kAAAdJBAAHSQgAB0kMAAdJEAAHSRgAB0kgAAdJJAAHSSgAB0kwAAdJNAAHSjAAB0o4AAdKQAAHSkgAB0pUAAdKWAAHSlwAB0pgAAdKZAAHSmwAB0p0AAdKeAAHSnwAB0qEAAdKiAAHS4QAB0uMAAdLlAAHS5wAB0uoAAdLrAAHS7AAB0u0AAdLuAAHS8AAB0vIAAdLzAAHS9AAB0vYAAdL3AAHTNgAB0zgAAdM6AAHTPAAB0z8AAdNAAAHTQQAB00IAAdNDAAHTRQAB00cAAdNIAAHTSQAB00sAAdNMAAHTiwAB040AAdOPAAHTkQAB05QAAdOVAAHTlgAB05cAAdOYAAHTmgAB05wAAdOdAAHTngAB06AAAdOhAAHT4AAB0+IAAdPkAAHT5gAB0+kAAdPqAAHT6wAB0+wAAdPtAAHT7wAB0/EAAdPyAAHT8wAB0/UAAdP2AAHT/wAB1AAAAdQCAAHUQQAB1EMAAdRFAAHURwAB1EoAAdRLAAHUTAAB1E0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AAgDcAAIA3QACAN8AAgEeAAIBIAACASIAAgEkAAIBJwACASgAAgEpAAIBKgACASsAAgEtAAIBLwACATAAAgExAAIBMwACATQAAgFzAAIBdQACAXcAAgF5AAIBfAACAX0AAgF+AAIBfwACAYAAAgGCAAIBhAACAYUAAgGGAAIBiAACAYkAAgHIAAIBygACAcwAAgHOAAIB0QACAdIAAgHTAAIB1AACAdUAAgHXAAIB2QACAdoAAgHbAAIB3QACAd4AAgIdAAICHwACAiEAAgIjAAICJgACAicAAgIoAAICKQACAioAAgIsAAICLgACAi8AAgIwAAICMgACAjMAAgJyAAICdAACAnYAAgJ4AAICewACAnwAAgJ9AAICfgACAn8AAgKBAAICgwACAoQAAgKFAAIChwACAogAAgKtAAIC0QACAvgAAgMcAAIDHwACAyEAAgMjAAIDJQACAycAAgMpAAIDKgACAy0AAgM6AAIDSQACA0sAAgNNAAIDTwACA1EAAgNTAAIDVQACA1cAAgNmAAIDaQACA2wAAgNvAAIDcgACA3UAAgN4AAIDewACA30AAgO8AAIDvgACA8AAAgPCAAIDxQACA8YAAgPHAAIDyAACA8kAAgPLAAIDzQACA84AAgPPAAID0QACA9IAAgQRAAIEEwACBBUAAgQXAAIEGgACBBsAAgQcAAIEHQACBB4AAgQgAAIEIgACBCMAAgQkAAIEJgACBCcAAgRmAAIEaAACBGoAAgRsAAIEbwACBHAAAgRxAAIEcgACBHMAAgR1AAIEdwACBHgAAgR5AAIEewACBHwAAgS7AAIEvQACBMAAAgTCAAIExQACBMYAAgTHAAIEyAACBMkAAgTLAAIEzQACBM4AAgTPAAIE0QACBNIAAgUVAAIFOQACBV0AAgWAAAIFpwACBccAAgXuAAIGFQACBjUAAgZZAAIGfQACBn8AAgaCAAIGhAACBoYAAgaIAAIGiwACBo4AAgaQAAIGkgACBpUAAgaXAAIGmQACBpwAAgafAAIGoAACBqUAAgayAAIGtQACBrcAAga6AAIGvQACBr8AAgbkAAIHCAACBy8AAgdTAAIHVgACB1gAAgdaAAIHXAACB14AAgdgAAIHYQACB2QAAgdxAAIHhAACB4YAAgeIAAIHigACB4wAAgeOAAIHkAACB5IAAgeUAAIHlgACB6kAAgesAAIHrwACB7IAAge1AAIHuAACB7sAAge+AAIHwQACB8QAAgfGAAIIBQACCAcAAggKAAIIDAACCA8AAggQAAIIEQACCBIAAggTAAIIFQACCBcAAggYAAIIGQACCBsAAggcAAIIJQACCCYAAggoAAIIZwACCGkAAghrAAIIbQACCHAAAghxAAIIcgACCHMAAgh0AAIIdgACCHgAAgh5AAIIegACCHwAAgh9AAIIvAACCL4AAgjBAAIIwwACCMYAAgjHAAIIyAACCMkAAgjKAAIIzAACCM4AAgjPAAII0AACCNIAAgjTAAII3AACCN0AAgjfAAIJHgACCSAAAgkiAAIJJAACCScAAgkoAAIJKQACCSoAAgkrAAIJLQACCS8AAgkwAAIJMQACCTMAAgk0AAIJcwACCXUAAgl4AAIJegACCX0AAgl+AAIJfwACCYAAAgmBAAIJgwACCYUAAgmGAAIJhwACCYkAAgmKAAIJkwACCZQAAgmWAAIJ1QACCdcAAgnZAAIJ2wACCd4AAgnfAAIJ4AACCeEAAgniAAIJ5AACCeYAAgnnAAIJ6AACCeoAAgnrAAIKKgACCiwAAgovAAIKMQACCjQAAgo1AAIKNgACCjcAAgo4AAIKOgACCjwAAgo9AAIKPgACCkAAAgpBAAIKTgACCk8AAgpQAAIKUgACCpEAAgqTAAIKlQACCpcAAgqaAAIKmwACCpwAAgqdAAIKngACCqAAAgqiAAIKowACCqQAAgqmAAIKpwACCuYAAgroAAIK6gACCuwAAgrvAAIK8AACCvEAAgryAAIK8wACCvUAAgr3AAIK+AACCvkAAgr7AAIK/AACCwkAAgsSAAILFQACCxcAAgsaAAILHQACCyYAAgspAAILLAACCy8AAgsyAAILNAACCzkAAgs+AAILQwACC44AAguxAAIL0QACC/EAAgvzAAIL9QACC/cAAgv5AAIL/AACC/0AAgv+AAIMAQACDAIAAgwEAAIMBQACDAcAAgwKAAIMCwACDAwAAgwPAAIMEAACDBUAAgwiAAIMJwACDCkAAgwrAAIMMAACDDMAAgw2AAIMOAACDF0AAgyBAAIMqAACDMwAAgzPAAIM0QACDNMAAgzVAAIM1wACDNkAAgzaAAIM3QACDOoAAgz7AAIM/QACDP8AAg0BAAINAwACDQUAAg0HAAINCQACDQs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AAhfgAAIX4QACF+IAAhfkAAIX5QACGAoAAhguAAIYVQACGHkAAhh8AAIYfgACGIAAAhiCAAIYhAACGIYAAhiHAAIYigACGJcAAhimAAIYqAACGKoAAhisAAIYrgACGLAAAhiyAAIYtAACGMMAAhjGAAIYyQACGMwAAhjPAAIY0gACGNUAAhjYAAIY2gACGRkAAhkbAAIZHgACGSAAAhkjAAIZJAACGSUAAhkmAAIZJwACGSkAAhkrAAIZLAACGS0AAhkvAAIZMAACGW8AAhlxAAIZcwACGXUAAhl4AAIZeQACGXoAAhl7AAIZfAACGX4AAhmAAAIZgQACGYIAAhmEAAIZhQACGcQAAhnGAAIZyAACGcoAAhnNAAIZzgACGc8AAhnQAAIZ0QACGdMAAhnVAAIZ1gACGdcAAhnZAAIZ2gACGhkAAhobAAIaHgACGiAAAhojAAIaJAACGiUAAhomAAIaJwACGikAAhorAAIaLAACGi0AAhovAAIaMAACGm8AAhpxAAIacwACGnUAAhp4AAIaeQACGnoAAhp7AAIafAACGn4AAhqAAAIagQACGoIAAhqEAAIahQACGsQAAhrGAAIayAACGsoAAhrNAAIazgACGs8AAhrQAAIa0QACGtMAAhrVAAIa1gACGtcAAhrZAAIa2gACGxkAAhsbAAIbHQACGx8AAhsiAAIbIwACGyQAAhslAAIbJgACGygAAhsqAAIbKwACGywAAhsuAAIbLwACG3oAAhudAAIbvQACG90AAhvfAAIb4QACG+MAAhvlAAIb6AACG+kAAhvqAAIb7QACG+4AAhvwAAIb8QACG/MAAhv2AAIb9wACG/gAAhv7AAIb/AACHAEAAhwOAAIcEwACHBUAAhwXAAIcHAACHB8AAhwiAAIcJAACHEkAAhxtAAIclAACHLgAAhy7AAIcvQACHL8AAhzBAAIcwwACHMUAAhzGAAIcyQACHNYAAhznAAIc6QACHOsAAhztAAIc7wACHPEAAhzzAAIc9QACHPcAAh0IAAIdCwACHQ4AAh0RAAIdFAACHRcAAh0aAAIdHQACHSAAAh0iAAIdYQACHWMAAh1lAAIdZwACHWoAAh1rAAIdbAACHW0AAh1uAAIdcAACHXIAAh1zAAIddAACHXYAAh13AAIdtgACHbgAAh26AAIdvAACHb8AAh3AAAIdwQACHcIAAh3DAAIdxQACHccAAh3IAAIdyQACHcsAAh3MAAIeCwACHg0AAh4QAAIeEgACHhUAAh4WAAIeFwACHhgAAh4ZAAIeGwACHh0AAh4eAAIeHwACHiEAAh4iAAIeLwACHjAAAh4xAAIeMwACHnIAAh50AAIedgACHngAAh57AAIefAACHn0AAh5+AAIefwACHoEAAh6DAAIehAACHoUAAh6HAAIeiAACHscAAh7JAAIeywACHs0AAh7QAAIe0QACHtIAAh7TAAIe1AACHtYAAh7YAAIe2QACHtoAAh7cAAIe3QACHxwAAh8eAAIfIAACHyIAAh8lAAIfJgACHycAAh8oAAIfKQACHysAAh8tAAIfLgACHy8AAh8xAAIfMgACH3EAAh9zAAIfdQACH3cAAh96AAIfewACH3wAAh99AAIffgACH4AAAh+CAAIfgwACH4QAAh+GAAIfhwACH8YAAh/IAAIfygACH8wAAh/PAAIf0AACH9EAAh/SAAIf0wACH9UAAh/XAAIf2AACH9kAAh/bAAIf3AACIAEAAiAlAAIgTAACIHAAAiBzAAIgdQACIHcAAiB5AAIgewACIH0AAiB+AAIggQACII4AAiCdAAIgnwACIKEAAiCjAAIgpQACIKcAAiCpAAIgqwACILoAAiC9AAIgwAACIMMAAiDGAAIgyQACIMwAAiDPAAIg0QACIRAAAiESAAIhFQACIRcAAiEaAAIhGwACIRwAAiEdAAIhHgACISAAAiEiAAIhIwACISQAAiEmAAIhJwACIWYAAiFoAAIhagACIWwAAiFvAAIhcAACIXEAAiFyAAIhcwACIXUAAiF3AAIheAACIXkAAiF7AAIhfAACIbsAAiG9AAIhvwACIcEAAiHEAAIhxQACIcYAAiHHAAIhyAACIcoAAiHMAAIhzQACIc4AAiHQAAIh0QACIhAAAiISAAIiFQACIhcAAiIaAAIiGwACIhwAAiIdAAIiHgACIiAAAiIiAAIiIwACIiQAAiImAAIiJwACImYAAiJoAAIiagACImwAAiJvAAIicAACInEAAiJyAAIicwACInUAAiJ3AAIieAACInkAAiJ7AAIifAACIrsAAiK9AAIivwACIsEAAiLEAAIixQACIsYAAiLHAAIiyAACIsoAAiLMAAIizQACIs4AAiLQAAIi0QACIxAAAiMSAAIjFAACIxYAAiMZAAIjGgACIxsAAiMcAAIjHQACIx8AAiMhAAIjIgACIyMAAiMlAAIjJgACI3EAAiOUAAIjtAACI9QAAiPWAAIj2AACI9oAAiPcAAIj3wACI+AAAiPhAAIj5AACI+UAAiPnAAIj6AACI+oAAiPtAAIj7gACI+8AAiPyAAIj8wACI/wAAiQJAAIkDgACJBAAAiQSAAIkFwACJBoAAiQdAAIkHwACJEQAAiRoAAIkjwACJLMAAiS2AAIkuAACJLoAAiS8AAIkvgACJMAAAiTBAAIkxAACJNEAAiTiAAIk5AACJOYAAiToAAIk6gACJOwAAiTuAAIk8AACJPIAAiUDAAIlBgACJQkAAiUMAAIlDwACJRIAAiUVAAIlGAACJRsAAiUdAAIlXAACJV4AAiVgAAIlYgACJWUAAiVmAAIlZwACJWgAAiVpAAIlawACJW0AAiVuAAIlbwACJXEAAiVyAAIlsQACJbMAAiW1AAIltwACJboAAiW7AAIlvAACJb0AAiW+AAIlwAACJcIAAiXDAAIlxAACJcYAAiXHAAImBgACJggAAiYLAAImDQACJhAAAiYRAAImEgACJhMAAiYUAAImFgACJhgAAiYZAAImGgACJhwAAiYdAAImKgACJisAAiYsAAImLgACJm0AAiZvAAImcQACJnMAAiZ2AAImdwACJngAAiZ5AAImegACJnwAAiZ+AAImfwACJoAAAiaCAAImgwACJsIAAibEAAImxgACJsgAAibLAAImzAACJs0AAibOAAImzwACJtEAAibTAAIm1AACJtUAAibXAAIm2AACJxcAAicZAAInGwACJx0AAicgAAInIQACJyIAAicjAAInJAACJyYAAicoAAInKQACJyoAAicsAAInLQACJ2wAAiduAAIncAACJ3IAAid1AAIndgACJ3cAAid4AAIneQACJ3sAAid9AAInfgACJ38AAieBAAInggACJ8EAAifDAAInxQACJ8cAAifKAAInywACJ8wAAifNAAInzgACJ9AAAifSAAIn0wACJ9QAAifWAAIn1wACJ/wAAiggAAIoRwACKGsAAihuAAIocAACKHIAAih0AAIodgACKHgAAih5AAIofAACKIkAAiiYAAIomgACKJwAAiieAAIooAACKKIAAiikAAIopgACKLUAAii4AAIouwACKL4AAijBAAIoxAACKMcAAijKAAIozAACKQsAAikNAAIpDwACKREAAikUAAIpFQACKRYAAikXAAIpGAACKRoAAikcAAIpHQACKR4AAikgAAIpIQACKWAAAiliAAIpZAACKWYAAilpAAIpagACKWsAAilsAAIpbQACKW8AAilxAAIpcgACKXMAAil1AAIpdgACKbUAAim3AAIpuQACKbsAAim+AAIpvwACKcAAAinBAAIpwgACKcQAAinGAAIpxwACKcgAAinKAAIpywACKgoAAioMAAIqDgACKhAAAioTAAIqFAACKhUAAioWAAIqFwACKhkAAiobAAIqHAACKh0AAiofAAIqIAACKl8AAiphAAIqYwACKmUAAipoAAIqaQACKmoAAiprAAIqbAACKm4AAipwAAIqcQACKnIAAip0AAIqdQACKrQAAiq2AAIquAACKroAAiq9AAIqvgACKr8AAirAAAIqwQACKsMAAirFAAIqxgACKscAAirJAAIqygACKwkAAisLAAIrDQACKw8AAisSAAIrEwACKxQAAisVAAIrFgACKxgAAisaAAIrGwACKxwAAiseAAIrHwACKygAAispAAIrKwACK2oAAitsAAIrbgACK3AAAitzAAIrdAACK3UAAit2AAIrdwACK3kAAit7AAIrfAACK30AAit/AAIrgAACK78AAivBAAIrwwACK8UAAivIAAIryQACK8oAAivLAAIrzAACK84AAivQAAIr0QACK9IAAivUAAIr1QACLBQAAiwWAAIsGQACLBsAAiweAAIsHwACLCAAAiwhAAIsIgACLCQAAiwmAAIsJwACLCgAAiwqAAIsKwACLHYAAiyZAAIsuQACLNkAAizbAAIs3QACLN8AAizhAAIs4wACLOQAAizlAAIs6AACLOkAAizrAAIs7AACLO4AAizwAAIs8QACLPIAAiz1AAIs9gACLPsAAi0IAAItDQACLQ8AAi0RAAItFgACLRkAAi0cAAItHgACLUMAAi1nAAItjgACLbIAAi21AAIttwACLbkAAi27AAItvQACLb8AAi3AAAItwwACLdAAAi3hAAIt4wACLeUAAi3nAAIt6QACLesAAi3tAAIt7wACLfEAAi4CAAIuBQACLggAAi4LAAIuDgACLhEAAi4UAAIuFwACLhoAAi4cAAIuWwACLl0AAi5fAAIuYQACLmQAAi5lAAIuZgACLmcAAi5oAAIuagACLmwAAi5tAAIubgACLnAAAi5xAAIusAACLrIAAi60AAIutgACLrkAAi66AAIuuwACLrwAAi69AAIuvwACLsEAAi7CAAIuwwACLsUAAi7GAAIvBQACLwcAAi8KAAIvDAACLw8AAi8QAAIvEQACLxIAAi8TAAIvFQACLxcAAi8YAAIvGQACLxsAAi8cAAIvKQACLyoAAi8rAAIvLQACL2wAAi9uAAIvcAACL3IAAi91AAIvdgACL3cAAi94AAIveQACL3sAAi99AAIvfgACL38AAi+BAAIvggACL8EAAi/DAAIvxQACL8cAAi/KAAIvywACL8wAAi/NAAIvzgACL9AAAi/SAAIv0wACL9QAAi/WAAIv1wACMBYAAjAYAAIwGgACMBwAAjAfAAIwIAACMCEAAjAiAAIwIwACMCUAAjAnAAIwKAACMCkAAjArAAIwLAACMGsAAjBtAAIwbwACMHEAAjB0AAIwdQACMHYAAjB3AAIweAACMHoAAjB8AAIwfQACMH4AAjCAAAIwgQACMMAAAjDCAAIwxAACMMYAAjDJAAIwygACMMsAAjDMAAIwzQACMM8AAjDRAAIw0gACMNMAAjDVAAIw1gACMPsAAjEfAAIxRgACMWoAAjFtAAIxbwACMXEAAjFzAAIxdQACMXcAAjF4AAIxewACMYgAAjGXAAIxmQACMZsAAjGdAAIxnwACMaEAAjGjAAIxpQACMbQAAjG3AAIxugACMb0AAjHAAAIxwwACMcYAAjHJAAIxywACMgoAAjIMAAIyDwACMhEAAjIUAAIyFQACMhYAAjIXAAIyGAACMhoAAjIcAAIyHQACMh4AAjIgAAIyIQACMmAAAjJiAAIyZAACMmYAAjJpAAIyagACMmsAAjJsAAIybQACMm8AAjJxAAIycgACMnMAAjJ1AAIydgACMrUAAjK3AAIyuQACMrsAAjK+AAIyvwACMsAAAjLBAAIywgACMsQAAjLGAAIyxwACMsgAAjLKAAIyywACMwoAAjMMAAIzDwACMxEAAjMUAAIzFQACMxYAAjMXAAIzGAACMxoAAjMcAAIzHQACMx4AAjMgAAIzIQACM2AAAjNiAAIzZAACM2YAAjNpAAIzagACM2sAAjNsAAIzbQACM28AAjNxAAIzcgACM3MAAjN1AAIzdgACM7UAAjO3AAIzuQACM7sAAjO+AAIzvwACM8AAAjPBAAIzwgACM8QAAjPGAAIzxwACM8gAAjPKAAIzywACNAoAAjQMAAI0DgACNBAAAjQTAAI0FAACNBUAAjQWAAI0FwACNBkAAjQbAAI0HAACNB0AAjQfAAI0IAACNGsAAjSOAAI0rgACNM4AAjTQAAI00gACNNQAAjTWAAI02AACNNkAAjTaAAI03QACNN4AAjTgAAI04QACNOMAAjTlAAI05gACNOcAAjTqAAI06wACNPAAAjT9AAI1AgACNQQAAjUGAAI1CwACNQ4AAjURAAI1EwACNTgAAjVcAAI1gwACNacAAjWqAAI1rAACNa4AAjWwAAI1sgACNbQAAjW1AAI1uAACNcUAAjXWAAI12AACNdoAAjXcAAI13gACNeAAAjXiAAI15AACNeYAAjX3AAI1+gACNf0AAjYAAAI2AwACNgYAAjYJAAI2DAACNg8AAjYRAAI2UAACNlIAAjZUAAI2VgACNlkAAjZaAAI2WwACNlwAAjZdAAI2XwACNmEAAjZiAAI2YwACNmUAAjZmAAI2pQACNqcAAjapAAI2qwACNq4AAjavAAI2sAACNrEAAjayAAI2tAACNrYAAja3AAI2uAACNroAAja7AAI2+gACNvwAAjb/AAI3AQACNwQAAjcFAAI3BgACNwcAAjcIAAI3CgACNwwAAjcNAAI3DgACNxAAAjcRAAI3HgACNx8AAjcgAAI3IgACN2EAAjdjAAI3ZQACN2cAAjdqAAI3awACN2wAAjdtAAI3bgACN3AAAjdyAAI3cwACN3QAAjd2AAI3dwACN7YAAje4AAI3ugACN7wAAje/AAI3wAACN8EAAjfCAAI3wwACN8UAAjfHAAI3yAACN8kAAjfLAAI3zAACOAsAAjgNAAI4DwACOBEAAjgUAAI4FQACOBYAAjgXAAI4GAACOBoAAjgcAAI4HQACOB4AAjggAAI4IQACOGAAAjhiAAI4ZAACOGYAAjhpAAI4agACOGsAAjhsAAI4bQACOG8AAjhxAAI4cgACOHMAAjh1AAI4dgACOLUAAji3AAI4uQACOLsAAji+AAI4vwACOMAAAjjBAAI4wgACOMQAAjjGAAI4xwACOMgAAjjKAAI4ywACOPAAAjkUAAI5OwACOV8AAjliAAI5ZAACOWYAAjloAAI5agACOWwAAjltAAI5cAACOX0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AAkVdAAJFXwACRWAAAkWfAAJFoQACRaQAAkWmAAJFqQACRaoAAkWrAAJFrAACRa0AAkWvAAJFsQACRbIAAkWzAAJFtQACRbYAAkXDAAJFxAACRcUAAkXHAAJGBgACRggAAkYKAAJGDAACRg8AAkYQAAJGEQACRhIAAkYTAAJGFQACRhcAAkYYAAJGGQACRhsAAkYcAAJGWwACRl0AAkZfAAJGYQACRmQAAkZlAAJGZgACRmcAAkZoAAJGagACRmwAAkZtAAJGbgACRnAAAkZxAAJGsAACRrIAAka0AAJGtgACRrkAAka6AAJGuwACRrwAAka9AAJGvwACRsEAAkbCAAJGwwACRsUAAkbGAAJHBQACRwcAAkcJAAJHCwACRw4AAkcPAAJHEAACRxEAAkcSAAJHFAACRxYAAkcXAAJHGAACRxoAAkcbAAJHWgACR1wAAkdeAAJHYAACR2MAAkdkAAJHZQACR2YAAkdnAAJHaQACR2sAAkdsAAJHbQACR28AAkdwAAJHlQACR7kAAkfgAAJIBAACSAcAAkgJAAJICwACSA0AAkgPAAJIEQACSBIAAkgVAAJIIgACSDEAAkgzAAJINQACSDcAAkg5AAJIOwACSD0AAkg/AAJITgACSFEAAkhUAAJIVwACSFoAAkhdAAJIYAACSGMAAkhlAAJIpAACSKYAAkioAAJIqgACSK0AAkiuAAJIrwACSLAAAkixAAJIswACSLUAAki2AAJItwACSLkAAki6AAJI+QACSPsAAkj9AAJI/wACSQIAAkkDAAJJBAACSQUAAkkGAAJJCAACSQoAAkkLAAJJDAACSQ4AAkkPAAJJTgACSVAAAklSAAJJVAACSVcAAklYAAJJWQACSVoAAklbAAJJXQACSV8AAklgAAJJYQACSWMAAklkAAJJowACSaUAAkmoAAJJqgACSa0AAkmuAAJJrwACSbAAAkmxAAJJswACSbUAAkm2AAJJtwACSbkAAkm6AAJJ/QACSiEAAkpFAAJKaAACSo8AAkqvAAJK1gACSv0AAksdAAJLQQACS2UAAktnAAJLagACS2wAAktuAAJLcAACS3MAAkt2AAJLeAACS3oAAkt9AAJLfwACS4EAAkuEAAJLhwACS4gAAkuRAAJLngACS6EAAkujAAJLpgACS6kAAkurAAJL0AACS/QAAkwbAAJMPwACTEIAAkxEAAJMRgACTEgAAkxKAAJMTAACTE0AAkxQAAJMXQACTHAAAkxyAAJMdAACTHYAAkx4AAJMegACTHwAAkx+AAJMgAACTIIAAkyVAAJMmAACTJsAAkyeAAJMoQACTKQAAkynAAJMqgACTK0AAkywAAJMsgACTPEAAkzzAAJM9gACTPgAAkz7AAJM/AACTP0AAkz+AAJM/wACTQEAAk0DAAJNBAACTQUAAk0HAAJNCAACTREAAk0SAAJNFAACTVMAAk1VAAJNVwACTVkAAk1cAAJNXQACTV4AAk1fAAJNYAACTWIAAk1kAAJNZQACTWYAAk1oAAJNaQACTagAAk2qAAJNrQACTa8AAk2yAAJNswACTbQAAk21AAJNtgACTbgAAk26AAJNuwACTbwAAk2+AAJNvwACTcgAAk3JAAJNywACTgoAAk4MAAJODgACThAAAk4TAAJOFAACThUAAk4WAAJOFwACThkAAk4bAAJOHAACTh0AAk4fAAJOIAACTl8AAk5hAAJOZAACTmYAAk5pAAJOagACTmsAAk5sAAJObQACTm8AAk5xAAJOcgACTnMAAk51AAJOdgACTn8AAk6AAAJOggACTsEAAk7DAAJOxQACTscAAk7KAAJOywACTswAAk7NAAJOzgACTtAAAk7SAAJO0wACTtQAAk7WAAJO1wACTxYAAk8YAAJPGwACTx0AAk8gAAJPIQACTyIAAk8jAAJPJAACTyYAAk8oAAJPKQACTyoAAk8sAAJPLQACTzoAAk87AAJPPAACTz4AAk99AAJPfwACT4EAAk+DAAJPhgACT4cAAk+IAAJPiQACT4oAAk+MAAJPjgACT48AAk+QAAJPkgACT5MAAk/SAAJP1AACT9YAAk/YAAJP2wACT9wAAk/dAAJP3gACT98AAk/hAAJP4wACT+QAAk/lAAJP5wACT+gAAk/1AAJQAAACUAIAAlAFAAJQBwACUAoAAlANAAJQGAACUBsAAlAeAAJQIQACUCQAAlAnAAJQKQACUC8AAlA0AAJQOgACUIUAAlCoAAJQyAACUOgAAlDqAAJQ7AACUO4AAlDwAAJQ8wACUPQAAlD1AAJQ+AACUPkAAlD7AAJQ/AACUP4AAlEAAAJRAQACUQIAAlEFAAJRBgACUQsAAlEYAAJRHQACUR8AAlEhAAJRJgACUSkAAlEsAAJRLgACUVMAAlF3AAJRngACUcIAAlHFAAJRxwACUckAAlHLAAJRzQACUc8AAlHQAAJR0wACUeAAAlHxAAJR8wACUfUAAlH3AAJR+QACUfsAAlH9AAJR/wACUgEAAlISAAJSFQACUhgAAlIbAAJSHgACUiEAAlIkAAJSJwACUioAAlIsAAJSawACUm0AAlJvAAJScQACUnQAAlJ1AAJSdgACUncAAlJ4AAJSegACUnwAAlJ9AAJSfgACUoAAAlKBAAJSwAACUsIAAlLEAAJSxgACUskAAlLKAAJSywACUswAAlLNAAJSzwACUtEAAlLSAAJS0wACUtUAAlLWAAJTFQACUxcAAlMaAAJTHAACUx8AAlMgAAJTIQACUyIAAlMjAAJTJQACUycAAlMoAAJTKQACUysAAlMsAAJTOQACUzoAAlM7AAJTPQACU3wAAlN+AAJTgAACU4IAAlOFAAJThgACU4cAAlOIAAJTiQACU4sAAlONAAJTjgACU48AAlORAAJTkgACU9EAAlPTAAJT1QACU9cAAlPaAAJT2wACU9wAAlPdAAJT3gACU+AAAlPiAAJT4wACU+QAAlPmAAJT5wACVCYAAlQoAAJUKgACVCwAAlQvAAJUMAACVDEAAlQyAAJUMwACVDUAAlQ3AAJUOAACVDkAAlQ7AAJUPAACVHsAAlR9AAJUfwACVIEAAlSEAAJUhQACVIYAAlSHAAJUiAACVIoAAlSMAAJUjQACVI4AAlSQAAJUkQACVNAAAlTSAAJU1AACVNYAAlTZAAJU2gACVNsAAlTcAAJU3QACVN8AAlThAAJU4gACVOMAAlTlAAJU5gACVQsAAlUvAAJVVgACVXoAAlV9AAJVfwACVYEAAlWDAAJVhQACVYcAAlWIAAJViwACVZgAAlWnAAJVqQACVasAAlWtAAJVrwACVbEAAlWzAAJVtQACVcQAAlXHAAJVygACVc0AAlXQAAJV0wACVdYAAlXZAAJV2wACVhoAAlYcAAJWHwACViEAAlYkAAJWJQACViYAAlYnAAJWKAACVioAAlYsAAJWLQACVi4AAlYwAAJWMQACVnAAAlZyAAJWdAACVnYAAlZ5AAJWegACVnsAAlZ8AAJWfQACVn8AAlaBAAJWggACVoMAAlaFAAJWhgACVsUAAlbHAAJWyQACVssAAlbOAAJWzwACVtAAAlbRAAJW0gACVtQAAlbWAAJW1wACVtgAAlbaAAJW2wACVxoAAlccAAJXHwACVyEAAlckAAJXJQACVyYAAlcnAAJXKAACVyoAAlcsAAJXLQACVy4AAlcwAAJXMQACV3AAAldyAAJXdAACV3YAAld5AAJXegACV3sAAld8AAJXfQACV38AAleBAAJXggACV4MAAleFAAJXhgACV8UAAlfHAAJXyQACV8sAAlfOAAJXzwACV9AAAlfRAAJX0gACV9QAAlfWAAJX1wACV9gAAlfaAAJX2wACWBoAAlgcAAJYHgACWCAAAlgjAAJYJAACWCUAAlgmAAJYJwACWCkAAlgrAAJYLAACWC0AAlgvAAJYMAACWHsAAlieAAJYvgACWN4AAljgAAJY4gACWOQAAljmAAJY6QACWOoAAljrAAJY7gACWO8AAljxAAJY8gACWPQAAlj3AAJY+AACWPkAAlj8AAJY/QACWQIAAlkPAAJZFAACWRYAAlkYAAJZHQACWSAAAlkjAAJZJQACWUoAAlluAAJZlQACWbkAAlm8AAJZvgACWcAAAlnCAAJZxAACWcYAAlnHAAJZygACWdcAAlnoAAJZ6gACWewAAlnuAAJZ8AACWfIAAln0AAJZ9gACWfgAAloJAAJaDAACWg8AAloSAAJaFQACWhgAAlobAAJaHgACWiEAAlojAAJaYgACWmQAAlpmAAJaaAACWmsAAlpsAAJabQACWm4AAlpvAAJacQACWnMAAlp0AAJadQACWncAAlp4AAJatwACWrkAAlq7AAJavQACWsAAAlrBAAJawgACWsMAAlrEAAJaxgACWsgAAlrJAAJaygACWswAAlrNAAJbDAACWw4AAlsRAAJbEwACWxYAAlsXAAJbGAACWxkAAlsaAAJbHAACWx4AAlsfAAJbIAACWyIAAlsjAAJbMAACWzEAAlsyAAJbNAACW3MAAlt1AAJbdwACW3kAAlt8AAJbfQACW34AAlt/AAJbgAACW4IAAluEAAJbhQACW4YAAluIAAJbiQACW8gAAlvKAAJbzAACW84AAlvRAAJb0gACW9MAAlvUAAJb1QACW9cAAlvZAAJb2gACW9sAAlvdAAJb3gACXB0AAlwfAAJcIQACXCMAAlwmAAJcJwACXCgAAlwpAAJcKgACXCwAAlwuAAJcLwACXDAAAlwyAAJcMwACXHIAAlx0AAJcdgACXHgAAlx7AAJcfAACXH0AAlx+AAJcfwACXIEAAlyDAAJchAACXIUAAlyHAAJciAACXMcAAlzJAAJcywACXM0AAlzQAAJc0QACXNIAAlzTAAJc1AACXNYAAlzYAAJc2QACXNoAAlzcAAJc3QACXQIAAl0mAAJdTQACXXEAAl10AAJddgACXXgAAl16AAJdfAACXX4AAl1/AAJdggACXY8AAl2eAAJdoAACXaIAAl2kAAJdpgACXagAAl2qAAJdrAACXbsAAl2+AAJdwQACXcQAAl3HAAJdygACXc0AAl3QAAJd0gACXhEAAl4TAAJeFgACXhgAAl4bAAJeHAACXh0AAl4eAAJeHwACXiEAAl4jAAJeJAACXiUAAl4nAAJeKAACXmcAAl5pAAJeawACXm0AAl5wAAJecQACXnIAAl5zAAJedAACXnYAAl54AAJeeQACXnoAAl58AAJefQACXrwAAl6+AAJewAACXsIAAl7FAAJexgACXscAAl7IAAJeyQACXssAAl7NAAJezgACXs8AAl7RAAJe0gACXxEAAl8TAAJfFgACXxgAAl8bAAJfHAACXx0AAl8eAAJfHwACXyEAAl8jAAJfJAACXyUAAl8nAAJfKAACX2cAAl9pAAJfawACX20AAl9wAAJfcQACX3IAAl9zAAJfdAACX3YAAl94AAJfeQACX3oAAl98AAJffQACX7wAAl++AAJfwAACX8IAAl/FAAJfxgACX8cAAl/IAAJfyQACX8sAAl/NAAJfzgACX88AAl/RAAJf0gACYBEAAmATAAJgFQACYBcAAmAaAAJgGwACYBwAAmAdAAJgHgACYCAAAmAiAAJgIwACYCQAAmAmAAJgJwACYHIAAmCVAAJgtQACYNUAAmDXAAJg2QACYNsAAmDdAAJg4AACYOEAAmDiAAJg5QACYOYAAmDoAAJg6QACYOsAAmDtAAJg7gACYO8AAmDyAAJg8wACYPgAAmEFAAJhCgACYQwAAmEOAAJhEwACYRYAAmEZAAJhGwACYUAAAmFkAAJhiwACYa8AAmGyAAJhtAACYbYAAmG4AAJhugACYbwAAmG9AAJhwAACYc0AAmHeAAJh4AACYeIAAmHkAAJh5gACYegAAmHqAAJh7AACYe4AAmH/AAJiAgACYgUAAmIIAAJiCwACYg4AAmIRAAJiFAACYhcAAmIZAAJiWAACYloAAmJcAAJiXgACYmEAAmJiAAJiYwACYmQAAmJlAAJiZwACYmkAAmJqAAJiawACYm0AAmJuAAJirQACYq8AAmKxAAJiswACYrYAAmK3AAJiuAACYrkAAmK6AAJivAACYr4AAmK/AAJiwAACYsIAAmLDAAJjAgACYwQAAmMHAAJjCQACYwwAAmMNAAJjDgACYw8AAmMQAAJjEgACYxQAAmMVAAJjFgACYxgAAmMZAAJjJgACYycAAmMoAAJjKgACY2kAAmNrAAJjbQACY28AAmNyAAJjcwACY3QAAmN1AAJjdgACY3gAAmN6AAJjewACY3wAAmN+AAJjfwACY74AAmPAAAJjwgACY8QAAmPHAAJjyAACY8kAAmPKAAJjywACY80AAmPPAAJj0AACY9EAAmPTAAJj1AACZBMAAmQVAAJkFwACZBkAAmQcAAJkHQACZB4AAmQfAAJkIAACZCIAAmQkAAJkJQACZCYAAmQoAAJkKQACZGgAAmRqAAJkbAACZG4AAmRxAAJkcgACZHMAAmR0AAJkdQACZHcAAmR5AAJkegACZHsAAmR9AAJkfgACZL0AAmS/AAJkwQACZMMAAmTGAAJkxwACZMgAAmTJAAJkygACZMwAAmTOAAJkzwACZNAAAmTSAAJk0wACZPgAAmUcAAJlQwACZWcAAmVqAAJlbAACZW4AAmVwAAJlcgACZXQAAmV1AAJleAACZYUAAmWUAAJllgACZZgAAmWaAAJlnAACZZ4AAmWgAAJlogACZbEAAmW0AAJltwACZboAAmW9AAJlwAACZcMAAmXGAAJlyAACZgcAAmYJAAJmCwACZg0AAmYQAAJmEQACZhIAAmYTAAJmFAACZhYAAmYYAAJmGQACZhoAAmYcAAJmHQACZlwAAmZeAAJmYAACZmIAAmZlAAJmZgACZmcAAmZoAAJmaQACZmsAAmZtAAJmbgACZm8AAmZxAAJmcgACZrEAAmazAAJmtQACZrcAAma6AAJmuwACZrwAAma9AAJmvgACZsAAAmbCAAJmwwACZsQAAmbGAAJmxwACZwYAAmcIAAJnCgACZwwAAmcPAAJnEAACZxEAAmcSAAJnEwACZxUAAmcXAAJnGAACZxkAAmcbAAJnHAACZ1sAAmddAAJnXwACZ2EAAmdkAAJnZQACZ2YAAmdnAAJnaAACZ2oAAmdsAAJnbQACZ24AAmdwAAJncQACZ7AAAmeyAAJntAACZ7YAAme5AAJnugACZ7sAAme8AAJnvQACZ78AAmfBAAJnwgACZ8MAAmfFAAJnxgACaAUAAmgHAAJoCQACaAsAAmgOAAJoDwACaBAAAmgRAAJoEgACaBQAAmgWAAJoFwACaBgAAmgaAAJoGwACaGYAAmiJAAJoqQACaMkAAmjLAAJozQACaM8AAmjRAAJo1AACaNUAAmjWAAJo2QACaNoAAmjcAAJo3QACaN8AAmjiAAJo4wACaOQAAmjnAAJo6AACaO0AAmj6AAJo/wACaQEAAmkDAAJpCAACaQsAAmkOAAJpEAACaTUAAmlZAAJpgAACaaQAAmmnAAJpqQACaasAAmmtAAJprwACabEAAmmyAAJptQACacIAAmnTAAJp1QACadcAAmnZAAJp2wACad0AAmnfAAJp4QACaeMAAmn0AAJp9wACafoAAmn9AAJqAAACagMAAmoGAAJqCQACagwAAmoOAAJqTQACak8AAmpRAAJqUwACalYAAmpXAAJqWAACalkAAmpaAAJqXAACal4AAmpfAAJqYAACamIAAmpjAAJqogACaqQAAmqmAAJqqAACaqsAAmqsAAJqrQACaq4AAmqvAAJqsQACarMAAmq0AAJqtQACarcAAmq4AAJq9wACavkAAmr8AAJq/gACawEAAmsCAAJrAwACawQAAmsFAAJrBwACawkAAmsKAAJrCwACaw0AAmsOAAJrGwACaxwAAmsdAAJrHwACa14AAmtgAAJrYgACa2QAAmtnAAJraAACa2kAAmtqAAJrawACa20AAmtvAAJrcAACa3EAAmtzAAJrdAACa7MAAmu1AAJrtwACa7kAAmu8AAJrvQACa74AAmu/AAJrwAACa8IAAmvEAAJrxQACa8YAAmvIAAJryQACbAgAAmwKAAJsDAACbA4AAmwRAAJsEgACbBMAAmwUAAJsFQACbBcAAmwZAAJsGgACbBsAAmwdAAJsHgACbF0AAmxfAAJsYQACbGMAAmxmAAJsZwACbGgAAmxpAAJsagACbGwAAmxuAAJsbwACbHAAAmxyAAJscwACbLIAAmy0AAJstgACbLgAAmy7AAJsvAACbL0AAmy+AAJsvwACbMEAAmzDAAJsxAACbMUAAmzHAAJsyAACbO0AAm0RAAJtOAACbVwAAm1fAAJtYQACbWMAAm1lAAJtZwACbWkAAm1qAAJtbQACbXoAAm2JAAJtiwACbY0AAm2PAAJtkQACbZMAAm2VAAJtlwACbaYAAm2pAAJtrAACba8AAm2yAAJttQACbbgAAm27AAJtvQACbfwAAm3+AAJuAAACbgIAAm4FAAJuBgACbgcAAm4IAAJuCQACbgsAAm4NAAJuDgACbg8AAm4RAAJuEgACblEAAm5TAAJuVQACblcAAm5aAAJuWwACblwAAm5dAAJuXgACbmAAAm5iAAJuYwACbmQAAm5mAAJuZwACbqYAAm6oAAJuqgACbqwAAm6vAAJusAACbrEAAm6yAAJuswACbrUAAm63AAJuuAACbrkAAm67AAJuvAACbvsAAm79AAJvAAACbwIAAm8FAAJvBgACbwcAAm8IAAJvCQACbwsAAm8NAAJvDgACbw8AAm8RAAJvEgACb1EAAm9TAAJvVQACb1cAAm9aAAJvWwACb1wAAm9dAAJvXgACb2AAAm9iAAJvYwACb2QAAm9mAAJvZwACb6YAAm+oAAJvqgACb6wAAm+vAAJvsAACb7EAAm+yAAJvswACb7UAAm+3AAJvuAACb7kAAm+7AAJvvAACb/sAAm/9AAJwAAACcAIAAnAFAAJwBgACcAcAAnAIAAJwCQACcAsAAnANAAJwDgACcA8AAnARAAJwEgACcF0AAnCAAAJwoAACcMAAAnDCAAJwxAACcMYAAnDIAAJwywACcMwAAnDNAAJw0AACcNEAAnDTAAJw1AACcNYAAnDZAAJw2gACcNsAAnDeAAJw3wACcOQAAnDxAAJw9gACcPgAAnD6AAJw/wACcQIAAnEFAAJxBwACcSwAAnFQAAJxdwACcZsAAnGeAAJxoAACcaIAAnGkAAJxpgACcagAAnGpAAJxrAACcbkAAnHKAAJxzAACcc4AAnHQAAJx0gACcdQAAnHWAAJx2AACcdoAAnHrAAJx7gACcfEAAnH0AAJx9wACcfoAAnH9AAJyAAACcgMAAnIFAAJyRAACckYAAnJIAAJySgACck0AAnJOAAJyTwACclAAAnJRAAJyUwACclUAAnJWAAJyVwACclkAAnJaAAJymQACcpsAAnKdAAJynwACcqIAAnKjAAJypAACcqUAAnKmAAJyqAACcqoAAnKrAAJyrAACcq4AAnKvAAJy7gACcvAAAnLzAAJy9QACcvgAAnL5AAJy+gACcvsAAnL8AAJy/gACcwAAAnMBAAJzAgACcwQAAnMFAAJzEgACcxMAAnMUAAJzFgACc1UAAnNXAAJzWQACc1sAAnNeAAJzXwACc2AAAnNhAAJzYgACc2QAAnNmAAJzZwACc2gAAnNqAAJzawACc6oAAnOsAAJzrgACc7AAAnOzAAJztAACc7UAAnO2AAJztwACc7kAAnO7AAJzvAACc70AAnO/AAJzwAACc/8AAnQBAAJ0AwACdAUAAnQIAAJ0CQACdAoAAnQLAAJ0DAACdA4AAnQQAAJ0EQACdBIAAnQUAAJ0FQACdFQAAnRWAAJ0WAACdFoAAnRdAAJ0XgACdF8AAnRgAAJ0YQACdGMAAnRlAAJ0ZgACdGcAAnRpAAJ0agACdKkAAnSrAAJ0rQACdK8AAnSyAAJ0swACdLQAAnS1AAJ0tgACdLgAAnS6AAJ0uwACdLwAAnS+AAJ0vwACdOQAAnUIAAJ1LwACdVMAAnVWAAJ1WAACdVoAAnVcAAJ1XgACdWAAAnVhAAJ1ZAACdXEAAnWAAAJ1ggACdYQAAnWGAAJ1iAACdYoAAnWMAAJ1jgACdZ0AAnWgAAJ1owACdaYAAnWpAAJ1rAACda8AAnWyAAJ1tAACdfMAAnX1AAJ1+AACdfoAAnX9AAJ1/gACdf8AAnYAAAJ2AQACdgMAAnYFAAJ2BgACdgcAAnYJAAJ2CgACdkkAAnZLAAJ2TQACdk8AAnZSAAJ2UwACdlQAAnZVAAJ2VgACdlgAAnZaAAJ2WwACdlwAAnZeAAJ2XwACdp4AAnagAAJ2ogACdqQAAnanAAJ2qAACdqkAAnaqAAJ2qwACdq0AAnavAAJ2sAACdrEAAnazAAJ2tAACdvMAAnb1AAJ2+AACdvoAAnb9AAJ2/gACdv8AAncAAAJ3AQACdwMAAncFAAJ3BgACdwcAAncJAAJ3CgACd0kAAndLAAJ3TQACd08AAndSAAJ3UwACd1QAAndVAAJ3VgACd1gAAndaAAJ3WwACd1wAAndeAAJ3XwACd54AAnegAAJ3ogACd6QAAnenAAJ3qAACd6kAAneqAAJ3qwACd60AAnevAAJ3sAACd7EAAnezAAJ3tAACd/MAAnf1AAJ39wACd/kAAnf8AAJ3/QACd/4AAnf/AAJ4AAACeAIAAngEAAJ4BQACeAYAAngIAAJ4CQACeBIAAngTAAJ4FQACeFQAAnhWAAJ4WAACeFoAAnhdAAJ4XgACeF8AAnhgAAJ4YQACeGMAAnhlAAJ4ZgACeGcAAnhpAAJ4agACeKkAAnirAAJ4rQACeK8AAniyAAJ4swACeLQAAni1AAJ4tgACeLgAAni6AAJ4uwACeLwAAni+AAJ4vwACeP4AAnkAAAJ5AwACeQUAAnkIAAJ5CQACeQoAAnkLAAJ5DAACeQ4AAnkQAAJ5EQACeRIAAnkUAAJ5FQACeR4AAnkhAAJ5JAACeSYAAnkrAAJ5NAACeU0AAnlWAAJ5bwACeYYAAnmYAAJ5tQACebgAAnm6AAJ5vAACeb4AAnnBAAJ5wwACecgAAnoHAAJ6CQACegsAAnoNAAJ6DwACehAAAnoRAAJ6EgACehMAAnoVAAJ6FwACehgAAnoZAAJ6GwACehwAAnpbAAJ6XQACel8AAnphAAJ6YwACemQAAnplAAJ6ZgACemcAAnppAAJ6awACemwAAnptAAJ6bwACenAAAnqvAAJ6sQACerMAAnq1AAJ6twACergAAnq5AAJ6ugACersAAnq9AAJ6vwACesAAAnrBAAJ6wwACesQAAnrNAAJ60AACetMAAnrVAAJ7GAACezwAAntgAAJ7gwACe6oAAnvKAAJ78QACfBgAAnw4AAJ8XAACfIAAAnyCAAJ8hQACfIcAAnyJAAJ8iwACfI4AAnyRAAJ8kwACfJUAAnyYAAJ8mgACfJwAAnyfAAJ8ogACfKMAAnyoAAJ8tQACfLgAAny6AAJ8vQACfMAAAnzCAAJ85wACfQsAAn0yAAJ9VgACfVkAAn1bAAJ9XQACfV8AAn1hAAJ9YwACfWQAAn1nAAJ9dAACfYcAAn2JAAJ9iwACfY0AAn2PAAJ9kQACfZMAAn2VAAJ9lwACfZkAAn2sAAJ9rwACfbIAAn21AAJ9uAACfbsAAn2+AAJ9wQACfcQAAn3HAAJ9yQACfggAAn4KAAJ+DQACfg8AAn4SAAJ+EwACfhQAAn4VAAJ+FgACfhgAAn4aAAJ+GwACfhwAAn4eAAJ+HwACfigAAn4pAAJ+KwACfmoAAn5sAAJ+bgACfnAAAn5zAAJ+dAACfnUAAn52AAJ+dwACfnkAAn57AAJ+fAACfn0AAn5/AAJ+gAACfr8AAn7BAAJ+xAACfsYAAn7JAAJ+ygACfssAAn7MAAJ+zQACfs8AAn7RAAJ+0gACftMAAn7VAAJ+1gACft8AAn7gAAJ+4gACfyEAAn8jAAJ/JQACfycAAn8qAAJ/KwACfywAAn8tAAJ/LgACfzAAAn8yAAJ/MwACfzQAAn82AAJ/NwACf3YAAn94AAJ/ewACf30AAn+AAAJ/gQACf4IAAn+DAAJ/hAACf4YAAn+IAAJ/iQACf4oAAn+MAAJ/jQACf5YAAn+XAAJ/mQACf9gAAn/aAAJ/3AACf94AAn/hAAJ/4gACf+MAAn/kAAJ/5QACf+cAAn/pAAJ/6gACf+sAAn/tAAJ/7gACgC0AAoAvAAKAMgACgDQAAoA3AAKAOAACgDkAAoA6AAKAOwACgD0AAoA/AAKAQAACgEEAAoBDAAKARAACgFEAAoBSAAKAUwACgFUAAoCUAAKAlgACgJgAAoCaAAKAnQACgJ4AAoCfAAKAoAACgKEAAoCjAAKApQACgKYAAoCnAAKAqQACgKoAAoDpAAKA6wACgO0AAoDvAAKA8gACgPMAAoD0AAKA9QACgPYAAoD4AAKA+gACgPsAAoD8AAKA/gACgP8AAoEMAAKBFQACgRgAAoEbAAKBHQACgSAAAoEpAAKBLAACgS8AAoEyAAKBNQACgTcAAoE9AAKBTwACgVwAAoGnAAKBygACgeoAAoIKAAKCDAACgg4AAoIQAAKCEgACghUAAoIWAAKCFwACghoAAoIbAAKCHQACgh4AAoIgAAKCIwACgiQAAoIlAAKCKAACgikAAoIuAAKCOwACgkAAAoJCAAKCRAACgkkAAoJMAAKCTwACglEAAoJ2AAKCmgACgsEAAoLlAAKC6AACguoAAoLsAAKC7gACgvAAAoLyAAKC8wACgvYAAoMDAAKDFAACgxYAAoMYAAKDGgACgxwAAoMeAAKDIAACgyIAAoMkAAKDNQACgzgAAoM7AAKDPgACg0EAAoNEAAKDRwACg0oAAoNNAAKDTwACg44AAoOQAAKDkgACg5QAAoOXAAKDmAACg5kAAoOaAAKDmwACg50AAoOfAAKDoAACg6EAAoOjAAKDpAACg+MAAoPlAAKD5wACg+kAAoPsAAKD7QACg+4AAoPvAAKD8AACg/IAAoP0AAKD9QACg/YAAoP4AAKD+QAChDgAAoQ6AAKEPQAChD8AAoRCAAKEQwAChEQAAoRFAAKERgAChEgAAoRKAAKESwAChEwAAoROAAKETwAChFwAAoRdAAKEXgAChGAAAoSfAAKEoQAChKMAAoSlAAKEqAAChKkAAoSqAAKEqwAChKwAAoSuAAKEsAAChLEAAoSyAAKEtAAChLUAAoT0AAKE9gAChPgAAoT6AAKE/QAChP4AAoT/AAKFAAAChQEAAoUDAAKFBQAChQYAAoUHAAKFCQAChQoAAoVJAAKFSwAChU0AAoVPAAKFUgAChVMAAoVUAAKFVQAChVYAAoVYAAKFWgAChVsAAoVcAAKFXgAChV8AAoWeAAKFoAAChaIAAoWkAAKFpwAChagAAoWpAAKFqgAChasAAoWtAAKFrwAChbAAAoWxAAKFswAChbQAAoXzAAKF9QAChfcAAoX5AAKF/AAChf0AAoX+AAKF/wAChgAAAoYCAAKGBAAChgUAAoYGAAKGCAAChgkAAoYuAAKGUgAChnkAAoadAAKGoAAChqIAAoakAAKGpgAChqgAAoaqAAKGqwAChq4AAoa7AAKGygAChswAAobOAAKG0AAChtIAAobUAAKG1gAChtgAAobnAAKG6gAChu0AAobwAAKG8wAChvYAAob5AAKG/AAChv4AAoc9AAKHPwACh0EAAodDAAKHRgACh0cAAodIAAKHSQACh0oAAodMAAKHTgACh08AAodQAAKHUgACh1MAAoeSAAKHlAACh5YAAoeYAAKHmwACh5wAAoedAAKHngACh58AAoehAAKHowACh6QAAoelAAKHpwACh6gAAofnAAKH6QACh+sAAoftAAKH8AACh/EAAofyAAKH8wACh/QAAof2AAKH+AACh/kAAof6AAKH/AACh/0AAog8AAKIPgACiEAAAohCAAKIRQACiEYAAohHAAKISAACiEkAAohLAAKITQACiE4AAohPAAKIUQACiFIAAoiRAAKIkwACiJUAAoiXAAKImgACiJsAAoicAAKInQACiJ4AAoigAAKIogACiKMAAoikAAKIpgACiKcAAojmAAKI6AACiOoAAojsAAKI7wACiPAAAojxAAKI8gACiPMAAoj1AAKI9wACiPgAAoj5AAKI+wACiPwAAok7AAKJPQACiT8AAolBAAKJRAACiUUAAolGAAKJRwACiUgAAolKAAKJTAACiU0AAolOAAKJUAACiVEAAomcAAKJvwACid8AAon/AAKKAQACigMAAooFAAKKBwACigoAAooLAAKKDAACig8AAooQAAKKEgACihMAAooVAAKKGAACihkAAooaAAKKHQACih4AAoojAAKKMAACijUAAoo3AAKKOQACij4AAopBAAKKRAACikYAAoprAAKKjwACirYAAoraAAKK3QACit8AAorhAAKK4wACiuUAAornAAKK6AACiusAAor4AAKLCQACiwsAAosNAAKLDwACixEAAosTAAKLFQACixcAAosZAAKLKgACiy0AAoswAAKLMwACizYAAos5AAKLPAACiz8AAotCAAKLRAACi4MAAouFAAKLhwACi4kAAouMAAKLjQACi44AAouPAAKLkAACi5IAAouUAAKLlQACi5YAAouYAAKLmQACi9gAAovaAAKL3AACi94AAovhAAKL4gACi+MAAovkAAKL5QACi+cAAovpAAKL6gACi+sAAovtAAKL7gACjC0AAowvAAKMMgACjDQAAow3AAKMOAACjDkAAow6AAKMOwACjD0AAow/AAKMQAACjEEAAoxDAAKMRAACjFEAAoxSAAKMUwACjFUAAoyUAAKMlgACjJgAAoyaAAKMnQACjJ4AAoyfAAKMoAACjKEAAoyjAAKMpQACjKYAAoynAAKMqQACjKoAAozpAAKM6wACjO0AAozvAAKM8gACjPMAAoz0AAKM9QACjPYAAoz4AAKM+gACjPsAAoz8AAKM/gACjP8AAo0+AAKNQAACjUIAAo1EAAKNRwACjUgAAo1JAAKNSgACjUsAAo1NAAKNTwACjVAAAo1RAAKNUwACjVQAAo2TAAKNlQACjZcAAo2ZAAKNnAACjZ0AAo2eAAKNnwACjaAAAo2iAAKNpAACjaUAAo2mAAKNqAACjakAAo3oAAKN6gACjewAAo3uAAKN8QACjfIAAo3zAAKN9AACjfUAAo33AAKN+QACjfoAAo37AAKN/QACjf4AAo4jAAKORwACjm4AAo6SAAKOlQACjpcAAo6ZAAKOmwACjp0AAo6fAAKOoAACjqMAAo6wAAKOvwACjsEAAo7DAAKOxQACjscAAo7JAAKOywACjs0AAo7cAAKO3wACjuIAAo7lAAKO6AACjusAAo7uAAKO8QACjvMAAo8yAAKPNAACjzYAAo84AAKPOwACjzwAAo89AAKPPgACjz8AAo9BAAKPQwACj0QAAo9FAAKPRwACj0gAAo+HAAKPiQACj4sAAo+NAAKPkAACj5EAAo+SAAKPkwACj5QAAo+WAAKPmAACj5kAAo+aAAKPnAACj50AAo/cAAKP3gACj+AAAo/iAAKP5QACj+YAAo/nAAKP6AACj+kAAo/rAAKP7QACj+4AAo/vAAKP8QACj/IAApAxAAKQMwACkDYAApA4AAKQOwACkDwAApA9AAKQPgACkD8AApBBAAKQQwACkEQAApBFAAKQRwACkEgAApCHAAKQiQACkIsAApCNAAKQkAACkJEAApCSAAKQkwACkJQAApCWAAKQmAACkJkAApCaAAKQnAACkJ0AApDcAAKQ3gACkOAAApDiAAKQ5QACkOYAApDnAAKQ6AACkOkAApDrAAKQ7QACkO4AApDvAAKQ8QACkPIAApExAAKRMwACkTUAApE3AAKROgACkTsAApE8AAKRPQACkT4AApFAAAKRQgACkUMAApFEAAKRRgACkUcAApGSAAKRtQACkdUAApH1AAKR9wACkfkAApH7AAKR/QACkgAAApIBAAKSAgACkgUAApIGAAKSCAACkgkAApILAAKSDQACkg4AApIPAAKSEgACkhMAApIYAAKSJQACkioAApIsAAKSLgACkjMAApI2AAKSOQACkjsAApJgAAKShAACkqsAApLPAAKS0gACktQAApLWAAKS2AACktoAApLcAAKS3QACkuAAApLtAAKS/gACkwAAApMCAAKTBAACkwYAApMIAAKTCgACkwwAApMOAAKTHwACkyIAApMlAAKTKAACkysAApMuAAKTMQACkzQAApM3AAKTOQACk3gAApN6AAKTfAACk34AApOBAAKTggACk4MAApOEAAKThQACk4cAApOJAAKTigACk4sAApONAAKTjgACk80AApPPAAKT0QACk9MAApPWAAKT1wACk9gAApPZAAKT2gACk9wAApPeAAKT3wACk+AAApPiAAKT4wAClCIAApQkAAKUJwAClCkAApQsAAKULQAClC4AApQvAAKUMAAClDIAApQ0AAKUNQAClDYAApQ4AAKUOQAClEYAApRHAAKUSAAClEoAApSJAAKUiwAClI0AApSPAAKUkgAClJMAApSUAAKUlQAClJYAApSYAAKUmgAClJsAApScAAKUngAClJ8AApTeAAKU4AAClOIAApTkAAKU5wAClOgAApTpAAKU6gAClOsAApTtAAKU7wAClPAAApTxAAKU8wAClPQAApUzAAKVNQAClTcAApU5AAKVPAAClT0AApU+AAKVPwAClUAAApVCAAKVRAAClUUAApVGAAKVSAAClUkAApWIAAKVigAClYwAApWOAAKVkQAClZIAApWTAAKVlAAClZUAApWXAAKVmQAClZoAApWbAAKVnQAClZ4AApXdAAKV3wACleEAApXjAAKV5gAClecAApXoAAKV6QACleoAApXsAAKV7gACle8AApXwAAKV8gAClfMAApYYAAKWPAAClmMAApaHAAKWigAClowAApaOAAKWkAAClpIAApaUAAKWlQAClpgAApalAAKWtAAClrYAApa4AAKWugAClrwAApa+AAKWwAAClsIAApbRAAKW1AACltcAApbaAAKW3QACluAAApbjAAKW5gAClugAApcnAAKXKQAClysAApctAAKXMAAClzEAApcyAAKXMwAClzQAApc2AAKXOAAClzkAApc6AAKXPAAClz0AApd8AAKXfgACl4AAApeCAAKXhQACl4YAApeHAAKXiAACl4kAApeLAAKXjQACl44AApePAAKXkQACl5IAApfRAAKX0wACl9UAApfXAAKX2gACl9sAApfcAAKX3QACl94AApfgAAKX4gACl+MAApfkAAKX5gACl+cAApgmAAKYKAACmCoAApgsAAKYLwACmDAAApgxAAKYMgACmDMAApg1AAKYNwACmDgAApg5AAKYOwACmDwAAph7AAKYfQACmH8AApiBAAKYhAACmIUAApiGAAKYhwACmIgAApiKAAKYjAACmI0AApiOAAKYkAACmJEAApjQAAKY0gACmNQAApjWAAKY2QACmNoAApjbAAKY3AACmN0AApjfAAKY4QACmOIAApjjAAKY5QACmOYAApklAAKZJwACmSkAApkrAAKZLgACmS8AApkwAAKZMQACmTIAApk0AAKZNgACmTcAApk4AAKZOgACmTsAApmGAAKZqQACmckAApnpAAKZ6wACme0AApnvAAKZ8QACmfQAApn1AAKZ9gACmfkAApn6AAKZ/AACmf0AApn/AAKaAgACmgMAApoEAAKaBwACmggAApoNAAKaGgACmh8AApohAAKaIwACmigAAporAAKaLgACmjAAAppVAAKaeQACmqAAAprEAAKaxwACmskAAprLAAKazQACms8AAprRAAKa0gACmtUAApriAAKa8wACmvUAApr3AAKa+QACmvsAApr9AAKa/wACmwEAApsDAAKbFAACmxcAApsaAAKbHQACmyAAApsjAAKbJgACmykAApssAAKbLgACm20AAptvAAKbcQACm3MAApt2AAKbdwACm3gAApt5AAKbegACm3wAApt+AAKbfwACm4AAApuCAAKbgwACm8IAApvEAAKbxgACm8gAApvLAAKbzAACm80AApvOAAKbzwACm9EAApvTAAKb1AACm9UAApvXAAKb2AACnBcAApwZAAKcHAACnB4AApwhAAKcIgACnCMAApwkAAKcJQACnCcAApwpAAKcKgACnCsAApwtAAKcLgACnDsAApw8AAKcPQACnD8AApx+AAKcgAACnIIAApyEAAKchwACnIgAApyJAAKcigACnIsAApyNAAKcjwACnJAAApyRAAKckwACnJQAApzTAAKc1QACnNcAApzZAAKc3AACnN0AApzeAAKc3wACnOAAApziAAKc5AACnOUAApzmAAKc6AACnOkAAp0oAAKdKgACnSwAAp0uAAKdMQACnTIAAp0zAAKdNAACnTUAAp03AAKdOQACnToAAp07AAKdPQACnT4AAp19AAKdfwACnYEAAp2DAAKdhgACnYcAAp2IAAKdiQACnYoAAp2MAAKdjgACnY8AAp2QAAKdkgACnZMAAp3SAAKd1AACndYAAp3YAAKd2wACndwAAp3dAAKd3gACnd8AAp3hAAKd4wACneQAAp3lAAKd5wACnegAAp4NAAKeMQACnlgAAp58AAKefwACnoEAAp6DAAKehQACnocAAp6JAAKeigACno0AAp6aAAKeqQACnqsAAp6tAAKerwACnrEAAp6zAAKetQACnrcAAp7GAAKeyQACnswAAp7PAAKe0gACntUAAp7YAAKe2wACnt0AAp8cAAKfHgACnyAAAp8iAAKfJQACnyYAAp8nAAKfKAACnykAAp8rAAKfLQACny4AAp8vAAKfMQACnzIAAp9xAAKfcwACn3UAAp93AAKfegACn3sAAp98AAKffQACn34AAp+AAAKfggACn4MAAp+EAAKfhgACn4cAAp/GAAKfyAACn8oAAp/MAAKfzwACn9AAAp/RAAKf0gACn9MAAp/VAAKf1wACn9gAAp/ZAAKf2wACn9wAAqAbAAKgHQACoCAAAqAiAAKgJQACoCYAAqAnAAKgKAACoCkAAqArAAKgLQACoC4AAqAvAAKgMQACoDIAAqBxAAKgcwACoHUAAqB3AAKgegACoHsAAqB8AAKgfQACoH4AAqCAAAKgggACoIMAAqCEAAKghgACoIcAAqDGAAKgyAACoMoAAqDMAAKgzwACoNAAAqDRAAKg0gACoNMAAqDVAAKg1wACoNgAAqDZAAKg2wACoNwAAqEbAAKhHQACoR8AAqEhAAKhJAACoSUAAqEmAAKhJwACoSgAAqEqAAKhLAACoS0AAqEuAAKhMAACoTEAAqE6AAKhOwACoT0AAqGAAAKhpAACocgAAqHrAAKiEgACojIAAqJZAAKigAACoqAAAqLEAAKi6AACouoAAqLtAAKi7wACovEAAqLzAAKi9gACovkAAqL7AAKi/QACowAAAqMCAAKjBAACowcAAqMKAAKjCwACoxAAAqMdAAKjIAACoyIAAqMlAAKjKAACoyoAAqNPAAKjcwACo5oAAqO+AAKjwQACo8MAAqPFAAKjxwACo8kAAqPLAAKjzAACo88AAqPcAAKj7wACo/EAAqPzAAKj9QACo/cAAqP5AAKj+wACo/0AAqP/AAKkAQACpBQAAqQXAAKkGgACpB0AAqQgAAKkIwACpCYAAqQpAAKkLAACpC8AAqQxAAKkcAACpHIAAqR1AAKkdwACpHoAAqR7AAKkfAACpH0AAqR+AAKkgAACpIIAAqSDAAKkhAACpIYAAqSHAAKkkAACpJEAAqSTAAKk0gACpNQAAqTWAAKk2AACpNsAAqTcAAKk3QACpN4AAqTfAAKk4QACpOMAAqTkAAKk5QACpOcAAqToAAKlJwACpSkAAqUsAAKlLgACpTEAAqUyAAKlMwACpTQAAqU1AAKlNwACpTkAAqU6AAKlOwACpT0AAqU+AAKlRwACpUgAAqVKAAKliQACpYsAAqWNAAKljwACpZIAAqWTAAKllAACpZUAAqWWAAKlmAACpZoAAqWbAAKlnAACpZ4AAqWfAAKl3gACpeAAAqXjAAKl5QACpegAAqXpAAKl6gACpesAAqXsAAKl7gACpfAAAqXxAAKl8gACpfQAAqX1AAKl/gACpf8AAqYBAAKmQAACpkIAAqZEAAKmRgACpkkAAqZKAAKmSwACpkwAAqZNAAKmTwACplEAAqZSAAKmUwACplUAAqZWAAKmlQACppcAAqaaAAKmnAACpp8AAqagAAKmoQACpqIAAqajAAKmpQACpqcAAqaoAAKmqQACpqsAAqasAAKmuQACproAAqa7AAKmvQACpvwAAqb+AAKnAAACpwIAAqcFAAKnBgACpwcAAqcIAAKnCQACpwsAAqcNAAKnDgACpw8AAqcRAAKnEgACp1EAAqdTAAKnVgACp1gAAqdbAAKnXAACp10AAqdeAAKnXwACp2EAAqdjAAKnZAACp2UAAqdnAAKnaAACp3cAAqeEAAKniQACp4wAAqePAAKnlAACp5cAAqeaAAKnnAACp6EAAqfsAAKoDwACqC8AAqhPAAKoUQACqFMAAqhVAAKoVwACqFoAAqhbAAKoXAACqF8AAqhgAAKoYgACqGMAAqhlAAKoaAACqGkAAqhqAAKobQACqG4AAqhzAAKogAACqIUAAqiHAAKoiQACqI4AAqiRAAKolAACqJYAAqi7AAKo3wACqQYAAqkqAAKpLQACqS8AAqkxAAKpMwACqTUAAqk3AAKpOAACqTsAAqlIAAKpWQACqVsAAqldAAKpXwACqWEAAqljAAKpZQACqWcAAqlpAAKpegACqX0AAqmAAAKpgwACqYYAAqmJAAKpjAACqY8AAqmSAAKplAACqdMAAqnVAAKp1wACqdkAAqncAAKp3QACqd4AAqnfAAKp4AACqeIAAqnkAAKp5QACqeYAAqnoAAKp6QACqigAAqoqAAKqLAACqi4AAqoxAAKqMgACqjMAAqo0AAKqNQACqjcAAqo5AAKqOgACqjsAAqo9AAKqPgACqn0AAqp/AAKqggACqoQAAqqHAAKqiAACqokAAqqKAAKqiwACqo0AAqqPAAKqkAACqpEAAqqTAAKqlAACqqEAAqqiAAKqowACqqUAAqrkAAKq5gACqugAAqrqAAKq7QACqu4AAqrvAAKq8AACqvEAAqrzAAKq9QACqvYAAqr3AAKq+QACqvoAAqs5AAKrOwACqz0AAqs/AAKrQgACq0MAAqtEAAKrRQACq0YAAqtIAAKrSgACq0sAAqtMAAKrTgACq08AAquOAAKrkAACq5IAAquUAAKrlwACq5gAAquZAAKrmgACq5sAAqudAAKrnwACq6AAAquhAAKrowACq6QAAqvjAAKr5QACq+cAAqvpAAKr7AACq+0AAqvuAAKr7wACq/AAAqvyAAKr9AACq/UAAqv2AAKr+AACq/kAAqw4AAKsOgACrDwAAqw+AAKsQQACrEIAAqxDAAKsRAACrEUAAqxHAAKsSQACrEoAAqxLAAKsTQACrE4AAqxzAAKslwACrL4AAqziAAKs5QACrOcAAqzpAAKs6wACrO0AAqzvAAKs8AACrPMAAq0AAAKtDwACrREAAq0TAAKtFQACrRcAAq0ZAAKtGwACrR0AAq0sAAKtLwACrTIAAq01AAKtOAACrTsAAq0+AAKtQQACrUMAAq2CAAKthAACrYYAAq2IAAKtiwACrYwAAq2NAAKtjgACrY8AAq2RAAKtkwACrZQAAq2VAAKtlwACrZgAAq3XAAKt2QACrdsAAq3dAAKt4AACreEAAq3iAAKt4wACreQAAq3mAAKt6AACrekAAq3qAAKt7AACre0AAq4sAAKuLgACrjAAAq4yAAKuNQACrjYAAq43AAKuOAACrjkAAq47AAKuPQACrj4AAq4/AAKuQQACrkIAAq6BAAKugwACroYAAq6IAAKuiwACrowAAq6NAAKujgACro8AAq6RAAKukwACrpQAAq6VAAKulwACrpgAAq7XAAKu2QACrtsAAq7dAAKu4AACruEAAq7iAAKu4wACruQAAq7mAAKu6AACrukAAq7qAAKu7AACru0AAq8sAAKvLgACrzAAAq8yAAKvNQACrzYAAq83AAKvOAACrzkAAq87AAKvPQACrz4AAq8/AAKvQQACr0IAAq+BAAKvgwACr4UAAq+HAAKvigACr4sAAq+MAAKvjQACr44AAq+QAAKvkgACr5MAAq+UAAKvlgACr5cAAq/iAAKwBQACsCUAArBFAAKwRwACsEkAArBLAAKwTQACsFAAArBRAAKwUgACsFUAArBWAAKwWAACsFkAArBbAAKwXgACsF8AArBgAAKwYwACsGQAArBpAAKwdgACsHsAArB9AAKwfwACsIQAArCHAAKwigACsIwAArCxAAKw1QACsPwAArEgAAKxIwACsSUAArEnAAKxKQACsSsAArEtAAKxLgACsTEAArE+AAKxTwACsVEAArFTAAKxVQACsVcAArFZAAKxWwACsV0AArFfAAKxcAACsXMAArF2AAKxeQACsXwAArF/AAKxggACsYUAArGIAAKxigACsckAArHLAAKxzQACsc8AArHSAAKx0wACsdQAArHVAAKx1gACsdgAArHaAAKx2wACsdwAArHeAAKx3wACsh4AArIgAAKyIgACsiQAArInAAKyKAACsikAArIqAAKyKwACsi0AArIvAAKyMAACsjEAArIzAAKyNAACsnMAArJ1AAKyeAACsnoAArJ9AAKyfgACsn8AArKAAAKygQACsoMAArKFAAKyhgACsocAArKJAAKyigACspcAArKYAAKymQACspsAArLaAAKy3AACst4AArLgAAKy4wACsuQAArLlAAKy5gACsucAArLpAAKy6wACsuwAArLtAAKy7wACsvAAArMvAAKzMQACszMAArM1AAKzOAACszkAArM6AAKzOwACszwAArM+AAKzQAACs0EAArNCAAKzRAACs0UAArOEAAKzhgACs4gAArOKAAKzjQACs44AArOPAAKzkAACs5EAArOTAAKzlQACs5YAArOXAAKzmQACs5oAArPZAAKz2wACs90AArPfAAKz4gACs+MAArPkAAKz5QACs+YAArPoAAKz6gACs+sAArPsAAKz7gACs+8AArQuAAK0MAACtDIAArQ0AAK0NwACtDgAArQ5AAK0OgACtDsAArQ9AAK0PwACtEAAArRBAAK0QwACtEQAArRpAAK0jQACtLQAArTYAAK02wACtN0AArTfAAK04QACtOMAArTlAAK05gACtOkAArT2AAK1BQACtQcAArUJAAK1CwACtQ0AArUPAAK1EQACtRMAArUiAAK1JQACtSgAArUrAAK1LgACtTEAArU0AAK1NwACtTkAArV4AAK1egACtX0AArV/AAK1ggACtYMAArWEAAK1hQACtYYAArWIAAK1igACtYsAArWMAAK1jgACtY8AArXOAAK10AACtdIAArXUAAK11wACtdgAArXZAAK12gACtdsAArXdAAK13wACteAAArXhAAK14wACteQAArYjAAK2JQACticAArYpAAK2LAACti0AArYuAAK2LwACtjAAArYyAAK2NAACtjUAArY2AAK2OAACtjkAArZ4AAK2egACtn0AArZ/AAK2ggACtoMAAraEAAK2hQACtoYAAraIAAK2igACtosAAraMAAK2jgACto8AArbOAAK20AACttIAArbUAAK21wACttgAArbZAAK22gACttsAArbdAAK23wACtuAAArbhAAK24wACtuQAArcjAAK3JQACtycAArcpAAK3LAACty0AArcuAAK3LwACtzAAArcyAAK3NAACtzUAArc2AAK3OAACtzkAArd4AAK3egACt3wAArd+AAK3gQACt4IAAreDAAK3hAACt4UAAreHAAK3iQACt4oAAreLAAK3jQACt44AAreXAAK3mAACt5oAArenAAK3qAACt6kAArerAAK3uAACt7kAAre6AAK3vAACt8kAArfKAAK3ywACt80AArfWAAK35QACt/IAArgBAAK4EwACuCcAArg+AAK4UAACuFkAArhaAAK4XAACuGkAArhqAAK4awACuG0AArhuAAK4dwACuIEAAriIAAAAAAAABAIAAAAAAABowQAAAAAAAAAAAAAAAAACuJA= + + - - title - + + 1 + lastPlayed + - speed - + hasSubscription + - - duration - + + 1 + lastPlayedItem + - - isFinished - + + 1 + hardcoverBook + - lightSystemBackgroundHex - + email + - - 1 - lastPlayedItem - + + donationMade + 1 items - + - - type - + + 1 + libraryItem + - darkTertiarySystemBackgroundHex - + lastPlayDate + - - 1 - library - + + isFinished + - - 1 - extractedThemes - + + artworkURL + currentTime - + - darkSecondarySystemBackgroundHex - + userBookID + title - + - currentTime - + id + - - 1 - currentTheme - + + artworkURL + - - darkAccentHex - + + 1 + item + - lightSystemGroupedBackgroundHex - + time + - artworkURL - + title + - lightSecondaryHex - + lightTertiarySystemBackgroundHex + - darkSecondarySystemFillHex - + lightSystemFillHex + - - 1 - folder - + + lightSeparatorHex + - start - + lightSecondarySystemFillHex + - - 1 - hardcoverBook - + + uuid + - - Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 10.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 -cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIAgALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78D1APVA90D3gPqA/4EDQQcBCsELwQ+BE0EXARrBHoEhgSYBJkEmgSbBJwEnQSeBJ8ErgSvBL4EzQTcBN0E7AT7BQoFEgUnBSgFMAU8BVAFXwVuBX0FgQWQBZ8FrgW9BcwF2AXqBfkGCAYXBiYGNQZEBlMGWwZwBnEGeQaFBpkGqAa3BsYGygbZBugG9wcGBxUHIQczB0IHUQdgB28HiQeKB5AHnAeyB8EHxAfTB+IH5Qf0CAMIBggVCCQIKAg3CEYIUghTCFQIVQhqCGsIcwh/CJMIogixCMAIxAjTCOII8QkACQ8JGwktCTwJSwlaCWkJeAmHCZYJqwmsCbQJwAnUCeMJ8goBCgUKFAojCjIKQQpQClwKbgp9CowKmwqqCrkKyArXCuwK7Qr1CwELFQskCzMLQgtGC1ULZAtzC4ILkQudC68LvgvNC9wL6wv6DAkMGAwtDC4MNgxCDFYMZQx0DIMMhwyWDKUMtAzDDNIM3gzwDP8NDg0dDSwNRg1HDU0NWQ1vDX4NgQ2QDZENoA2jDbINwQ3EDdMN4g3mDfUOBA4+Dj8OQA5BDkIOQw5EDkUORg5HDkgOSQ5KDksOTA5NDk4OTw5QDlEOUg5TDlQOVQ5WDlcObA5tDnUOgQ6VDqQOsw7CDsYO1Q7kDvMPAg8DDxIPHg8wDz8PTg9dD2wPbQ98D4sPmg+vD7APuA/ED9gP5w/2EAUQCRAYECcQNhBFEFQQYBByEIEQkBCfEK4QvRDMENsQ8BDxEPkRBREZESgRNxFGEUoRWRFo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WJxYqFi8WMtY2ljpWO1Y/FkLWRpZKVk4WURZVlllWXRZg1mSWaFZsFm/WdRZ1VndWelZ/VoMWhtaKlouWj1aTFpbWmpaeVqFWpdaplq1WsRa01riWvFbAFsVWxZbHlsqWz5bTVtcW2tbb1t+W41bnFurW7pbxlvYW+db9lwFXBRcI1wyXEFcRFxTXGJccVx1XHZcfFyDXIRck1yiXLFctVzPXNBc1lziXPhdB10KXRldKF0rXTpdSV1MXVtdal1uXX1djF2YXZldml2bXbBdsV25XcVd2V3oXfdeBl4KXhleKF43XkZeVV5hXnNegl6RXqBer16+Xs1e3F7xXvJe+l8GXxpfKV84X0dfS19aX2lfeF+HX5Zfol+0X8Nf0l/hX/Bf/2AOYB1gMmAzYDtgR2BbYGpgeWCIYIxgm2CqYLlgyGDXYONg9WEEYRNhImExYUBhT2FeYXNhdGF8YYhhnGGrYbphyWHNYdxh62H6YgliGGIkYjZiRWJUYmNicmKBYpBin2KiYrxivWLDYs9i5WL0YvdjBmMVYxhjJ2M2YzljSGNXY1tjamN5Y3pjgmODY5hjmWOhY61jwWPQY99j7mPyZAFkEGQfZC5kPWRJZFtkamR5ZIhkl2SmZLVkxGTZZNpk4mTuZQJlEWUgZS9lM2VCZVFlYGVvZX5limWcZatlumXJZdhl52X2ZgVmCGYMZhBmFGYcZh9mI2YkVSRudWxs1gANAA4ADwAQABEAEgATABQAFQAWABcAGF8QD194ZF9yb290UGFja2FnZVYkY2xhc3NdX3hkX21vZGVsTmFtZVxfeGRfY29tbWVudHNfEBVfY29uZmlndXJhdGlvbnNCeU5hbWVfEBdfbW9kZWxWZXJzaW9uSWRlbnRpZmllcoACgQgBgACBB/6BB/+BCADeABoAGwAcAB0AHgAfACAADgAhACIAIwAkACUAJgAnACgAKQAJACcAFQAtAC4ALwAwADEAJwAnABVfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASBB/yBB/qAAYAEgACBB/uBB/0QAIAFgAOABIAEgABQU1lFU9MAOAA5AA4AOgBFAFBXTlMua2V5c1pOUy5vYmplY3RzqgA7ADwAPQA+AD8AQABBAEIAQwBEgAaAB4AIgAmACoALgAyADYAOgA+qAEYARwBIAEkASgBLAEwATQBOAE+AEIEFNoEGhYEGDIEGrYBhgQdDgQe2gNaBAUWAL1ZGb2xkZXJdSGFyZGNvdmVyQm9va1RCb29rWEJvb2ttYXJrV0NoYXB0ZXJbTGlicmFyeUl0ZW1XQWNjb3VudF5QbGF5YmFja1JlY29yZFdMaWJyYXJ5VVRoZW1l3xAQAFwAXQBeAF8AHwBgAGEAIQBiAGMADgAjAGQAZQAmAGYAZwBoACcAJwATAGwAbQAvACcAZwBwADsAZwBzAHQAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZVtfaXNBYnN0cmFjdIASgDaABIAEgAKAE4ED/4AEgBKBBAGABoASgQdCgBEIEjkWQghXb3JkZXJlZNMAOAA5AA4AeQB7AFChAHqAFKEAfIAVgC9eWERfUFN0ZXJlb3R5cGXZAB8AIwCAAA4AJgCBACEAZgCCAEYAegBnAIYAFQAnAC8AdQCKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgBCAFIASgDWAAIAECIAW0wA4ADkADgCMAJYAUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pAJcAmACZAJoAmwCcAJ0AngCfgCCAJIAmgCiAKYArgC2AMIA0gC9fEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGVhEUE1VbmlxdWVuZXNzQ29uc3RyYWludHNfEBpYRF9QU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QGVhEX1BTS19mZXRjaFJlcXVlc3RzQXJyYXlfEBFYRF9QU0tfaXNBYnN0cmFjdF8QD1hEX1BTS191c2VySW5mb18QE1hEX1BTS19jbGFzc01hcHBpbmdfEBZYRF9QU0tfZW50aXR5Q2xhc3NOYW1l3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAtgAVAHwAdQB1AHUALwB1AL0AjQB1AHUAFQB1VV90eXBlWF9kZWZhdWx0XF9hc3NvY2lhdGlvbltfaXNSZWFkT25seVlfaXNTdGF0aWNZX2lzVW5pcXVlWl9pc0Rlcml2ZWRaX2lzT3JkZXJlZFxfaXNDb21wb3NpdGVXX2lzTGVhZoAAgCGAAIAVCAgICIAjgBcICIAACNIAOQAOAMQAxaCAItIAxwDIAMkAylokY2xhc3NuYW1lWCRjbGFzc2VzXk5TTXV0YWJsZUFycmF5owDJAMsAzFdOU0FycmF5WE5TT2JqZWN00gDHAMgAzgDPXxAQWERVTUxQcm9wZXJ0eUltcKQA0ADRANIAzF8QEFhEVU1MUHJvcGVydHlJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVANUAFQB8AHUAdQB1AC8AdQC9AI4AdQB1ABUAdYAAgCWAAIAVCAgICIAjgBgICIAACFpQbGF5bGlzdFYz3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUA5QAVAHwAdQB1AHUALwB1AL0AjwB1AHUAFQB1gACAJ4AAgBUICAgIgCOAGQgIgAAI0gA5AA4A8wDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVAHwAdQB1AHUALwB1AL0AkAB1AHUAFQB1gACAAIAAgBUICAgIgCOAGggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBBgAVAHwAdQB1AHUALwB1AL0AkQB1AHUAFQB1gACAKoAAgBUICAgIgCOAGwgIgAAI0gA5AA4BFADFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVAHwAdQB1AHUALwB1AL0AkgB1AHUAFQB1gACALIAAgBUICAgIgCOAHAgIgAAICN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVASgAFQB8AHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgC6AAIAVCAgICIAjgB0ICIAACNMAOAA5AA4BNgE3AFCgoIAv0gDHAMgBOgE7XxATTlNNdXRhYmxlRGljdGlvbmFyeaMBOgE8AMxcTlNEaWN0aW9uYXJ53xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBPwAVAHwAdQB1AHUALwB1AL0AlAB1AHUAFQB1gACAMYAAgBUICAgIgCOAHggIgAAI1gAjAA4AJgBmAB8AIQFNAU4AFQB1ABUAL4AygDOAAAiAAF8QFFhER2VuZXJpY1JlY29yZENsYXNz0gDHAMgBVAFVXVhEVU1MQ2xhc3NJbXCmAVYBVwFYAVkBWgDMXVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAOwAVAHwAdQB1AHUALwB1AL0AlQB1AHUAFQB1gACABoAAgBUICAgIgCOAHwgIgAAI0gDHAMgBawFsXxASWERVTUxTdGVyZW90eXBlSW1wpwFtAW4BbwFwAXEBcgDMXxASWERVTUxTdGVyZW90eXBlSW1wXVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w0wA4ADkADgF0AXYAUKEBdYA3oQF3gDiAL1VpdGVtc98QEgCrAKwArQF7AB8ArwCwAXwAIQCuAX0AsQAOACMAsgCzACYAtAAVABUAFQAnAEYAdQB1AYUALwB1AGcAdQGJAXUAdQB1AY0AdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgBAICIA6CIASCIDBgDcICIA5CBJvKqLA0wA4ADkADgGRAZQAUKIBkgGTgDuAPKIBlQGWgD2AUoAvXxASWERfUFByb3BTdGVyZW90eXBlXxAQWERfUFJfU3RlcmVvdHlwZdkAHwAjAZsADgAmAZwAIQBmAZ0BdwGSAGcAhgAVACcALwB1AaVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAOIA7gBKANYAAgAQIgD7TADgAOQAOAacBsABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqAGxAbIBswG0AbUBtgG3AbiAR4BIgEmAS4BMgE6AT4BRgC9fEBtYRF9QUFNLX2lzU3RvcmVkSW5UcnV0aEZpbGVfEBtYRF9QUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBBYRF9QUFNLX3VzZXJJbmZvXxARWERfUFBTS19pc0luZGV4ZWRfEBJYRF9QUFNLX2lzT3B0aW9uYWxfEBpYRF9QUFNLX2lzU3BvdGxpZ2h0SW5kZXhlZF8QEVhEX1BQU0tf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AEsAL1lfc3BlY2lmaWNYX2dlbmVyYWyBBzyAAIEGhYEGhYEHO4Bh3xAQUyNTJFMlUyYAH1MnUygAIVMpUyoADgAjUytTLAAmAGYAZ1MuACcAJwATUzIAbQAvACcAZwBwAD0AZ1M5UzoAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgQaXgASABIACgQaHgQP/gASAEoEEAYAIgBKBBzqBBoYIErLnBaTTADgAOQAOUz5TQABQoQB6gBShU0GBBoiAL9kAHwAjU0QADgAmU0UAIQBmU0YASAB6AGcAhgAVACcALwB1U05fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBoWAFIASgDWAAIAECIEGidMAOAA5AA5TUFNaAFCpAI0AjgCPAJAAkQCSAJMAlACVgBeAGIAZgBqAG4AcgB2AHoAfqVNbU1xTXVNeU19TYFNhU2JTY4EGioEGjIEGjYEGj4EGkIEGkoEGk4EGlYEGloAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVTZwAVU0EAdQB1AHUALwB1AL0AjQB1AHUAFQB1gACBBouAAIEGiAgICAiAI4AXCAiAAAjSADkADlN1AMWggCLfEA8AqwCs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AAAqzwAAKtEAACrSAAAq0wAAKtQAACrVAAAq1wAAKtkAACraAAAq2wAAKt0AACreAAAq5wAAKugAACrqAAArKQAAKysAACstAAArLwAAKzEAACsyAAArMwAAKzQAACs1AAArNwAAKzkAACs6AAArOwAAKz0AACs+AAArfQAAK38AACuBAAArgwAAK4UAACuGAAArhwAAK4gAACuJAAAriwAAK40AACuOAAArjwAAK5EAACuSAAArnwAAK6AAACuhAAArowAAK+IAACvkAAAr5gAAK+gAACvqAAAr6wAAK+wAACvtAAAr7gAAK/AAACvyAAAr8wAAK/QAACv2AAAr9wAALDYAACw4AAAsOgAALDwAACw+AAAsPwAALEAAACxBAAAsQgAALEQAACxGAAAsRwAALEgAACxKAAAsSwAALFcAACxkAAAsjQAALI8AACyRAAAskwAALJUAACyXAAAsmQAALJsAACydAAAsnwAALKEAACyjAAAspQAALKcAACypAAAsqwAALK0AACyvAAAssQAALLMAACzcAAAs3gAALOAAACziAAAs5QAALOgAACzrAAAs7gAALPEAACz0AAAs9wAALPoAACz9AAAtAAAALQMAAC0GAAAtCQAALQwAAC0PAAAtEgAALRQAAC0aAAAtIQAALSkAAC0zAAAtPQAALUgAAC1TAAAtWwAALW4AAC2BAAAtjgAALZoAAC2nAAAtrQAALbIAAC3AAAAtyQAALdQAAC3eAAAuKQAALkwAAC5sAAAujAAALo4AAC6QAAAukgAALpQAAC6WAAAulwAALpgAAC6aAAAumwAALp0AAC6eAAAuoAAALqIAAC6jAAAupAAALqYAAC6nAAAurAAALrkAAC6+AAAuwAAALsIAAC7HAAAuyQAALssAAC7NAAAu4gAALwcAAC8rAAAvUgAAL3YAAC94AAAvegAAL3wAAC9+AAAvgAAAL4IAAC+DAAAvhQAAL5IAAC+jAAAvpQAAL6cAAC+pAAAvqwAAL60AAC+vAAAvsQAAL7MAAC/EAAAvxgAAL8gAAC/KAAAvzAAAL84AAC/QAAAv0gAAL9QAAC/WAAAwFQAAMBcAADAZAAAwGwAAMB0AADAeAAAwHwAAMCAAADAhAAAwIwAAMCUAADAmAAAwJwAAMCkAADAqAAAwaQAAMGsAADBtAAAwbwAAMHEAADByAAAwcwAAMHQAADB1AAAwdwAAMHkAADB6AAAwewAAMH0AADB+AAAwvQAAML8AADDBAAAwwwAAMMUAADDGAAAwxwAAMMgAADDJAAAwywAAMM0AADDOAAAwzwAAMNEAADDSAAAw3wAAMOAAADDhAAAw4wAAMSIAADEkAAAxJgAAMSgAADEqAAAxKwAAMSwAADEtAAAxLgAAMTAAADEyAAAxMwAAMTQAADE2AAAxNwAAMXYAADF4AAAxegAAMXwAADF+AAAxfwAAMYAAADGBAAAxggAAMYQAADGGAAAxhwAAMYgAADGKAAAxiwAAMcoAADHMAAAxzgAAMdAAADHSAAAx0wAAMdQAADHVAAAx1gAAMdgAADHaAAAx2wAAMdwAADHeAAAx3wAAMh4AADIgAAAyIgAAMiQAADImAAAyJwAAMigAADIpAAAyKgAAMiwAADIuAAAyLwAAMjAAADIyAAAyMwAAMnIAADJ0AAAydgAAMngAADJ6AAAyewAAMnwAADJ9AAAyfgAAMoAAADKCAAAygwAAMoQAADKGAAAyhwAAMqwAADLQAAAy9wAAMxsAADMdAAAzHwAAMyEAADMjAAAzJQAAMycAADMoAAAzKgAAMzcAADNGAAAzSAAAM0oAADNMAAAzTgAAM1AAADNSAAAzVAAAM2MAADNlAAAzZwAAM2kAADNrAAAzbQAAM28AADNxAAAzcwAAM5MAADO+AAAz2AAAM/EAADQLAAA0KwAANE4AADSNAAA0jwAANJEAADSTAAA0lQAANJYAADSXAAA0mAAANJkAADSbAAA0nQAANJ4AADSfAAA0oQAANKIAADSkAAA04wAANOUAADTnAAA06QAANOsAADTsAAA07QAANO4AADTvAAA08QAANPMAADT0AAA09QAANPcAADT4AAA1NwAANTkAADU7AAA1PQAANT8AADVAAAA1QQAANUIAADVDAAA1RQAANUcAADVIAAA1SQAANUsAADVMAAA1iwAANY0AADWPAAA1kQAANZMAADWUAAA1lQAANZYAADWXAAA1mQAANZsAADWcAAA1nQAANZ8AADWgAAA1owAANeIAADXkAAA15gAANegAADXqAAA16wAANewAADXtAAA17gAANfAAADXyAAA18wAANfQAADX2AAA19wAANjYAADY4AAA2OgAANjwAADY+AAA2PwAANkAAADZBAAA2QgAANkQAADZGAAA2RwAANkgAADZKAAA2SwAANooAADaMAAA2jgAANpAAADaSAAA2kwAANpQAADaVAAA2lgAANpgAADaaAAA2mwAANpwAADaeAAA2nwAANqgAADa2AAA2wwAANtEAADbeAAA28QAANwgAADcaAAA3ZQAAN4gAADeoAAA3yAAAN8oAADfMAAA3zgAAN9AAADfSAAA30wAAN9QAADfWAAA31wAAN9kAADfaAAA33AAAN94AADffAAA34AAAN+IAADfjAAA36AAAN/UAADf6AAA3/AAAN/4AADgDAAA4BQAAOAcAADgJAAA4LgAAOFIAADh5AAA4nQAAOJ8AADihAAA4owAAOKUAADinAAA4qQAAOKoAADisAAA4uQAAOMoAADjMAAA4zgAAONAAADjSAAA41AAAONYAADjYAAA42gAAOOsAADjtAAA47wAAOPEAADjzAAA49QAAOPcAADj5AAA4+wAAOP0AADk8AAA5PgAAOUAAADlCAAA5RAAAOUUAADlGAAA5RwAAOUgAADlKAAA5TAAAOU0AADlOAAA5UAAAOVEAADmQAAA5kgAAOZQAADmWAAA5mAAAOZkAADmaAAA5mwAAOZwAADmeAAA5oAAAOaEAADmiAAA5pAAAOaUAADnkAAA55gAAOegAADnqAAA57AAAOe0AADnuAAA57wAAOfAAADnyAAA59AAAOfUAADn2AAA5+AAAOfkAADoGAAA6BwAAOggAADoKAAA6SQAAOksAADpNAAA6TwAAOlEAADpSAAA6UwAAOlQAADpVAAA6VwAAOlkAADpaAAA6WwAAOl0AADpeAAA6nQAAOp8AADqhAAA6owAAOqUAADqmAAA6pwAAOqgAADqpAAA6qwAAOq0AADquAAA6rwAAOrEAADqyAAA68QAAOvMAADr1AAA69wAAOvkAADr6AAA6+wAAOvwAADr9AAA6/wAAOwEAADsCAAA7AwAAOwUAADsGAAA7RQAAO0cAADtJAAA7SwAAO00AADtOAAA7TwAAO1AAADtRAAA7UwAAO1UAADtWAAA7VwAAO1kAADtaAAA7mQAAO5sAADudAAA7nwAAO6EAADuiAAA7owAAO6QAADulAAA7pwAAO6kAADuqAAA7qwAAO60AADuuAAA70wAAO/cAADweAAA8QgAAPEQAADxGAAA8SAAAPEoAADxMAAA8TgAAPE8AADxRAAA8XgAAPG0AADxvAAA8cQAAPHMAADx1AAA8dwAAPHkAADx7AAA8igAAPIwAADyOAAA8kAAAPJIAADyUAAA8lgAAPJgAADyaAAA82QAAPNsAADzdAAA83wAAPOEAADziAAA84wAAPOQAADzlAAA85wAAPOkAADzqAAA86wAAPO0AADzuAAA9LQAAPS8AAD0xAAA9MwAAPTUAAD02AAA9NwAAPTgAAD05AAA9OwAAPT0AAD0+AAA9PwAAPUEAAD1CAAA9gQAAPYMAAD2FAAA9hwAAPYkAAD2KAAA9iwAAPYwAAD2NAAA9jwAAPZEAAD2SAAA9kwAAPZUAAD2WAAA91QAAPdcAAD3ZAAA92wAAPd0AAD3eAAA93wAAPeAAAD3hAAA94wAAPeUAAD3mAAA95wAAPekAAD3qAAA+KQAAPisAAD4tAAA+LwAAPjEAAD4yAAA+MwAAPjQAAD41AAA+NwAAPjkAAD46AAA+OwAAPj0AAD4+AAA+fQAAPn8AAD6BAAA+gwAAPoUAAD6GAAA+hwAAPogAAD6JAAA+iwAAPo0AAD6OAAA+jwAAPpEAAD6SAAA+0QAAPtMAAD7VAAA+1wAAPtkAAD7aAAA+2wAAPtwAAD7dAAA+3wAAPuEAAD7iAAA+4wAAPuUAAD7mAAA+7wAAPwIAAD8PAAA/IgAAPy8AAD9CAAA/WQAAP2sAAD+2AAA/2QAAP/kAAEAZAABAGwAAQB0AAEAfAABAIQAAQCMAAEAkAABAJQAAQCcAAEAoAABAKgAAQCsAAEAtAABALwAAQDAAAEAxAABAMwAAQDQAAEA5AABARgAAQEsAAEBNAABATwAAQFQAAEBWAABAWAAAQFoAAEB/AABAowAAQMoAAEDuAABA8AAAQPIAAED0AABA9gAAQPgAAED6AABA+wAAQP0AAEEKAABBGwAAQR0AAEEfAABBIQAAQSMAAEElAABBJwAAQSkAAEErAABBPAAAQT4AAEFAAABBQgAAQUQAAEFGAABBSAAAQUoAAEFMAABBTgAAQY0AAEGPAABBkQAAQZMAAEGVAABBlgAAQZcAAEGYAABBmQAAQZsAAEGdAABBngAAQZ8AAEGhAABBogAAQeEAAEHjAABB5QAAQecAAEHpAABB6gAAQesAAEHsAABB7QAAQe8AAEHxAABB8gAAQfMAAEH1AABB9gAAQjUAAEI3AABCOQAAQjsAAEI9AABCPgAAQj8AAEJAAABCQQAAQkMAAEJFAABCRgAAQkcAAEJJAABCSgAAQlcAAEJYAABCWQAAQlsAAEKaAABCnAAAQp4AAEKgAABCogAAQqMAAEKkAABCpQAAQqYAAEKoAABCqgAAQqsAAEKsAABCrgAAQq8AAELuAABC8AAAQvIAAEL0AABC9gAAQvcAAEL4AABC+QAAQvoAAEL8AABC/gAAQv8AAEMAAABDAgAAQwMAAENCAABDRAAAQ0YAAENIAABDSgAAQ0sAAENMAABDTQAAQ04AAENQAABDUgAAQ1MAAENUAABDVgAAQ1cAAEOWAABDmAAAQ5oAAEOcAABDngAAQ58AAEOgAABDoQAAQ6IAAEOkAABDpgAAQ6cAAEOoAABDqgAAQ6sAAEPqAABD7AAAQ+4AAEPwAABD8gAAQ/MAAEP0AABD9QAAQ/YAAEP4AABD+gAAQ/sAAEP8AABD/gAAQ/8AAEQkAABESAAARG8AAESTAABElQAARJcAAESZAABEmwAARJ0AAESfAABEoAAARKIAAESvAABEvgAARMAAAETCAABExAAARMYAAETIAABEygAARMwAAETbAABE3QAARN8AAEThAABE4wAAROYAAETpAABE7AAARO4AAEUtAABFLwAARTEAAEUzAABFNQAARTYAAEU3AABFOAAARTkAAEU7AABFPQAART4AAEU/AABFQQAARUIAAEWBAABFgwAARYUAAEWHAABFiQAARYoAAEWLAABFjAAARY0AAEWPAABFkQAARZIAAEWTAABFlQAARZYAAEXVAABF1wAARdkAAEXbAABF3QAARd4AAEXfAABF4AAAReEAAEXjAABF5QAAReYAAEXnAABF6QAAReoAAEYpAABGKwAARi0AAEYvAABGMQAARjIAAEYzAABGNAAARjUAAEY3AABGOQAARjoAAEY7AABGPQAARj4AAEaBAABGpQAARskAAEbsAABHEwAARzMAAEdaAABHgQAAR6EAAEfFAABH6QAAR+sAAEftAABH7wAAR/EAAEfzAABH9QAAR/gAAEf6AABH/AAAR/8AAEgBAABIAwAASAYAAEgIAABICQAASA4AAEgbAABIHgAASCAAAEgjAABIJQAASCcAAEhMAABIcAAASJcAAEi7AABIvQAASL8AAEjBAABIwwAASMUAAEjHAABIyAAASMoAAEjXAABI6gAASOwAAEjuAABI8AAASPIAAEj0AABI9gAASPgAAEj6AABI/AAASQ8AAEkRAABJEwAASRUAAEkXAABJGQAASRsAAEkdAABJHwAASSEAAEkjAABJYgAASWQAAElmAABJaAAASWoAAElrAABJbAAASW0AAEluAABJcAAASXIAAElzAABJdAAASXYAAEl3AABJgAAASYEAAEmDAABJwgAAScQAAEnGAABJyAAAScoAAEnLAABJzAAASc0AAEnOAABJ0AAASdIAAEnTAABJ1AAASdYAAEnXAABKFgAAShgAAEoaAABKHAAASh4AAEofAABKIAAASiEAAEoiAABKJAAASiYAAEonAABKKAAASioAAEorAABKNAAASjUAAEo3AABKdgAASngAAEp6AABKfAAASn4AAEp/AABKgAAASoEAAEqCAABKhAAASoYAAEqHAABKiAAASooAAEqLAABKygAASswAAErOAABK0AAAStIAAErTAABK1AAAStUAAErWAABK2AAAStoAAErbAABK3AAASt4AAErfAABK6AAASukAAErrAABLKgAASywAAEsuAABLMAAASzIAAEszAABLNAAASzUAAEs2AABLOAAASzoAAEs7AABLPAAASz4AAEs/AABLfgAAS4AAAEuCAABLhAAAS4YAAEuHAABLiAAAS4kAAEuKAABLjAAAS44AAEuPAABLkAAAS5IAAEuTAABLoAAAS6EAAEuiAABLpAAAS+MAAEvlAABL5wAAS+kAAEvrAABL7AAAS+0AAEvuAABL7wAAS/EAAEvzAABL9AAAS/UAAEv3AABL+AAATDcAAEw5AABMOwAATD0AAEw/AABMQAAATEEAAExCAABMQwAATEUAAExHAABMSAAATEkAAExLAABMTAAATFkAAExiAABMZAAATGYAAExoAABMagAATHMAAEx1AABMeAAATHsAAEx+AABMgAAATI8AAEyhAABMrgAATPkAAE0cAABNPAAATVwAAE1eAABNYAAATWIAAE1kAABNZgAATWcAAE1oAABNagAATWsAAE1tAABNbgAATXAAAE1yAABNcwAATXQAAE12AABNdwAATYAAAE2NAABNkgAATZQAAE2WAABNmwAATZ0AAE2fAABNoQAATcYAAE3qAABOEQAATjUAAE43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AABpwAAAac0AAGncAABp3gAAaeAAAGniAABp5AAAaeYAAGnoAABp6gAAafkAAGn8AABp/wAAagIAAGoFAABqCAAAagsAAGoOAABqEAAAak8AAGpRAABqUwAAalUAAGpYAABqWQAAaloAAGpbAABqXAAAal4AAGpgAABqYQAAamIAAGpkAABqZQAAaqQAAGqmAABqqAAAaqoAAGqtAABqrgAAaq8AAGqwAABqsQAAarMAAGq1AABqtgAAarcAAGq5AABqugAAavkAAGr7AABq/QAAav8AAGsCAABrAwAAawQAAGsFAABrBgAAawgAAGsKAABrCwAAawwAAGsOAABrDwAAa04AAGtQAABrUwAAa1UAAGtYAABrWQAAa1oAAGtbAABrXAAAa14AAGtgAABrYQAAa2IAAGtkAABrZQAAa6gAAGvMAABr8AAAbBMAAGw6AABsWgAAbIEAAGyoAABsyAAAbOwAAG0QAABtEgAAbRUAAG0XAABtGQAAbRsAAG0eAABtIQAAbSMAAG0lAABtKAAAbSoAAG0sAABtLwAAbTIAAG0zAABtPAAAbUkAAG1MAABtTgAAbVEAAG1UAABtVgAAbXsAAG2fAABtxgAAbeoAAG3tAABt7wAAbfEAAG3zAABt9QAAbfcAAG34AABt+wAAbggAAG4bAABuHQAAbh8AAG4hAABuIwAAbiUAAG4nAABuKQAAbisAAG4tAABuQAAAbkMAAG5GAABuSQAAbkwAAG5PAABuUgAAblUAAG5YAABuWwAAbl0AAG6cAABungAAbqEAAG6jAABupgAAbqcAAG6oAABuqQAAbqoAAG6sAABurgAAbq8AAG6wAABusgAAbrMAAG68AABuvQAAbr8AAG7+AABvAAAAbwMAAG8FAABvCAAAbwkAAG8KAABvCwAAbwwAAG8OAABvEAAAbxEAAG8SAABvFAAAbxUAAG8jAABvYgAAb2QAAG9nAABvaQAAb2wAAG9tAABvbgAAb28AAG9wAABvcgAAb3QAAG91AABvdgAAb3gAAG95AABvggAAb4MAAG+FAABvxAAAb8YAAG/IAABvygAAb80AAG/OAABvzwAAb9AAAG/RAABv0wAAb9UAAG/WAABv1wAAb9kAAG/aAABwGQAAcBsAAHAeAABwIAAAcCMAAHAkAABwJQAAcCYAAHAnAABwKQAAcCsAAHAs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AACILAAAiC0AAIgvAACIMAAAiD0AAIg+AACIPwAAiEEAAIiAAACIggAAiIQAAIiGAACIiQAAiIoAAIiLAACIjAAAiI0AAIiPAACIkQAAiJIAAIiTAACIlQAAiJYAAIjVAACI1wAAiNkAAIjbAACI3gAAiN8AAIjgAACI4QAAiOIAAIjkAACI5gAAiOcAAIjoAACI6gAAiOsAAIkqAACJLAAAiS4AAIkwAACJMwAAiTQAAIk1AACJNgAAiTcAAIk5AACJOwAAiTwAAIk9AACJPwAAiUAAAIl/AACJgQAAiYMAAImFAACJiAAAiYkAAImKAACJiwAAiYwAAImOAACJkAAAiZEAAImSAACJlAAAiZUAAInUAACJ1gAAidgAAInaAACJ3QAAid4AAInfAACJ4AAAieEAAInjAACJ5QAAieYAAInnAACJ6QAAieoAAIoPAACKMwAAiloAAIp+AACKgQAAioMAAIqFAACKhwAAiokAAIqLAACKjAAAio8AAIqcAACKqwAAiq0AAIqvAACKsQAAirMAAIq1AACKtwAAirkAAIrIAACKywAAis4AAIrRAACK1AAAitcAAIraAACK3QAAit8AAIseAACLIAAAiyIAAIskAACLJwAAiygAAIspAACLKgAAiysAAIstAACLLwAAizAAAIsxAACLMwAAizQAAItzAACLdQAAi3cAAIt5AACLfAAAi30AAIt+AACLfwAAi4AAAIuCAACLhAAAi4UAAIuGAACLiAAAi4kAAIvIAACLygAAi8wAAIvOAACL0QAAi9IAAIvTAACL1AAAi9UAAIvXAACL2QAAi9oAAIvbAACL3QAAi94AAIwdAACMHwAAjCIAAIwkAACMJwAAjCgAAIwpAACMKgAAjCsAAIwtAACMLwAAjDAAAIwxAACMMwAAjDQAAIxzAACMdQAAjHcAAIx5AACMfAAAjH0AAIx+AACMfwAAjIAAAIyCAACMhAAAjIUAAIyGAACMiAAAjIkAAIzIAACMygAAjMwAAIzOAACM0QAAjNIAAIzTAACM1AAAjNUAAIzXAACM2QAAjNoAAIzbAACM3QAAjN4AAI0dAACNHwAAjSEAAI0jAACNJgAAjScAAI0oAACNKQAAjSoAAI0sAACNLgAAjS8AAI0wAACNMgAAjTMAAI1+AACNoQAAjcEAAI3hAACN4wAAjeUAAI3n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AACkHQAApCAAAKQhAACkIgAApCMAAKQkAACkJgAApCgAAKQpAACkKgAApCwAAKQtAACkbAAApG4AAKRwAACkcgAApHUAAKR2AACkdwAApHgAAKR5AACkewAApH0AAKR+AACkfwAApIEAAKSCAACkwQAApMMAAKTFAACkxwAApMoAAKTLAACkzAAApM0AAKTOAACk0AAApNIAAKTTAACk1AAApNYAAKTXAAClFgAApRgAAKUaAAClHAAApR8AAKUgAAClIQAApSIAAKUjAAClJQAApScAAKUoAAClKQAApSsAAKUsAACldwAApZoAAKW6AACl2gAApdwAAKXeAACl4AAApeIAAKXlAACl5gAApecAAKXqAACl6wAApe0AAKXuAACl8AAApfMAAKX0AACl9QAApfgAAKX5AACmAgAApg8AAKYUAACmFgAAphgAAKYdAACmIAAApiMAAKYlAACmSgAApm4AAKaVAACmuQAAprwAAKa+AACmwAAApsIAAKbEAACmxgAApscAAKbKAACm1wAApugAAKbqAACm7AAApu4AAKbwAACm8gAApvQAAKb2AACm+AAApwkAAKcMAACnDwAApxIAAKcVAACnGAAApxsAAKceAACnIQAApyMAAKdiAACnZAAAp2YAAKdoAACnawAAp2wAAKdtAACnbgAAp28AAKdxAACncwAAp3QAAKd1AACndwAAp3gAAKe3AACnuQAAp7sAAKe9AACnwAAAp8EAAKfCAACnwwAAp8QAAKfGAACnyAAAp8kAAKfKAACnzAAAp80AAKgMAACoDgAAqBEAAKgTAACoFgAAqBcAAKgYAACoGQAAqBoAAKgcAACoHgAAqB8AAKggAACoIgAAqCMAAKgwAACoMQAAqDIAAKg0AACocwAAqHUAAKh3AACoeQAAqHwAAKh9AACofgAAqH8AAKiAAACoggAAqIQAAKiFAACohgAAqIgAAKiJAACoyAAAqMoAAKjMAACozgAAqNEAAKjSAACo0wAAqNQAAKjVAACo1wAAqNkAAKjaAACo2wAAqN0AAKjeAACpHQAAqR8AAKkhAACpIwAAqSYAAKknAACpKAAAqSkAAKkqAACpLAAAqS4AAKkvAACpMAAAqTIAAKkzAACpcgAAqXQAAKl2AACpeAAAqXsAAKl8AACpfQAAqX4AAKl/AACpgQAAqYMAAKmEAACphQAAqYcAAKmIAACpxwAAqckAAKnLAACpzQAAqdAAAKnRAACp0gAAqdMAAKnUAACp1gAAqdgAAKnZAACp2gAAqdwAAKndAACqAgAAqiYAAKpNAACqcQAAqnQAAKp2AACqeAAAqnoAAKp8AACqfgAAqn8AAKqCAACqjwAAqp4AAKqgAACqogAAqqQAAKqmAACqqAAAqqoAAKqsAACquwAAqr4AAKrBAACqxAAAqscAAKrKAACqzQAAqtAAAKrSAACrEQAAqxMAAKsVAACrFwAAqxoAAKsbAACrHAAAqx0AAKseAACrIAAAqyIAAKsjAACrJAAAqyYAAKsnAACrZgAAq2gAAKtqAACrbAAAq28AAKtwAACrcQAAq3IAAKtzAACrdQAAq3cAAKt4AACreQAAq3sAAKt8AACruwAAq70AAKu/AACrwQAAq8QAAKvFAACrxgAAq8cAAKvIAACrygAAq8wAAKvNAACrzgAAq9AAAKvRAACsEAAArBIAAKwVAACsFwAArBoAAKwbAACsHAAArB0AAKweAACsIAAArCIAAKwjAACsJAAArCYAAKwnAACsZgAArGgAAKxqAACsbAAArG8AAKxwAACscQAArHIAAKxzAACsdQAArHcAAKx4AACseQAArHsAAKx8AACsuwAArL0AAKy/AACswQAArMQAAKzFAACsxgAArMcAAKzIAACsygAArMwAAKzNAACszgAArNAAAKzRAACtEAAArRIAAK0UAACtFgAArRkAAK0aAACtGwAArRwAAK0dAACtHwAArSEAAK0iAACtIwAArSUAAK0mAACtcQAArZQAAK20AACt1AAArdYAAK3YAACt2gAArdwAAK3fAACt4AAAreEAAK3kAACt5QAArecAAK3oAACt6gAAre0AAK3uAACt7wAArfIAAK3zAACt+AAArgUAAK4KAACuDAAArg4AAK4TAACuFgAArhkAAK4bAACuQAAArmQAAK6LAACurwAArrIAAK60AACutgAArrgAAK66AACuvAAArr0AAK7AAACuzQAArt4AAK7gAACu4gAAruQAAK7mAACu6AAAruoAAK7sAACu7gAArv8AAK8CAACvBQAArwgAAK8LAACvDgAArxEAAK8UAACvFwAArxkAAK9YAACvWgAAr1wAAK9eAACvYQAAr2IAAK9jAACvZAAAr2UAAK9nAACvaQAAr2oAAK9rAACvbQAAr24AAK+tAACvrwAAr7EAAK+zAACvtgAAr7cAAK+4AACvuQAAr7oAAK+8AACvvgAAr78AAK/AAACvwgAAr8MAALACAACwBAAAsAcAALAJAACwDAAAsA0AALAOAACwDwAAsBAAALASAACwFAAAsBUAALAWAACwGAAAsBkAALAmAACwJwAAsCgAALAqAACwaQAAsGsAALBtAACwbwAAsHIAALBzAACwdAAAsHUAALB2AACweAAAsHoAALB7AACwfAAAsH4AALB/AACwvgAAsMAAALDCAACwxAAAsMcAALDIAACwyQAAsMoAALDLAACwzQAAsM8AALDQAACw0QAAsNMAALDUAACxEwAAsRUAALEXAACxGQAAsRwAALEdAACxHgAAsR8AALEgAACxIgAAsSQAALElAACxJgAAsSgAALEpAACxaAAAsWoAALFsAACxbgAAsXEAALFyAACxcwAAsXQAALF1AACxdwAAsXkAALF6AACxewAAsX0AALF+AACxvQAAsb8AALHBAACxwwAAscYAALHHAACxyAAAsckAALHKAACxzAAAsc4AALHPAACx0AAAsdIAALHTAACx+AAAshwAALJDAACyZwAAsmoAALJsAACybgAAsnAAALJyAACydAAAsnUAALJ4AACyhQAAspQAALKWAACymAAAspoAALKcAACyngAAsqAAALKiAACysQAAsrQAALK3AACyugAAsr0AALLAAACywwAAssYAALLIAACzBwAAswkAALMLAACzDQAAsxAAALMRAACzEgAAsxMAALMUAACzFgAAsxgAALMZAACzGgAAsxwAALMdAACzXAAAs14AALNgAACzYgAAs2UAALNmAACzZwAAs2gAALNpAACzawAAs20AALNuAACzbwAAs3EAALNyAACzsQAAs7MAALO1AACztwAAs7oAALO7AACzvAAAs70AALO+AACzwAAAs8IAALPDAACzxAAAs8YAALPHAAC0BgAAtAgAALQLAAC0DQAAtBAAALQRAAC0EgAAtBMAALQUAAC0FgAAtBgAALQZAAC0GgAAtBwAALQdAAC0XAAAtF4AALRgAAC0YgAAtGUAALRmAAC0ZwAAtGgAALRpAAC0awAAtG0AALRuAAC0bwAAtHEAALRyAAC0sQAAtLMAALS1AAC0twAAtLoAALS7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AADQwAAA0MEAANDDAADQxAAA0QMAANEFAADRBwAA0QkAANEMAADRDQAA0Q4AANEPAADREAAA0RIAANEUAADRFQAA0RYAANEYAADRGQAA0VgAANFaAADRXAAA0V4AANFhAADRYgAA0WMAANFkAADRZQAA0WcAANFpAADRagAA0WsAANFtAADRbgAA0a0AANGvAADRsQAA0bMAANG2AADRtwAA0bgAANG5AADRugAA0bwAANG+AADRvwAA0cAAANHCAADRwwAA0egAANIMAADSMwAA0lcAANJaAADSXAAA0l4AANJgAADSYgAA0mQAANJlAADSaAAA0nUAANKEAADShgAA0ogAANKKAADSjAAA0o4AANKQAADSkgAA0qEAANKkAADSpwAA0qoAANKtAADSsAAA0rMAANK2AADSuAAA0vcAANL5AADS+wAA0v0AANMAAADTAQAA0wIAANMDAADTBAAA0wYAANMIAADTCQAA0woAANMMAADTDQAA00wAANNOAADTUAAA01IAANNVAADTVgAA01cAANNYAADTWQAA01sAANNdAADTXgAA018AANNhAADTYgAA06EAANOjAADTpQAA06cAANOqAADTqwAA06wAANOtAADTrgAA07AAANOyAADTswAA07QAANO2AADTtwAA0/YAANP4AADT+wAA0/0AANQAAADUAQAA1AIAANQDAADUBAAA1AYAANQIAADUCQAA1AoAANQMAADUDQAA1EwAANROAADUUAAA1FIAANRVAADUVgAA1FcAANRYAADUWQAA1FsAANRdAADUXgAA1F8AANRhAADUYgAA1KEAANSjAADUpQAA1KcAANSqAADUqwAA1KwAANStAADUrgAA1LAAANSyAADUswAA1LQAANS2AADUtwAA1PYAANT4AADU+gAA1PwAANT/AADVAAAA1QEAANUCAADVAwAA1QUAANUHAADVCAAA1QkAANULAADVDAAA1VcAANV6AADVmgAA1boAANW8AADVvgAA1cAAANXCAADVxQAA1cYAANXHAADVygAA1csAANXNAADVzgAA1dAAANXTAADV1AAA1dUAANXYAADV2QAA1d4AANXrAADV8AAA1fIAANX0AADV+QAA1fwAANX/AADWAQAA1iYAANZKAADWcQAA1pUAANaYAADWmgAA1pwAANaeAADWoAAA1qIAANajAADWpgAA1rMAANbEAADWxgAA1sgAANbKAADWzAAA1s4AANbQAADW0gAA1tQAANblAADW6AAA1usAANbuAADW8QAA1vQAANb3AADW+gAA1v0AANb/AADXPgAA10AAANdCAADXRAAA10cAANdIAADXSQAA10oAANdLAADXTQAA108AANdQAADXUQAA11MAANdUAADXkwAA15UAANeXAADXmQAA15wAANedAADXngAA158AANegAADXogAA16QAANelAADXpgAA16gAANepAADX6AAA1+oAANftAADX7wAA1/IAANfzAADX9AAA1/UAANf2AADX+AAA1/oAANf7AADX/AAA1/4AANf/AADYDAAA2A0AANgOAADYEAAA2E8AANhRAADYUwAA2FUAANhYAADYWQAA2FoAANhbAADYXAAA2F4AANhgAADYYQAA2GIAANhkAADYZQAA2KQAANimAADYqAAA2KoAANitAADYrgAA2K8AANiwAADYsQAA2LMAANi1AADYtgAA2LcAANi5AADYugAA2PkAANj7AADY/QAA2P8AANkCAADZAwAA2QQAANkFAADZBgAA2QgAANkKAADZCwAA2QwAANkOAADZDwAA2U4AANlQAADZUgAA2VQAANlXAADZWAAA2VkAANlaAADZWwAA2V0AANlfAADZYAAA2WEAANljAADZZAAA2aMAANmlAADZpwAA2akAANmsAADZrQAA2a4AANmvAADZsAAA2bIAANm0AADZtQAA2bYAANm4AADZuQAA2d4AANoCAADaKQAA2k0AANpQAADaUgAA2lQAANpWAADaWAAA2loAANpbAADaXgAA2msAANp6AADafAAA2n4AANqAAADaggAA2oQAANqGAADaiAAA2pcAANqaAADanQAA2qAAANqjAADapgAA2qkAANqsAADargAA2u0AANrvAADa8QAA2vMAANr2AADa9wAA2vgAANr5AADa+gAA2vwAANr+AADa/wAA2wAAANsCAADbAwAA20IAANtEAADbRgAA20gAANtLAADbTAAA200AANtOAADbTwAA21EAANtTAADbVAAA21UAANtXAADbWAAA25cAANuZAADbmwAA250AANugAADboQAA26IAANujAADbpAAA26YAANuoAADbqQAA26oAANusAADbrQAA2+wAANvuAADb8QAA2/MAANv2AADb9wAA2/gAANv5AADb+gAA2/wAANv+AADb/wAA3AAAANwCAADcAwAA3EIAANxEAADcRgAA3EgAANxLAADcTAAA3E0AANxOAADcTwAA3FEAANxTAADcVAAA3FUAANxXAADcWAAA3JcAANyZAADcmwAA3J0AANygAADcoQAA3KIAANyjAADcpAAA3KYAANyoAADcqQAA3KoAANysAADcrQAA3OwAANzuAADc8AAA3PIAANz1AADc9gAA3PcAANz4AADc+QAA3PsAANz9AADc/gAA3P8AAN0BAADdAgAA3U0AAN1wAADdkAAA3bAAAN2yAADdtAAA3bYAAN24AADduwAA3bwAAN29AADdwAAA3cEAAN3DAADdxAAA3cYAAN3IAADdyQAA3coAAN3NAADdzgAA3dMAAN3gAADd5QAA3ecAAN3pAADd7gAA3fEAAN30AADd9gAA3hsAAN4/AADeZgAA3ooAAN6NAADejwAA3pEAAN6TAADelQAA3pcAAN6YAADemwAA3qgAAN65AADeuwAA3r0AAN6/AADewQAA3sMAAN7FAADexwAA3skAAN7aAADe3QAA3uAAAN7jAADe5gAA3ukAAN7sAADe7wAA3vIAAN70AADfMwAA3zUAAN83AADfOQAA3zwAAN89AADfPgAA3z8AAN9AAADfQgAA30QAAN9FAADfRgAA30gAAN9JAADfiAAA34oAAN+MAADfjgAA35EAAN+SAADfkwAA35QAAN+VAADflwAA35kAAN+aAADfmwAA350AAN+eAADf3QAA398AAN/iAADf5AAA3+cAAN/oAADf6QAA3+oAAN/rAADf7QAA3+8AAN/wAADf8QAA3/MAAN/0AADgAQAA4AIAAOADAADgBQAA4EQAAOBGAADgSAAA4EoAAOBNAADgTgAA4E8AAOBQAADgUQAA4FMAAOBVAADgVgAA4FcAAOBZAADgWgAA4JkAAOCbAADgnQAA4J8AAOCiAADgowAA4KQAAOClAADgpgAA4KgAAOCqAADgqwAA4KwAAOCuAADgrwAA4O4AAODwAADg8gAA4PQAAOD3AADg+AAA4PkAAOD6AADg+wAA4P0AAOD/AADhAAAA4QEAAOEDAADhBAAA4UMAAOFFAADhRwAA4UkAAOFMAADhTQAA4U4AAOFPAADhUAAA4VIAAOFUAADhVQAA4VYAAOFYAADhWQAA4ZgAAOGaAADhnAAA4Z4AAOGhAADhogAA4aMAAOGkAADhpQAA4acAAOGpAADhqgAA4asAAOGtAADhrgAA4dMAAOH3AADiHgAA4kIAAOJFAADiRwAA4kkAAOJLAADiTQAA4k8AAOJQAADiUwAA4mAAAOJvAADicQAA4nMAAOJ1AADidwAA4nkAAOJ7AADifQAA4owAAOKPAADikgAA4pUAAOKYAADimwAA4p4AAOKhAADiowAA4uIAAOLkAADi5gAA4ugAAOLrAADi7AAA4u0AAOLuAADi7wAA4vEAAOLzAADi9AAA4vUAAOL3AADi+AAA4zcAAOM5AADjOwAA4z0AAONAAADjQQAA40IAAONDAADjRAAA40YAAONIAADjSQAA40oAAONMAADjTQAA44wAAOOOAADjkAAA45IAAOOVAADjlgAA45cAAOOYAADjmQAA45sAAOOdAADjngAA458AAOOhAADjogAA4+EAAOPjAADj5gAA4+gAAOPrAADj7AAA4+0AAOPuAADj7wAA4/EAAOPzAADj9AAA4/UAAOP3AADj+AAA5DcAAOQ5AADkOwAA5D0AAORAAADkQQAA5EIAAORDAADkRAAA5EYAAORIAADkSQAA5EoAAORMAADkTQAA5IwAAOSOAADkkAAA5JIAAOSVAADklgAA5JcAAOSYAADkmQAA5JsAAOSdAADkngAA5J8AAOShAADkogAA5OEAAOTjAADk5QAA5OcAAOTqAADk6wAA5OwAAOTtAADk7gAA5PAAAOTyAADk8wAA5PQAAOT2AADk9wAA5UIAAOVlAADlhQAA5aUAAOWnAADlqQAA5asAAOWtAADlsAAA5bEAAOWyAADltQAA5bYAAOW4AADluQAA5bsAAOW+AADlvwAA5cAAAOXDAADlxAAA5ckAAOXWAADl2wAA5d0AAOXfAADl5AAA5ecAAOXqAADl7AAA5hEAAOY1AADmXAAA5oAAAOaDAADmhQAA5ocAAOaJAADmiwAA5o0AAOaOAADmkQAA5p4AAOavAADmsQAA5rMAAOa1AADmtwAA5rkAAOa7AADmvQAA5r8AAObQAADm0wAA5tYAAObZAADm3AAA5t8AAObiAADm5QAA5ugAAObqAADnKQAA5ysAAOctAADnLwAA5zIAAOczAADnNAAA5zUAAOc2AADnOAAA5zoAAOc7AADnPAAA5z4AAOc/AADnfgAA54AAAOeCAADnhAAA54cAAOeIAADniQAA54oAAOeLAADnjQAA548AAOeQAADnkQAA55MAAOeUAADn0wAA59UAAOfYAADn2gAA590AAOfeAADn3wAA5+AAAOfhAADn4wAA5+UAAOfmAADn5wAA5+kAAOfqAADn9wAA5/gAAOf5AADn+wAA6DoAAOg8AADoPgAA6EAAAOhDAADoRAAA6EUAAOhGAADoRwAA6EkAAOhLAADoTAAA6E0AAOhPAADoUAAA6I8AAOiRAADokwAA6JUAAOiYAADomQAA6JoAAOibAADonAAA6J4AAOigAADooQAA6KIAAOikAADopQAA6OQAAOjmAADo6AAA6OoAAOjtAADo7gAA6O8AAOjwAADo8QAA6PMAAOj1AADo9gAA6PcAAOj5AADo+gAA6TkAAOk7AADpPgAA6UAAAOlDAADpRAAA6UUAAOlGAADpRwAA6UkAAOlLAADpTAAA6U0AAOlPAADpUAAA6WMAAOmiAADppAAA6aYAAOmoAADpqwAA6awAAOmtAADprgAA6a8AAOmxAADpswAA6bQAAOm1AADptwAA6bgAAOndAADqAQAA6igAAOpMAADqTwAA6lEAAOpTAADqVQAA6lcAAOpZAADqWgAA6l0AAOpqAADqeQAA6nsAAOp9AADqfwAA6oEAAOqDAADqhQAA6ocAAOqWAADqmQAA6pwAAOqfAADqogAA6qUAAOqoAADqqwAA6q0AAOrsAADq7gAA6vAAAOryAADq9QAA6vYAAOr3AADq+AAA6vkAAOr7AADq/QAA6v4AAOr/AADrAQAA6wIAAOtBAADrQwAA60UAAOtHAADrSgAA60sAAOtMAADrTQAA604AAOtQAADrUgAA61MAAOtUAADrVgAA61cAAOuWAADrmAAA65oAAOucAADrnwAA66AAAOuhAADrogAA66MAAOulAADrpwAA66gAAOupAADrqwAA66wAAOvrAADr7QAA6/AAAOvyAADr9QAA6/YAAOv3AADr+AAA6/kAAOv7AADr/QAA6/4AAOv/AADsAQAA7AIAAOxBAADsQwAA7EUAAOxHAADsSgAA7EsAAOxMAADsTQAA7E4AAOxQAADsUgAA7FMAAOxUAADsVgAA7FcAAOyWAADsmAAA7JoAAOycAADsnwAA7KAAAOyh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AAEOlAABDqUAAQ6nAAEOqQABDqsAAQ6tAAEOrwABDrEAAQ6zAAEOtQABDsYAAQ7JAAEOzAABDs8AAQ7SAAEO1QABDtgAAQ7bAAEO3gABDuAAAQ8fAAEPIQABDyMAAQ8lAAEPKAABDykAAQ8qAAEPKwABDywAAQ8uAAEPMAABDzEAAQ8yAAEPNAABDzUAAQ90AAEPdgABD3gAAQ96AAEPfQABD34AAQ9/AAEPgAABD4EAAQ+DAAEPhQABD4YAAQ+HAAEPiQABD4oAAQ/JAAEPywABD84AAQ/QAAEP0wABD9QAAQ/VAAEP1gABD9cAAQ/ZAAEP2wABD9wAAQ/dAAEP3wABD+AAAQ/tAAEP7gABD+8AAQ/xAAEQMAABEDIAARA0AAEQNgABEDkAARA6AAEQOwABEDwAARA9AAEQPwABEEEAARBCAAEQQwABEEUAARBGAAEQhQABEIcAARCJAAEQiwABEI4AARCPAAEQkAABEJEAARCSAAEQlAABEJYAARCXAAEQmAABEJoAARCbAAEQ2gABENwAARDeAAEQ4AABEOMAARDkAAEQ5QABEOYAARDnAAEQ6QABEOsAARDsAAEQ7QABEO8AARDwAAERLwABETEAARE0AAERNgABETkAARE6AAEROwABETwAARE9AAERPwABEUEAARFCAAERQwABEUUAARFGAAERVQABEZQAARGWAAERmAABEZoAARGdAAERngABEZ8AARGgAAERoQABEaMAARGlAAERpgABEacAARGpAAERqgABEc8AARHzAAESGgABEj4AARJBAAESQwABEkUAARJHAAESSQABEksAARJMAAESTwABElwAARJrAAESbQABEm8AARJxAAEScwABEnUAARJ3AAESeQABEogAARKLAAESjgABEpEAARKUAAESlwABEpoAARKdAAESnwABEt4AARLgAAES4gABEuQAARLnAAES6AABEukAARLqAAES6wABEu0AARLvAAES8AABEvEAARLzAAES9AABEzMAARM1AAETNwABEzkAARM8AAETPQABEz4AARM/AAETQAABE0IAARNEAAETRQABE0YAARNIAAETSQABE4gAAROKAAETjAABE44AARORAAETkgABE5MAAROUAAETlQABE5cAAROZAAETmgABE5sAAROdAAETngABE90AARPfAAET4gABE+QAARPnAAET6AABE+kAARPqAAET6wABE+0AARPvAAET8AABE/EAARPzAAET9AABFDMAARQ1AAEUNwABFDkAARQ8AAEUPQABFD4AARQ/AAEUQAABFEIAARREAAEURQABFEYAARRIAAEUSQABFIgAARSKAAEUjAABFI4AARSRAAEUkgABFJMAARSUAAEUlQABFJcAARSZAAEUmgABFJsAARSdAAEUngABFN0AARTfAAEU4QABFOMAARTmAAEU5wABFOgAARTpAAEU6gABFOwAARTuAAEU7wABFPAAARTyAAEU8wABFT4AARVhAAEVgQABFaEAARWjAAEVpQABFacAARWpAAEVrAABFa0AARWuAAEVsQABFbIAARW0AAEVtQABFbcAARW6AAEVuwABFbwAARW/AAEVwAABFcUAARXSAAEV1wABFdkAARXbAAEV4AABFeMAARXmAAEV6AABFg0AARYxAAEWWAABFnwAARZ/AAEWgQABFoMAARaFAAEWhwABFokAARaKAAEWjQABFpoAARarAAEWrQABFq8AARaxAAEWswABFrUAARa3AAEWuQABFrsAARbMAAEWzwABFtIAARbVAAEW2AABFtsAARbeAAEW4QABFuQAARbmAAEXJQABFycAARcpAAEXKwABFy4AARcvAAEXMAABFzEAARcyAAEXNAABFzYAARc3AAEXOAABFzoAARc7AAEXegABF3wAARd+AAEXgAABF4MAAReEAAEXhQABF4YAAReHAAEXiQABF4sAAReMAAEXjQABF48AAReQAAEXzwABF9EAARfUAAEX1gABF9kAARfaAAEX2wABF9wAARfdAAEX3wABF+EAARfiAAEX4wABF+UAARfmAAEX8wABF/QAARf1AAEX9wABGDYAARg4AAEYOgABGDwAARg/AAEYQAABGEEAARhCAAEYQwABGEUAARhHAAEYSAABGEkAARhLAAEYTAABGIsAARiNAAEYjwABGJEAARiUAAEYlQABGJYAARiXAAEYmAABGJoAARicAAEYnQABGJ4AARigAAEYoQABGOAAARjiAAEY5AABGOYAARjpAAEY6gABGOsAARjsAAEY7QABGO8AARjxAAEY8gABGPMAARj1AAEY9gABGTUAARk3AAEZOgABGTwAARk/AAEZQAABGUEAARlCAAEZQwABGUUAARlHAAEZSAABGUkAARlLAAEZTAABGWAAARmfAAEZoQABGaMAARmlAAEZqAABGakAARmqAAEZqwABGawAARmuAAEZsAABGbEAARmyAAEZtAABGbUAARnaAAEZ/gABGiUAARpJAAEaTAABGk4AARpQAAEaUgABGlQAARpWAAEaVwABGloAARpnAAEadgABGngAARp6AAEafAABGn4AARqAAAEaggABGoQAARqTAAEalgABGpkAARqcAAEanwABGqIAARqlAAEaqAABGqoAARrpAAEa6wABGu0AARrvAAEa8gABGvMAARr0AAEa9QABGvYAARr4AAEa+gABGvsAARr8AAEa/gABGv8AARs+AAEbQAABG0IAARtEAAEbRwABG0gAARtJAAEbSgABG0sAARtNAAEbTwABG1AAARtRAAEbUwABG1QAARuTAAEblQABG5cAARuZAAEbnAABG50AARueAAEbnwABG6AAARuiAAEbpAABG6UAARumAAEbqAABG6kAARvoAAEb6gABG+0AARvvAAEb8gABG/MAARv0AAEb9QABG/YAARv4AAEb+gABG/sAARv8AAEb/gABG/8AARw+AAEcQAABHEIAARxEAAEcRwABHEgAARxJAAEcSgABHEsAARxNAAEcTwABHFAAARxRAAEcUwABHFQAARyTAAEclQABHJcAARyZAAEcnAABHJ0AARyeAAEcnwABHKAAARyiAAEcpAABHKUAARymAAEcqAABHKkAARzoAAEc6gABHOwAARzuAAEc8QABHPIAARzzAAEc9AABHPUAARz3AAEc+QABHPoAARz7AAEc/QABHP4AAR1JAAEdbAABHYwAAR2sAAEdrgABHbAAAR2yAAEdtAABHbcAAR24AAEduQABHbwAAR29AAEdvwABHcAAAR3CAAEdxQABHcYAAR3HAAEdygABHcsAAR3QAAEd3QABHeIAAR3kAAEd5gABHesAAR3uAAEd8QABHfMAAR4YAAEePAABHmMAAR6HAAEeigABHowAAR6OAAEekAABHpIAAR6UAAEelQABHpgAAR6lAAEetgABHrgAAR66AAEevAABHr4AAR7AAAEewgABHsQAAR7GAAEe1wABHtoAAR7dAAEe4AABHuMAAR7mAAEe6QABHuwAAR7vAAEe8QABHzAAAR8yAAEfNAABHzYAAR85AAEfOgABHzsAAR88AAEfPQABHz8AAR9BAAEfQgABH0MAAR9FAAEfRgABH4UAAR+HAAEfiQABH4sAAR+OAAEfjwABH5AAAR+RAAEfkgABH5QAAR+WAAEflwABH5gAAR+aAAEfmwABH9oAAR/cAAEf3wABH+EAAR/kAAEf5QABH+YAAR/nAAEf6AABH+oAAR/sAAEf7QABH+4AAR/wAAEf8QABH/4AAR//AAEgAAABIAIAASBBAAEgQwABIEUAASBHAAEgSgABIEsAASBMAAEgTQABIE4AASBQAAEgUgABIFMAASBUAAEgVgABIFcAASCWAAEgmAABIJoAASCcAAEgnwABIKAAASChAAEgogABIKMAASClAAEgpwABIKgAASCpAAEgqwABIKwAASDrAAEg7QABIO8AASDxAAEg9AABIPUAASD2AAEg9wABIPgAASD6AAEg/AABIP0AASD+AAEhAAABIQEAASFAAAEhQgABIUQAASFGAAEhSQABIUoAASFLAAEhTAABIU0AASFPAAEhUQABIVIAASFTAAEhVQABIVYAASGVAAEhlwABIZkAASGbAAEhngABIZ8AASGgAAEhoQABIaIAASGkAAEhpgABIacAASGoAAEhqgABIasAASHQAAEh9AABIhsAASI/AAEiQgABIkQAASJGAAEiSAABIkoAASJMAAEiTQABIlAAASJdAAEibAABIm4AASJwAAEicgABInQAASJ2AAEieAABInoAASKJAAEijAABIo8AASKSAAEilQABIpgAASKbAAEingABIqAAASLfAAEi4QABIuMAASLlAAEi6AABIukAASLqAAEi6wABIuwAASLuAAEi8AABIvEAASLyAAEi9AABIvUAASM0AAEjNgABIzgAASM6AAEjPQABIz4AASM/AAEjQAABI0EAASNDAAEjRQABI0YAASNHAAEjSQABI0oAASOJAAEjiwABI40AASOPAAEjkgABI5MAASOUAAEjlQABI5YAASOYAAEjmgABI5sAASOcAAEjngABI58AASPeAAEj4AABI+MAASPlAAEj6AABI+kAASPqAAEj6wABI+wAASPuAAEj8AABI/EAASPyAAEj9AABI/UAASQ0AAEkNgABJDgAASQ6AAEkPQABJD4AASQ/AAEkQAABJEEAASRDAAEkRQABJEYAASRHAAEkSQABJEoAASSJAAEkiwABJI0AASSPAAEkkgABJJMAASSUAAEklQABJJYAASSYAAEkmgABJJsAASScAAEkngABJJ8AASTeAAEk4AABJOIAASTkAAEk5wABJOgAASTpAAEk6gABJOsAASTtAAEk7wABJPAAASTxAAEk8wABJPQAASU/AAElYgABJYIAASWiAAElpAABJaYAASWoAAElqgABJa0AASWuAAElrwABJbIAASWzAAEltQABJbYAASW4AAEluwABJbwAASW9AAElwAABJcEAASXKAAEl1wABJdwAASXeAAEl4AABJeUAASXoAAEl6wABJe0AASYSAAEmNgABJl0AASaBAAEmhAABJoYAASaIAAEmigABJowAASaOAAEmjwABJpIAASafAAEmsAABJrIAASa0AAEmtgABJrgAASa6AAEmvAABJr4AASbAAAEm0QABJtQAASbXAAEm2gABJt0AASbgAAEm4wABJuYAASbpAAEm6wABJyoAAScsAAEnLgABJzAAASczAAEnNAABJzUAASc2AAEnNwABJzkAASc7AAEnPAABJz0AASc/AAEnQAABJ38AASeBAAEngwABJ4UAASeIAAEniQABJ4oAASeLAAEnjAABJ44AASeQAAEnkQABJ5IAASeUAAEnlQABJ9QAASfWAAEn2QABJ9sAASfeAAEn3wABJ+AAASfhAAEn4gABJ+QAASfmAAEn5wABJ+gAASfqAAEn6wABJ/gAASf5AAEn+gABJ/wAASg7AAEoPQABKD8AAShBAAEoRAABKEUAAShGAAEoRwABKEgAAShKAAEoTAABKE0AAShOAAEoUAABKFEAASiQAAEokgABKJQAASiWAAEomQABKJoAASibAAEonAABKJ0AASifAAEooQABKKIAASijAAEopQABKKYAASjlAAEo5wABKOkAASjrAAEo7gABKO8AASjwAAEo8QABKPIAASj0AAEo9gABKPcAASj4AAEo+gABKPsAASk6AAEpPAABKT4AASlAAAEpQwABKUQAASlFAAEpRgABKUcAASlJAAEpSwABKUwAASlNAAEpTwABKVAAASmPAAEpkQABKZMAASmVAAEpmAABKZkAASmaAAEpmwABKZwAASmeAAEpoAABKaEAASmiAAEppAABKaUAASnKAAEp7gABKhUAASo5AAEqPAABKj4AASpAAAEqQgABKkQAASpGAAEqRwABKkoAASpXAAEqZgABKmgAASpqAAEqbAABKm4AASpwAAEqcgABKnQAASqDAAEqhgABKokAASqMAAEqjwABKpIAASqVAAEqmAABKpoAASrZAAEq2wABKt0AASrfAAEq4gABKuMAASrkAAEq5QABKuYAASroAAEq6gABKusAASrsAAEq7gABKu8AASsuAAErMAABKzIAASs0AAErNwABKzgAASs5AAErOgABKzsAASs9AAErPwABK0AAAStBAAErQwABK0QAASuDAAErhQABK4cAASuJAAErjAABK40AASuOAAErjwABK5AAASuSAAErlAABK5UAASuWAAErmAABK5kAASvYAAEr2gABK90AASvfAAEr4gABK+MAASvkAAEr5QABK+YAASvoAAEr6gABK+sAASvsAAEr7gABK+8AASwuAAEsMAABLDIAASw0AAEsNwABLDgAASw5AAEsOgABLDsAASw9AAEsPwABLEAAASxBAAEsQwABLEQAASyDAAEshQABLIcAASyJAAEsjAABLI0AASyOAAEsjwABLJAAASySAAEslAABLJUAASyWAAEsmAABLJkAASzYAAEs2gABLNwAASzeAAEs4QABLOIAASzjAAEs5AABLOUAASznAAEs6QABLOoAASzrAAEs7QABLO4AAS05AAEtXAABLXwAAS2cAAEtngABLaAAAS2iAAEtpAABLacAAS2oAAEtqQABLawAAS2tAAEtrwABLbAAAS2yAAEttQABLbYAAS23AAEtugABLbsAAS3AAAEtzQABLdIAAS3UAAEt1gABLdsAAS3eAAEt4QABLeMAAS4IAAEuLAABLlMAAS53AAEuegABLnwAAS5+AAEugAABLoIAAS6EAAEuhQABLogAAS6VAAEupgABLqgAAS6qAAEurAABLq4AAS6wAAEusgABLrQAAS62AAEuxwABLsoAAS7NAAEu0AABLtMAAS7WAAEu2QABLtwAAS7fAAEu4QABLyAAAS8iAAEvJAABLyYAAS8pAAEvKgABLysAAS8sAAEvLQABLy8AAS8xAAEvMgABLzMAAS81AAEvNgABL3UAAS93AAEveQABL3sAAS9+AAEvfwABL4AAAS+BAAEvggABL4QAAS+GAAEvhwABL4gAAS+KAAEviwABL8oAAS/MAAEvzwABL9EAAS/UAAEv1QABL9YAAS/XAAEv2AABL9oAAS/cAAEv3QABL94AAS/gAAEv4QABL+4AAS/vAAEv8AABL/IAATAxAAEwMwABMDUAATA3AAEwOgABMDsAATA8AAEwPQABMD4AATBAAAEwQgABMEMAATBEAAEwRgABMEcAATCGAAEwiAABMIoAATCMAAEwjwABMJAAATCRAAEwkgABMJMAATCVAAEwlwABMJgAATCZAAEwmwABMJwAATDbAAEw3QABMN8AATDhAAEw5AABMOUAATDmAAEw5wABMOgAATDqAAEw7AABMO0AATDuAAEw8AABMPEAATEwAAExMgABMTQAATE2AAExOQABMToAATE7AAExPAABMT0AATE/AAExQQABMUIAATFDAAExRQABMUYAATGFAAExhwABMYkAATGLAAExjgABMY8AATGQAAExkQABMZIAATGUAAExlgABMZcAATGYAAExmgABMZsAATHAAAEx5AABMgsAATIvAAEyMgABMjQAATI2AAEyOAABMjoAATI8AAEyPQABMkAAATJNAAEyXAABMl4AATJgAAEyYgABMmQAATJmAAEyaAABMmoAATJ5AAEyfAABMn8AATKCAAEyhQABMogAATKLAAEyjgABMpAAATLPAAEy0QABMtMAATLVAAEy2AABMtkAATLaAAEy2wABMtwAATLeAAEy4AABMuEAATLiAAEy5AABMuUAATMkAAEzJgABMygAATMqAAEzLQABMy4AATMvAAEzMAABMzEAATMzAAEzNQABMzYAATM3AAEzOQABMzoAATN5AAEzewABM30AATN/AAEzggABM4MAATOEAAEzhQABM4YAATOIAAEzigABM4sAATOMAAEzjgABM48AATPOAAEz0AABM9IAATPUAAEz1wABM9gAATPZAAEz2gABM9sAATPdAAEz3wABM+AAATPhAAEz4wABM+QAATQjAAE0JQABNCcAATQpAAE0LAABNC0AATQuAAE0LwABNDAAATQyAAE0NAABNDUAATQ2AAE0OAABNDkAATR4AAE0egABNHwAATR+AAE0gQABNIIAATSDAAE0hAABNIUAATSHAAE0iQABNIoAATSLAAE0jQABNI4AATTNAAE0zwABNNIAATTUAAE01wABNNgAATTZAAE02gABNNsAATTdAAE03wABNOAAATThAAE04wABNOQAATUvAAE1UgABNXIAATWSAAE1lAABNZYAATWYAAE1mgABNZwAATWdAAE1ngABNaEAATWiAAE1pAABNaUAATWnAAE1qQABNaoAATWrAAE1rgABNa8AATW0AAE1wQABNcYAATXIAAE1ygABNc8AATXSAAE11QABNdcAATX8AAE2IAABNkcAATZrAAE2bgABNnAAATZyAAE2dAABNnYAATZ4AAE2eQABNnwAATaJAAE2mgABNpwAATaeAAE2oAABNqIAATakAAE2pgABNqgAATaqAAE2uwABNr4AATbBAAE2xAABNscAATbKAAE2zQABNtAAATbTAAE21QABNxQAATcWAAE3GAABNxoAATcdAAE3HgABNx8AATcgAAE3IQABNyMAATclAAE3JgABNycAATcpAAE3KgABN2kAATdrAAE3bQABN28AATdyAAE3cwABN3QAATd1AAE3dgABN3gAATd6AAE3ewABN3wAATd+AAE3fwABN74AATfAAAE3wwABN8UAATfIAAE3yQABN8oAATfLAAE3zAABN84AATfQAAE30QABN9IAATfUAAE31QABN+IAATfjAAE35AABN+YAATglAAE4JwABOCkAATgrAAE4LgABOC8AATgwAAE4MQABODIAATg0AAE4NgABODcAATg4AAE4OgABODsAATh6AAE4fAABOH4AATiAAAE4gwABOIQAATiFAAE4hgABOIcAATiJAAE4iwABOIwAATiNAAE4jwABOJAAATjPAAE40QABONMAATjVAAE42AABONkAATjaAAE42wABONwAATjeAAE44AABOOEAATjiAAE45AABOOUAATkkAAE5JgABOSgAATkqAAE5LQABOS4AATkvAAE5MAABOTEAATkzAAE5NQABOTYAATk3AAE5OQABOToAATl5AAE5ewABOX0AATl/AAE5ggABOYMAATmEAAE5hQABOYYAATmIAAE5igABOYsAATmMAAE5jgABOY8AATm0AAE52AABOf8AATojAAE6JgABOigAAToqAAE6LAABOi4AATowAAE6MQABOjQAATpBAAE6UAABOlIAATpUAAE6VgABOlgAATpaAAE6XAABOl4AATptAAE6cAABOnMAATp2AAE6eQABOnwAATp/AAE6ggABOoQAATrDAAE6xQABOscAATrJAAE6zAABOs0AATrOAAE6zwABOtAAATrSAAE61AABOtUAATrWAAE62AABOtkAATsYAAE7GgABOxwAATseAAE7IQABOyIAATsjAAE7JAABOyUAATsnAAE7KQABOyoAATsrAAE7LQABOy4AATttAAE7bwABO3EAATtzAAE7dgABO3cAATt4AAE7eQABO3oAATt8AAE7fgABO38AATuAAAE7ggABO4MAATvCAAE7xAABO8cAATvJAAE7zAABO80AATvOAAE7zwABO9AAATvSAAE71AABO9UAATvWAAE72AABO9kAATwYAAE8GgABPBwAATweAAE8IQABPCIAATwjAAE8JAABPCUAATwnAAE8KQABPCoAATwrAAE8LQABPC4AATxtAAE8bwABPHEAATxzAAE8dgABPHcAATx4AAE8eQABPHoAATx8AAE8fgABPH8AATyAAAE8ggABPIMAATzCAAE8xAABPMcAATzJAAE8zAABPM0AATzOAAE8zwABPNAAATzSAAE81AABPNUAATzWAAE82AABPNkAAT0kAAE9RwABPWcAAT2HAAE9iQABPYsAAT2NAAE9jwABPZIAAT2TAAE9lAABPZcAAT2YAAE9mgABPZsAAT2dAAE9oAABPaEAAT2iAAE9pQABPaYAAT2rAAE9uAABPb0AAT2/AAE9wQABPcYAAT3JAAE9zAABPc4AAT3zAAE+FwABPj4AAT5iAAE+ZQABPmcAAT5pAAE+awABPm0AAT5vAAE+cAABPnMAAT6AAAE+kQABPpMAAT6VAAE+lwABPpkAAT6bAAE+nQABPp8AAT6hAAE+sgABPrUAAT64AAE+uwABPr4AAT7BAAE+xAABPscAAT7KAAE+zAABPwsAAT8NAAE/DwABPxEAAT8UAAE/FQABPxYAAT8XAAE/GAABPxoAAT8cAAE/HQABPx4AAT8gAAE/IQABP2AAAT9iAAE/ZAABP2YAAT9pAAE/agABP2sAAT9sAAE/bQABP28AAT9xAAE/cgABP3MAAT91AAE/dgABP7UAAT+3AAE/ugABP7wAAT+/AAE/wAABP8EAAT/CAAE/wwABP8UAAT/HAAE/yAABP8kAAT/LAAE/zAABP9kAAT/aAAE/2wABP90AAUAcAAFAHgABQCAAAUAiAAFAJQABQCYAAUAnAAFAKAABQCkAAUArAAFALQABQC4AAUAvAAFAMQABQDIAAUBxAAFAcwABQHUAAUB3AAFAegABQHsAAUB8AAFAfQABQH4AAUCAAAFAggABQIMAAUCE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AAFiVAABYlUAAWJWAAFiVwABYlkAAWJbAAFiXAABYl0AAWJfAAFiYAABYm0AAWJuAAFibwABYnEAAWKwAAFisgABYrQAAWK2AAFiuQABYroAAWK7AAFivAABYr0AAWK/AAFiwQABYsIAAWLDAAFixQABYsYAAWMFAAFjBwABYwkAAWMLAAFjDgABYw8AAWMQAAFjEQABYxIAAWMUAAFjFgABYxcAAWMYAAFjGgABYxsAAWNaAAFjXAABY14AAWNgAAFjYwABY2QAAWNlAAFjZgABY2cAAWNpAAFjawABY2wAAWNtAAFjbwABY3AAAWOvAAFjsQABY7MAAWO1AAFjuAABY7kAAWO6AAFjuwABY7wAAWO+AAFjwAABY8EAAWPCAAFjxAABY8UAAWQEAAFkBgABZAgAAWQKAAFkDQABZA4AAWQPAAFkEAABZBEAAWQTAAFkFQABZBYAAWQXAAFkGQABZBoAAWQ/AAFkYwABZIoAAWSuAAFksQABZLMAAWS1AAFktwABZLkAAWS7AAFkvAABZL8AAWTMAAFk2wABZN0AAWTfAAFk4QABZOMAAWTlAAFk5wABZOkAAWT4AAFk+wABZP4AAWUBAAFlBAABZQcAAWUKAAFlDQABZQ8AAWVOAAFlUAABZVMAAWVVAAFlWAABZVkAAWVaAAFlWwABZVwAAWVeAAFlYAABZWEAAWViAAFlZAABZWUAAWVnAAFlpgABZagAAWWqAAFlrAABZa8AAWWwAAFlsQABZbIAAWWzAAFltQABZbcAAWW4AAFluQABZbsAAWW8AAFl+wABZf0AAWX/AAFmAQABZgQAAWYFAAFmBgABZgcAAWYIAAFmCgABZgwAAWYNAAFmDgABZhAAAWYRAAFmUAABZlIAAWZVAAFmVwABZloAAWZbAAFmXAABZl0AAWZeAAFmYAABZmIAAWZjAAFmZAABZmYAAWZnAAFmaQABZqgAAWaqAAFmrAABZq4AAWaxAAFmsgABZrMAAWa0AAFmtQABZrcAAWa5AAFmugABZrsAAWa9AAFmvgABZv0AAWb/AAFnAQABZwMAAWcGAAFnBwABZwgAAWcJAAFnCgABZwwAAWcOAAFnDwABZxAAAWcSAAFnEwABZ1IAAWdUAAFnVgABZ1gAAWdbAAFnXAABZ10AAWdeAAFnXwABZ2EAAWdjAAFnZAABZ2UAAWdn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AAF4cwABeJcAAXi+AAF44gABeOUAAXjnAAF46QABeOsAAXjtAAF47wABePAAAXjzAAF5AAABeREAAXkTAAF5FQABeRcAAXkZAAF5GwABeR0AAXkfAAF5IQABeTIAAXk1AAF5OAABeTsAAXk+AAF5QQABeUQAAXlHAAF5SgABeUwAAXmLAAF5jQABeY8AAXmRAAF5lAABeZUAAXmWAAF5lwABeZgAAXmaAAF5nAABeZ0AAXmeAAF5oAABeaEAAXngAAF54gABeeQAAXnmAAF56QABeeoAAXnrAAF57AABee0AAXnvAAF58QABefIAAXnzAAF59QABefYAAXo1AAF6NwABejoAAXo8AAF6PwABekAAAXpBAAF6QgABekMAAXpFAAF6RwABekgAAXpJAAF6SwABekwAAXpZAAF6WgABelsAAXpdAAF6nAABep4AAXqgAAF6ogABeqUAAXqmAAF6pwABeqgAAXqpAAF6qwABeq0AAXquAAF6rwABerEAAXqyAAF68QABevMAAXr1AAF69wABevoAAXr7AAF6/AABev0AAXr+AAF7AAABewIAAXsDAAF7BAABewYAAXsHAAF7RgABe0gAAXtKAAF7TAABe08AAXtQAAF7UQABe1IAAXtTAAF7VQABe1cAAXtYAAF7WQABe1sAAXtcAAF7mwABe50AAXufAAF7oQABe6QAAXulAAF7pgABe6cAAXuoAAF7qgABe6wAAXutAAF7rgABe7AAAXuxAAF78AABe/IAAXv0AAF79gABe/kAAXv6AAF7+wABe/wAAXv9AAF7/wABfAEAAXwCAAF8AwABfAUAAXwGAAF8KwABfE8AAXx2AAF8mgABfJ0AAXyfAAF8oQABfKMAAXylAAF8pwABfKgAAXyrAAF8uAABfMcAAXzJAAF8ywABfM0AAXzPAAF80QABfNMAAXzVAAF85AABfOcAAXzqAAF87QABfPAAAXzzAAF89gABfPkAAXz7AAF9OgABfTwAAX0+AAF9QAABfUMAAX1EAAF9RQABfUYAAX1HAAF9SQABfUsAAX1MAAF9TQABfU8AAX1QAAF9jwABfZEAAX2TAAF9lQABfZgAAX2ZAAF9mgABfZsAAX2cAAF9ngABfaAAAX2hAAF9ogABfaQAAX2lAAF95AABfeYAAX3oAAF96gABfe0AAX3uAAF97wABffAAAX3x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AAGlEwABpRQAAaUWAAGlGAABpRkAAaUaAAGlHAABpR0AAaVcAAGlXgABpWAAAaViAAGlZQABpWYAAaVnAAGlaAABpWkAAaVrAAGlbQABpW4AAaVvAAGlcQABpXIAAaWxAAGlswABpbUAAaW3AAGlugABpbsAAaW8AAGlvQABpb4AAaXAAAGlwgABpcMAAaXEAAGlxgABpccAAaYGAAGmCAABpgsAAaYNAAGmEAABphEAAaYSAAGmEwABphQAAaYWAAGmGAABphkAAaYaAAGmHAABph0AAaYgAAGmXwABpmEAAaZjAAGmZQABpmgAAaZpAAGmagABpmsAAaZsAAGmbgABpnAAAaZxAAGmcgABpnQAAaZ1AAGmtAABprYAAaa4AAGmugABpr0AAaa+AAGmvwABpsAAAabBAAGmwwABpsUAAabGAAGmxwABpskAAabKAAGnCQABpwsAAacNAAGnDwABpxIAAacTAAGnFAABpxUAAacWAAGnGAABpxoAAacbAAGnHAABpx4AAacfAAGnagABp40AAaetAAGnzQABp88AAafRAAGn0wABp9UAAafXAAGn2AABp9kAAafcAAGn3QABp98AAafgAAGn4gABp+QAAaflAAGn5gABp+kAAafqAAGn7wABp/wAAagBAAGoAwABqAUAAagKAAGoDQABqBAAAagSAAGoNwABqFsAAaiCAAGopgABqKkAAairAAGorQABqK8AAaixAAGoswABqLQAAai3AAGoxAABqNUAAajXAAGo2QABqNsAAajdAAGo3wABqOEAAajjAAGo5QABqPYAAaj5AAGo/AABqP8AAakCAAGpBQABqQgAAakLAAGpDgABqRAAAalPAAGpUQABqVMAAalVAAGpWAABqVkAAalaAAGpWwABqVwAAaleAAGpYAABqWEAAaliAAGpZAABqWUAAamkAAGppgABqagAAamqAAGprQABqa4AAamvAAGpsAABqbEAAamzAAGptQABqbYAAam3AAGpuQABqboAAan5AAGp+wABqf4AAaoAAAGqAwABqgQAAaoFAAGqBgABqgcAAaoJAAGqCwABqgwAAaoNAAGqDwABqhAAAaodAAGqHgABqh8AAaohAAGqYAABqmIAAapkAAGqZgABqmkAAapqAAGqawABqmwAAaptAAGqbwABqnEAAapyAAGqcwABqnUAAap2AAGqtQABqrcAAaq5AAGquwABqr4AAaq/AAGqwAABqsEAAarCAAGqxAABqsYAAarHAAGqyAABqsoAAarLAAGrCgABqwwAAasOAAGrEAABqxMAAasUAAGrFQABqxYAAasXAAGrGQABqxsAAascAAGrHQABqx8AAasgAAGrXwABq2EAAatjAAGrZQABq2gAAatpAAGragABq2sAAatsAAGrbgABq3AAAatxAAGrcgABq3QAAat1AAGrtAABq7YAAau4AAGrugABq70AAau+AAGrvwABq8AAAavBAAGrwwABq8UAAavGAAGrxwABq8kAAavKAAGr7wABrBMAAaw6AAGsXgABrGEAAaxjAAGsZQABrGcAAaxpAAGsawABrGwAAaxvAAGsfAABrIsAAayNAAGsjwABrJEAAayTAAGslQABrJcAAayZAAGsqAABrKsAAayuAAGssQABrLQAAay3AAGsugABrL0AAay/AAGs/gABrQAAAa0CAAGtBAABrQcAAa0IAAGtCQABrQoAAa0LAAGtDQABrQ8AAa0QAAGtEQABrRMAAa0UAAGtUwABrVUAAa1XAAGtWQABrVwAAa1dAAGtXgABrV8AAa1gAAGtYgABrWQAAa1lAAGtZgABrWgAAa1pAAGtqAABraoAAa2sAAGtrgABrbEAAa2yAAGtswABrbQAAa21AAGttwABrbkAAa26AAGtuwABrb0AAa2+AAGt/QABrf8AAa4CAAGuBAABrgcAAa4IAAGuCQABrgoAAa4LAAGuDQABrg8AAa4QAAGuEQABrhMAAa4UAAGuUwABrlUAAa5XAAGuWQABrlwAAa5dAAGuXgABrl8AAa5gAAGuYgABrmQAAa5lAAGuZgABrmgAAa5pAAGuqAABrqoAAa6sAAGurgABrrEAAa6yAAGuswABrrQAAa61AAGutwABrrkAAa66AAGuuwABrr0AAa6+AAGu/QABrv8AAa8BAAGvAwABrwYAAa8HAAGvCAABrwkAAa8KAAGvDAABrw4AAa8PAAGvEAABrxIAAa8TAAGvXgABr4EAAa+hAAGvwQABr8MAAa/FAAGvxwABr8kAAa/LAAGvzAABr80AAa/QAAGv0QABr9MAAa/UAAGv1gABr9gAAa/ZAAGv2gABr90AAa/eAAGv4wABr/AAAa/1AAGv9wABr/kAAa/+AAGwAQABsAQAAbAGAAGwKwABsE8AAbB2AAGwmgABsJ0AAbCfAAGwoQABsKMAAbClAAGwpwABsKgAAbCrAAGwuAABsMkAAbDLAAGwzQABsM8AAbDRAAGw0wABsNUAAbDXAAGw2QABsOoAAbDtAAGw8AABsPMAAbD2AAGw+QABsPwAAbD/AAGxAgABsQQAAbFDAAGxRQABsUcAAbFJAAGxTAABsU0AAbFOAAGxTwABsVAAAbFSAAGxVAABsVUAAbFWAAGxWAABsVkAAbGYAAGxmgABsZwAAbGeAAGxoQABsaIAAbGjAAGxpAABsaUAAbGnAAGxqQABsaoAAbGrAAGxrQABsa4AAbHtAAGx7wABsfIAAbH0AAGx9wABsfgAAbH5AAGx+gABsfsAAbH9AAGx/wABsgAAAbIBAAGyAwABsgQAAbIRAAGyEgABshMAAbIVAAGyVAABslYAAbJYAAGyWgABsl0AAbJeAAGyXwABsmAAAbJhAAGyYwABsmUAAbJmAAGyZwABsmkAAbJqAAGyqQABsqsAAbKtAAGyrwABsrIAAbKzAAGytAABsrUAAbK2AAGyuAABsroAAbK7AAGyvAABsr4AAbK/AAGy/gABswAAAbMCAAGzBAABswcAAbMIAAGzCQABswoAAbMLAAGzDQABsw8AAbMQAAGzEQABsxMAAbMUAAGzUwABs1UAAbNXAAGzWQABs1wAAbNdAAGzXgABs18AAbNgAAGzYgABs2QAAbNlAAGzZgABs2gAAbNpAAGzqAABs6oAAbOsAAGzrgABs7EAAbOyAAGzswABs7QAAbO1AAGztwABs7kAAbO6AAGzuwABs70AAbO+AAGz4wABtAcAAbQuAAG0UgABtFUAAbRXAAG0WQABtFsAAbRdAAG0XwABtGAAAbRjAAG0cAABtH8AAbSBAAG0gwABtIUAAbSHAAG0iQABtIsAAbSNAAG0nAABtJ8AAbSiAAG0pQABtKgAAbSrAAG0rgABtLEAAbSzAAG08gABtPQAAbT3AAG0+QABtPwAAbT9AAG0/gABtP8AAbUAAAG1AgABtQQAAbUFAAG1BgABtQgAAbUJAAG1SAABtUoAAbVMAAG1TgABtVEAAbVSAAG1UwABtVQAAbVVAAG1VwABtVkAAbVaAAG1WwABtV0AAbVeAAG1nQABtZ8AAbWhAAG1owABtaYAAbWnAAG1qAABtakAAbWqAAG1rAABta4AAbWvAAG1sAABtbIAAbWzAAG18gABtfQAAbX3AAG1+QABtfwAAbX9AAG1/gABtf8AAbYAAAG2AgABtgQAAbYFAAG2BgABtggAAbYJAAG2SAABtkoAAbZMAAG2TgABtlEAAbZSAAG2UwABtlQAAbZVAAG2VwABtlkAAbZaAAG2WwABtl0AAbZeAAG2nQABtp8AAbahAAG2owABtqYAAbanAAG2qAABtqkAAbaqAAG2rAABtq4AAbavAAG2sAABtrIAAbazAAG28gABtvQAAbb2AAG2+AABtvsAAbb8AAG2/QABtv4AAbb/AAG3AQABtwMAAbcEAAG3BQABtwcAAbcIAAG3UwABt3YAAbeWAAG3tgABt7gAAbe6AAG3vAABt74AAbfAAAG3wQABt8IAAbfFAAG3xgABt8gAAbfJAAG3ywABt80AAbfOAAG3zwABt9IAAbfTAAG32AABt+UAAbfqAAG37AABt+4AAbfzAAG39gABt/kAAbf7AAG4IAABuEQAAbhrAAG4jwABuJIAAbiUAAG4lgABuJgAAbiaAAG4nAABuJ0AAbigAAG4rQABuL4AAbjAAAG4wgABuMQAAbjGAAG4yAABuMoAAbjMAAG4zgABuN8AAbjiAAG45QABuOgAAbjrAAG47gABuPEAAbj0AAG49wABuPkAAbk4AAG5OgABuTwAAbk+AAG5QQABuUIAAblDAAG5RAABuUUAAblHAAG5SQABuUoAAblLAAG5TQABuU4AAbmNAAG5jwABuZEAAbmTAAG5lgABuZcAAbmYAAG5mQABuZoAAbmcAAG5ngABuZ8AAbmgAAG5ogABuaMAAbniAAG55AABuecAAbnpAAG57AABue0AAbnuAAG57wABufAAAbnyAAG59AABufUAAbn2AAG5+AABufkAAboGAAG6BwABuggAAboKAAG6SQABuksAAbpNAAG6TwABulIAAbpTAAG6VAABulUAAbpWAAG6WAABuloAAbpbAAG6XAABul4AAbpfAAG6ngABuqAAAbqiAAG6pAABuqcAAbqoAAG6qQABuqoAAbqrAAG6rQABuq8AAbqwAAG6sQABurMAAbq0AAG68wABuvUAAbr3AAG6+QABuvwAAbr9AAG6/gABuv8AAbsAAAG7AgABuwQAAbsFAAG7BgABuwgAAbsJAAG7SAABu0oAAbtM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AAHHmgABx5wAAcefAAHHoAABx6EAAceiAAHHowABx6UAAcenAAHHqAABx6kAAcerAAHHrAABx+sAAcftAAHH7wABx/EAAcf0AAHH9QABx/YAAcf3AAHH+AABx/oAAcf8AAHH/QABx/4AAcgAAAHIAQAByEAAAchCAAHIRAAByEYAAchJAAHISgAByEsAAchMAAHITQAByE8AAchRAAHIUgAByFMAAchVAAHIVgAByHsAAcifAAHIxgAByOoAAcjtAAHI7wAByPEAAcjzAAHI9QAByPcAAcj4AAHI+wAByQgAAckXAAHJGQAByRsAAckdAAHJHwABySEAAckjAAHJJQAByTQAAck3AAHJOgAByT0AAclAAAHJQwAByUYAAclJAAHJSwAByYoAAcmMAAHJjwAByZEAAcmUAAHJlQAByZYAAcmXAAHJmAAByZoAAcmcAAHJnQAByZ4AAcmgAAHJoQAByeAAAcniAAHJ5AAByeYAAcnpAAHJ6gAByesAAcnsAAHJ7QABye8AAcnxAAHJ8gAByfMAAcn1AAHJ9gAByjUAAco3AAHKOQAByjsAAco+AAHKPwABykAAAcpBAAHKQgABykQAAcpGAAHKRwABykgAAcpKAAHKSwAByooAAcqMAAHKjwABypEAAcqUAAHKlQABypYAAcqXAAHKmAABypoAAcqcAAHKnQAByp4AAcqgAAHKoQAByuAAAcriAAHK5AAByuYAAcrpAAHK6gAByusAAcrsAAHK7QAByu8AAcrxAAHK8gAByvMAAcr1AAHK9gAByzUAAcs3AAHLOQAByzsAAcs+AAHLPwABy0AAActBAAHLQgABy0QAActGAAHLRwABy0gAActKAAHLSwABy4oAAcuMAAHLjgABy5AAAcuTAAHLlAABy5UAAcuWAAHLlwABy5kAAcubAAHLnAABy50AAcufAAHLoAABy+sAAcwOAAHMLgABzE4AAcxQAAHMUgABzFQAAcxWAAHMWQABzFoAAcxbAAHMXgABzF8AAcxhAAHMYgABzGQAAcxnAAHMaAABzGkAAcxsAAHMbQABzHIAAcx/AAHMhAABzIYAAcyIAAHMjQABzJAAAcyTAAHMlQABzLoAAczeAAHNBQABzSkAAc0sAAHNLgABzTAAAc0yAAHNNAABzTYAAc03AAHNOgABzUcAAc1YAAHNWgABzVwAAc1e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AAH/WwAB/1wAAf9dAAH/XgAB/18AAf9hAAH/YwAB/2QAAf9lAAH/ZwAB/2gAAf+nAAH/qQAB/6sAAf+tAAH/sAAB/7EAAf+yAAH/swAB/7QAAf+2AAH/uAAB/7kAAf+6AAH/vAAB/70AAf/8AAH//gACAAEAAgADAAIABgACAAcAAgAIAAIACQACAAoAAgAMAAIADgACAA8AAgAQAAIAEgACABMAAgAgAAIAIQACACIAAgAkAAIAYwACAGUAAgBnAAIAaQACAGwAAgBtAAIAbgACAG8AAgBwAAIAcgACAHQAAgB1AAIAdgACAHgAAgB5AAIAuAACALoAAgC8AAIAvgACAMEAAgDCAAIAwwACAMQAAgDFAAIAxwACAMkAAgDKAAIAywACAM0AAgDOAAIBDQACAQ8AAgERAAIBEwACARYAAgEXAAIBGAACARkAAgEaAAIBHAACAR4AAgEfAAIBIAACASIAAgEjAAIBYgACAWQAAgFmAAIBaAACAWsAAgFsAAIBbQACAW4AAgFvAAIBcQACAXMAAgF0AAIBdQACAXcAAgF4AAIBtwACAbkAAgG7AAIBvQACAcAAAgHBAAIBwgACAcMAAgHEAAIBxgACAcgAAgHJAAIBygACAcwAAgHNAAIB8gACAhYAAgI9AAICYQACAmQAAgJmAAICaAACAmoAAgJsAAICbgACAm8AAgJyAAICfwACAo4AAgKQAAICkgACApQAAgKWAAICmAACApoAAgKcAAICqwACAq4AAgKxAAICtAACArcAAgK6AAICvQACAsAAAgLCAAIDAQACAwMAAgMFAAIDBwACAwoAAgMLAAIDDAACAw0AAgMOAAIDEAACAxIAAgMTAAIDFAACAxYAAgMXAAIDVgACA1gAAgNbAAIDXQACA2AAAgNhAAIDYgACA2MAAgNkAAIDZgACA2gAAgNpAAIDagACA2wAAgNtAAIDrAACA64AAgOwAAIDsgACA7UAAgO2AAIDtwACA7gAAgO5AAIDuwACA70AAgO+AAIDvwACA8EAAgPCAAIEAQACBAMAAgQGAAIECAACBAsAAgQMAAIEDQACBA4AAgQPAAIEEQACBBMAAgQUAAIEFQACBBcAAgQYAAIEWwACBH8AAgSjAAIExgACBO0AAgUNAAIFNAACBVsAAgV7AAIFnwACBcMAAgXFAAIFyAACBcoAAgXMAAIFzgACBdEAAgXUAAIF1gACBdgAAgXbAAIF3QACBd8AAgXiAAIF5QACBeYAAgXrAAIF+AACBfsAAgX9AAIGAAACBgMAAgYFAAIGKgACBk4AAgZ1AAIGmQACBpwAAgaeAAIGoAACBqIAAgakAAIGpgACBqcAAgaqAAIGtwACBsoAAgbMAAIGzgACBtAAAgbSAAIG1AACBtYAAgbYAAIG2gACBtwAAgbvAAIG8gACBvUAAgb4AAIG+wACBv4AAgcBAAIHBAACBwcAAgcKAAIHDAACB0sAAgdNAAIHUAACB1IAAgdVAAIHVgACB1cAAgdYAAIHWQACB1sAAgddAAIHXgACB18AAgdhAAIHYgACB2sAAgdsAAIHbgACB60AAgevAAIHsQACB7MAAge2AAIHtwACB7gAAge5AAIHugACB7wAAge+AAIHvwACB8AAAgfCAAIHwwACCAIAAggEAAIIBwACCAkAAggMAAIIDQACCA4AAggPAAIIEAACCBIAAggUAAIIFQACCBYAAggYAAIIGQACCCIAAggjAAIIJQACCGQAAghmAAIIaAACCGoAAghtAAIIbgACCG8AAghwAAIIcQACCHMAAgh1AAIIdgACCHcAAgh5AAIIegACCLkAAgi7AAIIvgACCMAAAgjDAAIIxAACCMUAAgjGAAIIxwACCMkAAgjLAAIIzAACCM0AAgjPAAII0AACCNkAAgjaAAII3AACCRsAAgkdAAIJHwACCSEAAgkkAAIJJQACCSYAAgknAAIJKAACCSoAAgksAAIJLQACCS4AAgkwAAIJMQACCXAAAglyAAIJdQACCXcAAgl6AAIJewACCXwAAgl9AAIJfgACCYAAAgmCAAIJgwACCYQAAgmGAAIJhwACCZQAAgmVAAIJlgACCZgAAgnXAAIJ2QACCdsAAgndAAIJ4AACCeEAAgniAAIJ4wACCeQAAgnmAAIJ6AACCekAAgnqAAIJ7AACCe0AAgosAAIKLgACCjAAAgoyAAIKNQACCjYAAgo3AAIKOAACCjkAAgo7AAIKPQACCj4AAgo/AAIKQQACCkIAAgpPAAIKWAACClsAAgpdAAIKYAACCmMAAgpsAAIKbwACCnIAAgp1AAIKeAACCnoAAgp/AAIKhAACCokAAgrUAAIK9wACCxcAAgs3AAILOQACCzsAAgs9AAILPwACC0IAAgtDAAILRAACC0cAAgtIAAILSgACC0sAAgtNAAILUAACC1EAAgtSAAILVQACC1YAAgtfAAILbAACC3EAAgtzAAILdQACC3oAAgt9AAILgAACC4IAAgunAAILywACC/IAAgwWAAIMGQACDBsAAgwdAAIMHwACDCEAAgwjAAIMJAACDCcAAgw0AAIMRQACDEcAAgxJAAIMSwACDE0AAgxPAAIMUQACDFMAAgxVAAIMZgACDGkAAgxsAAIMbwACDHIAAgx1AAIMeAACDHsAAgx+AAIMgAACDL8AAgzBAAIMwwACDMUAAgzIAAIMyQACDMoAAgzLAAIMzAACDM4AAgzQAAIM0QACDNIAAgzUAAIM1QACDRQAAg0WAAINGAACDRoAAg0dAAINHgACDR8AAg0gAAINIQACDSMAAg0lAAINJgACDScAAg0pAAINKgACDWkAAg1rAAINbgACDXAAAg1zAAINdAACDXUAAg12AAINdwACDXkAAg17AAINfAACDX0AAg1/AAINgAACDY0AAg2OAAINjwACDZEAAg3QAAIN0gACDdQAAg3WAAIN2QACDdoAAg3bAAIN3AACDd0AAg3fAAIN4QACDeIAAg3jAAIN5QACDeYAAg4lAAIOJwACDikAAg4rAAIOLgACDi8AAg4wAAIOMQACDjIAAg40AAIONgACDjcAAg44AAIOOgACDjsAAg56AAIOfAACDn4AAg6AAAIOgwACDoQAAg6FAAIOhgACDocAAg6JAAIOiwACDowAAg6NAAIOjwACDpAAAg7PAAIO0QACDtMAAg7VAAIO2AACDtkAAg7aAAIO2wACDtwAAg7eAAIO4AACDuEAAg7iAAIO5AACDuUAAg8kAAIPJgACDygAAg8qAAIPLQACDy4AAg8vAAIPMAACDzEAAg8zAAIPNQACDzYAAg83AAIPOQACDzoAAg9fAAIPgwACD6oAAg/OAAIP0QACD9MAAg/VAAIP1wACD9kAAg/bAAIP3AACD98AAg/sAAIP+wACD/0AAg//AAIQAQACEAMAAhAFAAIQBwACEAkAAhAYAAIQGwACEB4AAhAhAAIQJAACECcAAhAqAAIQLQACEC8AAhBuAAIQcAACEHIAAhB0AAIQdwACEHgAAhB5AAIQegACEHsAAhB9AAIQfwACEIAAAhCBAAIQgwACEIQAAhDDAAIQxQACEMcAAhDJAAIQzAACEM0AAhDOAAIQzwACENAAAhDSAAIQ1AACENUAAhDWAAIQ2AACENkAAhEYAAIRGgACERwAAhEeAAIRIQACESIAAhEjAAIRJAACESUAAhEnAAIRKQACESoAAhErAAIRLQACES4AAhFtAAIRbwACEXEAAhFzAAIRdgACEXcAAhF4AAIReQACEXoAAhF8AAIRfgACEX8AAhGAAAIRggACEYMAAhHCAAIRxAACEcYAAhHIAAIRywACEcwAAhHNAAIRzgACEc8AAhHRAAIR0wACEdQAAhHVAAIR1wACEdgAAhIXAAISGQACEhsAAhIdAAISIAACEiEAAhIiAAISIwACEiQAAhImAAISKAACEikAAhIqAAISLAACEi0AAhJsAAISbgACEnEAAhJzAAISdgACEncAAhJ4AAISeQACEnoAAhJ8AAISfgACEn8AAhKAAAISggACEoMAAhLOAAIS8QACExEAAhMxAAITMwACEzUAAhM3AAITOQACEzwAAhM9AAITPgACE0EAAhNCAAITRAACE0UAAhNHAAITSQACE0oAAhNLAAITTgACE08AAhNUAAITYQACE2YAAhNoAAITagACE28AAhNyAAITdQACE3cAAhOcAAITwAACE+cAAhQLAAIUDgACFBAAAhQSAAIUFAACFBYAAhQYAAIUGQACFBwAAhQpAAIUOgACFDwAAhQ+AAIUQAACFEIAAhREAAIURgACFEgAAhRKAAIUWwACFF4AAhRhAAIUZAACFGcAAhRqAAIUbQACFHAAAhRzAAIUdQACFLQAAhS2AAIUuAACFLoAAhS9AAIUvgACFL8AAhTAAAIUwQACFMMAAhTFAAIUxgACFMcAAhTJAAIUygACFQkAAhULAAIVDQACFQ8AAhUSAAIVEwACFRQAAhUVAAIVFgACFRgAAhUaAAIVGwACFRwAAhUeAAIVHwACFV4AAhVgAAIVYwACFWUAAhVoAAIVaQACFWoAAhVrAAIVbAACFW4AAhVwAAIVcQACFXIAAhV0AAIVdQACFYIAAhWDAAIVhAACFYYAAhXFAAIVxwACFckAAhXLAAIVzgACFc8AAhXQAAIV0QACFdIAAhXUAAIV1gACFdcAAhXYAAIV2gACFdsAAhYaAAIWHAACFh4AAhYgAAIWIwACFiQAAhYlAAIWJgACFicAAhYpAAIWKwACFiwAAhYtAAIWLwACFjAAAhZvAAIWcQACFnMAAhZ1AAIWeAACFnkAAhZ6AAIWewACFnwAAhZ+AAIWgAACFoEAAhaCAAIWhAACFoUAAhbEAAIWxgACFsgAAhbKAAIWzQACFs4AAhbPAAIW0AACFtEAAhbTAAIW1QACFtYAAhbXAAIW2QACFtoAAhcZAAIXGwACFx0AAhcfAAIXIgACFyMAAhckAAIXJQACFyYAAhcoAAIXKgACFysAAhcsAAIXLgACFy8AAhdUAAIXeAACF58AAhfDAAIXxgACF8gAAhfKAAIXzAACF84AAhfQAAIX0QACF9QAAhfhAAIX8AACF/IAAhf0AAIX9gACF/gAAhf6AAIX/AACF/4AAhgNAAIYEAACGBMAAhgWAAIYGQACGBwAAhgfAAIYIgACGCQAAhhjAAIYZQACGGgAAhhqAAIYbQACGG4AAhhvAAIYcAACGHEAAhhzAAIYdQACGHYAAhh3AAIYeQACGHoAAhi5AAIYuwACGL0AAhi/AAIYwgACGMMAAhjEAAIYxQACGMYAAhjIAAIYygACGMsAAhjMAAIYzgACGM8AAhkOAAIZEAACGRIAAhkUAAIZFwACGRgAAhkZAAIZGgACGRsAAhkdAAIZHwACGSAAAhkhAAIZIwACGSQAAhljAAIZZQACGWgAAhlqAAIZbQACGW4AAhlvAAIZcAACGXEAAhlzAAIZdQACGXYAAhl3AAIZeQACGXoAAhm5AAIZuwACGb0AAhm/AAIZwgACGcMAAhnEAAIZxQACGcYAAhnIAAIZygACGcsAAhnMAAIZzgACGc8AAhoOAAIaEAACGhIAAhoUAAIaFwACGhgAAhoZAAIaGgACGhsAAhodAAIaHwACGiAAAhohAAIaIwACGiQAAhpjAAIaZQACGmcAAhppAAIabAACGm0AAhpuAAIabwACGnAAAhpyAAIadAACGnUAAhp2AAIaeAACGnkAAhrEAAIa5wACGwcAAhsnAAIbKQACGysAAhstAAIbLwACGzIAAhszAAIbNAACGzcAAhs4AAIbOgACGzsAAhs9AAIbQAACG0EAAhtCAAIbRQACG0YAAhtPAAIbXAACG2EAAhtjAAIbZQACG2oAAhttAAIbcAACG3IAAhuXAAIbuwACG+IAAhwGAAIcCQACHAsAAhwNAAIcDwACHBEAAhwTAAIcFAACHBcAAhwkAAIcNQACHDcAAhw5AAIcOwACHD0AAhw/AAIcQQACHEMAAhxFAAIcVgACHFkAAhxcAAIcXwACHGIAAhxlAAIcaAACHGsAAhxuAAIccAACHK8AAhyxAAIcswACHLUAAhy4AAIcuQACHLoAAhy7AAIcvAACHL4AAhzAAAIcwQACHMIAAhzEAAIcxQACHQQAAh0GAAIdCAACHQoAAh0NAAIdDgACHQ8AAh0QAAIdEQACHRMAAh0VAAIdFgACHRcAAh0ZAAIdGgACHVkAAh1bAAIdXgACHWAAAh1jAAIdZAACHWUAAh1mAAIdZwACHWkAAh1rAAIdbAACHW0AAh1vAAIdcAACHX0AAh1+AAIdfwACHYEAAh3AAAIdwgACHcQAAh3GAAIdyQACHcoAAh3LAAIdzAACHc0AAh3PAAId0QACHdIAAh3TAAId1QACHdYAAh4VAAIeFwACHhkAAh4bAAIeHgACHh8AAh4gAAIeIQACHiIAAh4kAAIeJgACHicAAh4oAAIeKgACHisAAh5qAAIebAACHm4AAh5wAAIecwACHnQAAh51AAIedgACHncAAh55AAIeewACHnwAAh59AAIefwACHoAAAh6/AAIewQACHsMAAh7FAAIeyAACHskAAh7KAAIeywACHswAAh7OAAIe0AACHtEAAh7SAAIe1AACHtUAAh8UAAIfFgACHxgAAh8aAAIfHQACHx4AAh8fAAIfIAACHyEAAh8jAAIfJQACHyYAAh8nAAIfKQACHyoAAh9PAAIfcwACH5oAAh++AAIfwQACH8MAAh/FAAIfxwACH8kAAh/LAAIfzAACH88AAh/cAAIf6wACH+0AAh/vAAIf8QACH/MAAh/1AAIf9wACH/kAAiAIAAIgCwACIA4AAiARAAIgFAACIBcAAiAaAAIgHQACIB8AAiBeAAIgYAACIGMAAiBlAAIgaAACIGkAAiBqAAIgawACIGwAAiBuAAIgcAACIHEAAiByAAIgdAACIHUAAiC0AAIgtgACILgAAiC6AAIgvQACIL4AAiC/AAIgwAACIMEAAiDDAAIgxQACIMYAAiDHAAIgyQACIMoAAiEJAAIhCwACIQ0AAiEPAAIhEgACIRMAAiEUAAIhFQACIRYAAiEYAAIhGgACIRsAAiEcAAIhHgACIR8AAiFeAAIhYAACIWMAAiFlAAIhaAACIWkAAiFqAAIhawACIWwAAiFuAAIhcAACIXEAAiFyAAIhdAACIXUAAiG0AAIhtgACIbgAAiG6AAIhvQACIb4AAiG/AAIhwAACIcEAAiHDAAIhxQACIcYAAiHHAAIhyQACIcoAAiIJAAIiCwACIg0AAiIPAAIiEgACIhMAAiIUAAIiFQACIhYAAiIYAAIiGgACIhsAAiIcAAIiHgACIh8AAiJeAAIiYAACImIAAiJkAAIiZwACImgAAiJpAAIiagACImsAAiJtAAIibwACInAAAiJxAAIicwACInQAAiK/AAIi4gACIwIAAiMiAAIjJAACIyYAAiMoAAIjKgACIy0AAiMuAAIjLwACIzIAAiMzAAIjNQACIzYAAiM4AAIjOwACIzwAAiM9AAIjQAACI0EAAiNGAAIjUwACI1gAAiNaAAIjXAACI2EAAiNkAAIjZwACI2kAAiOOAAIjsgACI9kAAiP9AAIkAAACJAIAAiQEAAIkBgACJAgAAiQKAAIkCwACJA4AAiQbAAIkLAACJC4AAiQwAAIkMgACJDQAAiQ2AAIkOAACJDoAAiQ8AAIkTQACJFAAAiRTAAIkVgACJFkAAiRcAAIkXwACJGIAAiRlAAIkZwACJKYAAiSoAAIkqgACJKwAAiSvAAIksAACJLEAAiSyAAIkswACJLUAAiS3AAIkuAACJLkAAiS7AAIkvAACJPsAAiT9AAIk/wACJQEAAiUEAAIlBQACJQYAAiUHAAIlCAACJQoAAiUMAAIlDQACJQ4AAiUQAAIlEQACJVAAAiVSAAIlVQACJVcAAiVaAAIlWwACJVwAAiVdAAIlXgACJWAAAiViAAIlYwACJWQAAiVmAAIlZwACJXQAAiV1AAIldgACJXgAAiW3AAIluQACJbsAAiW9AAIlwAACJcEAAiXCAAIlwwACJcQAAiXGAAIlyAACJckAAiXKAAIlzAACJc0AAiYMAAImDgACJhAAAiYSAAImFQACJhYAAiYXAAImGAACJhkAAiYbAAImHQACJh4AAiYfAAImIQACJiIAAiZhAAImYwACJmUAAiZnAAImagACJmsAAiZsAAImbQACJm4AAiZwAAImcgACJnMAAiZ0AAImdgACJncAAia2AAImuAACJroAAia8AAImvwACJsAAAibBAAImwgACJsMAAibFAAImxwACJsgAAibJAAImywACJswAAicLAAInDQACJw8AAicRAAInFAACJxUAAicWAAInFwACJxgAAicaAAInHAACJx0AAiceAAInIAACJyEAAidGAAInagACJ5EAAie1AAInuAACJ7oAAie8AAInvgACJ8AAAifCAAInwwACJ8YAAifTAAIn4gACJ+QAAifmAAIn6AACJ+oAAifsAAIn7gACJ/AAAif/AAIoAgACKAUAAigIAAIoCwACKA4AAigRAAIoFAACKBYAAihVAAIoVwACKFkAAihbAAIoXgACKF8AAihgAAIoYQACKGIAAihkAAIoZgACKGcAAihoAAIoagACKGsAAiiqAAIorAACKK4AAiiwAAIoswACKLQAAii1AAIotgACKLcAAii5AAIouwACKLwAAii9AAIovwACKMAAAij/AAIpAQACKQMAAikFAAIpCAACKQkAAikKAAIpCwACKQwAAikOAAIpEAACKREAAikSAAIpFAACKRUAAilUAAIpVgACKVkAAilbAAIpXgACKV8AAilgAAIpYQACKWIAAilkAAIpZgACKWcAAiloAAIpagACKWsAAimqAAIprAACKa4AAimwAAIpswACKbQAAim1AAIptgACKbcAAim5AAIpuwACKbwAAim9AAIpvwACKcAAAin/AAIqAQACKgMAAioFAAIqCAACKgkAAioKAAIqCwACKgwAAioOAAIqEAACKhEAAioSAAIqFAACKhUAAipUAAIqVgACKlgAAipaAAIqXQACKl4AAipfAAIqYAACKmEAAipjAAIqZQACKmYAAipnAAIqaQACKmoAAipzAAIqdAACKnYAAiq1AAIqtwACKrkAAiq7AAIqvgACKr8AAirAAAIqwQACKsIAAirEAAIqxgACKscAAirIAAIqygACKssAAisKAAIrDAACKw4AAisQAAIrEwACKxQAAisVAAIrFgACKxcAAisZAAIrGwACKxwAAisdAAIrHwACKyAAAitfAAIrYQACK2QAAitmAAIraQACK2oAAitrAAIrbAACK20AAitvAAIrcQACK3IAAitzAAIrdQACK3YAAit/AAIrgAACK4IAAiuLAAIrkAACK5MAAiuWAAIrmAACK7UAAiu/AAIryAACK8sAAivNAAIr0AACK9MAAivWAAIr2AACLBsAAiw/AAIsYwACLIYAAiytAAIszQACLPQAAi0bAAItOwACLV8AAi2D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AAJERQACREYAAkRHAAJESQACREoAAkRvAAJEkwACRLoAAkTeAAJE4QACROMAAkTlAAJE5wACROkAAkTrAAJE7AACRO8AAkT8AAJFCwACRQ0AAkUPAAJFEQACRRMAAkUVAAJFFwACRRkAAkUoAAJFKwACRS4AAkUxAAJFNAACRTcAAkU6AAJFPQACRT8AAkV+AAJFgAACRYMAAkWFAAJFiAACRYkAAkWKAAJFiwACRYwAAkWOAAJFkAACRZEAAkWSAAJFlAACRZUAAkXUAAJF1gACRdgAAkXaAAJF3QACRd4AAkXfAAJF4AACReEAAkXjAAJF5QACReYAAkXnAAJF6QACReoAAkYpAAJGKwACRi0AAkYvAAJGMgACRjMAAkY0AAJGNQACRjYAAkY4AAJGOgACRjsAAkY8AAJGPgACRj8AAkZ+AAJGgAACRoMAAkaFAAJGiAACRokAAkaKAAJGiwACRowAAkaOAAJGkAACRpEAAkaSAAJGlAACRpUAAkbUAAJG1gACRtgAAkbaAAJG3QACRt4AAkbfAAJG4AACRuEAAkbjAAJG5QACRuYAAkbnAAJG6QACRuoAAkcpAAJHKwACRy0AAkcvAAJHMgACRzMAAkc0AAJHNQACRzYAAkc4AAJHOgACRzsAAkc8AAJHPgACRz8AAkd+AAJHgAACR4IAAkeEAAJHhwACR4gAAkeJAAJHigACR4sAAkeNAAJHjwACR5AAAkeRAAJHkwACR5QAAkffAAJIAgACSCIAAkhCAAJIRAACSEYAAkhIAAJISgACSE0AAkhOAAJITwACSFIAAkhTAAJIVQACSFYAAkhYAAJIWwACSFwAAkhdAAJIYAACSGEAAkhmAAJIcwACSHgAAkh6AAJIfAACSIEAAkiEAAJIhwACSIkAAkiuAAJI0gACSPkAAkkdAAJJIAACSSIAAkkkAAJJJgACSSgAAkkqAAJJKwACSS4AAkk7AAJJTAACSU4AAklQAAJJUgACSVQAAklWAAJJWAACSVoAAklcAAJJbQACSXAAAklzAAJJdgACSXkAAkl8AAJJfwACSYIAAkmFAAJJhwACScYAAknIAAJJygACScwAAknPAAJJ0AACSdEAAknSAAJJ0wACSdUAAknXAAJJ2AACSdkAAknbAAJJ3AACShsAAkodAAJKHwACSiEAAkokAAJKJQACSiYAAkon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AAJVKgACVSwAAlVrAAJVbQACVW8AAlVxAAJVdAACVXUAAlV2AAJVdwACVXgAAlV6AAJVfAACVX0AAlV+AAJVgAACVYEAAlXAAAJVwgACVcQAAlXGAAJVyQACVcoAAlXLAAJVzAACVc0AAlXPAAJV0QACVdIAAlXTAAJV1QACVdYAAlYVAAJWFwACVhkAAlYbAAJWHgACVh8AAlYgAAJWIQACViIAAlYkAAJWJgACVicAAlYoAAJWKgACVisAAlZqAAJWbAACVm8AAlZxAAJWdAACVnUAAlZ2AAJWdwACVngAAlZ6AAJWfAACVn0AAlZ+AAJWgAACVoEAAlbAAAJWwgACVsQAAlbGAAJWyQACVsoAAlbLAAJWzAACVs0AAlbPAAJW0QACVtIAAlbTAAJW1QACVtYAAlcVAAJXFwACVxkAAlcbAAJXHgACVx8AAlcgAAJXIQACVyIAAlckAAJXJgACVycAAlcoAAJXKgACVysAAldqAAJXbAACV24AAldwAAJXcwACV3QAAld1AAJXdgACV3cAAld5AAJXewACV3wAAld9AAJXfwACV4AAAlfLAAJX7gACWA4AAlguAAJYMAACWDIAAlg0AAJYNgACWDkAAlg6AAJYOwACWD4AAlg/AAJYQQACWEIAAlhEAAJYRwACWEgAAlhJAAJYTAACWE0AAlhSAAJYXwACWGQAAlhmAAJYaAACWG0AAlhwAAJYcwACWHUAAliaAAJYvgACWOUAAlkJAAJZDAACWQ4AAlkQAAJZEgACWRQAAlkWAAJZFwACWRoAAlknAAJZOAACWToAAlk8AAJZPgACWUAAAllCAAJZRAACWUYAAllIAAJZWQACWVwAAllfAAJZYgACWWUAAlloAAJZawACWW4AAllxAAJZcwACWbIAAlm0AAJZtgACWbgAAlm7AAJZvAACWb0AAlm+AAJZvwACWcEAAlnDAAJZxAACWcUAAlnHAAJZyAACWgcAAloJAAJaCwACWg0AAloQAAJaEQACWhIAAloTAAJaFAACWhYAAloYAAJaGQACWhoAAlocAAJaHQACWlwAAlpeAAJaYQACWmMAAlpmAAJaZwACWmgAAlppAAJaagACWmwAAlpuAAJabwACWnAAAlpyAAJacwACWoAAAlqBAAJaggACWoQAAlrDAAJaxQACWscAAlrJAAJazAACWs0AAlrOAAJazwACWtAAAlrSAAJa1AACWtUAAlrWAAJa2AACWtkAAlsYAAJbGgACWxwAAlseAAJbIQACWyIAAlsjAAJbJAACWyUAAlsnAAJbKQACWyoAAlsrAAJbLQACWy4AAlttAAJbbwACW3EAAltzAAJbdgACW3cAAlt4AAJbeQACW3oAAlt8AAJbfgACW38AAluAAAJbggACW4MAAlvCAAJbxAACW8YAAlvIAAJbywACW8wAAlvNAAJbzgACW88AAlvRAAJb0wACW9QAAlvVAAJb1wACW9gAAlwXAAJcGQACXBsAAlwdAAJcIAACXCEAAlwiAAJcIwACXCQAAlwmAAJcKAACXCkAAlwqAAJcLAACXC0AAlxSAAJcdgACXJ0AAlzBAAJcxAACXMYAAlzIAAJcygACXMwAAlzOAAJczwACXNIAAlzfAAJc7gACXPAAAlzyAAJc9AACXPYAAlz4AAJc+gACXPwAAl0LAAJdDgACXREAAl0UAAJdFwACXRoAAl0dAAJdIAACXSIAAl1hAAJdYwACXWUAAl1nAAJdagACXWsAAl1sAAJdbQACXW4AAl1wAAJdcgACXXMAAl10AAJddgACXXcAAl22AAJduAACXboAAl28AAJdvwACXcAAAl3BAAJdwgACXcMAAl3FAAJdxwACXcgAAl3JAAJdywACXcwAAl4LAAJeDQACXg8AAl4RAAJeFAACXhUAAl4WAAJeFwACXhgAAl4aAAJeHAACXh0AAl4eAAJeIAACXiEAAl5gAAJeYgACXmUAAl5nAAJeagACXmsAAl5sAAJebQACXm4AAl5wAAJecgACXnMAAl50AAJedgACXncAAl62AAJeuAACXroAAl68AAJevwACXsAAAl7BAAJewgACXsMAAl7FAAJexwACXsgAAl7JAAJeywACXswAAl8LAAJfDQACXw8AAl8RAAJfFAACXxUAAl8WAAJfFwACXxgAAl8aAAJfHAACXx0AAl8eAAJfIAACXyEAAl9gAAJfYgACX2UAAl9nAAJfagACX2sAAl9sAAJfbQACX24AAl9wAAJfcgACX3MAAl90AAJfdgACX3cAAl/CAAJf5QACYAUAAmAlAAJgJwACYCkAAmArAAJgLQACYDAAAmAxAAJgMgACYDUAAmA2AAJgOAACYDkAAmA7AAJgPgACYD8AAmBAAAJgQwACYEQAAmBJAAJgVgACYFsAAmBdAAJgXwACYGQAAmBnAAJgagACYGwAAmCRAAJgtQACYNwAAmEAAAJhAwACYQUAAmEHAAJhCQACYQsAAmENAAJhDgACYREAAmEeAAJhLwACYTEAAmEzAAJhNQACYTcAAmE5AAJhOwACYT0AAmE/AAJhUAACYVMAAmFWAAJhWQACYVwAAmFfAAJhYgACYWUAAmFoAAJhagACYakAAmGrAAJhrQACYa8AAmGyAAJhswACYbQAAmG1AAJhtgACYbgAAmG6AAJhuwACYbwAAmG+AAJhvwACYf4AAmIAAAJiAgACYgQAAmIHAAJiCAACYgkAAmIKAAJiCwACYg0AAmIPAAJiEAACYhEAAmITAAJiFAACYlMAAmJVAAJiWAACYloAAmJdAAJiXgACYl8AAmJgAAJiYQACYmMAAmJlAAJiZgACYmcAAmJpAAJiagACYncAAmJ4AAJieQACYnsAAmK6AAJivAACYr4AAmLAAAJiwwACYsQAAmLFAAJixgACYscAAmLJAAJiywACYswAAmLNAAJizwACYtAAAmMPAAJjEQACYxMAAmMVAAJjGAACYxkAAmMaAAJjGwACYxwAAmMeAAJjIAACYyEAAmMiAAJjJAACYyUAAmNkAAJjZgACY2gAAmNqAAJjbQACY24AAmNvAAJjcAACY3EAAmNzAAJjdQACY3YAAmN3AAJjeQACY3oAAmO5AAJjuwACY70AAmO/AAJjwgACY8MAAmPEAAJjxQACY8YAAmPIAAJjygACY8sAAmPMAAJjzgACY88AAmQOAAJkEAACZBIAAmQUAAJkFwACZBgAAmQZAAJkGgACZBsAAmQdAAJkHwACZCAAAmQhAAJkIwACZCQAAmRJAAJkbQACZJQAAmS4AAJkuwACZL0AAmS/AAJkwQACZMMAAmTFAAJkxgACZMkAAmTWAAJk5QACZOcAAmTpAAJk6wACZO0AAmTvAAJk8QACZPMAAmUCAAJlBQACZQgAAmULAAJlDgACZREAAmUUAAJlFwACZRkAAmVYAAJlWgACZV0AAmVfAAJlYgACZWMAAmVkAAJlZQACZWYAAmVoAAJlagACZWsAAmVsAAJlbgACZW8AAmWuAAJlsAACZbIAAmW0AAJltwACZbgAAmW5AAJlugACZbsAAmW9AAJlvwACZcAAAmXBAAJlwwACZcQAAmYDAAJmBQACZgcAAmYJAAJmDAACZg0AAmYOAAJmDwACZhAAAmYSAAJmFAACZhUAAmYWAAJmGAACZhkAAmZYAAJmWgACZl0AAmZfAAJmYgACZmMAAmZkAAJmZQACZmYAAmZoAAJmagACZmsAAmZsAAJmbgACZm8AAmauAAJmsAACZrIAAma0AAJmtwACZrgAAma5AAJmugACZrsAAma9AAJmvwACZsAAAmbBAAJmwwACZsQAAmcDAAJnBQACZwcAAmcJAAJnDAACZw0AAmcOAAJnDwACZxAAAmcSAAJnFAACZxUAAmcWAAJnGAACZxkAAmdYAAJnWgACZ1wAAmdeAAJnYQACZ2IAAmdjAAJnZAACZ2UAAmdnAAJnaQACZ2oAAmdrAAJnbQACZ24AAmd3AAJneAACZ3oAAme5AAJnuwACZ70AAme/AAJnwgACZ8MAAmfEAAJnxQACZ8YAAmfIAAJnygACZ8sAAmfMAAJnzgACZ88AAmgOAAJoEAACaBIAAmgUAAJoFwACaBgAAmgZAAJoGgACaBsAAmgdAAJoHwACaCAAAmghAAJoIwACaCQAAmhjAAJoZQACaGgAAmhqAAJobQACaG4AAmhvAAJocAACaHEAAmhzAAJodQACaHYAAmh3AAJoeQACaHoAAmiDAAJohgACaIkAAmiLAAJokAACaJkAAmiyAAJouwACaNQAAmjrAAJo/QACaRoAAmkdAAJpHwACaSEAAmkjAAJpJgACaSgAAmktAAJpbAACaW4AAmlwAAJpcgACaXQAAml1AAJpdgACaXcAAml4AAJpegACaXwAAml9AAJpfgACaYAAAmmBAAJpwAACacIAAmnEAAJpxgACacgAAmnJAAJpygACacsAAmnMAAJpzgACadAAAmnRAAJp0gACadQAAmnVAAJqFAACahYAAmoYAAJqGgACahwAAmodAAJqHgACah8AAmogAAJqIgACaiQAAmolAAJqJgACaigAAmopAAJqMgACajUAAmo4AAJqOgACan0AAmqhAAJqxQACaugAAmsPAAJrLwACa1YAAmt9AAJrnQACa8EAAmvlAAJr5wACa+oAAmvsAAJr7gACa/AAAmvzAAJr9gACa/gAAmv6AAJr/QACa/8AAmwBAAJsBAACbAcAAmwIAAJsEQACbB4AAmwhAAJsIwACbCYAAmwpAAJsKwACbFAAAmx0AAJsmwACbL8AAmzCAAJsxAACbMYAAmzIAAJsygACbMwAAmzNAAJs0AACbN0AAmzwAAJs8gACbPQAAmz2AAJs+AACbPoAAmz8AAJs/gACbQAAAm0CAAJtFQACbRgAAm0bAAJtHgACbSEAAm0kAAJtJwACbSoAAm0tAAJtMAACbTIAAm1xAAJtcwACbXYAAm14AAJtewACbXwAAm19AAJtfgACbX8AAm2BAAJtgwACbYQAAm2FAAJthwACbYgAAm2RAAJtkgACbZQAAm3TAAJt1QACbdcAAm3ZAAJt3AACbd0AAm3eAAJt3wACbeAAAm3iAAJt5AACbeUAAm3mAAJt6AACbekAAm4oAAJuKgACbi0AAm4vAAJuMgACbjMAAm40AAJuNQACbjYAAm44AAJuOgACbjsAAm48AAJuPgACbj8AAm5IAAJuSQACbksAAm6KAAJujAACbo4AAm6QAAJukwACbpQAAm6VAAJulgACbpcAAm6ZAAJumwACbpwAAm6dAAJunwACbqAAAm7fAAJu4QACbuQAAm7mAAJu6QACbuoAAm7rAAJu7AACbu0AAm7vAAJu8QACbvIAAm7zAAJu9QACbvYAAm7/AAJvAAACbwIAAm9BAAJvQwACb0UAAm9HAAJvSgACb0sAAm9MAAJvTQACb04AAm9QAAJvUgACb1MAAm9UAAJvVgACb1cAAm+WAAJvmAACb5sAAm+dAAJvoAACb6EAAm+iAAJvowACb6QAAm+mAAJvqAACb6kAAm+qAAJvrAACb60AAm+6AAJvuwACb7wAAm++AAJv/QACb/8AAnABAAJwAwACcAYAAnAHAAJwCAACcAkAAnAKAAJwDAACcA4AAnAPAAJwEAACcBIAAnATAAJwUgACcFQAAnBWAAJwWAACcFsAAnBcAAJwXQACcF4AAnBfAAJwYQACcGMAAnBkAAJwZQACcGcAAnBoAAJwdQACcH4AAnCBAAJwhAACcIcAAnCKAAJwkwACcJYAAnCZAAJwnAACcJ8AAnChAAJwpwACcLkAAnDGAAJxEQACcTQAAnFUAAJxdAACcXYAAnF4AAJxegACcXwAAnF/AAJxgAACcYEAAnGEAAJxhQACcYcAAnGIAAJxigACcY0AAnGOAAJxjwACcZIAAnGTAAJxmAACcaUAAnGqAAJxrAACca4AAnGzAAJxtgACcbkAAnG7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AAKC5gACgugAAoLqAAKC7QACgu4AAoLvAAKC8AACgvEAAoLzAAKC9QACgvYAAoL3AAKC+QACgvoAAoM5AAKDOwACgz0AAoM/AAKDQgACg0MAAoNEAAKDRQACg0YAAoNIAAKDSgACg0sAAoNMAAKDTgACg08AAoOOAAKDkAACg5MAAoOVAAKDmAACg5kAAoOaAAKDmwACg5wAAoOeAAKDoAACg6EAAoOiAAKDpAACg6UAAoOyAAKDswACg7QAAoO2AAKD9QACg/cAAoP5AAKD+wACg/4AAoP/AAKEAAAChAEAAoQCAAKEBAAChAYAAoQHAAKECAAChAoAAoQLAAKESgAChEwAAoROAAKEUAAChFMAAoRUAAKEVQAChFYAAoRXAAKEWQAChFsAAoRcAAKEXQAChF8AAoRgAAKEnwAChKEAAoSjAAKEpQAChKgAAoSpAAKEqgAChKsAAoSsAAKErgAChLAAAoSxAAKEsgAChLQAAoS1AAKE9AAChPYAAoT4AAKE+gAChP0AAoT+AAKE/wAChQAAAoUBAAKFAwAChQUAAoUGAAKFBwAChQkAAoUKAAKFSQAChUsAAoVNAAKFTwAChVIAAoVTAAKFVAAChVUAAoVWAAKFWAAChVoAAoVbAAKFXAAChV4AAoVfAAKFhAAChagAAoXPAAKF8wAChfYAAoX4AAKF+gAChfwAAoX+AAKGAAAChgEAAoYEAAKGEQAChiAAAoYiAAKGJAAChiYAAoYoAAKGKgAChiwAAoYuAAKGPQAChkAAAoZDAAKGRgAChkkAAoZMAAKGTwAChlIAAoZUAAKGkwAChpUAAoaXAAKGmQAChpwAAoadAAKGngAChp8AAoagAAKGogAChqQAAoalAAKGpgAChqgAAoapAAKG6AAChuoAAobsAAKG7gAChvEAAobyAAKG8wAChvQAAob1AAKG9wAChvkAAob6AAKG+wAChv0AAob+AAKHPQAChz8AAodBAAKHQwACh0YAAodHAAKHSAACh0kAAodKAAKHTAACh04AAodPAAKHUAACh1IAAodTAAKHkgACh5QAAoeXAAKHmQACh5wAAoedAAKHngACh58AAoegAAKHogACh6QAAoelAAKHpgACh6gAAoepAAKH6AACh+oAAofsAAKH7gACh/EAAofyAAKH8wACh/QAAof1AAKH9wACh/kAAof6AAKH+wACh/0AAof+AAKIPQACiD8AAohBAAKIQwACiEYAAohHAAKISAACiEkAAohKAAKITAACiE4AAohPAAKIUAACiFIAAohTAAKIkgACiJQAAoiWAAKImAACiJsAAoicAAKInQACiJ4AAoifAAKIoQACiKMAAoikAAKIpQACiKcAAoioAAKI8wACiRYAAok2AAKJVgACiVgAAolaAAKJXAACiV4AAolhAAKJYgACiWMAAolmAAKJZwACiWkAAolqAAKJbAACiW8AAolwAAKJcQACiXQAAol1AAKJegACiYcAAomMAAKJjgACiZAAAomVAAKJmAACiZsAAomdAAKJwgACieYAAooNAAKKMQACijQAAoo2AAKKOAACijoAAoo8AAKKPgACij8AAopCAAKKTwACimAAAopiAAKKZAACimYAAopoAAKKagACimwAAopuAAKKcAACioEAAoqEAAKKhwACiooAAoqNAAKKkAACipMAAoqWAAKKmQACipsAAoraAAKK3AACit4AAorgAAKK4wACiuQAAorlAAKK5gACiucAAorpAAKK6wACiuwAAortAAKK7wACivAAAosvAAKLMQACizMAAos1AAKLOAACizkAAos6AAKLOwACizwAAos+AAKLQAACi0EAAotCAAKLRAACi0UAAouEAAKLhgACi4kAAouLAAKLjgACi48AAouQAAKLkQACi5IAAouUAAKLlgACi5cAAouYAAKLmgACi5sAAouoAAKLqQACi6oAAousAAKL6wACi+0AAovvAAKL8QACi/QAAov1AAKL9gACi/cAAov4AAKL+gACi/wAAov9AAKL/gACjAAAAowBAAKMQAACjEIAAoxEAAKMRgACjEkAAoxKAAKMSwACjEwAAoxNAAKMTwACjFEAAoxSAAKMUwACjFUAAoxWAAKMlQACjJcAAoyZAAKMmwACjJ4AAoyfAAKMoAACjKEAAoyiAAKMpAACjKYAAoynAAKMqAACjKoAAoyrAAKM6gACjOwAAozuAAKM8AACjPMAAoz0AAKM9QACjPYAAoz3AAKM+QACjPsAAoz8AAKM/QACjP8AAo0AAAKNPwACjUEAAo1DAAKNRQACjUgAAo1JAAKNSgACjUsAAo1MAAKNTgACjVAAAo1RAAKNUgACjVQAAo1VAAKNegACjZ4AAo3FAAKN6QACjewAAo3uAAKN8AACjfIAAo30AAKN9gACjfcAAo36AAKOBwACjhYAAo4YAAKOGgACjhwAAo4eAAKOIAACjiIAAo4kAAKOMwACjjYAAo45AAKOPAACjj8AAo5CAAKORQACjkgAAo5KAAKOiQACjosAAo6NAAKOjwACjpIAAo6TAAKOlAACjpUAAo6WAAKOmAACjpoAAo6bAAKOnAACjp4AAo6fAAKO3gACjuAAAo7iAAKO5AACjucAAo7oAAKO6QACjuoAAo7rAAKO7QACju8AAo7wAAKO8QACjvMAAo70AAKPMwACjzUAAo83AAKPOQACjzwAAo89AAKPPgACjz8AAo9AAAKPQgACj0QAAo9FAAKPRgACj0gAAo9JAAKPiAACj4oAAo+NAAKPjwACj5IAAo+TAAKPlAACj5UAAo+WAAKPmAACj5oAAo+bAAKPnAACj54AAo+fAAKP3gACj+AAAo/iAAKP5AACj+cAAo/oAAKP6QACj+oAAo/rAAKP7QACj+8AAo/wAAKP8QACj/MAAo/0AAKQMwACkDUAApA3AAKQOQACkDwAApA9AAKQPgACkD8AApBAAAKQQgACkEQAApBFAAKQRgACkEgAApBJAAKQiAACkIoAApCMAAKQjgACkJEAApCSAAKQkwACkJQAApCVAAKQlwACkJkAApCaAAKQmwACkJ0AApCeAAKQpwACkKgAApCqAAKQ7QACkREAApE1AAKRWAACkX8AApGfAAKRxgACke0AApINAAKSMQACklUAApJXAAKSWgACklwAApJeAAKSYAACkmMAApJmAAKSaAACkmoAApJtAAKSbwACknEAApJ0AAKSdwACkngAApKBAAKSjgACkpEAApKTAAKSlgACkpkAApKbAAKSwAACkuQAApMLAAKTLwACkzIAApM0AAKTNgACkzgAApM6AAKTPAACkz0AApNAAAKTTQACk2AAApNiAAKTZAACk2YAApNoAAKTagACk2wAApNuAAKTcAACk3IAApOFAAKTiAACk4sAApOOAAKTkQACk5QAApOXAAKTmgACk50AApOgAAKTogACk+EAApPjAAKT5gACk+gAApPrAAKT7AACk+0AApPuAAKT7wACk/EAApPzAAKT9AACk/UAApP3AAKT+AAClAEAApQCAAKUBAAClEMAApRFAAKURwAClEkAApRMAAKUTQAClE4AApRPAAKUUAAClFIAApRUAAKUVQAClFYAApRYAAKUWQAClJgAApSaAAKUnQAClJ8AApSiAAKUowAClKQAApSlAAKUpgAClKgAApSqAAKUqwAClKwAApSuAAKUrwAClLgAApS5AAKUuwAClPoAApT8AAKU/gAClQAAApUDAAKVBAAClQUAApUGAAKVBwAClQkAApULAAKVDAAClQ0AApUPAAKVEAAClU8AApVRAAKVVAAClVYAApVZAAKVWgAClVsAApVcAAKVXQAClV8AApVhAAKVYgAClWMAApVlAAKVZgAClW8AApVwAAKVcgAClbEAApWzAAKVtQAClbcAApW6AAKVuwAClbwAApW9AAKVvgAClcAAApXCAAKVwwAClcQAApXGAAKVxwAClgYAApYIAAKWCwAClg0AApYQAAKWEQAClhIAApYTAAKWFAAClhYAApYYAAKWGQAClhoAApYcAAKWHQAClioAApYrAAKWLAACli4AApZtAAKWbwAClnEAApZzAAKWdgAClncAApZ4AAKWeQAClnoAApZ8AAKWfgACln8AApaAAAKWggACloMAApbCAAKWxAAClscAApbJAAKWzAACls0AApbOAAKWzwACltAAApbSAAKW1AACltUAApbWAAKW2AACltkAApboAAKW9QAClvoAApb9AAKXAAAClwUAApcIAAKXCwAClw0AApcSAAKXXQACl4AAApegAAKXwAACl8IAApfEAAKXxgACl8gAApfLAAKXzAACl80AApfQAAKX0QACl9MAApfUAAKX1gACl9kAApfaAAKX2wACl94AApffAAKX5AACl/EAApf2AAKX+AACl/oAApf/AAKYAgACmAUAApgHAAKYLAACmFAAAph3AAKYmwACmJ4AApigAAKYogACmKQAApimAAKYqAACmKkAApisAAKYuQACmMoAApjMAAKYzgACmNAAApjSAAKY1AACmNYAApjYAAKY2gACmOsAApjuAAKY8QACmPQAApj3AAKY+gACmP0AApkAAAKZAwACmQUAAplEAAKZRgACmUgAAplKAAKZTQACmU4AAplPAAKZUAACmVEAAplTAAKZVQACmVYAAplXAAKZWQACmVoAApmZAAKZmwACmZ0AApmfAAKZogACmaMAApmkAAKZpQACmaYAApmoAAKZqgACmasAApmsAAKZrgACma8AApnuAAKZ8AACmfMAApn1AAKZ+AACmfkAApn6AAKZ+wACmfwAApn+AAKaAAACmgEAApoCAAKaBAACmgUAApoSAAKaEwACmhQAApoWAAKaVQACmlcAAppZAAKaWwACml4AAppfAAKaYAACmmEAAppiAAKaZAACmmYAAppnAAKaaAACmmoAApprAAKaqgACmqwAApquAAKasAACmrMAApq0AAKatQACmrYAApq3AAKauQACmrsAApq8AAKavQACmr8AAprAAAKa/wACmwEAApsDAAKbBQACmwgAApsJAAKbCgACmwsAApsMAAKbDgACmxAAApsRAAKbEgACmxQAApsVAAKbVAACm1YAAptYAAKbWgACm10AApteAAKbXwACm2AAApthAAKbYwACm2UAAptmAAKbZwACm2kAAptqAAKbqQACm6sAAputAAKbrwACm7IAApuzAAKbtAACm7UAApu2AAKbuAACm7oAApu7AAKbvAACm74AApu/AAKb5AACnAgAApwvAAKcUwACnFYAApxYAAKcWgACnFwAApxeAAKcYAACnGEAApxkAAKccQACnIAAApyCAAKchAACnIYAApyIAAKcigACnIwAApyOAAKcnQACnKAAApyjAAKcpgACnKkAApysAAKcrwACnLIAApy0AAKc8wACnPUAApz3AAKc+QACnPwAApz9AAKc/gACnP8AAp0AAAKdAgACnQQAAp0FAAKdBgACnQgAAp0JAAKdSAACnUoAAp1MAAKdTgACnVEAAp1SAAKdUwACnVQAAp1VAAKdVwACnVkAAp1aAAKdWwACnV0AAp1eAAKdnQACnZ8AAp2hAAKdowACnaYAAp2nAAKdqAACnakAAp2qAAKdrAACna4AAp2vAAKdsAACnbIAAp2zAAKd8gACnfQAAp33AAKd+QACnfwAAp39AAKd/gACnf8AAp4AAAKeAgACngQAAp4FAAKeBgACnggAAp4JAAKeSAACnkoAAp5MAAKeTgACnlEAAp5SAAKeUwACnlQAAp5VAAKeVwACnlkAAp5aAAKeWwACnl0AAp5eAAKenQACnp8AAp6hAAKeowACnqYAAp6nAAKeqAACnqkAAp6qAAKerAACnq4AAp6vAAKesAACnrIAAp6zAAKe8gACnvQAAp72AAKe+AACnvsAAp78AAKe/QACnv4AAp7/AAKfAQACnwMAAp8EAAKfBQACnwcAAp8IAAKfUwACn3YAAp+WAAKftgACn7gAAp+6AAKfvAACn74AAp/BAAKfwgACn8MAAp/GAAKfxwACn8kAAp/KAAKfzAACn88AAp/QAAKf0QACn9QAAp/VAAKf2gACn+cAAp/sAAKf7gACn/AAAp/1AAKf+AACn/sAAp/9AAKgIgACoEYAAqBtAAKgkQACoJQAAqCWAAKgmAACoJoAAqCcAAKgngACoJ8AAqCiAAKgrwACoMAAAqDCAAKgxAACoMYAAqDIAAKgygACoMwAAqDOAAKg0AACoOEAAqDkAAKg5wACoOoAAqDtAAKg8AACoPMAAqD2AAKg+QACoPsAAqE6AAKhPAACoT4AAqFAAAKhQwACoUQAAqFFAAKhRgACoUcAAqFJAAKhSwACoUwAAqFNAAKhTwACoVAAAqGPAAKhkQACoZMAAqGVAAKhmAACoZkAAqGaAAKhmwACoZwAAqGeAAKhoAACoaEAAqGiAAKhpAACoaUAAqHkAAKh5gACoekAAqHrAAKh7gACoe8AAqHwAAKh8QACofIAAqH0AAKh9gACofcAAqH4AAKh+gACofsAAqIIAAKiCQACogoAAqIMAAKiSwACok0AAqJPAAKiUQAColQAAqJVAAKiVgAColcAAqJYAAKiWgAColwAAqJdAAKiXgAComAAAqJhAAKioAACoqIAAqKkAAKipgACoqkAAqKqAAKiqwACoqwAAqKtAAKirwACorEAAqKyAAKiswACorUAAqK2AAKi9QACovcAAqL5AAKi+wACov4AAqL/AAKjAAACowEAAqMCAAKjBAACowYAAqMHAAKjCAACowoAAqMLAAKjSgACo0wAAqNOAAKjUAACo1MAAqNUAAKjVQACo1YAAqNXAAKjWQACo1sAAqNcAAKjXQACo18AAqNgAAKjnwACo6EAAqOjAAKjpQACo6gAAqOpAAKjqgACo6sAAqOsAAKjrgACo7AAAqOxAAKjsgACo7QAAqO1AAKj2gACo/4AAqQlAAKkSQACpEwAAqROAAKkUAACpFIAAqRUAAKkVgACpFcAAqRaAAKkZwACpHYAAqR4AAKkegACpHwAAqR+AAKkgAACpIIAAqSEAAKkkwACpJYAAqSZAAKknAACpJ8AAqSiAAKkpQACpKgAAqSqAAKk6QACpOsAAqTuAAKk8AACpPMAAqT0AAKk9QACpPYAAqT3AAKk+QACpPsAAqT8AAKk/QACpP8AAqUAAAKlPwACpUEAAqVDAAKlRQACpUgAAqVJAAKlSgACpUsAAqVMAAKlTgACpVAAAqVRAAKlUgACpVQAAqVVAAKllAACpZYAAqWYAAKlmgACpZ0AAqWeAAKlnwACpaAAAqWhAAKlowACpaUAAqWmAAKlpwACpakAAqWqAAKl6QACpesAAqXuAAKl8AACpfMAAqX0AAKl9QACpfYAAqX3AAKl+QACpfsAAqX8AAKl/QACpf8AAqYAAAKmPwACpkEAAqZDAAKmRQACpkgAAqZJAAKmSgACpksAAqZMAAKmTgACplAAAqZRAAKmUgACplQAAqZVAAKmlAACppYAAqaYAAKmmgACpp0AAqaeAAKmnwACpqAAAqahAAKmowACpqUAAqamAAKmpwACpqkAAqaqAAKm6QACpusAAqbtAAKm7wACpvIAAqbzAAKm9AACpvUAAqb2AAKm+AACpvoAAqb7AAKm/AACpv4AAqb/AAKnCAACpwkAAqcLAAKnGAACpxkAAqcaAAKnHAACpykAAqcqAAKnKwACpy0AAqc6AAKnOwACpzwAAqc+AAKnRwACp1YAAqdjAAKncgACp4QAAqeYAAKnrwACp8EAAqfKAAKnywACp80AAqfaAAKn2wACp9wAAqfeAAKn3wACp+gAAqfyAAKn+QAAAAAAAAQCAAAAAAAAZigAAAAAAAAAAAAAAAAAAqgB - - Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 11.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 -cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIMwALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPXA9gD4APsBAAEDwQeBC0EMQRABE8EXgRtBHwEiASaBKkEuATHBNYE5QT0BQMFCwUgBSEFKQUqBTYFSgVZBWgFdwV7BYoFmQWoBbcFxgXSBeQF5QXmBecF6AXpBeoF6wX6BgkGGAYnBigGNwZGBlUGXQZyBnMGewaHBpsGqga5BsgGzAbbBuoG+QcIBxcHIwc1B0QHUwdUB2MHcgeMB40HkwefB7UHxAfHB9YH5QfoB/cIBggJCBgIJwgrCDoISQhKCFwIXQheCF8IYAhhCGIIdwh4CIAIjAigCK8IvgjNCNEI4AjvCP4JDQkcCSgJOglJCUoJWQloCXcJeAmHCZYJpQm6CbsJwwnPCeMJ8goBChAKFAojCjIKQQpQCl8Kawp9CowKmwqqCrkKyArXCuYK+wr8CwQLEAskCzMLQgtRC1ULZAtzC4ILkQugC6wLvgvNC9wL6wv6C/sMCgwZDCgMPQw+DEYMUgxmDHUMhAyTDJcMpgy1DMQM0wziDO4NAA0PDR4NLQ08DUsNWg1pDX4Nfw2HDZMNpw22DcUN1A3YDecN9g4FDhQOIw4vDkEOUA5fDm4OfQ6MDpsOqg6/DsAOyA7UDugO9w8GDxUPGQ8oDzcPRg9VD2QPcA+CD5EPoA+vD74Pvw/OD90P7BABEAIQChAWECoQORBIEFcQWxBqEHkQiBCXEKYQshDEENMQ4hDxEQARDxEeES0RLhExEToRSRFYEWcRfBF9EYURkRGlEbQRwxHSEdYR5RH0EgMSEhIhEi0SPxJOEk8SXhJtEnwSfRKMEpsSqhK/EsASyBLUEugS9xMGExUTGRMoEzcTRhNVE2QTcBOCE5EToBOvE74TzRPcE+sUABQBFAkUFRQpFDgURxRWFFoUaRR4FIcUlhSlFLEUwxTSFOEU8BT/FQ4VHRUsFUEVQhVKFVYVahV5FYgVlxWbFaoVuRXIFdcV5hXyFgQWExYUFiMWMhZBFkIWURZgFm8WhBaFFo0WmRatFrwWyxbaFt4W7Rb8FwsXGhcpFzUXRxdWF2UXdBeDF5IXoRewF8UXxhfOF9oX7hf9GAwYGxgfGC4YPRhMGFsYahh2GIgYlximGLUYxBjTGOIY8RkGGQcZDxkbGS8ZPhlNGVwZYBlvGX4ZjRmcGasZtxnJGdgZ5xn2GgUaBhoVGiQaMxpIGkkaURpdGnEagBqPGp4aohqxGsAazxreGu0a+RsLGxobKRs4G0cbYRtiG2gbdBuKG5kbnBurG7obvRvMG9sb3hvtG/wcABwPHB4cKhwrHCwcLRxCHEMcSxxXHGscehyJHJgcnByrHLocyRzYHOcc8x0FHRQdIx0yHUEdUB1fHW4dgx2EHYwdmB2sHbsdyh3ZHd0d7B37HgoeGR4oHjQeRh5VHmQecx6CHpEeoB6vHsQexR7NHtke7R78HwsfGh8eHy0fPB9LH1ofaR91H4cflh+lH7Qfwx/SH+Ef8CAFIAYgDiAaIC4gPSBMIFsgXyBuIH0gjCCbIKogtiDIINcg5iD1IQQhHiEfISUhMSFHIVYhWSFoIWkheCF7IYohmSGcIashuiG+Ic0h3CIWIhciGCIZIhoiGyIcIh0iHiIfIiAiISIiIiMiJCIlIiYiJyIoIikiKiIrIiwiLSIuIi8iRCJFIk0iWSJtInwiiyKaIp4irSK8Issi2iLbIuoi9iMIIxcjJiM1I0QjUyNiI3EjhiOHI48jmyOvI74jzSPcI+Aj7yP+JA0kHCQrJDckSSRYJGckdiSFJJQkoySyJMckyCTQJNwk8CT/JQ4lHSUhJTAlPyVOJV0lbCV4JYolmSWoJbclxiXVJeQl8yYIJgkmESYdJjEmQCZPJl4mYiZxJoAmjyaeJp8mria6Jswm2ybqJvknCCcXJyYnNSdKJ0snUydfJ3MngieRJ6AnpCezJ8In0SfgJ+8n+ygNKBwoKyg6KEkoWChnKHYoiyiMKJQooCi0KMMo0ijh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WJVYqlirWLNYv1jTWOJY8VkAWQRZE1kiWTFZQFlPWVtZbVl8WYtZmlmpWbhZx1nWWetZ7Fn0WgBaFFojWjJaQVpFWlRaY1pyWoFakFqcWq5avVrMWtta6lr5WwhbF1ssWy1bNVtBW1VbZFtzW4JbhluVW6Rbs1vCW9Fb3VvvW/5cDVwcXCtcOlxJXFhcbVxuXHZcglyWXKVctFzDXMdc1lzlXPRdA10SXR5dMF0/XU5dXV1sXXtdil2ZXa5dr123XcNd113mXfVeBF4IXhdeJl41XkReU15fXnFegF6PXp5erV68Xste2l7dXuxe+18KXw5fD18VXxxfHV8sXztfSl9OX2hfaV9vX3tfkV+gX6Nfsl/BX8Rf01/iX+Vf9GADYAdgFmAlYDFgMmAzYDRgSWBKYFJgXmByYIFgkGCfYKNgsmDBYNBg32DuYPphDGEbYSphOWFIYVdhZmF1YYphi2GTYZ9hs2HCYdFh4GHkYfNiAmIRYiBiL2I7Yk1iXGJrYnpiiWKYYqditmLLYsxi1GLgYvRjA2MSYyFjJWM0Y0NjUmNhY3BjfGOOY51jrGO7Y8pj2WPoY/dkDGQNZBVkIWQ1ZERkU2RiZGZkdWSEZJNkomSxZL1kz2TeZO1k/GULZRplKWU4ZTtlVWVWZVxlaGV+ZY1lkGWfZa5lsWXAZc9l0mXhZfBl9GYDZhJmE2YbZhxmMWYyZjpmRmZaZmlmeGaHZotmmmapZrhmx2bWZuJm9GcDZxJnIWcwZz9nTmddZ3Jnc2d7Z4dnm2eqZ7lnyGfMZ9tn6mf5aAhoF2gjaDVoRGhTaGJocWiAaI9onmihaKVoqWitaLVouGi8aL1VJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCDKAAIEIL4EIMIEIMd4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEILYEIK4ABgASAAIEILIEILhAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEUAUFdOUy5rZXlzWk5TLm9iamVjdHOqADsAPAA9AD4APwBAAEEAQgBDAESABoAHgAiACYAKgAuADIANgA6AD6oARgBHAEgASQBKAEsATABNAE4AT4AQgNeBBraBBg+BBt6AYYEHdIEH54ECVoECxYAvVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbVdBY2NvdW50XlBsYXliYWNrUmVjb3JkV0xpYnJhcnlVVGhlbWXfEBAAXABdAF4AXwAfAGAAYQAhAGIAYwAOACMAZABlACYAZgBnAGgAJwAnABMAbABtAC8AJwBnAHAAOwBnAHMAdAB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gBKANoAEgASAAoATgQGWgASAEoEBmIAGgBKBB3OAEQgTAAAAASFFzllXb3JkZXJlZNMAOAA5AA4AeQB7AFChAHqAFKEAfIAVgC9eWERfUFN0ZXJlb3R5cGXZAB8AIwCAAA4AJgCBACEAZgCCAEYAegBnAIYAFQAnAC8AdQCKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgBCAFIASgDWAAIAECIAW0wA4ADkADgCMAJYAUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pAJcAmACZAJoAmwCcAJ0AngCfgCCAJIAmgCiAKYArgC2AMIA0gC9fEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGVhEUE1VbmlxdWVuZXNzQ29uc3RyYWludHNfEBpYRF9QU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QGVhEX1BTS19mZXRjaFJlcXVlc3RzQXJyYXlfEBFYRF9QU0tfaXNBYnN0cmFjdF8QD1hEX1BTS191c2VySW5mb18QE1hEX1BTS19jbGFzc01hcHBpbmdfEBZYRF9QU0tfZW50aXR5Q2xhc3NOYW1l3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAtgAVAHwAdQB1AHUALwB1AL0AjQB1AHUAFQB1VV90eXBlWF9kZWZhdWx0XF9hc3NvY2lhdGlvbltfaXNSZWFkT25seVlfaXNTdGF0aWNZX2lzVW5pcXVlWl9pc0Rlcml2ZWRaX2lzT3JkZXJlZFxfaXNDb21wb3NpdGVXX2lzTGVhZoAAgCGAAIAVCAgICIAjgBcICIAACNIAOQAOAMQAxaCAItIAxwDIAMkAylokY2xhc3NuYW1lWCRjbGFzc2VzXk5TTXV0YWJsZUFycmF5owDJAMsAzFdOU0FycmF5WE5TT2JqZWN00gDHAMgAzgDPXxAQWERVTUxQcm9wZXJ0eUltcKQA0ADRANIA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U3lzdGVtR3JvdXBlZEJhY2tncm91bmRIZXhfECBkYXJrU2Vjb25kYXJ5U3lzdGVtQmFja2dyb3VuZEhleF8QGGxpZ2h0U3lzdGVtQmFja2dyb3VuZEhleF8QEGRhcmtTZXBhcmF0b3JIZXhfEBFkYXJrU3lzdGVtRmlsbEhleF8QGmxpZ2h0VGVydGlhcnlTeXN0ZW1GaWxsSGV4XmxpZ2h0QWNjZW50SGV4XxARbGlnaHRTZXBhcmF0b3JIZXhfEBJsaWdodFN5c3RlbUZpbGxIZXhfEA9saWdodFByaW1hcnlIZXheZGFya1ByaW1hcnlIZXhfEBdkYXJrU3lzdGVtQmFja2dyb3VuZEhleF8QGWRhcmtUZXJ0aWFyeVN5c3RlbUZpbGxIZXhfEBtsaWdodFNlY29uZGFyeVN5c3RlbUZpbGxIZXhYc2VsZWN0ZWRdZGFya0FjY2VudEhleF8QIGxpZ2h0VGVydGlhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAfbGlnaHRTeXN0ZW1Hcm91cGVkQmFja2dyb3VuZEhleN8QEgCrAKwArSIwAB8ArwCwIjEAIQCuIjIAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1IjoALwB1AGcAdQUaId4AdQB1IkIAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBAvQIgBIIgMGBAtkICIEC8wgSff8O+9MAOAA5AA4iRiJJAFCiAZIFJIA7gKSiIkoiS4EC9YEDAYAv2QAfACMiTgAOACYiTwAhAGYiUCH6AZIAZwCGABUAJwAvAHUiWF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEC8oA7gBKANYAAgAQIgQL20wA4ADkADiJaImMAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgiZCJlImYiZyJoImkiaiJrgQL3gQL4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ACcAZwBwAD4AZ00lTSYAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgQYhgASABIACgQYRgQGWgASAEoEBmIAJgBKBBoGBBhAIEvdowmDTADgAOQAOTSpNLABQoQB6gBShTS2BBhKAL9kAHwAjTTAADgAmTTEAIQBmTTIASQB6AGcAhgAVACcALwB1TTpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBg+AFIASgDWAAIAECIEGE9MAOAA5AA5NPE1GAFCpAI0AjgCPAJAAkQCSAJMAlACVgBeAGIAZgBqAG4AcgB2AHoAfqU1HTUhNSU1KTUtNTE1NTU5NT4EGFIEGFoEGF4EGGYEGGoEGHIEGHYEGH4EGIIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVNUwAVTS0AdQB1AHUALwB1AL0AjQB1AHUAFQB1gACBBhWAAIEGEggICAiAI4AXCAiAAAjSADkADk1hAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVNLQB1AHUAdQAvAHUAvQCOAHUAdQAVAHWAAIAAgACBBhIICAgIgCOAGAgIgAAI3xAPAKsArACtAB8A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ADkADmi2AMWggCLTADgAOQAOaLlougBQoKCAL1DSAMcAyGi+aL9ZWERQTU1vZGVso2i+aMAAzFdYRE1vZGVsAAAACAAAABkAAAAiAAAALAAAADEAAAA6AAAAPwAAAFEAAABWAAAAWwAAAF0AABDHAAAQzQAAEOYAABD4AAAQ/wAAEQ0AABEaAAARMgAAEUwAABFOAAARUQAAEVMAABFWAAARWQAAEVwAABGVAAARtAAAEdEAABHwAAASAgAAEiIAABIpAAASRwAAElMAABJvAAASdQAAEpcAABK4AAASywAAEs0AABLQAAAS0wAAEtUAABLXAAAS2QAAEtwAABLfAAAS4QAAEuMAABLlAAAS5wAAEukAABLrAAAS7AAAEvAAABL9AAATBQAAExAAABMlAAATJwAAEykAABMrAAATLQAAEy8AABMxAAATMwAAEzUAABM3AAATOQAAE04AABNQAAATUgAAE1UAABNYAAATWwAAE10AABNgAAATYwAAE2YAABNpAAATawAAE3IAABOAAAAThQAAE44AABOWAAATogAAE6oAABO5AAATwQAAE8cAABQKAAAULgAAFFIAABR1AAAUnAAAFLwAABTjAAAVCgAAFSoAABVOAAAVcgAAFX4AABWAAAAVggAAFYQAABWGAAAViAAAFYoAABWNAAAVjwAAFZEAABWUAAAVlgAAFZgAABWbAAAVnQAAFZ4AABWnAAAVrwAAFbwAABW/AAAVwQAAFcQAABXGAAAVyAAAFdcAABX8AAAWIAAAFkcAABZrAAAWbQAAFm8AABZxAAAWcwAAFnUAABZ3AAAWeAAAFnoAABaHAAAWmgAAFpwAABaeAAAWoAAAFqIAABakAAAWpgAAFqgAABaqAAAWrAAAFr8AABbBAAAWwwAAFsUAABbHAAAWyQAAFssAABbNAAAWzwAAFtEAABbTAAAW6QAAFvwAABcYAAAXNQAAF1EAABdlAAAXdwAAF40AABemAAAX5QAAF+sAABf0AAAYAQAAGA0AABgXAAAYIQAAGCwAABg3AAAYRAAAGEwAABhOAAAYUAAAGFIAABhUAAAYVQAAGFYAABhXAAAYWAAAGFoAABhcAAAYXQAAGF4AABhgAAAYYQAAGGoAABhrAAAYbQAAGHYAABiBAAAYigAAGJkAABigAAAYqAAAGLEAABi6AAAYzQAAGNYAABjpAAAZAAAAGRIAABlRAAAZUwAAGVUAABlXAAAZWQAAGVoAABlbAAAZXAAAGV0AABlfAAAZYQAAGWIAABljAAAZZQAAGWYAABlxAAAZsAAAGbIAABm0AAAZtgAAGbgAABm5AAAZugAAGbsAABm8AAAZvgAAGcAAABnBAAAZwgAAGcQAABnFAAAZzgAAGc8AABnRAAAaEAAAGhIAABoUAAAaFgAAGhgAABoZAAAaGgAAGhsAABocAAAaHgAAGiAAABohAAAaIgAAGiQAABolAAAaZAAAGmYAABpoAAAaagAAGmwAABptAAAabgAAGm8AABpwAAAacgAAGnQAABp1AAAadgAAGngAABp5AAAaggAAGoMAABqFAAAaxAAAGsYAABrIAAAaygAAGswAABrNAAAazgAAGs8AABrQAAAa0gAAGtQAABrVAAAa1gAAGtgAABrZAAAa2gAAGxkAABsbAAAbHQAAGx8AABshAAAbIgAAGyMAABskAAAbJQAAGycAABspAAAbKgAAGysAABstAAAbLgAAGzsAABs8AAAbPQAAGz8AABtIAAAbXgAAG2UAABtyAAAbsQAAG7MAABu1AAAbtwAAG7kAABu6AAAbuwAAG7wAABu9AAAbvwAAG8EAABvCAAAbwwAAG8UAABvGAAAb3wAAG+EAABvjAAAb5QAAG+YAABvoAAAb/wAAHAgAABwWAAAcIwAAHDEAABxGAAAcWgAAHHEAAByDAAAcwgAAHMQAABzGAAAcyAAAHMoAABzLAAAczAAAHM0AABzOAAAc0AAAHNIAABzTAAAc1AAAHNYAABzXAAAc4AAAHPUAAB0EAAAdGQAAHScAAB08AAAdUAAAHWcAAB15AAAdhgAAHYkAAB2LAAAdjgAAHZAAAB2SAAAdmAAAHeMAAB4GAAAeJgAAHkYAAB5IAAAeSgAAHkwAAB5OAAAeUAAAHlEAAB5SAAAeVAAAHlUAAB5XAAAeWAAAHloAAB5cAAAeXQAAHl4AAB5gAAAeYQAAHmYAAB5zAAAeeAAAHnoAAB58AAAegQAAHoMAAB6FAAAehwAAHpwAAB6vAAAe1AAAHvgAAB8fAAAfQwAAH0UAAB9HAAAfSQAAH0sAAB9NAAAfTwAAH1AAAB9SAAAfXwAAH3AAAB9yAAAfdAAAH3YAAB94AAAfegAAH3wAAB9+AAAfgAAAH5EAAB+TAAAflQAAH5cAAB+ZAAAfmwAAH50AAB+fAAAfoQAAH6MAAB/BAAAf3wAAH/IAACAGAAAgGwAAIDgAACBMAAAgYgAAIKEAACCjAAAgpQAAIKcAACCpAAAgqgAAIKsAACCsAAAgrQAAIK8AACCxAAAgsgAAILMAACC1AAAgtgAAIPUAACD3AAAg+QAAIPsAACD9AAAg/gAAIP8AACEAAAAhAQAAIQMAACEFAAAhBgAAIQcAACEJAAAhCgAAIUkAACFLAAAhTQAAIU8AACFRAAAhUgAAIVMAACFUAAAhVQAAIVcAACFZAAAhWgAAIVsAACFdAAAhXgAAIWsAACFsAAAhbQAAIW8AACGuAAAhsAAAIbIAACG0AAAhtgAAIbcAACG4AAAhuQAAIboAACG8AAAhvgAAIb8AACHAAAAhwgAAIcMAACICAAAiBAAAIgYAACIIAAAiCgAAIgsAACIMAAAiDQAAIg4AACIQAAAiEgAAIhMAACIUAAAiFgAAIhcAACIYAAAiVwAAIlkAACJbAAAiXQAAIl8AACJgAAAiYQAAImIAACJjAAAiZQAAImcAACJoAAAiaQAAImsAACJsAAAiqwAAIq0AACKvAAAisQAAIrMAACK0AAAitQAAIrYAACK3AAAiuQAAIrsAACK8AAAivQAAIr8AACLAAAAizwAAIw4AACMQAAAjEgAAIxQAACMWAAAjFwAAIxgAACMZAAAjGgAAIxwAACMeAAAjHwAAIyAAACMiAAAjIwAAI0gAACNsAAAjkwAAI7cAACO5AAAjuwAAI70AACO/AAAjwQAAI8MAACPEAAAjxgAAI9MAACPiAAAj5AAAI+YAACPoAAAj6gAAI+wAACPuAAAj8AAAI/8AACQBAAAkAwAAJAUAACQHAAAkCgAAJA0AACQQAAAkEgAAJCQAACQ4AAAkSgAAJF8AACRxAAAkgAAAJJ0AACTcAAAk3gAAJOAAACTiAAAk5AAAJOUAACTmAAAk5wAAJOgAACTqAAAk7AAAJO0AACTuAAAk8AAAJPEAACUwAAAlMgAAJTQAACU2AAAlOAAAJTkAACU6AAAlOwAAJTwAACU+AAAlQAAAJUEAACVCAAAlRAAAJUUAACVHAAAlhgAAJYgAACWKAAAljAAAJY4AACWPAAAlkAAAJZEAACWSAAAllAAAJZYAACWXAAAlmAAAJZoAACWbAAAl2gAAJdwAACXeAAAl4AAAJeIAACXjAAAl5AAAJeUAACXmAAAl6AAAJeoAACXrAAAl7AAAJe4AACXvAAAmQgAAJmYAACaKAAAmqgAAJtEAACb4AAAnGAAAJz8AACdjAAAnhgAAJ60AACfRAAAn9QAAKBkAAChAAAAoQQAAKEMAAChFAAAoRwAAKEkAAChMAAAoTgAAKFAAAChTAAAoVQAAKFcAAChaAAAoXAAAKF4AAChgAAAoYgAAKGQAAChnAAAoagAAKG8AACh8AAAofwAAKIEAACiEAAAohgAAKIgAACitAAAo0QAAKPgAACkcAAApHgAAKSAAACkiAAApJAAAKSYAACkoAAApKQAAKSsAACk4AAApSwAAKU0AAClPAAApUQAAKVMAAClVAAApVwAAKVkAAClbAAApXQAAKXAAAClyAAApdAAAKXYAACl4AAApegAAKXwAACl+AAApgAAAKYIAACmEAAApwwAAKcUAACnHAAApyQAAKcsAACnMAAApzQAAKc4AACnPAAAp0QAAKdMAACnUAAAp1QAAKdcAACnYAAAp4QAAKeIAACnkAAAqIwAAKiUAAConAAAqKQAAKisAACosAAAqLQAAKi4AACovAAAqMQAAKjMAACo0AAAqNQAAKjcAACo4AAAqdwAAKnkAACp7AAAqfQAAKn8AACqAAAAqgQAAKoIAACqDAAAqhQAAKocAACqIAAAqiQAAKosAACqMAAAqlQAAKpYAACqYAAAq1wAAKtkAACrbAAAq3QAAKt8AACrgAAAq4QAAKuIAACrjAAAq5QAAKucAACroAAAq6QAAKusAACrsAAArKwAAKy0AACsvAAArMQAAKzMAACs0AAArNQAAKzYAACs3AAArOQAAKzsAACs8AAArPQAAKz8AACtAAAArSQAAK0oAACtMAAAriwAAK40AACuPAAArkQAAK5MAACuUAAArlQAAK5YAACuXAAArmQAAK5sAACucAAArnQAAK58AACugAAAr3wAAK+EAACvjAAAr5QAAK+cAACvoAAAr6QAAK+oAACvrAAAr7QAAK+8AACvwAAAr8QAAK/MAACv0AAAsAQAALAIAACwDAAAsBQAALEQAACxGAAAsSAAALEoAACxMAAAsTQAALE4AACxPAAAsUAAALFIAACxUAAAsVQAALFYAACxYAAAsWQAALJgAACyaAAAsnAAALJ4AACygAAAsoQAALKIAACyjAAAspAAALKYAACyoAAAsqQAALKoAACysAAAsrQAALLkAACzGAAAs8QAALPMAACz1AAAs9wAALPkAACz7AAAs/QAALP8AAC0BAAAtAwAALQUAAC0HAAAtCQAALQsAAC0NAAAtDwAALREAAC0TAAAtFQAALRcAAC0ZAAAtRAAALUYAAC1IAAAtSgAALU0AAC1QAAAtUwAALVYAAC1ZAAAtXAAALV8AAC1iAAAtZQAALWgAAC1rAAAtbgAALXEAAC10AAAtdwAALXoAAC19AAAtfwAALYYAAC2MAAAtmgAALaMAAC2vAAAtwgAALcgAAC3SAAAt1wAALeQAAC3vAAAt+gAALf8AAC4HAAAuDwAALhkAAC4kAAAuLgAALkEAAC5OAAAumQAALrwAAC7cAAAu/AAALv4AAC8AAAAvAgAALwQAAC8GAAAvBwAALwgAAC8KAAAvCwAALw0AAC8OAAAvEAAALxIAAC8TAAAvFAAALxYAAC8XAAAvHAAALykAAC8uAAAvMAAALzIAAC83AAAvOQAALzsAAC89AAAvYgAAL4YAAC+tAAAv0QAAL9MAAC/VAAAv1wAAL9kAAC/bAAAv3QAAL94AAC/gAAAv7QAAL/4AADAAAAAwAgAAMAQAADAGAAAwCAAAMAoAADAMAAAwDgAAMB8AADAhAAAwIwAAMCUAADAnAAAwKQAAMCsAADAtAAAwLwAAMDEAADBwAAAwcgAAMHQAADB2AAAweAAAMHkAADB6AAAwewAAMHwAADB+AAAwgAAAMIEAADCCAAAwhAAAMIUAADDEAAAwxgAAMMgAADDKAAAwzAAAMM0AADDOAAAwzwAAMNAAADDSAAAw1AAAMNUAADDWAAAw2AAAMNkAADEYAAAxGgAAMRwAADEeAAAxIAAAMSEAADEiAAAxIwAAMSQAADEmAAAxKAAAMSkAADEqAAAxLAAAMS0AADE6AAAxOwAAMTwAADE+AAAxfQAAMX8AADGBAAAxgwAAMYUAADGGAAAxhwAAMYgAADGJAAAxiwAAMY0AADGOAAAxjwAAMZEAADGSAAAx0QAAMdMAADHVAAAx1wAAMdkAADHaAAAx2wAAMdwAADHdAAAx3wAAMeEAADHiAAAx4wAAMeUAADHmAAAyJQAAMicAADIpAAAyKwAAMi0AADIuAAAyLwAAMjAAADIxAAAyMwAAMjUAADI2AAAyNwAAMjkAADI6AAAyeQAAMnsAADJ9AAAyfwAAMoEAADKCAAAygwAAMoQAADKFAAAyhwAAMokAADKKAAAyiwAAMo0AADKOAAAyzQAAMs8AADLRAAAy0wAAMtUAADLWAAAy1wAAMtgAADLZAAAy2wAAMt0AADLeAAAy3wAAMuEAADLiAAAzBwAAMysAADNSAAAzdgAAM3gAADN6AAAzfAAAM34AADOAAAAzggAAM4MAADOFAAAzkgAAM6EAADOjAAAzpQAAM6cAADOpAAAzqwAAM60AADOvAAAzvgAAM8AAADPCAAAzxAAAM8YAADPIAAAzygAAM8wAADPOAAA0DQAANA8AADQRAAA0EwAANBUAADQWAAA0FwAANBgAADQZAAA0GwAANB0AADQeAAA0HwAANCEAADQiAAA0YQAANGMAADRlAAA0ZwAANGkAADRqAAA0awAANGwAADRtAAA0bwAANHEAADRyAAA0cwAANHUAADR2AAA0tQAANLcAADS5AAA0uwAANL0AADS+AAA0vwAANMAAADTBAAA0wwAANMUAADTGAAA0xwAANMkAADTKAAA1CQAANQsAADUNAAA1DwAANREAADUSAAA1EwAANRQAADUVAAA1FwAANRkAADUaAAA1GwAANR0AADUeAAA1XQAANV8AADVhAAA1YwAANWUAADVmAAA1ZwAANWgAADVpAAA1awAANW0AADVuAAA1bwAANXEAADVyAAA1sQAANbMAADW1AAA1twAANbkAADW6AAA1uwAANbwAADW9AAA1vwAANcEAADXCAAA1wwAANcUAADXGAAA2BQAANgcAADYJAAA2CwAANg0AADYOAAA2DwAANhAAADYRAAA2EwAANhUAADYWAAA2FwAANhkAADYaAAA2IwAANjYAADZDAAA2VgAANmMAADZ2AAA2jQAANp8AADbqAAA3DQAANy0AADdNAAA3TwAAN1EAADdTAAA3VQAAN1cAADdYAAA3WQAAN1sAADdcAAA3XgAAN18AADdhAAA3YwAAN2QAADdlAAA3ZwAAN2gAADdtAAA3egAAN38AADeBAAA3gwAAN4gAADeKAAA3jAAAN44AADejAAA3yAAAN+wAADgTAAA4NwAAODkAADg7AAA4PQAAOD8AADhBAAA4QwAAOEQAADhGAAA4UwAAOGQAADhmAAA4aAAAOGoAADhsAAA4bgAAOHAAADhyAAA4dAAAOIUAADiHAAA4iQAAOIsAADiNAAA4jwAAOJEAADiTAAA4lQAAOJcAADjWAAA42AAAONoAADjcAAA43gAAON8AADjgAAA44QAAOOIAADjkAAA45gAAOOcAADjoAAA46gAAOOsAADkqAAA5LAAAOS4AADkwAAA5MgAAOTMAADk0AAA5NQAAOTYAADk4AAA5OgAAOTsAADk8AAA5PgAAOT8AADl+AAA5gAAAOYIAADmEAAA5hgAAOYcAADmIAAA5iQAAOYoAADmMAAA5jgAAOY8AADmQAAA5kgAAOZMAADmgAAA5oQAAOaIAADmkAAA54wAAOeUAADnnAAA56QAAOesAADnsAAA57QAAOe4AADnvAAA58QAAOfMAADn0AAA59QAAOfcAADn4AAA6NwAAOjkAADo7AAA6PQAAOj8AADpAAAA6QQAAOkIAADpDAAA6RQAAOkcAADpIAAA6SQAAOksAADpMAAA6iwAAOo0AADqPAAA6kQAAOpMAADqUAAA6lQAAOpYAADqXAAA6mQAAOpsAADqcAAA6nQAAOp8AADqgAAA63wAAOuEAADrjAAA65QAAOucAADroAAA66QAAOuoAADrrAAA67QAAOu8AADrwAAA68QAAOvMAADr0AAA7MwAAOzUAADs3AAA7OQAAOzsAADs8AAA7PQAAOz4AADs/AAA7QQAAO0MAADtEAAA7RQAAO0cAADtIAAA7bQAAO5EAADu4AAA73AAAO94AADvgAAA74gAAO+QAADvmAAA76AAAO+kAADvrAAA7+AAAPAcAADwJAAA8CwAAPA0AADwPAAA8EQAAPBMAADwVAAA8JAAAPCYAADwoAAA8KgAAPCwAADwuAAA8MAAAPDIAADw0AAA8VAAAPH8AADyZAAA8sgAAPMwAADzsAAA9DwAAPU4AAD1QAAA9UgAAPVQAAD1WAAA9VwAAPVgAAD1ZAAA9WgAAPVwAAD1eAAA9XwAAPWAAAD1iAAA9YwAAPaIAAD2kAAA9pgAAPagAAD2qAAA9qwAAPawAAD2tAAA9rgAAPbAAAD2yAAA9swAAPbQAAD22AAA9twAAPfYAAD34AAA9+gAAPfwAAD3+AAA9/wAAPgAAAD4BAAA+AgAAPgQAAD4GAAA+BwAAPggAAD4KAAA+CwAAPkoAAD5MAAA+TgAAPlAAAD5SAAA+UwAAPlQAAD5VAAA+VgAAPlgAAD5aAAA+WwAAPlwAAD5eAAA+XwAAPmIAAD6hAAA+owAAPqUAAD6nAAA+qQAAPqoAAD6rAAA+rAAAPq0AAD6vAAA+sQAAPrIAAD6zAAA+tQAAPrYAAD71AAA+9wAAPvkAAD77AAA+/QAAPv4AAD7/AAA/AAAAPwEAAD8DAAA/BQAAPwYAAD8HAAA/CQAAPwoAAD9JAAA/SwAAP00AAD9PAAA/UQAAP1IAAD9TAAA/VAAAP1UAAD9XAAA/WQAAP1oAAD9bAAA/XQAAP14AAD9nAAA/dQAAP4IAAD+QAAA/nQAAP7AAAD/HAAA/2QAAQCQAAEBHAABAZwAAQIcAAECJAABAiwAAQI0AAECPAABAkQAAQJIAAECTAABAlQAAQJYAAECYAABAmQAAQJsAAECdAABAngAAQJ8AAEChAABAogAAQKcAAEC0AABAuQAAQLsAAEC9AABAwgAAQMQAAEDGAABAyAAAQO0AAEERAABBOAAAQVwAAEFeAABBYAAAQWIAAEFkAABBZgAAQWgAAEFpAABBawAAQXgAAEGJAABBiwAAQY0AAEGPAABBkQAAQZMAAEGVAABBlwAAQZkAAEGqAABBrAAAQa4AAEGwAABBsgAAQbQAAEG2AABBuAAAQboAAEG8AABB+wAAQf0AAEH/AABCAQAAQgMAAEIEAABCBQAAQgYAAEIHAABCCQAAQgsAAEIMAABCDQAAQg8AAEIQAABCTwAAQlEAAEJTAABCVQAAQlcAAEJYAABCWQAAQloAAEJbAABCXQAAQl8AAEJgAABCYQAAQmMAAEJkAABCowAAQqUAAEKnAABCqQAAQqsAAEKsAABCrQAAQq4AAEKvAABCsQAAQrMAAEK0AABCtQAAQrcAAEK4AABCxQAAQsYAAELHAABCyQAAQwgAAEMKAABDDAAAQw4AAEMQAABDEQAAQxIAAEMTAABDFAAAQxYAAEMYAABDGQAAQxoAAEMcAABDHQAAQ1wAAENeAABDYAAAQ2IAAENkAABDZQAAQ2YAAENnAABDaAAAQ2oAAENsAABDbQAAQ24AAENwAABDcQAAQ7AAAEOyAABDtAAAQ7YAAEO4AABDuQAAQ7oAAEO7AABDvAAAQ74AAEPAAABDwQAAQ8IAAEPEAABDxQAARAQAAEQGAABECAAARAoAAEQMAABEDQAARA4AAEQPAABEEAAARBIAAEQUAABEFQAARBYAAEQYAABEGQAARFgAAERaAABEXAAARF4AAERgAABEYQAARGIAAERjAABEZAAARGYAAERoAABEaQAARGoAAERsAABEbQAARJIAAES2AABE3QAARQEAAEUDAABFBQAARQcAAEUJAABFCwAARQ0AAEUOAABFEAAARR0AAEUsAABFLgAARTAAAEUyAABFNAAARTYAAEU4AABFOgAARUkAAEVLAABFTQAARU8AAEVRAABFVAAARVcAAEVaAABFXAAARZsAAEWdAABFnwAARaEAAEWjAABFpAAARaUAAEWmAABFpwAARakAAEWrAABFrAAARa0AAEWvAABFsAAARe8AAEXxAABF8wAARfUAAEX3AABF+AAARfkAAEX6AABF+wAARf0AAEX/AABGAAAARgEAAEYDAABGBAAARgYAAEZFAABGRwAARkkAAEZLAABGTQAARk4AAEZPAABGUAAARlEAAEZTAABGVQAARlYAAEZXAABGWQAARloAAEaZAABGmwAARp0AAEafAABGoQAARqIAAEajAABGpAAARqUAAEanAABGqQAARqoAAEarAABGrQAARq4AAEbxAABHFQAARzkAAEdcAABHgwAAR6MAAEfKAABH8QAASBEAAEg1AABIWQAASFsAAEhdAABIXwAASGEAAEhjAABIZQAASGgAAEhqAABIbAAASG8AAEhxAABIcwAASHYAAEh4AABIeQAASH4AAEiLAABIjgAASJAAAEiTAABIlQAASJcAAEi8AABI4AAASQcAAEkrAABJLQAASS8AAEkxAABJMwAASTUAAEk3AABJOAAASToAAElHAABJWgAASVwAAEleAABJYAAASWIAAElkAABJZgAASWgAAElqAABJbAAASX8AAEmBAABJgwAASYUAAEmHAABJiQAASYsAAEmNAABJjwAASZEAAEmTAABJ0gAASdQAAEnWAABJ2AAASdoAAEnbAABJ3AAASd0AAEneAABJ4AAASeIAAEnjAABJ5AAASeYAAEnnAABJ8AAASfEAAEnzAABKMgAASjQAAEo2AABKOAAASjoAAEo7AABKPAAASj0AAEo+AABKQAAASkIAAEpDAABKRAAASkYAAEpHAABKhgAASogAAEqKAABKjAAASo4AAEqPAABKkAAASpEAAEqSAABKlAAASpYAAEqXAABKmAAASpoAAEqbAABKpAAASqUAAEqnAABK5gAASugAAErqAABK7AAASu4AAErvAABK8AAASvEAAEryAABK9AAASvYAAEr3AABK+AAASvoAAEr7AABLOgAASzwAAEs+AABLQAAAS0IAAEtDAABLRAAAS0UAAEtGAABLSAAAS0oAAEtLAABLTAAAS04AAEtPAABLWAAAS1kAAEtbAABLmgAAS5wAAEueAABLoAAAS6IAAEujAABLpAAAS6UAAEumAABLqAAAS6oAAEurAABLrAAAS64AAEuvAABL7gAAS/AAAEvyAABL9AAAS/YAAEv3AABL+AAAS/kAAEv6AABL/AAAS/4AAEv/AABMAAAATAIAAEwDAABMEAAATBEAAEwSAABMFAAATFMAAExVAABMVwAATFkAAExbAABMXAAATF0AAExeAABMXwAATGEAAExjAABMZAAATGUAAExnAABMaAAATKcAAEypAABMqwAATK0AAEyvAABMsAAATLEAAEyyAABMswAATLUAAEy3AABMuAAATLkAAEy7AABMvAAATMoAAEzXAABM5gAATOgAAEzqAABM7AAATO4AAEzwAABM8gAATPQAAE0DAABNBQAATQgAAE0LAABNDgAATREAAE0UAABNFwAATRkAAE0gAABNJwAATSoAAE01AABNQAAATUwAAE2XAABNugAATdoAAE36AABN/AAATf4AAE4AAABOAgAATgQAAE4FAABOBgAATggAAE4JAABOCwAATgwAAE4OAABOEAAAThEAAE4SAABOFAAAThUAAE4aAABOJwAATiwAAE4uAABOMAAATjUAAE43AABOOQAATjsAAE5gAABOhAAATqsAAE7PAABO0QAATtMAAE7VAABO1wAATtkAAE7bAABO3AAATt4AAE7rAABO/AAATv4AAE8AAABPAgAATwQAAE8GAABPCAAATwoAAE8MAABPHQAATx8AAE8hAABPIwAATyUAAE8nAABPKQAATysAAE8tAABPLwAAT24AAE9wAABPcgAAT3QAAE92AABPdwAAT3gAAE95AABPegAAT3wAAE9+AABPfwAAT4AAAE+CAABPgwAAT8IAAE/EAABPxgAAT8gAAE/KAABPywAAT8wAAE/NAABPzgAAT9AAAE/SAABP0wAAT9QAAE/WAABP1wAAUBYAAFAYAABQGgAAUBwAAFAeAABQHwAAUCAAAFAhAABQIgAAUCQAAFAmAABQJwAAUCgAAFAqAABQKwAAUDgAAFA5AABQOgAAUDwAAFB7AABQfQAAUH8AAFCBAABQgwAAUIQAAFCFAABQhgAAUIcAAFCJAABQiwAAUIwAAFCNAABQjwAAUJAAAFDPAABQ0QAAUNMAAFDVAABQ1wAAUNgAAFDZAABQ2gAAUNsAAFDdAABQ3wAAUOAAAFDhAABQ4wAAUOQAAFEjAABRJQAAUScAAFEpAABRKwAAUSwAAFEtAABRLgAAUS8AAFExAABRMwAAUTQAAFE1AABRNwAAUTgAAFF3AABReQAAUXsAAFF9AABRfwAAUYAAAFGBAABRggAAUYMAAFGFAABRhwAAUYgAAFGJAABRiwAAUYwAAFHLAABRzQAAUc8AAFHRAABR0wAAUdQAAFHVAABR1gAAUdcAAFHZAABR2wAAUdwAAFHdAABR3wAAUeAAAFIFAABSKQAAUlAAAFJ0AABSdgAAUngAAFJ6AABSfAAAUn4AAFKAAABSgQAAUoQAAFKRAABSoAAAUqIAAFKkAABSpgAAUqgAAFKqAABSrAAAUq4AAFK9AABSwAAAUsMAAFLGAABSyQAAUswAAFLPAABS0gAAUtQAAFMTAABTFQAAUxgAAFMaAABTHAAAUx0AAFMeAABTHwAAUyAAAFMiAABTJAAAUyUAAFMmAABTKAAAUykAAFMrAABTagAAU2wAAFNuAABTcAAAU3IAAFNzAABTdAAAU3UAAFN2AABTeAAAU3oAAFN7AABTfAAAU34AAFN/AABTvgAAU8AAAFPCAABTxAAAU8YAAFPHAABTyAAAU8kAAFPKAABTzAAAU84AAFPPAABT0AAAU9IAAFPTAABUEgAAVBQAAFQXAABUGQAAVBsAAFQcAABUHQAAVB4AAFQfAABUIQAAVCMAAFQkAABUJQAAVCcAAFQoAABUKgAAVGkAAFRrAABUbQAAVG8AAFRxAABUcgAAVHMAAFR0AABUdQAAVHcAAFR5AABUegAAVHsAAFR9AABUfgAAVL0AAFS/AABUwQAAVMMAAFTFAABUxgAAVMcAAFTIAABUyQAAVMsAAFTNAABUzgAAVM8AAFTRAABU0gAAVREAAFUTAABVFQAAVRcAAFUZAABVGgAAVRsAAFUcAABVHQAAVR8AAFUhAABVIgAAVSMAAFUlAABVJgAAVXEAAFWUAABVtAAAVdQAAFXWAABV2AAAVdoAAFXcAABV3gAAVd8AAFXgAABV4wAAVeQAAFXmAABV5wAAVekAAFXrAABV7AAAVe0AAFXwAABV8QAAVfYAAFYDAABWCAAAVgoAAFYMAABWEQAAVhQAAFYXAABWGQAAVj4AAFZiAABWiQAAVq0AAFawAABWsgAAVrQAAFa2AABWuAAAVroAAFa7AABWvgAAVssAAFbcAABW3gAAVuAAAFbiAABW5AAAVuYAAFboAABW6gAAVuwAAFb9AABXAAAAVwMAAFcGAABXCQAAVwwAAFcPAABXEgAAVxUAAFcXAABXVgAAV1gAAFdaAABXXAAAV18AAFdgAABXYQAAV2IAAFdjAABXZQAAV2cAAFdoAABXaQAAV2sAAFdsAABXqwAAV60AAFevAABXsQAAV7QAAFe1AABXtgAAV7cAAFe4AABXugAAV7wAAFe9AABXvgAAV8AAAFfBAABYAAAAWAIAAFgFAABYBwAAWAoAAFgLAABYDAAAWA0AAFgOAABYEAAAWBIAAFgTAABYFAAAWBYAAFgXAABYJAAAWCUAAFgmAABYKAAAWGcAAFhpAABYawAAWG0AAFhwAABYcQAAWHIAAFhzAABYdAAAWHYAAFh4AABYeQAAWHoAAFh8AABYfQAAWLwAAFi+AABYwAAAWMIAAFjFAABYxgAAWMcAAFjIAABYyQAAWMsAAFjNAABYzgAAWM8AAFjRAABY0gAAWREAAFkTAABZFQAAWRcAAFkaAABZGwAAWRwAAFkdAABZHgAAWSAAAFkiAABZIwAAWSQAAFkmAABZJwAAWWYAAFloAABZagAAWWwAAFlvAABZcAAAWXEAAFlyAABZcwAAWXUAAFl3AABZeAAAWXkAAFl7AABZfAAAWbsAAFm9AABZvwAAWcEAAFnEAABZxQAAWcYAAFnHAABZyAAAWcoAAFnMAABZzQAAWc4AAFnQAABZ0QAAWfYAAFoaAABaQQAAWmUAAFpoAABaagAAWmwAAFpuAABacAAAWnIAAFpzAABadgAAWoMAAFqSAABalAAAWpYAAFqYAABamgAAWpwAAFqeAABaoAAAWq8AAFqyAABatQAAWrgAAFq7AABavgAAWsEAAFrEAABaxgAAWwUAAFsHAABbCQAAWwsAAFsOAABbDwAAWxAAAFsRAABbEgAAWxQAAFsWAABbFwAAWxgAAFsaAABbGwAAW1oAAFtcAABbXgAAW2AAAFtjAABbZAAAW2UAAFtmAABbZwAAW2kAAFtrAABbbAAAW20AAFtvAABbcAAAW68AAFuxAABbswAAW7UAAFu4AABbuQAAW7oAAFu7AABbvAAAW74AAFvAAABbwQAAW8IAAFvEAABbxQAAXAQAAFwGAABcCAAAXAoAAFwNAABcDgAAXA8AAFwQAABcEQAAXBMAAFwVAABcFgAAXBcAAFwZAABcGgAAXFkAAFxbAABcXQAAXF8AAFxiAABcYwAAXGQAAFxlAABcZgAAXGgAAFxqAABcawAAXGwAAFxuAABcbwAAXK4AAFywAABcsgAAXLQAAFy3AABcuAAAXLkAAFy6AABcuwAAXL0AAFy/AABcwAAAXMEAAFzDAABcxAAAXQMAAF0FAABdBwAAXQkAAF0MAABdDQAAXQ4AAF0PAABdEAAAXRIAAF0UAABdFQAAXRYAAF0YAABdGQAAXWQAAF2HAABdpwAAXccAAF3JAABdywAAXc0AAF3PAABd0QAAXdIAAF3TAABd1gAAXdcAAF3ZAABd2gAAXdwAAF3eAABd3wAAXeAAAF3jAABd5AAAXekAAF32AABd+wAAXf0AAF3/AABeBAAAXgcAAF4KAABeDAAAXjEAAF5VAABefAAAXqAAAF6jAABepQAAXqcAAF6pAABeqwAAXq0AAF6uAABesQAAXr4AAF7PAABe0QAAXtMAAF7VAABe1wAAXtkAAF7bAABe3QAAXt8AAF7wAABe8wAAXvYAAF75AABe/AAAXv8AAF8CAABfBQAAXwgAAF8KAABfSQAAX0sAAF9NAABfTwAAX1IAAF9TAABfVAAAX1UAAF9WAABfWAAAX1oAAF9bAABfXAAAX14AAF9fAABfngAAX6AAAF+iAABfpAAAX6cAAF+oAABfqQAAX6oAAF+rAABfrQAAX68AAF+wAABfsQAAX7MAAF+0AABf8wAAX/UAAF/4AABf+gAAX/0AAF/+AABf/wAAYAAAAGABAABgAwAAYAUAAGAGAABgBwAAYAkAAGAKAABgFwAAYBgAAGAZAABgGwAAYFoAAGBcAABgXgAAYGAAAGBjAABgZAAAYGUAAGBmAABgZwAAYGkAAGBrAABgbAAAYG0AAGBvAABgcAAAYK8AAGCxAABgswAAYLUAAGC4AABguQAAYLoAAGC7AABgvAAAYL4AAGDAAABgwQAAYMIAAGDEAABgxQAAYQQAAGEGAABhCAAAYQoAAGENAABhDgAAYQ8AAGEQAABhEQAAYRMAAGEVAABhFgAAYRcAAGEZAABhGgAAYVkAAGFbAABhXQAAYV8AAGFiAABhYwAAYWQAAGFlAABhZgAAYWgAAGFqAABhawAAYWwAAGFuAABhbwAAYa4AAGGwAABhsgAAYbQAAGG3AABhuAAAYbkAAGG6AABhuwAAYb0AAGG/AABhwAAAYcEAAGHDAABhxAAAYekAAGINAABiNAAAYlgAAGJbAABiXQAAYl8AAGJhAABiYwAAYmUAAGJmAABiaQAAYnYAAGKFAABihwAAYokAAGKLAABijQAAYo8AAGKRAABikwAAYqIAAGKlAABiqAAAYqsAAGKuAABisQAAYrQAAGK3AABiuQAAYvgAAGL6AABi/QAAYv8AAGMCAABjAwAAYwQAAGMFAABjBgAAYwgAAGMKAABjCwAAYwwAAGMOAABjDwAAY04AAGNQAABjUgAAY1QAAGNXAABjWAAAY1kAAGNaAABjWwAAY10AAGNfAABjYAAAY2EAAGNjAABjZAAAY6MAAGOlAABjpwAAY6kAAGOsAABjrQAAY64AAGOvAABjsAAAY7IAAGO0AABjtQAAY7YAAGO4AABjuQAAY/gAAGP6AABj/QAAY/8AAGQCAABkAwAAZAQAAGQFAABkBgAAZAgAAGQKAABkCwAAZAwAAGQOAABkDwAAZBEAAGRQAABkUgAAZFQAAGRWAABkWQAAZFoAAGRbAABkXAAAZF0AAGRfAABkYQAAZGIAAGRjAABkZQAAZGYAAGSlAABkpwAAZKkAAGSrAABkrgAAZK8AAGSwAABksQAAZLIAAGS0AABktgAAZLcAAGS4AABkugAAZLsAAGT6AABk/AAAZP4AAGUAAABlAwAAZQQAAGUFAABlBgAAZQcAAGUJAABlCwAAZQwAAGUNAABlDwAAZRAAAGVbAABlfgAAZZ4AAGW+AABlwAAAZcIAAGXEAABlxgAAZcgAAGXJAABlygAAZc0AAGXOAABl0AAAZdEAAGXTAABl1QAAZdYAAGXXAABl2gAAZdsAAGXgAABl7QAAZfIAAGX0AABl9gAAZfsAAGX+AABmAQAAZgMAAGYoAABmTAAAZnMAAGaXAABmmgAAZpwAAGaeAABmoAAAZqIAAGakAABmpQAAZqgAAGa1AABmxgAAZsgAAGbKAABmzAAAZs4AAGbQAABm0gAAZtQAAGbWAABm5wAAZuoAAGbtAABm8AAAZvMAAGb2AABm+QAAZvwAAGb/AABnAQAAZ0AAAGdCAABnRAAAZ0YAAGdJAABnSgAAZ0sAAGdMAABnTQAAZ08AAGdRAABnUgAAZ1MAAGdVAABnVgAAZ5UAAGeXAABnmQAAZ5sAAGeeAABnnwAAZ6AAAGehAABnogAAZ6QAAGemAABnpwAAZ6gAAGeqAABnqwAAZ+oAAGfsAABn7wAAZ/EAAGf0AABn9QAAZ/YAAGf3AABn+AAAZ/oAAGf8AABn/QAAZ/4AAGgAAABoAQAAaA4AAGgPAABoEAAAaBIAAGhRAABoUwAAaFUAAGhXAABoWgAAaFsAAGhcAABoXQAAaF4AAGhgAABoYgAAaGMAAGhkAABoZgAAaGcAAGimAABoqAAAaKoAAGisAABorwAAaLAAAGixAABosgAAaLMAAGi1AABotwAAaLgAAGi5AABouwAAaLwAAGj7AABo/QAAaP8AAGkBAABpBAAAaQUAAGkGAABpBwAAaQgAAGkKAABpDAAAaQ0AAGkOAABpEAAAaREAAGlQAABpUgAAaVQAAGlWAABpWQAAaVoAAGlbAABpXAAAaV0AAGlfAABpYQAAaWIAAGljAABpZQAAaWYAAGmlAABppwAAaakAAGmrAABprgAAaa8AAGmwAABpsQAAabIAAGm0AABptgAAabcAAGm4AABpugAAabsAAGngAABqBAAAaisAAGpPAABqUgAAalQAAGpWAABqWAAAaloAAGpcAABqXQAAamAAAGptAABqfAAAan4AAGqAAABqggAAaoQAAGqGAABqiAAAaooAAGqZAABqnAAAap8AAGqiAABqpQAAaqgAAGqrAABqrgAAarAAAGrvAABq8QAAavMAAGr1AABq+AAAavkAAGr6AABq+wAAavwAAGr+AABrAAAAawEAAGsCAABrBAAAawUAAGtEAABrRgAAa0gAAGtKAABrTQAAa04AAGtPAABrUAAAa1EAAGtTAABrVQAAa1YAAGtXAABrWQAAa1oAAGuZAABrmwAAa50AAGufAABrogAAa6MAAGukAABrpQAAa6YAAGuoAABrqgAAa6sAAGusAABrrgAAa68AAGvuAABr8AAAa/IAAGv0AABr9wAAa/gAAGv5AABr+gAAa/sAAGv9AABr/wAAbAAAAGwBAABsAwAAbAQAAGxDAABsRQAAbEcAAGxJAABsTAAAbE0AAGxOAABsTwAAbFAAAGxSAABsVAAAbFUAAGxWAABsWAAAbFkAAGyYAABsmgAAbJwAAGyeAABsoQAAbKIAAGyjAABspAAAbKUAAGynAABsqQAAbKoAAGyrAABsrQAAbK4AAGztAABs7wAAbPEAAGzzAABs9gAAbPcAAGz4AABs+QAAbPoAAGz8AABs/gAAbP8AAG0AAABtAgAAbQMAAG1OAABtcQAAbZEAAG2xAABtswAAbbUAAG23AABtuQAAbbsAAG28AABtvQAAbcAAAG3BAABtwwAAbcQAAG3GAABtyAAAbckAAG3KAABtzQAAbc4AAG3TAABt4AAAbeUAAG3nAABt6QAAbe4AAG3xAABt9AAAbfYAAG4bAABuPwAAbmYAAG6KAABujQAAbo8AAG6RAABukwAAbpUAAG6XAABumAAAbpsAAG6oAABuuQAAbrsAAG69AABuvwAAbsEAAG7DAABuxQAAbscAAG7JAABu2gAAbt0AAG7gAABu4wAAbuYAAG7pAABu7AAAbu8AAG7yAABu9AAAbzMAAG81AABvNwAAbzkAAG88AABvPQAAbz4AAG8/AABvQAAAb0IAAG9EAABvRQAAb0YAAG9IAABvSQAAb4gAAG+KAABvjAAAb44AAG+RAABvkgAAb5MAAG+UAABvlQAAb5cAAG+ZAABvmgAAb5sAAG+dAABvngAAb90AAG/fAABv4gAAb+QAAG/nAABv6AAAb+kAAG/qAABv6wAAb+0AAG/vAABv8AAAb/EAAG/zAABv9AAAcAEAAHACAABwAwAAcAUAAHBEAABwRgAAcEgAAHBKAABwTQAAcE4AAHBPAABwUAAAcFEAAHBTAABwVQAAcFYAAHBXAABwWQAAcFoAAHCZAABwmwAAcJ0AAHCfAABwogAAcKMAAHCkAABwpQAAcKYAAHCoAABwqgAAcKsAAHCsAABwrgAAcK8AAHDuAABw8AAAcPIAAHD0AABw9wAAcPgAAHD5AABw+gAAcPsAAHD9AABw/wAAcQAAAHEBAABxAwAAcQQAAHFDAABxRQAAcUcAAHFJAABxTAAAcU0AAHFOAABxTwAAcVAAAHFSAABxVAAAcVUAAHFWAABxWAAAcVkAAHGYAABxmgAAcZwAAHGeAABxoQAAcaIAAHGjAABxpAAAcaUAAHGnAABxqQAAcaoAAHGrAABxrQAAca4AAHHTAABx9wAAch4AAHJCAAByRQAAckcAAHJJAABySwAAck0AAHJPAAByUAAAclMAAHJgAABybwAAcnEAAHJzAABydQAAcncAAHJ5AAByewAAcn0AAHKMAAByjwAAcpIAAHKVAABymAAAcpsAAHKeAAByoQAAcqMAAHLiAABy5AAAcucAAHLpAABy7AAAcu0AAHLuAABy7wAAcvAAAHLyAABy9AAAcvUAAHL2AABy+AAAcvkAAHM4AABzOgAAczwAAHM+AABzQQAAc0IAAHNDAABzRAAAc0UAAHNHAABzSQAAc0oAAHNLAABzTQAAc04AAHONAABzjwAAc5EAAHOTAABzlgAAc5cAAHOYAABzmQAAc5oAAHOcAABzngAAc58AAHOgAABzogAAc6MAAHPiAABz5AAAc+cAAHPpAABz7AAAc+0AAHPuAABz7wAAc/AAAHPyAABz9AAAc/UAAHP2AABz+AAAc/kAAHQ4AAB0OgAAdDwAAHQ+AAB0QQAAdEIAAHRDAAB0RAAAdEUAAHRHAAB0SQAAdEoAAHRLAAB0TQAAdE4AAHSNAAB0jwAAdJEAAHSTAAB0lgAAdJcAAHSYAAB0mQAAdJoAAHScAAB0ngAAdJ8AAHSgAAB0ogAAdKMAAHTiAAB05AAAdOYAAHToAAB06wAAdOwAAHTtAAB07gAAdO8AAHTxAAB08wAAdPQAAHT1AAB09wAAdPgAAHVDAAB1ZgAAdYYAAHWmAAB1qAAAdaoAAHWsAAB1rgAAdbAAAHWxAAB1sgAAdbUAAHW2AAB1uAAAdbkAAHW7AAB1vQAAdb4AAHW/AAB1wgAAdcMAAHXIAAB11QAAddoAAHXcAAB13gAAdeMAAHXmAAB16QAAdesAAHYQAAB2NAAAdlsAAHZ/AAB2ggAAdoQAAHaGAAB2iAAAdooAAHaMAAB2jQAAdpAAAHadAAB2rgAAdrAAAHayAAB2tAAAdrYAAHa4AAB2ugAAdrwAAHa+AAB2zwAAdtIAAHbVAAB22AAAdtsAAHbeAAB24QAAduQAAHbnAAB26QAAdygAAHcqAAB3LAAAdy4AAHcxAAB3MgAAdzMAAHc0AAB3NQAAdzcAAHc5AAB3OgAAdzsAAHc9AAB3PgAAd30AAHd/AAB3gQAAd4MAAHeGAAB3hwAAd4gAAHeJAAB3igAAd4wAAHeOAAB3jwAAd5AAAHeSAAB3kwAAd9IAAHfUAAB31wAAd9kAAHfcAAB33QAAd94AAHffAAB34AAAd+IAAHfkAAB35QAAd+YAAHfoAAB36QAAd/YAAHf3AAB3+AAAd/oAAHg5AAB4OwAAeD0AAHg/AAB4QgAAeEMAAHhEAAB4RQAAeEYAAHhIAAB4SgAAeEsAAHhMAAB4TgAAeE8AAHiOAAB4kAAAeJIAAHiUAAB4lwAAeJgAAHiZAAB4mgAAeJsAAHidAAB4nwAAeKAAAHihAAB4owAAeKQAAHjjAAB45QAAeOcAAHjpAAB47AAAeO0AAHjuAAB47wAAePAAAHjyAAB49AAAePUAAHj2AAB4+AAAePkAAHk4AAB5OgAAeTwAAHk+AAB5QQAAeUIAAHlDAAB5RAAAeUUAAHlHAAB5SQAAeUoAAHlLAAB5TQAAeU4AAHmNAAB5jwAAeZEAAHmTAAB5lgAAeZcAAHmYAAB5mQAAeZoAAHmcAAB5ngAAeZ8AAHmgAAB5ogAAeaMAAHnIAAB57AAAehMAAHo3AAB6OgAAejwAAHo+AAB6QAAAekIAAHpEAAB6RQAAekgAAHpVAAB6ZAAAemYAAHpoAAB6agAAemwAAHpuAAB6cAAAenIAAHqBAAB6hAAAeocAAHqKAAB6jQAAepAAAHqTAAB6lgAAepgAAHrXAAB62QAAetsAAHrdAAB64AAAeuEAAHriAAB64wAAeuQAAHrmAAB66AAAeukAAHrqAAB67AAAeu0AAHssAAB7LgAAezAAAHsyAAB7NQAAezYAAHs3AAB7OAAAezkAAHs7AAB7PQAAez4AAHs/AAB7QQAAe0IAAHuBAAB7gwAAe4UAAHuHAAB7igAAe4sAAHuMAAB7jQAAe44AAHuQAAB7kgAAe5MAAHuUAAB7lgAAe5cAAHvWAAB72AAAe9sAAHvdAAB74AAAe+EAAHviAAB74wAAe+QAAHvmAAB76AAAe+kAAHvqAAB77AAAe+0AAHvwAAB8LwAAfDEAAHwzAAB8NQAAfDgAAHw5AAB8OgAAfDsAAHw8AAB8PgAAfEAAAHxBAAB8QgAAfEQAAHxFAAB8hAAAfIYAAHyIAAB8igAAfI0AAHyOAAB8jwAAfJAAAHyRAAB8kwAAfJUAAHyWAAB8lwAAfJkAAHyaAAB82QAAfNsAAHzdAAB83wAAfOIAAHzjAAB85AAAfOUAAHzmAAB86AAAfOoAAHzrAAB87AAAfO4AAHzvAAB9OgAAfV0AAH19AAB9nQAAfZ8AAH2hAAB9owAAfaUAAH2nAAB9qAAAfakAAH2sAAB9rQAAfa8AAH2wAAB9sgAAfbQAAH21AAB9tgAAfbkAAH26AAB9vwAAfcwAAH3RAAB90wAAfdUAAH3aAAB93QAAfeAAAH3iAAB+BwAAfisAAH5SAAB+dgAAfnkAAH57AAB+fQAAfn8AAH6BAAB+gwAAfoQAAH6HAAB+lAAAfqUAAH6nAAB+qQAAfqsAAH6tAAB+rwAAfrEAAH6zAAB+tQAAfsYAAH7JAAB+zAAAfs8AAH7SAAB+1QAAftgAAH7bAAB+3gAAfuAAAH8fAAB/IQAAfyMAAH8lAAB/KAAAfykAAH8qAAB/KwAAfywAAH8uAAB/MAAAfzEAAH8yAAB/NAAAfzUAAH90AAB/dgAAf3gAAH96AAB/fQAAf34AAH9/AAB/gAAAf4EAAH+DAAB/hQAAf4YAAH+HAAB/iQAAf4oAAH/JAAB/ywAAf84AAH/QAAB/0wAAf9QAAH/VAAB/1gAAf9cAAH/ZAAB/2wAAf9wAAH/dAAB/3wAAf+AAAH/tAAB/7gAAf+8AAH/xAACAMAAAgDIAAIA0AACANgAAgDkAAIA6AACAOwAAgDwAAIA9AACAPwAAgEEAAIBCAACAQwAAgEUAAIBGAACAhQAAgIcAAICJAACAiwAAgI4AAICPAACAkAAAgJEAAICSAACAlAAAgJYAAICXAACAmAAAgJoAAICbAACA2gAAgNwAAIDeAACA4AAAgOMAAIDkAACA5QAAgOYAAIDnAACA6QAAgOsAAIDsAACA7QAAgO8AAIDwAACBLwAAgTEAAIEzAACBNQAAgTgAAIE5AACBOgAAgTsAAIE8AACBPgAAgUAAAIFBAACBQgAAgUQAAIFFAACBhAAAgYYAAIGIAACBigAAgY0AAIGOAACBjwAAgZAAAIGRAACBkwAAgZUAAIGWAACBlwAAgZkAAIGaAACBvwAAgeMAAIIKAACCLgAAgjEAAIIzAACCNQAAgjcAAII5AACCOwAAgjwAAII/AACCTAAAglsAAIJdAACCXwAAgmEAAIJjAACCZQAAgmcAAIJpAACCeAAAgnsAAIJ+AACCgQAAgoQAAIKHAACCigAAgo0AAIKPAACCzgAAgtAAAILSAACC1AAAgtcAAILYAACC2QAAgtoAAILbAACC3QAAgt8AAILgAACC4QAAguMAAILkAACDIwAAgyUAAIMnAACDKQAAgywAAIMtAACDLgAAgy8AAIMwAACDMgAAgzQAAIM1AACDNgAAgzgAAIM5AACDeAAAg3oAAIN8AACDfgAAg4EAAIOCAACDgwAAg4QAAIOFAACDhwAAg4kAAIOKAACDiwAAg40AAIOOAACDzQAAg88AAIPRAACD0wAAg9YAAIPXAACD2AAAg9kAAIPaAACD3AAAg94AAIPfAACD4AAAg+IAAIPjAACEIgAAhCQAAIQmAACEKAAAhCsAAIQsAACELQAAhC4AAIQvAACEMQAAhDMAAIQ0AACENQAAhDcAAIQ4AACEdwAAhHkAAIR7AACEfQAAhIAAAISBAACEggAAhIMAAISEAACEhgAAhIgAAISJAACEigAAhIwAAISNAACEzAAAhM4AAITQAACE0gAAhNUAAITWAACE1wAAhNgAAITZAACE2wAAhN0AAITeAACE3wAAhOEAAITiAACE7QAAhPYAAIT3AACE+QAAhQIAAIUNAACFHAAAhScAAIU1AACFSgAAhV4AAIV1AACFhwAAhcYAAIXIAACFygAAhcwAAIXOAACFzwAAhdAAAIXRAACF0gAAhdQAAIXWAACF1wAAhdgAAIXaAACF2wAAhhoAAIYcAACGHgAAhiAAAIYiAACGIwAAhiQAAIYlAACGJgAAhigAAIYqAACGKwAAhiwAAIYuAACGLwAAhm4AAIZwAACGcwAAhnUAAIZ3AACGeAAAhnkAAIZ6AACGewAAhn0AAIZ/AACGgAAAhoEAAIaDAACGhAAAhs8AAIbyAACHEgAAhzIAAIc0AACHNgAAhzgAAIc6AACHPAAAhz0AAIc+AACHQQAAh0IAAIdEAACHRQAAh0cAAIdJAACHSgAAh0sAAIdOAACHTwAAh1QAAIdhAACHZgAAh2gAAIdqAACHbwAAh3IAAId1AACHdwAAh5wAAIfAAACH5wAAiAsAAIgOAACIEAAAiBIAAIgUAACIFgAAiBgAAIgZAACIHAAAiCkAAIg6AACIPAAAiD4AAIhAAACIQgAAiEQAAIhGAACISAAAiEoAAIhbAACIXgAAiGEAAIhkAACIZwAAiGoAAIhtAACIcAAAiHMAAIh1AACItAAAiLYAAIi4AACIugAAiL0AAIi+AACIvwAAiMAAAIjBAACIwwAAiMUAAIjGAACIxwAAiMkAAIjKAACJCQAAiQsAAIkNAACJDwAAiRIAAIkTAACJFAAAiRUAAIkWAACJGAAAiRoAAIkbAACJHAAAiR4AAIkfAACJXgAAiWAAAIljAACJZQAAiWgAAIlpAACJagAAiWsAAIlsAACJbgAAiXAAAIlxAACJcgAAiXQAAIl1AACJggAAiYMAAImEAACJhgAAicUAAInHAACJyQAAicsAAInOAACJzwAAidAAAInRAACJ0gAAidQAAInWAACJ1wAAidgAAInaAACJ2wAAihoAAIocAACKHgAAiiAAAIojAACKJAAAiiUAAIomAACKJwAAiikAAIorAACKLAAAii0AAIovAACKMAAAim8AAIpxAACKcwAAinUAAIp4AACKeQAAinoAAIp7AACKfAAAin4AAIqAAACKgQAAioIAAIqEAACKhQAAisQAAIrGAACKyAAAisoAAIrNAACKzgAAis8AAIrQAACK0QAAitMAAIrVAACK1gAAitcAAIrZAACK2gAAixkAAIsbAACLHQAAix8AAIsiAACLIwAAiyQAAIslAACLJgAAiygAAIsqAACLKwAAiywAAIsuAACLLwAAi1QAAIt4AACLnwAAi8MAAIvGAACLyAAAi8oAAIvMAACLzgAAi9AAAIvRAACL1AAAi+EAAIvwAACL8gAAi/QAAIv2AACL+AAAi/oAAIv8AACL/gAAjA0AAIwQAACMEwAAjBYAAIwZAACMHAAAjB8AAIwiAACMJAAAjGMAAIxlAACMaAAAjGoAAIxtAACMbgAAjG8AAIxwAACMcQAAjHMAAIx1AACMdgAAjHcAAIx5AACMegAAjH4AAIy9AACMvwAAjMEAAIzDAACMxgAAjMcAAIzIAACMyQAAjMoAAIzMAACMzgAAjM8AAIzQAACM0gAAjNMAAI0SAACNFAAAjRYAAI0YAACNGwAAjRwAAI0dAACNHgAAjR8AAI0hAACNIwAAjSQAAI0lAACNJwAAjSgAAI1nAACNaQAAjWwAAI1uAACNcQAAjXIAAI1zAACNdAAAjXUAAI13AACNeQAAjXoAAI17AACNfQAAjX4AAI2BAACNwAAAjcIAAI3EAACNxgAAjckAAI3KAACNywAAjcwAAI3NAACNzwAAjdEAAI3SAACN0wAAjdUAAI3WAACOFQAAjhcAAI4ZAACOGwAAjh4AAI4fAACOIAAAjiEAAI4iAACOJAAAjiYAAI4nAACOKAAAjioAAI4rAACOagAAjmwAAI5uAACOcAAAjnMAAI50AACOdQAAjnYAAI53AACOeQAAjnsAAI58AACOfQAAjn8AAI6AAACOywAAju4AAI8OAACPLgAAjzAAAI8yAACPNAAAjzYAAI84AACPOQAAjzoAAI89AACPPgAAj0AAAI9BAACPQwAAj0UAAI9GAACPRwAAj0oAAI9LAACPUAAAj10AAI9iAACPZAAAj2YAAI9rAACPbgAAj3EAAI9zAACPmAAAj7wAAI/jAACQBwAAkAoAAJAMAACQDgAAkBAAAJASAACQFAAAkBUAAJAYAACQJQAAkDYAAJA4AACQOgAAkDwAAJA+AACQQAAAkEIAAJBEAACQRgAAkFcAAJBaAACQXQAAkGAAAJBjAACQZgAAkGkAAJBsAACQbwAAkHEAAJCwAACQsgAAkLQAAJC2AACQuQAAkLoAAJC7AACQvAAAkL0AAJC/AACQwQAAkMIAAJDDAACQxQAAkMYAAJEFAACRBwAAkQkAAJELAACRDgAAkQ8AAJEQAACREQAAkRIAAJEUAACRFgAAkRcAAJEYAACRGgAAkRsAAJFaAACRXAAAkV8AAJFhAACRZAAAkWUAAJFmAACRZwAAkWgAAJFqAACRbAAAkW0AAJFuAACRcAAAkXEAAJF+AACRfwAAkYAAAJGCAACRwQAAkcMAAJHFAACRxwAAkcoAAJHLAACRzAAAkc0AAJHOAACR0AAAkdIAAJHTAACR1AAAkdYAAJHXAACSFgAAkhgAAJIaAACSHAAAkh8AAJIgAACSIQAAkiIAAJIjAACSJQAAkicAAJIoAACSKQAAkisAAJIsAACSawAAkm0AAJJvAACScQAAknQAAJJ1AACSdgAAkncAAJJ4AACSegAAknwAAJJ9AACSfgAAkoAAAJKBAACSwAAAksIAAJLEAACSxgAAkskAAJLKAACSywAAkswAAJLNAACSzwAAktEAAJLSAACS0wAAktUAAJLWAACTFQAAkxcAAJMZAACTGwAAkx4AAJMfAACTIAAAkyEAAJMiAACTJAAAkyYAAJMnAACTKAAAkyoAAJMrAACTUAAAk3QAAJObAACTvwAAk8IAAJPEAACTxgAAk8gAAJPKAACTzAAAk80AAJPQAACT3QAAk+wAAJPuAACT8AAAk/IAAJP0AACT9gAAk/gAAJP6AACUCQAAlAwAAJQPAACUEgAAlBUAAJQYAACUGwAAlB4AAJQgAACUXwAAlGEAAJRkAACUZgAAlGkAAJRqAACUawAAlGwAAJRtAACUbwAAlHEAAJRyAACUcwAAlHUAAJR2AACUtQAAlLcAAJS5AACUuwAAlL4AAJS/AACUwAAAlMEAAJTCAACUxAAAlMYAAJTHAACUyAAAlMoAAJTLAACVCgAAlQwAAJUOAACVEAAAlRMAAJUUAACVFQAAlRYAAJUXAACVGQAAlRsAAJUcAACVHQAAlR8AAJUgAACVXwAAlWEAAJVkAACVZgAAlWkAAJVqAACVawAAlWwAAJVtAACVbwAAlXEAAJVyAACVcwAAlXUAAJV2AACVtQAAlbcAAJW5AACVuwAAlb4AAJW/AACVwAAAlcEAAJXCAACVxAAAlcYAAJXHAACVyAAAlcoAAJXLAACWCgAAlgwAAJYOAACWEAAAlhMAAJYUAACWFQAAlhYAAJYXAACWGQAAlhsAAJYcAACWHQAAlh8AAJYgAACWXwAAlmEAAJZjAACWZQAAlmgAAJZpAACWagAAlmsAAJZsAACWbgAAlnAAAJZxAACWcgAAlnQAAJZ1AACWwAAAluMAAJcDAACXIwAAlyUAAJcnAACXKQAAlysAAJctAACXLgAAly8AAJcyAACXMwAAlzUAAJc2AACXOAAAlzoAAJc7AACXPAAAlz8AAJdAAACXRQAAl1IAAJdXAACXWQAAl1sAAJdgAACXYwAAl2YAAJdoAACXjQAAl7EAAJfYAACX/AAAl/8AAJgBAACYAwAAmAUAAJgHAACYCQAAmAoAAJgNAACYGgAAmCsAAJgtAACYLwAAmDEAAJgzAACYNQAAmDcAAJg5AACYOwAAmEwAAJhPAACYUgAAmFUAAJhYAACYWwAAmF4AAJhhAACYZAAAmGYAAJilAACYpwAAmKkAAJirAACYrgAAmK8AAJiwAACYsQAAmLIAAJi0AACYtgAAmLcAAJi4AACYugAAmLsAAJj6AACY/AAAmP4AAJkAAACZAwAAmQQAAJkFAACZBgAAmQcAAJkJAACZCwAAmQwAAJkNAACZDwAAmRAAAJlPAACZUQAAmVQAAJlWAACZWQAAmVoAAJlbAACZXAAAmV0AAJlfAACZYQAAmWIAAJljAACZZQAAmWYAAJlzAACZdAAAmXUAAJl3AACZtgAAmbgAAJm6AACZvAAAmb8AAJnAAACZwQAAmcIAAJnDAACZxQAAmccAAJnIAACZyQAAmcsAAJnMAACaCwAAmg0AAJoPAACaEQAAmhQAAJoVAACaFgAAmhcAAJoYAACaGgAAmhwAAJodAACaHgAAmiAAAJohAACaYAAAmmIAAJpkAACaZgAAmmkAAJpqAACaawAAmmwAAJptAACabwAAmnEAAJpyAACacwAAmnUAAJp2AACatQAAmrcAAJq5AACauwAAmr4AAJq/AACawAAAmsEAAJrCAACaxAAAmsYAAJrHAACayAAAmsoAAJrLAACbCgAAmwwAAJsOAACbEAAAmxMAAJsUAACbFQAAmxYAAJsXAACbGQAAmxsAAJscAACbHQAAmx8AAJsgAACbRQAAm2kAAJuQAACbtAAAm7cAAJu5AACbuwAAm70AAJu/AACbwQAAm8IAAJvFAACb0gAAm+EAAJvjAACb5QAAm+cAAJvpAACb6wAAm+0AAJvvAACb/gAAnAEAAJwEAACcBwAAnAoAAJwNAACcEAAAnBMAAJwVAACcVAAAnFYAAJxYAACcWgAAnF0AAJxeAACcXwAAnGAAAJxhAACcYwAAnGUAAJxmAACcZwAAnGkAAJxqAACcqQAAnKsAAJytAACcrwAAnLIAAJyzAACctAAAnLUAAJy2AACcuAAAnLoAAJy7AACcvAAAnL4AAJy/AACc/gAAnQAAAJ0CAACdBAAAnQcAAJ0IAACdCQAAnQoAAJ0LAACdDQAAnQ8AAJ0QAACdEQAAnRMAAJ0UAACdUwAAnVUAAJ1XAACdWQAAnVwAAJ1dAACdXgAAnV8AAJ1gAACdYgAAnWQAAJ1lAACdZgAAnWgAAJ1pAACdqAAAnaoAAJ2sAACdrgAAnbEAAJ2yAACdswAAnbQAAJ21AACdtwAAnbkAAJ26AACduwAAnb0AAJ2+AACd/QAAnf8AAJ4BAACeAwAAngYAAJ4HAACeCAAAngkAAJ4KAACeDAAAng4AAJ4PAACeEAAAnhIAAJ4TAACeUgAAnlQAAJ5WAACeWAAAnlsAAJ5cAACeXQAAnl4AAJ5fAACeYQAAnmMAAJ5kAACeZQAAnmcAAJ5oAACeswAAntYAAJ72AACfFgAAnxgAAJ8aAACfHAAAnx4AAJ8gAACfIQAAnyIAAJ8lAACfJgAAnygAAJ8pAACfKwAAny0AAJ8uAACfLwAAnzIAAJ8zAACfOAAAn0UAAJ9KAACfTAAAn04AAJ9TAACfVgAAn1kAAJ9bAACfgAAAn6QAAJ/LAACf7wAAn/IAAJ/0AACf9gAAn/gAAJ/6AACf/AAAn/0AAKAAAACgDQAAoB4AAKAgAACgIgAAoCQAAKAmAACgKAAAoCoAAKAsAACgLgAAoD8AAKBCAACgRQAAoEgAAKBLAACgTgAAoFEAAKBUAACgVwAAoFkAAKCYAACgmgAAoJwAAKCeAACgoQAAoKIAAKCjAACgpAAAoKUAAKCnAACgqQAAoKoAAKCrAACgrQAAoK4AAKDtAACg7wAAoPEAAKDzAACg9gAAoPcAAKD4AACg+QAAoPoAAKD8AACg/gAAoP8AAKEAAAChAgAAoQMAAKFCAAChRAAAoUcAAKFJAAChTAAAoU0AAKFOAAChTwAAoVAAAKFSAAChVAAAoVUAAKFWAAChWAAAoVkAAKFmAAChZwAAoWgAAKFqAAChqQAAoasAAKGtAAChrwAAobIAAKGzAAChtAAAobUAAKG2AAChuAAAoboAAKG7AAChvAAAob4AAKG/AACh/gAAogAAAKICAACiBAAAogcAAKIIAACiCQAAogoAAKILAACiDQAAog8AAKIQAACiEQAAohMAAKIUAACiUwAAolUAAKJXAACiWQAAolwAAKJdAACiXgAAol8AAKJgAACiYgAAomQAAKJlAACiZgAAomgAAKJpAACiqAAAoqoAAKKsAACirgAAorEAAKKyAACiswAAorQAAKK1AACitwAAorkAAKK6AACiuwAAor0AAKK+AACi/QAAov8AAKMBAACjAwAAowYAAKMHAACjCAAAowkAAKMKAACjDAAAow4AAKMPAACjEAAAoxIAAKMTAACjOAAAo1wAAKODAACjpwAAo6oAAKOsAACjrgAAo7AAAKOyAACjtAAAo7UAAKO4AACjxQAAo9QAAKPWAACj2AAAo9oAAKPcAACj3gAAo+AAAKPiAACj8QAAo/QAAKP3AACj+gAAo/0AAKQAAACkAwAApAYAAKQIAACkRwAApEkAAKRMAACkTgAApFEAAKRSAACkUwAApFQAAKRVAACkVwAApFkAAKRaAACkWwAApF0AAKReAACkYAAApJ8AAKShAACkowAApKUAAKSoAACkqQAApKoAAKSrAACkrAAApK4AAKSwAACksQAApLIAAKS0AACktQAApPQAAKT2AACk+AAApPoAAKT9AACk/gAApP8AAKUAAAClAQAApQMAAKUFAAClBgAApQcAAKUJAAClCgAApUkAAKVLAAClTgAApVAAAKVTAAClVAAApVUAAKVWAAClVwAApVkAAKVbAAClXAAApV0AAKVfAAClYAAApWMAAKWiAAClpAAApaYAAKWoAAClqwAApawAAKWtAAClrgAApa8AAKWxAAClswAApbQAAKW1AACltwAApbgAAKX3AACl+QAApfsAAKX9AACmAAAApgEAAKYCAACmAwAApgQAAKYGAACmCAAApgkAAKYKAACmDAAApg0AAKZMAACmTgAAplAAAKZSAACmVQAAplYAAKZXAACmWAAAplkAAKZbAACmXQAApl4AAKZfAACmYQAApmIAAKatAACm0AAApvAAAKcQAACnEgAApxQAAKcWAACnGAAApxoAAKcbAACnHAAApx8AAKcgAACnIgAApyMAAKclAACnJwAApygAAKcpAACnLAAApy0AAKc2AACnQwAAp0gAAKdKAACnTAAAp1EAAKdUAACnVwAAp1kAAKd+AACnogAAp8kAAKftAACn8AAAp/IAAKf0AACn9gAAp/gAAKf6AACn+wAAp/4AAKgLAACoHAAAqB4AAKggAACoIgAAqCQAAKgmAACoKAAAqCoAAKgsAACoPQAAqEAAAKhDAACoRgAAqEkAAKhMAACoTwAAqFIAAKhVAACoVwAAqJYAAKiYAAComgAAqJwAAKifAACooAAAqKEAAKiiAACoowAAqKUAAKinAACoqAAAqKkAAKirAACorAAAqOsAAKjtAACo7wAAqPEAAKj0AACo9QAAqPYAAKj3AACo+AAAqPoAAKj8AACo/QAAqP4AAKkAAACpAQAAqUAAAKlCAACpRQAAqUcAAKlKAACpSwAAqUwAAKlNAACpTgAAqVAAAKlSAACpUwAAqVQAAKlWAACpVwAAqWQAAKllAACpZgAAqWgAAKmnAACpqQAAqasAAKmtAACpsAAAqbEAAKmyAACpswAAqbQAAKm2AACpuAAAqbkAAKm6AACpvAAAqb0AAKn8AACp/gAAqgAAAKoCAACqBQAAqgYAAKoHAACqCAAAqgkAAKoLAACqDQAAqg4AAKoPAACqEQAAqhIAAKpRAACqUwAAqlUAAKpXAACqWgAAqlsAAKpcAACqXQAAql4AAKpgAACqYgAAqmMAAKpkAACqZgAAqmcAAKqmAACqqAAAqqoAAKqsAACqrwAAqrAAAKqxAACqsgAAqrMAAKq1AACqtwAAqrgAAKq5AACquwAAqrwAAKr7AACq/QAAqv8AAKsBAACrBAAAqwUAAKsGAACrBwAAqwgAAKsKAACrDAAAqw0AAKsOAACrEAAAqxEAAKs2AACrWgAAq4EAAKulAACrqAAAq6oAAKusAACrrgAAq7AAAKuyAACrswAAq7YAAKvDAACr0gAAq9QAAKvWAACr2AAAq9oAAKvcAACr3gAAq+AAAKvvAACr8gAAq/UAAKv4AACr+wAAq/4AAKwBAACsBAAArAYAAKxFAACsRwAArEoAAKxMAACsTwAArFAAAKxRAACsUgAArFMAAKxVAACsVwAArFgAAKxZAACsWwAArFwAAKybAACsnQAArJ8AAKyhAACspAAArKUAAKymAACspwAArKgAAKyqAACsrAAArK0AAKyuAACssAAArLEAAKzwAACs8gAArPQAAKz2AACs+QAArPoAAKz7AACs/AAArP0AAKz/AACtAQAArQIAAK0DAACtBQAArQYAAK1FAACtRwAArUoAAK1MAACtTwAArVAAAK1RAACtUgAArVMAAK1VAACtVwAArVgAAK1ZAACtWwAArVwAAK2bAACtnQAArZ8AAK2hAACtpAAAraUAAK2mAACtpwAAragAAK2qAACtrAAAra0AAK2uAACtsAAArbEAAK3wAACt8gAArfQAAK32AACt+QAArfoAAK37AACt/AAArf0AAK3/AACuAQAArgIAAK4DAACuBQAArgYAAK5FAACuRwAArkkAAK5LAACuTgAArk8AAK5QAACuUQAArlIAAK5UAACuVgAArlcAAK5YAACuWgAArlsAAK6mAACuyQAArukAAK8JAACvCwAArw0AAK8PAACvEQAArxMAAK8UAACvFQAArxgAAK8ZAACvGwAArxwAAK8eAACvIAAAryEAAK8iAACvJQAAryYAAK8rAACvOAAArz0AAK8/AACvQQAAr0YAAK9JAACvTAAAr04AAK9zAACvlwAAr74AAK/iAACv5QAAr+cAAK/pAACv6wAAr+0AAK/vAACv8AAAr/MAALAAAACwEQAAsBMAALAVAACwFwAAsBkAALAbAACwHQAAsB8AALAhAACwMgAAsDUAALA4AACwOwAAsD4AALBBAACwRAAAsEcAALBKAACwTAAAsIsAALCNAACwjwAAsJEAALCUAACwlQAAsJYAALCXAACwmAAAsJoAALCcAACwnQAAsJ4AALCgAACwoQAAsOAAALDiAACw5AAAsOYAALDpAACw6gAAsOsAALDsAACw7QAAsO8AALDxAACw8gAAsPMAALD1AACw9gAAsTUAALE3AACxOgAAsTwAALE/AACxQAAAsUEAALFCAACxQwAAsUUAALFHAACxSAAAsUkAALFLAACxTAAAsVkAALFaAACxWwAAsV0AALGcAACxngAAsaAAALGiAACxpQAAsaYAALGnAACxqAAAsakAALGrAACxrQAAsa4AALGvAACxsQAAsbIAALHxAACx8wAAsfUAALH3AACx+gAAsfsAALH8AACx/QAAsf4AALIAAACyAgAAsgMAALIEAACyBgAAsgcAALJGAACySAAAskoAALJMAACyTwAAslAAALJRAACyUgAAslMAALJVAACyVwAAslgAALJZAACyWwAAslwAALKbAACynQAAsp8AALKhAACypAAAsqUAALKmAACypwAAsqgAALKqAACyrAAAsq0AALKuAACysAAAsrEAALLwAACy8gAAsvQAALL2AACy+QAAsvoAALL7AACy/AAAsv0AALL/AACzAQAAswIAALMDAACzBQAAswYAALMrAACzTwAAs3YAALOaAACznQAAs58AALOhAACzowAAs6UAALOnAACzqAAAs6sAALO4AACzxwAAs8kAALPLAACzzQAAs88AALPRAACz0wAAs9UAALPkAACz5wAAs+oAALPtAACz8AAAs/MAALP2AACz+QAAs/sAALQ6AAC0PAAAtD4AALRAAAC0QwAAtEQAALRFAAC0RgAAtEcAALRJAAC0SwAAtEwAALRNAAC0TwAAtFAAALSPAAC0kQAAtJMAALSVAAC0mAAAtJkAALSaAAC0mwAAtJwAALSeAAC0oAAAtKEAALSiAAC0pAAAtKUAALTkAAC05gAAtOgAALTqAAC07QAAtO4AALTvAAC08AAAtPEAALTzAAC09QAAtPYAALT3AAC0+QAAtPoAALU5AAC1OwAAtT0AALU/AAC1QgAAtUMAALVEAAC1RQAAtUYAALVIAAC1SgAAtUsAALVMAAC1TgAAtU8AALWOAAC1kAAAtZIAALWUAAC1lwAAtZgAALWZAAC1mgAAtZsAALWdAAC1nwAAtaAAALWhAAC1owAAtaQAALXjAAC15QAAtecAALXpAAC17AAAte0AALXuAAC17wAAtfAAALXyAAC19AAAtfUAALX2AAC1+AAAtfkAALY4AAC2OgAAtjwAALY+AAC2QQAAtkIAALZDAAC2RAAAtkUAALZHAAC2SQAAtkoAALZLAAC2TQAAtk4AALaZAAC2vAAAttwAALb8AAC2/gAAtwAAALcCAAC3BAAAtwYAALcHAAC3CAAAtwsAALcMAAC3DgAAtw8AALcRAAC3EwAAtxQAALcVAAC3GAAAtxkAALceAAC3KwAAtzAAALcyAAC3NAAAtzkAALc8AAC3PwAAt0EAALdmAAC3igAAt7EAALfVAAC32AAAt9oAALfcAAC33gAAt+AAALfiAAC34wAAt+YAALfzAAC4BAAAuAYAALgIAAC4CgAAuAwAALgOAAC4EAAAuBIAALgUAAC4JQAAuCgAALgrAAC4LgAAuDEAALg0AAC4NwAAuDoAALg9AAC4PwAAuH4AALiAAAC4ggAAuIQAALiHAAC4iAAAuIkAALiKAAC4iwAAuI0AALiPAAC4kAAAuJEAALiTAAC4lAAAuNMAALjVAAC41wAAuNkAALjcAAC43QAAuN4AALjfAAC44AAAuOIAALjkAAC45QAAuOYAALjoAAC46QAAuSgAALkqAAC5LQAAuS8AALkyAAC5MwAAuTQAALk1AAC5NgAAuTgAALk6AAC5OwAAuTwAALk+AAC5PwAAuUwAALlNAAC5TgAAuVAAALmPAAC5kQAAuZMAALmVAAC5mAAAuZkAALmaAAC5mwAAuZwAALmeAAC5oAAAuaEAALmiAAC5pAAAuaUAALnkAAC55gAAuegAALnqAAC57QAAue4AALnvAAC58AAAufEAALnzAAC59QAAufYAALn3AAC5+QAAufoAALo5AAC6OwAAuj0AALo/AAC6QgAAukMAALpEAAC6RQAAukYAALpIAAC6SgAAuksAALpMAAC6TgAAuk8AALqOAAC6kAAAupIAALqUAAC6lwAAupgAALqZAAC6mgAAupsAALqdAAC6nwAAuqAAALqhAAC6owAAuqQAALrjAAC65QAAuucAALrpAAC67AAAuu0AALruAAC67wAAuvAAALryAAC69AAAuvUAALr2AAC6+AAAuvkAALseAAC7QgAAu2kAALuNAAC7kAAAu5IAALuUAAC7lgAAu5gAALuaAAC7mwAAu54AALurAAC7ugAAu7wAALu+AAC7wAAAu8IAALvEAAC7xgAAu8gAALvXAAC72gAAu90AALvgAAC74wAAu+YAALvpAAC77AAAu+4AALwtAAC8LwAAvDEAALwzAAC8NgAAvDcAALw4AAC8OQAAvDoAALw8AAC8PgAAvD8AALxAAAC8QgAAvEMAALyCAAC8hAAAvIYAALyIAAC8iwAAvIwAALyNAAC8jgAAvI8AALyRAAC8kwAAvJQAALyVAAC8lwAAvJgAALzXAAC82QAAvNsAALzdAAC84AAAvOEAALziAAC84wAAvOQAALzmAAC86AAAvOkAALzqAAC87AAAvO0AAL0sAAC9LgAAvTEAAL0zAAC9NgAAvTcAAL04AAC9OQAAvToAAL08AAC9PgAAvT8AAL1AAAC9QgAAvUMAAL1GAAC9hQAAvYcAAL2JAAC9iwAAvY4AAL2PAAC9kAAAvZEAAL2SAAC9lAAAvZYAAL2XAAC9mAAAvZoAAL2bAAC92gAAvdwAAL3eAAC94AAAveMAAL3kAAC95QAAveYAAL3nAAC96QAAvesAAL3sAAC97QAAve8AAL3wAAC+LwAAvjEAAL4zAAC+NQAAvjgAAL45AAC+OgAAvjsAAL48AAC+PgAAvkAAAL5BAAC+QgAAvkQAAL5FAAC+kAAAvrMAAL7TAAC+8wAAvvUAAL73AAC++QAAvvsAAL79AAC+/gAAvv8AAL8CAAC/AwAAvwUAAL8GAAC/CAAAvwoAAL8LAAC/DAAAvw8AAL8QAAC/FQAAvyIAAL8nAAC/KQAAvysAAL8wAAC/MwAAvzYAAL84AAC/XQAAv4EAAL+oAAC/zAAAv88AAL/RAAC/0wAAv9UAAL/XAAC/2QAAv9oAAL/dAAC/6gAAv/sAAL/9AAC//wAAwAEAAMADAADABQAAwAcAAMAJAADACwAAwBwAAMAfAADAIgAAwCUAAMAoAADAKwAAwC4AAMAxAADANAAAwDYAAMB1AADAdwAAwHkAAMB7AADAfgAAwH8AAMCAAADAgQAAwIIAAMCEAADAhgAAwIcAAMCIAADAigAAwIsAAMDKAADAzAAAwM4AAMDQAADA0wAAwNQAAMDVAADA1gAAwNcAAMDZAADA2wAAwNwAAMDdAADA3wAAwOAAAMEfAADBIQAAwSQAAMEmAADBKQAAwSoAAMErAADBLAAAwS0AAMEvAADBMQAAwTIAAMEzAADBNQAAwTYAAMFDAADBRAAAwUUAAMFHAADBhgAAwYgAAMGKAADBjAAAwY8AAMGQAADBkQAAwZIAAMGTAADBlQAAwZcAAMGYAADBmQAAwZsAAMGcAADB2wAAwd0AAMHfAADB4QAAweQAAMHlAADB5gAAwecAAMHoAADB6gAAwewAAMHtAADB7gAAwfAAAMHxAADCMAAAwjIAAMI0AADCNgAAwjkAAMI6AADCOwAAwjwAAMI9AADCPwAAwkEAAMJCAADCQwAAwkUAAMJGAADChQAAwocAAMKJAADCiwAAwo4AAMKPAADCkAAAwpEAAMKSAADClAAAwpYAAMKXAADCmAAAwpoAAMKbAADC2gAAwtwAAMLeAADC4AAAwuMAAMLkAADC5QAAwuYAAMLnAADC6QAAwusAAMLsAADC7QAAwu8AAMLwAADDFQAAwzkAAMNgAADDhAAAw4cAAMOJAADDiwAAw40AAMOPAADDkQAAw5IAAMOVAADDogAAw7EAAMOzAADDtQAAw7cAAMO5AADDuwAAw70AAMO/AADDzgAAw9EAAMPUAADD1wAAw9oAAMPdAADD4AAAw+MAAMPlAADEJAAAxCYAAMQoAADEKgAAxC0AAMQuAADELwAAxDAAAMQxAADEMwAAxDUAAMQ2AADENwAAxDkAAMQ6AADEeQAAxHsAAMR9AADEfwAAxIIAAMSDAADEhAAAxIUAAMSGAADEiAAAxIoAAMSLAADEjAAAxI4AAMSPAADEzgAAxNAAAMTSAADE1AAAxNcAAMTYAADE2QAAxNoAAMTbAADE3QAAxN8AAMTgAADE4QAAxOMAAMTkAADFIwAAxSUAAMUoAADFKgAAxS0AAMUuAADFLwAAxTAAAMUxAADFMwAAxTUAAMU2AADFNwAAxTkAAMU6AADFfQAAxaEAAMXFAADF6AAAxg8AAMYvAADGVgAAxn0AAMadAADGwQAAxuUAAMbnAADG6gAAxuwAAMbuAADG8AAAxvMAAMb2AADG+AAAxvoAAMb9AADG/wAAxwEAAMcEAADHBwAAxwgAAMcNAADHGgAAxx0AAMcfAADHIgAAxyUAAMcnAADHTAAAx3AAAMeXAADHuwAAx74AAMfAAADHwgAAx8QAAMfGAADHyAAAx8kAAMfMAADH2QAAx+wAAMfuAADH8AAAx/IAAMf0AADH9gAAx/gAAMf6AADH/AAAx/4AAMgRAADIFAAAyBcAAMgaAADIHQAAyCAAAMgjAADIJgAAyCkAAMgsAADILgAAyG0AAMhvAADIcgAAyHQAAMh3AADIeAAAyHkAAMh6AADIewAAyH0AAMh/AADIgAAAyIEAAMiDAADIhAAAyI0AAMiOAADIkAAAyM8AAMjRAADI0wAAyNUAAMjYAADI2QAAyNoAAMjbAADI3AAAyN4AAMjgAADI4QAAyOIAAMjkAADI5QAAySQAAMkmAADJKQAAySsAAMkuAADJLwAAyTAAAMkxAADJMgAAyTQAAMk2AADJNwAAyTgAAMk6AADJOwAAyUQAAMlFAADJRwAAyYYAAMmIAADJigAAyYwAAMmPAADJkAAAyZEAAMmSAADJkwAAyZUAAMmXAADJmAAAyZkAAMmbAADJnAAAydsAAMndAADJ4AAAyeIAAMnlAADJ5gAAyecAAMnoAADJ6QAAyesAAMntAADJ7gAAye8AAMnxAADJ8gAAyfsAAMn8AADJ/gAAyj0AAMo/AADKQQAAykMAAMpGAADKRwAAykgAAMpJAADKSgAAykwAAMpOAADKTwAAylAAAMpSAADKUwAAypIAAMqUAADKlwAAypkAAMqcAADKnQAAyp4AAMqfAADKoAAAyqIAAMqkAADKpQAAyqYAAMqoAADKqQAAyrYAAMq3AADKuAAAyroAAMr5AADK+wAAyv0AAMr/AADLAgAAywMAAMsEAADLBQAAywYAAMsIAADLCgAAywsAAMsMAADLDgAAyw8AAMtOAADLUAAAy1IAAMtUAADLVwAAy1gAAMtZAADLWgAAy1sAAMtdAADLXwAAy2AAAMthAADLYwAAy2QAAMtxAADLegAAy30AAMt/AADLggAAy4UAAMuOAADLkQAAy5QAAMuXAADLmgAAy5wAAMurAADLvQAAy8oAAMwVAADMOAAAzFgAAMx4AADMegAAzHwAAMx+AADMgAAAzIMAAMyEAADMhQAAzIgAAMyJAADMiwAAzIwAAMyOAADMkQAAzJIAAMyTAADMlgAAzJcAAMycAADMqQAAzK4AAMywAADMsgAAzLcAAMy6AADMvQAAzL8AAMzkAADNCAAAzS8AAM1TAADNVgAAzVgAAM1aAADNXAAAzV4AAM1gAADNYQAAzWQAAM1xAADNggAAzYQAAM2GAADNiAAAzYoAAM2MAADNjgAAzZAAAM2SAADNowAAzaYAAM2pAADNrAAAza8AAM2yAADNtQAAzbgAAM27AADNvQAAzfwAAM3+AADOAAAAzgIAAM4FAADOBgAAzgcAAM4IAADOCQAAzgsAAM4NAADODgAAzg8AAM4RAADOEgAAzlEAAM5TAADOVQAAzlcAAM5aAADOWwAAzlwAAM5dAADOXgAAzmAAAM5iAADOYwAAzmQAAM5mAADOZwAAzqYAAM6oAADOqwAAzq0AAM6wAADOsQAAzrIAAM6zAADOtAAAzrYAAM64AADOuQAAzroAAM68AADOvQAAzsoAAM7LAADOzAAAzs4AAM8NAADPDwAAzxEAAM8TAADPFgAAzxcAAM8YAADPGQAAzxoAAM8cAADPHgAAzx8AAM8gAADPIgAAzyMAAM9iAADPZAAAz2YAAM9oAADPawAAz2wAAM9tAADPbgAAz28AAM9xAADPcwAAz3QAAM91AADPdwAAz3gAAM+3AADPuQAAz7sAAM+9AADPwAAAz8EAAM/CAADPwwAAz8QAAM/GAADPyAAAz8kAAM/KAADPzAAAz80AANAMAADQDgAA0BAAANASAADQFQAA0BYAANAXAADQGAAA0BkAANAbAADQHQAA0B4AANAfAADQIQAA0CIAANBhAADQYwAA0GUAANBnAADQagAA0GsAANBsAADQbQAA0G4AANBwAADQcgAA0HMAANB0AADQdgAA0HcAANCcAADQwAAA0OcAANELAADRDgAA0RAAANESAADRFAAA0RYAANEYAADRGQAA0RwAANEpAADROAAA0ToAANE8AADRPgAA0UAAANFCAADRRAAA0UYAANFVAADRWAAA0VsAANFeAADRYQAA0WQAANFnAADRagAA0WwAANGrAADRrQAA0a8AANGxAADRtAAA0bUAANG2AADRtwAA0bgAANG6AADRvAAA0b0AANG+AADRwAAA0cEAANIAAADSAgAA0gQAANIGAADSCQAA0goAANILAADSDAAA0g0AANIPAADSEQAA0hIAANITAADSFQAA0hYAANJVAADSVwAA0lkAANJbAADSXgAA0l8AANJgAADSYQAA0mIAANJkAADSZgAA0mcAANJoAADSagAA0msAANKqAADSrAAA0q4AANKwAADSswAA0rQAANK1AADStgAA0rcAANK5AADSuwAA0rwAANK9AADSvwAA0sAAANL/AADTAQAA0wMAANMFAADTCAAA0wkAANMKAADTCwAA0wwAANMOAADTEAAA0xEAANMSAADTFAAA0xUAANNUAADTVgAA01gAANNaAADTXQAA014AANNfAADTYAAA02EAANNjAADTZQAA02YAANNnAADTaQAA02oAANOpAADTqwAA064AANOwAADTswAA07QAANO1AADTtgAA07cAANO5AADTuwAA07wAANO9AADTvwAA08AAANQLAADULgAA1E4AANRuAADUcAAA1HIAANR0AADUdgAA1HkAANR6AADUewAA1H4AANR/AADUgQAA1IIAANSEAADUhgAA1IcAANSIAADUiwAA1IwAANSRAADUngAA1KMAANSlAADUpwAA1KwAANSvAADUsgAA1LQAANTZAADU/QAA1SQAANVIAADVSwAA1U0AANVPAADVUQAA1VMAANVVAADVVgAA1VkAANVmAADVdwAA1XkAANV7AADVfQAA1X8AANWBAADVgwAA1YUAANWHAADVmAAA1ZsAANWeAADVoQAA1aQAANWnAADVqgAA1a0AANWwAADVsgAA1fEAANXzAADV9QAA1fcAANX6AADV+wAA1fwAANX9AADV/gAA1gAAANYCAADWAwAA1gQAANYGAADWBwAA1kYAANZIAADWSgAA1kwAANZPAADWUAAA1lEAANZSAADWUwAA1lUAANZXAADWWAAA1lkAANZbAADWXAAA1psAANadAADWoAAA1qIAANalAADWpgAA1qcAANaoAADWqQAA1qsAANatAADWrgAA1q8AANaxAADWsgAA1r8AANbAAADWwQAA1sMAANcCAADXBAAA1wYAANcIAADXCwAA1wwAANcNAADXDgAA1w8AANcRAADXEwAA1xQAANcVAADXFwAA1xgAANdXAADXWQAA11sAANddAADXYAAA12EAANdiAADXYwAA12QAANdmAADXaAAA12kAANdqAADXbAAA120AANesAADXrgAA17AAANeyAADXtQAA17YAANe3AADXuAAA17kAANe7AADXvQAA174AANe/AADXwQAA18IAANgBAADYAwAA2AUAANgHAADYCgAA2AsAANgMAADYDQAA2A4AANgQAADYEgAA2BMAANgUAADYFgAA2BcAANhWAADYWAAA2FoAANhcAADYXwAA2GAAANhhAADYYgAA2GMAANhlAADYZwAA2GgAANhpAADYawAA2GwAANiRAADYtQAA2NwAANkAAADZAwAA2QUAANkHAADZCQAA2QsAANkNAADZDgAA2REAANkeAADZLQAA2S8AANkxAADZMwAA2TUAANk3AADZOQAA2TsAANlKAADZTQAA2VAAANlTAADZVgAA2VkAANlcAADZXwAA2WEAANmgAADZogAA2aQAANmmAADZqQAA2aoAANmrAADZrAAA2a0AANmvAADZsQAA2bIAANmzAADZtQAA2bYAANn1AADZ9wAA2fkAANn7AADZ/gAA2f8AANoAAADaAQAA2gIAANoEAADaBgAA2gcAANoIAADaCgAA2gsAANpKAADaTAAA2k4AANpQAADaUwAA2lQAANpVAADaVgAA2lcAANpZAADaWwAA2lwAANpdAADaXwAA2mAAANqfAADaoQAA2qMAANqlAADaqAAA2qkAANqqAADaqwAA2qwAANquAADasAAA2rEAANqyAADatAAA2rUAANr0AADa9gAA2vgAANr6AADa/QAA2v4AANr/AADbAAAA2wEAANsDAADbBQAA2wYAANsHAADbCQAA2woAANtJAADbSwAA200AANtPAADbUgAA21MAANtUAADbVQAA21YAANtYAADbWgAA21sAANtcAADbXgAA218AANueAADboAAA26MAANulAADbqAAA26kAANuqAADbqwAA26wAANuuAADbsAAA27EAANuyAADbtAAA27UAANwAAADcIwAA3EMAANxjAADcZQAA3GcAANxpAADcawAA3G0AANxuAADcbwAA3HIAANxzAADcdQAA3HYAANx4AADcegAA3HsAANx8AADcfwAA3IAAANyFAADckgAA3JcAANyZAADcmwAA3KAAANyjAADcpgAA3KgAANzNAADc8QAA3RgAAN08AADdPwAA3UEAAN1DAADdRQAA3UcAAN1JAADdSgAA3U0AAN1aAADdawAA3W0AAN1vAADdcQAA3XMAAN11AADddwAA3XkAAN17AADdjAAA3Y8AAN2SAADdlQAA3ZgAAN2bAADdngAA3aEAAN2kAADdpgAA3eUAAN3nAADd6QAA3esAAN3uAADd7wAA3fAAAN3xAADd8gAA3fQAAN32AADd9wAA3fgAAN36AADd+wAA3joAAN48AADePgAA3kAAAN5DAADeRAAA3kUAAN5GAADeRwAA3kkAAN5LAADeTAAA3k0AAN5PAADeUAAA3o8AAN6RAADelAAA3pYAAN6ZAADemgAA3psAAN6cAADenQAA3p8AAN6hAADeogAA3qMAAN6lAADepgAA3rMAAN60AADetQAA3rcAAN72AADe+AAA3voAAN78AADe/wAA3wAAAN8BAADfAgAA3wMAAN8FAADfBwAA3wgAAN8JAADfCwAA3wwAAN9LAADfTQAA308AAN9RAADfVAAA31UAAN9WAADfVwAA31gAAN9aAADfXAAA310AAN9eAADfYAAA32EAAN+gAADfogAA36QAAN+mAADfqQAA36oAAN+rAADfrAAA360AAN+vAADfsQAA37IAAN+zAADftQAA37YAAN/1AADf9wAA3/kAAN/7AADf/gAA3/8AAOAAAADgAQAA4AIAAOAEAADgBgAA4AcAAOAIAADgCgAA4AsAAOBKAADgTAAA4E4AAOBQAADgUwAA4FQAAOBVAADgVgAA4FcAAOBZAADgWwAA4FwAAOBdAADgXwAA4GAAAOCFAADgqQAA4NAAAOD0AADg9wAA4PkAAOD7AADg/QAA4P8AAOEBAADhAgAA4QUAAOESAADhIQAA4SMAAOElAADhJwAA4SkAAOErAADhLQAA4S8AAOE+AADhQQAA4UQAAOFHAADhSgAA4U0AAOFQAADhUwAA4VUAAOGUAADhlgAA4ZgAAOGaAADhnQAA4Z4AAOGfAADhoAAA4aEAAOGjAADhpQAA4aYAAOGnAADhqQAA4aoAAOHpAADh6wAA4e0AAOHvAADh8gAA4fMAAOH0AADh9QAA4fYAAOH4AADh+gAA4fsAAOH8AADh/gAA4f8AAOI+AADiQAAA4kIAAOJEAADiRwAA4kgAAOJJAADiSgAA4ksAAOJNAADiTwAA4lAAAOJRAADiUwAA4lQAAOKTAADilQAA4pgAAOKaAADinQAA4p4AAOKfAADioAAA4qEAAOKjAADipQAA4qYAAOKnAADiqQAA4qoAAOLpAADi6wAA4u0AAOLvAADi8gAA4vMAAOL0AADi9QAA4vYAAOL4AADi+gAA4vsAAOL8AADi/gAA4v8AAOM+AADjQAAA40IAAONEAADjRwAA40gAAONJAADjSgAA40sAAONNAADjTwAA41AAAONRAADjUwAA41QAAOOTAADjlQAA45gAAOOaAADjnQAA454AAOOfAADjoAAA46EAAOOjAADjpQAA46YAAOOnAADjqQAA46oAAOP1AADkGAAA5DgAAORYAADkWgAA5FwAAOReAADkYAAA5GMAAORkAADkZQAA5GgAAORpAADkawAA5GwAAORuAADkcQAA5HIAAORzAADkdgAA5HcAAOR8AADkiQAA5I4AAOSQAADkkgAA5JcAAOSaAADknQAA5J8AAOTEAADk6AAA5Q8AAOUzAADlNgAA5TgAAOU6AADlPAAA5T4AAOVAAADlQQAA5UQAAOVRAADlYgAA5WQAAOVmAADlaAAA5WoAAOVsAADlbgAA5XAAAOVyAADlgwAA5YYAAOWJAADljAAA5Y8AAOWSAADllQAA5ZgAAOWbAADlnQAA5dwAAOXeAADl4AAA5eIAAOXlAADl5gAA5ecAAOXoAADl6QAA5esAAOXtAADl7gAA5e8AAOXxAADl8gAA5jEAAOYzAADmNQAA5jcAAOY6AADmOwAA5jwAAOY9AADmPgAA5kAAAOZCAADmQwAA5kQAAOZGAADmRwAA5oYAAOaIAADmiwAA5o0AAOaQAADmkQAA5pIAAOaTAADmlAAA5pYAAOaYAADmmQAA5poAAOacAADmnQAA5qoAAOarAADmrAAA5q4AAObtAADm7wAA5vEAAObzAADm9gAA5vcAAOb4AADm+QAA5voAAOb8AADm/gAA5v8AAOcAAADnAgAA5wMAAOdCAADnRAAA50YAAOdIAADnSwAA50wAAOdNAADnTgAA508AAOdRAADnUwAA51QAAOdVAADnVwAA51gAAOeXAADnmQAA55sAAOedAADnoAAA56EAAOeiAADnowAA56QAAOemAADnqAAA56kAAOeqAADnrAAA560AAOfsAADn7gAA5/AAAOfyAADn9QAA5/YAAOf3AADn+AAA5/kAAOf7AADn/QAA5/4AAOf/AADoAQAA6AIAAOhBAADoQwAA6EUAAOhHAADoSgAA6EsAAOhMAADoTQAA6E4AAOhQAADoUgAA6FMAAOhUAADoVgAA6FcAAOh8AADooAAA6McAAOjrAADo7gAA6PAAAOjyAADo9AAA6PYAAOj4AADo+QAA6PwAAOkJAADpGAAA6RoAAOkcAADpHgAA6SAAAOkiAADpJAAA6SYAAOk1AADpOAAA6TsAAOk+AADpQQAA6UQAAOlHAADpSgAA6UwAAOmLAADpjQAA6Y8AAOmRAADplAAA6ZUAAOmWAADplwAA6ZgAAOmaAADpnAAA6Z0AAOmeAADpoAAA6aEAAOngAADp4gAA6eQAAOnmAADp6QAA6eoAAOnrAADp7AAA6e0AAOnvAADp8QAA6fIAAOnzAADp9QAA6fYAAOo1AADqNwAA6jkAAOo7AADqPgAA6j8AAOpAAADqQQAA6kIAAOpEAADqRgAA6kcAAOpIAADqSgAA6ksAAOqKAADqjAAA6o8AAOqRAADqlAAA6pUAAOqWAADqlwAA6pgAAOqaAADqnAAA6p0AAOqeAADqoAAA6qEAAOrkAADrCAAA6ywAAOtPAADrdgAA65YAAOu9AADr5AAA7AQAAOwoAADsTAAA7E4AAOxRAADsUwAA7FUAAOxXAADsWgAA7F0AAOxfAADsYQAA7GQAAOxmAADsaAAA7GsAAOxuAADsbwAA7HgAAOyFAADsiAAA7IoAAOyNAADskAAA7JIAAOy3AADs2wAA7QIAAO0mAADtKQAA7SsAAO0tAADtLwAA7TEAAO0zAADtNAAA7TcAAO1EAADtVwAA7VkAAO1bAADtXQAA7V8AAO1hAADtYwAA7WUAAO1nAADtaQAA7XwAAO1/AADtggAA7YUAAO2IAADtiwAA7Y4AAO2RAADtlAAA7ZcAAO2ZAADt2AAA7doAAO3dAADt3wAA7eIAAO3jAADt5AAA7eUAAO3mAADt6AAA7eoAAO3rAADt7AAA7e4AAO3vAADt+AAA7fkAAO37AADuOgAA7jwAAO4/AADuQQAA7kQAAO5FAADuRgAA7kcAAO5IAADuSgAA7kwAAO5NAADuTgAA7lAAAO5RAADuXwAA7p4AAO6gAADuowAA7qUAAO6oAADuqQAA7qoAAO6rAADurAAA7q4AAO6wAADusQAA7rIAAO60AADutQAA7r4AAO6/AADuwQAA7wAAAO8CAADvBAAA7wYAAO8JAADvCgAA7wsAAO8MAADvDQAA7w8AAO8RAADvEgAA7xMAAO8VAADvFgAA71UAAO9XAADvWgAA71wAAO9fAADvYAAA72EAAO9iAADvYwAA72UAAO9nAADvaAAA72kAAO9rAADvbAAA73UAAO92AADveAAA77cAAO+5AADvuwAA770AAO/AAADvwQAA78IAAO/DAADvxAAA78YAAO/IAADvyQAA78oAAO/MAADvzQAA8AwAAPAOAADwEQAA8BMAAPAWAADwFwAA8BgAAPAZAADwGgAA8BwAAPAeAADwHwAA8CAAAPAiAADwIwAA8DAAAPAxAADwMgAA8DQAAPBzAADwdQAA8HcAAPB5AADwfAAA8H0AAPB+AADwfwAA8IAAAPCCAADwhAAA8IUAAPCGAADwiAAA8IkAAPDIAADwygAA8MwAAPDOAADw0QAA8NIAAPDTAADw1AAA8NUAAPDXAADw2QAA8NoAAPDbAADw3QAA8N4AAPDrAADxJAAA8ScAAPEqAADxLQAA8TAAAPEzAADxNgAA8TkAAPE8AADxPwAA8UIAAPFFAADxSAAA8UsAAPFNAADxUAAA8VMAAPFVAADxWAAA8VsAAPFeAADxYQAA8WQAAPFnAADxagAA8W0AAPFwAADxcwAA8awAAPGvAADxsgAA8bUAAPG4AADxuwAA8b4AAPHBAADxxAAA8ccAAPHKAADxzQAA8dAAAPHTAADx1gAA8dkAAPHcAADx3wAA8eIAAPHlAADx6AAA8esAAPHuAADx8QAA8fQAAPH3AADx+gAA8f0AAPH/AADyEgAA8jQAAPJTAADyZwAA8oUAAPKiAADyxgAA8ucAAPMKAADzJQAA8zgAAPNMAADzaQAA83gAAPOMAADzoQAA87MAAPPCAADz3AAA8/gAAPQWAAD0HwAA9C0AAPRQAAD0cgAA9L0AAPTgAAD1AAAA9SAAAPUiAAD1JAAA9SYA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AQAiAAEAJAABACUAAQAmAAEAKAABACkAAQBoAAEAagABAGwAAQBuAAEAcQABAHIAAQBzAAEAdAABAHUAAQB3AAEAeQABAHoAAQB7AAEAfQABAH4AAQC9AAEAvwABAMEAAQDDAAEAxgABAMcAAQDIAAEAyQABAMoAAQDMAAEAzgABAM8AAQDQAAEA0gABANMAAQESAAEBFAABARYAAQEYAAEBGwABARwAAQEdAAEBHgABAR8AAQEhAAEBIwABASQAAQElAAEBJwABASgAAQFNAAEBcQABAZgAAQG8AAEBvwABAcEAAQHDAAEBxQABAccAAQHJAAEBygABAc0AAQHaAAEB6QABAesAAQHtAAEB7wABAfEAAQHzAAEB9QABAfcAAQIGAAECCQABAgwAAQIPAAECEgABAhUAAQIYAAECGwABAh0AAQJcAAECXgABAmAAAQJiAAECZQABAmYAAQJnAAECaAABAmkAAQJrAAECbQABAm4AAQJvAAECcQABAnIAAQKxAAECswABArUAAQK3AAECugABArsAAQK8AAECvQABAr4AAQLAAAECwgABAsMAAQLEAAECxgABAscAAQMGAAEDCAABAwoAAQMMAAEDDwABAxAAAQMRAAEDEgABAxMAAQMVAAEDFwABAxgAAQMZAAEDGwABAxwAAQNbAAEDXQABA18AAQNhAAEDZAABA2UAAQNmAAEDZwABA2gAAQNqAAEDbAABA20AAQNuAAEDcAABA3EAAQOwAAEDsgABA7QAAQO2AAEDuQABA7oAAQO7AAEDvAABA70AAQO/AAEDwQABA8IAAQPDAAEDxQABA8YAAQQFAAEEBwABBAkAAQQLAAEEDgABBA8AAQQQAAEEEQABBBIAAQQUAAEEFgABBBcAAQQYAAEEGgABBBsAAQRaAAEEXAABBF4AAQRgAAEEYwABBGQAAQRlAAEEZgABBGcAAQRpAAEEawABBGwAAQRtAAEEbwABBHAAAQS7AAEE3gABBP4AAQUeAAEFIAABBSIAAQUkAAEFJgABBSkAAQUqAAEFKwABBS4AAQUvAAEFMQABBTIAAQU0AAEFNwABBTgAAQU5AAEFPAABBT0AAQVGAAEFUwABBVgAAQVaAAEFXAABBWEAAQVkAAEFZwABBWkAAQWOAAEFsgABBdkAAQX9AAEGAAABBgIAAQYEAAEGBgABBggA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ARC/AAEQwQABEMIAARDYAAERFwABERkAAREbAAERHQABESAAAREhAAERIgABESMAAREkAAERJgABESgAAREpAAERKgABESwAAREtAAERUgABEXYAARGdAAERwQABEcQAARHGAAERyAABEcoAARHMAAERzgABEc8AARHSAAER3wABEe4AARHwAAER8gABEfQAARH2AAER+AABEfoAARH8AAESCwABEg4AARIRAAESFAABEhcAARIaAAESHQABEiAAARIiAAESYQABEmMAARJlAAESZwABEmoAARJrAAESbAABEm0AARJuAAEScAABEnIAARJzAAESdAABEnYAARJ3AAEStgABErgAARK6AAESvAABEr8AARLAAAESwQABEsIAARLDAAESxQABEscAARLIAAESyQABEssAARLMAAETCwABEw0AARMPAAETEQABExQAARMVAAETFgABExcAARMYAAETGgABExwAARMdAAETHgABEyAAARMhAAETYAABE2IAARNkAAETZgABE2kAARNqAAETawABE2wAARNtAAETbwABE3EAARNyAAETcwABE3UAARN2AAETtQABE7cAARO5AAETuwABE74AARO/AAETwAABE8EAARPCAAETxAABE8YAARPHAAETyAABE8oAARPLAAEUCgABFAwAARQOAAEUEAABFBMAARQUAAEUFQABFBYAARQXAAEUGQABFBsAARQcAAEUHQABFB8AARQgAAEUXwABFGEAARRjAAEUZQABFGgAARRpAAEUagABFGsAARRsAAEUbgABFHAAARRxAAEUcgABFHQAARR1AAEUwAABFOMAARUDAAEVIwABFSUAARUnAAEVKQABFSsAARUuAAEVLwABFTAAARUzAAEVNAABFTYAARU3AAEVOQABFTwAARU9AAEVPgABFUEAARVCAAEVSwABFVgAARVdAAEVXwABFWEAARVmAAEVaQABFWwAARVuAAEVkwABFbcAARXeAAEWAgABFgUAARYHAAEWCQABFgsAARYNAAEWDwABFhAAARYTAAEWIAABFjEAARYzAAEWNQABFjcAARY5AAEWOwABFj0AARY/AAEWQQABFlIAARZVAAEWWAABFlsAARZeAAEWYQABFmQAARZnAAEWagABFmwAARarAAEWrQABFq8AARaxAAEWtAABFrUAARa2AAEWtwABFrgAARa6AAEWvAABFr0AARa+AAEWwAABFsEAARcAAAEXAgABFwQAARcGAAEXCQABFwoAARcLAAEXDAABFw0AARcPAAEXEQABFxIAARcTAAEXFQABFxYAARdVAAEXVwABF1oAARdcAAEXXwABF2AAARdhAAEXYgABF2MAARdlAAEXZwABF2gAARdpAAEXawABF2wAARd5AAEXegABF3sAARd9AAEXvAABF74AARfAAAEXwgABF8UAARfGAAEXxwABF8gAARfJAAEXywABF80AARfOAAEXzwABF9EAARfSAAEYEQABGBMAARgVAAEYFwABGBoAARgbAAEYHAABGB0AARgeAAEYIAABGCIAARgjAAEYJAABGCYAARgnAAEYZgABGGgAARhqAAEYbAABGG8AARhwAAEYcQABGHIAARhzAAEYdQABGHcAARh4AAEYeQABGHsAARh8AAEYuwABGL0AARi/AAEYwQABGMQAARjFAAEYxgABGMcAARjIAAEYygABGMwAARjNAAEYzgABGNAAARjRAAEZEAABGRIAARkUAAEZFgABGRkAARkaAAEZGwABGRwAARkdAAEZHwABGSEAARkiAAEZIwABGSUAARkmAAEZSwABGW8AARmWAAEZugABGb0AARm/AAEZwQABGcMAARnFAAEZxwABGcgAARnLAAEZ2AABGecAARnpAAEZ6wABGe0AARnvAAEZ8QABGfMAARn1AAEaBAABGgcAARoKAAEaDQABGhAAARoTAAEaFgABGhkAARobAAEaWgABGlwAARpeAAEaYAABGmMAARpkAAEaZQABGmYAARpnAAEaaQABGmsAARpsAAEabQABGm8AARpwAAEarwABGrEAARqzAAEatQABGrgAARq5AAEaugABGrsAARq8AAEavgABGsAAARrBAAEawgABGsQAARrFAAEbBAABGwYAARsIAAEbCgABGw0AARsOAAEbDwABGxAAARsRAAEbEwABGxUAARsWAAEbFwABGxkAARsaAAEbWQABG1sAARtdAAEbXwABG2IAARtjAAEbZAABG2UAARtmAAEbaAABG2oAARtrAAEbbAABG24AARtvAAEbrgABG7AAARuyAAEbtAABG7cAARu4AAEbuQABG7oAARu7AAEbvQABG78AARvAAAEbwQABG8MAARvEAAEcAwABHAUAARwHAAEcCQABHAwAARwNAAEcDgABHA8AARwQAAEcEgABHBQAARwVAAEcFgABHBgAARwZAAEcWAABHFoAARxcAAEcXgABHGEAARxiAAEcYwABHGQAARxlAAEcZwABHGkAARxqAAEcawABHG0AARxuAAEcuQABHNwAARz8AAEdHAABHR4AAR0gAAEdIgABHSQAAR0nAAEdKAABHSkAAR0sAAEdLQABHS8AAR0wAAEdMgABHTUAAR02AAEdNwABHToAAR07AAEdQAABHU0AAR1SAAEdVAABHVYAAR1bAAEdXgABHWEAAR1jAAEdiAABHawAAR3TAAEd9wABHfoAAR38AAEd/gABHgAAAR4CAAEeBAABHgUAAR4IAAEeFQABHiYAAR4oAAEeKgABHiwAAR4uAAEeMAABHjIAAR40AAEeNgABHkcAAR5KAAEeTQABHlAAAR5TAAEeVgABHlkAAR5cAAEeXwABHmEAAR6gAAEeogABHqQAAR6mAAEeqQABHqoAAR6rAAEerAABHq0AAR6vAAEesQABHrIAAR6zAAEetQABHrYAAR71AAEe9wABHvkAAR77AAEe/gABHv8AAR8AAAEfAQABHwIAAR8EAAEfBgABHwcAAR8IAAEfCgABHwsAAR9KAAEfTAABH08AAR9RAAEfVAABH1UAAR9WAAEfVwABH1gAAR9aAAEfXAABH10AAR9eAAEfYAABH2EAAR9uAAEfbwABH3AAAR9yAAEfsQABH7MAAR+1AAEftwABH7oAAR+7AAEfvAABH70AAR++AAEfwAABH8IAAR/DAAEfxAABH8YAAR/HAAEgBgABIAgAASAKAAEgDAABIA8AASAQAAEgEQABIBIAASATAAEgFQABIBcAASAYAAEgGQABIBsAASAcAAEgWwABIF0AASBfAAEgYQABIGQAASBlAAEgZgABIGcAASBoAAEgagABIGwAASBtAAEgbgABIHAAASBxAAEgsAABILIAASC0AAEgtgABILkAASC6AAEguwABILwAASC9AAEgvwABIMEAASDCAAEgwwABIMUAASDGAAEhBQABIQcAASEJAAEhCwABIQ4AASEPAAEhEAABIREAASESAAEhFAABIRYAASEXAAEhGAABIRoAASEbAAEhQAABIWQAASGLAAEhrwABIbIAASG0AAEhtgABIbgAASG6AAEhvAABIb0AASHAAAEhzQABIdwAASHeAAEh4AABIeIAASHkAAEh5gABIegAASHqAAEh+QABIfwAASH/AAEiAgABIgUAASIIAAEiCwABIg4AASIQAAEiTwABIlEAASJTAAEiVQABIlgAASJZAAEiWgABIlsAASJcAAEiXgABImAAASJhAAEiYgABImQAASJlAAEipAABIqYAASKoAAEiqgABIq0AASKuAAEirwABIrAAASKxAAEiswABIrUAASK2AAEitwABIrkAASK6AAEi+QABIvsAASL9AAEi/wABIwIAASMDAAEjBAABIwUAASMGAAEjCAABIwoAASMLAAEjDAABIw4AASMPAAEjTgABI1AAASNSAAEjVAABI1cAASNYAAEjWQABI1oAASNbAAEjXQABI18AASNgAAEjYQABI2MAASNkAAEjowABI6UAASOnAAEjqQABI6wAASOtAAEjrgABI68AASOwAAEjsgABI7QAASO1AAEjtgABI7gAASO5AAEj+AABI/oAASP8AAEj/gABJAEAASQCAAEkAwABJAQAASQFAAEkBwABJAkAASQKAAEkCwABJA0AASQOAAEkTQABJE8AASRRAAEkUwABJFYAASRXAAEkWAABJFkAASRaAAEkXAABJF4AASRfAAEkYAABJGIAASRjAAEkrgABJNEAASTxAAElEQABJRMAASUVAAElFwABJRkAASUcAAElHQABJR4AASUhAAElIgABJSQAASUlAAElJwABJSoAASUrAAElLAABJS8AASUwAAElNQABJUIAASVHAAElSQABJUsAASVQAAElUwABJVYAASVYAAElfQABJaEAASXIAAEl7AABJe8AASXxAAEl8wABJfUAASX3AAEl+QABJfoAASX9AAEmCgABJhsAASYdAAEmHwABJiEAASYjAAEmJQABJicAASYpAAEmKwABJjwAASY/AAEmQgABJkUAASZIAAEmSwABJk4AASZRAAEmVAABJlYAASaVAAEmlwABJpkAASabAAEmngABJp8AASagAAEmoQABJqIAASakAAEmpgABJqcAASaoAAEmqgABJqsAASbqAAEm7AABJu4AASbwAAEm8wABJvQAASb1AAEm9gABJvcAASb5AAEm+wABJvwAASb9AAEm/wABJwAAASc/AAEnQQABJ0QAASdGAAEnSQABJ0oAASdLAAEnTAABJ00AASdPAAEnUQABJ1IAASdTAAEnVQABJ1YAASdjAAEnZAABJ2UAASdnAAEnpgABJ6gAASeqAAEnrAABJ68AASewAAEnsQABJ7IAASezAAEntQABJ7cAASe4AAEnuQABJ7sAASe8AAEn+wABJ/0AASf/AAEoAQABKAQAASgFAAEoBgABKAcAASgIAAEoCgABKAwAASgNAAEoDgABKBAAASgRAAEoUAABKFIAAShUAAEoVgABKFkAAShaAAEoWwABKFwAAShdAAEoXwABKGEAAShiAAEoYwABKGUAAShmAAEopQABKKcAASipAAEoqwABKK4AASivAAEosAABKLEAASiyAAEotAABKLYAASi3AAEouAABKLoAASi7AAEo+gABKPwAASj+AAEpAAABKQMAASkEAAEpBQABKQYAASkHAAEpCQABKQsAASkMAAEpDQABKQ8AASkQAAEpNQABKVkAASmAAAEppAABKacAASmpAAEpqwABKa0AASmvAAEpsQABKbIAASm1AAEpwgABKdEAASnTAAEp1QABKdcAASnZAAEp2wABKd0AASnfAAEp7gABKfEAASn0AAEp9wABKfoAASn9AAEqAAABKgMAASoFAAEqRAABKkYAASpIAAEqSgABKk0AASpOAAEqTwABKlAAASpRAAEqUwABKlUAASpWAAEqVwABKlkAASpaAAEqmQABKpsAASqdAAEqnwABKqIAASqjAAEqpAABKqUAASqmAAEqqAABKqoAASqrAAEqrAABKq4AASqvAAEq7gABKvAAASryAAEq9AABKvcAASr4AAEq+QABKvoAASr7AAEq/QABKv8AASsAAAErAQABKwMAASsEAAErQwABK0UAAStHAAErSQABK0wAAStNAAErTgABK08AAStQAAErUgABK1QAAStVAAErVgABK1gAAStZAAErmAABK5oAASucAAErngABK6EAASuiAAErowABK6QAASulAAErpwABK6kAASuqAAErqwABK60AASuuAAEr7QABK+8AASvxAAEr8wABK/YAASv3AAEr+AABK/kAASv6AAEr/AABK/4AASv/AAEsAAABLAIAASwDAAEsQgABLEQAASxGAAEsSAABLEsAASxMAAEsTQABLE4AASxPAAEsUQABLFMAASxUAAEsVQABLFcAASxYAAEsowABLMYAASzmAAEtBgABLQgAAS0KAAEtDAABLQ4AAS0RAAEtEgABLRMAAS0WAAEtFwABLRkAAS0aAAEtHAABLR8AAS0gAAEtIQABLSQAAS0lAAEtKgABLTcAAS08AAEtPgABLUAAAS1FAAEtSAABLUsAAS1NAAEtcgABLZYAAS29AAEt4QABLeQAAS3mAAEt6AABLeoAAS3sAAEt7gABLe8AAS3yAAEt/wABLhAAAS4SAAEuFAABLhYAAS4YAAEuGgABLhwAAS4eAAEuIAABLjEAAS40AAEuNwABLjoAAS49AAEuQAABLkMAAS5GAAEuSQABLksAAS6KAAEujAABLo4AAS6QAAEukwABLpQAAS6VAAEulgABLpcAAS6ZAAEumwABLpwAAS6dAAEunwABLqAAAS7fAAEu4QABLuMAAS7lAAEu6AABLukAAS7qAAEu6wABLuwAAS7uAAEu8AABLvEAAS7yAAEu9AABLvUAAS80AAEvNgABLzkAAS87AAEvPgABLz8AAS9AAAEvQQABL0IAAS9EAAEvRgABL0cAAS9IAAEvSgABL0sAAS9YAAEvWQABL1oAAS9cAAEvmwABL50AAS+fAAEvoQABL6QAAS+lAAEvpgABL6cAAS+oAAEvqgABL6wAAS+tAAEvrgABL7AAAS+xAAEv8AABL/IAAS/0AAEv9gABL/kAAS/6AAEv+wABL/wAAS/9AAEv/wABMAEAATACAAEwAwABMAUAATAGAAEwRQABMEcAATBJAAEwSwABME4AATBPAAEwUAABMFEAATBSAAEwVAABMFYAATBXAAEwWAABMFoAATBbAAEwmgABMJwAATCeAAEwoAABMKMAATCkAAEwpQABMKYAATCnAAEwqQABMKsAATCsAAEwrQABMK8AATCwAAEw7wABMPEAATDzAAEw9QABMPgAATD5AAEw+gABMPsAATD8AAEw/gABMQAAATEBAAExAgABMQQAATEFAAExKgABMU4AATF1AAExmQABMZwAATGeAAExoAABMaIAATGkAAExpgABMacAATGqAAExtwABMcYAATHIAAExygABMcwAATHOAAEx0AABMdIAATHUAAEx4wABMeYAATHpAAEx7AABMe8AATHyAAEx9QABMfgAATH6AAEyOQABMjsAATI9AAEyPwABMkIAATJDAAEyRAABMkUAATJGAAEySAABMkoAATJLAAEyTAABMk4AATJPAAEyjgABMpAAATKSAAEylAABMpcAATKYAAEymQABMpoAATKbAAEynQABMp8AATKgAAEyoQABMqMAATKkAAEy4wABMuUAATLnAAEy6QABMuwAATLtAAEy7gABMu8AATLwAAEy8gABMvQAATL1AAEy9gABMvgAATL5AAEzOAABMzoAATM8AAEzPgABM0EAATNCAAEzQwABM0QAATNFAAEzRwABM0kAATNKAAEzSwABM00AATNOAAEzjQABM48AATORAAEzkwABM5YAATOXAAEzmAABM5kAATOaAAEznAABM54AATOfAAEzoAABM6IAATOjAAEz4gABM+QAATPmAAEz6AABM+sAATPsAAEz7QABM+4AATPvAAEz8QABM/MAATP0AAEz9QABM/cAATP4AAE0NwABNDkAATQ7AAE0PQABNEAAATRBAAE0QgABNEMAATREAAE0RgABNEgAATRJAAE0SgABNEwAATRNAAE0mAABNLsAATTbAAE0+wABNP0AATT/AAE1AQABNQMAATUGAAE1BwABNQgAATULAAE1DAABNQ4AATUPAAE1EQABNRQAATUVAAE1FgABNRkAATUaAAE1HwABNSwAATUxAAE1MwABNTUAATU6AAE1PQABNUAAATVCAAE1ZwABNYsAATWyAAE11gABNdkAATXbAAE13QABNd8AATXhAAE14wABNeQAATXnAAE19AABNgUAATYHAAE2CQABNgsAATYNAAE2DwABNhEAATYTAAE2FQABNiYAATYpAAE2LAABNi8AATYyAAE2NQABNjgAATY7AAE2PgABNkAAATZ/AAE2gQABNoMAATaFAAE2iAABNokAATaKAAE2iwABNowAATaOAAE2kAABNpEAATaSAAE2lAABNpUAATbUAAE21gABNtgAATbaAAE23QABNt4AATbfAAE24AABNuEAATbjAAE25QABNuYAATbnAAE26QABNuoAATcpAAE3KwABNy4AATcwAAE3MwABNzQAATc1AAE3NgABNzcAATc5AAE3OwABNzwAATc9AAE3PwABN0AAATdNAAE3TgABN08AATdRAAE3kAABN5IAATeUAAE3lgABN5kAATeaAAE3mwABN5wAATedAAE3nwABN6EAATeiAAE3owABN6UAATemAAE35QABN+cAATfpAAE36wABN+4AATfvAAE38AABN/EAATfyAAE39AABN/YAATf3AAE3+AABN/oAATf7AAE4OgABODwAATg+AAE4QAABOEMAAThEAAE4RQABOEYAAThHAAE4SQABOEsAAThMAAE4TQABOE8AAThQAAE4jwABOJEAATiTAAE4lQABOJgAATiZAAE4mgABOJsAATicAAE4ngABOKAAATihAAE4ogABOKQAATilAAE45AABOOYAATjoAAE46gABOO0AATjuAAE47wABOPAAATjxAAE48wABOPUAATj2AAE49wABOPkAATj6AAE5HwABOUMAATlqAAE5jgABOZEAATmTAAE5lQABOZcAATmZAAE5mwABOZwAATmfAAE5rAABObsAATm9AAE5vwABOcEAATnDAAE5xQABOccAATnJAAE52AABOdsAATneAAE54QABOeQAATnnAAE56gABOe0AATnvAAE6LgABOjAAAToyAAE6NAABOjcAATo4AAE6OQABOjoAATo7AAE6PQABOj8AATpAAAE6QQABOkMAATpEAAE6gwABOoUAATqHAAE6iQABOowAATqNAAE6jgABOo8AATqQAAE6kgABOpQAATqVAAE6lgABOpgAATqZAAE62AABOtoAATrcAAE63gABOuEAATriAAE64wABOuQAATrlAAE65wABOukAATrqAAE66wABOu0AATruAAE7LQABOy8AATsxAAE7MwABOzYAATs3AAE7OAABOzkAATs6AAE7PAABOz4AATs/AAE7QAABO0IAATtDAAE7ggABO4QAATuGAAE7iAABO4sAATuMAAE7jQABO44AATuPAAE7kQABO5MAATuUAAE7lQABO5cAATuYAAE71wABO9kAATvbAAE73QABO+AAATvhAAE74gABO+MAATvkAAE75gABO+gAATvpAAE76gABO+wAATvtAAE8LAABPC4AATwwAAE8MgABPDUAATw2AAE8NwABPDgAATw5AAE8OwABPD0AATw+AAE8PwABPEEAATxCAAE8jQABPLAAATzQAAE88AABPPIAATz0AAE89gABPPgAATz7AAE8/AABPP0AAT0AAAE9AQABPQMAAT0EAAE9BgABPQkAAT0KAAE9CwABPQ4AAT0PAAE9FAABPSEAAT0mAAE9KAABPSoAAT0vAAE9MgABPTUAAT03AAE9XAABPYAAAT2nAAE9ywABPc4AAT3QAAE90gABPdQAAT3WAAE92AABPdkA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AU6IAAFOiQABTosAAU6MAAFOywABTs0AAU7PAAFO0QABTtQAAU7VAAFO1gABTtcAAU7YAAFO2gABTtwAAU7dAAFO3gABTuAAAU7hAAFPIAABTyIAAU8lAAFPJwABTyoAAU8rAAFPLAABTy0AAU8uAAFPMAABTzIAAU8zAAFPNAABTzYAAU83AAFPRAABT0UAAU9GAAFPSAABT4cAAU+JAAFPiwABT40AAU+QAAFPkQABT5IAAU+TAAFPlAABT5YAAU+YAAFPmQABT5oAAU+cAAFPnQABT9wAAU/eAAFP4AABT+IAAU/lAAFP5gABT+cAAU/oAAFP6QABT+sAAU/tAAFP7gABT+8AAU/xAAFP8gABUDEAAVAzAAFQNQABUDcAAVA6AAFQOwABUDwAAVA9AAFQPgABUEAAAVBCAAFQQwABUEQAAVBGAAFQRwABUIYAAVCIAAFQigABUIwAAVCPAAFQkAABUJEAAVCSAAFQkwABUJUAAVCXAAFQmAABUJkAAVCbAAFQnAABUNsAAVDdAAFQ3wABUOEAAVDkAAFQ5QABUOYAAVDnAAFQ6AABUOoAAVDsAAFQ7QABUO4AAVDwAAFQ8QABURYAAVE6AAFRYQABUYUAAVGIAAFRigABUYwAAVGOAAFRkAABUZIAAVGTAAFRlgABUaMAAVGyAAFRtAABUbYAAVG4AAFRugABUbwAAVG+AAFRwAABUc8AAVHSAAFR1QABUdgAAVHbAAFR3gABUeEAAVHkAAFR5gABUiUAAVInAAFSKQABUisAAVIuAAFSLwABUjAAAVIxAAFSMgABUjQAAVI2AAFSNwABUjgAAVI6AAFSOwABUnoAAVJ8AAFSfgABUoAAAVKDAAFShAABUoUAAVKGAAFShwABUokAAVKLAAFSjAABUo0AAVKPAAFSkAABUs8AAVLRAAFS0wABUtUAAVLYAAFS2QABUtoAAVLbAAFS3AABUt4AAVLgAAFS4QABUuIAAVLkAAFS5QABUyQAAVMmAAFTKAABUyoAAVMtAAFTLgABUy8AAVMwAAFTMQABUzMAAVM1AAFTNgABUzcAAVM5AAFTOgABU3kAAVN7AAFTfQABU38AAVOCAAFTgwABU4QAAVOFAAFThgABU4gAAVOKAAFTiwABU4wAAVOOAAFTjwABU84AAVPQAAFT0gABU9QAAVPXAAFT2AABU9kAAVPaAAFT2wABU90AAVPfAAFT4AABU+EAAVPjAAFT5AABVCMAAVQlAAFUJwABVCkAAVQsAAFULQABVC4AAVQvAAFUMAABVDIAAVQ0AAFUNQABVDYAAVQ4AAFUOQABVIQAAVSnAAFUxwABVOcAAVTpAAFU6wABVO0AAVTvAAFU8gABVPMAAVT0AAFU9wABVPgAAVT6AAFU+wABVP0AAVUAAAFVAQABVQIAAVUFAAFVBgABVQsAAVUYAAFVHQABVR8AAVUhAAFVJgABVSkAAVUsAAFVLgABVVMAAVV3AAFVngABVcIAAVXFAAFVxwABVckAAVXLAAFVzQABVc8AAVXQAAFV0wABVeAAAVXxAAFV8wABVfUAAVX3AAFV+QABVfsAAVX9AAFV/wABVgEAAVYSAAFWFQABVhgAAVYbAAFWHgABViEAAVYkAAFWJwABVioAAVYsAAFWawABVm0AAVZvAAFWcQABVnQAAVZ1AAFWdgABVncAAVZ4AAFWegABVnwAAVZ9AAFWfgABVoAAAVaBAAFWwAABVsIAAVbEAAFWxgABVskAAVbKAAFWywABVswAAVbNAAFWzwABVtEAAVbSAAFW0wABVtUAAVbWAAFXFQABVxcAAVcaAAFXHAABVx8AAVcgAAFXIQABVyIAAVcjAAFXJQABVycAAVcoAAFXKQABVysAAVcsAAFXOQABVzoAAVc7AAFXPQABV3wAAVd+AAFXgAABV4IAAVeFAAFXhgABV4cAAVeIAAFXiQABV4sAAVeNAAFXjgABV48AAVeRAAFXkgABV9EAAVfTAAFX1QABV9cAAVfaAAFX2wABV9wAAVfdAAFX3gABV+AAAVfiAAFX4wABV+QAAVfmAAFX5wABWCYAAVgoAAFYKgABWCwAAVgvAAFYMAABWDEAAVgyAAFYMwABWDUAAVg3AAFYOAABWDkAAVg7AAFYPAABWHsAAVh9AAFYfwABWIEAAViEAAFYhQABWIYAAViHAAFYiAABWIoAAViMAAFYjQABWI4AAViQAAFYkQABWNAAAVjSAAFY1AABWNYAAVjZAAFY2gABWNsAAVjcAAFY3QABWN8AAVjhAAFY4gABWOMAAVjlAAFY5gABWQsAAVkvAAFZVgABWXoAAVl9AAFZfwABWYEAAVmDAAFZhQABWYcAAVmIAAFZiwABWZgAAVmnAAFZqQABWasAAVmtAAFZrwABWbEAAVmzAAFZtQABWcQAAVnHAAFZygABWc0AAVnQAAFZ0wABWdYAAVnZAAFZ2wABWhoAAVocAAFaHgABWiAAAVojAAFaJAABWiUAAVomAAFaJwABWikAAVorAAFaLAABWi0AAVovAAFaMAABWm8AAVpxAAFacwABWnUAAVp4AAFaeQABWnoAAVp7AAFafAABWn4AAVqAAAFagQABWoIAAVqEAAFahQABWsQAAVrGAAFayAABWsoAAVrNAAFazgABWs8AAVrQAAFa0QABWtMAAVrVAAFa1gABWtcAAVrZAAFa2gABWxkAAVsbAAFbHQABWx8AAVsiAAFbIwABWyQAAVslAAFbJgABWygAAVsqAAFbKwABWywAAVsuAAFbLwABW24AAVtwAAFbcgABW3QAAVt3AAFbeAABW3kAAVt6AAFbewABW30AAVt/AAFbgAABW4EAAVuDAAFbhAABW8MAAVvFAAFbxwABW8kAAVvMAAFbzQABW84AAVvPAAFb0AABW9IAAVvUAAFb1QABW9YAAVvYAAFb2QABXBgAAVwaAAFcHAABXB4AAVwhAAFcIgABXCMAAVwkAAFcJQABXCcAAVwpAAFcKgABXCsAAVwtAAFcLgABXHkAAVycAAFcvAABXNwAAVzeAAFc4AABXOIAAVzkAAFc5wABXOgAAVzpAAFc7AABXO0AAVzvAAFc8AABXPIAAVz0AAFc9QABXPYAAVz5AAFc+gABXP8AAV0MAAFdEQABXRMAAV0VAAFdGgABXR0AAV0gAAFdIgABXUcAAV1rAAFdkgABXbYAAV25AAFduwABXb0AAV2/AAFdwQABXcMAAV3EAAFdxwABXdQAAV3lAAFd5wABXekAAV3rAAFd7QABXe8AAV3xAAFd8wABXfUAAV4GAAFeCQABXgwAAV4PAAFeEgABXhUAAV4YAAFeGwABXh4AAV4gAAFeXwABXmEAAV5jAAFeZQABXmgAAV5pAAFeagABXmsAAV5sAAFebgABXnAAAV5xAAFecgABXnQAAV51AAFetAABXrYAAV64AAFeugABXr0AAV6+AAFevwABXsAAAV7BAAFewwABXsUAAV7GAAFexwABXskAAV7KAAFfCQABXwsAAV8OAAFfEAABXxMAAV8UAAFfFQABXxYAAV8XAAFfGQABXxsAAV8cAAFfHQABXx8AAV8gAAFfLQABXy4AAV8vAAFfMQABX3AAAV9yAAFfdAABX3YAAV95AAFfegABX3sAAV98AAFffQABX38AAV+BAAFfggABX4MAAV+FAAFfhgABX8UAAV/HAAFfyQABX8sAAV/OAAFfzwABX9AAAV/RAAFf0gABX9QAAV/WAAFf1wABX9gAAV/aAAFf2wABYBoAAWAcAAFgHgABYCAAAWAjAAFgJAABYCUAAWAmAAFgJwABYCkAAWArAAFgLAABYC0AAWAvAAFgMAABYG8AAWBxAAFgcwABYHUAAWB4AAFgeQABYHoAAWB7AAFgfAABYH4AAWCAAAFggQABYIIAAWCEAAFghQABYMQAAWDGAAFgyAABYMoAAWDNAAFgzgABYM8AAWDQAAFg0QABYNMAAWDVAAFg1gABYNcAAWDZAAFg2gABYP8AAWEjAAFhSgABYW4AAWFxAAFhcwABYXUAAWF3AAFheQABYXsAAWF8AAFhfwABYYwAAWGbAAFhnQABYZ8AAWGhAAFhowABYaUAAWGnAAFhqQABYbgAAWG7AAFhvgABYcEAAWHEAAFhxwABYcoAAWHNAAFhzwABYg4AAWIQAAFiEgABYhQAAWIXAAFiGAABYhkAAWIaAAFiGwABYh0AAWIfAAFiIAABYiEAAWIjAAFiJAABYmMAAWJlAAFiZwABYmkAAWJsAAFibQABYm4AAWJvAAFicAABYnIAAWJ0AAFidQABYnYAAWJ4AAFieQABYrgAAWK6AAFivAABYr4AAWLBAAFiwgABYsMAAWLEAAFixQABYscAAWLJAAFiygABYssAAWLNAAFizgABYw0AAWMPAAFjEQABYxMAAWMWAAFjFwABYxgAAWMZAAFjGgABYxwAAWMeAAFjHwABYyAAAWMiAAFjIwABY2IAAWNkAAFjZgABY2gAAWNrAAFjbAABY20AAWNuAAFjbwABY3EAAWNzAAFjdAABY3UAAWN3AAFjeAABY7cAAWO5AAFjuwABY70AAWPAAAFjwQABY8IAAWPDAAFjxAABY8YAAWPIAAFjyQABY8oAAWPMAAFjzQABZAwAAWQOAAFkEAABZBIAAWQVAAFkFgABZBcAAWQYAAFkGQABZBsAAWQdAAFkHgABZB8AAWQhAAFkIgABZG0AAWSQAAFksAABZNAAAWTSAAFk1AABZNYAAWTYAAFk2wABZNwAAWTdAAFk4AABZOEAAWTjAAFk5AABZOYAAWTpAAFk6gABZOsAAWTuAAFk7wABZPQAAWUBAAFlBgABZQgAAWUKAAFlDwABZRIAAWUVAAFlFwABZTwAAWVgAAFlhwABZasAAWWuAAFlsAABZbIAAWW0AAFltgABZbgAAWW5AAFlvAABZckAAWXaAAFl3AABZd4AAWXgAAFl4gABZeQAAWXmAAFl6AABZeoAAWX7AAFl/gABZgEAAWYEAAFmBwABZgoAAWYNAAFmEAABZhMAAWYVAAFmVAABZlYAAWZYAAFmWgABZl0AAWZeAAFmXwABZmAAAWZhAAFmYwABZmUAAWZmAAFmZwABZmkAAWZqAAFmqQABZqsAAWatAAFmrwABZrIAAWazAAFmtAABZrUAAWa2AAFmuAABZroAAWa7AAFmvAABZr4AAWa/AAFm/gABZwAAAWcDAAFnBQABZwgAAWcJAAFnCgABZwsAAWcMAAFnDgABZxAAAWcRAAFnEgABZxQAAWcVAAFnIgABZyMAAWckAAFnJgABZ2UAAWdnAAFnaQABZ2sAAWduAAFnbwABZ3AAAWdxAAFncgABZ3QAAWd2AAFndwABZ3gAAWd6AAFnewABZ7oAAWe8AAFnvgABZ8AAAWfDAAFnxAABZ8UAAWfGAAFnxwABZ8kAAWfLAAFnzAABZ80AAWfPAAFn0AABaA8AAWgRAAFoEwABaBUAAWgYAAFoGQABaBoAAWgbAAFoHAABaB4AAWggAAFoIQABaCIAAWgkAAFoJQABaGQAAWhmAAFoaQABaGsAAWhuAAFobwABaHAAAWhxAAFocgABaHQAAWh2AAFodwABaHgAAWh6AAFoewABaI4AAWjNAAFozwABaNEAAWjTAAFo1gABaNcAAWjYAAFo2QABaNoAAWjcAAFo3gABaN8AAWjgAAFo4gABaOMAAWkIAAFpLAABaVMAAWl3AAFpegABaXwAAWl+AAFpgAABaYIAAWmEAAFphQABaYgAAWmVAAFppAABaaYAAWmoAAFpqgABaawAAWmuAAFpsAABabIAAWnBAAFpxAABaccAAWnKAAFpzQABadAAAWnTAAFp1gABadgAAWoXAAFqGQABahsAAWodAAFqIAABaiEAAWoiAAFqIwABaiQAAWomAAFqKAABaikAAWoqAAFqLAABai0AAWpsAAFqbgABanAAAWpyAAFqdQABanYAAWp3AAFqeAABankAAWp7AAFqfQABan4AAWp/AAFqgQABaoIAAWrBAAFqwwABasUAAWrHAAFqygABassAAWrMAAFqzQABas4AAWrQAAFq0gABatMAAWrUAAFq1gABatcAAWsWAAFrGAABaxoAAWscAAFrHwABayAAAWshAAFrIgABayMAAWslAAFrJwABaygAAWspAAFrKwABaywAAWtrAAFrbQABa28AAWtxAAFrdAABa3UAAWt2AAFrdwABa3gAAWt6AAFrfAABa30AAWt+AAFrgAABa4EAAWvAAAFrwgABa8QAAWvGAAFryQABa8oAAWvLAAFrzAABa80AAWvPAAFr0QABa9IAAWvTAAFr1QABa9YAAWwVAAFsFwABbBkAAWwbAAFsHgABbB8AAWwgAAFsIQABbCIAAWwkAAFsJgABbCcAAWwoAAFsKgABbCsAAWx2AAFsmQABbLkAAWzZAAFs2wABbN0AAWzfAAFs4QABbOQAAWzlAAFs5gABbOkAAWzqAAFs7AABbO0AAWzvAAFs8gABbPMAAWz0AAFs9wABbPgAAWz9AAFtCgABbQ8AAW0RAAFtEwABbRgAAW0bAAFtHgABbSAAAW1FAAFtaQABbZAAAW20AAFttwABbbkAAW27AAFtvQABbb8AAW3BAAFtwgABbcUAAW3SAAFt4wABbeUAAW3nAAFt6QABbesAAW3tAAFt7wABbfEAAW3zAAFuBAABbgcAAW4KAAFuDQABbhAAAW4TAAFuFgABbhkAAW4cAAFuHgABbl0AAW5fAAFuYQABbmMAAW5mAAFuZwABbmgAAW5pAAFuagABbmwAAW5uAAFubwABbnAAAW5yAAFucwABbrIAAW60AAFutgABbrgAAW67AAFuvAABbr0AAW6+AAFuvwABbsEAAW7DAAFuxAABbsUAAW7HAAFuyAABbwcAAW8JAAFvDAABbw4AAW8RAAFvEgABbxMAAW8UAAFvFQABbxcAAW8ZAAFvGgABbxsAAW8dAAFvHgABbysAAW8sAAFvLQABby8AAW9uAAFvcAABb3IAAW90AAFvdwABb3gAAW95AAFvegABb3sAAW99AAFvfwABb4AAAW+BAAFvgwABb4QAAW/DAAFvxQABb8cAAW/JAAFvzAABb80AAW/OAAFvzwABb9AAAW/SAAFv1AABb9UAAW/WAAFv2AABb9kAAXAYAAFwGgABcBwAAXAeAAFwIQABcCIAAXAjAAFwJAABcCUAAXAnAAFwKQABcCoAAXArAAFwLQABcC4AAXBtAAFwbwABcHEAAXBzAAFwdgABcHcAAXB4AAFweQABcHoAAXB8AAFwfgABcH8AAXCAAAFwggABcIMAAXDCAAFwxAABcMYAAXDIAAFwywABcMwAAXDNAAFwzgABcM8AAXDRAAFw0wABcNQAAXDVAAFw1wABcNgAAXD9AAFxIQABcUgAAXFsAAFxbwABcXEAAXFzAAFxdQABcXcAAXF5AAFxegABcX0AAXGKAAFxmQABcZsAAXGdAAFxnwABcaEAAXGjAAFxpQABcacAAXG2AAFxuQABcbwAAXG/AAFxwgABccUAAXHIAAFxywABcc0AAXIMAAFyDgABchAAAXISAAFyFQABchYAAXIXAAFyGAABchkAAXIbAAFyHQABch4AAXIfAAFyIQABciIAAXJhAAFyYwABcmUAAXJnAAFyagABcmsAAXJsAAFybQABcm4AAXJwAAFycgABcnMAAXJ0AAFydgABcncAAXK2AAFyuAABcroAAXK8AAFyvwABcsAAAXLBAAFywgABcsMAAXLFAAFyxwABcsgAAXLJAAFyywABcswAAXMLAAFzDQABcw8AAXMRAAFzFAABcxUAAXMWAAFzFwABcxgAAXMaAAFzHAABcx0AAXMeAAFzIAABcyEAAXNgAAFzYgABc2QAAXNmAAFzaQABc2oAAXNrAAFzbAABc20AAXNvAAFzcQABc3IAAXNzAAFzdQABc3YAAXO1AAFztwABc7kAAXO7AAFzvgABc78AAXPAAAFzwQABc8IAAXPEAAFzxgABc8cAAXPIAAFzygABc8sAAXQKAAF0DAABdA4AAXQQAAF0EwABdBQAAXQVAAF0FgABdBcAAXQZAAF0GwABdBwAAXQdAAF0HwABdCAAAXRrAAF0jgABdK4AAXTOAAF00AABdNIAAXTUAAF01gABdNkAAXTaAAF02wABdN4AAXTfAAF04QABdOIAAXTkAAF05gABdOcAAXToAAF06wABdOwAAXT1AAF1AgABdQcAAXUJAAF1CwABdRAAAXUTAAF1FgABdRgAAXU9AAF1YQABdYgAAXWsAAF1rwABdbEAAXWzAAF1tQABdbcAAXW5AAF1ugABdb0A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AYC1AAGAtwABgLkAAYC7AAGAvgABgL8AAYDAAAGAwQABgMIAAYDEAAGAxgABgMcAAYDIAAGAygABgMsAAYDwAAGBFAABgTsAAYFfAAGBYgABgWQAAYFmAAGBaAABgWoAAYFsAAGBbQABgXAAAYF9AAGBjAABgY4AAYGQAAGBkgABgZQAAYGWAAGBmAABgZoAAYGpAAGBrAABga8AAYGyAAGBtQABgbgAAYG7AAGBvgABgcAAAYH/AAGCAQABggMAAYIFAAGCCAABggkAAYIKAAGCCwABggwAAYIOAAGCEAABghEAAYISAAGCFAABghUAAYJUAAGCVgABglgAAYJaAAGCXQABgl4AAYJfAAGCYAABgmEAAYJjAAGCZQABgmYAAYJnAAGCaQABgmoAAYKpAAGCqwABgq0AAYKvAAGCsgABgrMAAYK0AAGCtQABgrYAAYK4AAGCugABgrsAAYK8AAGCvgABgr8AAYL+AAGDAAABgwIAAYMEAAGDBwABgwgAAYMJAAGDCgABgwsAAYMNAAGDDwABgxAAAYMRAAGDEwABgxQAAYNTAAGDVQABg1cAAYNZAAGDXAABg10AAYNeAAGDXwABg2AAAYNiAAGDZAABg2UAAYNmAAGDaAABg2kAAYOoAAGDqgABg6wAAYOuAAGDsQABg7IAAYOzAAGDtAABg7UAAYO3AAGDuQABg7oAAYO7AAGDvQABg74AAYP9AAGD/wABhAEAAYQDAAGEBgABhAcAAYQIAAGECQABhAoAAYQMAAGEDgABhA8AAYQQAAGEEgABhBMAAYReAAGEgQABhKEAAYTBAAGEwwABhMUAAYTHAAGEyQABhMwAAYTNAAGEzgABhNEAAYTSAAGE1AABhNUAAYTXAAGE2gABhNsAAYTcAAGE3wABhOAAAYTlAAGE8gABhPcAAYT5AAGE+wABhQAAAYUDAAGFBgABhQgAAYUtAAGFUQABhXgAAYWcAAGFnwABhaEAAYWjAAGFpQABhacAAYWpAAGFqgABha0AAYW6AAGFywABhc0AAYXPAAGF0QABhdMAAYXVAAGF1wABhdkAAYXbAAGF7AABhe8AAYXyAAGF9QABhfgAAYX7AAGF/gABhgEAAYYEAAGGBgABhkUAAYZHAAGGSQABhksAAYZOAAGGTwABhlAAAYZRAAGGUgABhlQAAYZWAAGGVwABhlgAAYZaAAGGWwABhpoAAYacAAGGngABhqAAAYajAAGGpAABhqUAAYamAAGGpwABhqkAAYarAAGGrAABhq0AAYavAAGGsAABhu8AAYbxAAGG9AABhvYAAYb5AAGG+gABhvsAAYb8AAGG/QABhv8AAYcBAAGHAgABhwMAAYcFAAGHBgABhxMAAYcUAAGHFQABhxcAAYdWAAGHWAABh1oAAYdcAAGHXwABh2AAAYdhAAGHYgABh2MAAYdlAAGHZwABh2gAAYdpAAGHawABh2wAAYerAAGHrQABh68AAYexAAGHtAABh7UAAYe2AAGHtwABh7gAAYe6AAGHvAABh70AAYe+AAGHwAABh8EAAYgAAAGIAgABiAQAAYgGAAGICQABiAoAAYgLAAGIDAABiA0AAYgPAAGIEQABiBIAAYgTAAGIFQABiBYAAYhVAAGIVwABiFoAAYhcAAGIXwABiGAAAYhhAAGIYgABiGMAAYhlAAGIZwABiGgAAYhpAAGIawABiGwAAYiAAAGIvwABiMEAAYjDAAGIxQABiMgAAYjJAAGIygABiMsAAYjMAAGIzgABiNAAAYjRAAGI0gABiNQAAYjVAAGI+gABiR4AAYlFAAGJaQABiWwAAYluAAGJcAABiXIAAYl0AAGJdgABiXcAAYl6AAGJhwABiZYAAYmYAAGJmgABiZwAAYmeAAGJoAABiaIAAYmkAAGJswABibYAAYm5AAGJvAABib8AAYnCAAGJxQABicgAAYnKAAGKCQABigsAAYoNAAGKDwABihIAAYoTAAGKFAABihUAAYoWAAGKGAABihoAAYobAAGKHAABih4AAYofAAGKXgABimAAAYpiAAGKZAABimcAAYpoAAGKaQABimoAAYprAAGKbQABim8AAYpwAAGKcQABinMAAYp0AAGKswABirUAAYq3AAGKuQABirwAAYq9AAGKvgABir8AAYrAAAGKwgABisQAAYrFAAGKxgABisgAAYrJAAGLCAABiwoAAYsMAAGLDgABixEAAYsSAAGLEwABixQAAYsVAAGLFwABixkAAYsaAAGLGwABix0AAYseAAGLXQABi18AAYthAAGLYwABi2YAAYtnAAGLaAABi2kAAYtqAAGLbAABi24AAYtvAAGLcAABi3IAAYtzAAGLsgABi7QAAYu2AAGLuAABi7sAAYu8AAGLvQABi74A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AZcVAAGXIgABlyMAAZckAAGXJgABl2UAAZdnAAGXaQABl2sAAZduAAGXbwABl3AAAZdxAAGXcgABl3QAAZd2AAGXdwABl3gAAZd6AAGXewABl7oAAZe8AAGXvgABl8AAAZfDAAGXxAABl8UAAZfGAAGXxwABl8kAAZfLAAGXzAABl80AAZfPAAGX0AABmA8AAZgRAAGYEwABmBUAAZgYAAGYGQABmBoAAZgbAAGYHAABmB4AAZggAAGYIQABmCIAAZgkAAGYJQABmGQAAZhmAAGYaQABmGsAAZhuAAGYbwABmHAAAZhxAAGYcgABmHQAAZh2AAGYdwABmHgAAZh6AAGYewABmI8AAZjOAAGY0AABmNIAAZjUAAGY1wABmNgAAZjZAAGY2gABmNsAAZjdAAGY3wABmOAAAZjhAAGY4wABmOQAAZkJAAGZLQABmVQAAZl4AAGZewABmX0AAZl/AAGZgQABmYMAAZmFAAGZhgABmYkAAZmWAAGZpQABmacAAZmpAAGZqwABma0AAZmvAAGZsQABmbMAAZnCAAGZxQABmcgAAZnLAAGZzgABmdEAAZnUAAGZ1wABmdkAAZoYAAGaGgABmhwAAZoeAAGaIQABmiIAAZojAAGaJAABmiUAAZonAAGaKQABmioAAZorAAGaLQABmi4AAZptAAGabwABmnEAAZpzAAGadgABmncAAZp4AAGaeQABmnoAAZp8AAGafgABmn8AAZqAAAGaggABmoMAAZrCAAGaxAABmsYAAZrIAAGaywABmswAAZrNAAGazgABms8AAZrRAAGa0wABmtQAAZrVAAGa1wABmtgAAZsXAAGbGQABmxsAAZsdAAGbIAABmyEAAZsiAAGbIwABmyQAAZsmAAGbKAABmykAAZsqAAGbLAABmy0AAZtsAAGbbgABm3AAAZtyAAGbdQABm3YAAZt3AAGbeAABm3kAAZt7AAGbfQABm34AAZt/AAGbgQABm4IAAZvBAAGbwwABm8UAAZvHAAGbygABm8sAAZvMAAGbzQABm84AAZvQAAGb0gABm9MAAZvUAAGb1gABm9cAAZwWAAGcGAABnBoAAZwcAAGcHwABnCAAAZwhAAGcIgABnCMAAZwlAAGcJwABnCgAAZwpAAGcKwABnCwAAZx3AAGcmgABnLoAAZzaAAGc3AABnN4AAZzgAAGc4gABnOUAAZzmAAGc5wABnOoAAZzrAAGc7QABnO4AAZzwAAGc8wABnPQAAZz1AAGc+AABnPkAAZz+AAGdCwABnRAAAZ0SAAGdFAABnRkAAZ0cAAGdHwABnSEAAZ1GAAGdagABnZEAAZ21AAGduAABnboAAZ28AAGdvgABncAAAZ3CAAGdwwABncYAAZ3TAAGd5AABneYAAZ3oAAGd6gABnewAAZ3uAAGd8AABnfIAAZ30AAGeBQABnggAAZ4LAAGeDgABnhEAAZ4UAAGeFwABnhoAAZ4dAAGeHwABnl4AAZ5gAAGeYgABnmQAAZ5nAAGeaAABnmkAAZ5qAAGeawABnm0AAZ5vAAGecAABnnEAAZ5zAAGedAABnrMAAZ61AAGetwABnrkAAZ68AAGevQABnr4AAZ6/AAGewAABnsIAAZ7EAAGexQABnsYAAZ7IAAGeyQABnwgAAZ8KAAGfDQABnw8AAZ8SAAGfEwABnxQAAZ8VAAGfFgABnxgAAZ8aAAGfGwABnxwAAZ8eAAGfHwABnywAAZ8tAAGfLgABnzAAAZ9vAAGfcQABn3MAAZ91AAGfeAABn3kAAZ96AAGfewABn3wAAZ9+AAGfgAABn4EAAZ+CAAGfhAABn4UAAZ/EAAGfxgABn8gAAZ/KAAGfzQABn84AAZ/PAAGf0AABn9EAAZ/TAAGf1QABn9YAAZ/XAAGf2QABn9oAAaAZAAGgGwABoB0AAaAfAAGgIgABoCMAAaAkAAGgJQABoCYAAaAoAAGgKgABoCsAAaAsAAGgLgABoC8AAaBuAAGgcAABoHIAAaB0AAGgdwABoHgAAaB5AAGgegABoHsAAaB9AAGgfwABoIAAAaCBAAGggwABoIQAAaDDAAGgxQABoMcAAaDJAAGgzAABoM0AAaDOAAGgzwABoNAAAaDSAAGg1AABoNUAAaDWAAGg2AABoNkAAaD+AAGhIgABoUkAAaFtAAGhcAABoXIAAaF0AAGhdgABoXgAAaF6AAGhewABoX4AAaGLAAGhmgABoZwAAaGeAAGhoAABoaIAAaGkAAGhpgABoagAAaG3AAGhugABob0AAaHAAAGhwwABocYAAaHJAAGhzAABoc4AAaINAAGiDwABohEAAaITAAGiFgABohcAAaIYAAGiGQABohoAAaIcAAGiHgABoh8AAaIgAAGiIgABoiMAAaJiAAGiZAABomYAAaJoAAGiawABomwAAaJtAAGibgABom8AAaJxAAGicwABonQAAaJ1AAGidwABongAAaK3AAGiuQABorsAAaK9AAGiwAABosEAAaLCAAGiwwABosQAAaLGAAGiyAABoskAAaLKAAGizAABos0AAaMMAAGjDgABoxAAAaMSAAGjFQABoxYAAaMXAAGjGAABoxkAAaMbAAGjHQABox4AAaMfAAGjIQABoyIAAaNhAAGjYwABo2UAAaNnAAGjagABo2sAAaNsAAGjbQABo24AAaNwAAGjcgABo3MAAaN0AAGjdgABo3cAAaO2AAGjuAABo7oAAaO8AAGjvwABo8AAAaPBAAGjwgABo8MAAaPFAAGjxwABo8gAAaPJAAGjywABo8wAAaQLAAGkDQABpA8AAaQRAAGkFAABpBUAAaQWAAGkFwABpBgAAaQaAAGkHAABpB0AAaQeAAGkIAABpCEAAaRsAAGkjwABpK8AAaTPAAGk0QABpNMAAaTVAAGk1wABpNoAAaTbAAGk3AABpN8AAaTgAAGk4gABpOMAAaTlAAGk6AABpOkAAaTqAAGk7QABpO4AAaTzAAGlAAABpQUAAaUHAAGlCQABpQ4AAaURAAGlFAABpRYAAaU7AAGlXwABpYYAAaWqAAGlrQABpa8AAaWxAAGlswABpbUAAaW3AAGluAABpbsAAaXIAAGl2QABpdsAAaXdAAGl3wABpeEAAaXjAAGl5QABpecAAaXpAAGl+gABpf0AAaYAAAGmAwABpgYAAaYJAAGmDAABpg8AAaYSAAGmFAABplMAAaZVAAGmVwABplkAAaZcAAGmXQABpl4AAaZfAAGmYAABpmIAAaZkAAGmZQABpmYAAaZoAAGmaQABpqgAAaaqAAGmrAABpq4AAaaxAAGmsgABprMAAaa0AAGmtQABprcAAaa5AAGmugABprsAAaa9AAGmvgABpv0AAab/AAGnAgABpwQAAacHAAGnCAABpwkAAacKAAGnCwABpw0AAacPAAGnEAABpxEAAacTAAGnFAABpyEAAaciAAGnIwABpyUAAadkAAGnZgABp2gAAadqAAGnbQABp24AAadvAAGncAABp3EAAadzAAGndQABp3YAAad3AAGneQABp3oAAae5AAGnuwABp70AAae/AAGnwgABp8MAAafEAAGnxQABp8YAAafIAAGnygABp8sAAafMAAGnzgABp88AAagOAAGoEAABqBIAAagUAAGoFwABqBgAAagZAAGoGgABqBsAAagdAAGoHwABqCAAAaghAAGoIwABqCQAAahjAAGoZQABqGcAAahpAAGobAABqG0AAahuAAGobwABqHAAAahyAAGodAABqHUAAah2AAGoeAABqHkAAai4AAGougABqLwAAai+AAGowQABqMIAAajDAAGoxAABqMUAAajHAAGoyQABqMoAAajLAAGozQABqM4AAajzAAGpFwABqT4AAaliAAGpZQABqWcAAalpAAGpawABqW0AAalvAAGpcAABqXMAAamAAAGpjwABqZEAAamTAAGplQABqZcAAamZAAGpmwABqZ0AAamsAAGprwABqbIAAam1AAGpuAABqbsAAam+AAGpwQABqcMAAaoCAAGqBAABqgYAAaoIAAGqCwABqgwAAaoNAAGqDgABqg8AAaoRAAGqEwABqhQAAaoVAAGqFwABqhgAAapXAAGqWQABqlsAAapdAAGqYAABqmEAAapiAAGqYwABqmQAAapmAAGqaAABqmkAAapqAAGqbAABqm0AAaqsAAGqrgABqrAAAaqyAAGqtQABqrYAAaq3AAGquAABqrkAAaq7AAGqvQABqr4AAaq/AAGqwQABqsIAAasBAAGrAwABqwUAAasHAAGrCgABqwsAAasMAAGrDQABqw4AAasQAAGrEgABqxMAAasUAAGrFgABqxcAAatWAAGrWAABq1oAAatcAAGrXwABq2AAAathAAGrYgABq2MAAatlAAGrZwABq2gAAatpAAGrawABq2wAAaurAAGrrQABq68AAauxAAGrtAABq7UAAau2AAGrtwABq7gAAau6AAGrvAABq70AAau+AAGrwAABq8EAAawAAAGsAgABrAQAAawGAAGsCQABrAoAAawLAAGsDAABrA0AAawPAAGsEQABrBIAAawTAAGsFQABrBYAAaxhAAGshAABrKQAAazEAAGsxgABrMgAAazKAAGszAABrM8AAazQAAGs0QABrNQAAazVAAGs1wABrNgAAazaAAGs3QABrN4AAazfAAGs4gABrOMAAazoAAGs9QABrPoAAaz8AAGs/gABrQMAAa0GAAGtCQABrQsAAa0wAAGtVAABrXsAAa2fAAGtogABraQAAa2mAAGtqAABraoAAa2sAAGtrQABrbAAAa29AAGtzgABrdAAAa3SAAGt1AABrdYAAa3YAAGt2gABrdwAAa3eAAGt7wABrfIAAa31AAGt+AABrfsAAa3+AAGuAQABrgQAAa4HAAGuCQABrkgAAa5KAAGuTAABrk4AAa5RAAGuUgABrlMAAa5UAAGuVQABrlcAAa5ZAAGuWgABrlsAAa5dAAGuXgABrp0AAa6fAAGuoQABrqMAAa6mAAGupwABrqgAAa6pAAGuqgABrqwAAa6uAAGurwABrrAAAa6yAAGuswABrvIAAa70AAGu9wABrvkAAa78AAGu/QABrv4AAa7/AAGvAAABrwIAAa8EAAGvBQABrwYAAa8IAAGvCQABrxYAAa8XAAGvGAABrxoAAa9ZAAGvWwABr10AAa9fAAGvYgABr2MAAa9kAAGvZQABr2YAAa9oAAGvagABr2sAAa9sAAGvbgABr28AAa+uAAGvsAABr7IAAa+0AAGvtwABr7gAAa+5AAGvugABr7sAAa+9AAGvvwABr8AAAa/BAAGvwwABr8QAAbADAAGwBQABsAcAAbAJAAGwDAABsA0AAbAOAAGwDwABsBAAAbASAAGwFAABsBUAAbAWAAGwGAABsBkAAbBYAAGwWgABsFwAAbBeAAGwYQABsGIAAbBjAAGwZAABsGUAAbBnAAGwaQABsGoAAbBrAAGwbQABsG4AAbCtAAGwrwABsLEAAbCzAAGwtgABsLcAAbC4AAGwuQABsLoAAbC8AAGwvgABsL8AAbDAAAGwwgABsMMAAbDoAAGxDAABsTMAAbFXAAGxWgABsVwAAbFeAAGxYAABsWIAAbFkAAGxZQABsWgAAbF1AAGxhAABsYYAAbGIAAGxigABsYwAAbGOAAGxkAABsZIAAbGhAAGxpAABsacAAbGqAAGxrQABsbAAAbGzAAGxtgABsbgAAbH3AAGx+QABsfsAAbH9AAGyAAABsgEAAbICAAGyAwABsgQAAbIGAAGyCAABsgkAAbIKAAGyDAABsg0AAbJMAAGyTgABslAAAbJSAAGyVQABslYAAbJXAAGyWAABslkAAbJbAAGyXQABsl4AAbJfAAGyYQABsmIAAbKhAAGyowABsqUAAbKnAAGyqgABsqsAAbKsAAGyrQABsq4AAbKwAAGysgABsrMAAbK0AAGytgABsrcAAbL2AAGy+AABsvsAAbL9AAGzAAABswEAAbMCAAGzAwABswQAAbMGAAGzCAABswkAAbMKAAGzDAABsw0AAbNMAAGzTgABs1AAAbNSAAGzVQABs1YAAbNXAAGzWAABs1kAAbNbAAGzXQABs14AAbNfAAGzYQABs2IAAbOhAAGzowABs6UAAbOnAAGzqgABs6sAAbOsAAGzrQABs64AAbOwAAGzsgABs7MAAbO0AAGztgABs7cAAbP2AAGz+AABs/sAAbP9AAG0AAABtAEAAbQCAAG0AwABtAQAAbQGAAG0CAABtAkAAbQKAAG0DAABtA0AAbRYAAG0ewABtJsAAbS7AAG0vQABtL8AAbTBAAG0wwABtMYAAbTHAAG0yAABtMsAAbTMAAG0zgABtM8AAbTRAAG01AABtNUAAbTWAAG02QABtNoAAbTjAAG08AABtPUAAbT3AAG0+QABtP4AAbUBAAG1BAABtQYAAbUrAAG1TwABtXYAAbWaAAG1nQABtZ8AAbWhAAG1owABtaUAAbWnAAG1qAABtasAAbW4AAG1yQABtcsAAbXNAAG1zwABtdEAAbXTAAG11QABtdcAAbXZAAG16gABte0AAbXwAAG18wABtfYAAbX5AAG1/AABtf8AAbYCAAG2BAABtkMAAbZFAAG2RwABtkkAAbZMAAG2TQABtk4AAbZPAAG2UAABtlIAAbZUAAG2VQABtlYAAbZYAAG2WQABtpgAAbaaAAG2nAABtp4AAbahAAG2ogABtqMAAbakAAG2pQABtqcAAbapAAG2qgABtqsAAbatAAG2rgABtu0AAbbvAAG28gABtvQAAbb3AAG2+AABtvkAAbb6AAG2+wABtv0AAbb/AAG3AAABtwEAAbcDAAG3BAABtxEAAbcSAAG3EwABtxUAAbdUAAG3VgABt1gAAbdaAAG3XQABt14AAbdfAAG3YAABt2EAAbdjAAG3ZQABt2YAAbdnAAG3aQABt2oAAbepAAG3qwABt60AAbevAAG3sgABt7MAAbe0AAG3tQABt7YAAbe4AAG3ugABt7sAAbe8AAG3vgABt78AAbf+AAG4AAABuAIAAbgEAAG4BwABuAgAAbgJAAG4CgABuAsAAbgNAAG4DwABuBAAAbgRAAG4EwABuBQAAbhTAAG4VQABuFcAAbhZAAG4XAABuF0AAbheAAG4XwABuGAAAbhiAAG4ZAABuGUAAbhmAAG4aAABuGkAAbioAAG4qgABuKwAAbiuAAG4sQABuLIAAbizAAG4tAABuLUAAbi3AAG4uQABuLoAAbi7AAG4vQABuL4AAbjjAAG5BwABuS4AAblSAAG5VQABuVcAAblZAAG5WwABuV0AAblfAAG5YAABuWMAAblwAAG5fwABuYEAAbmDAAG5hQABuYcAAbmJAAG5iwABuY0AAbmcAAG5nwABuaIAAbmlAAG5qAABuasAAbmuAAG5sQABubMAAbnyAAG59AABufYAAbn4AAG5+wABufwAAbn9AAG5/gABuf8AAboBAAG6AwABugQAAboFAAG6BwABuggAAbpHAAG6SQABuksAAbpNAAG6UAABulEAAbpSAAG6UwABulQAAbpWAAG6WAABulkAAbpaAAG6XAABul0AAbqcAAG6ngABuqAAAbqiAAG6pQABuqYAAbqnAAG6qAABuqkAAbqrAAG6rQABuq4AAbqvAAG6sQABurIAAbrxAAG68wABuvYAAbr4AAG6+wABuvwAAbr9AAG6/gABuv8AAbsBAAG7AwABuwQAAbsFAAG7BwABuwgAAbtHAAG7SQABu0sAAbtNAAG7UAABu1EAAbtSAAG7UwABu1QAAbtWAAG7WAABu1kAAbtaAAG7XAABu10AAbucAAG7ngABu6AAAbuiAAG7pQABu6YAAbunAAG7qAABu6kAAburAAG7rQABu64AAbuvAAG7sQABu7IAAbvxAAG78wABu/YAAbv4AAG7+wABu/wAAbv9AAG7/gABu/8AAbwBAAG8AwABvAQAAbwFAAG8BwABvAgAAbxTAAG8dgABvJYAAby2AAG8uAABvLoAAby8AAG8vgABvMEAAbzCAAG8wwABvMYAAbzHAAG8yQABvMoAAbzMAAG8zwABvNAAAbzRAAG81AABvNUAAbzeAAG86wABvPAAAbzyAAG89AABvPkAAbz8AAG8/wABvQEAAb0mAAG9SgABvXEAAb2VAAG9mAABvZoAAb2cAAG9ngABvaAAAb2iAAG9owABvaYAAb2zAAG9xAABvcYAAb3IAAG9ygABvcwAAb3OAAG90AABvdIAAb3UAAG95QABvegAAb3rAAG97gABvfEAAb30AAG99wABvfoAAb39AAG9/wABvj4AAb5AAAG+QgABvkQAAb5HAAG+SAABvkkAAb5KAAG+SwABvk0AAb5PAAG+UAABvlEAAb5TAAG+VAABvpMAAb6VAAG+lwABvpkAAb6cAAG+nQABvp4AAb6fAAG+oAABvqIAAb6kAAG+pQABvqYAAb6oAAG+qQABvugAAb7qAAG+7QABvu8AAb7yAAG+8wABvvQAAb71AAG+9gABvvgAAb76AAG++wABvvwAAb7+AAG+/wABvwwAAb8NAAG/DgABvxAAAb9PAAG/UQABv1MAAb9VAAG/WAABv1kAAb9aAAG/WwABv1wAAb9eAAG/YAABv2EAAb9iAAG/ZAABv2UAAb+kAAG/pgABv6gAAb+qAAG/rQABv64AAb+vAAG/sAABv7EAAb+zAAG/tQABv7YAAb+3AAG/uQABv7oAAb/5AAG/+wABv/0AAb//AAHAAgABwAMAAcAEAAHABQABwAYAAcAIAAHACgABwAsAAcAMAAHADgABwA8AAcBOAAHAUAABwFMAAcBVAAHAWAABwFkAAcBaAAHAWwABwFwAAcBeAAHAYAABwGEAAcBiAAHAZAABwGUAAcBzAAHAsgABwLQAAcC2AAHAuAABwLsAAcC8AAHAvQABwL4AAcC/AAHAwQABwMMAAcDEAAHAxQABwMcAAcDIAAHA7QABwREAAcE4AAHBXAABwV8AAcFhAAHBYwABwWUAAcFnAAHBaQABwWoAAcFtAAHBegABwYkAAcGLAAHBjQABwY8AAcGRAAHBkwABwZUAAcGXAAHBpgABwakAAcGsAAHBrwABwbIAAcG1AAHBuAABwbsAAcG9AAHB/AABwf4AAcIAAAHCAgABwgUAAcIGAAHCBwABwggAAcIJAAHCCwABwg0AAcIOAAHCDwABwhEAAcISAAHCUQABwlMAAcJVAAHCVwABwloAAcJbAAHCXAABwl0AAcJeAAHCYAABwmIAAcJjAAHCZAABwmYAAcJnAAHCpgABwqgAAcKqAAHCrAABwq8AAcKwAAHCsQABwrIAAcKzAAHCtQABwrcAAcK4AAHCuQABwrsAAcK8AAHC+wABwv0AAcL/AAHDAQABwwQAAcMFAAHDBgABwwcAAcMIAAHDCgABwwwAAcMNAAHDDgABwxAAAcMRAAHDUAABw1IAAcNUAAHDVgABw1kAAcNaAAHDWwABw1wAAcNdAAHDXwABw2EAAcNiAAHDYwABw2UAAcNmAAHDpQABw6cAAcOpAAHDqwABw64AAcOvAAHDsAABw7EAAcOyAAHDtAABw7YAAcO3AAHDuAABw7oAAcO7AAHD+gABw/wAAcP+AAHEAAABxAMAAcQEAAHEBQABxAYAAcQHAAHECQABxAsAAcQMAAHEDQABxA8AAcQQAAHEWwABxH4AAcSeAAHEvgABxMAAAcTCAAHExAABxMYAAcTJAAHEygABxMsAAcTOAAHEzwABxNEAAcTSAAHE1AABxNcAAcTYAAHE2QABxNwAAcTdAAHE4gABxO8AAcT0AAHE9gABxPgAAcT9AAHFAAABxQMAAcUFAAHFKgABxU4AAcV1AAHFmQABxZwAAcWeAAHFoAABxaIAAcWkAAHFpgABxacAAcWqAAHFtwABxcgAAcXKAAHFzAABxc4AAcXQAAHF0gABxdQAAcXWAAHF2AABxekAAcXsAAHF7wABxfIAAcX1AAHF+AABxfsAAcX+AAHGAQABxgMAAcZCAAHGRAABxkYAAcZIAAHGSwABxkwAAcZNAAHGTgABxk8AAcZRAAHGUwABxlQAAcZVAAHGVwABxlgAAcaXAAHGmQABxpsAAcadAAHGoAABxqEAAcaiAAHGowABxqQAAcamAAHGqAABxqkAAcaqAAHGrAABxq0AAcbsAAHG7gABxvEAAcbzAAHG9gABxvcAAcb4AAHG+QABxvoAAcb8AAHG/gABxv8AAccAAAHHAgABxwMAAccQAAHHEQABxxIAAccUAAHHUwABx1UAAcdXAAHHWQABx1wAAcddAAHHXgABx18AAcdgAAHHYgABx2QAAcdlAAHHZgABx2gAAcdpAAHHqAABx6oAAcesAAHHrgABx7EAAceyAAHHswABx7QAAce1AAHHtwABx7kAAce6AAHHuwABx70AAce+AAHH/QABx/8AAcgBAAHIAwAByAYAAcgHAAHICAAByAkAAcgKAAHIDAAByA4AAcgPAAHIEAAByBIAAcgTAAHIUgAByFQAAchWAAHIWAAByFsAAchcAAHIXQAByF4AAchfAAHIYQAByGMAAchkAAHIZQAByGcAAchoAAHIpwAByKkAAcirAAHIrQAByLAAAcixAAHIsgAByLMAAci0AAHItgAByLgAAci5AAHIugAByLwAAci9AAHI4gAByQYAAcktAAHJUQAByVQAAclWAAHJWAAByVoAAclcAAHJXgAByV8AAcliAAHJbwAByX4AAcmAAAHJggAByYQAAcmGAAHJiAAByYoAAcmMAAHJmwAByZ4AAcmhAAHJpAAByacAAcmqAAHJrQABybAAAcmyAAHJ8QAByfMAAcn1AAHJ9wAByfoAAcn7AAHJ/AAByf0AAcn+AAHKAAABygIAAcoDAAHKBAABygYAAcoHAAHKRgABykgAAcpKAAHKTAAByk8AAcpQAAHKUQABylIAAcpTAAHKVQABylcAAcpYAAHKWQABylsAAcpcAAHKmwAByp0AAcqfAAHKoQAByqQAAcqlAAHKpgAByqcAAcqoAAHKqgAByqwAAcqtAAHKrgAByrAAAcqxAAHK8AAByvIAAcr0AAHK9gAByvkAAcr6AAHK+wAByvwAAcr9AAHK/wABywEAAcsCAAHLAwABywUAAcsGAAHLRQABy0cAActJAAHLSwABy04AActPAAHLUAABy1EAActSAAHLVAABy1YAActXAAHLWAABy1oAActbAAHLmgABy5wAAcueAAHLoAABy6MAAcukAAHLpQABy6YAAcunAAHLqQABy6sAAcusAAHLrQABy68AAcuwAAHL7wABy/EAAcvzAAHL9QABy/gAAcv5AAHL+gABy/sAAcv8AAHL/gABzAAAAcwBAAHMAgABzAQAAcwFAAHMUAABzHMAAcyTAAHMswABzLUAAcy3AAHMuQABzLsAAcy+AAHMvwABzMAAAczDAAHMxAABzMYAAczHAAHMyQABzMwAAczNAAHMzgABzNEAAczSAAHM1wABzOQAAczpAAHM6wABzO0AAczyAAHM9QABzPgAAcz6AAHNHwABzUMAAc1qAAHNjgABzZEAAc2TAAHNlQABzZcAAc2ZAAHNmwABzZwAAc2fAAHNrAABzb0AAc2/AAHNwQABzcMAAc3FAAHNxwABzckAAc3LAAHNzQABzd4AAc3hAAHN5AABzecAAc3qAAHN7QABzfAAAc3zAAHN9gABzfgAAc43AAHOOQABzjsAAc49AAHOQAABzkEAAc5CAAHOQwABzkQAAc5GAAHOSAABzkkAAc5KAAHOTAABzk0AAc6MAAHOjgABzpAAAc6SAAHOlQABzpYAAc6XAAHOmAABzpkAAc6bAAHOnQABzp4AAc6fAAHOoQABzqIAAc7hAAHO4wABzuYAAc7oAAHO6wABzuwAAc7tAAHO7gABzu8AAc7xAAHO8wABzvQAAc71AAHO9wABzvgAAc8FAAHPBgABzwcAAc8JAAHPSAABz0oAAc9MAAHPTgABz1EAAc9SAAHPUwABz1QAAc9VAAHPVwABz1kAAc9aAAHPWwABz10AAc9eAAHPnQABz58AAc+hAAHPowABz6YAAc+nAAHPqAABz6kAAc+qAAHPrAABz64AAc+vAAHPsAABz7IAAc+zAAHP8gABz/QAAc/2AAHP+AABz/sAAc/8AAHP/QABz/4AAc//AAHQAQAB0AMAAdAEAAHQBQAB0AcAAdAIAAHQRwAB0EkAAdBLAAHQTQAB0FAAAdBRAAHQUgAB0FMAAdBUAAHQVgAB0FgAAdBZAAHQWgAB0FwAAdBdAAHQnAAB0J4AAdCgAAHQogAB0KUAAdCmAAHQpwAB0KgAAdCpAAHQqwAB0K0AAdCuAAHQrwAB0LEAAdCyAAHQ1wAB0PsAAdEiAAHRRgAB0UkAAdFLAAHRTQAB0U8AAdFRAAHRUwAB0VQAAdFXAAHRZAAB0XMAAdF1AAHRdwAB0XkAAdF7AAHRfQAB0X8AAdGBAAHRkAAB0ZMAAdGWAAHRmQAB0ZwAAdGfAAHRogAB0aUAAdGnAAHR5gAB0egAAdHqAAHR7AAB0e8AAdHwAAHR8QAB0fIAAdHzAAHR9QAB0fcAAdH4AAHR+QAB0fsAAdH8AAHSOwAB0j0AAdI/AAHSQQAB0kQAAdJFAAHSRgAB0kcAAdJIAAHSSgAB0kwAAdJNAAHSTgAB0lAAAdJRAAHSkAAB0pIAAdKUAAHSlgAB0pkAAdKaAAHSmwAB0pwAAdKdAAHSnwAB0qEAAdKiAAHSowAB0qUAAdKmAAHS5QAB0ucAAdLpAAHS6wAB0u4AAdLvAAHS8AAB0vEAAdLyAAHS9AAB0vYAAdL3AAHS+AAB0voAAdL7AAHTOgAB0zwAAdM+AAHTQAAB00MAAdNEAAHTRQAB00YAAdNHAAHTSQAB00sAAdNMAAHTTQAB008AAdNQAAHTjwAB05EAAdOTAAHTlQAB05gAAdOZAAHTmgAB05sAAdOcAAHTngAB06AAAdOhAAHTogAB06QAAdOlAAHT5AAB0+YAAdPoAAHT6gAB0+0AAdPuAAHT7wAB0/AAAdPxAAHT8wAB0/UAAdP2AAHT9wAB0/kAAdP6AAHUAwAB1AQAAdQGAAHURQAB1EcAAdRJAAHUSwAB1E4AAdRPAAHUUAAB1FEAAdRSAAHUVAAB1FYAAdRXAAHUWAAB1FoAAdRbAAHUmgAB1JwAAdSeAAHUoAAB1KMAAdSkAAHUpQAB1KYAAdSnAAHUqQAB1KsAAdSsAAHUrQAB1K8AAdSwAAHU7wAB1PEAAdT0AAHU9gAB1PkAAdT6AAHU+wAB1PwAAdT9AAHU/wAB1QEAAdUCAAHVAwAB1QUAAdUGAAHVDwAB1RAAAdUSAAHVUQAB1VMAAdVVAAHVVwAB1VoAAdVbAAHVXAAB1V0AAdVeAAHVYAAB1WIAAdVjAAHVZAAB1WYAAdVnAAHVpgAB1agAAdWqAAHVrAAB1a8AAdWwAAHVsQAB1bIAAdWzAAHVtQAB1bcAAdW4AAHVuQAB1bsAAdW8AAHV+wAB1f0AAdYAAAHWAgAB1gUAAdYGAAHWBwAB1ggAAdYJAAHWCwAB1g0AAdYOAAHWDwAB1hEAAdYSAAHWXQAB1oAAAdagAAHWwAAB1sIAAdbEAAHWxgAB1sgAAdbKAAHWywAB1swAAdbPAAHW0AAB1tIAAdbTAAHW1QAB1tcAAdbYAAHW2QAB1twAAdbdAAHW4gAB1u8AAdb0AAHW9gAB1vgAAdb9AAHXAAAB1wMAAdcFAAHXKgAB104AAdd1AAHXmQAB15wAAdeeAAHXoAAB16IAAdekAAHXpgAB16cAAdeqAAHXtwAB18gAAdfKAAHXzAAB184AAdfQAAHX0gAB19QAAdfWAAHX2AAB1+kAAdfsAAHX7wAB1/IAAdf1AAHX+AAB1/sAAdf+AAHYAQAB2AMAAdhCAAHYRAAB2EYAAdhIAAHYSwAB2EwAAdhNAAHYTgAB2E8AAdhRAAHYUwAB2FQAAdhVAAHYVwAB2FgAAdiXAAHYmQAB2JsAAdidAAHYoAAB2KEAAdiiAAHYowAB2KQAAdimAAHYqAAB2KkAAdiqAAHYrAAB2K0AAdjsAAHY7gAB2PEAAdjzAAHY9gAB2PcAAdj4AAHY+QAB2PoAAdj8AAHY/gAB2P8AAdkAAAHZAgAB2QMAAdkQAAHZEQAB2RIAAdkUAAHZUwAB2VUAAdlXAAHZWQAB2VwAAdldAAHZXgAB2V8AAdlgAAHZYgAB2WQAAdllAAHZZgAB2WgAAdlpAAHZqAAB2aoAAdmsAAHZrgAB2bEAAdmyAAHZswAB2bQAAdm1AAHZtwAB2bkAAdm6AAHZuwAB2b0AAdm+AAHZ/QAB2f8AAdoBAAHaAwAB2gYAAdoHAAHaCAAB2gkAAdoKAAHaDAAB2g4AAdoPAAHaEAAB2hIAAdoTAAHaUgAB2lQAAdpWAAHaWAAB2lsAAdpcAAHaXQAB2l4AAdpfAAHaYQAB2mMAAdpkAAHaZQAB2mcAAdpoAAHapwAB2qkAAdqrAAHarQAB2rAAAdqxAAHasgAB2rMAAdq0AAHatgAB2rgAAdq5AAHaugAB2rwAAdq9AAHa4gAB2wYAAdstAAHbUQAB21QAAdtWAAHbWAAB21oAAdtcAAHbXgAB218AAdtiAAHbbwAB234AAduAAAHbggAB24QAAduGAAHbiAAB24oAAduMAAHbmwAB254AAduhAAHbpAAB26cAAduqAAHbrQAB27AAAduyAAHb8QAB2/MAAdv1AAHb9wAB2/oAAdv7AAHb/AAB2/0AAdv+AAHcAAAB3AIAAdwDAAHcBAAB3AYAAdwHAAHcRgAB3EgAAdxKAAHcTAAB3E8AAdxQAAHcUQAB3FIAAdxTAAHcVQAB3FcAAdxYAAHcWQAB3FsAAdxcAAHcmwAB3J0AAdyfAAHcoQAB3KQAAdylAAHcpgAB3KcAAdyoAAHcqgAB3KwAAdytAAHcrgAB3LAAAdyxAAHc8AAB3PIAAdz1AAHc9wAB3PoAAdz7AAHc/AAB3P0AAdz+AAHdAAAB3QIAAd0DAAHdBAAB3QYAAd0HAAHdRgAB3UgAAd1KAAHdTAAB3U8AAd1QAAHdUQAB3VIAAd1TAAHdVQAB3VcAAd1YAAHdWQAB3VsAAd1cAAHdmwAB3Z0AAd2fAAHdoQAB3aQAAd2lAAHdpgAB3acAAd2oAAHdqgAB3awAAd2tAAHdrgAB3bAAAd2xAAHd8AAB3fIAAd30AAHd9gAB3fkAAd36AAHd+wAB3fwAAd39AAHd/wAB3gEAAd4CAAHeAwAB3gUAAd4GAAHeUQAB3nQAAd6UAAHetAAB3rYAAd64AAHeugAB3rwAAd6+AAHevwAB3sAAAd7DAAHexAAB3sYAAd7HAAHeyQAB3ssAAd7MAAHezQAB3tAAAd7RAAHe1gAB3uMAAd7oAAHe6gAB3uwAAd7xAAHe9AAB3vcAAd75AAHfHgAB30IAAd9pAAHfjQAB35AAAd+SAAHflAAB35YAAd+YAAHfmgAB35sAAd+eAAHfqwAB37wAAd++AAHfwAAB38IAAd/EAAHfxgAB38gAAd/KAAHfzAAB390AAd/gAAHf4wAB3+YAAd/pAAHf7AAB3+8AAd/yAAHf9QAB3/cAAeA2AAHgOAAB4DoAAeA8AAHgPwAB4EAAAeBBAAHgQgAB4EMAAeBFAAHgRwAB4EgAAeBJAAHgSwAB4EwAAeCLAAHgjQAB4I8AAeCRAAHglAAB4JUAAeCWAAHglwAB4JgAAeCaAAHgnAAB4J0AAeCeAAHgoAAB4KEAAeDgAAHg4gAB4OUAAeDnAAHg6gAB4OsAAeDsAAHg7QAB4O4AAeDwAAHg8gAB4PMAAeD0AAHg9gAB4PcAAeEEAAHhBQAB4QYAAeEIAAHhRwAB4UkAAeFLAAHhTQAB4VAAAeFRAAHhUgAB4VMAAeFUAAHhVgAB4VgAAeFZAAHhWgAB4VwAAeFdAAHhnAAB4Z4AAeGgAAHhogAB4aUAAeGmAAHhpwAB4agAAeGpAAHhqwAB4a0AAeGuAAHhrwAB4bEAAeGyAAHh8QAB4fMAAeH1AAHh9wAB4foAAeH7AAHh/AAB4f0AAeH+AAHiAAAB4gIAAeIDAAHiBAAB4gYAAeIHAAHiRgAB4kgAAeJKAAHiTAAB4k8AAeJQAAHiUQAB4lIAAeJTAAHiVQAB4lcAAeJYAAHiWQAB4lsAAeJcAAHimwAB4p0AAeKfAAHioQAB4qQAAeKlAAHipgAB4qcAAeKoAAHiqgAB4qwAAeKtAAHirgAB4rAAAeKxAAHi1gAB4voAAeMhAAHjRQAB40gAAeNKAAHjTAAB404AAeNQAAHjUgAB41MAAeNWAAHjYwAB43IAAeN0AAHjdgAB43gAAeN6AAHjfAAB434AAeOAAAHjjwAB45IAAeOVAAHjmAAB45sAAeOeAAHjoQAB46QAAeOmAAHj5QAB4+cAAePqAAHj7AAB4+8AAePwAAHj8QAB4/IAAePzAAHj9QAB4/cAAeP4AAHj+QAB4/sAAeP8AAHkOwAB5D0AAeQ/AAHkQQAB5EQAAeRFAAHkRgAB5EcAAeRIAAHkSgAB5EwAAeRNAAHkTgAB5FAAAeRRAAHkkAAB5JIAAeSUAAHklgAB5JkAAeSaAAHkmwAB5JwAAeSdAAHknwAB5KEAAeSiAAHkowAB5KUAAeSmAAHk5QAB5OcAAeTqAAHk7AAB5O8AAeTwAAHk8QAB5PIAAeTzAAHk9QAB5PcAAeT4AAHk+QAB5PsAAeT8AAHlOwAB5T0AAeU/AAHlQQAB5UQAAeVFAAHlRgAB5UcAAeVIAAHlSgAB5UwAAeVNAAHlTgAB5VAAAeVRAAHlkAAB5ZIAAeWUAAHllgAB5ZkAAeWaAAHlmwAB5ZwAAeWdAAHlnwAB5aEAAeWiAAHlowAB5aUAAeWmAAHl5QAB5ecAAeXpAAHl6wAB5e4AAeXvAAHl8AAB5fEAAeXyAAHl9AAB5fYAAeX3AAHl+AAB5foAAeX7AAHmRgAB5mkAAeaJAAHmqQAB5qsAAeatAAHmrwAB5rEAAeazAAHmtAAB5rUAAea4AAHmuQAB5rsAAea8AAHmvgAB5sAAAebBAAHmwgAB5sUAAebGAAHmywAB5tgAAebdAAHm3wAB5uEAAebmAAHm6QAB5uwAAebuAAHnEwAB5zcAAedeAAHnggAB54UAAeeHAAHniQAB54sAAeeNAAHnjwAB55AAAeeTAAHnoAAB57EAAeezAAHntQAB57cAAee5AAHnuwAB570AAee/AAHnwQAB59IAAefVAAHn2AAB59sAAefeAAHn4QAB5+QAAefnAAHn6gAB5+wAAegrAAHoLQAB6C8AAegxAAHoNAAB6DUAAeg2AAHoNwAB6DgAAeg6AAHoPAAB6D0AAeg+AAHoQAAB6EEAAeiAAAHoggAB6IQAAeiGAAHoiQAB6IoAAeiLAAHojAAB6I0AAeiPAAHokQAB6JIAAeiTAAHolQAB6JYAAejVAAHo1wAB6NoAAejcAAHo3wAB6OAAAejhAAHo4gAB6OMAAejlAAHo5wAB6OgAAejpAAHo6wAB6OwAAej5AAHo+gAB6PsAAej9AAHpPAAB6T4AAelAAAHpQgAB6UUAAelGAAHpRwAB6UgAAelJAAHpSwAB6U0AAelOAAHpTwAB6VEAAelSAAHpkQAB6ZMAAemVAAHplwAB6ZoAAembAAHpnAAB6Z0AAemeAAHpoAAB6aIAAemjAAHppAAB6aYAAemnAAHp5gAB6egAAenqAAHp7AAB6e8AAenwAAHp8QAB6fIAAenzAAHp9QAB6fcAAen4AAHp+QAB6fsAAen8AAHqOwAB6j0AAeo/AAHqQQAB6kQAAepFAAHqRgAB6kcAAepIAAHqSgAB6kwAAepNAAHqTgAB6lAAAepRAAHqkAAB6pIAAeqUAAHqlgAB6pkAAeqaAAHqmwAB6pwAAeqdAAHqnwAB6qEAAeqiAAHqowAB6qUAAeqmAAHqywAB6u8AAesWAAHrOgAB6z0AAes/AAHrQQAB60MAAetFAAHrRwAB60gAAetLAAHrWAAB62cAAetpAAHrawAB620AAetvAAHrcQAB63MAAet1AAHrhAAB64cAAeuKAAHrjQAB65AAAeuTAAHrlgAB65kAAeubAAHr2gAB69wAAeveAAHr4AAB6+MAAevkAAHr5QAB6+YAAevnAAHr6QAB6+sAAevsAAHr7QAB6+8AAevwAAHsLwAB7DEAAewzAAHsNQAB7DgAAew5AAHsOgAB7DsAAew8AAHsPgAB7EAAAexBAAHsQgAB7EQAAexFAAHshAAB7IYAAeyIAAHsigAB7I0AAeyOAAHsjwAB7JAAAeyRAAHskwAB7JUAAeyWAAHslwAB7JkAAeyaAAHs2QAB7NsAAezdAAHs3wAB7OIAAezjAAHs5AAB7OUAAezmAAHs6AAB7OoAAezrAAHs7AAB7O4AAezvAAHtLgAB7TAAAe0yAAHtNAAB7TcAAe04AAHtOQAB7ToAAe07AAHtPQAB7T8AAe1AAAHtQQAB7UMAAe1EAAHtgwAB7YUAAe2HAAHtiQAB7YwAAe2NAAHtjgAB7Y8AAe2QAAHtkgAB7ZQAAe2VAAHtlgAB7ZgAAe2ZAAHt2AAB7doAAe3cAAHt3gAB7eEAAe3iAAHt4wAB7eQAAe3lAAHt5wAB7ekAAe3qAAHt6wAB7e0AAe3uAAHuOQAB7lwAAe58AAHunAAB7p4AAe6gAAHuogAB7qQAAe6mAAHupwAB7qgAAe6rAAHurAAB7q4AAe6vAAHusQAB7rMAAe60AAHutQAB7rgAAe65AAHuvgAB7ssAAe7QAAHu0gAB7tQAAe7ZAAHu3AAB7t8AAe7hAAHvBgAB7yoAAe9RAAHvdQAB73gAAe96AAHvfAAB734AAe+AAAHvggAB74MAAe+GAAHvkwAB76QAAe+mAAHvqAAB76oAAe+sAAHvrgAB77AAAe+yAAHvtAAB78UAAe/IAAHvywAB784AAe/RAAHv1AAB79cAAe/aAAHv3QAB798AAfAeAAHwIAAB8CIAAfAkAAHwJwAB8CgAAfApAAHwKgAB8CsAAfAtAAHwLwAB8DAAAfAxAAHwMwAB8DQAAfBzAAHwdQAB8HcAAfB5AAHwfAAB8H0AAfB+AAHwfwAB8IAAAfCCAAHwhAAB8IUAAfCGAAHwiAAB8IkAAfDIAAHwygAB8M0AAfDPAAHw0gAB8NMAAfDUAAHw1QAB8NYAAfDYAAHw2gAB8NsAAfDcAAHw3gAB8N8AAfDsAAHw7QAB8O4AAfDwAAHxLwAB8TEAAfEzAAHxNQAB8TgAAfE5AAHxOgAB8TsAAfE8AAHxPgAB8UAAAfFBAAHxQgAB8UQAAfFFAAHxhAAB8YYAAfGIAAHxigAB8Y0AAfGOAAHxjwAB8ZAAAfGRAAHxkwAB8ZUAAfGWAAHxlwAB8ZkAAfGaAAHx2QAB8dsAAfHdAAHx3wAB8eIAAfHjAAHx5AAB8eUAAfHmAAHx6AAB8eoAAfHrAAHx7AAB8e4AAfHvAAHyLgAB8jAAAfIyAAHyNAAB8jcAAfI4AAHyOQAB8joAAfI7AAHyPQAB8j8AAfJAAAHyQQAB8kMAAfJEAAHygwAB8oUAAfKHAAHyiQAB8owAAfKNAAHyjgAB8o8AAfKQAAHykgAB8pQAAfKVAAHylgAB8pgAAfKZAAHyvgAB8uIAAfMJAAHzLQAB8zAAAfMyAAHzNAAB8zYAAfM4AAHzOgAB8zsAAfM+AAHzSwAB81oAAfNcAAHzXgAB82AAAfNiAAHzZAAB82YAAfNoAAHzdwAB83oAAfN9AAHzgAAB84MAAfOGAAHziQAB84wAAfOOAAHzzQAB888AAfPRAAHz0wAB89YAAfPXAAHz2AAB89kAAfPaAAHz3AAB894AAfPfAAHz4AAB8+IAAfPjAAH0IgAB9CQAAfQmAAH0KAAB9CsAAfQsAAH0LQAB9C4AAfQvAAH0MQAB9DMAAfQ0AAH0NQAB9DcAAfQ4AAH0dwAB9HkAAfR7AAH0fQAB9IAAAfSBAAH0ggAB9IMAAfSEAAH0hgAB9IgAAfSJAAH0igAB9IwAAfSNAAH0zAAB9M4AAfTRAAH00wAB9NYAAfTXAAH02AAB9NkAAfTaAAH03AAB9N4AAfTfAAH04AAB9OIAAfTjAAH1IgAB9SQAAfUmAAH1KAAB9SsAAfUsAAH1LQAB9S4AAfUvAAH1MQAB9TMAAfU0AAH1NQAB9TcAAfU4AAH1dwAB9XkAAfV7AAH1fQAB9YAAAfWBAAH1ggAB9YMAAfWEAAH1hgAB9YgA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AgDcAAIA3QACAN8AAgEeAAIBIAACASIAAgEkAAIBJwACASgAAgEpAAIBKgACASsAAgEtAAIBLwACATAAAgExAAIBMwACATQAAgFzAAIBdQACAXcAAgF5AAIBfAACAX0AAgF+AAIBfwACAYAAAgGCAAIBhAACAYUAAgGGAAIBiAACAYkAAgHIAAIBygACAcwAAgHOAAIB0QACAdIAAgHTAAIB1AACAdUAAgHXAAIB2QACAdoAAgHbAAIB3QACAd4AAgIdAAICHwACAiEAAgIjAAICJgACAicAAgIoAAICKQACAioAAgIsAAICLgACAi8AAgIwAAICMgACAjMAAgJyAAICdAACAnYAAgJ4AAICewACAnwAAgJ9AAICfgACAn8AAgKBAAICgwACAoQAAgKFAAIChwACAogAAgKtAAIC0QACAvgAAgMcAAIDHwACAyEAAgMjAAIDJQACAycAAgMpAAIDKgACAy0AAgM6AAIDSQACA0sAAgNNAAIDTwACA1EAAgNTAAIDVQACA1cAAgNmAAIDaQACA2wAAgNvAAIDcgACA3UAAgN4AAIDewACA30AAgO8AAIDvgACA8AAAgPCAAIDxQACA8YAAgPHAAIDyAACA8kAAgPLAAIDzQACA84AAgPPAAID0QACA9IAAgQRAAIEEwACBBUAAgQXAAIEGgACBBsAAgQcAAIEHQACBB4AAgQgAAIEIgACBCMAAgQkAAIEJgACBCcAAgRmAAIEaAACBGoAAgRsAAIEbwACBHAAAgRxAAIEcgACBHMAAgR1AAIEdwACBHgAAgR5AAIEewACBHwAAgS7AAIEvQACBMAAAgTCAAIExQACBMYAAgTHAAIEyAACBMkAAgTLAAIEzQACBM4AAgTPAAIE0QACBNIAAgUVAAIFOQACBV0AAgWAAAIFpwACBccAAgXuAAIGFQACBjUAAgZZAAIGfQACBn8AAgaCAAIGhAACBoYAAgaIAAIGiwACBo4AAgaQAAIGkgACBpUAAgaXAAIGmQACBpwAAgafAAIGoAACBqUAAgayAAIGtQACBrcAAga6AAIGvQACBr8AAgbkAAIHCAACBy8AAgdTAAIHVgACB1gAAgdaAAIHXAACB14AAgdgAAIHYQACB2QAAgdxAAIHhAACB4YAAgeIAAIHigACB4wAAgeOAAIHkAACB5IAAgeUAAIHlgACB6kAAgesAAIHrwACB7IAAge1AAIHuAACB7sAAge+AAIHwQACB8QAAgfGAAIIBQACCAcAAggKAAIIDAACCA8AAggQAAIIEQACCBIAAggTAAIIFQACCBcAAggYAAIIGQACCBsAAggcAAIIJQACCCYAAggoAAIIZwACCGkAAghrAAIIbQACCHAAAghxAAIIcgACCHMAAgh0AAIIdgACCHgAAgh5AAIIegACCHwAAgh9AAIIvAACCL4AAgjBAAIIwwACCMYAAgjHAAIIyAACCMkAAgjKAAIIzAACCM4AAgjPAAII0AACCNIAAgjTAAII3AACCN0AAgjfAAIJHgACCSAAAgkiAAIJJAACCScAAgkoAAIJKQACCSoAAgkrAAIJLQACCS8AAgkwAAIJMQACCTMAAgk0AAIJcwACCXUAAgl4AAIJegACCX0AAgl+AAIJfwACCYAAAgmBAAIJgwACCYUAAgmGAAIJhwACCYkAAgmKAAIJkwACCZQAAgmWAAIJ1QACCdcAAgnZAAIJ2wACCd4AAgnfAAIJ4AACCeEAAgniAAIJ5AACCeYAAgnnAAIJ6AACCeoAAgnrAAIKKgACCiwAAgovAAIKMQACCjQAAgo1AAIKNgACCjcAAgo4AAIKOgACCjwAAgo9AAIKPgACCkAAAgpBAAIKTgACCk8AAgpQAAIKUgACCpEAAgqTAAIKlQACCpcAAgqaAAIKmwACCpwAAgqdAAIKngACCqAAAgqiAAIKowACCqQAAgqmAAIKpwACCuYAAgroAAIK6gACCuwAAgrvAAIK8AACCvEAAgryAAIK8wACCvUAAgr3AAIK+AACCvkAAgr7AAIK/AACCwkAAgsSAAILFQACCxcAAgsaAAILHQACCyYAAgspAAILLAACCy8AAgsyAAILNAACCzkAAgs+AAILQwACC44AAguxAAIL0QACC/EAAgvzAAIL9QACC/cAAgv5AAIL/AACC/0AAgv+AAIMAQACDAIAAgwEAAIMBQACDAcAAgwKAAIMCwACDAwAAgwPAAIMEAACDBUAAgwiAAIMJwACDCkAAgwrAAIMMAACDDMAAgw2AAIMOAACDF0AAgyBAAIMqAACDMwAAgzPAAIM0QACDNMAAgzVAAIM1wACDNkAAgzaAAIM3QACDOoAAgz7AAIM/QACDP8AAg0BAAINAwACDQUAAg0HAAINCQACDQsA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AhfgAAIX4QACF+IAAhfkAAIX5QACGAoAAhguAAIYVQACGHkAAhh8AAIYfgACGIAAAhiCAAIYhAACGIYAAhiHAAIYigACGJcAAhimAAIYqAACGKoAAhisAAIYrgACGLAAAhiyAAIYtAACGMMAAhjGAAIYyQACGMwAAhjPAAIY0gACGNUAAhjYAAIY2gACGRkAAhkbAAIZHgACGSAAAhkjAAIZJAACGSUAAhkmAAIZJwACGSkAAhkrAAIZLAACGS0AAhkvAAIZMAACGW8AAhlxAAIZcwACGXUAAhl4AAIZeQACGXoAAhl7AAIZfAACGX4AAhmAAAIZgQACGYIAAhmEAAIZhQACGcQAAhnGAAIZyAACGcoAAhnNAAIZzgACGc8AAhnQAAIZ0QACGdMAAhnVAAIZ1gACGdcAAhnZAAIZ2gACGhkAAhobAAIaHgACGiAAAhojAAIaJAACGiUAAhomAAIaJwACGikAAhorAAIaLAACGi0AAhovAAIaMAACGm8AAhpxAAIacwACGnUAAhp4AAIaeQACGnoAAhp7AAIafAACGn4AAhqAAAIagQACGoIAAhqEAAIahQACGsQAAhrGAAIayAACGsoAAhrNAAIazgACGs8AAhrQAAIa0QACGtMAAhrVAAIa1gACGtcAAhrZAAIa2gACGxkAAhsbAAIbHQACGx8AAhsiAAIbIwACGyQAAhslAAIbJgACGygAAhsqAAIbKwACGywAAhsuAAIbLwACG3oAAhudAAIbvQACG90AAhvfAAIb4QACG+MAAhvlAAIb6AACG+kAAhvqAAIb7QACG+4AAhvwAAIb8QACG/MAAhv2AAIb9wACG/gAAhv7AAIb/AACHAEAAhwOAAIcEwACHBUAAhwXAAIcHAACHB8AAhwiAAIcJAACHEkAAhxtAAIclAACHLgAAhy7AAIcvQACHL8AAhzBAAIcwwACHMUAAhzGAAIcyQACHNYAAhznAAIc6QACHOsAAhztAAIc7wACHPEAAhzzAAIc9QACHPcAAh0IAAIdCwACHQ4AAh0RAAIdFAACHRcAAh0aAAIdHQACHSAAAh0iAAIdYQACHWMAAh1lAAIdZwACHWoAAh1rAAIdbAACHW0AAh1uAAIdcAACHXIAAh1zAAIddAACHXYAAh13AAIdtgACHbgAAh26AAIdvAACHb8AAh3AAAIdwQACHcIAAh3DAAIdxQACHccAAh3IAAIdyQACHcsAAh3MAAIeCwACHg0AAh4QAAIeEgACHhUAAh4WAAIeFwACHhgAAh4ZAAIeGwACHh0AAh4eAAIeHwACHiEAAh4iAAIeLwACHjAAAh4xAAIeMwACHnIAAh50AAIedgACHngAAh57AAIefAACHn0AAh5+AAIefwACHoEAAh6DAAIehAACHoUAAh6HAAIeiAACHscAAh7JAAIeywACHs0AAh7QAAIe0QACHtIAAh7TAAIe1AACHtYAAh7YAAIe2QACHtoAAh7cAAIe3QACHxwAAh8eAAIfIAACHyIAAh8lAAIfJgACHycAAh8oAAIfKQACHysAAh8tAAIfLgACHy8AAh8xAAIfMgACH3EAAh9zAAIfdQACH3cAAh96AAIfewACH3wAAh99AAIffgACH4AAAh+CAAIfgwACH4QAAh+GAAIfhwACH8YAAh/IAAIfygACH8wAAh/PAAIf0AACH9EAAh/SAAIf0wACH9UAAh/XAAIf2AACH9kAAh/bAAIf3AACIAEAAiAlAAIgTAACIHAAAiBzAAIgdQACIHcAAiB5AAIgewACIH0AAiB+AAIggQACII4AAiCdAAIgnwACIKEAAiCjAAIgpQACIKcAAiCpAAIgqwACILoAAiC9AAIgwAACIMMAAiDGAAIgyQACIMwAAiDPAAIg0QACIRAAAiESAAIhFQACIRcAAiEaAAIhGwACIRwAAiEdAAIhHgACISAAAiEiAAIhIwACISQAAiEmAAIhJwACIWYAAiFoAAIhagACIWwAAiFvAAIhcAACIXEAAiFyAAIhcwACIXUAAiF3AAIheAACIXkAAiF7AAIhfAACIbsAAiG9AAIhvwACIcEAAiHEAAIhxQACIcYAAiHHAAIhyAACIcoAAiHMAAIhzQACIc4AAiHQAAIh0QACIhAAAiISAAIiFQACIhcAAiIaAAIiGwACIhwAAiIdAAIiHgACIiAAAiIiAAIiIwACIiQAAiImAAIiJwACImYAAiJoAAIiagACImwAAiJvAAIicAACInEAAiJyAAIicwACInUAAiJ3AAIieAACInkAAiJ7AAIifAACIrsAAiK9AAIivwACIsEAAiLEAAIixQACIsYAAiLHAAIiyAACIsoAAiLMAAIizQACIs4AAiLQAAIi0QACIxAAAiMSAAIjFAACIxYAAiMZAAIjGgACIxsAAiMcAAIjHQACIx8AAiMhAAIjIgACIyMAAiMlAAIjJgACI3EAAiOUAAIjtAACI9QAAiPWAAIj2AACI9oAAiPcAAIj3wACI+AAAiPhAAIj5AACI+UAAiPnAAIj6AACI+oAAiPtAAIj7gACI+8AAiPyAAIj8wACI/gAAiQFAAIkCgACJAwAAiQOAAIkEwACJBYAAiQZAAIkGwACJEAAAiRkAAIkiwACJK8AAiSyAAIktAACJLYAAiS4AAIkugACJLwAAiS9AAIkwAACJM0AAiTeAAIk4AACJOIAAiTkAAIk5gACJOgAAiTqAAIk7AACJO4AAiT/AAIlAgACJQUAAiUIAAIlCwACJQ4AAiURAAIlFAACJRcAAiUZAAIlWAACJVoAAiVcAAIlXgACJWEAAiViAAIlYwACJWQAAiVlAAIlZwACJWkAAiVqAAIlawACJW0AAiVuAAIlrQACJa8AAiWxAAIlswACJbYAAiW3AAIluAACJbkAAiW6AAIlvAACJb4AAiW/AAIlwAACJcIAAiXDAAImAgACJgQAAiYHAAImCQACJgwAAiYNAAImDgACJg8AAiYQAAImEgACJhQAAiYVAAImFgACJhgAAiYZAAImJgACJicAAiYoAAImKgACJmkAAiZrAAImbQACJm8AAiZyAAImcwACJnQAAiZ1AAImdgACJngAAiZ6AAImewACJnwAAiZ+AAImfwACJr4AAibAAAImwgACJsQAAibHAAImyAACJskAAibKAAImywACJs0AAibPAAIm0AACJtEAAibTAAIm1AACJxMAAicVAAInFwACJxkAAiccAAInHQACJx4AAicfAAInIAACJyIAAickAAInJQACJyYAAicoAAInKQACJ2gAAidqAAInbAACJ24AAidxAAIncgACJ3MAAid0AAIndQACJ3cAAid5AAInegACJ3sAAid9AAInfgACJ70AAie/AAInwQACJ8MAAifGAAInxwACJ8gAAifJAAInygACJ8wAAifOAAInzwACJ9AAAifSAAIn0wACJ/gAAigcAAIoQwACKGcAAihqAAIobAACKG4AAihwAAIocgACKHQAAih1AAIoeAACKIUAAiiUAAIolgACKJgAAiiaAAIonAACKJ4AAiigAAIoogACKLEAAii0AAIotwACKLoAAii9AAIowAACKMMAAijGAAIoyAACKQcAAikJAAIpCwACKQ0AAikQAAIpEQACKRIAAikTAAIpFAACKRYAAikYAAIpGQACKRoAAikcAAIpHQACKVwAAileAAIpYAACKWIAAillAAIpZgACKWcAAiloAAIpaQACKWsAAiltAAIpbgACKW8AAilxAAIpcgACKbEAAimzAAIptQACKbcAAim6AAIpuwACKbwAAim9AAIpvgACKcAAAinCAAIpwwACKcQAAinGAAIpxwACKgYAAioIAAIqCgACKgwAAioPAAIqEAACKhEAAioSAAIqEwACKhUAAioXAAIqGAACKhkAAiobAAIqHAACKlsAAipdAAIqXwACKmEAAipkAAIqZQACKmYAAipnAAIqaAACKmoAAipsAAIqbQACKm4AAipwAAIqcQACKrAAAiqyAAIqtAACKrYAAiq5AAIqugACKrsAAiq8AAIqvQACKr8AAirBAAIqwgACKsMAAirFAAIqxgACKwUAAisHAAIrCQACKwsAAisOAAIrDwACKxAAAisRAAIrEgACKxQAAisWAAIrFwACKxgAAisaAAIrGwACKyQAAislAAIrJwACK2YAAitoAAIragACK2wAAitvAAIrcAACK3EAAityAAIrcwACK3UAAit3AAIreAACK3kAAit7AAIrfAACK7sAAiu9AAIrvwACK8EAAivEAAIrxQACK8YAAivHAAIryAACK8oAAivMAAIrzQACK84AAivQAAIr0QACLBAAAiwSAAIsFQACLBcAAiwaAAIsGwACLBwAAiwdAAIsHgACLCAAAiwiAAIsIwACLCQAAiwmAAIsJwACLHIAAiyVAAIstQACLNUAAizXAAIs2QACLNsAAizdAAIs3wACLOAAAizhAAIs5AACLOUAAiznAAIs6AACLOoAAizsAAIs7QACLO4AAizxAAIs8gACLPcAAi0EAAItCQACLQsAAi0NAAItEgACLRUAAi0YAAItGgACLT8AAi1jAAItigACLa4AAi2xAAItswACLbUAAi23AAItuQACLbsAAi28AAItvwACLcwAAi3dAAIt3wACLeEAAi3jAAIt5QACLecAAi3pAAIt6wACLe0AAi3+AAIuAQACLgQAAi4HAAIuCgACLg0AAi4QAAIuEwACLhYAAi4YAAIuVwACLlkAAi5bAAIuXQACLmAAAi5hAAIuYgACLmMAAi5kAAIuZgACLmgAAi5pAAIuagACLmwAAi5tAAIurAACLq4AAi6wAAIusgACLrUAAi62AAIutwACLrgAAi65AAIuuwACLr0AAi6+AAIuvwACLsEAAi7CAAIvAQACLwMAAi8GAAIvCAACLwsAAi8MAAIvDQACLw4AAi8PAAIvEQACLxMAAi8UAAIvFQACLxcAAi8YAAIvJQACLyYAAi8nAAIvKQACL2gAAi9qAAIvbAACL24AAi9xAAIvcgACL3MAAi90AAIvdQACL3cAAi95AAIvegACL3sAAi99AAIvfgACL70AAi+/AAIvwQACL8MAAi/GAAIvxwACL8gAAi/JAAIvygACL8wAAi/OAAIvzwACL9AAAi/SAAIv0wACMBIAAjAUAAIwFgACMBgAAjAbAAIwHAACMB0AAjAeAAIwHwACMCEAAjAjAAIwJAACMCUAAjAnAAIwKAACMGcAAjBpAAIwawACMG0AAjBwAAIwcQACMHIAAjBzAAIwdAACMHYAAjB4AAIweQACMHoAAjB8AAIwfQACMLwAAjC+AAIwwAACMMIAAjDFAAIwxgACMMcAAjDIAAIwyQACMMsAAjDNAAIwzgACMM8AAjDRAAIw0gACMPcAAjEbAAIxQgACMWYAAjFpAAIxawACMW0AAjFvAAIxcQACMXMAAjF0AAIxdwACMYQAAjGTAAIxlQACMZcAAjGZAAIxmwACMZ0AAjGfAAIxoQACMbAAAjGzAAIxtgACMbkAAjG8AAIxvwACMcIAAjHFAAIxxwACMgYAAjIIAAIyCwACMg0AAjIQAAIyEQACMhIAAjITAAIyFAACMhYAAjIYAAIyGQACMhoAAjIcAAIyHQACMlwAAjJeAAIyYAACMmIAAjJlAAIyZgACMmcAAjJoAAIyaQACMmsAAjJtAAIybgACMm8AAjJxAAIycgACMrEAAjKzAAIytQACMrcAAjK6AAIyuwACMrwAAjK9AAIyvgACMsAAAjLCAAIywwACMsQAAjLGAAIyxwACMwYAAjMIAAIzCwACMw0AAjMQAAIzEQACMxIAAjMTAAIzFAACMxYAAjMYAAIzGQACMxoAAjMcAAIzHQACM1wAAjNeAAIzYAACM2IAAjNlAAIzZgACM2cAAjNoAAIzaQACM2sAAjNtAAIzbgACM28AAjNxAAIzcgACM7EAAjOzAAIztQACM7cAAjO6AAIzuwACM7wAAjO9AAIzvgACM8AAAjPCAAIzwwACM8QAAjPGAAIzxwACNAYAAjQIAAI0CgACNAwAAjQPAAI0EAACNBEAAjQSAAI0EwACNBUAAjQXAAI0GAACNBkAAjQbAAI0HAACNGcAAjSKAAI0qgACNMoAAjTMAAI0zgACNNAAAjTSAAI01AACNNUAAjTWAAI02QACNNoAAjTcAAI03QACNN8AAjThAAI04gACNOMAAjTmAAI05wACNOwAAjT5AAI0/gACNQAAAjUCAAI1BwACNQoAAjUNAAI1DwACNTQAAjVYAAI1fwACNaMAAjWmAAI1qAACNaoAAjWsAAI1rgACNbAAAjWxAAI1tAACNcEAAjXSAAI11AACNdYAAjXYAAI12gACNdwAAjXeAAI14AACNeIAAjXzAAI19gACNfkAAjX8AAI1/wACNgIAAjYFAAI2CAACNgsAAjYNAAI2TAACNk4AAjZQAAI2UgACNlUAAjZWAAI2VwACNlgAAjZZAAI2WwACNl0AAjZeAAI2XwACNmEAAjZiAAI2oQACNqMAAjalAAI2pwACNqoAAjarAAI2rAACNq0AAjauAAI2sAACNrIAAjazAAI2tAACNrYAAja3AAI29gACNvgAAjb7AAI2/QACNwAAAjcBAAI3AgACNwMAAjcEAAI3BgACNwgAAjcJAAI3CgACNwwAAjcNAAI3GgACNxsAAjccAAI3HgACN10AAjdfAAI3YQACN2MAAjdmAAI3ZwACN2gAAjdpAAI3agACN2wAAjduAAI3bwACN3AAAjdyAAI3cwACN7IAAje0AAI3tgACN7gAAje7AAI3vAACN70AAje+AAI3vwACN8EAAjfDAAI3xAACN8UAAjfHAAI3yAACOAcAAjgJAAI4CwACOA0AAjgQAAI4EQACOBIAAjgTAAI4FAACOBYAAjgYAAI4GQACOBoAAjgcAAI4HQACOFwAAjheAAI4YAACOGIAAjhlAAI4ZgACOGcAAjhoAAI4aQACOGsAAjhtAAI4bgACOG8AAjhxAAI4cgACOLEAAjizAAI4tQACOLcAAji6AAI4uwACOLwAAji9AAI4vgACOMAAAjjCAAI4wwACOMQAAjjGAAI4xwACOOwAAjkQAAI5NwACOVsAAjleAAI5YAACOWIAAjlkAAI5ZgACOWgAAjlpAAI5bAACOXkA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AkVZAAJFWwACRVwAAkWbAAJFnQACRaAAAkWiAAJFpQACRaYAAkWnAAJFqAACRakAAkWrAAJFrQACRa4AAkWvAAJFsQACRbIAAkW/AAJFwAACRcEAAkXDAAJGAgACRgQAAkYGAAJGCAACRgsAAkYMAAJGDQACRg4AAkYPAAJGEQACRhMAAkYUAAJGFQACRhcAAkYYAAJGVwACRlkAAkZbAAJGXQACRmAAAkZhAAJGYgACRmMAAkZkAAJGZgACRmgAAkZpAAJGagACRmwAAkZtAAJGrAACRq4AAkawAAJGsgACRrUAAka2AAJGtwACRrgAAka5AAJGuwACRr0AAka+AAJGvwACRsEAAkbCAAJHAQACRwMAAkcFAAJHBwACRwoAAkcLAAJHDAACRw0AAkcOAAJHEAACRxIAAkcTAAJHFAACRxYAAkcXAAJHVgACR1gAAkdaAAJHXAACR18AAkdgAAJHYQACR2IAAkdjAAJHZQACR2cAAkdoAAJHaQACR2sAAkdsAAJHkQACR7UAAkfcAAJIAAACSAMAAkgFAAJIBwACSAkAAkgLAAJIDQACSA4AAkgRAAJIHgACSC0AAkgvAAJIMQACSDMAAkg1AAJINwACSDkAAkg7AAJISgACSE0AAkhQAAJIUwACSFYAAkhZAAJIXAACSF8AAkhhAAJIoAACSKIAAkikAAJIpgACSKkAAkiqAAJIqwACSKwAAkitAAJIrwACSLEAAkiyAAJIswACSLUAAki2AAJI9QACSPcAAkj5AAJI+wACSP4AAkj/AAJJAAACSQEAAkkCAAJJBAACSQYAAkkHAAJJCAACSQoAAkkLAAJJSgACSUwAAklOAAJJUAACSVMAAklUAAJJVQACSVYAAklXAAJJWQACSVsAAklcAAJJXQACSV8AAklgAAJJnwACSaEAAkmkAAJJpgACSakAAkmqAAJJqwACSawAAkmtAAJJrwACSbEAAkmyAAJJswACSbUAAkm2AAJJ+QACSh0AAkpBAAJKZAACSosAAkqrAAJK0gACSvkAAksZAAJLPQACS2EAAktjAAJLZgACS2gAAktqAAJLbAACS28AAktyAAJLdAACS3YAAkt5AAJLewACS30AAkuAAAJLgwACS4QAAkuJAAJLlgACS5kAAkubAAJLngACS6EAAkujAAJLyAACS+wAAkwTAAJMNwACTDoAAkw8AAJMPgACTEAAAkxCAAJMRAACTEUAAkxIAAJMVQACTGgAAkxqAAJMbAACTG4AAkxwAAJMcgACTHQAAkx2AAJMeAACTHoAAkyNAAJMkAACTJMAAkyWAAJMmQACTJwAAkyfAAJMogACTKUAAkyoAAJMqgACTOkAAkzrAAJM7gACTPAAAkzzAAJM9AACTPUAAkz2AAJM9wACTPkAAkz7AAJM/AACTP0AAkz/AAJNAAACTQkAAk0KAAJNDAACTUsAAk1NAAJNTwACTVEAAk1UAAJNVQACTVYAAk1XAAJNWAACTVoAAk1cAAJNXQACTV4AAk1gAAJNYQACTaAAAk2iAAJNpQACTacAAk2qAAJNqwACTawAAk2tAAJNrgACTbAAAk2yAAJNswACTbQAAk22AAJNtwACTcAAAk3BAAJNwwACTgIAAk4EAAJOBgACTggAAk4LAAJODAACTg0AAk4OAAJODwACThEAAk4TAAJOFAACThUAAk4XAAJOGAACTlcAAk5ZAAJOXAACTl4AAk5hAAJOYgACTmMAAk5kAAJOZQACTmcAAk5pAAJOagACTmsAAk5tAAJObgACTncAAk54AAJOegACTrkAAk67AAJOvQACTr8AAk7CAAJOwwACTsQAAk7FAAJOxgACTsgAAk7KAAJOywACTswAAk7OAAJOzwACTw4AAk8QAAJPEwACTxUAAk8YAAJPGQACTxoAAk8bAAJPHAACTx4AAk8gAAJPIQACTyIAAk8kAAJPJQACTzIAAk8zAAJPNAACTzYAAk91AAJPdwACT3kAAk97AAJPfgACT38AAk+AAAJPgQACT4IAAk+EAAJPhgACT4cAAk+IAAJPigACT4sAAk/KAAJPzAACT84AAk/QAAJP0wACT9QAAk/VAAJP1gACT9cAAk/ZAAJP2wACT9wAAk/dAAJP3wACT+AAAk/tAAJP+AACT/oAAk/9AAJP/wACUAIAAlAFAAJQEAACUBMAAlAWAAJQGQACUBwAAlAfAAJQIQACUCcAAlAsAAJQMgACUH0AAlCgAAJQwAACUOAAAlDiAAJQ5AACUOYAAlDoAAJQ6wACUOwAAlDtAAJQ8AACUPEAAlDzAAJQ9AACUPYAAlD4AAJQ+QACUPoAAlD9AAJQ/gACUQMAAlEQAAJRFQACURcAAlEZAAJRHgACUSEAAlEkAAJRJgACUUsAAlFvAAJRlgACUboAAlG9AAJRvwACUcEAAlHDAAJRxQACUccAAlHIAAJRywACUdgAAlHpAAJR6wACUe0AAlHvAAJR8QACUfMAAlH1AAJR9wACUfkAAlIKAAJSDQACUhAAAlITAAJSFgACUhkAAlIcAAJSHwACUiIAAlIkAAJSYwACUmUAAlJnAAJSaQACUmwAAlJtAAJSbgACUm8AAlJwAAJScgACUnQAAlJ1AAJSdgACUngAAlJ5AAJSuAACUroAAlK8AAJSvgACUsEAAlLCAAJSwwACUsQAAlLFAAJSxwACUskAAlLKAAJSywACUs0AAlLOAAJTDQACUw8AAlMSAAJTFAACUxcAAlMYAAJTGQACUxoAAlMbAAJTHQACUx8AAlMgAAJTIQACUyMAAlMkAAJTMQACUzIAAlMzAAJTNQACU3QAAlN2AAJTeAACU3oAAlN9AAJTfgACU38AAlOAAAJTgQACU4MAAlOFAAJThgACU4cAAlOJAAJTigACU8kAAlPLAAJTzQACU88AAlPSAAJT0wACU9QAAlPVAAJT1gACU9gAAlPaAAJT2wACU9wAAlPeAAJT3wACVB4AAlQgAAJUIgACVCQAAlQnAAJUKAACVCkAAlQqAAJUKwACVC0AAlQvAAJUMAACVDEAAlQzAAJUNAACVHMAAlR1AAJUdwACVHkAAlR8AAJUfQACVH4AAlR/AAJUgAACVIIAAlSEAAJUhQACVIYAAlSIAAJUiQACVMgAAlTKAAJUzAACVM4AAlTRAAJU0gACVNMAAlTUAAJU1QACVNcAAlTZAAJU2gACVNsAAlTdAAJU3gACVQMAAlUnAAJVTgACVXIAAlV1AAJVdwACVXkAAlV7AAJVfQACVX8AAlWAAAJVgwACVZAAAlWfAAJVoQACVaMAAlWlAAJVpwACVakAAlWrAAJVrQACVbwAAlW/AAJVwgACVcUAAlXIAAJVywACVc4AAlXRAAJV0wACVhIAAlYUAAJWFwACVhkAAlYcAAJWHQACVh4AAlYfAAJWIAACViIAAlYkAAJWJQACViYAAlYoAAJWKQACVmgAAlZqAAJWbAACVm4AAlZxAAJWcgACVnMAAlZ0AAJWdQACVncAAlZ5AAJWegACVnsAAlZ9AAJWfgACVr0AAla/AAJWwQACVsMAAlbGAAJWxwACVsgAAlbJAAJWygACVswAAlbOAAJWzwACVtAAAlbSAAJW0wACVxIAAlcUAAJXFwACVxkAAlccAAJXHQACVx4AAlcfAAJXIAACVyIAAlckAAJXJQACVyYAAlcoAAJXKQACV2gAAldqAAJXbAACV24AAldxAAJXcgACV3MAAld0AAJXdQACV3cAAld5AAJXegACV3sAAld9AAJXfgACV70AAle/AAJXwQACV8MAAlfGAAJXxwACV8gAAlfJAAJXygACV8wAAlfOAAJXzwACV9AAAlfSAAJX0wACWBIAAlgUAAJYFgACWBgAAlgbAAJYHAACWB0AAlgeAAJYHwACWCEAAlgjAAJYJAACWCUAAlgnAAJYKAACWHMAAliWAAJYtgACWNYAAljYAAJY2gACWNwAAljeAAJY4QACWOIAAljjAAJY5gACWOcAAljpAAJY6gACWOwAAljvAAJY8AACWPEAAlj0AAJY9QACWPoAAlkHAAJZDAACWQ4AAlkQAAJZFQACWRgAAlkbAAJZHQACWUIAAllmAAJZjQACWbEAAlm0AAJZtgACWbgAAlm6AAJZvAACWb4AAlm/AAJZwgACWc8AAlngAAJZ4gACWeQAAlnmAAJZ6AACWeoAAlnsAAJZ7gACWfAAAloBAAJaBAACWgcAAloKAAJaDQACWhAAAloTAAJaFgACWhkAAlobAAJaWgACWlwAAlpeAAJaYAACWmMAAlpkAAJaZQACWmYAAlpnAAJaaQACWmsAAlpsAAJabQACWm8AAlpwAAJarwACWrEAAlqzAAJatQACWrgAAlq5AAJaugACWrsAAlq8AAJavgACWsAAAlrBAAJawgACWsQAAlrFAAJbBAACWwYAAlsJAAJbCwACWw4AAlsPAAJbEAACWxEAAlsSAAJbFAACWxYAAlsXAAJbGAACWxoAAlsbAAJbKAACWykAAlsqAAJbLAACW2sAAlttAAJbbwACW3EAAlt0AAJbdQACW3YAAlt3AAJbeAACW3oAAlt8AAJbfQACW34AAluAAAJbgQACW8AAAlvCAAJbxAACW8YAAlvJAAJbygACW8sAAlvMAAJbzQACW88AAlvRAAJb0gACW9MAAlvVAAJb1gACXBUAAlwXAAJcGQACXBsAAlweAAJcHwACXCAAAlwhAAJcIgACXCQAAlwmAAJcJwACXCgAAlwqAAJcKwACXGoAAlxsAAJcbgACXHAAAlxzAAJcdAACXHUAAlx2AAJcdwACXHkAAlx7AAJcfAACXH0AAlx/AAJcgAACXL8AAlzBAAJcwwACXMUAAlzIAAJcyQACXMoAAlzLAAJczAACXM4AAlzQAAJc0QACXNIAAlzUAAJc1QACXPoAAl0eAAJdRQACXWkAAl1sAAJdbgACXXAAAl1yAAJddAACXXYAAl13AAJdegACXYcAAl2WAAJdmAACXZoAAl2cAAJdngACXaAAAl2iAAJdpAACXbMAAl22AAJduQACXbwAAl2/AAJdwgACXcUAAl3IAAJdygACXgkAAl4LAAJeDgACXhAAAl4TAAJeFAACXhUAAl4WAAJeFwACXhkAAl4bAAJeHAACXh0AAl4fAAJeIAACXl8AAl5hAAJeYwACXmUAAl5oAAJeaQACXmoAAl5rAAJebAACXm4AAl5wAAJecQACXnIAAl50AAJedQACXrQAAl62AAJeuAACXroAAl69AAJevgACXr8AAl7AAAJewQACXsMAAl7FAAJexgACXscAAl7JAAJeygACXwkAAl8LAAJfDgACXxAAAl8TAAJfFAACXxUAAl8WAAJfFwACXxkAAl8bAAJfHAACXx0AAl8fAAJfIAACX18AAl9hAAJfYwACX2UAAl9oAAJfaQACX2oAAl9rAAJfbAACX24AAl9wAAJfcQACX3IAAl90AAJfdQACX7QAAl+2AAJfuAACX7oAAl+9AAJfvgACX78AAl/AAAJfwQACX8MAAl/FAAJfxgACX8cAAl/JAAJfygACYAkAAmALAAJgDQACYA8AAmASAAJgEwACYBQAAmAVAAJgFgACYBgAAmAaAAJgGwACYBwAAmAeAAJgHwACYGoAAmCNAAJgrQACYM0AAmDPAAJg0QACYNMAAmDVAAJg2AACYNkAAmDaAAJg3QACYN4AAmDgAAJg4QACYOMAAmDlAAJg5gACYOcAAmDqAAJg6wACYPAAAmD9AAJhAgACYQQAAmEGAAJhCwACYQ4AAmERAAJhEwACYTgAAmFcAAJhgwACYacAAmGqAAJhrAACYa4AAmGwAAJhsgACYbQAAmG1AAJhuAACYcUAAmHWAAJh2AACYdoAAmHcAAJh3gACYeAAAmHiAAJh5AACYeYAAmH3AAJh+gACYf0AAmIAAAJiAwACYgYAAmIJAAJiDAACYg8AAmIRAAJiUAACYlIAAmJUAAJiVgACYlkAAmJaAAJiWwACYlwAAmJdAAJiXwACYmEAAmJiAAJiYwACYmUAAmJmAAJipQACYqcAAmKpAAJiqwACYq4AAmKvAAJisAACYrEAAmKyAAJitAACYrYAAmK3AAJiuAACYroAAmK7AAJi+gACYvwAAmL/AAJjAQACYwQAAmMFAAJjBgACYwcAAmMIAAJjCgACYwwAAmMNAAJjDgACYxAAAmMRAAJjHgACYx8AAmMgAAJjIgACY2EAAmNjAAJjZQACY2cAAmNqAAJjawACY2wAAmNtAAJjbgACY3AAAmNyAAJjcwACY3QAAmN2AAJjdwACY7YAAmO4AAJjugACY7wAAmO/AAJjwAACY8EAAmPCAAJjwwACY8UAAmPHAAJjyAACY8kAAmPLAAJjzAACZAsAAmQNAAJkDwACZBEAAmQUAAJkFQACZBYAAmQXAAJkGAACZBoAAmQcAAJkHQACZB4AAmQgAAJkIQACZGAAAmRiAAJkZAACZGYAAmRpAAJkagACZGsAAmRsAAJkbQACZG8AAmRxAAJkcgACZHMAAmR1AAJkdgACZLUAAmS3AAJkuQACZLsAAmS+AAJkvwACZMAAAmTBAAJkwgACZMQAAmTGAAJkxwACZMgAAmTKAAJkywACZPAAAmUUAAJlOwACZV8AAmViAAJlZAACZWYAAmVoAAJlagACZWwAAmVtAAJlcAACZX0AAmWMAAJljgACZZAAAmWSAAJllAACZZYAAmWYAAJlmgACZakAAmWsAAJlrwACZbIAAmW1AAJluAACZbsAAmW+AAJlwAACZf8AAmYBAAJmAwACZgUAAmYIAAJmCQACZgoAAmYLAAJmDAACZg4AAmYQAAJmEQACZhIAAmYUAAJmFQACZlQAAmZWAAJmWAACZloAAmZdAAJmXgACZl8AAmZgAAJmYQACZmMAAmZlAAJmZgACZmcAAmZpAAJmagACZqkAAmarAAJmrQACZq8AAmayAAJmswACZrQAAma1AAJmtgACZrgAAma6AAJmuwACZrwAAma+AAJmvwACZv4AAmcAAAJnAgACZwQAAmcHAAJnCAACZwkAAmcKAAJnCwACZw0AAmcPAAJnEAACZxEAAmcTAAJnFAACZ1MAAmdVAAJnVwACZ1kAAmdcAAJnXQACZ14AAmdfAAJnYAACZ2IAAmdkAAJnZQACZ2YAAmdoAAJnaQACZ6gAAmeqAAJnrAACZ64AAmexAAJnsgACZ7MAAme0AAJntQACZ7cAAme5AAJnugACZ7sAAme9AAJnvgACZ/0AAmf/AAJoAQACaAMAAmgGAAJoBwACaAgAAmgJAAJoCgACaAwAAmgOAAJoDwACaBAAAmgSAAJoEwACaF4AAmiBAAJooQACaMEAAmjDAAJoxQACaMcAAmjJAAJozAACaM0AAmjOAAJo0QACaNIAAmjUAAJo1QACaNcAAmjaAAJo2wACaNwAAmjfAAJo4AACaOkAAmj2AAJo+wACaP0AAmj/AAJpBAACaQcAAmkKAAJpDAACaTEAAmlVAAJpfAACaaAAAmmjAAJppQACaacAAmmpAAJpqwACaa0AAmmuAAJpsQACab4AAmnPAAJp0QACadMAAmnVAAJp1wACadkAAmnbAAJp3QACad8AAmnwAAJp8wACafYAAmn5AAJp/AACaf8AAmoCAAJqBQACaggAAmoKAAJqSQACaksAAmpNAAJqTwACalIAAmpTAAJqVAACalUAAmpWAAJqWAACaloAAmpbAAJqXAACal4AAmpfAAJqngACaqAAAmqiAAJqpAACaqcAAmqoAAJqqQACaqoAAmqrAAJqrQACaq8AAmqwAAJqsQACarMAAmq0AAJq8wACavUAAmr4AAJq+gACav0AAmr+AAJq/wACawAAAmsBAAJrAwACawUAAmsGAAJrBwACawkAAmsKAAJrFwACaxgAAmsZAAJrGwACa1oAAmtcAAJrXgACa2AAAmtjAAJrZAACa2UAAmtmAAJrZwACa2kAAmtrAAJrbAACa20AAmtvAAJrcAACa68AAmuxAAJrswACa7UAAmu4AAJruQACa7oAAmu7AAJrvAACa74AAmvAAAJrwQACa8IAAmvEAAJrxQACbAQAAmwGAAJsCAACbAoAAmwNAAJsDgACbA8AAmwQAAJsEQACbBMAAmwVAAJsFgACbBcAAmwZAAJsGgACbFkAAmxbAAJsXQACbF8AAmxiAAJsYwACbGQAAmxlAAJsZgACbGgAAmxqAAJsawACbGwAAmxuAAJsbwACbK4AAmywAAJssgACbLQAAmy3AAJsuAACbLkAAmy6AAJsuwACbL0AAmy/AAJswAACbMEAAmzDAAJsxAACbOkAAm0NAAJtNAACbVgAAm1bAAJtXQACbV8AAm1hAAJtYwACbWUAAm1mAAJtaQACbXYAAm2FAAJthwACbYkAAm2LAAJtjQACbY8AAm2RAAJtkwACbaIAAm2lAAJtqAACbasAAm2uAAJtsQACbbQAAm23AAJtuQACbfgAAm36AAJt/AACbf4AAm4BAAJuAgACbgMAAm4EAAJuBQACbgcAAm4JAAJuCgACbgsAAm4NAAJuDgACbk0AAm5PAAJuUQACblMAAm5WAAJuVwACblgAAm5ZAAJuWgACblwAAm5eAAJuXwACbmAAAm5iAAJuYwACbqIAAm6kAAJupgACbqgAAm6rAAJurAACbq0AAm6uAAJurwACbrEAAm6zAAJutAACbrUAAm63AAJuuAACbvcAAm75AAJu/AACbv4AAm8BAAJvAgACbwMAAm8EAAJvBQACbwcAAm8JAAJvCgACbwsAAm8NAAJvDgACb00AAm9PAAJvUQACb1MAAm9WAAJvVwACb1gAAm9ZAAJvWgACb1wAAm9eAAJvXwACb2AAAm9iAAJvYwACb6IAAm+kAAJvpgACb6gAAm+rAAJvrAACb60AAm+uAAJvrwACb7EAAm+zAAJvtAACb7UAAm+3AAJvuAACb/cAAm/5AAJv/AACb/4AAnABAAJwAgACcAMAAnAEAAJwBQACcAcAAnAJAAJwCgACcAsAAnANAAJwDgACcFkAAnB8AAJwnAACcLwAAnC+AAJwwAACcMIAAnDEAAJwxwACcMgAAnDJAAJwzAACcM0AAnDPAAJw0AACcNIAAnDVAAJw1gACcNcAAnDaAAJw2wACcOAAAnDtAAJw8gACcPQAAnD2AAJw+wACcP4AAnEBAAJxAwACcSgAAnFMAAJxcwACcZcAAnGaAAJxnAACcZ4AAnGgAAJxogACcaQAAnGlAAJxqAACcbUAAnHGAAJxyAACccoAAnHMAAJxzgACcdAAAnHSAAJx1AACcdYAAnHnAAJx6gACce0AAnHwAAJx8wACcfYAAnH5AAJx/AACcf8AAnIBAAJyQAACckIAAnJEAAJyRgACckkAAnJKAAJySwACckwAAnJNAAJyTwACclEAAnJSAAJyUwACclUAAnJWAAJylQACcpcAAnKZAAJymwACcp4AAnKfAAJyoAACcqEAAnKiAAJypAACcqYAAnKnAAJyqAACcqoAAnKrAAJy6gACcuwAAnLvAAJy8QACcvQAAnL1AAJy9gACcvcAAnL4AAJy+gACcvwAAnL9AAJy/gACcwAAAnMBAAJzDgACcw8AAnMQAAJzEgACc1EAAnNTAAJzVQACc1cAAnNaAAJzWwACc1wAAnNdAAJzXgACc2AAAnNiAAJzYwACc2QAAnNmAAJzZwACc6YAAnOoAAJzqgACc6wAAnOvAAJzsAACc7EAAnOyAAJzswACc7UAAnO3AAJzuAACc7kAAnO7AAJzvAACc/sAAnP9AAJz/wACdAEAAnQEAAJ0BQACdAYAAnQHAAJ0CAACdAoAAnQMAAJ0DQACdA4AAnQQAAJ0EQACdFAAAnRSAAJ0VAACdFYAAnRZAAJ0WgACdFsAAnRcAAJ0XQACdF8AAnRhAAJ0YgACdGMAAnRlAAJ0ZgACdKUAAnSnAAJ0qQACdKsAAnSuAAJ0rwACdLAAAnSxAAJ0sgACdLQAAnS2AAJ0twACdLgAAnS6AAJ0uwACdOAAAnUEAAJ1KwACdU8AAnVSAAJ1VAACdVYAAnVYAAJ1WgACdVwAAnVdAAJ1YAACdW0AAnV8AAJ1fgACdYAAAnWCAAJ1hAACdYYAAnWIAAJ1igACdZkAAnWcAAJ1nwACdaIAAnWlAAJ1qAACdasAAnWuAAJ1sAACde8AAnXxAAJ19AACdfYAAnX5AAJ1+gACdfsAAnX8AAJ1/QACdf8AAnYBAAJ2AgACdgMAAnYFAAJ2BgACdkUAAnZHAAJ2SQACdksAAnZOAAJ2TwACdlAAAnZRAAJ2UgACdlQAAnZWAAJ2VwACdlgAAnZaAAJ2WwACdpoAAnacAAJ2ngACdqAAAnajAAJ2pAACdqUAAnamAAJ2pwACdqkAAnarAAJ2rAACdq0AAnavAAJ2sAACdu8AAnbxAAJ29AACdvYAAnb5AAJ2+gACdvsAAnb8AAJ2/QACdv8AAncBAAJ3AgACdwMAAncFAAJ3BgACd0UAAndHAAJ3SQACd0sAAndOAAJ3TwACd1AAAndRAAJ3UgACd1QAAndWAAJ3VwACd1gAAndaAAJ3WwACd5oAAnecAAJ3ngACd6AAAnejAAJ3pAACd6UAAnemAAJ3pwACd6kAAnerAAJ3rAACd60AAnevAAJ3sAACd+8AAnfxAAJ38wACd/UAAnf4AAJ3+QACd/oAAnf7AAJ3/AACd/4AAngAAAJ4AQACeAIAAngEAAJ4BQACeA4AAngPAAJ4EQACeFAAAnhSAAJ4VAACeFYAAnhZAAJ4WgACeFsAAnhcAAJ4XQACeF8AAnhhAAJ4YgACeGMAAnhlAAJ4ZgACeKUAAninAAJ4qQACeKsAAniuAAJ4rwACeLAAAnixAAJ4sgACeLQAAni2AAJ4twACeLgAAni6AAJ4uwACePoAAnj8AAJ4/wACeQEAAnkEAAJ5BQACeQYAAnkHAAJ5CAACeQoAAnkMAAJ5DQACeQ4AAnkQAAJ5EQACeRoAAnkdAAJ5IAACeSIAAnknAAJ5MAACeUkAAnlSAAJ5awACeYIAAnmUAAJ5sQACebQAAnm2AAJ5uAACeboAAnm9AAJ5vwACecQAAnoDAAJ6BQACegcAAnoJAAJ6CwACegwAAnoNAAJ6DgACeg8AAnoRAAJ6EwACehQAAnoVAAJ6FwACehgAAnpXAAJ6WQACelsAAnpdAAJ6XwACemAAAnphAAJ6YgACemMAAnplAAJ6ZwACemgAAnppAAJ6awACemwAAnqrAAJ6rQACeq8AAnqxAAJ6swACerQAAnq1AAJ6tgACercAAnq5AAJ6uwACerwAAnq9AAJ6vwACesAAAnrJAAJ6zAACes8AAnrRAAJ7FAACezgAAntcAAJ7fwACe6YAAnvGAAJ77QACfBQAAnw0AAJ8WAACfHwAAnx+AAJ8gQACfIMAAnyFAAJ8hwACfIoAAnyNAAJ8jwACfJEAAnyUAAJ8lgACfJgAAnybAAJ8ngACfJ8AAnykAAJ8sQACfLQAAny2AAJ8uQACfLwAAny+AAJ84wACfQcAAn0uAAJ9UgACfVUAAn1XAAJ9WQACfVsAAn1dAAJ9XwACfWAAAn1jAAJ9cAACfYMAAn2FAAJ9hwACfYkAAn2LAAJ9jQACfY8AAn2RAAJ9kwACfZUAAn2oAAJ9qwACfa4AAn2xAAJ9tAACfbcAAn26AAJ9vQACfcAAAn3DAAJ9xQACfgQAAn4GAAJ+CQACfgsAAn4OAAJ+DwACfhAAAn4RAAJ+EgACfhQAAn4WAAJ+FwACfhgAAn4aAAJ+GwACfiQAAn4lAAJ+JwACfmYAAn5oAAJ+agACfmwAAn5vAAJ+cAACfnEAAn5yAAJ+cwACfnUAAn53AAJ+eAACfnkAAn57AAJ+fAACfrsAAn69AAJ+wAACfsIAAn7FAAJ+xgACfscAAn7IAAJ+yQACfssAAn7NAAJ+zgACfs8AAn7RAAJ+0gACftsAAn7cAAJ+3gACfx0AAn8fAAJ/IQACfyMAAn8mAAJ/JwACfygAAn8pAAJ/KgACfywAAn8uAAJ/LwACfzAAAn8yAAJ/MwACf3IAAn90AAJ/dwACf3kAAn98AAJ/fQACf34AAn9/AAJ/gAACf4IAAn+EAAJ/hQACf4YAAn+IAAJ/iQACf5IAAn+TAAJ/lQACf9QAAn/WAAJ/2AACf9oAAn/dAAJ/3gACf98AAn/gAAJ/4QACf+MAAn/lAAJ/5gACf+cAAn/pAAJ/6gACgCkAAoArAAKALgACgDAAAoAzAAKANAACgDUAAoA2AAKANwACgDkAAoA7AAKAPAACgD0AAoA/AAKAQAACgE0AAoBOAAKATwACgFEAAoCQAAKAkgACgJQAAoCWAAKAmQACgJoAAoCbAAKAnAACgJ0AAoCfAAKAoQACgKIAAoCjAAKApQACgKYAAoDlAAKA5wACgOkAAoDrAAKA7gACgO8AAoDwAAKA8QACgPIAAoD0AAKA9gACgPcAAoD4AAKA+gACgPsAAoEIAAKBEQACgRQAAoEXAAKBGQACgRwAAoElAAKBKAACgSsAAoEuAAKBMQACgTMAAoE5AAKBSwACgVgAAoGjAAKBxgACgeYAAoIGAAKCCAACggoAAoIMAAKCDgACghEAAoISAAKCEwACghYAAoIXAAKCGQACghoAAoIcAAKCHwACgiAAAoIhAAKCJAACgiUAAoIqAAKCNwACgjwAAoI+AAKCQAACgkUAAoJIAAKCSwACgk0AAoJyAAKClgACgr0AAoLhAAKC5AACguYAAoLoAAKC6gACguwAAoLuAAKC7wACgvIAAoL/AAKDEAACgxIAAoMUAAKDFgACgxgAAoMaAAKDHAACgx4AAoMgAAKDMQACgzQAAoM3AAKDOgACgz0AAoNAAAKDQwACg0YAAoNJAAKDSwACg4oAAoOMAAKDjgACg5AAAoOTAAKDlAACg5UAAoOWAAKDlwACg5kAAoObAAKDnAACg50AAoOfAAKDoAACg98AAoPhAAKD4wACg+UAAoPoAAKD6QACg+oAAoPrAAKD7AACg+4AAoPwAAKD8QACg/IAAoP0AAKD9QAChDQAAoQ2AAKEOQAChDsAAoQ+AAKEPwAChEAAAoRBAAKEQgAChEQAAoRGAAKERwAChEgAAoRKAAKESwAChFgAAoRZAAKEWgAChFwAAoSbAAKEnQAChJ8AAoShAAKEpAAChKUAAoSmAAKEpwAChKgAAoSqAAKErAAChK0AAoSuAAKEsAAChLEAAoTwAAKE8gAChPQAAoT2AAKE+QAChPoAAoT7AAKE/AAChP0AAoT/AAKFAQAChQIAAoUDAAKFBQAChQYAAoVFAAKFRwAChUkAAoVLAAKFTgAChU8AAoVQAAKFUQAChVIAAoVUAAKFVgAChVcAAoVYAAKFWgAChVsAAoWaAAKFnAAChZ4AAoWgAAKFowAChaQAAoWlAAKFpgAChacAAoWpAAKFqwAChawAAoWtAAKFrwAChbAAAoXvAAKF8QAChfMAAoX1AAKF+AAChfkAAoX6AAKF+wAChfwAAoX+AAKGAAAChgEAAoYCAAKGBAAChgUAAoYqAAKGTgAChnUAAoaZAAKGnAAChp4AAoagAAKGogAChqQAAoamAAKGpwAChqoAAoa3AAKGxgAChsgAAobKAAKGzAAChs4AAobQAAKG0gAChtQAAobjAAKG5gAChukAAobsAAKG7wAChvIAAob1AAKG+AAChvoAAoc5AAKHOwAChz0AAoc/AAKHQgACh0MAAodEAAKHRQACh0YAAodIAAKHSgACh0sAAodMAAKHTgACh08AAoeOAAKHkAACh5IAAoeUAAKHlwACh5gAAoeZAAKHmgACh5sAAoedAAKHnwACh6AAAoehAAKHowACh6QAAofjAAKH5QACh+cAAofpAAKH7AACh+0AAofuAAKH7wACh/AAAofyAAKH9AACh/UAAof2AAKH+AACh/kAAog4AAKIOgACiDwAAog+AAKIQQACiEIAAohDAAKIRAACiEUAAohHAAKISQACiEoAAohLAAKITQACiE4AAoiNAAKIjwACiJEAAoiTAAKIlgACiJcAAoiYAAKImQACiJoAAoicAAKIngACiJ8AAoigAAKIogACiKMAAojiAAKI5AACiOYAAojoAAKI6wACiOwAAojtAAKI7gACiO8AAojxAAKI8wACiPQAAoj1AAKI9wACiPgAAok3AAKJOQACiTsAAok9AAKJQAACiUEAAolCAAKJQwACiUQAAolGAAKJSAACiUkAAolKAAKJTAACiU0AAomYAAKJuwACidsAAon7AAKJ/QACif8AAooBAAKKAwACigYAAooHAAKKCAACigsAAooMAAKKDgACig8AAooRAAKKFAACihUAAooWAAKKGQACihoAAoofAAKKLAACijEAAoozAAKKNQACijoAAoo9AAKKQAACikIAAopnAAKKiwACirIAAorWAAKK2QACitsAAordAAKK3wACiuEAAorjAAKK5AACiucAAor0AAKLBQACiwcAAosJAAKLCwACiw0AAosPAAKLEQACixMAAosVAAKLJgACiykAAossAAKLLwACizIAAos1AAKLOAACizsAAos+AAKLQAACi38AAouBAAKLgwACi4UAAouIAAKLiQACi4oAAouLAAKLjAACi44AAouQAAKLkQACi5IAAouUAAKLlQACi9QAAovWAAKL2AACi9oAAovdAAKL3gACi98AAovgAAKL4QACi+MAAovlAAKL5gACi+cAAovpAAKL6gACjCkAAowrAAKMLgACjDAAAowzAAKMNAACjDUAAow2AAKMNwACjDkAAow7AAKMPAACjD0AAow/AAKMQAACjE0AAoxOAAKMTwACjFEAAoyQAAKMkgACjJQAAoyWAAKMmQACjJoAAoybAAKMnAACjJ0AAoyfAAKMoQACjKIAAoyjAAKMpQACjKYAAozlAAKM5wACjOkAAozrAAKM7gACjO8AAozwAAKM8QACjPIAAoz0AAKM9gACjPcAAoz4AAKM+gACjPsAAo06AAKNPAACjT4AAo1AAAKNQwACjUQAAo1FAAKNRgACjUcAAo1JAAKNSwACjUwAAo1NAAKNTwACjVAAAo2PAAKNkQACjZMAAo2VAAKNmAACjZkAAo2aAAKNmwACjZwAAo2eAAKNoAACjaEAAo2iAAKNpAACjaUAAo3kAAKN5gACjegAAo3qAAKN7QACje4AAo3vAAKN8AACjfEAAo3zAAKN9QACjfYAAo33AAKN+QACjfoAAo4fAAKOQwACjmoAAo6OAAKOkQACjpMAAo6VAAKOlwACjpkAAo6bAAKOnAACjp8AAo6sAAKOuwACjr0AAo6/AAKOwQACjsMAAo7FAAKOxwACjskAAo7YAAKO2wACjt4AAo7hAAKO5AACjucAAo7qAAKO7QACju8AAo8uAAKPMAACjzIAAo80AAKPNwACjzgAAo85AAKPOgACjzsAAo89AAKPPwACj0AAAo9BAAKPQwACj0QAAo+DAAKPhQACj4cAAo+JAAKPjAACj40AAo+OAAKPjwACj5AAAo+SAAKPlAACj5UAAo+WAAKPmAACj5kAAo/YAAKP2gACj9wAAo/eAAKP4QACj+IAAo/jAAKP5AACj+UAAo/nAAKP6QACj+oAAo/rAAKP7QACj+4AApAtAAKQLwACkDIAApA0AAKQNwACkDgAApA5AAKQOgACkDsAApA9AAKQPwACkEAAApBBAAKQQwACkEQAApCDAAKQhQACkIcAApCJAAKQjAACkI0AApCOAAKQjwACkJAAApCSAAKQlAACkJUAApCWAAKQmAACkJkAApDYAAKQ2gACkNwAApDeAAKQ4QACkOIAApDjAAKQ5AACkOUAApDnAAKQ6QACkOoAApDrAAKQ7QACkO4AApEtAAKRLwACkTEAApEzAAKRNgACkTcAApE4AAKROQACkToAApE8AAKRPgACkT8AApFAAAKRQgACkUMAApGOAAKRsQACkdEAApHxAAKR8wACkfUAApH3AAKR+QACkfwAApH9AAKR/gACkgEAApICAAKSBAACkgUAApIHAAKSCQACkgoAApILAAKSDgACkg8AApIUAAKSIQACkiYAApIoAAKSKgACki8AApIyAAKSNQACkjcAApJcAAKSgAACkqcAApLLAAKSzgACktAAApLSAAKS1AACktYAApLYAAKS2QACktwAApLpAAKS+gACkvwAApL+AAKTAAACkwIAApMEAAKTBgACkwgAApMKAAKTGwACkx4AApMhAAKTJAACkycAApMqAAKTLQACkzAAApMzAAKTNQACk3QAApN2AAKTeAACk3oAApN9AAKTfgACk38AApOAAAKTgQACk4MAApOFAAKThgACk4cAApOJAAKTigACk8kAApPLAAKTzQACk88AApPSAAKT0wACk9QAApPVAAKT1gACk9gAApPaAAKT2wACk9wAApPeAAKT3wAClB4AApQgAAKUIwAClCUAApQoAAKUKQAClCoAApQrAAKULAAClC4AApQwAAKUMQAClDIAApQ0AAKUNQAClEIAApRDAAKURAAClEYAApSFAAKUhwAClIkAApSLAAKUjgAClI8AApSQAAKUkQAClJIAApSUAAKUlgAClJcAApSYAAKUmgAClJsAApTaAAKU3AAClN4AApTgAAKU4wAClOQAApTlAAKU5gAClOcAApTpAAKU6wAClOwAApTtAAKU7wAClPAAApUvAAKVMQAClTMAApU1AAKVOAAClTkAApU6AAKVOwAClTwAApU+AAKVQAAClUEAApVCAAKVRAAClUUAApWEAAKVhgAClYgAApWKAAKVjQAClY4AApWPAAKVkAAClZEAApWTAAKVlQAClZYAApWXAAKVmQAClZoAApXZAAKV2wACld0AApXfAAKV4gACleMAApXkAAKV5QACleYAApXoAAKV6gAClesAApXsAAKV7gACle8AApYUAAKWOAACll8AApaDAAKWhgAClogAApaKAAKWjAAClo4AApaQAAKWkQAClpQAApahAAKWsAAClrIAApa0AAKWtgAClrgAApa6AAKWvAAClr4AApbNAAKW0AACltMAApbWAAKW2QACltwAApbfAAKW4gACluQAApcjAAKXJQAClycAApcpAAKXLAACly0AApcuAAKXLwAClzAAApcyAAKXNAAClzUAApc2AAKXOAAClzkAApd4AAKXegACl3wAApd+AAKXgQACl4IAApeDAAKXhAACl4UAApeHAAKXiQACl4oAApeLAAKXjQACl44AApfNAAKXzwACl9EAApfTAAKX1gACl9cAApfYAAKX2QACl9oAApfcAAKX3gACl98AApfgAAKX4gACl+MAApgiAAKYJAACmCYAApgoAAKYKwACmCwAApgtAAKYLgACmC8AApgxAAKYMwACmDQAApg1AAKYNwACmDgAAph3AAKYeQACmHsAAph9AAKYgAACmIEAApiCAAKYgwACmIQAApiGAAKYiAACmIkAApiKAAKYjAACmI0AApjMAAKYzgACmNAAApjSAAKY1QACmNYAApjXAAKY2AACmNkAApjbAAKY3QACmN4AApjfAAKY4QACmOIAApkhAAKZIwACmSUAApknAAKZKgACmSsAApksAAKZLQACmS4AApkwAAKZMgACmTMAApk0AAKZNgACmTcAApmCAAKZpQACmcUAApnlAAKZ5wACmekAApnrAAKZ7QACmfAAApnxAAKZ8gACmfUAApn2AAKZ+AACmfkAApn7AAKZ/gACmf8AApoAAAKaAwACmgQAApoJAAKaFgACmhsAApodAAKaHwACmiQAAponAAKaKgACmiwAAppRAAKadQACmpwAAprAAAKawwACmsUAAprHAAKayQACmssAAprNAAKazgACmtEAApreAAKa7wACmvEAAprzAAKa9QACmvcAApr5AAKa+wACmv0AApr/AAKbEAACmxMAApsWAAKbGQACmxwAApsfAAKbIgACmyUAApsoAAKbKgACm2kAAptrAAKbbQACm28AAptyAAKbcwACm3QAApt1AAKbdgACm3gAApt6AAKbewACm3wAApt+AAKbfwACm74AApvAAAKbwgACm8QAApvHAAKbyAACm8kAApvKAAKbywACm80AApvPAAKb0AACm9EAApvTAAKb1AACnBMAApwVAAKcGAACnBoAApwdAAKcHgACnB8AApwgAAKcIQACnCMAApwlAAKcJgACnCcAApwpAAKcKgACnDcAApw4AAKcOQACnDsAApx6AAKcfAACnH4AApyAAAKcgwACnIQAApyFAAKchgACnIcAApyJAAKciwACnIwAApyNAAKcjwACnJAAApzPAAKc0QACnNMAApzVAAKc2AACnNkAApzaAAKc2wACnNwAApzeAAKc4AACnOEAApziAAKc5AACnOUAAp0kAAKdJgACnSgAAp0qAAKdLQACnS4AAp0vAAKdMAACnTEAAp0zAAKdNQACnTYAAp03AAKdOQACnToAAp15AAKdewACnX0AAp1/AAKdggACnYMAAp2EAAKdhQACnYYAAp2IAAKdigACnYsAAp2MAAKdjgACnY8AAp3OAAKd0AACndIAAp3UAAKd1wACndgAAp3ZAAKd2gACndsAAp3dAAKd3wACneAAAp3hAAKd4wACneQAAp4JAAKeLQACnlQAAp54AAKeewACnn0AAp5/AAKegQACnoMAAp6FAAKehgACnokAAp6WAAKepQACnqcAAp6pAAKeqwACnq0AAp6vAAKesQACnrMAAp7CAAKexQACnsgAAp7LAAKezgACntEAAp7UAAKe1wACntkAAp8YAAKfGgACnxwAAp8eAAKfIQACnyIAAp8jAAKfJAACnyUAAp8nAAKfKQACnyoAAp8rAAKfLQACny4AAp9tAAKfbwACn3EAAp9zAAKfdgACn3cAAp94AAKfeQACn3oAAp98AAKffgACn38AAp+AAAKfggACn4MAAp/CAAKfxAACn8YAAp/IAAKfywACn8wAAp/NAAKfzgACn88AAp/RAAKf0wACn9QAAp/VAAKf1wACn9gAAqAXAAKgGQACoBwAAqAeAAKgIQACoCIAAqAjAAKgJAACoCUAAqAnAAKgKQACoCoAAqArAAKgLQACoC4AAqBtAAKgbwACoHEAAqBzAAKgdgACoHcAAqB4AAKgeQACoHoAAqB8AAKgfgACoH8AAqCAAAKgggACoIMAAqDCAAKgxAACoMYAAqDIAAKgywACoMwAAqDNAAKgzgACoM8AAqDRAAKg0wACoNQAAqDVAAKg1wACoNgAAqEXAAKhGQACoRsAAqEdAAKhIAACoSEAAqEiAAKhIwACoSQAAqEmAAKhKAACoSkAAqEqAAKhLAACoS0AAqE2AAKhNwACoTkAAqF8AAKhoAACocQAAqHnAAKiDgACoi4AAqJVAAKifAACopwAAqLAAAKi5AACouYAAqLpAAKi6wACou0AAqLvAAKi8gACovUAAqL3AAKi+QACovwAAqL+AAKjAAACowMAAqMGAAKjBwACoxAAAqMdAAKjIAACoyIAAqMlAAKjKAACoyoAAqNPAAKjcwACo5oAAqO+AAKjwQACo8MAAqPFAAKjxwACo8kAAqPLAAKjzAACo88AAqPcAAKj7wACo/EAAqPzAAKj9QACo/cAAqP5AAKj+wACo/0AAqP/AAKkAQACpBQAAqQXAAKkGgACpB0AAqQgAAKkIwACpCYAAqQpAAKkLAACpC8AAqQxAAKkcAACpHIAAqR1AAKkdwACpHoAAqR7AAKkfAACpH0AAqR+AAKkgAACpIIAAqSDAAKkhAACpIYAAqSHAAKkkAACpJEAAqSTAAKk0gACpNQAAqTWAAKk2AACpNsAAqTcAAKk3QACpN4AAqTfAAKk4QACpOMAAqTkAAKk5QACpOcAAqToAAKlJwACpSkAAqUsAAKlLgACpTEAAqUyAAKlMwACpTQAAqU1AAKlNwACpTkAAqU6AAKlOwACpT0AAqU+AAKlRwACpUgAAqVKAAKliQACpYsAAqWNAAKljwACpZIAAqWTAAKllAACpZUAAqWWAAKlmAACpZoAAqWbAAKlnAACpZ4AAqWfAAKl3gACpeAAAqXjAAKl5QACpegAAqXpAAKl6gACpesAAqXsAAKl7gACpfAAAqXxAAKl8gACpfQAAqX1AAKl/gACpf8AAqYBAAKmQAACpkIAAqZEAAKmRgACpkkAAqZKAAKmSwACpkwAAqZNAAKmTwACplEAAqZSAAKmUwACplUAAqZWAAKmlQACppcAAqaaAAKmnAACpp8AAqagAAKmoQACpqIAAqajAAKmpQACpqcAAqaoAAKmqQACpqsAAqasAAKmuQACproAAqa7AAKmvQACpvwAAqb+AAKnAAACpwIAAqcFAAKnBgACpwcAAqcIAAKnCQACpwsAAqcNAAKnDgACpw8AAqcRAAKnEgACp1EAAqdTAAKnVgACp1gAAqdbAAKnXAACp10AAqdeAAKnXwACp2EAAqdjAAKnZAACp2UAAqdnAAKnaAACp3cAAqeEAAKniQACp4wAAqePAAKnlAACp5cAAqeaAAKnnAACp6EAAqfsAAKoDwACqC8AAqhPAAKoUQACqFMAAqhVAAKoVwACqFoAAqhbAAKoXAACqF8AAqhgAAKoYgACqGMAAqhlAAKoaAACqGkAAqhqAAKobQACqG4AAqhzAAKogAACqIUAAqiHAAKoiQACqI4AAqiRAAKolAACqJYAAqi7AAKo3wACqQYAAqkqAAKpLQACqS8AAqkxAAKpMwACqTUAAqk3AAKpOAACqTsAAqlIAAKpWQACqVsAAqldAAKpXwACqWEAAqljAAKpZQACqWcAAqlpAAKpegACqX0AAqmAAAKpgwACqYYAAqmJAAKpjAACqY8AAqmSAAKplAACqdMAAqnVAAKp1wACqdkAAqncAAKp3QACqd4AAqnfAAKp4AACqeIAAqnkAAKp5QACqeYAAqnoAAKp6QACqigAAqoqAAKqLAACqi4AAqoxAAKqMgACqjMAAqo0AAKqNQACqjcAAqo5AAKqOgACqjsAAqo9AAKqPgACqn0AAqp/AAKqggACqoQAAqqHAAKqiAACqokAAqqKAAKqiwACqo0AAqqPAAKqkAACqpEAAqqTAAKqlAACqqEAAqqiAAKqowACqqUAAqrkAAKq5gACqugAAqrqAAKq7QACqu4AAqrvAAKq8AACqvEAAqrzAAKq9QACqvYAAqr3AAKq+QACqvoAAqs5AAKrOwACqz0AAqs/AAKrQgACq0MAAqtEAAKrRQACq0YAAqtIAAKrSgACq0sAAqtMAAKrTgACq08AAquOAAKrkAACq5IAAquUAAKrlwACq5gAAquZAAKrmgACq5sAAqudAAKrnwACq6AAAquhAAKrowACq6QAAqvjAAKr5QACq+cAAqvpAAKr7AACq+0AAqvuAAKr7wACq/AAAqvyAAKr9AACq/UAAqv2AAKr+AACq/kAAqw4AAKsOgACrDwAAqw+AAKsQQACrEIAAqxDAAKsRAACrEUAAqxHAAKsSQACrEoAAqxLAAKsTQACrE4AAqxzAAKslwACrL4AAqziAAKs5QACrOcAAqzpAAKs6wACrO0AAqzvAAKs8AACrPMAAq0AAAKtDwACrREAAq0TAAKtFQACrRcAAq0ZAAKtGwACrR0AAq0sAAKtLwACrTIAAq01AAKtOAACrTsAAq0+AAKtQQACrUMAAq2CAAKthAACrYYAAq2IAAKtiwACrYwAAq2NAAKtjgACrY8AAq2RAAKtkwACrZQAAq2VAAKtlwACrZgAAq3XAAKt2QACrdsAAq3dAAKt4AACreEAAq3iAAKt4wACreQAAq3mAAKt6AACrekAAq3qAAKt7AACre0AAq4sAAKuLgACrjAAAq4yAAKuNQACrjYAAq43AAKuOAACrjkAAq47AAKuPQACrj4AAq4/AAKuQQACrkIAAq6BAAKugwACroYAAq6IAAKuiwACrowAAq6NAAKujgACro8AAq6RAAKukwACrpQAAq6VAAKulwACrpgAAq7XAAKu2QACrtsAAq7dAAKu4AACruEAAq7iAAKu4wACruQAAq7mAAKu6AACrukAAq7qAAKu7AACru0AAq8sAAKvLgACrzAAAq8yAAKvNQACrzYAAq83AAKvOAACrzkAAq87AAKvPQACrz4AAq8/AAKvQQACr0IAAq+BAAKvgwACr4UAAq+HAAKvigACr4sAAq+MAAKvjQACr44AAq+QAAKvkgACr5MAAq+UAAKvlgACr5cAAq/iAAKwBQACsCUAArBFAAKwRwACsEkAArBLAAKwTQACsFAAArBRAAKwUgACsFUAArBWAAKwWAACsFkAArBbAAKwXgACsF8AArBgAAKwYwACsGQAArBpAAKwdgACsHsAArB9AAKwfwACsIQAArCHAAKwigACsIwAArCxAAKw1QACsPwAArEgAAKxIwACsSUAArEnAAKxKQACsSsAArEtAAKxLgACsTEAArE+AAKxTwACsVEAArFTAAKxVQACsVcAArFZAAKxWwACsV0AArFfAAKxcAACsXMAArF2AAKxeQACsXwAArF/AAKxggACsYUAArGIAAKxigACsckAArHLAAKxzQACsc8AArHSAAKx0wACsdQAArHVAAKx1gACsdgAArHaAAKx2wACsdwAArHeAAKx3wACsh4AArIgAAKyIgACsiQAArInAAKyKAACsikAArIqAAKyKwACsi0AArIvAAKyMAACsjEAArIzAAKyNAACsnMAArJ1AAKyeAACsnoAArJ9AAKyfgACsn8AArKAAAKygQACsoMAArKFAAKyhgACsocAArKJAAKyigACspcAArKYAAKymQACspsAArLaAAKy3AACst4AArLgAAKy4wACsuQAArLlAAKy5gACsucAArLpAAKy6wACsuwAArLtAAKy7wACsvAAArMvAAKzMQACszMAArM1AAKzOAACszkAArM6AAKzOwACszwAArM+AAKzQAACs0EAArNCAAKzRAACs0UAArOEAAKzhgACs4gAArOKAAKzjQACs44AArOPAAKzkAACs5EAArOTAAKzlQACs5YAArOXAAKzmQACs5oAArPZAAKz2wACs90AArPfAAKz4gACs+MAArPkAAKz5QACs+YAArPoAAKz6gACs+sAArPsAAKz7gACs+8AArQuAAK0MAACtDIAArQ0AAK0NwACtDgAArQ5AAK0OgACtDsAArQ9AAK0PwACtEAAArRBAAK0QwACtEQAArRpAAK0jQACtLQAArTYAAK02wACtN0AArTfAAK04QACtOMAArTlAAK05gACtOkAArT2AAK1BQACtQcAArUJAAK1CwACtQ0AArUPAAK1EQACtRMAArUiAAK1JQACtSgAArUrAAK1LgACtTEAArU0AAK1NwACtTkAArV4AAK1egACtX0AArV/AAK1ggACtYMAArWEAAK1hQACtYYAArWIAAK1igACtYsAArWMAAK1jgACtY8AArXOAAK10AACtdIAArXUAAK11wACtdgAArXZAAK12gACtdsAArXdAAK13wACteAAArXhAAK14wACteQAArYjAAK2JQACticAArYpAAK2LAACti0AArYuAAK2LwACtjAAArYyAAK2NAACtjUAArY2AAK2OAACtjkAArZ4AAK2egACtn0AArZ/AAK2ggACtoMAAraEAAK2hQACtoYAAraIAAK2igACtosAAraMAAK2jgACto8AArbOAAK20AACttIAArbUAAK21wACttgAArbZAAK22gACttsAArbdAAK23wACtuAAArbhAAK24wACtuQAArcjAAK3JQACtycAArcpAAK3LAACty0AArcuAAK3LwACtzAAArcyAAK3NAACtzUAArc2AAK3OAACtzkAArd4AAK3egACt3wAArd+AAK3gQACt4IAAreDAAK3hAACt4UAAreHAAK3iQACt4oAAreLAAK3jQACt44AAreXAAK3mAACt5oAArenAAK3qAACt6kAArerAAK3uAACt7kAAre6AAK3vAACt8kAArfKAAK3ywACt80AArfWAAK35QACt/IAArgBAAK4EwACuCcAArg+AAK4UAACuFkAArhaAAK4XAACuGkAArhqAAK4awACuG0AArhuAAK4dwACuIEAAriIAAAAAAAABAIAAAAAAABowQAAAAAAAAAAAAAAAAACuJA= - - + + 1 + lastPlayed + - relativePath - + darkTertiarySystemBackgroundHex + - darkTertiarySystemFillHex - + darkSeparatorHex + - remoteURL - + darkSecondarySystemFillHex + - - Account - Undefined - 3 - Account - 1 - - - + + darkSystemBackgroundHex + - - 1 - bookmarks - + + darkQuaternarySystemFillHex + - - Bookmark - Undefined - 4 - Bookmark - 1 - - - + + darkSecondarySystemBackgroundHex + - lightAccentHex - + darkAccentHex + - - Theme - Undefined - 7 - Theme - 1 - - - + + orderRank + - remoteURL - + title + - - Chapter - Undefined - 6 - Chapter - 1 - - - + + lightSecondarySystemBackgroundHex + - lightSystemFillHex - + date + - - darkSecondaryHex - + + 1 + chapters + - - PlaybackRecord - Undefined - 9 - PlaybackRecord + 1 - - - + items + 1 - book - + bookmarks + - duration - + title + - id - + index + - uuid - + duration + - - index - + + 1 + hardcoverBook + - relativePath - - - - title - + originalFileName + - + + Chapter + Undefined + 1 + Chapter 1 - folder - + + + - - lightTertiarySystemFillHex - + + start + - + + BookPlayer.UUIDMigrationPolicy + Folder + Undefined + 6 + Folder 1 - lastPlayed - + + + - - 1 - hardcoverBook - + + artworkURL + + + + isFinished + - author - + duration + - time - + duration + - details - - - - type - + relativePath + - - id - + + BookPlayer.UUIDMigrationPolicy + Book + Undefined + 5 + Book + 1 + + + - + 1 - library - + folder + + + + originalFileName + - email - + darkSystemGroupedBackgroundHex + - originalFileName - + id + - - 1 - library - + + time + - userBookID - + details + - - orderRank - + + 1 + library + - duration - + status + - - 1 - lastPlayed - + + author + - lightSeparatorHex - + type + - status - + note + - - hasSubscription - + + 1 + selected + - - lastPlayDate - + + 1 + library + - orderRank - + lightTertiarySystemFillHex + - note - + title + - details - + lightSystemBackgroundHex + - - 1 - item - + + type + - lightSecondarySystemBackgroundHex - + lightSecondaryHex + - lightTertiarySystemBackgroundHex - + lightSystemGroupedBackgroundHex + - darkSeparatorHex - + lightAccentHex + - darkSystemGroupedBackgroundHex - + lightQuaternarySystemFillHex + - - BookPlayer.UUIDMigrationPolicy - Book - Undefined - 5 - Book - 1 - - - + + darkTertiarySystemFillHex + - darkSystemBackgroundHex - + lightPrimaryHex + - artworkURL - + darkSecondaryHex + - - 1 - selected - + + darkSystemFillHex + - - lastPlayDate - + + 1 + book + - donationMade - + darkPrimaryHex + - type - + speed + - darkQuaternarySystemFillHex - + type + - - percentCompleted - + + 1 + bookmarks + - - uuid - + + 1 + folder + 1 - bookmarks - + extractedThemes + - title - + orderRank + - - 1 - chapters - + + speed + - isFinished - - - - title - + uuid + - + 1 - libraryItem - + currentTheme + - - Library - Undefined - 2 - Library - 1 - - - + + percentCompleted + - - BookPlayer.UUIDMigrationPolicy - Folder + + remoteURL + + + + relativePath + + + + PlaybackRecord Undefined - 8 - Folder + 7 + PlaybackRecord 1 - - - - - - speed - + + + - lightSecondarySystemFillHex - + details + - - darkSystemFillHex - + + Theme + Undefined + 2 + Theme + 1 + + + - - lightQuaternarySystemFillHex - + + Account + Undefined + 9 + Account + 1 + + + - - darkPrimaryHex - + + Library + Undefined + 8 + Library + 1 + + + HardcoverBook Undefined - 1 + 4 HardcoverBook 1 - - - + + + - artworkURL - + remoteURL + 1 - items - + library + \ No newline at end of file diff --git a/Shared/CoreData/Migrations/MappingModel_v11_to_v12.xcmappingmodel/xcmapping.xml b/Shared/CoreData/Migrations/MappingModel_v11_to_v12.xcmappingmodel/xcmapping.xml new file mode 100644 index 000000000..75fd7d2b2 --- /dev/null +++ b/Shared/CoreData/Migrations/MappingModel_v11_to_v12.xcmappingmodel/xcmapping.xml @@ -0,0 +1,607 @@ + + + + + + 134481920 + A60A657B-C3AF-4DC0-95E3-F6B0B2490805 + 217 + + + + NSPersistenceFrameworkVersion + 1523 + NSPersistenceMaximumFrameworkVersion + 1523 + NSStoreModelVersionChecksumKey + bMpud663vz0bXQE24C6Rh4MvJ5jVnzsD2sI3njZkKbc= + NSStoreModelVersionHashes + + XDDevAttributeMapping + + 0plcXXRN7XHKl5CcF+fwriFmUpON3ZtcI/AfK748aWc= + + XDDevEntityMapping + + qeN1Ym3TkWN1G6dU9RfX6Kd2ccEvcDVWHpd3LpLgboI= + + XDDevMappingModel + + EqtMzvRnVZWkXwBHu4VeVGy8UyoOe+bi67KC79kphlQ= + + XDDevPropertyMapping + + XN33V44TTGY4JETlMoOB5yyTKxB+u4slvDIinv0rtGA= + + XDDevRelationshipMapping + + akYY9LhehVA/mCb4ATLWuI9XGLcjpm14wWL1oEBtIcs= + + + NSStoreModelVersionHashesDigest + +Hmc2uYZK6og+Pvx5GUJ7oW75UG4V/ksQanTjfTKUnxyGWJRMtB5tIRgVwGsrd7lz/QR57++wbvWsr6nxwyS0A== + NSStoreModelVersionHashesVersion + 3 + NSStoreModelVersionIdentifiers + + + + + + + + + 1 + lastPlayed + + + + darkSystemGroupedBackgroundHex + + + + title + + + + darkTertiarySystemBackgroundHex + + + + darkSystemBackgroundHex + + + + type + + + + 1 + hardcoverBook + + + + 1 + lastPlayed + + + + userBookID + + + + note + + + + 1 + library + + + + darkAccentHex + + + + artworkURL + + + + 1 + externalResources + + + + title + + + + darkSecondarySystemBackgroundHex + + + + id + + + + Theme + Undefined + 5 + Theme + 1 + + + + + + providerName + + + + lightSystemBackgroundHex + + + + processedFile + + + + lightSystemFillHex + + + + lightSecondaryHex + + + + 1 + selected + + + + 1 + libraryItem + + + + lightTertiarySystemBackgroundHex + + + + duration + + + + 1 + folder + + + + author + + + + remoteURL + + + + title + + + + relativePath + + + + 1 + libraryItem + + + + type + + + + lastPlayDate + + + + start + + + + percentCompleted + + + + 1 + chapters + + + + Account + Undefined + 4 + Account + 1 + + + + + + originalFileName + + + + Undefined + 10 + ExternalResource + 1 + + + + + + Folder + Undefined + 7 + Folder + 1 + + + + + + Chapter + Undefined + 1 + Chapter + 1 + + + + + + Library + Undefined + 9 + Library + 1 + + + + + + donationMade + + + + orderRank + + + + currentTime + + + + PlaybackRecord + Undefined + 2 + PlaybackRecord + 1 + + + + + + currentTime + + + + isFinished + + + + date + + + + details + + + + isFinished + + + + uuid + + + + duration + + + + percentCompleted + + + + orderRank + + + + 1 + bookmarks + + + + 1 + bookmarks + + + + 1 + externalResources + + + + hasSubscription + + + + darkSeparatorHex + + + + id + + + + duration + + + + artworkURL + + + + darkSystemFillHex + + + + time + + + + 1 + items + + + + speed + + + + artworkURL + + + + darkSecondaryHex + + + + 1 + folder + + + + title + + + + email + + + + time + + + + relativePath + + + + darkSecondarySystemFillHex + + + + id + + + + 1 + book + + + + 1 + item + + + + darkPrimaryHex + + + + darkQuaternarySystemFillHex + + + + lightSeparatorHex + + + + speed + + + + 1 + hardcoverBook + + + + lightSecondarySystemBackgroundHex + + + + lightPrimaryHex + + + + lightTertiarySystemFillHex + + + + lightQuaternarySystemFillHex + + + + lightSystemGroupedBackgroundHex + + + + lightSecondarySystemFillHex + + + + status + + + + 1 + library + + + + 1 + currentTheme + + + + 1 + extractedThemes + + + + 1 + items + + + + title + + + + 1 + lastPlayedItem + + + + hostId + + + + lastSyncedAt + + + + providerId + + + + syncStatus + + + + 1 + library + + + + Bookmark + Undefined + 8 + Bookmark + 1 + + + + + + HardcoverBook + Undefined + 6 + HardcoverBook + 1 + + + + + + Book + Undefined + 3 + Book + 1 + + + + + + darkTertiarySystemFillHex + + + + uuid + + + + details + + + + type + + + + index + + + + remoteURL + + + + Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 11.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 +cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIMwALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPXA9gD4APsBAAEDwQeBC0EMQRABE8EXgRtBHwEiASaBKkEuATHBNYE5QT0BQMFCwUgBSEFKQUqBTYFSgVZBWgFdwV7BYoFmQWoBbcFxgXSBeQF5QXmBecF6AXpBeoF6wX6BgkGGAYnBigGNwZGBlUGXQZyBnMGewaHBpsGqga5BsgGzAbbBuoG+QcIBxcHIwc1B0QHUwdUB2MHcgeMB40HkwefB7UHxAfHB9YH5QfoB/cIBggJCBgIJwgrCDoISQhKCFwIXQheCF8IYAhhCGIIdwh4CIAIjAigCK8IvgjNCNEI4AjvCP4JDQkcCSgJOglJCUoJWQloCXcJeAmHCZYJpQm6CbsJwwnPCeMJ8goBChAKFAojCjIKQQpQCl8Kawp9CowKmwqqCrkKyArXCuYK+wr8CwQLEAskCzMLQgtRC1ULZAtzC4ILkQugC6wLvgvNC9wL6wv6C/sMCgwZDCgMPQw+DEYMUgxmDHUMhAyTDJcMpgy1DMQM0wziDO4NAA0PDR4NLQ08DUsNWg1pDX4Nfw2HDZMNpw22DcUN1A3YDecN9g4FDhQOIw4vDkEOUA5fDm4OfQ6MDpsOqg6/DsAOyA7UDugO9w8GDxUPGQ8oDzcPRg9VD2QPcA+CD5EPoA+vD74Pvw/OD90P7BABEAIQChAWECoQORBIEFcQWxBqEHkQiBCXEKYQshDEENMQ4hDxEQARDxEeES0RLhExEToRSRFYEWcRfBF9EYURkRGlEbQRwxHSEdYR5RH0EgMSEhIhEi0SPxJOEk8SXhJtEnwSfRKMEpsSqhK/EsASyBLUEugS9xMGExUTGRMoEzcTRhNVE2QTcBOCE5EToBOvE74TzRPcE+sUABQBFAkUFRQpFDgURxRWFFoUaRR4FIcUlhSlFLEUwxTSFOEU8BT/FQ4VHRUsFUEVQhVKFVYVahV5FYgVlxWbFaoVuRXIFdcV5hXyFgQWExYUFiMWMhZBFkIWURZgFm8WhBaFFo0WmRatFrwWyxbaFt4W7Rb8FwsXGhcpFzUXRxdWF2UXdBeDF5IXoRewF8UXxhfOF9oX7hf9GAwYGxgfGC4YPRhMGFsYahh2GIgYlximGLUYxBjTGOIY8RkGGQcZDxkbGS8ZPhlNGVwZYBlvGX4ZjRmcGasZtxnJGdgZ5xn2GgUaBhoVGiQaMxpIGkkaURpdGnEagBqPGp4aohqxGsAazxreGu0a+RsLGxobKRs4G0cbYRtiG2gbdBuKG5kbnBurG7obvRvMG9sb3hvtG/wcABwPHB4cKhwrHCwcLRxCHEMcSxxXHGscehyJHJgcnByrHLocyRzYHOcc8x0FHRQdIx0yHUEdUB1fHW4dgx2EHYwdmB2sHbsdyh3ZHd0d7B37HgoeGR4oHjQeRh5VHmQecx6CHpEeoB6vHsQexR7NHtke7R78HwsfGh8eHy0fPB9LH1ofaR91H4cflh+lH7Qfwx/SH+Ef8CAFIAYgDiAaIC4gPSBMIFsgXyBuIH0gjCCbIKogtiDIINcg5iD1IQQhHiEfISUhMSFHIVYhWSFoIWkheCF7IYohmSGcIashuiG+Ic0h3CIWIhciGCIZIhoiGyIcIh0iHiIfIiAiISIiIiMiJCIlIiYiJyIoIikiKiIrIiwiLSIuIi8iRCJFIk0iWSJtInwiiyKaIp4irSK8Issi2iLbIuoi9iMIIxcjJiM1I0QjUyNiI3EjhiOHI48jmyOvI74jzSPcI+Aj7yP+JA0kHCQrJDckSSRYJGckdiSFJJQkoySyJMckyCTQJNwk8CT/JQ4lHSUhJTAlPyVOJV0lbCV4JYolmSWoJbclxiXVJeQl8yYIJgkmESYdJjEmQCZPJl4mYiZxJoAmjyaeJp8mria6Jswm2ybqJvknCCcXJyYnNSdKJ0snUydfJ3MngieRJ6AnpCezJ8In0SfgJ+8n+ygNKBwoKyg6KEkoWChnKHYoiyiMKJQooCi0KMMo0ij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UWJVYqlirWLNYv1jTWOJY8VkAWQRZE1kiWTFZQFlPWVtZbVl8WYtZmlmpWbhZx1nWWetZ7Fn0WgBaFFojWjJaQVpFWlRaY1pyWoFakFqcWq5avVrMWtta6lr5WwhbF1ssWy1bNVtBW1VbZFtzW4JbhluVW6Rbs1vCW9Fb3VvvW/5cDVwcXCtcOlxJXFhcbVxuXHZcglyWXKVctFzDXMdc1lzlXPRdA10SXR5dMF0/XU5dXV1sXXtdil2ZXa5dr123XcNd113mXfVeBF4IXhdeJl41XkReU15fXnFegF6PXp5erV68Xste2l7dXuxe+18KXw5fD18VXxxfHV8sXztfSl9OX2hfaV9vX3tfkV+gX6Nfsl/BX8Rf01/iX+Vf9GADYAdgFmAlYDFgMmAzYDRgSWBKYFJgXmByYIFgkGCfYKNgsmDBYNBg32DuYPphDGEbYSphOWFIYVdhZmF1YYphi2GTYZ9hs2HCYdFh4GHkYfNiAmIRYiBiL2I7Yk1iXGJrYnpiiWKYYqditmLLYsxi1GLgYvRjA2MSYyFjJWM0Y0NjUmNhY3BjfGOOY51jrGO7Y8pj2WPoY/dkDGQNZBVkIWQ1ZERkU2RiZGZkdWSEZJNkomSxZL1kz2TeZO1k/GULZRplKWU4ZTtlVWVWZVxlaGV+ZY1lkGWfZa5lsWXAZc9l0mXhZfBl9GYDZhJmE2YbZhxmMWYyZjpmRmZaZmlmeGaHZotmmmapZrhmx2bWZuJm9GcDZxJnIWcwZz9nTmddZ3Jnc2d7Z4dnm2eqZ7lnyGfMZ9tn6mf5aAhoF2gjaDVoRGhTaGJocWiAaI9onmihaKVoqWitaLVouGi8aL1VJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCDKAAIEIL4EIMIEIMd4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEILYEIK4ABgASAAIEILIEILhAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEUAUFdOUy5rZXlzWk5TLm9iamVjdHOqADsAPAA9AD4APwBAAEEAQgBDAESABoAHgAiACYAKgAuADIANgA6AD6oARgBHAEgASQBKAEsATABNAE4AT4AQgNeBBraBBg+BBt6AYYEHdIEH54ECVoECxYAvVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbVdBY2NvdW50XlBsYXliYWNrUmVjb3JkV0xpYnJhcnlVVGhlbWXfEBAAXABdAF4AXwAfAGAAYQAhAGIAYwAOACMAZABlACYAZgBnAGgAJwAnABMAbABtAC8AJwBnAHAAOwBnAHMAdAB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gBKANoAEgASAAoATgQGWgASAEoEBmIAGgBKBB3OAEQgS1//+FVdvcmRlcmVk0wA4ADkADgB5AHsAUKEAeoAUoQB8gBWAL15YRF9QU3RlcmVvdHlwZdkAHwAjAIAADgAmAIEAIQBmAIIARgB6AGcAhgAVACcALwB1AIpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAEIAUgBKANYAAgAQIgBbTADgAOQAOAIwAlgBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6kAlwCYAJkAmgCbAJwAnQCeAJ+AIIAkgCaAKIApgCuALYAwgDSAL18QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAZWERfUFNLX2ZldGNoUmVxdWVzdHNBcnJheV8QEVhEX1BTS19pc0Fic3RyYWN0XxAPWERfUFNLX3VzZXJJbmZvXxATWERfUFNLX2NsYXNzTWFwcGluZ18QFlhEX1BTS19lbnRpdHlDbGFzc05hbWXfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQC2ABUAfAB1AHUAdQAvAHUAvQCNAHUAdQAVAHVVX3R5cGVYX2RlZmF1bHRcX2Fzc29jaWF0aW9uW19pc1JlYWRPbmx5WV9pc1N0YXRpY1lfaXNVbmlxdWVaX2lzRGVyaXZlZFpfaXNPcmRlcmVkXF9pc0NvbXBvc2l0ZVdfaXNMZWFmgACAIYAAgBUICAgIgCOAFwgIgAAI0gA5AA4AxADFoIAi0gDHAMgAyQDKWiRjbGFzc25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjAMkAywDMV05TQXJyYXlYTlNPYmplY3TSAMcAyADOAM9fEBBYRFVNTFByb3BlcnR5SW1wpADQANEA0gDMXxAQWERVTUxQcm9wZXJ0eUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUA1QAVAHwAdQB1AHUALwB1AL0AjgB1AHUAFQB1gACAJYAAgBUICAgIgCOAGAgIgAAIWlBsYXlsaXN0VjPfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQDlABUAfAB1AHUAdQAvAHUAvQCPAHUAdQAVAHWAAIAngACAFQgICAiAI4AZCAiAAAjSADkADgDzAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUAfAB1AHUAdQAvAHUAvQCQAHUAdQAVAHWAAIAAgACAFQgICAiAI4AaCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEGABUAfAB1AHUAdQAvAHUAvQCRAHUAdQAVAHWAAIAqgACAFQgICAiAI4AbCAiAAAjSADkADgEUAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUAfAB1AHUAdQAvAHUAvQCSAHUAdQAVAHWAAIAsgACAFQgICAiAI4AcCAiAAAgI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBKAAVAHwAdQB1AHUALwB1AL0AkwB1AHUAFQB1gACALoAAgBUICAgIgCOAHQgIgAAI0wA4ADkADgE2ATcAUKCggC/SAMcAyAE6ATtfEBNOU011dGFibGVEaWN0aW9uYXJ5owE6ATwAzFxOU0RpY3Rpb25hcnnfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQE/ABUAfAB1AHUAdQAvAHUAvQCUAHUAdQAVAHWAAIAxgACAFQgICAiAI4AeCAiAAAjWACMADgAmAGYAHwAhAU0BTgAVAHUAFQAvgDKAM4AACIAAXxAUWERHZW5lcmljUmVjb3JkQ2xhc3PSAMcAyAFUAVVdWERVTUxDbGFzc0ltcKYBVgFXAVgBWQFaAMxdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQA7ABUAfAB1AHUAdQAvAHUAvQCVAHUAdQAVAHWAAIAGgACAFQgICAiAI4AfCAiAAAjSAMcAyAFrAWxfEBJYRFVNTFN0ZXJlb3R5cGVJbXCnAW0BbgFvAXABcQFyAMxfEBJYRFVNTFN0ZXJlb3R5cGVJbXBdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDTADgAOQAOAXQBdgBQoQF1gDehAXeAOIAvVWl0ZW1z3xASAKsArACtAXsAHwCvALABfAAhAK4BfQCxAA4AIwCyALMAJgC0ABUAFQAVACcARgB1AHUBhQAvAHUAZwB1AYkBdQB1AHUBjQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAEAgIgDoIgBIIgKCANwgIgDkIEraNFeTTADgAOQAOAZEBlABQogGSAZOAO4A8ogGVAZaAPYBSgC9fEBJYRF9QUHJvcFN0ZXJlb3R5cGVfEBBYRF9QUl9TdGVyZW90eXBl2QAfACMBmwAOACYBnAAhAGYBnQF3AZIAZwCGABUAJwAvAHUBpV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYA4gDuAEoA1gACABAiAPtMAOAA5AA4BpwGwAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoAbEBsgGzAbQBtQG2AbcBuIBHgEiASYBLgEyAToBPgFGAL18QG1hEX1BQU0tfaXNTdG9yZWRJblRydXRoRmlsZV8QG1hEX1BQU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8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leF8QHmRhcmtTeXN0ZW1Hcm91cGVkQmFja2dyb3VuZEhleF8QIGRhcmtTZWNvbmRhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAYbGlnaHRTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAQZGFya1NlcGFyYXRvckhleF8QEWRhcmtTeXN0ZW1GaWxsSGV4XxAabGlnaHRUZXJ0aWFyeVN5c3RlbUZpbGxIZXhebGlnaHRBY2NlbnRIZXhfEBFsaWdodFNlcGFyYXRvckhleF8QEmxpZ2h0U3lzdGVtRmlsbEhleF8QD2xpZ2h0UHJpbWFyeUhleF5kYXJrUHJpbWFyeUhleF8QF2RhcmtTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAZZGFya1RlcnRpYXJ5U3lzdGVtRmlsbEhleF8QG2xpZ2h0U2Vjb25kYXJ5U3lzdGVtRmlsbEhleFhzZWxlY3RlZF1kYXJrQWNjZW50SGV4XxAgbGlnaHRUZXJ0aWFyeVN5c3RlbUJhY2tncm91bmRIZXhfEB9saWdodFN5c3RlbUdyb3VwZWRCYWNrZ3JvdW5kSGV43xASAKsArACtIjAAHwCvALAiMQAhAK4iMgCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHUiOgAvAHUAZwB1BRoh3gB1AHUiQgB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEC9AiAEgiAwYEC2QgIgQLzCBKq7Q8g0wA4ADkADiJGIkkAUKIBkgUkgDuApKIiSiJLgQL1gQMBgC/ZAB8AIyJOAA4AJiJPACEAZiJQIfoBkgBnAIYAFQAnAC8AdSJYXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQLygDuAEoA1gACABAiBAvbTADgAOQAOIloiYwBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqCJkImUiZiJnImgiaSJqImuBAveBAviBAvmBAvuBAvyBAv2BAv6BAwCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSJKAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEC9QgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUiSgB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBAvUICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUijQAVIkoAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBAvqAAIEC9QgICAiAI4BBCAiAAAjTADgAOQAOIpsinABQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSJKAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEC9QgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUiSgB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBAvUICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVIkoAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQL1CAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVIs0AFSJKAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgQL/gACBAvUICAgIgCOARQgIgAAIXxAQZGFya1NlY29uZGFyeUhleN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSJKAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEC9QgICAiAI4BGCAiAAAjZAB8AIyLrAA4AJiLsACEAZiLtIfoFJABnAIYAFQAnAC8AdSL1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQLygKSAEoA1gACABAiBAwLTADgAOQAOIvci/wBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinIwAjASMCIwMjBCMFIwaBAwOBAwSBAwWBAwaBAweBAwiBAwmAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSJLAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEDAQgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUiSwB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBAwEICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVIksAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQMBCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFSJLAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEDAQgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUiSwB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBAwEICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVIksAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQMBCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSJLAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEDAQgICAiAI4C4CAiAAAjfEBIAqwCsAK0jcgAfAK8AsCNzACEAriN0ALEADgAjALIAswAmALQAFQAVABUAJwBPAHUAdSN8AC8AdQBnAHUFGiHfAHUAdSOEAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECxQgIgQMMCIASCIDBgQLaCAiBAwsIEvT5pUPTADgAOQAOI4gjiwBQogGSBSSAO4CkoiOMI42BAw2BAxiAL9kAHwAjI5AADgAmI5EAIQBmI5Ih+wGSAGcAhgAVACcALwB1I5pfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAwqAO4ASgDWAAIAECIEDDtMAOAA5AA4jnCOlAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoI6YjpyOoI6kjqiOrI6wjrYEDD4EDEIEDEYEDE4EDFIEDFYEDFoEDF4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVI4wAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQMNCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSOMAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEDDQgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFSPPABUjjAB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEDEoAAgQMNCAgICIAjgEEICIAACNMAOAA5AA4j3SPeAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVI4wAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQMNCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFSOMAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEDDQgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUjjAB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBAw0ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVI4wAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQMNCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSOMAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEDDQgICAiAI4BGCAiAAAjZAB8AIyQsAA4AJiQtACEAZiQuIfsFJABnAIYAFQAnAC8AdSQ2XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQMKgKSAEoA1gACABAiBAxnTADgAOQAOJDgkQABQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinJEEkQiRDJEQkRSRGJEeBAxqBAxuBAxyBAx2BAx6BAx+BAyCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSONAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEDGAgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUjjQB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBAxgICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVI40AdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQMYCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFSONAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEDGAgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUjjQB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBAxgICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVI40AdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQMYCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSONAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEDGAgICAiAI4C4CAiAAAjfEBIAqwCsAK0kswAfAK8AsCS0ACEAriS1ALEADgAjALIAswAmALQAFQAVABUAJwBPAHUAdSS9AC8AdQBnAHUFGiHgAHUAdSTFAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECxQgIgQMjCIASCIDBgQLbCAiBAyIIEutE7cDTADgAOQAOJMkkzABQogGSBSSAO4CkoiTNJM6BAySBAy+AL9kAHwAjJNEADgAmJNIAIQBmJNMh/AGSAGcAhgAVACcALwB1JNtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAyGAO4ASgDWAAIAECIEDJdMAOAA5AA4k3STmAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoJOck6CTpJOok6yTsJO0k7oEDJoEDJ4EDKIEDKoEDK4EDLIEDLYEDLoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVJM0AdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQMkCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSTNAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEDJAgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFSUQABUkzQB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEDKYAAgQMkCAgICIAjgEEICIAACNMAOAA5AA4lHiUfAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVJM0AdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQMkCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFSTNAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEDJAgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUkzQB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBAyQICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVJM0AdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQMkCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSTNAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEDJAgICAiAI4BGCAiAAAjZAB8AIyVtAA4AJiVuACEAZiVvIfwFJABnAIYAFQAnAC8AdSV3XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQMhgKSAEoA1gACABAiBAzDTADgAOQAOJXklgQBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinJYIlgyWEJYUlhiWHJYiBAzGBAzKBAzOBAzSBAzWBAzaBAzeAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSTOAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEDLwgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUkzgB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBAy8ICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVJM4AdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQMvCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFSTOAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEDLwgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUkzgB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBAy8ICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVJM4AdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQMvCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSTOAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEDLwgICAiAI4C4CAiAAAjfEBIAqwCsAK0l9AAfAK8AsCX1ACEAriX2ALEADgAjALIAswAmALQAFQAVABUAJwBPAHUAdSX+AC8AdQBnAHUFGiHhAHUAdSYGAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECxQgIgQM6CIASCIDBgQLcCAiBAzkIEmXpNPvTADgAOQAOJgomDQBQogGSBSSAO4CkoiYOJg+BAzuBA0eAL9kAHwAjJhIADgAmJhMAIQBmJhQh/QGSAGcAhgAVACcALwB1JhxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAziAO4ASgDWAAIAECIEDPNMAOAA5AA4mHiYnAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoJigmKSYqJismLCYtJi4mL4EDPYEDPoEDP4EDQYEDQoEDQ4EDRIEDRoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVJg4AdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQM7CAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSYOAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEDOwgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFSZRABUmDgB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEDQIAAgQM7CAgICIAjgEEICIAACNMAOAA5AA4mXyZgAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVJg4AdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQM7CAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSYOAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEDOwgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUmDgB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBAzsICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUmkQAVJg4AdQB1AHUALwB1AL0BrgB1AHUAFQB1gACBA0WAAIEDOwgICAiAI4BFCAiAAAhfEBNkZWZhdWx0U2Vjb25kYXJ5SGV43xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVJg4AdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQM7CAgICIAjgEYICIAACNkAHwAjJq8ADgAmJrAAIQBmJrEh/QUkAGcAhgAVACcALwB1JrlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAziApIASgDWAAIAECIEDSNMAOAA5AA4muybDAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKcmxCbFJsYmxybIJskmyoEDSYEDSoEDS4EDTIEDTYEDToEDT4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVJg8AdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQNHCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSYPAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEDRwgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUmDwB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBA0cICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVJg8AdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQNHCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSYPAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEDRwgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUmDwB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBA0cICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVJg8AdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQNHCAgICIAjgLgICIAACN8QEgCrAKwArSc2AB8ArwCwJzcAIQCuJzgAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1J0AALwB1AGcAdQUaIeIAdQB1J0gAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBA1IIgBIIgMGBAt0ICIEDUQgTAAAAAQBpa9LTADgAOQAOJ0wnTwBQogGSBSSAO4CkoidQJ1GBA1OBA16AL9kAHwAjJ1QADgAmJ1UAIQBmJ1Yh/gGSAGcAhgAVACcALwB1J15fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA1CAO4ASgDWAAIAECIEDVNMAOAA5AA4nYCdpAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoJ2onaydsJ20nbidvJ3AncYEDVYEDVoEDV4EDWYEDWoEDW4EDXIEDXYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVJ1AAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQNTCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSdQAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEDUwgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFSeTABUnUAB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEDWIAAgQNTCAgICIAjgEEICIAACNMAOAA5AA4noSeiAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVJ1AAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQNTCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFSdQAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEDUwgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUnUAB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBA1MICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVJ1AAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQNTCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSdQAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEDUwgICAiAI4BGCAiAAAjZAB8AIyfwAA4AJifxACEAZifyIf4FJABnAIYAFQAnAC8AdSf6XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQNQgKSAEoA1gACABAiBA1/TADgAOQAOJ/woBABQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinKAUoBigHKAgoCSgKKAuBA2CBA2GBA2KBA2OBA2SBA2WBA2aAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSdRAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEDXggICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUnUQB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBA14ICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVJ1EAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQNeCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFSdRAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEDXggICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUnUQB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBA14ICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVJ1EAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQNeCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSdRAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEDXggICAiAI4C4CAiAAAjfEBIAqwCsAK0odwAfAK8AsCh4ACEArih5ALEADgAjALIAswAmALQAFQAVABUAJwBPAHUAdSiBAC8AdQBnAHUFGiHjAHUAdSiJAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECxQgIgQNpCIASCIDBgQLeCAiBA2gIEwAAAAEr6w6J0wA4ADkADiiNKJAAUKIBkgUkgDuApKIokSiSgQNqgQN1gC/ZAB8AIyiVAA4AJiiWACEAZiiXIf8BkgBnAIYAFQAnAC8AdSifXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQNngDuAEoA1gACABAiBA2vTADgAOQAOKKEoqgBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqCirKKworSiuKK8osCixKLKBA2yBA22BA26BA3CBA3GBA3KBA3OBA3SAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSiRAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEDaggICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUokQB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBA2oICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUo1AAVKJEAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBA2+AAIEDaggICAiAI4BBCAiAAAjTADgAOQAOKOIo4wBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSiRAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEDaggICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUokQB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBA2oICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVKJEAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQNqCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSiRAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEDaggICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUokQB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBA2oICAgIgCOARggIgAAI2QAfACMpMQAOACYpMgAhAGYpMyH/BSQAZwCGABUAJwAvAHUpO18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEDZ4CkgBKANYAAgAQIgQN20wA4ADkADik9KUUAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pylGKUcpSClJKUopSylMgQN3gQN4gQN5gQN6gQN7gQN8gQN9gC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUokgB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBA3UICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVKJIAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQN1CAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSiSAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEDdQgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABUokgB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBA3UICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVKJIAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQN1CAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSiSAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEDdQgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUokgB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBA3UICAgIgCOAuAgIgAAI3xASAKsArACtKbgAHwCvALApuQAhAK4pugCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHUpwgAvAHUAZwB1BRoh5AB1AHUpygB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEDgAiAEgiAwYEC3wgIgQN/CBJusLb20wA4ADkADinOKdEAUKIBkgUkgDuApKIp0inTgQOBgQOMgC/ZAB8AIynWAA4AJinXACEAZinYIgABkgBnAIYAFQAnAC8AdSngXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQN+gDuAEoA1gACABAiBA4LTADgAOQAOKeIp6wBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqCnsKe0p7invKfAp8SnyKfOBA4OBA4SBA4WBA4eBA4iBA4mBA4qBA4uAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSnSAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEDgQgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUp0gB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBA4EICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUqFQAVKdIAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBA4aAAIEDgQgICAiAI4BBCAiAAAjTADgAOQAOKiMqJABQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSnSAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEDgQgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUp0gB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBA4EICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVKdIAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQOBCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSnSAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEDgQgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUp0gB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBA4EICAgIgCOARggIgAAI2QAfACMqcgAOACYqcwAhAGYqdCIABSQAZwCGABUAJwAvAHUqfF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEDfoCkgBKANYAAgAQIgQON0wA4ADkADip+KoYAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pyqHKogqiSqKKosqjCqNgQOOgQOPgQOQgQORgQOSgQOTgQOUgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUp0wB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBA4wICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVKdMAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQOMCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSnTAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEDjAgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABUp0wB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBA4wICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVKdMAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQOMCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSnTAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEDjAgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUp0wB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBA4wICAgIgCOAuAgIgAAI3xASAKsArACtKvkAHwCvALAq+gAhAK4q+wCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHUrAwAvAHUAZwB1BRoh5QB1AHUrCwB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEDlwiAEgiAwYEC4AgIgQOWCBK8TIB10wA4ADkADisPKxIAUKIBkgUkgDuApKIrEysUgQOYgQOjgC/ZAB8AIysXAA4AJisYACEAZisZIgEBkgBnAIYAFQAnAC8AdSshXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQOVgDuAEoA1gACABAiBA5nTADgAOQAOKyMrLABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqCstKy4rLyswKzErMiszKzSBA5qBA5uBA5yBA56BA5+BA6CBA6GBA6KAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSsTAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEDmAgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUrEwB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBA5gICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUrVgAVKxMAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBA52AAIEDmAgICAiAI4BBCAiAAAjTADgAOQAOK2QrZQBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSsTAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEDmAgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUrEwB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBA5gICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVKxMAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQOYCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSsTAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEDmAgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUrEwB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBA5gICAgIgCOARggIgAAI2QAfACMrswAOACYrtAAhAGYrtSIBBSQAZwCGABUAJwAvAHUrvV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEDlYCkgBKANYAAgAQIgQOk0wA4ADkADiu/K8cAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pyvIK8kryivLK8wrzSvOgQOlgQOmgQOngQOogQOpgQOqgQOrgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUrFAB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBA6MICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVKxQAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQOjCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSsUAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEDowgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABUrFAB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBA6MICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVKxQAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQOjCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSsUAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEDowgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUrFAB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBA6MICAgIgCOAuAgIgAAI3xASAKsArACtLDoAHwCvALAsOwAhAK4sPACxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHUsRAAvAHUAZwB1BRoh5gB1AHUsTAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEDrgiAEgiAwYEC4QgIgQOtCBLUa0Lg0wA4ADkADixQLFMAUKIBkgUkgDuApKIsVCxVgQOvgQO6gC/ZAB8AIyxYAA4AJixZACEAZixaIgIBkgBnAIYAFQAnAC8AdSxiXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQOsgDuAEoA1gACABAiBA7DTADgAOQAOLGQsbQBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqCxuLG8scCxxLHIscyx0LHWBA7GBA7KBA7OBA7WBA7aBA7eBA7iBA7mAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSxUAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEDrwgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUsVAB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBA68ICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUslwAVLFQAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBA7SAAIEDrwgICAiAI4BBCAiAAAjTADgAOQAOLKUspgBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSxUAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEDrwgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUsVAB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBA68ICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVLFQAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQOvCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSxUAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEDrwgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUsVAB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBA68ICAgIgCOARggIgAAI2QAfACMs9AAOACYs9QAhAGYs9iICBSQAZwCGABUAJwAvAHUs/l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEDrICkgBKANYAAgAQIgQO70wA4ADkADi0ALQgAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4py0JLQotCy0MLQ0tDi0PgQO8gQO9gQO+gQO/gQPAgQPBgQPCgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUsVQB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBA7oICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVLFUAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQO6CAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSxVAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEDuggICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABUsVQB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBA7oICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVLFUAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQO6CAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSxVAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEDuggICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUsVQB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBA7oICAgIgCOAuAgIgAAI3xASAKsArACtLXsAHwCvALAtfAAhAK4tfQCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHUthQAvAHUAZwB1BRoh5wB1AHUtjQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEDxQiAEgiAwYEC4ggIgQPECBJsU+gY0wA4ADkADi2RLZQAUKIBkgUkgDuApKItlS2WgQPGgQPSgC/ZAB8AIy2ZAA4AJi2aACEAZi2bIgMBkgBnAIYAFQAnAC8AdS2jXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQPDgDuAEoA1gACABAiBA8fTADgAOQAOLaUtrgBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqC2vLbAtsS2yLbMttC21LbaBA8iBA8mBA8qBA8yBA82BA86BA8+BA9GAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFS2VAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEDxggICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUtlQB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBA8YICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUt2AAVLZUAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBA8uAAIEDxggICAiAI4BBCAiAAAjTADgAOQAOLeYt5wBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFS2VAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEDxggICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUtlQB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIAsgACBA8YICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVLZUAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQPGCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVLhgAFS2VAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgQPQgACBA8YICAgIgCOARQgIgAAIXxAUZGVmYXVsdEJhY2tncm91bmRIZXjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUtlQB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBA8YICAgIgCOARggIgAAI2QAfACMuNgAOACYuNwAhAGYuOCIDBSQAZwCGABUAJwAvAHUuQF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEDw4CkgBKANYAAgAQIgQPT0wA4ADkADi5CLkoAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4py5LLkwuTS5OLk8uUC5RgQPUgQPVgQPWgQPXgQPYgQPZgQPagC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUtlgB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBA9IICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVLZYAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQPSCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFS2WAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIED0ggICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABUtlgB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBA9IICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVLZYAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQPSCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFS2WAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIED0ggICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUtlgB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBA9IICAgIgCOAuAgIgAAI3xASAKsArACtLr0AHwCvALAuvgAhAK4uvwCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHUuxwAvAHUAZwB1BRoh6AB1AHUuzwB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIED3QiAEgiAwYEC4wgIgQPcCBMAAAABDhTat9MAOAA5AA4u0y7WAFCiAZIFJIA7gKSiLtcu2IED3oED6YAv2QAfACMu2wAOACYu3AAhAGYu3SIEAZIAZwCGABUAJwAvAHUu5V8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYED24A7gBKANYAAgAQIgQPf0wA4ADkADi7nLvAAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgu8S7yLvMu9C71LvYu9y74gQPggQPhgQPigQPkgQPlgQPmgQPngQPogC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUu1wB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBA94ICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVLtcAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQPeCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVLxoAFS7XAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQPjgACBA94ICAgIgCOAQQgIgAAI0wA4ADkADi8oLykAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUu1wB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBA94ICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVLtcAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACATYAAgQPeCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFS7XAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIED3ggICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUu1wB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBA94ICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVLtcAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQPeCAgICIAjgEYICIAACNkAHwAjL3cADgAmL3gAIQBmL3kiBAUkAGcAhgAVACcALwB1L4FfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA9uApIASgDWAAIAECIED6tMAOAA5AA4vgy+LAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKcvjC+NL44vjy+QL5EvkoED64ED7IED7YED7oED74ED8IED8YAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVLtgAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQPpCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFS7YAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIED6QgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUu2AB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBA+kICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVLtgAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQPpCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFS7YAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIED6QgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUu2AB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBA+kICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVLtgAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQPpCAgICIAjgLgICIAACN8QEgCrAKwArS/+AB8ArwCwL/8AIQCuMAAAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1MAgALwB1AGcAdQUaIekAdQB1MBAAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBA/QIgBIIgMGBAuQICIED8wgSR8JA7tMAOAA5AA4wFDAXAFCiAZIFJIA7gKSiMBgwGYED9YEEAIAv2QAfACMwHAAOACYwHQAhAGYwHiIFAZIAZwCGABUAJwAvAHUwJl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYED8oA7gBKANYAAgAQIgQP20wA4ADkADjAoMDEAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgwMjAzMDQwNTA2MDcwODA5gQP3gQP4gQP5gQP7gQP8gQP9gQP+gQP/gC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUwGAB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBA/UICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVMBgAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQP1CAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVMFsAFTAYAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQP6gACBA/UICAgIgCOAQQgIgAAI0wA4ADkADjBpMGoAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUwGAB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBA/UICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVMBgAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACATYAAgQP1CAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTAYAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIED9QgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUwGAB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBA/UICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVMBgAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQP1CAgICIAjgEYICIAACNkAHwAjMLgADgAmMLkAIQBmMLoiBQUkAGcAhgAVACcALwB1MMJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA/KApIASgDWAAIAECIEEAdMAOAA5AA4wxDDMAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKcwzTDOMM8w0DDRMNIw04EEAoEEA4EEBIEEBYEEBoEEB4EECIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVMBkAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQQACAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTAZAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEEAAgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUwGQB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBBAAICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVMBkAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQQACAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTAZAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEEAAgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUwGQB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBBAAICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVMBkAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQQACAgICIAjgLgICIAACN8QEgCrAKwArTE/AB8ArwCwMUAAIQCuMUEAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1MUkALwB1AGcAdQUaIeoAdQB1MVEAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBBAsIgBIIgMGBAuUICIEECggTAAAAAQH3V2/TADgAOQAOMVUxWABQogGSBSSAO4CkojFZMVqBBAyBBBeAL9kAHwAjMV0ADgAmMV4AIQBmMV8iBgGSAGcAhgAVACcALwB1MWdfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBAmAO4ASgDWAAIAECIEEDdMAOAA5AA4xaTFyAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoMXMxdDF1MXYxdzF4MXkxeoEEDoEED4EEEIEEEoEEE4EEFIEEFYEEFoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVMVkAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQQMCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTFZAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEEDAgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFTGcABUxWQB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEEEYAAgQQMCAgICIAjgEEICIAACNMAOAA5AA4xqjGrAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVMVkAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQQMCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFTFZAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEEDAgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUxWQB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBAwICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVMVkAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQQMCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTFZAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEEDAgICAiAI4BGCAiAAAjZAB8AIzH5AA4AJjH6ACEAZjH7IgYFJABnAIYAFQAnAC8AdTIDXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQQJgKSAEoA1gACABAiBBBjTADgAOQAOMgUyDQBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinMg4yDzIQMhEyEjITMhSBBBmBBBqBBBuBBByBBB2BBB6BBB+AL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTFaAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEEFwgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUxWgB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBBcICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVMVoAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQQXCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFTFaAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEEFwgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUxWgB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBBBcICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVMVoAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQQXCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTFaAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEEFwgICAiAI4C4CAiAAAjfEBIAqwCsAK0ygAAfAK8AsDKBACEArjKCALEADgAjALIAswAmALQAFQAVABUAJwBPAHUAdTKKAC8AdQBnAHUFGgOFAHUAdTKSAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECxQgIgQQiCIASCIDBgHYICIEEIQgSnBlsxdMAOAA5AA4yljKZAFCiAZIFJIA7gKSiMpoym4EEI4EELoAv2QAfACMyngAOACYynwAhAGYyoCIHAZIAZwCGABUAJwAvAHUyqF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEIIA7gBKANYAAgAQIgQQk0wA4ADkADjKqMrMAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgytDK1MrYytzK4MrkyujK7gQQlgQQmgQQngQQpgQQqgQQrgQQsgQQtgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUymgB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBBCMICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVMpoAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQQjCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVMt0AFTKaAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQQogACBBCMICAgIgCOAQQgIgAAI0wA4ADkADjLrMuwAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUymgB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBBCMICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVMpoAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQQjCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTKaAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEEIwgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUymgB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBBCMICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVMpoAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQQjCAgICIAjgEYICIAACNkAHwAjMzoADgAmMzsAIQBmMzwiBwUkAGcAhgAVACcALwB1M0RfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBCCApIASgDWAAIAECIEEL9MAOAA5AA4zRjNOAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKczTzNQM1EzUjNTM1QzVYEEMIEEMYEEMoEEM4EENIEENYEENoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVMpsAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQQuCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTKbAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEELggICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUymwB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBBC4ICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVMpsAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQQuCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTKbAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEELggICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUymwB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBBC4ICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVMpsAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQQuCAgICIAjgLgICIAACN8QEgCrAKwArTPBAB8ArwCwM8IAIQCuM8MAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1M8sALwB1AGcAdQUaIewAdQB1M9MAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBBDkIgBIIgMGBAuYICIEEOAgSffzhWdMAOAA5AA4z1zPaAFCiAZIFJIA7gKSiM9sz3IEEOoEERoAv2QAfACMz3wAOACYz4AAhAGYz4SIIAZIAZwCGABUAJwAvAHUz6V8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEN4A7gBKANYAAgAQIgQQ70wA4ADkADjPrM/QAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgz9TP2M/cz+DP5M/oz+zP8gQQ8gQQ9gQQ+gQRAgQRBgQRCgQRDgQRFgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUz2wB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBBDoICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVM9sAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQQ6CAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVNB4AFTPbAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQQ/gACBBDoICAgIgCOAQQgIgAAI0wA4ADkADjQsNC0AUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUz2wB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBBDoICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVM9sAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQQ6CAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTPbAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEEOggICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFTReABUz2wB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIEERIAAgQQ6CAgICIAjgEUICIAACF8QEGRlZmF1bHRBY2NlbnRIZXjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUz2wB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBDoICAgIgCOARggIgAAI2QAfACM0fAAOACY0fQAhAGY0fiIIBSQAZwCGABUAJwAvAHU0hl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEEN4CkgBKANYAAgAQIgQRH0wA4ADkADjSINJAAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pzSRNJI0kzSUNJU0ljSXgQRIgQRJgQRKgQRLgQRMgQRNgQROgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUz3AB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBBEYICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVM9wAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQRGCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTPcAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEERggICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABUz3AB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBBEYICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVM9wAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQRGCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTPcAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEERggICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUz3AB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBEYICAgIgCOAuAgIgAAI3xASAKsArACtNQMAHwCvALA1BAAhAK41BQCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHU1DQAvAHUAZwB1BRoh7QB1AHU1FQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEEUQiAEgiAwYEC5wgIgQRQCBLYF1Nv0wA4ADkADjUZNRwAUKIBkgUkgDuApKI1HTUegQRSgQRdgC/ZAB8AIzUhAA4AJjUiACEAZjUjIgkBkgBnAIYAFQAnAC8AdTUrXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQRPgDuAEoA1gACABAiBBFPTADgAOQAONS01NgBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqDU3NTg1OTU6NTs1PDU9NT6BBFSBBFWBBFaBBFiBBFmBBFqBBFuBBFyAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTUdAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEEUggICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU1HQB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBBFIICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABU1YAAVNR0AdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBBFeAAIEEUggICAiAI4BBCAiAAAjTADgAOQAONW41bwBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTUdAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEEUggICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABU1HQB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBBFIICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVNR0AdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQRSCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTUdAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEEUggICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU1HQB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBFIICAgIgCOARggIgAAI2QAfACM1vQAOACY1vgAhAGY1vyIJBSQAZwCGABUAJwAvAHU1x18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEET4CkgBKANYAAgAQIgQRe0wA4ADkADjXJNdEAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pzXSNdM11DXVNdY11zXYgQRfgQRggQRhgQRigQRjgQRkgQRlgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU1HgB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBBF0ICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVNR4AdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQRdCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTUeAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEEXQgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABU1HgB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBBF0ICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVNR4AdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQRdCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTUeAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEEXQgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU1HgB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBF0ICAgIgCOAuAgIgAAI3xASAKsArACtNkQAHwCvALA2RQAhAK42RgCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHU2TgAvAHUAZwB1AYkDkQB1AHU2VgB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEEaAiAEgiAoICCCAiBBGcIEoWAeT3TADgAOQAONlo2XQBQogGSAZOAO4A8ojZeNl+BBGmBBHSAL9kAHwAjNmIADgAmNmMAIQBmNmQiCgGSAGcAhgAVACcALwB1NmxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBGaAO4ASgDWAAIAECIEEatMAOAA5AA42bjZ3AFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoNng2eTZ6Nns2fDZ9Nn42f4EEa4EEbIEEbYEEb4EEcIEEcYEEcoEEc4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVNl4AdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQRpCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTZeAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEEaQgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFTahABU2XgB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEEboAAgQRpCAgICIAjgEEICIAACNMAOAA5AA42rzawAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVNl4AdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQRpCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFTZeAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEEaQgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU2XgB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBGkICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVNl4AdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQRpCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTZeAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEEaQgICAiAI4BGCAiAAAjZAB8AIzb+AA4AJjb/ACEAZjcAIgoBkwBnAIYAFQAnAC8AdTcIXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQRmgDyAEoA1gACABAiBBHXTADgAOQAONwo3EgBQpwJOAk8CUAJRAlICUwJUgFSAVYBWgFeAWIBZgFqnNxM3FDcVNxY3FzcYNxmBBHaBBHeBBHiBBHmBBHqBBHuBBHyAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFTZfAHUAdQB1AC8AdQC9Ak4AdQB1ABUAdYAAgFyAAIEEdAgICAiAI4BUCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJ2ABU2XwB1AHUAdQAvAHUAvQJPAHUAdQAVAHWAAIBegACBBHQICAgIgCOAVQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCdgAVNl8AdQB1AHUALwB1AL0CUAB1AHUAFQB1gACAXoAAgQR0CAgICIAjgFYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAE4AFTZfAHUAdQB1AC8AdQC9AlEAdQB1ABUAdYAAgQJWgACBBHQICAgIgCOAVwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVNl8AdQB1AHUALwB1AL0CUgB1AHUAFQB1gACALIAAgQR0CAgICIAjgFgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTZfAHUAdQB1AC8AdQC9AlMAdQB1ABUAdYAAgCyAAIEEdAgICAiAI4BZCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRwnABU2XwB1AHUAdQAvAHUAvQJUAHUAdQAVAHWAAIECsYAAgQR0CAgICIAjgFoICIAACN8QEgCrAKwArTeFAB8ArwCwN4YAIQCuN4cAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1N48ALwB1AGcAdQUaIe8AdQB1N5cAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBBH8IgBIIgMGBAugICIEEfggTAAAAARgoXDnTADgAOQAON5s3ngBQogGSBSSAO4CkojefN6CBBICBBIuAL9kAHwAjN6MADgAmN6QAIQBmN6UiCwGSAGcAhgAVACcALwB1N61fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBH2AO4ASgDWAAIAECIEEgdMAOAA5AA43rze4AFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoN7k3uje7N7w3vTe+N783wIEEgoEEg4EEhIEEhoEEh4EEiIEEiYEEioAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVN58AdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQSACAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTefAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEEgAgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFTfiABU3nwB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEEhYAAgQSACAgICIAjgEEICIAACNMAOAA5AA438DfxAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVN58AdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQSACAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFTefAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEEgAgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU3nwB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBIAICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVN58AdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQSACAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTefAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEEgAgICAiAI4BGCAiAAAjZAB8AIzg/AA4AJjhAACEAZjhBIgsFJABnAIYAFQAnAC8AdThJXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQR9gKSAEoA1gACABAiBBIzTADgAOQAOOEs4UwBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinOFQ4VThWOFc4WDhZOFqBBI2BBI6BBI+BBJCBBJGBBJKBBJOAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTegAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEEiwgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU3oAB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBIsICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVN6AAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQSLCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFTegAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEEiwgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU3oAB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBBIsICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVN6AAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQSLCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTegAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEEiwgICAiAI4C4CAiAAAjfEBIAqwCsAK04xgAfAK8AsDjHACEArjjIALEADgAjALIAswAmALQAFQAVABUAJwBPAHUAdTjQAC8AdQBnAHUFGiHwAHUAdTjYAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECxQgIgQSWCIASCIDBgQLpCAiBBJUIEm4gK4LTADgAOQAOONw43wBQogGSBSSAO4CkojjgOOGBBJeBBKOAL9kAHwAjOOQADgAmOOUAIQBmOOYiDAGSAGcAhgAVACcALwB1OO5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBJSAO4ASgDWAAIAECIEEmNMAOAA5AA448Dj5AFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoOPo4+zj8OP04/jj/OQA5AYEEmYEEmoEEm4EEnYEEnoEEn4EEoIEEooAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVOOAAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQSXCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTjgAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEElwgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFTkjABU44AB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEEnIAAgQSXCAgICIAjgEEICIAACNMAOAA5AA45MTkyAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVOOAAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQSXCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTjgAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEElwgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU44AB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBJcICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABU5YwAVOOAAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACBBKGAAIEElwgICAiAI4BFCAiAAAhfEBFkZWZhdWx0UHJpbWFyeUhleN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTjgAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEElwgICAiAI4BGCAiAAAjZAB8AIzmBAA4AJjmCACEAZjmDIgwFJABnAIYAFQAnAC8AdTmLXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQSUgKSAEoA1gACABAiBBKTTADgAOQAOOY05lQBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinOZY5lzmYOZk5mjmbOZyBBKWBBKaBBKeBBKiBBKmBBKqBBKuAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTjhAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEEowgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU44QB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBKMICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVOOEAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQSjCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFTjhAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEEowgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU44QB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBBKMICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVOOEAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQSjCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTjhAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEEowgICAiAI4C4CAiAAAjfEBIAqwCsAK06CAAfAK8AsDoJACEArjoKALEADgAjALIAswAmALQAFQAVABUAJwBPAHUAdToSAC8AdQBnAHUFGiHxAHUAdToaAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECxQgIgQSuCIASCIDBgQLqCAiBBK0IEnhQJNjTADgAOQAOOh46IQBQogGSBSSAO4CkojoiOiOBBK+BBLuAL9kAHwAjOiYADgAmOicAIQBmOigiDQGSAGcAhgAVACcALwB1OjBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBKyAO4ASgDWAAIAECIEEsNMAOAA5AA46Mjo7AFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoOjw6PTo+Oj86QDpBOkI6Q4EEsYEEsoEEs4EEtYEEtoEEt4EEuIEEuoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVOiIAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQSvCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFToiAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEErwgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFTplABU6IgB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEEtIAAgQSvCAgICIAjgEEICIAACNMAOAA5AA46czp0AFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVOiIAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQSvCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFToiAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEErwgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU6IgB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBK8ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABU6pQAVOiIAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACBBLmAAIEErwgICAiAI4BFCAiAAAheZGFya1ByaW1hcnlIZXjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU6IgB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBK8ICAgIgCOARggIgAAI2QAfACM6wwAOACY6xAAhAGY6xSINBSQAZwCGABUAJwAvAHU6zV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEErICkgBKANYAAgAQIgQS80wA4ADkADjrPOtcAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pzrYOtk62jrbOtw63TregQS9gQS+gQS/gQTAgQTBgQTCgQTDgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU6IwB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBBLsICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVOiMAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQS7CAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTojAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEEuwgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABU6IwB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBBLsICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVOiMAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQS7CAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTojAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEEuwgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU6IwB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBLsICAgIgCOAuAgIgAAI3xASAKsArACtO0oAHwCvALA7SwAhAK47TACxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHU7VAAvAHUAZwB1BRoh8gB1AHU7XAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEExgiAEgiAwYEC6wgIgQTFCBKJPyzc0wA4ADkADjtgO2MAUKIBkgUkgDuApKI7ZDtlgQTHgQTTgC/ZAB8AIztoAA4AJjtpACEAZjtqIg4BkgBnAIYAFQAnAC8AdTtyXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQTEgDuAEoA1gACABAiBBMjTADgAOQAOO3Q7fQBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqDt+O387gDuBO4I7gzuEO4WBBMmBBMqBBMuBBM2BBM6BBM+BBNCBBNKAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTtkAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEExwgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU7ZAB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBBMcICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABU7pwAVO2QAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBBMyAAIEExwgICAiAI4BBCAiAAAjTADgAOQAOO7U7tgBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTtkAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEExwgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABU7ZAB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBBMcICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVO2QAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQTHCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVO+cAFTtkAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgQTRgACBBMcICAgIgCOARQgIgAAIXxARZGFya0JhY2tncm91bmRIZXjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU7ZAB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBMcICAgIgCOARggIgAAI2QAfACM8BQAOACY8BgAhAGY8ByIOBSQAZwCGABUAJwAvAHU8D18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEExICkgBKANYAAgAQIgQTU0wA4ADkADjwRPBkAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pzwaPBs8HDwdPB48HzwggQTVgQTWgQTXgQTYgQTZgQTagQTbgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU7ZQB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBBNMICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVO2UAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQTTCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTtlAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEE0wgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABU7ZQB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBBNMICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVO2UAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQTTCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTtlAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEE0wgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU7ZQB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBNMICAgIgCOAuAgIgAAI3xASAKsArACtPIwAHwCvALA8jQAhAK48jgCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHU8lgAvAHUAZwB1BRoh8wB1AHU8ngB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEE3giAEgiAwYEC7AgIgQTdCBLGY10Z0wA4ADkADjyiPKUAUKIBkgUkgDuApKI8pjyngQTfgQTqgC/ZAB8AIzyqAA4AJjyrACEAZjysIg8BkgBnAIYAFQAnAC8AdTy0XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQTcgDuAEoA1gACABAiBBODTADgAOQAOPLY8vwBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqDzAPME8wjzDPMQ8xTzGPMeBBOGBBOKBBOOBBOWBBOaBBOeBBOiBBOmAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTymAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEE3wgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU8pgB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBBN8ICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABU86QAVPKYAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBBOSAAIEE3wgICAiAI4BBCAiAAAjTADgAOQAOPPc8+ABQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFTymAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEE3wgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABU8pgB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBBN8ICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVPKYAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQTfCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTymAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEE3wgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU8pgB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBN8ICAgIgCOARggIgAAI2QAfACM9RgAOACY9RwAhAGY9SCIPBSQAZwCGABUAJwAvAHU9UF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEE3ICkgBKANYAAgAQIgQTr0wA4ADkADj1SPVoAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pz1bPVw9XT1ePV89YD1hgQTsgQTtgQTugQTvgQTwgQTxgQTygC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU8pwB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBBOoICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVPKcAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQTqCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTynAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEE6ggICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABU8pwB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBBOoICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVPKcAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQTqCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFTynAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEE6ggICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU8pwB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBOoICAgIgCOAuAgIgAAI3xASAKsArACtPc0AHwCvALA9zgAhAK49zwCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHU91wAvAHUAZwB1BRoh9AB1AHU93wB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEE9QiAEgiAwYEC7QgIgQT0CBKxwRfm0wA4ADkADj3jPeYAUKIBkgUkgDuApKI95z3ogQT2gQUBgC/ZAB8AIz3rAA4AJj3sACEAZj3tIhABkgBnAIYAFQAnAC8AdT31XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQTzgDuAEoA1gACABAiBBPfTADgAOQAOPfc+AABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqD4BPgI+Az4EPgU+Bj4HPgiBBPiBBPmBBPqBBPyBBP2BBP6BBP+BBQCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFT3nAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEE9ggICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU95wB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBBPYICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABU+KgAVPecAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBBPuAAIEE9ggICAiAI4BBCAiAAAjTADgAOQAOPjg+OQBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFT3nAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEE9ggICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABU95wB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBBPYICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVPecAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQT2CAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFT3nAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEE9ggICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU95wB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBPYICAgIgCOARggIgAAI2QAfACM+hwAOACY+iAAhAGY+iSIQBSQAZwCGABUAJwAvAHU+kV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEE84CkgBKANYAAgAQIgQUC0wA4ADkADj6TPpsAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pz6cPp0+nj6fPqA+oT6igQUDgQUEgQUFgQUGgQUHgQUIgQUJgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU96AB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBBQEICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVPegAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQUBCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFT3oAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEFAQgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABU96AB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBBQEICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVPegAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQUBCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFT3oAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEFAQgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU96AB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBQEICAgIgCOAuAgIgAAI3xASAKsArACtPw4AHwCvALA/DwAhAK4/EACxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHU/GAAvAHUAZwB1AYkh9QB1AHU/IAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEFDAiAEgiAoIEC7ggIgQULCBJgUIMN0wA4ADkADj8kPycAUKIBkgGTgDuAPKI/KD8pgQUNgQUYgC/ZAB8AIz8sAA4AJj8tACEAZj8uIhEBkgBnAIYAFQAnAC8AdT82XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQUKgDuAEoA1gACABAiBBQ7TADgAOQAOPzg/QQBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqD9CP0M/RD9FP0Y/Rz9IP0mBBQ+BBRCBBRGBBROBBRSBBRWBBRaBBReAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFT8oAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEFDQgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABU/KAB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBBQ0ICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABU/awAVPygAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBBRKAAIEFDQgICAiAI4BBCAiAAAjTADgAOQAOP3k/egBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFT8oAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEFDQgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABU/KAB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBBQ0ICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVPygAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQUNCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFT8oAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEFDQgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU/KAB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBQ0ICAgIgCOARggIgAAI2QAfACM/yAAOACY/yQAhAGY/yiIRAZMAZwCGABUAJwAvAHU/0l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEFCoA8gBKANYAAgAQIgQUZ0wA4ADkADj/UP9wAUKcCTgJPAlACUQJSAlMCVIBUgFWAVoBXgFiAWYBapz/dP94/3z/gP+E/4j/jgQUagQUbgQUcgQUdgQUegQUfgQUggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJnABU/KQB1AHUAdQAvAHUAvQJOAHUAdQAVAHWAAIBcgACBBRgICAgIgCOAVAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCdgAVPykAdQB1AHUALwB1AL0CTwB1AHUAFQB1gACAXoAAgQUYCAgICIAjgFUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAnYAFT8pAHUAdQB1AC8AdQC9AlAAdQB1ABUAdYAAgF6AAIEFGAgICAiAI4BWCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQBOABU/KQB1AHUAdQAvAHUAvQJRAHUAdQAVAHWAAIECVoAAgQUYCAgICIAjgFcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFT8pAHUAdQB1AC8AdQC9AlIAdQB1ABUAdYAAgCyAAIEFGAgICAiAI4BYCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABU/KQB1AHUAdQAvAHUAvQJTAHUAdQAVAHWAAIAsgACBBRgICAgIgCOAWQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUcKAAVPykAdQB1AHUALwB1AL0CVAB1AHUAFQB1gACBBSGAAIEFGAgICAiAI4BaCAiAAAjfEBIAqwCsAK1ATwAfAK8AsEBQACEArkBRALEADgAjALIAswAmALQAFQAVABUAJwBOAHUAdUBZAC8AdQBnAHUBiRwjAHUAdUBhAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECVggIgQUjCIASCICggQJrCAiBBSIIEm7Rn4/TADgAOQAOQGVAaABQogGSAZOAO4A8okBpQGqBBSSBBS+AL9kAHwAjQG0ADgAmQG4AIQBmQG8cKAGSAGcAhgAVACcALwB1QHdfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBSGAO4ASgDWAAIAECIEFJdMAOAA5AA5AeUCCAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoQINAhECFQIZAh0CIQIlAioEFJoEFJ4EFKIEFKoEFK4EFLIEFLYEFLoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVQGkAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQUkCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUBpAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEFJAgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFUCsABVAaQB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEFKYAAgQUkCAgICIAjgEEICIAACNMAOAA5AA5AukC7AFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVQGkAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQUkCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFUBpAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEFJAgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVAaQB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBSQICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVQGkAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQUkCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUBpAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEFJAgICAiAI4BGCAiAAAjZAB8AI0EJAA4AJkEKACEAZkELHCgBkwBnAIYAFQAnAC8AdUETXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQUhgDyAEoA1gACABAiBBTDTADgAOQAOQRVBHQBQpwJOAk8CUAJRAlICUwJUgFSAVYBWgFeAWIBZgFqnQR5BH0EgQSFBIkEjQSSBBTGBBTKBBTOBBTSBBTWBBTaBBTeAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFUBqAHUAdQB1AC8AdQC9Ak4AdQB1ABUAdYAAgFyAAIEFLwgICAiAI4BUCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJ2ABVAagB1AHUAdQAvAHUAvQJPAHUAdQAVAHWAAIBegACBBS8ICAgIgCOAVQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCdgAVQGoAdQB1AHUALwB1AL0CUAB1AHUAFQB1gACAXoAAgQUvCAgICIAjgFYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAE8AFUBqAHUAdQB1AC8AdQC9AlEAdQB1ABUAdYAAgQLFgACBBS8ICAgIgCOAVwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVQGoAdQB1AHUALwB1AL0CUgB1AHUAFQB1gACALIAAgQUvCAgICIAjgFgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUBqAHUAdQB1AC8AdQC9AlMAdQB1ABUAdYAAgCyAAIEFLwgICAiAI4BZCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFSIRABVAagB1AHUAdQAvAHUAvQJUAHUAdQAVAHWAAIEFCoAAgQUvCAgICIAjgFoICIAACN8QEgCrAKwArUGQAB8ArwCwQZEAIQCuQZIAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1QZoALwB1AGcAdQUaIfYAdQB1QaIAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBBToIgBIIgMGBAu8ICIEFOQgSZNmiLtMAOAA5AA5BpkGpAFCiAZIFJIA7gKSiQapBq4EFO4EFR4Av2QAfACNBrgAOACZBrwAhAGZBsCISAZIAZwCGABUAJwAvAHVBuF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEFOIA7gBKANYAAgAQIgQU80wA4ADkADkG6QcMAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhBxEHFQcZBx0HIQclBykHLgQU9gQU+gQU/gQVBgQVCgQVDgQVEgQVGgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVBqgB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBBTsICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVQaoAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQU7CAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVQe0AFUGqAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQVAgACBBTsICAgIgCOAQQgIgAAI0wA4ADkADkH7QfwAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVBqgB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBBTsICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVQaoAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACATYAAgQU7CAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUGqAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEFOwgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFUItABVBqgB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIEFRYAAgQU7CAgICIAjgEUICIAACF1kYXJrQWNjZW50SGV43xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVQaoAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQU7CAgICIAjgEYICIAACNkAHwAjQksADgAmQkwAIQBmQk0iEgUkAGcAhgAVACcALwB1QlVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBTiApIASgDWAAIAECIEFSNMAOAA5AA5CV0JfAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKdCYEJhQmJCY0JkQmVCZoEFSYEFSoEFS4EFTIEFTYEFToEFT4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVQasAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQVHCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUGrAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEFRwgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVBqwB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBBUcICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVQasAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQVHCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUGrAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEFRwgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVBqwB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBBUcICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVQasAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQVHCAgICIAjgLgICIAACN8QEgCrAKwArULSAB8ArwCwQtMAIQCuQtQAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1QtwALwB1AGcAdQUaIfcAdQB1QuQAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBBVIIgBIIgMGBAvAICIEFUQgTAAAAAQ2LihrTADgAOQAOQuhC6wBQogGSBSSAO4CkokLsQu2BBVOBBV6AL9kAHwAjQvAADgAmQvEAIQBmQvIiEwGSAGcAhgAVACcALwB1QvpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBVCAO4ASgDWAAIAECIEFVNMAOAA5AA5C/EMFAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoQwZDB0MIQwlDCkMLQwxDDYEFVYEFVoEFV4EFWYEFWoEFW4EFXIEFXYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVQuwAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQVTCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFULsAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEFUwgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFUMvABVC7AB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEFWIAAgQVTCAgICIAjgEEICIAACNMAOAA5AA5DPUM+AFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVQuwAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQVTCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFULsAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEFUwgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVC7AB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBVMICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVQuwAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQVTCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFULsAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEFUwgICAiAI4BGCAiAAAjZAB8AI0OMAA4AJkONACEAZkOOIhMFJABnAIYAFQAnAC8AdUOWXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQVQgKSAEoA1gACABAiBBV/TADgAOQAOQ5hDoABQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinQ6FDokOjQ6RDpUOmQ6eBBWCBBWGBBWKBBWOBBWSBBWWBBWaAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFULtAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEFXggICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVC7QB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBV4ICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVQu0AdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQVeCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFULtAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEFXggICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVC7QB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBBV4ICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVQu0AdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQVeCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFULtAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEFXggICAiAI4C4CAiAAAjfEBIAqwCsAK1EEwAfAK8AsEQUACEArkQVALEADgAjALIAswAmALQAFQAVABUAJwBPAHUAdUQdAC8AdQBnAHUFGiH4AHUAdUQlAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECxQgIgQVpCIASCIDBgQLxCAiBBWgIEknoFNjTADgAOQAORClELABQogGSBSSAO4CkokQtRC6BBWqBBXWAL9kAHwAjRDEADgAmRDIAIQBmRDMiFAGSAGcAhgAVACcALwB1RDtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBWeAO4ASgDWAAIAECIEFa9MAOAA5AA5EPURGAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoREdESERJREpES0RMRE1EToEFbIEFbYEFboEFcIEFcYEFcoEFc4EFdIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVRC0AdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQVqCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUQtAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEFaggICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFURwABVELQB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEFb4AAgQVqCAgICIAjgEEICIAACNMAOAA5AA5EfkR/AFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVRC0AdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQVqCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFUQtAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEFaggICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVELQB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBWoICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVRC0AdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQVqCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUQtAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEFaggICAiAI4BGCAiAAAjZAB8AI0TNAA4AJkTOACEAZkTPIhQFJABnAIYAFQAnAC8AdUTXXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQVngKSAEoA1gACABAiBBXbTADgAOQAORNlE4QBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinROJE40TkROVE5kTnROiBBXeBBXiBBXmBBXqBBXuBBXyBBX2AL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUQuAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEFdQgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVELgB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBXUICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVRC4AdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQV1CAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFUQuAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEFdQgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVELgB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBBXUICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVRC4AdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQV1CAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUQuAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEFdQgICAiAI4C4CAiAAAjSADkADkVUAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUgDAB1AHUAdQAvAHUAvQJSAHUAdQAVAHWAAIBNgACBAr8ICAgIgCOAWAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVIAwAdQB1AHUALwB1AL0CUwB1AHUAFQB1gACATYAAgQK/CAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVIgoAFSAMAHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgQRmgACBAr8ICAgIgCOAWggIgAAI0gA5AA5FhADFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVGk8AdQB1AHUALwB1AL0CUgB1AHUAFQB1gACALIAAgQJQCAgICIAjgFgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRpPAHUAdQB1AC8AdQC9AlMAdQB1ABUAdYAAgCyAAIECUAgICAiAI4BZCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRwlABUaTwB1AHUAdQAvAHUAvQJUAHUAdQAVAHWAAIECbIAAgQJQCAgICIAjgFoICIAACN8QEgCrAKwArUW0AB8ArwCwRbUAIQCuRbYAsQAOACMAsgCzACYAtAAVABUAFQAnAEsAdQB1Rb4ALwB1AGcAdQUaA48AdQB1RcYAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGEICIEFiAiAEgiAwYCACAiBBYcIEtoV1QHTADgAOQAORcpFzQBQogGSBSSAO4CkokXORc+BBYmBBZSAL9kAHwAjRdIADgAmRdMAIQBmRdQDpAGSAGcAhgAVACcALwB1RdxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBYaAO4ASgDWAAIAECIEFitMAOAA5AA5F3kXnAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoRehF6UXqRetF7EXtRe5F74EFi4EFjIEFjYEFj4EFkIEFkYEFkoEFk4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVRc4AdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQWJCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUXOAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEFiQgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFUYRABVFzgB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEFjoAAgQWJCAgICIAjgEEICIAACNMAOAA5AA5GH0YgAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVRc4AdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQWJCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFUXOAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEFiQgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVFzgB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBYkICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVRc4AdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQWJCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUXOAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEFiQgICAiAI4BGCAiAAAjZAB8AI0ZuAA4AJkZvACEAZkZwA6QFJABnAIYAFQAnAC8AdUZ4XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQWGgKSAEoA1gACABAiBBZXTADgAOQAORnpGggBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinRoNGhEaFRoZGh0aIRomBBZaBBZeBBZiBBZmBBZqBBZuBBZyAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUXPAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEFlAgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVFzwB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBZQICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVRc8AdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQWUCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVD7EAFUXPAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgQF7gACBBZQICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVRc8AdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQWUCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUXPAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEFlAgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVFzwB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBZQICAgIgCOAuAgIgAAI3xASAKsArACtRvUAHwCvALBG9gAhAK5G9wCxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHVG/wAvAHUAZwB1BRoDkAB1AHVHBwB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgQWfCIASCIDBgIEICIEFnggS6+TCqdMAOAA5AA5HC0cOAFCiAZIFJIA7gKSiRw9HEIEFoIEFq4Av2QAfACNHEwAOACZHFAAhAGZHFQOlAZIAZwCGABUAJwAvAHVHHV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEFnYA7gBKANYAAgAQIgQWh0wA4ADkADkcfRygAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhHKUcqRytHLEctRy5HL0cwgQWigQWjgQWkgQWmgQWngQWogQWpgQWqgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVHDwB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBBaAICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVRw8AdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQWgCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVR1IAFUcPAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQWlgACBBaAICAgIgCOAQQgIgAAI0wA4ADkADkdgR2EAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVHDwB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBBaAICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVRw8AdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQWgCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUcPAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEFoAgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVHDwB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBBaAICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVRw8AdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQWgCAgICIAjgEYICIAACNkAHwAjR68ADgAmR7AAIQBmR7EDpQUkAGcAhgAVACcALwB1R7lfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBZ2ApIASgDWAAIAECIEFrNMAOAA5AA5Hu0fDAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKdHxEfFR8ZHx0fIR8lHyoEFrYEFroEFr4EFsIEFsYEFsoEFs4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUJPAAVRxAAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACBAQKAAIEFqwgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVHEAB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBasICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVRxAAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQWrCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVCWoAFUcQAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgQEGgACBBasICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVRxAAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQWrCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUcQAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEFqwgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVHEAB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBasICAgIgCOAuAgIgAAI3xASAKsArACtSDYAHwCvALBINwAhAK5IOACxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHVIQAAvAHUAZwB1BRoDkgB1AHVISAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgQW2CIASCIDBgIMICIEFtQgSNYQfFdMAOAA5AA5ITEhPAFCiAZIFJIA7gKSiSFBIUYEFt4EFwoAv2QAfACNIVAAOACZIVQAhAGZIVgOnAZIAZwCGABUAJwAvAHVIXl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEFtIA7gBKANYAAgAQIgQW40wA4ADkADkhgSGkAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhIakhrSGxIbUhuSG9IcEhxgQW5gQW6gQW7gQW9gQW+gQW/gQXAgQXBgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVIUAB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBBbcICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVSFAAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQW3CAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVSJMAFUhQAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQW8gACBBbcICAgIgCOAQQgIgAAI0wA4ADkADkihSKIAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVIUAB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBBbcICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVSFAAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACATYAAgQW3CAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUhQAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEFtwgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVIUAB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBBbcICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVSFAAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQW3CAgICIAjgEYICIAACNkAHwAjSPAADgAmSPEAIQBmSPIDpwUkAGcAhgAVACcALwB1SPpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBbSApIASgDWAAIAECIEFw9MAOAA5AA5I/EkEAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKdJBUkGSQdJCEkJSQpJC4EFxIEFxYEFxoEFx4EFyIEFyYEFyoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVSFEAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQXCCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUhRAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEFwggICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVIUQB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBBcIICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVSFEAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQXCCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUhRAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEFwggICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVIUQB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBBcIICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVSFEAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQXCCAgICIAjgLgICIAACN8QEgCrAKwArUl3AB8ArwCwSXgAIQCuSXkAsQAOACMAsgCzACYAtAAVABUAFQAnAEsAdQB1SYEALwB1AGcAdQUaA5MAdQB1SYkAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGEICIEFzQiAEgiAwYCECAiBBcwIEwAAAAEv8NzQ0wA4ADkADkmNSZAAUKIBkgUkgDuApKJJkUmSgQXOgQXZgC/ZAB8AI0mVAA4AJkmWACEAZkmXA6gBkgBnAIYAFQAnAC8AdUmfXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQXLgDuAEoA1gACABAiBBc/TADgAOQAOSaFJqgBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqEmrSaxJrUmuSa9JsEmxSbKBBdCBBdGBBdKBBdSBBdWBBdaBBdeBBdiAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUmRAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEFzggICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVJkQB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBBc4ICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVJ1AAVSZEAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBBdOAAIEFzggICAiAI4BBCAiAAAjTADgAOQAOSeJJ4wBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUmRAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEFzggICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABVJkQB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBBc4ICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVSZEAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQXOCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUmRAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEFzggICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVJkQB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBc4ICAgIgCOARggIgAAI2QAfACNKMQAOACZKMgAhAGZKMwOoBSQAZwCGABUAJwAvAHVKO18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEFy4CkgBKANYAAgAQIgQXa0wA4ADkADko9SkUAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4p0pGSkdKSEpJSkpKS0pMgQXbgQXcgQXdgQXegQXfgQXggQXhgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVJkgB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBBdkICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVSZIAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQXZCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUmSAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEF2QgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQ+xABVJkgB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIEBe4AAgQXZCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUmSAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEF2QgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVJkgB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBBdkICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVSZIAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQXZCAgICIAjgLgICIAACN8QEgCrAKwArUq4AB8ArwCwSrkAIQCuSroAsQAOACMAsgCzACYAtAAVABUAFQAnAEsAdQB1SsIALwB1AGcAdQUaA5QAdQB1SsoAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGEICIEF5AiAEgiAwYCFCAiBBeMIEkSliBLTADgAOQAOSs5K0QBQogGSBSSAO4CkokrSStOBBeWBBfCAL9kAHwAjStYADgAmStcAIQBmStgDqQGSAGcAhgAVACcALwB1SuBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBeKAO4ASgDWAAIAECIEF5tMAOAA5AA5K4krrAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoSuxK7UruSu9K8ErxSvJK84EF54EF6IEF6YEF64EF7IEF7YEF7oEF74Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVStIAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQXlCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUrSAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEF5QgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFUsVABVK0gB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEF6oAAgQXlCAgICIAjgEEICIAACNMAOAA5AA5LI0skAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVStIAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQXlCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFUrSAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEF5QgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVK0gB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBeUICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVStIAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQXlCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUrSAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEF5QgICAiAI4BGCAiAAAjZAB8AI0tyAA4AJktzACEAZkt0A6kFJABnAIYAFQAnAC8AdUt8XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQXigKSAEoA1gACABAiBBfHTADgAOQAOS35LhgBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinS4dLiEuJS4pLi0uMS42BBfKBBfSBBfWBBfaBBfiBBfmBBfqAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVS5EAFUrTAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgQXzgACBBfAICAgIgCOAsggIgAAIUk5P3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVStMAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQXwCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUrTAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEF8AgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFUu/ABVK0wB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIEF94AAgQXwCAgICIAjgLUICIAACBEDIN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUrTAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEF8AgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVK0wB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBBfAICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVStMAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQXwCAgICIAjgLgICIAACN8QEgCrAKwArUv7AB8ArwCwS/wAIQCuS/0AsQAOACMAsgCzACYAtAAVABUAFQAnAEsAdQB1TAUALwB1AGcAdQGJA5UAdQB1TA0AdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGEICIEF/QiAEgiAoICGCAiBBfwIEoMk2DHTADgAOQAOTBFMFABQogGSAZOAO4A8okwVTBaBBf6BBgmAL9kAHwAjTBkADgAmTBoAIQBmTBsDqgGSAGcAhgAVACcALwB1TCNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBfuAO4ASgDWAAIAECIEF/9MAOAA5AA5MJUwuAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoTC9MMEwxTDJMM0w0TDVMNoEGAIEGAYEGAoEGBIEGBYEGBoEGB4EGCIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVTBUAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQX+CAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFUwVAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEF/ggICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFUxYABVMFQB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEGA4AAgQX+CAgICIAjgEEICIAACNMAOAA5AA5MZkxnAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVTBUAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQX+CAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFUwVAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEF/ggICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVMFQB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBf4ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVTBUAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQX+CAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFUwVAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEF/ggICAiAI4BGCAiAAAjZAB8AI0y1AA4AJky2ACEAZky3A6oBkwBnAIYAFQAnAC8AdUy/XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQX7gDyAEoA1gACABAiBBgrTADgAOQAOTMFMyQBQpwJOAk8CUAJRAlICUwJUgFSAVYBWgFeAWIBZgFqnTMpMy0zMTM1MzkzPTNCBBguBBgyBBg2BBg6BBoKBBoOBBoSAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFUwWAHUAdQB1AC8AdQC9Ak4AdQB1ABUAdYAAgFyAAIEGCQgICAiAI4BUCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQdGABVMFgB1AHUAdQAvAHUAvQJPAHUAdQAVAHWAAIDUgACBBgkICAgIgCOAVQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCZwAVTBYAdQB1AHUALwB1AL0CUAB1AHUAFQB1gACAXIAAgQYJCAgICIAjgFYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAEkAFUwWAHUAdQB1AC8AdQC9AlEAdQB1ABUAdYAAgQYPgACBBgkICAgIgCOAVwgIgAAI3xAQTQ9NEE0RTRIAH00TTRQAIU0VTRYADgAjTRdNGAAmAGYAZ00aACcAJwATTR4AbQAvACcAZwBwAD4AZ00lTSYAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgQYhgASABIACgQYRgQGWgASAEoEBmIAJgBKBBoGBBhAIEkDOVkLTADgAOQAOTSpNLABQoQB6gBShTS2BBhKAL9kAHwAjTTAADgAmTTEAIQBmTTIASQB6AGcAhgAVACcALwB1TTpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBg+AFIASgDWAAIAECIEGE9MAOAA5AA5NPE1GAFCpAI0AjgCPAJAAkQCSAJMAlACVgBeAGIAZgBqAG4AcgB2AHoAfqU1HTUhNSU1KTUtNTE1NTU5NT4EGFIEGFoEGF4EGGYEGGoEGHIEGHYEGH4EGIIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVNUwAVTS0AdQB1AHUALwB1AL0AjQB1AHUAFQB1gACBBhWAAIEGEggICAiAI4AXCAiAAAjSADkADk1hAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVNLQB1AHUAdQAvAHUAvQCOAHUAdQAVAHWAAIAAgACBBhIICAgIgCOAGAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVNdAAVTS0AdQB1AHUALwB1AL0AjwB1AHUAFQB1gACBBhiAAIEGEggICAiAI4AZCAiAAAjSADkADk2CAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVNLQB1AHUAdQAvAHUAvQCQAHUAdQAVAHWAAIAAgACBBhIICAgIgCOAGggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVNlQAVTS0AdQB1AHUALwB1AL0AkQB1AHUAFQB1gACBBhuAAIEGEggICAiAI4AbCAiAAAjSADkADk2jAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVNLQB1AHUAdQAvAHUAvQCSAHUAdQAVAHWAAIAsgACBBhIICAgIgCOAHAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVNtgAVTS0AdQB1AHUALwB1AL0AkwB1AHUAFQB1gACBBh6AAIEGEggICAiAI4AdCAiAAAjTADgAOQAOTcRNxQBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAT8AFU0tAHUAdQB1AC8AdQC9AJQAdQB1ABUAdYAAgDGAAIEGEggICAiAI4AeCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQA+ABVNLQB1AHUAdQAvAHUAvQCVAHUAdQAVAHWAAIAJgACBBhIICAgIgCOAHwgIgAAI0wA4ADkADk3mTesAUKRN5wOQTelN6oEGIoCBgQYjgQYkpE3sTe1N7k3vgQYlgQY8gQZTgQZqgC9UaXRlbVR0aW1lVG5vdGXfEBIAqwCsAK1N9QAfAK8AsE32ACEArk33ALEADgAjALIAswAmALQAFQAVABUAJwBJAHUAdU3/AC8AdQBnAHUBiU3nAHUAdU4HAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEGDwgIgQYnCIASCICggQYiCAiBBiYIEjFXUgXTADgAOQAOTgtODgBQogGSAZOAO4A8ok4PThCBBiiBBjOAL9kAHwAjThMADgAmThQAIQBmThVN7AGSAGcAhgAVACcALwB1Th1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBiWAO4ASgDWAAIAECIEGKdMAOAA5AA5OH04oAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoTilOKk4rTixOLU4uTi9OMIEGKoEGK4EGLIEGLoEGL4EGMIEGMYEGMoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVTg8AdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQYoCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFU4PAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEGKAgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFU5SABVODwB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEGLYAAgQYoCAgICIAjgEEICIAACNMAOAA5AA5OYE5hAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVTg8AdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQYoCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFU4PAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEGKAgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVODwB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBigICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVTg8AdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQYoCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFU4PAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEGKAgICAiAI4BGCAiAAAjZAB8AI06vAA4AJk6wACEAZk6xTewBkwBnAIYAFQAnAC8AdU65XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQYlgDyAEoA1gACABAiBBjTTADgAOQAOTrtOwwBQpwJOAk8CUAJRAlICUwJUgFSAVYBWgFeAWIBZgFqnTsROxU7GTsdOyE7JTsqBBjWBBjaBBjeBBjiBBjmBBjqBBjuAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFU4QAHUAdQB1AC8AdQC9Ak4AdQB1ABUAdYAAgFyAAIEGMwgICAiAI4BUCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJ2ABVOEAB1AHUAdQAvAHUAvQJPAHUAdQAVAHWAAIBegACBBjMICAgIgCOAVQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCdgAVThAAdQB1AHUALwB1AL0CUAB1AHUAFQB1gACAXoAAgQYzCAgICIAjgFYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAEsAFU4QAHUAdQB1AC8AdQC9AlEAdQB1ABUAdYAAgGGAAIEGMwgICAiAI4BXCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVOEAB1AHUAdQAvAHUAvQJSAHUAdQAVAHWAAIAsgACBBjMICAgIgCOAWAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVThAAdQB1AHUALwB1AL0CUwB1AHUAFQB1gACALIAAgQYzCAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVA6oAFU4QAHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgQX7gACBBjMICAgIgCOAWggIgAAI3xASAKsArACtTzYAHwCvALBPNwAhAK5POACxAA4AIwCyALMAJgC0ABUAFQAVACcASQB1AHVPQAAvAHUAZwB1BRoDkAB1AHVPSAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBg8ICIEGPgiAEgiAwYCBCAiBBj0IEwAAAAEeHLV90wA4ADkADk9MT08AUKIBkgUkgDuApKJPUE9RgQY/gQZKgC/ZAB8AI09UAA4AJk9VACEAZk9WTe0BkgBnAIYAFQAnAC8AdU9eXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQY8gDuAEoA1gACABAiBBkDTADgAOQAOT2BPaQBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqE9qT2tPbE9tT25Pb09wT3GBBkGBBkKBBkOBBkWBBkaBBkeBBkiBBkmAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFU9QAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEGPwgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVPUAB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBBj8ICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVPkwAVT1AAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBBkSAAIEGPwgICAiAI4BBCAiAAAjTADgAOQAOT6FPogBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFU9QAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEGPwgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVPUAB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIAsgACBBj8ICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVT1AAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQY/CAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFU9QAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEGPwgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVPUAB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBj8ICAgIgCOARggIgAAI2QAfACNP8AAOACZP8QAhAGZP8k3tBSQAZwCGABUAJwAvAHVP+l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEGPICkgBKANYAAgAQIgQZL0wA4ADkADk/8UAQAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4p1AFUAZQB1AIUAlQClALgQZMgQZNgQZOgQZPgQZQgQZRgQZSgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQk8ABVPUQB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIEBAoAAgQZKCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFU9RAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEGSggICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVPUQB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBBkoICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUJagAVT1EAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACBAQaAAIEGSggICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVPUQB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBBkoICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVT1EAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQZKCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFU9RAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEGSggICAiAI4C4CAiAAAjfEBIAqwCsAK1QdwAfAK8AsFB4ACEArlB5ALEADgAjALIAswAmALQAFQAVABUAJwBJAHUAdVCBAC8AdQBnAHUFGk3pAHUAdVCJAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEGDwgIgQZVCIASCIDBgQYjCAiBBlQIEwAAAAEbyeAC0wA4ADkADlCNUJAAUKIBkgUkgDuApKJQkVCSgQZWgQZhgC/ZAB8AI1CVAA4AJlCWACEAZlCXTe4BkgBnAIYAFQAnAC8AdVCfXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQZTgDuAEoA1gACABAiBBlfTADgAOQAOUKFQqgBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqFCrUKxQrVCuUK9QsFCxULKBBliBBlmBBlqBBlyBBl2BBl6BBl+BBmCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVCRAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEGVggICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVQkQB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBBlYICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVQ1AAVUJEAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBBluAAIEGVggICAiAI4BBCAiAAAjTADgAOQAOUOJQ4wBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVCRAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEGVggICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVQkQB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIAsgACBBlYICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVUJEAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQZWCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVCRAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEGVggICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVQkQB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBBlYICAgIgCOARggIgAAI2QAfACNRMQAOACZRMgAhAGZRM03uBSQAZwCGABUAJwAvAHVRO18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEGU4CkgBKANYAAgAQIgQZi0wA4ADkADlE9UUUAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4p1FGUUdRSFFJUUpRS1FMgQZjgQZkgQZlgQZmgQZngQZogQZpgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRJBABVQkgB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIEBrYAAgQZhCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVCSAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEGYQgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVQkgB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBBmEICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUSbwAVUJIAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACBAbGAAIEGYQgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVQkgB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBBmEICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVUJIAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQZhCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVCSAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEGYQgICAiAI4C4CAiAAAjfEBIAqwCsAK1RuAAfAK8AsFG5ACEArlG6ALEADgAjALIAswAmALQAFQAVABUAJwBJAHUAdVHCAC8AdQBnAHUFGk3qAHUAdVHKAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEGDwgIgQZsCIASCIDBgQYkCAiBBmsIEomoNyzTADgAOQAOUc5R0QBQogGSBSSAO4CkolHSUdOBBm2BBniAL9kAHwAjUdYADgAmUdcAIQBmUdhN7wGSAGcAhgAVACcALwB1UeBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBmqAO4ASgDWAAIAECIEGbtMAOAA5AA5R4lHrAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoUexR7VHuUe9R8FHxUfJR84EGb4EGcIEGcYEGc4EGdIEGdYEGdoEGd4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVUdIAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQZtCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVHSAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEGbQgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFVIVABVR0gB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEGcoAAgQZtCAgICIAjgEEICIAACNMAOAA5AA5SI1IkAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVUdIAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQZtCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFVHSAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEGbQgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVR0gB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBm0ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVUdIAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQZtCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVHSAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEGbQgICAiAI4BGCAiAAAjZAB8AI1JyAA4AJlJzACEAZlJ0Te8FJABnAIYAFQAnAC8AdVJ8XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQZqgKSAEoA1gACABAiBBnnTADgAOQAOUn5ShgBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinUodSiFKJUopSi1KMUo2BBnqBBnuBBnyBBn2BBn6BBn+BBoCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVHTAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEGeAgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVR0wB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBngICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVUdMAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQZ4CAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFVHTAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEGeAgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVR0wB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBBngICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVUdMAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQZ4CAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVHTAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEGeAgICAiAI4C4CAiAAAjSADkADlL5AMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABVMFgB1AHUAdQAvAHUAvQJSAHUAdQAVAHWAAIBNgACBBgkICAgIgCOAWAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVTBYAdQB1AHUALwB1AL0CUwB1AHUAFQB1gACALIAAgQYJCAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVTewAFUwWAHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgQYlgACBBgkICAgIgCOAWggIgAAI3xASAKsArACtUykAHwCvALBTKgAhAK5TKwCxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHVTMwAvAHUAZwB1BRoDlgB1AHVTOwB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgQaHCIASCIDBgIcICIEGhggS0i30dtMAOAA5AA5TP1NCAFCiAZIFJIA7gKSiU0NTRIEGiIEGk4Av2QAfACNTRwAOACZTSAAhAGZTSQOrAZIAZwCGABUAJwAvAHVTUV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEGhYA7gBKANYAAgAQIgQaJ0wA4ADkADlNTU1wAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhTXVNeU19TYFNhU2JTY1NkgQaKgQaLgQaMgQaOgQaPgQaQgQaRgQaSgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVTQwB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBBogICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVU0MAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQaICAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVU4YAFVNDAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQaNgACBBogICAgIgCOAQQgIgAAI0wA4ADkADlOUU5UAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVTQwB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBBogICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVU0MAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQaICAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVNDAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEGiAgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVTQwB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBBogICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVU0MAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQaICAgICIAjgEYICIAACNkAHwAjU+MADgAmU+QAIQBmU+UDqwUkAGcAhgAVACcALwB1U+1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBoWApIASgDWAAIAECIEGlNMAOAA5AA5T71P3AFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKdT+FP5U/pT+1P8U/1T/oEGlYEGloEGl4EGmIEGmYEGmoEGm4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUSQQAVU0QAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACBAa2AAIEGkwgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVTRAB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBpMICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVU0QAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQaTCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVEm8AFVNEAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgQGxgACBBpMICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVU0QAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQaTCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVNEAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEGkwgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVTRAB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBpMICAgIgCOAuAgIgAAI3xASAKsArACtVGoAHwCvALBUawAhAK5UbACxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHVUdAAvAHUAZwB1BRoDlwB1AHVUfAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgQaeCIASCIDBgIgICIEGnQgTAAAAAQEPdNDTADgAOQAOVIBUgwBQogGSBSSAO4CkolSEVIWBBp+BBqqAL9kAHwAjVIgADgAmVIkAIQBmVIoDrAGSAGcAhgAVACcALwB1VJJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBpyAO4ASgDWAAIAECIEGoNMAOAA5AA5UlFSdAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoVJ5Un1SgVKFUolSjVKRUpYEGoYEGooEGo4EGpYEGpoEGp4EGqIEGqYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVVIQAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQafCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVSEAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEGnwgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFVTHABVUhAB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEGpIAAgQafCAgICIAjgEEICIAACNMAOAA5AA5U1VTWAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVVIQAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQafCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVSEAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEGnwgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVUhAB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBp8ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVVIQAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQafCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVSEAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEGnwgICAiAI4BGCAiAAAjZAB8AI1UkAA4AJlUlACEAZlUmA6wFJABnAIYAFQAnAC8AdVUuXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQacgKSAEoA1gACABAiBBqvTADgAOQAOVTBVOABQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinVTlVOlU7VTxVPVU+VT+BBqyBBq2BBq6BBq+BBrCBBrGBBrKAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVSFAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEGqggICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVUhQB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBBqoICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVVIUAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQaqCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVBhoAFVSFAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgL2AAIEGqggICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVUhQB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBBqoICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVVIUAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQaqCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVSFAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEGqggICAiAI4C4CAiAAAjSADkADlWrAMWggCLSADkADlWuAMWiVa9VsIEGtYEHboAi1wAOACNVswAfACZVtAAhVbUAFQBIAEhVuQBLAC9ZX3NwZWNpZmljWF9nZW5lcmFsgQdtgACBBraBBraBB2yAYd8QEFW8Vb1VvlW/AB9VwFXBACFVwlXDAA4AI1XEVcUAJgBmAGdVxwAnACcAE1XLAG0ALwAnAGcAcAA9AGdV0lXTAHVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAEoEGyIAEgASAAoEGuIEBloAEgBKBAZiACIASgQdrgQa3CBJW2ELb0wA4ADkADlXXVdkAUKEAeoAUoVXagQa5gC/ZAB8AI1XdAA4AJlXeACEAZlXfAEgAegBnAIYAFQAnAC8AdVXnXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQa2gBSAEoA1gACABAiBBrrTADgAOQAOVelV8wBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6lV9FX1VfZV91X4VflV+lX7VfyBBruBBr2BBr6BBsCBBsGBBsOBBsSBBsaBBseAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVVgAAFVXaAHUAdQB1AC8AdQC9AI0AdQB1ABUAdYAAgQa8gACBBrkICAgIgCOAFwgIgAAI0gA5AA5WDgDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVVdoAdQB1AHUALwB1AL0AjgB1AHUAFQB1gACAAIAAgQa5CAgICIAjgBgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVViEAFVXaAHUAdQB1AC8AdQC9AI8AdQB1ABUAdYAAgQa/gACBBrkICAgIgCOAGQgIgAAI0gA5AA5WLwDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVVdoAdQB1AHUALwB1AL0AkAB1AHUAFQB1gACAAIAAgQa5CAgICIAjgBoICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVVkIAFVXaAHUAdQB1AC8AdQC9AJEAdQB1ABUAdYAAgQbCgACBBrkICAgIgCOAGwgIgAAI0gA5AA5WUADFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVVdoAdQB1AHUALwB1AL0AkgB1AHUAFQB1gACALIAAgQa5CAgICIAjgBwICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVVmMAFVXaAHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgQbFgACBBrkICAgIgCOAHQgIgAAI0wA4ADkADlZxVnIAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQE/ABVV2gB1AHUAdQAvAHUAvQCUAHUAdQAVAHWAAIAxgACBBrkICAgIgCOAHggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAPQAVVdoAdQB1AHUALwB1AL0AlQB1AHUAFQB1gACACIAAgQa5CAgICIAjgB8ICIAACNMAOAA5AA5Wk1aVAFChVpSBBsmhVpaBBsqAL1hjaGFwdGVyc98QEgCrAKwArVaaAB8ArwCwVpsAIQCuVpwAsQAOACMAsgCzACYAtAAVABUAFQAnAEgAdQB1VqQALwB1AGcAdQGJVpQAdQB1VqwAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQa2CAiBBswIgBIIgKCBBskICIEGywgTAAAAASsKpIPTADgAOQAOVrBWswBQogGSAZOAO4A8ola0VrWBBs2BBtiAL9kAHwAjVrgADgAmVrkAIQBmVrpWlgGSAGcAhgAVACcALwB1VsJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBsqAO4ASgDWAAIAECIEGztMAOAA5AA5WxFbNAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoVs5Wz1bQVtFW0lbTVtRW1YEGz4EG0IEG0YEG04EG1IEG1YEG1oEG14Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVVrQAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQbNCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVa0AHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEGzQgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFVb3ABVWtAB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEG0oAAgQbNCAgICIAjgEEICIAACNMAOAA5AA5XBVcGAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVVrQAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQbNCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFVa0AHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEGzQgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVWtAB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBs0ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVVrQAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQbNCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVa0AHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEGzQgICAiAI4BGCAiAAAjZAB8AI1dUAA4AJldVACEAZldWVpYBkwBnAIYAFQAnAC8AdVdeXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQbKgDyAEoA1gACABAiBBtnTADgAOQAOV2BXaABQpwJOAk8CUAJRAlICUwJUgFSAVYBWgFeAWIBZgFqnV2lXaldrV2xXbVduV2+BBtqBBtuBBtyBBt2BB2iBB2mBB2qAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFVa1AHUAdQB1AC8AdQC9Ak4AdQB1ABUAdYAAgFyAAIEG2AgICAiAI4BUCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQdGABVWtQB1AHUAdQAvAHUAvQJPAHUAdQAVAHWAAIDUgACBBtgICAgIgCOAVQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCZwAVVrUAdQB1AHUALwB1AL0CUAB1AHUAFQB1gACAXIAAgQbYCAgICIAjgFYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAEoAFVa1AHUAdQB1AC8AdQC9AlEAdQB1ABUAdYAAgQbegACBBtgICAgIgCOAVwgIgAAI3xAQV65Xr1ewV7EAH1eyV7MAIVe0V7UADgAjV7ZXtwAmAGYAZ1e5ACcAJwATV70AbQAvACcAZwBwAD8AZ1fEV8UAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgQbwgASABIACgQbggQGWgASAEoEBmIAKgBKBB2eBBt8IEwAAAAEj2Bt80wA4ADkADlfJV8sAUKEAeoAUoVfMgQbhgC/ZAB8AI1fPAA4AJlfQACEAZlfRAEoAegBnAIYAFQAnAC8AdVfZXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQbegBSAEoA1gACABAiBBuLTADgAOQAOV9tX5QBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6lX5lfnV+hX6VfqV+tX7FftV+6BBuOBBuWBBuaBBuiBBumBBuuBBuyBBu6BBu+AL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVV/IAFVfMAHUAdQB1AC8AdQC9AI0AdQB1ABUAdYAAgQbkgACBBuEICAgIgCOAFwgIgAAI0gA5AA5YAADFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVV8wAdQB1AHUALwB1AL0AjgB1AHUAFQB1gACAAIAAgQbhCAgICIAjgBgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVWBMAFVfMAHUAdQB1AC8AdQC9AI8AdQB1ABUAdYAAgQbngACBBuEICAgIgCOAGQgIgAAI0gA5AA5YIQDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVV8wAdQB1AHUALwB1AL0AkAB1AHUAFQB1gACAAIAAgQbhCAgICIAjgBoICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVWDQAFVfMAHUAdQB1AC8AdQC9AJEAdQB1ABUAdYAAgQbqgACBBuEICAgIgCOAGwgIgAAI0gA5AA5YQgDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVV8wAdQB1AHUALwB1AL0AkgB1AHUAFQB1gACALIAAgQbhCAgICIAjgBwICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVWFUAFVfMAHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgQbtgACBBuEICAgIgCOAHQgIgAAI0wA4ADkADlhjWGQAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQE/ABVXzAB1AHUAdQAvAHUAvQCUAHUAdQAVAHWAAIAxgACBBuEICAgIgCOAHggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAPwAVV8wAdQB1AHUALwB1AL0AlQB1AHUAFQB1gACACoAAgQbhCAgICIAjgB8ICIAACNMAOAA5AA5YhViLAFClA4dYhwOFWIlYioB4gQbxgHaBBvKBBvOlWIxYjViOWI9YkIEG9IEHC4EHIoEHOYEHUIAvVXN0YXJ0VGJvb2tVaW5kZXjfEBIAqwCsAK1YlgAfAK8AsFiXACEArliYALEADgAjALIAswAmALQAFQAVABUAJwBKAHUAdVigAC8AdQBnAHUFGgOHAHUAdVioAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEG3ggIgQb2CIASCIDBgHgICIEG9QgTAAAAASoSSs7TADgAOQAOWKxYrwBQogGSBSSAO4CkoliwWLGBBveBBwKAL9kAHwAjWLQADgAmWLUAIQBmWLZYjAGSAGcAhgAVACcALwB1WL5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBvSAO4ASgDWAAIAECIEG+NMAOAA5AA5YwFjJAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoWMpYy1jMWM1YzljPWNBY0YEG+YEG+oEG+4EG/YEG/oEG/4EHAIEHAYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVWLAAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQb3CAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFViwAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEG9wgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFVjzABVYsAB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEG/IAAgQb3CAgICIAjgEEICIAACNMAOAA5AA5ZAVkCAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVWLAAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQb3CAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFViwAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEG9wgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVYsAB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBvcICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVWLAAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQb3CAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFViwAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEG9wgICAiAI4BGCAiAAAjZAB8AI1lQAA4AJllRACEAZllSWIwFJABnAIYAFQAnAC8AdVlaXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQb0gKSAEoA1gACABAiBBwPTADgAOQAOWVxZZABQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinWWVZZllnWWhZaVlqWWuBBwSBBwWBBwaBBweBBwiBBwmBBwqAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVEkEAFVixAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgQGtgACBBwIICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVWLEAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQcCCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVixAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEHAggICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRJvABVYsQB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIEBsYAAgQcCCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVixAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEHAggICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVYsQB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBBwIICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVWLEAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQcCCAgICIAjgLgICIAACN8QEgCrAKwArVnXAB8ArwCwWdgAIQCuWdkAsQAOACMAsgCzACYAtAAVABUAFQAnAEoAdQB1WeEALwB1AGcAdQUaWIcAdQB1WekAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQbeCAiBBw0IgBIIgMGBBvEICIEHDAgTAAAAAQIrKGvTADgAOQAOWe1Z8ABQogGSBSSAO4CkolnxWfKBBw6BBxmAL9kAHwAjWfUADgAmWfYAIQBmWfdYjQGSAGcAhgAVACcALwB1Wf9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBwuAO4ASgDWAAIAECIEHD9MAOAA5AA5aAVoKAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoWgtaDFoNWg5aD1oQWhFaEoEHEIEHEYEHEoEHFIEHFYEHFoEHF4EHGIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVWfEAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQcOCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVnxAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEHDggICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFVo0ABVZ8QB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEHE4AAgQcOCAgICIAjgEEICIAACNMAOAA5AA5aQlpDAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVWfEAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQcOCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVnxAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEHDggICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVZ8QB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBBw4ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVWfEAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQcOCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVnxAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEHDggICAiAI4BGCAiAAAjZAB8AI1qRAA4AJlqSACEAZlqTWI0FJABnAIYAFQAnAC8AdVqbXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQcLgKSAEoA1gACABAiBBxrTADgAOQAOWp1apQBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinWqZap1qoWqlaqlqrWqyBBxuBBxyBBx2BBx6BBx+BByCBByGAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVEkEAFVnyAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgQGtgACBBxkICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVWfIAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQcZCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVnyAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEHGQgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRJvABVZ8gB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIEBsYAAgQcZCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVnyAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEHGQgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVZ8gB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBBxkICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVWfIAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQcZCAgICIAjgLgICIAACN8QEgCrAKwArVsYAB8ArwCwWxkAIQCuWxoAsQAOACMAsgCzACYAtAAVABUAFQAnAEoAdQB1WyIALwB1AGcAdQUaA4UAdQB1WyoAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQbeCAiBByQIgBIIgMGAdggIgQcjCBJO210o0wA4ADkADlsuWzEAUKIBkgUkgDuApKJbMlszgQclgQcwgC/ZAB8AI1s2AA4AJls3ACEAZls4WI4BkgBnAIYAFQAnAC8AdVtAXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQcigDuAEoA1gACABAiBBybTADgAOQAOW0JbSwBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqFtMW01bTltPW1BbUVtSW1OBByeBByiBBymBByuBByyBBy2BBy6BBy+AL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVsyAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEHJQgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVbMgB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBByUICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVbdQAVWzIAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBByqAAIEHJQgICAiAI4BBCAiAAAjTADgAOQAOW4NbhABQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVsyAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEHJQgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVbMgB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIAsgACBByUICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVWzIAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQclCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVsyAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEHJQgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVbMgB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBByUICAgIgCOARggIgAAI2QAfACNb0gAOACZb0wAhAGZb1FiOBSQAZwCGABUAJwAvAHVb3F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHIoCkgBKANYAAgAQIgQcx0wA4ADkADlveW+YAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4p1vnW+hb6VvqW+tb7FvtgQcygQczgQc0gQc1gQc2gQc3gQc4gC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVbMwB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBBzAICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVWzMAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQcwCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVszAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEHMAgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABVbMwB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBBzAICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVWzMAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQcwCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFVszAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEHMAgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVbMwB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBBzAICAgIgCOAuAgIgAAI3xASAKsArACtXFkAHwCvALBcWgAhAK5cWwCxAA4AIwCyALMAJgC0ABUAFQAVACcASgB1AHVcYwAvAHUAZwB1AYlYiQB1AHVcawB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBt4ICIEHOwiAEgiAoIEG8ggIgQc6CBMAAAABHGxXB9MAOAA5AA5cb1xyAFCiAZIBk4A7gDyiXHNcdIEHPIEHR4Av2QAfACNcdwAOACZceAAhAGZceViPAZIAZwCGABUAJwAvAHVcgV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHOYA7gBKANYAAgAQIgQc90wA4ADkADlyDXIwAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhcjVyOXI9ckFyRXJJck1yUgQc+gQc/gQdAgQdCgQdDgQdEgQdFgQdGgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVccwB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBBzwICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVXHMAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQc8CAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVXLYAFVxzAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQdBgACBBzwICAgIgCOAQQgIgAAI0wA4ADkADlzEXMUAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVccwB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBBzwICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVXHMAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQc8CAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFVxzAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEHPAgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVccwB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBBzwICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVXHMAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQc8CAgICIAjgEYICIAACNkAHwAjXRMADgAmXRQAIQBmXRVYjwGTAGcAhgAVACcALwB1XR1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBzmAPIASgDWAAIAECIEHSNMAOAA5AA5dH10nAFCnAk4CTwJQAlECUgJTAlSAVIBVgFaAV4BYgFmAWqddKF0pXSpdK10sXS1dLoEHSYEHSoEHS4EHTIEHTYEHToEHT4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCZwAVXHQAdQB1AHUALwB1AL0CTgB1AHUAFQB1gACAXIAAgQdHCAgICIAjgFQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAnYAFVx0AHUAdQB1AC8AdQC9Ak8AdQB1ABUAdYAAgF6AAIEHRwgICAiAI4BVCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJ2ABVcdAB1AHUAdQAvAHUAvQJQAHUAdQAVAHWAAIBegACBB0cICAgIgCOAVggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUASAAVXHQAdQB1AHUALwB1AL0CUQB1AHUAFQB1gACBBraAAIEHRwgICAiAI4BXCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVcdAB1AHUAdQAvAHUAvQJSAHUAdQAVAHWAAIAsgACBB0cICAgIgCOAWAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVXHQAdQB1AHUALwB1AL0CUwB1AHUAFQB1gACALIAAgQdHCAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVVpYAFVx0AHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgQbKgACBB0cICAgIgCOAWggIgAAI3xASAKsArACtXZoAHwCvALBdmwAhAK5dnACxAA4AIwCyALMAJgC0ABUAFQAVACcASgB1AHVdpAAvAHUAZwB1BRpYigB1AHVdrAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBBt4ICIEHUgiAEgiAwYEG8wgIgQdRCBKpFfaN0wA4ADkADl2wXbMAUKIBkgUkgDuApKJdtF21gQdTgQdegC/ZAB8AI124AA4AJl25ACEAZl26WJABkgBnAIYAFQAnAC8AdV3CXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQdQgDuAEoA1gACABAiBB1TTADgAOQAOXcRdzQBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqF3OXc9d0F3RXdJd013UXdWBB1WBB1aBB1eBB1mBB1qBB1uBB1yBB12AL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFV20AHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEHUwgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVdtAB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBB1MICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVd9wAVXbQAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBB1iAAIEHUwgICAiAI4BBCAiAAAjTADgAOQAOXgVeBgBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFV20AHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEHUwgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVdtAB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIAsgACBB1MICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVXbQAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQdTCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFV20AHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEHUwgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVdtAB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBB1MICAgIgCOARggIgAAI2QAfACNeVAAOACZeVQAhAGZeVliQBSQAZwCGABUAJwAvAHVeXl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHUICkgBKANYAAgAQIgQdf0wA4ADkADl5gXmgAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4p15pXmpea15sXm1ebl5vgQdggQdhgQdigQdjgQdkgQdlgQdmgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQk8ABVdtQB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIEBAoAAgQdeCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFV21AHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEHXggICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVdtQB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBB14ICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUJagAVXbUAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACBAQaAAIEHXggICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVdtQB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBB14ICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVXbUAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQdeCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFV21AHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEHXggICAiAI4C4CAiAAAjSADkADl7bAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABVWtQB1AHUAdQAvAHUAvQJSAHUAdQAVAHWAAIBNgACBBtgICAgIgCOAWAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVVrUAdQB1AHUALwB1AL0CUwB1AHUAFQB1gACATYAAgQbYCAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVWI8AFVa1AHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgQc5gACBBtgICAgIgCOAWggIgAAI0gA5AA5fCwDFoVWvgQa1gCISnJTOtdIAxwDIXxBfEV8QFlhEVU1MR2VuZXJhbGl6YXRpb25JbXCkXxJfE18UAMxfEBZYRFVNTEdlbmVyYWxpemF0aW9uSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDXAA4AI1WzAB8AJlW0ACFVtQAVAEYARl8aAEsAL4EHbYAAgBCAEIEHb4BhElOt/fnfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUBlgB1AHUAdQAvAHUAvQJSAHUAdQAVAHWAAIBNgACAUggICAiAI4BYCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUBlgB1AHUAdQAvAHUAvQJTAHUAdQAVAHWAAIAsgACAUggICAiAI4BZCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQOZABUBlgB1AHUAdQAvAHUAvQJUAHUAdQAVAHWAAICJgACAUggICAiAI4BaCAiAAAjSADkADl9LAMWhVbCBB26AIt8QEF9PX1BfUV9SAB9fU19UACFfVV9WAA4AI19XX1gAJgBmAGdfWgAnACcAE19eAG0ALwAnAGcAcABBAGdfZV9mAHVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAEoEHhoAEgASAAoEHdoEBloAEgBKBAZiADIASgQfmgQd1CBLfmLpp0wA4ADkADl9qX2wAUKEAeoAUoV9tgQd3gC/ZAB8AI19wAA4AJl9xACEAZl9yAEwAegBnAIYAFQAnAC8AdV96XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQd0gBSAEoA1gACABAiBB3jTADgAOQAOX3xfhgBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6lfh1+IX4lfil+LX4xfjV+OX4+BB3mBB3uBB3yBB36BB3+BB4GBB4KBB4SBB4WAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVX5MAFV9tAHUAdQB1AC8AdQC9AI0AdQB1ABUAdYAAgQd6gACBB3cICAgIgCOAFwgIgAAI0gA5AA5foQDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVX20AdQB1AHUALwB1AL0AjgB1AHUAFQB1gACAAIAAgQd3CAgICIAjgBgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVX7QAFV9tAHUAdQB1AC8AdQC9AI8AdQB1ABUAdYAAgQd9gACBB3cICAgIgCOAGQgIgAAI0gA5AA5fwgDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVX20AdQB1AHUALwB1AL0AkAB1AHUAFQB1gACAAIAAgQd3CAgICIAjgBoICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVX9UAFV9tAHUAdQB1AC8AdQC9AJEAdQB1ABUAdYAAgQeAgACBB3cICAgIgCOAGwgIgAAI0gA5AA5f4wDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVX20AdQB1AHUALwB1AL0AkgB1AHUAFQB1gACALIAAgQd3CAgICIAjgBwICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVX/YAFV9tAHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgQeDgACBB3cICAgIgCOAHQgIgAAI0wA4ADkADmAEYAUAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQE/ABVfbQB1AHUAdQAvAHUAvQCUAHUAdQAVAHWAAIAxgACBB3cICAgIgCOAHggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAQQAVX20AdQB1AHUALwB1AL0AlQB1AHUAFQB1gACADIAAgQd3CAgICIAjgB8ICIAACNMAOAA5AA5gJmArAFCkYCdgKAhOYCqBB4eBB4iA7YEHiaRgLGAtYC5gL4EHioEHoYEHuIEHz4AvVWVtYWlsXxAPaGFzU3Vic2NyaXB0aW9uXGRvbmF0aW9uTWFkZd8QEgCrAKwArWA1AB8ArwCwYDYAIQCuYDcAsQAOACMAsgCzACYAtAAVABUAFQAnAEwAdQB1YD8ALwB1AGcAdQUaYCcAdQB1YEcAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQd0CAiBB4wIgBIIgMGBB4cICIEHiwgSty3OLdMAOAA5AA5gS2BOAFCiAZIFJIA7gKSiYE9gUIEHjYEHmIAv2QAfACNgUwAOACZgVAAhAGZgVWAsAZIAZwCGABUAJwAvAHVgXV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHioA7gBKANYAAgAQIgQeO0wA4ADkADmBfYGgAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhgaWBqYGtgbGBtYG5gb2BwgQePgQeQgQeRgQeTgQeUgQeVgQeWgQeXgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVgTwB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBB40ICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVYE8AdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQeNCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVYJIAFWBPAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQeSgACBB40ICAgIgCOAQQgIgAAI0wA4ADkADmCgYKEAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVgTwB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBB40ICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVYE8AdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQeNCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWBPAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEHjQgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVgTwB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBB40ICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVYE8AdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQeNCAgICIAjgEYICIAACNkAHwAjYO8ADgAmYPAAIQBmYPFgLAUkAGcAhgAVACcALwB1YPlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB4qApIASgDWAAIAECIEHmdMAOAA5AA5g+2EDAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKdhBGEFYQZhB2EIYQlhCoEHmoEHm4EHnIEHnYEHnoEHn4EHoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVYFAAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQeYCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWBQAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEHmAgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVgUAB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBB5gICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVYFAAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQeYCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWBQAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEHmAgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVgUAB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBB5gICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVYFAAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQeYCAgICIAjgLgICIAACN8QEgCrAKwArWF2AB8ArwCwYXcAIQCuYXgAsQAOACMAsgCzACYAtAAVABUAFQAnAEwAdQB1YYAALwB1AGcAdQUaYCgAdQB1YYgAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQd0CAiBB6MIgBIIgMGBB4gICIEHoggSZQ5c3dMAOAA5AA5hjGGPAFCiAZIFJIA7gKSiYZBhkYEHpIEHr4Av2QAfACNhlAAOACZhlQAhAGZhlmAtAZIAZwCGABUAJwAvAHVhnl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHoYA7gBKANYAAgAQIgQel0wA4ADkADmGgYakAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhhqmGrYaxhrWGuYa9hsGGxgQemgQengQeogQeqgQergQesgQetgQeugC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVhkAB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBB6QICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVYZAAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQekCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVYdMAFWGQAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQepgACBB6QICAgIgCOAQQgIgAAI0wA4ADkADmHhYeIAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVhkAB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBB6QICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVYZAAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQekCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWGQAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEHpAgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVhkAB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBB6QICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVYZAAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQekCAgICIAjgEYICIAACNkAHwAjYjAADgAmYjEAIQBmYjJgLQUkAGcAhgAVACcALwB1YjpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB6GApIASgDWAAIAECIEHsNMAOAA5AA5iPGJEAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKdiRWJGYkdiSGJJYkpiS4EHsYEHsoEHs4EHtIEHtYEHtoEHt4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVYZEAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQevCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWGRAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEHrwgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVhkQB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBB68ICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVLvwAVYZEAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACBBfeAAIEHrwgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVhkQB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBB68ICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVYZEAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQevCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWGRAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEHrwgICAiAI4C4CAiAAAjfEBIAqwCsAK1itwAfAK8AsGK4ACEArmK5ALEADgAjALIAswAmALQAFQAVABUAJwBMAHUAdWLBAC8AdQBnAHUFGghOAHUAdWLJAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIEHdAgIgQe6CIASCIDBgO0ICIEHuQgSeb62d9MAOAA5AA5izWLQAFCiAZIFJIA7gKSiYtFi0oEHu4EHxoAv2QAfACNi1QAOACZi1gAhAGZi12AuAZIAZwCGABUAJwAvAHVi318QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHuIA7gBKANYAAgAQIgQe80wA4ADkADmLhYuoAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhi62LsYu1i7mLvYvBi8WLygQe9gQe+gQe/gQfBgQfCgQfDgQfEgQfFgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVi0QB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBB7sICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVYtEAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQe7CAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVYxQAFWLRAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQfAgACBB7sICAgIgCOAQQgIgAAI0wA4ADkADmMiYyMAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVi0QB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBB7sICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVYtEAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQe7CAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWLRAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEHuwgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVi0QB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBB7sICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVYtEAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQe7CAgICIAjgEYICIAACNkAHwAjY3EADgAmY3IAIQBmY3NgLgUkAGcAhgAVACcALwB1Y3tfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB7iApIASgDWAAIAECIEHx9MAOAA5AA5jfWOFAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKdjhmOHY4hjiWOKY4tjjIEHyIEHyYEHyoEHy4EHzIEHzYEHzoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVYtIAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQfGCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWLSAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEHxggICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVi0gB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBB8YICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVYtIAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQfGCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWLSAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEHxggICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVi0gB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBB8YICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVYtIAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQfGCAgICIAjgLgICIAACN8QEgCrAKwArWP4AB8ArwCwY/kAIQCuY/oAsQAOACMAsgCzACYAtAAVABUAFQAnAEwAdQB1ZAIALwB1AGcAdQUaYCoAdQB1ZAoAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQd0CAiBB9EIgBIIgMGBB4kICIEH0AgSgQWtHNMAOAA5AA5kDmQRAFCiAZIFJIA7gKSiZBJkE4EH0oEH3YAv2QAfACNkFgAOACZkFwAhAGZkGGAvAZIAZwCGABUAJwAvAHVkIF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEHz4A7gBKANYAAgAQIgQfT0wA4ADkADmQiZCsAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhkLGQtZC5kL2QwZDFkMmQzgQfUgQfVgQfWgQfYgQfZgQfagQfbgQfcgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVkEgB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBB9IICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVZBIAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQfSCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVZFUAFWQSAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQfXgACBB9IICAgIgCOAQQgIgAAI0wA4ADkADmRjZGQAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVkEgB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBB9IICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVZBIAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQfSCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWQSAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEH0ggICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVkEgB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBB9IICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVZBIAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQfSCAgICIAjgEYICIAACNkAHwAjZLIADgAmZLMAIQBmZLRgLwUkAGcAhgAVACcALwB1ZLxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBB8+ApIASgDWAAIAECIEH3tMAOAA5AA5kvmTGAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKdkx2TIZMlkymTLZMxkzYEH34EH4IEH4YEH4oEH44EH5IEH5YAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVZBMAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQfdCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWQTAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEH3QgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVkEwB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBB90ICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVLvwAVZBMAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACBBfeAAIEH3QgICAiAI4C1CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVkEwB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBB90ICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVZBMAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQfdCAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWQTAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIEH3QgICAiAI4C4CAiAAAjSADkADmU5AMWggCLfEBBlPGU9ZT5lPwAfZUBlQQAhZUJlQwAOACNlRGVFACYAZgBnZUcAJwAnABNlSwBtAC8AJwBnAHAAQgBnZVJlUwB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgBKBB/qABIAEgAKBB+mBAZaABIASgQGYgA2AEoEIKoEH6AgSl240aNMAOAA5AA5lV2VZAFChAHqAFKFlWoEH6oAv2QAfACNlXQAOACZlXgAhAGZlXwBNAHoAZwCGABUAJwAvAHVlZ18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEH54AUgBKANYAAgAQIgQfr0wA4ADkADmVpZXMAUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pZXRldWV2ZXdleGV5ZXple2V8gQfsgQfugQfvgQfxgQfygQf0gQf1gQf3gQf4gC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFWWAABVlWgB1AHUAdQAvAHUAvQCNAHUAdQAVAHWAAIEH7YAAgQfqCAgICIAjgBcICIAACNIAOQAOZY4AxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWVaAHUAdQB1AC8AdQC9AI4AdQB1ABUAdYAAgACAAIEH6ggICAiAI4AYCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFWWhABVlWgB1AHUAdQAvAHUAvQCPAHUAdQAVAHWAAIEH8IAAgQfqCAgICIAjgBkICIAACNIAOQAOZa8AxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWVaAHUAdQB1AC8AdQC9AJAAdQB1ABUAdYAAgACAAIEH6ggICAiAI4AaCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFWXCABVlWgB1AHUAdQAvAHUAvQCRAHUAdQAVAHWAAIEH84AAgQfqCAgICIAjgBsICIAACNIAOQAOZdAAxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWVaAHUAdQB1AC8AdQC9AJIAdQB1ABUAdYAAgCyAAIEH6ggICAiAI4AcCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFWXjABVlWgB1AHUAdQAvAHUAvQCTAHUAdQAVAHWAAIEH9oAAgQfqCAgICIAjgB0ICIAACNMAOAA5AA5l8WXyAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBPwAVZVoAdQB1AHUALwB1AL0AlAB1AHUAFQB1gACAMYAAgQfqCAgICIAjgB4ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVZgUAFWVaAHUAdQB1AC8AdQC9AJUAdQB1ABUAdYAAgQf5gACBB+oICAgIgCOAHwgIgAAIXlBsYXliYWNrUmVjb3Jk0wA4ADkADmYUZhcAUKJmFU3pgQf7gQYjomYYZhmBB/yBCBOAL1RkYXRl3xASAKsArACtZh0AHwCvALBmHgAhAK5mHwCxAA4AIwCyALMAJgC0ABUAFQAVACcATQB1AHVmJwAvAHUAZwB1BRpmFQB1AHVmLwB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBB+cICIEH/giAEgiAwYEH+wgIgQf9CBKDcO9p0wA4ADkADmYzZjYAUKIBkgUkgDuApKJmN2Y4gQf/gQgKgC/ZAB8AI2Y7AA4AJmY8ACEAZmY9ZhgBkgBnAIYAFQAnAC8AdWZFXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQf8gDuAEoA1gACABAiBCADTADgAOQAOZkdmUABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqGZRZlJmU2ZUZlVmVmZXZliBCAGBCAKBCAOBCAWBCAaBCAeBCAiBCAmAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWY3AHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEH/wgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVmNwB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBB/8ICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVmegAVZjcAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBCASAAIEH/wgICAiAI4BBCAiAAAjTADgAOQAOZohmiQBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWY3AHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEH/wgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVmNwB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIAsgACBB/8ICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVZjcAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQf/CAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWY3AHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEH/wgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVmNwB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBB/8ICAgIgCOARggIgAAI2QAfACNm1wAOACZm2AAhAGZm2WYYBSQAZwCGABUAJwAvAHVm4V8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEH/ICkgBKANYAAgAQIgQgL0wA4ADkADmbjZusAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4p2bsZu1m7mbvZvBm8WbygQgMgQgNgQgOgQgPgQgQgQgRgQgSgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVmOAB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBCAoICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVZjgAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQgKCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWY4AHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEICggICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRn4ABVmOAB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIECPoAAgQgKCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWY4AHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEICggICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVmOAB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBCAoICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVZjgAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQgKCAgICIAjgLgICIAACN8QEgCrAKwArWdeAB8ArwCwZ18AIQCuZ2AAsQAOACMAsgCzACYAtAAVABUAFQAnAE0AdQB1Z2gALwB1AGcAdQUaTekAdQB1Z3AAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQfnCAiBCBUIgBIIgMGBBiMICIEIFAgSVuiRv9MAOAA5AA5ndGd3AFCiAZIFJIA7gKSiZ3hneYEIFoEIIYAv2QAfACNnfAAOACZnfQAhAGZnfmYZAZIAZwCGABUAJwAvAHVnhl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEIE4A7gBKANYAAgAQIgQgX0wA4ADkADmeIZ5EAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqhnkmeTZ5RnlWeWZ5dnmGeZgQgYgQgZgQgagQgcgQgdgQgegQgfgQgggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVneAB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBCBYICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVZ3gAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQgWCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVZ7sAFWd4AHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQgbgACBCBYICAgIgCOAQQgIgAAI0wA4ADkADmfJZ8oAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVneAB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBCBYICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVZ3gAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQgWCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFWd4AHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEIFggICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVneAB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBCBYICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVZ3gAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQgWCAgICIAjgEYICIAACNkAHwAjaBgADgAmaBkAIQBmaBpmGQUkAGcAhgAVACcALwB1aCJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBCBOApIASgDWAAIAECIEIItMAOAA5AA5oJGgsAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKdoLWguaC9oMGgxaDJoM4EII4EIJIEIJYEIJoEIJ4EIKIEIKYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUJPAAVZ3kAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACBAQKAAIEIIQgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABVneQB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBCCEICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVZ3kAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQghCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVEm8AFWd5AHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgQGxgACBCCEICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVZ3kAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQghCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFWd5AHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEIIQgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVneQB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBCCEICAgIgCOAuAgIgAAI0gA5AA5onwDFoIAi0wA4ADkADmiiaKMAUKCggC/TADgAOQAOaKZopwBQoKCAL9MAOAA5AA5oqmirAFCgoIAv0gDHAMhormivXlhETW9kZWxQYWNrYWdlpmiwaLFosmizaLQAzF5YRE1vZGVsUGFja2FnZV8QD1hEVU1MUGFja2FnZUltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDSADkADmi2AMWggCLTADgAOQAOaLlougBQoKCAL1DSAMcAyGi+aL9ZWERQTU1vZGVso2i+aMAAzFdYRE1vZGVsAAAACAAAABkAAAAiAAAALAAAADEAAAA6AAAAPwAAAFEAAABWAAAAWwAAAF0AABDHAAAQzQAAEOYAABD4AAAQ/wAAEQ0AABEaAAARMgAAEUwAABFOAAARUQAAEVMAABFWAAARWQAAEVwAABGVAAARtAAAEdEAABHwAAASAgAAEiIAABIpAAASRwAAElMAABJvAAASdQAAEpcAABK4AAASywAAEs0AABLQAAAS0wAAEtUAABLXAAAS2QAAEtwAABLfAAAS4QAAEuMAABLlAAAS5wAAEukAABLrAAAS7AAAEvAAABL9AAATBQAAExAAABMlAAATJwAAEykAABMrAAATLQAAEy8AABMxAAATMwAAEzUAABM3AAATOQAAE04AABNQAAATUgAAE1UAABNYAAATWwAAE10AABNgAAATYwAAE2YAABNpAAATawAAE3IAABOAAAAThQAAE44AABOWAAATogAAE6oAABO5AAATwQAAE8cAABQKAAAULgAAFFIAABR1AAAUnAAAFLwAABTjAAAVCgAAFSoAABVOAAAVcgAAFX4AABWAAAAVggAAFYQAABWGAAAViAAAFYoAABWNAAAVjwAAFZEAABWUAAAVlgAAFZgAABWbAAAVnQAAFZ4AABWjAAAVqwAAFbgAABW7AAAVvQAAFcAAABXCAAAVxAAAFdMAABX4AAAWHAAAFkMAABZnAAAWaQAAFmsAABZtAAAWbwAAFnEAABZzAAAWdAAAFnYAABaDAAAWlgAAFpgAABaaAAAWnAAAFp4AABagAAAWogAAFqQAABamAAAWqAAAFrsAABa9AAAWvwAAFsEAABbDAAAWxQAAFscAABbJAAAWywAAFs0AABbPAAAW5QAAFvgAABcUAAAXMQAAF00AABdhAAAXcwAAF4kAABeiAAAX4QAAF+cAABfwAAAX/QAAGAkAABgTAAAYHQAAGCgAABgzAAAYQAAAGEgAABhKAAAYTAAAGE4AABhQAAAYUQAAGFIAABhTAAAYVAAAGFYAABhYAAAYWQAAGFoAABhcAAAYXQAAGGYAABhnAAAYaQAAGHIAABh9AAAYhgAAGJUAABicAAAYpAAAGK0AABi2AAAYyQAAGNIAABjlAAAY/AAAGQ4AABlNAAAZTwAAGVEAABlTAAAZVQAAGVYAABlXAAAZWAAAGVkAABlbAAAZXQAAGV4AABlfAAAZYQAAGWIAABltAAAZrAAAGa4AABmwAAAZsgAAGbQAABm1AAAZtgAAGbcAABm4AAAZugAAGbwAABm9AAAZvgAAGcAAABnBAAAZygAAGcsAABnNAAAaDAAAGg4AABoQAAAaEgAAGhQAABoVAAAaFgAAGhcAABoYAAAaGgAAGhwAABodAAAaHgAAGiAAABohAAAaYAAAGmIAABpkAAAaZgAAGmgAABppAAAaagAAGmsAABpsAAAabgAAGnAAABpxAAAacgAAGnQAABp1AAAafgAAGn8AABqBAAAawAAAGsIAABrEAAAaxgAAGsgAABrJAAAaygAAGssAABrMAAAazgAAGtAAABrRAAAa0gAAGtQAABrVAAAa1gAAGxUAABsXAAAbGQAAGxsAABsdAAAbHgAAGx8AABsgAAAbIQAAGyMAABslAAAbJgAAGycAABspAAAbKgAAGzcAABs4AAAbOQAAGzsAABtEAAAbWgAAG2EAABtuAAAbrQAAG68AABuxAAAbswAAG7UAABu2AAAbtwAAG7gAABu5AAAbuwAAG70AABu+AAAbvwAAG8EAABvCAAAb2wAAG90AABvfAAAb4QAAG+IAABvkAAAb+wAAHAQAABwSAAAcHwAAHC0AABxCAAAcVgAAHG0AABx/AAAcvgAAHMAAABzCAAAcxAAAHMYAABzHAAAcyAAAHMkAABzKAAAczAAAHM4AABzPAAAc0AAAHNIAABzTAAAc3AAAHPEAAB0AAAAdFQAAHSMAAB04AAAdTAAAHWMAAB11AAAdggAAHYUAAB2HAAAdigAAHYwAAB2OAAAdlAAAHd8AAB4CAAAeIgAAHkIAAB5EAAAeRgAAHkgAAB5KAAAeTAAAHk0AAB5OAAAeUAAAHlEAAB5TAAAeVAAAHlYAAB5YAAAeWQAAHloAAB5cAAAeXQAAHmIAAB5vAAAedAAAHnYAAB54AAAefQAAHn8AAB6BAAAegwAAHpgAAB6rAAAe0AAAHvQAAB8bAAAfPwAAH0EAAB9DAAAfRQAAH0cAAB9JAAAfSwAAH0wAAB9OAAAfWwAAH2wAAB9uAAAfcAAAH3IAAB90AAAfdgAAH3gAAB96AAAffAAAH40AAB+PAAAfkQAAH5MAAB+VAAAflwAAH5kAAB+bAAAfnQAAH58AAB+9AAAf2wAAH+4AACACAAAgFwAAIDQAACBIAAAgXgAAIJ0AACCfAAAgoQAAIKMAACClAAAgpgAAIKcAACCoAAAgqQAAIKsAACCtAAAgrgAAIK8AACCxAAAgsgAAIPEAACDzAAAg9QAAIPcAACD5AAAg+gAAIPsAACD8AAAg/QAAIP8AACEBAAAhAgAAIQMAACEFAAAhBgAAIUUAACFHAAAhSQAAIUsAACFNAAAhTgAAIU8AACFQAAAhUQAAIVMAACFVAAAhVgAAIVcAACFZAAAhWgAAIWcAACFoAAAhaQAAIWsAACGqAAAhrAAAIa4AACGwAAAhsgAAIbMAACG0AAAhtQAAIbYAACG4AAAhugAAIbsAACG8AAAhvgAAIb8AACH+AAAiAAAAIgIAACIEAAAiBgAAIgcAACIIAAAiCQAAIgoAACIMAAAiDgAAIg8AACIQAAAiEgAAIhMAACIUAAAiUwAAIlUAACJXAAAiWQAAIlsAACJcAAAiXQAAIl4AACJfAAAiYQAAImMAACJkAAAiZQAAImcAACJoAAAipwAAIqkAACKrAAAirQAAIq8AACKwAAAisQAAIrIAACKzAAAitQAAIrcAACK4AAAiuQAAIrsAACK8AAAiywAAIwoAACMMAAAjDgAAIxAAACMSAAAjEwAAIxQAACMVAAAjFgAAIxgAACMaAAAjGwAAIxwAACMeAAAjHwAAI0QAACNoAAAjjwAAI7MAACO1AAAjtwAAI7kAACO7AAAjvQAAI78AACPAAAAjwgAAI88AACPeAAAj4AAAI+IAACPkAAAj5gAAI+gAACPqAAAj7AAAI/sAACP9AAAj/wAAJAEAACQDAAAkBgAAJAkAACQMAAAkDgAAJCAAACQ0AAAkRgAAJFsAACRtAAAkfAAAJJkAACTYAAAk2gAAJNwAACTeAAAk4AAAJOEAACTiAAAk4wAAJOQAACTmAAAk6AAAJOkAACTqAAAk7AAAJO0AACUsAAAlLgAAJTAAACUyAAAlNAAAJTUAACU2AAAlNwAAJTgAACU6AAAlPAAAJT0AACU+AAAlQAAAJUEAACVDAAAlggAAJYQAACWGAAAliAAAJYoAACWLAAAljAAAJY0AACWOAAAlkAAAJZIAACWTAAAllAAAJZYAACWXAAAl1gAAJdgAACXaAAAl3AAAJd4AACXfAAAl4AAAJeEAACXiAAAl5AAAJeYAACXnAAAl6AAAJeoAACXrAAAmPgAAJmIAACaGAAAmpgAAJs0AACb0AAAnFAAAJzsAACdfAAAnggAAJ6kAACfNAAAn8QAAKBUAACg8AAAoPQAAKD8AAChBAAAoQwAAKEUAAChIAAAoSgAAKEwAAChPAAAoUQAAKFMAAChWAAAoWAAAKFoAAChcAAAoXgAAKGAAAChjAAAoZgAAKGsAACh4AAAoewAAKH0AACiAAAAoggAAKIQAACipAAAozQAAKPQAACkYAAApGgAAKRwAACkeAAApIAAAKSIAACkkAAApJQAAKScAACk0AAApRwAAKUkAAClLAAApTQAAKU8AAClRAAApUwAAKVUAAClXAAApWQAAKWwAACluAAApcAAAKXIAACl0AAApdgAAKXgAACl6AAApfAAAKX4AACmAAAApvwAAKcEAACnDAAApxQAAKccAACnIAAApyQAAKcoAACnLAAApzQAAKc8AACnQAAAp0QAAKdMAACnUAAAp3QAAKd4AACngAAAqHwAAKiEAACojAAAqJQAAKicAACooAAAqKQAAKioAACorAAAqLQAAKi8AACowAAAqMQAAKjMAACo0AAAqcwAAKnUAACp3AAAqeQAAKnsAACp8AAAqfQAAKn4AACp/AAAqgQAAKoMAACqEAAAqhQAAKocAACqIAAAqkQAAKpIAACqUAAAq0wAAKtUAACrXAAAq2QAAKtsAACrcAAAq3QAAKt4AACrfAAAq4QAAKuMAACrkAAAq5QAAKucAACroAAArJwAAKykAACsrAAArLQAAKy8AACswAAArMQAAKzIAACszAAArNQAAKzcAACs4AAArOQAAKzsAACs8AAArRQAAK0YAACtIAAArhwAAK4kAACuLAAArjQAAK48AACuQAAArkQAAK5IAACuTAAArlQAAK5cAACuYAAArmQAAK5sAACucAAAr2wAAK90AACvfAAAr4QAAK+MAACvkAAAr5QAAK+YAACvnAAAr6QAAK+sAACvsAAAr7QAAK+8AACvwAAAr/QAAK/4AACv/AAAsAQAALEAAACxCAAAsRAAALEYAACxIAAAsSQAALEoAACxLAAAsTAAALE4AACxQAAAsUQAALFIAACxUAAAsVQAALJQAACyWAAAsmAAALJoAACycAAAsnQAALJ4AACyfAAAsoAAALKIAACykAAAspQAALKYAACyoAAAsqQAALLUAACzCAAAs7QAALO8AACzxAAAs8wAALPUAACz3AAAs+QAALPsAACz9AAAs/wAALQEAAC0DAAAtBQAALQcAAC0JAAAtCwAALQ0AAC0PAAAtEQAALRMAAC0VAAAtQAAALUIAAC1EAAAtRgAALUkAAC1MAAAtTwAALVIAAC1VAAAtWAAALVsAAC1eAAAtYQAALWQAAC1nAAAtagAALW0AAC1wAAAtcwAALXYAAC15AAAtewAALYIAAC2IAAAtlgAALZ8AAC2rAAAtvgAALcQAAC3OAAAt0wAALeAAAC3rAAAt9gAALfsAAC4DAAAuCwAALhUAAC4gAAAuKgAALj0AAC5KAAAulQAALrgAAC7YAAAu+AAALvoAAC78AAAu/gAALwAAAC8CAAAvAwAALwQAAC8GAAAvBwAALwkAAC8KAAAvDAAALw4AAC8PAAAvEAAALxIAAC8TAAAvHAAALykAAC8uAAAvMAAALzIAAC83AAAvOQAALzsAAC89AAAvYgAAL4YAAC+tAAAv0QAAL9MAAC/VAAAv1wAAL9kAAC/bAAAv3QAAL94AAC/gAAAv7QAAL/4AADAAAAAwAgAAMAQAADAGAAAwCAAAMAoAADAMAAAwDgAAMB8AADAhAAAwIwAAMCUAADAnAAAwKQAAMCsAADAtAAAwLwAAMDEAADBwAAAwcgAAMHQAADB2AAAweAAAMHkAADB6AAAwewAAMHwAADB+AAAwgAAAMIEAADCCAAAwhAAAMIUAADDEAAAwxgAAMMgAADDKAAAwzAAAMM0AADDOAAAwzwAAMNAAADDSAAAw1AAAMNUAADDWAAAw2AAAMNkAADEYAAAxGgAAMRwAADEeAAAxIAAAMSEAADEiAAAxIwAAMSQAADEmAAAxKAAAMSkAADEqAAAxLAAAMS0AADE6AAAxOwAAMTwAADE+AAAxfQAAMX8AADGBAAAxgwAAMYUAADGGAAAxhwAAMYgAADGJAAAxiwAAMY0AADGOAAAxjwAAMZEAADGSAAAx0QAAMdMAADHVAAAx1wAAMdkAADHaAAAx2wAAMdwAADHdAAAx3wAAMeEAADHiAAAx4wAAMeUAADHmAAAyJQAAMicAADIpAAAyKwAAMi0AADIuAAAyLwAAMjAAADIxAAAyMwAAMjUAADI2AAAyNwAAMjkAADI6AAAyeQAAMnsAADJ9AAAyfwAAMoEAADKCAAAygwAAMoQAADKFAAAyhwAAMokAADKKAAAyiwAAMo0AADKOAAAyzQAAMs8AADLRAAAy0wAAMtUAADLWAAAy1wAAMtgAADLZAAAy2wAAMt0AADLeAAAy3wAAMuEAADLiAAAzBwAAMysAADNSAAAzdgAAM3gAADN6AAAzfAAAM34AADOAAAAzggAAM4MAADOFAAAzkgAAM6EAADOjAAAzpQAAM6cAADOpAAAzqwAAM60AADOvAAAzvgAAM8AAADPCAAAzxAAAM8YAADPIAAAzygAAM8wAADPOAAA0DQAANA8AADQRAAA0EwAANBUAADQWAAA0FwAANBgAADQZAAA0GwAANB0AADQeAAA0HwAANCEAADQiAAA0YQAANGMAADRlAAA0ZwAANGkAADRqAAA0awAANGwAADRtAAA0bwAANHEAADRyAAA0cwAANHUAADR2AAA0tQAANLcAADS5AAA0uwAANL0AADS+AAA0vwAANMAAADTBAAA0wwAANMUAADTGAAA0xwAANMkAADTKAAA1CQAANQsAADUNAAA1DwAANREAADUSAAA1EwAANRQAADUVAAA1FwAANRkAADUaAAA1GwAANR0AADUeAAA1XQAANV8AADVhAAA1YwAANWUAADVmAAA1ZwAANWgAADVpAAA1awAANW0AADVuAAA1bwAANXEAADVyAAA1sQAANbMAADW1AAA1twAANbkAADW6AAA1uwAANbwAADW9AAA1vwAANcEAADXCAAA1wwAANcUAADXGAAA2BQAANgcAADYJAAA2CwAANg0AADYOAAA2DwAANhAAADYRAAA2EwAANhUAADYWAAA2FwAANhkAADYaAAA2IwAANjYAADZDAAA2VgAANmMAADZ2AAA2jQAANp8AADbqAAA3DQAANy0AADdNAAA3TwAAN1EAADdTAAA3VQAAN1cAADdYAAA3WQAAN1sAADdcAAA3XgAAN18AADdhAAA3YwAAN2QAADdlAAA3ZwAAN2gAADdtAAA3egAAN38AADeBAAA3gwAAN4gAADeKAAA3jAAAN44AADejAAA3yAAAN+w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AAEO4AABDuQAAQ7oAAEO7AABDvAAAQ74AAEPAAABDwQAAQ8IAAEPEAABDxQAARAQAAEQGAABECAAARAoAAEQMAABEDQAARA4AAEQPAABEEAAARBIAAEQUAABEFQAARBYAAEQYAABEGQAARFgAAERaAABEXAAARF4AAERgAABEYQAARGIAAERjAABEZAAARGYAAERoAABEaQAARGoAAERsAABEbQAARJIAAES2AABE3QAARQEAAEUDAABFBQAARQcAAEUJAABFCwAARQ0AAEUOAABFEAAARR0AAEUsAABFLgAARTAAAEUyAABFNAAARTYAAEU4AABFOgAARUkAAEVLAABFTQAARU8AAEVRAABFVAAARVcAAEVaAABFXAAARZsAAEWdAABFnwAARaEAAEWjAABFpAAARaUAAEWmAABFpwAARakAAEWrAABFrAAARa0AAEWvAABFsAAARe8AAEXxAABF8wAARfUAAEX3AABF+AAARfkAAEX6AABF+wAARf0AAEX/AABGAAAARgEAAEYDAABGBAAARgYAAEZFAABGRwAARkkAAEZLAABGTQAARk4AAEZPAABGUAAARlEAAEZTAABGVQAARlYAAEZXAABGWQAARloAAEaZAABGmwAARp0AAEafAABGoQAARqIAAEajAABGpAAARqUAAEanAABGqQAARqoAAEarAABGrQAARq4AAEbxAABHFQAARzkAAEdcAABHgwAAR6MAAEfKAABH8QAASBEAAEg1AABIWQAASFsAAEhdAABIXwAASGEAAEhjAABIZQAASGgAAEhqAABIbAAASG8AAEhxAABIcwAASHYAAEh4AABIeQAASH4AAEiLAABIjgAASJAAAEiTAABIlQAASJcAAEi8AABI4AAASQcAAEkrAABJLQAASS8AAEkxAABJMwAASTUAAEk3AABJOAAASToAAElHAABJWgAASVwAAEleAABJYAAASWIAAElkAABJZgAASWgAAElqAABJbAAASX8AAEmBAABJgwAASYUAAEmHAABJiQAASYsAAEmNAABJjwAASZEAAEmTAABJ0gAASdQAAEnWAABJ2AAASdoAAEnbAABJ3AAASd0AAEneAABJ4AAASeIAAEnjAABJ5AAASeYAAEnnAABJ8AAASfEAAEnzAABKMgAASjQAAEo2AABKOAAASjoAAEo7AABKPAAASj0AAEo+AABKQAAASkIAAEpDAABKRAAASkYAAEpHAABKhgAASogAAEqKAABKjAAASo4AAEqPAABKkAAASpEAAEqSAABKlAAASpYAAEqXAABKmAAASpoAAEqbAABKpAAASqUAAEqnAABK5gAASugAAErqAABK7AAASu4AAErvAABK8AAASvEAAEryAABK9AAASvYAAEr3AABK+AAASvoAAEr7AABLOgAASzwAAEs+AABLQAAAS0IAAEtDAABLRAAAS0UAAEtGAABLSAAAS0oAAEtLAABLTAAAS04AAEtPAABLWAAAS1kAAEtbAABLmgAAS5wAAEueAABLoAAAS6IAAEujAABLpAAAS6UAAEumAABLqAAAS6oAAEurAABLrAAAS64AAEuvAABL7gAAS/AAAEvyAABL9AAAS/YAAEv3AABL+AAAS/kAAEv6AABL/AAAS/4AAEv/AABMAAAATAIAAEwDAABMEAAATBEAAEwSAABMFAAATFMAAExVAABMVwAATFkAAExbAABMXAAATF0AAExeAABMXwAATGEAAExjAABMZAAATGUAAExnAABMaAAATKcAAEypAABMqwAATK0AAEyvAABMsAAATLEAAEyyAABMswAATLUAAEy3AABMuAAATLkAAEy7AABMvAAATMoAAEzXAABM5gAATOgAAEzqAABM7AAATO4AAEzwAABM8gAATPQAAE0DAABNBQAATQgAAE0LAABNDgAATREAAE0UAABNFwAATRkAAE0gAABNJwAATSoAAE01AABNQAAATUwAAE2XAABNugAATdoAAE36AABN/AAATf4AAE4AAABOAgAATgQAAE4FAABOBgAATggAAE4JAABOCwAATgwAAE4OAABOEAAAThEAAE4SAABOFAAAThUAAE4aAABOJwAATiwAAE4uAABOMAAATjUAAE43AABOOQAATjsAAE5gAABOhAAATqsAAE7PAABO0QAATtMAAE7VAABO1wAATtkAAE7bAABO3AAATt4AAE7rAABO/AAATv4AAE8AAABPAgAATwQAAE8GAABPCAAATwoAAE8MAABPHQAATx8AAE8hAABPIwAATyUAAE8nAABPKQAATysAAE8tAABPLwAAT24AAE9wAABPcgAAT3QAAE92AABPdwAAT3gAAE95AABPegAAT3wAAE9+AABPfwAAT4AAAE+CAABPgwAAT8IAAE/EAABPxgAAT8gAAE/KAABPywAAT8wAAE/NAABPzgAAT9AAAE/SAABP0wAAT9QAAE/WAABP1wAAUBYAAFAYAABQGgAAUBwAAFAeAABQHwAAUCAAAFAhAABQIgAAUCQAAFAmAABQJwAAUCgAAFAqAABQKwAAUDgAAFA5AABQOgAAUDwAAFB7AABQfQAAUH8AAFCBAABQgwAAUIQAAFCFAABQhgAAUIcAAFCJAABQiwAAUIwAAFCNAABQjwAAUJAAAFDPAABQ0QAAUNMAAFDVAABQ1wAAUNgAAFDZAABQ2gAAUNsAAFDdAABQ3wAAUOAAAFDhAABQ4wAAUOQAAFEjAABRJQAAUScAAFEpAABRKwAAUSwAAFEtAABRLgAAUS8AAFExAABRMwAAUTQAAFE1AABRNwAAUTgAAFF3AABReQAAUXsAAFF9AABRfwAAUYAAAFGBAABRggAAUYMAAFGFAABRhwAAUYgAAFGJAABRiwAAUYwAAFHLAABRzQAAUc8AAFHRAABR0wAAUdQAAFHVAABR1gAAUdcAAFHZAABR2wAAUdwAAFHdAABR3wAAUeAAAFIFAABSKQAAUlAAAFJ0AABSdgAAUngAAFJ6AABSfAAAUn4AAFKAAABSgQAAUoQAAFKRAABSoAAAUqIAAFKkAABSpgAAUqgAAFKqAABSrAAAUq4AAFK9AABSwAAAUsMAAFLGAABSyQAAUswAAFLPAABS0gAAUtQAAFMTAABTFQAAUxgAAFMaAABTHAAAUx0AAFMeAABTHwAAUyAAAFMiAABTJAAAUyUAAFMmAABTKAAAUykAAFMrAABTagAAU2wAAFNuAABTcAAAU3IAAFNzAABTdAAAU3UAAFN2AABTeAAAU3oAAFN7AABTfAAAU34AAFN/AABTvgAAU8AAAFPCAABTxAAAU8YAAFPHAABTyAAAU8kAAFPKAABTzAAAU84AAFPPAABT0AAAU9IAAFPTAABUEgAAVBQAAFQXAABUGQAAVBsAAFQcAABUHQAAVB4AAFQfAABUIQAAVCMAAFQkAABUJQAAVCcAAFQoAABUKgAAVGkAAFRrAABUbQAAVG8AAFRxAABUcgAAVHMAAFR0AABUdQAAVHcAAFR5AABUegAAVHsAAFR9AABUfgAAVL0AAFS/AABUwQAAVMMAAFTFAABUxgAAVMcAAFTIAABUyQAAVMs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AAGAdAABgHwAAYF4AAGBgAABgYgAAYGQAAGBnAABgaAAAYGkAAGBqAABgawAAYG0AAGBvAABgcAAAYHEAAGBzAABgdAAAYLMAAGC1AABgtwAAYLkAAGC8AABgvQAAYL4AAGC/AABgwAAAYMIAAGDEAABgxQAAYMYAAGDIAABgyQAAYQgAAGEKAABhDAAAYQ4AAGERAABhEgAAYRMAAGEUAABhFQAAYRcAAGEZAABhGgAAYRsAAGEdAABhHgAAYV0AAGFfAABhYQAAYWMAAGFmAABhZwAAYWgAAGFpAABhagAAYWwAAGFuAABhbwAAYXAAAGFyAABhcwAAYbIAAGG0AABhtgAAYbgAAGG7AABhvAAAYb0AAGG+AABhvwAAYcEAAGHDAABhxAAAYcUAAGHHAABhyAAAYe0AAGIRAABiOAAAYlwAAGJfAABiYQAAYmMAAGJlAABiZwAAYmkAAGJqAABibQAAYnoAAGKJAABiiwAAYo0AAGKPAABikQAAYpMAAGKVAABilwAAYqYAAGKpAABirAAAYq8AAGKyAABitQAAYrgAAGK7AABivQAAYvwAAGL+AABjAQAAYwMAAGMGAABjBwAAYwgAAGMJAABjCgAAYwwAAGMOAABjDwAAYxAAAGMSAABjEwAAY1IAAGNUAABjVgAAY1gAAGNbAABjXAAAY10AAGNeAABjXwAAY2EAAGNjAABjZAAAY2UAAGNnAABjaAAAY6cAAGOpAABjqwAAY60AAGOwAABjsQAAY7IAAGOzAABjtAAAY7YAAGO4AABjuQAAY7oAAGO8AABjvQAAY/wAAGP+AABkAQAAZAMAAGQGAABkBwAAZAgAAGQJAABkCgAAZAwAAGQOAABkDwAAZBAAAGQSAABkEwAAZBUAAGRUAABkVgAAZFgAAGRaAABkXQAAZF4AAGRfAABkYAAAZGEAAGRjAABkZQAAZGYAAGRnAABkaQAAZGoAAGSpAABkqwAAZK0AAGSvAABksgAAZLMAAGS0AABktQAAZLYAAGS4AABkugAAZLsAAGS8AABkvgAAZL8AAGT+AABlAAAAZQIAAGUEAABlBwAAZQgAAGUJAABlCgAAZQsAAGUNAABlDwAAZRAAAGURAABlEwAAZRQAAGVfAABlggAAZaIAAGXCAABlxAAAZcYAAGXIAABlygAAZcwAAGXNAABlzgAAZdEAAGXSAABl1AAAZdUAAGXXAABl2QAAZdoAAGXbAABl3gAAZd8AAGXkAABl8QAAZfYAAGX4AABl+gAAZf8AAGYCAABmBQAAZgcAAGYsAABmUAAAZncAAGabAABmngAAZqAAAGaiAABmpAAAZqYAAGaoAABmqQAAZqwAAGa5AABmygAAZswAAGbOAABm0AAAZtIAAGbUAABm1gAAZtgAAGbaAABm6wAAZu4AAGbxAABm9AAAZvcAAGb6AABm/QAAZwAAAGcDAABnBQAAZ0QAAGdGAABnSAAAZ0oAAGdNAABnTgAAZ08AAGdQAABnUQAAZ1MAAGdVAABnVgAAZ1cAAGdZAABnWgAAZ5kAAGebAABnnQAAZ58AAGeiAABnowAAZ6QAAGelAABnpgAAZ6gAAGeqAABnqwAAZ6wAAGeuAABnrwAAZ+4AAGfwAABn8wAAZ/UAAGf4AABn+QAAZ/oAAGf7AABn/AAAZ/4AAGgAAABoAQAAaAIAAGgEAABoBQAAaBIAAGgTAABoFAAAaBYAAGhVAABoVwAAaFkAAGhbAABoXgAAaF8AAGhgAABoYQAAaGIAAGhkAABoZgAAaGcAAGhoAABoagAAaGsAAGiqAABorAAAaK4AAGiwAABoswAAaLQAAGi1AABotgAAaLcAAGi5AABouwAAaLwAAGi9AABovwAAaMAAAGj/AABpAQAAaQMAAGkFAABpCAAAaQkAAGkKAABpCwAAaQwAAGkOAABpEAAAaREAAGkSAABpFAAAaRUAAGlUAABpVgAAaVgAAGlaAABpXQAAaV4AAGlfAABpYAAAaWEAAGljAABpZQAAaWYAAGlnAABpaQAAaWoAAGmpAABpqwAAaa0AAGmvAABpsgAAabMAAGm0AABptQAAabYAAGm4AABpugAAabsAAGm8AABpvgAAab8AAGnkAABqCAAAai8AAGpTAABqVgAAalgAAGpaAABqXAAAal4AAGpgAABqYQAAamQAAGpxAABqgAAAaoIAAGqEAABqhgAAaogAAGqKAABqjAAAao4AAGqdAABqoAAAaqMAAGqmAABqqQAAaqwAAGqvAABqsgAAarQAAGrzAABq9QAAavcAAGr5AABq/AAAav0AAGr+AABq/wAAawAAAGsCAABrBAAAawUAAGsGAABrCAAAawkAAGtIAABrSgAAa0wAAGtOAABrUQAAa1IAAGtTAABrVAAAa1UAAGtXAABrWQAAa1oAAGtbAABrXQAAa14AAGudAABrnwAAa6EAAGujAABrpgAAa6cAAGuoAABrqQAAa6oAAGusAABrrgAAa68AAGuwAABrsgAAa7MAAGvyAABr9AAAa/YAAGv4AABr+wAAa/wAAGv9AABr/gAAa/8AAGwBAABsAwAAbAQAAGwFAABsBwAAbAgAAGxHAABsSQAAbEsAAGxNAABsUAAAbFEAAGxSAABsUwAAbFQAAGxWAABsWAAAbFkAAGxaAABsXAAAbF0AAGycAABsngAAbKAAAGyiAABspQAAbKYAAGynAABsqAAAbKkAAGyrAABsrQAAbK4AAGyvAABssQAAbLIAAGzxAABs8wAAbPUAAGz3AABs+gAAbPsAAGz8AABs/QAAbP4AAG0AAABtAgAAbQMAAG0EAABtBgAAbQcAAG1SAABtdQAAbZUAAG21AABttwAAbbkAAG27AABtvQAAbb8AAG3AAABtwQAAbcQAAG3FAABtxwAAbcgAAG3KAABtzAAAbc0AAG3OAABt0QAAbdIAAG3XAABt5AAAbekAAG3rAABt7QAAbfIAAG31AABt+AAAbfoAAG4fAABuQwAAbmoAAG6OAABukQAAbpMAAG6VAABulwAAbpkAAG6bAABunAAAbp8AAG6sAABuvQAAbr8AAG7BAABuwwAAbsUAAG7HAABuyQAAbssAAG7NAABu3gAAbuEAAG7kAABu5wAAbuoAAG7tAABu8AAAbvMAAG72AABu+AAAbzcAAG85AABvOwAAbz0AAG9AAABvQQAAb0IAAG9DAABvRAAAb0YAAG9IAABvSQAAb0oAAG9MAABvTQAAb4wAAG+OAABvkAAAb5IAAG+VAABvlgAAb5cAAG+YAABvmQAAb5sAAG+dAABvngAAb58AAG+hAABvogAAb+EAAG/jAABv5gAAb+gAAG/rAABv7AAAb+0AAG/uAABv7wAAb/EAAG/zAABv9AAAb/UAAG/3AABv+AAAcAUAAHAGAABwBwAAcAkAAHBIAABwSgAAcEwAAHBOAABwUQAAcFIAAHBTAABwVAAAcFUAAHBXAABwWQAAcFoAAHBbAABwXQAAcF4AAHCdAABwnwAAcKEAAHCjAABwpgAAcKcAAHCoAABwqQAAcKoAAHCsAABwrgAAcK8AAHCwAABwsgAAcLMAAHDyAABw9AAAcPYAAHD4AABw+wAAcPwAAHD9AABw/gAAcP8AAHEBAABxAwAAcQQAAHEFAABxBwAAcQgAAHFHAABxSQAAcUsAAHFNAABxUAAAcVEAAHFSAABxUwAAcVQAAHFWAABxWAAAcVkAAHFaAABxXAAAcV0AAHGcAABxngAAcaAAAHGiAABxpQAAcaYAAHGnAABxqAAAcakAAHGrAABxrQAAca4AAHGvAABxsQAAcbIAAHHXAABx+wAAciIAAHJGAABySQAAcksAAHJNAAByTwAAclEAAHJTAAByVAAAclcAAHJkAABycwAAcnUAAHJ3AAByeQAAcnsAAHJ9AAByfwAAcoEAAHKQAABykwAAcpYAAHKZAABynAAAcp8AAHKiAABypQAAcqcAAHLmAABy6AAAcusAAHLtAABy8AAAcvEAAHLyAABy8wAAcvQAAHL2AABy+AAAcvkAAHL6AABy/AAAcv0AAHM8AABzPgAAc0AAAHNCAABzRQAAc0YAAHNHAABzSAAAc0kAAHNLAABzTQAAc04AAHNPAABzUQAAc1IAAHORAABzkwAAc5UAAHOXAABzmgAAc5sAAHOcAABznQAAc54AAHOgAABzogAAc6MAAHOkAABzpgAAc6cAAHPmAABz6AAAc+sAAHPtAABz8AAAc/EAAHPyAABz8wAAc/QAAHP2AABz+AAAc/kAAHP6AABz/AAAc/0AAHQ8AAB0PgAAdEAAAHRCAAB0RQAAdEYAAHRHAAB0SAAAdEkAAHRLAAB0TQAAdE4AAHRPAAB0UQAAdFIAAHSRAAB0kwAAdJUAAHSXAAB0mgAAdJsAAHScAAB0nQAAdJ4AAHSgAAB0ogAAdKMAAHSkAAB0pgAAdKcAAHTmAAB06AAAdOoAAHTsAAB07wAAdPAAAHTxAAB08gAAdPMAAHT1AAB09wAAdPgAAHT5AAB0+wAAdPwAAHVHAAB1agAAdYoAAHWqAAB1rAAAda4AAHWwAAB1sgAAdbQAAHW1AAB1tgAAdbkAAHW6AAB1vAAAdb0AAHW/AAB1wQAAdcIAAHXDAAB1xgAAdccAAHXMAAB12QAAdd4AAHXgAAB14gAAdecAAHXqAAB17QAAde8AAHYUAAB2OAAAdl8AAHaDAAB2hgAAdogAAHaKAAB2jAAAdo4AAHaQAAB2kQAAdpQAAHahAAB2sgAAdrQAAHa2AAB2uAAAdroAAHa8AAB2vgAAdsAAAHbCAAB20wAAdtYAAHbZAAB23AAAdt8AAHbiAAB25QAAdugAAHbrAAB27QAAdywAAHcuAAB3MAAAdzIAAHc1AAB3NgAAdzcAAHc4AAB3OQAAdzsAAHc9AAB3PgAAdz8AAHdBAAB3QgAAd4EAAHeDAAB3hQAAd4cAAHeKAAB3iwAAd4wAAHeNAAB3jgAAd5AAAHeSAAB3kwAAd5QAAHeWAAB3lwAAd9YAAHfYAAB32wAAd90AAHfgAAB34QAAd+IAAHfjAAB35AAAd+YAAHfoAAB36QAAd+oAAHfsAAB37QAAd/oAAHf7AAB3/AAAd/4AAHg9AAB4PwAAeEEAAHhDAAB4RgAAeEcAAHhIAAB4SQAAeEoAAHhMAAB4TgAAeE8AAHhQAAB4UgAAeFMAAHiSAAB4lAAAeJYAAHiYAAB4mwAAeJwAAHidAAB4ngAAeJ8AAHihAAB4owAAeKQAAHilAAB4pwAAeKgAAHjnAAB46QAAeOsAAHjtAAB48AAAePEAAHjyAAB48wAAePQAAHj2AAB4+AAAePkAAHj6AAB4/AAAeP0AAHk8AAB5PgAAeUAAAHlCAAB5RQAAeUYAAHlHAAB5SAAAeUkAAHlLAAB5TQAAeU4AAHlPAAB5UQAAeVIAAHmRAAB5kwAAeZUAAHmXAAB5mgAAeZsAAHmcAAB5nQAAeZ4AAHmgAAB5ogAAeaMAAHmkAAB5pgAAeacAAHnMAAB58AAAehcAAHo7AAB6PgAAekAAAHpCAAB6RAAAekYAAHpIAAB6SQAAekwAAHpZAAB6aAAAemoAAHpsAAB6bgAAenAAAHpyAAB6dAAAenYAAHqFAAB6iAAAeosAAHqOAAB6kQAAepQAAHqXAAB6mgAAepwAAHrbAAB63QAAet8AAHrhAAB65AAAeuUAAHrmAAB65wAAeugAAHrqAAB67AAAeu0AAHruAAB68AAAevEAAHswAAB7MgAAezQAAHs2AAB7OQAAezoAAHs7AAB7PAAAez0AAHs/AAB7QQAAe0IAAHtDAAB7RQAAe0YAAHuFAAB7hwAAe4kAAHuLAAB7jgAAe48AAHuQAAB7kQAAe5IAAHuUAAB7lgAAe5cAAHuYAAB7mgAAe5sAAHvaAAB73AAAe98AAHvhAAB75AAAe+UAAHvmAAB75wAAe+gAAHvqAAB77AAAe+0AAHvuAAB78AAAe/EAAHv0AAB8MwAAfDUAAHw3AAB8OQAAfDwAAHw9AAB8PgAAfD8AAHxAAAB8QgAAfEQAAHxFAAB8RgAAfEgAAHxJAAB8iAAAfIoAAHyMAAB8jgAAfJEAAHySAAB8kwAAfJQAAHyVAAB8lwAAfJkAAHyaAAB8mwAAfJ0AAHyeAAB83QAAfN8AAHzhAAB84wAAfOYAAHznAAB86AAAfOkAAHzqAAB87AAAfO4AAHzvAAB88AAAfPIAAHzzAAB9PgAAfWEAAH2BAAB9oQAAfaMAAH2lAAB9pwAAfakAAH2rAAB9rAAAfa0AAH2wAAB9sQAAfbMAAH20AAB9tgAAfbgAAH25AAB9ugAAfb0AAH2+AAB9wwAAfdAAAH3VAAB91wAAfdkAAH3eAAB94QAAfeQAAH3mAAB+CwAAfi8AAH5WAAB+egAAfn0AAH5/AAB+gQAAfoMAAH6FAAB+hwAAfogAAH6LAAB+mAAAfqkAAH6rAAB+rQAAfq8AAH6xAAB+swAAfrUAAH63AAB+uQAAfsoAAH7NAAB+0AAAftMAAH7WAAB+2QAAftwAAH7fAAB+4gAAfuQAAH8jAAB/JQAAfycAAH8pAAB/LAAAfy0AAH8uAAB/LwAAfzAAAH8yAAB/NAAAfzUAAH82AAB/OAAAfzkAAH94AAB/egAAf3wAAH9+AAB/gQAAf4IAAH+DAAB/hAAAf4UAAH+HAAB/iQAAf4oAAH+LAAB/jQAAf44AAH/NAAB/zwAAf9IAAH/UAAB/1wAAf9gAAH/ZAAB/2gAAf9sAAH/dAAB/3wAAf+AAAH/hAAB/4wAAf+QAAH/xAAB/8gAAf/MAAH/1AACANAAAgDYAAIA4AACAOgAAgD0AAIA+AACAPwAAgEAAAIBBAACAQwAAgEUAAIBGAACARwAAgEkAAIBKAACAiQAAgIsAAICNAACAjwAAgJIAAICTAACAlAAAgJUAAICWAACAmAAAgJoAAICbAACAnAAAgJ4AAICfAACA3gAAgOAAAIDiAACA5AAAgOcAAIDoAACA6QAAgOoAAIDrAACA7QAAgO8AAIDwAACA8QAAgPMAAID0AACBMwAAgTUAAIE3AACBOQAAgTwAAIE9AACBPgAAgT8AAIFAAACBQgAAgUQAAIFFAACBRgAAgUgAAIFJAACBiAAAgYoAAIGMAACBjgAAgZEAAIGSAACBkwAAgZQAAIGVAACBlwAAgZkAAIGaAACBmwAAgZ0AAIGeAACBwwAAgecAAIIOAACCMgAAgjUAAII3AACCOQAAgjsAAII9AACCPwAAgkAAAIJDAACCUAAAgl8AAIJhAACCYwAAgmUAAIJnAACCaQAAgmsAAIJtAACCfAAAgn8AAIKCAACChQAAgogAAIKLAACCjgAAgpEAAIKTAACC0gAAgtQAAILWAACC2AAAgtsAAILcAACC3QAAgt4AAILfAACC4QAAguMAAILkAACC5QAAgucAAILoAACDJwAAgykAAIMrAACDLQAAgzAAAIMxAACDMgAAgzMAAIM0AACDNgAAgzgAAIM5AACDOgAAgzwAAIM9AACDfAAAg34AAIOAAACDggAAg4UAAIOGAACDhwAAg4gAAIOJAACDiwAAg40AAIOOAACDjwAAg5EAAIOSAACD0QAAg9MAAIPVAACD1wAAg9oAAIPbAACD3AAAg90AAIPeAACD4AAAg+IAAIPjAACD5AAAg+YAAIPnAACEJgAAhCgAAIQqAACELAAAhC8AAIQwAACEMQAAhDIAAIQzAACENQAAhDcAAIQ4AACEOQAAhDsAAIQ8AACEewAAhH0AAIR/AACEgQAAhIQAAISFAACEhgAAhIcAAISIAACEigAAhIwAAISNAACEjgAAhJAAAISRAACE0AAAhNIAAITUAACE1gAAhNkAAITaAACE2wAAhNwAAITdAACE3wAAhOEAAITiAACE4wAAhOUAAITmAACE8QAAhPoAAIT7AACE/QAAhQYAAIURAACFIAAAhSsAAIU5AACFTgAAhWIAAIV5AACFiwAAhcoAAIXMAACFzgAAhdAAAIXSAACF0wAAhdQAAIXVAACF1gAAhdgAAIXaAACF2wAAhdwAAIXeAACF3wAAhh4AAIYgAACGIgAAhiQAAIYmAACGJwAAhigAAIYpAACGKgAAhiwAAIYuAACGLwAAhjAAAIYyAACGMwAAhnIAAIZ0AACGdwAAhnkAAIZ7AACGfAAAhn0AAIZ+AACGfwAAhoEAAIaDAACGhAAAhoUAAIaHAACGiAAAhtMAAIb2AACHFgAAhzYAAIc4AACHOgAAhzwAAIc+AACHQAAAh0EAAIdCAACHRQAAh0YAAIdIAACHSQAAh0sAAIdNAACHTgAAh08AAIdSAACHUwAAh1gAAIdlAACHagAAh2wAAIduAACHcwAAh3YAAId5AACHewAAh6AAAIfEAACH6wAAiA8AAIgSAACIFAAAiBYAAIgYAACIGgAAiBwAAIgdAACIIAAAiC0AAIg+AACIQAAAiEIAAIhEAACIRgAAiEgAAIhKAACITAAAiE4AAIhfAACIYgAAiGUAAIhoAACIawAAiG4AAIhxAACIdAAAiHcAAIh5AACIuAAAiLoAAIi8AACIvgAAiMEAAIjCAACIwwAAiMQAAIjFAACIxwAAiMkAAIjKAACIywAAiM0AAIjOAACJDQAAiQ8AAIkRAACJEwAAiRYAAIkXAACJGAAAiRkAAIkaAACJHAAAiR4AAIkfAACJIAAAiSIAAIkjAACJYgAAiWQAAIlnAACJaQAAiWwAAIltAACJbgAAiW8AAIlwAACJcgAAiXQAAIl1AACJdgAAiXgAAIl5AACJhgAAiYcAAImIAACJigAAickAAInLAACJzQAAic8AAInSAACJ0wAAidQAAInVAACJ1gAAidgAAInaAACJ2wAAidwAAIneAACJ3wAAih4AAIogAACKIgAAiiQAAIonAACKKAAAiikAAIoqAACKKwAAii0AAIovAACKMAAAijEAAIozAACKNAAAinMAAIp1AACKdwAAinkAAIp8AACKfQAAin4AAIp/AACKgAAAioIAAIqEAACKhQAAioYAAIqIAACKiQAAisgAAIrKAACKzAAAis4AAIrRAACK0gAAitMAAIrUAACK1QAAitcAAIrZAACK2gAAitsAAIrdAACK3gAAix0AAIsfAACLIQAAiyMAAIsmAACLJwAAiygAAIspAACLKgAAiywAAIsuAACLLwAAizAAAIsyAACLMwAAi1gAAIt8AACLowAAi8cAAIvKAACLzAAAi84AAIvQAACL0gAAi9QAAIvVAACL2AAAi+UAAIv0AACL9gAAi/gAAIv6AACL/AAAi/4AAIwAAACMAgAAjBEAAIwUAACMFwAAjBoAAIwdAACMIAAAjCMAAIwmAACMKAAAjGcAAIxpAACMbAAAjG4AAIxxAACMcgAAjHMAAIx0AACMdQAAjHcAAIx5AACMegAAjHsAAIx9AACMfgAAjIIAAIzBAACMwwAAjMUAAIzHAACMygAAjMsAAIzMAACMzQAAjM4AAIzQAACM0gAAjNMAAIzUAACM1gAAjNcAAI0WAACNGAAAjRoAAI0cAACNHwAAjSAAAI0hAACNIgAAjSMAAI0lAACNJwAAjSgAAI0pAACNKwAAjSwAAI1rAACNbQAAjXAAAI1yAACNdQAAjXYAAI13AACNeAAAjXkAAI17AACNfQAAjX4AAI1/AACNgQAAjYIAAI2FAACNxAAAjcYAAI3IAACNygAAjc0AAI3OAACNzwAAjdAAAI3RAACN0wAAjdUAAI3WAACN1wAAjdkAAI3aAACOGQAAjhsAAI4dAACOHwAAjiIAAI4jAACOJAAAjiUAAI4mAACOKAAAjioAAI4rAACOLAAAji4AAI4vAACObgAAjnAAAI5yAACOdAAAjncAAI54AACOeQAAjnoAAI57AACOfQAAjn8AAI6AAACOgQAAjoMAAI6EAACOzwAAjvIAAI8SAACPMgAAjzQAAI82AACPOAAAjzoAAI88AACPPQAAjz4AAI9BAACPQgAAj0QAAI9FAACPRwAAj0kAAI9KAACPSwAAj04AAI9PAACPVAAAj2EAAI9mAACPaAAAj2oAAI9vAACPcgAAj3UAAI93AACPnAAAj8AAAI/nAACQCwAAkA4AAJAQAACQEgAAkBQAAJAWAACQGAAAkBkAAJAcAACQKQAAkDoAAJA8AACQPgAAkEAAAJBCAACQRAAAkEYAAJBIAACQSgAAkFsAAJBeAACQYQAAkGQAAJBnAACQagAAkG0AAJBwAACQcwAAkHUAAJC0AACQtgAAkLgAAJC6AACQvQAAkL4AAJC/AACQwAAAkMEAAJDDAACQxQAAkMYAAJDHAACQyQAAkMoAAJEJAACRCwAAkQ0AAJEPAACREgAAkRMAAJEUAACRFQAAkRYAAJEYAACRGgAAkRsAAJEcAACRHgAAkR8AAJFeAACRYAAAkWMAAJFlAACRaAAAkWkAAJFqAACRawAAkWwAAJFuAACRcAAAkXEAAJFyAACRdAAAkXUAAJGCAACRgwAAkYQAAJGGAACRxQAAkccAAJHJAACRywAAkc4AAJHPAACR0AAAkdEAAJHSAACR1AAAkdYAAJHXAACR2AAAkdoAAJHbAACSGgAAkhwAAJIeAACSIAAAkiMAAJIkAACSJQAAkiYAAJInAACSKQAAkisAAJIsAACSLQAAki8AAJIwAACSbwAAknEAAJJzAACSdQAAkngAAJJ5AACSegAAknsAAJJ8AACSfgAAkoAAAJKBAACSggAAkoQAAJKFAACSxAAAksYAAJLIAACSygAAks0AAJLOAACSzwAAktAAAJLRAACS0wAAktUAAJLWAACS1wAAktkAAJLaAACTGQAAkxsAAJMdAACTHwAAkyIAAJMjAACTJAAAkyUAAJMmAACTKAAAkyoAAJMrAACTLAAAky4AAJMvAACTVAAAk3gAAJOfAACTwwAAk8YAAJPIAACTygAAk8wAAJPOAACT0AAAk9EAAJPUAACT4QAAk/AAAJPyAACT9AAAk/YAAJP4AACT+gAAk/wAAJP+AACUDQAAlBAAAJQTAACUFgAAlBkAAJQcAACUHwAAlCIAAJQkAACUYwAAlGUAAJRoAACUagAAlG0AAJRuAACUbwAAlHAAAJRxAACUcwAAlHUAAJR2AACUdwAAlHkAAJR6AACUuQAAlLsAAJS9AACUvwAAlMIAAJTDAACUxAAAlMUAAJTGAACUyAAAlMoAAJTLAACUzAAAlM4AAJTPAACVDgAAlRAAAJUSAACVFAAAlRcAAJUYAACVGQAAlRoAAJUbAACVHQAAlR8AAJUgAACVIQAAlSMAAJUkAACVYwAAlWUAAJVoAACVagAAlW0AAJVuAACVbwAAlXAAAJVxAACVcwAAlXUAAJV2AACVdwAAlXkAAJV6AACVuQAAlbsAAJW9AACVvwAAlcIAAJXDAACVxAAAlcUAAJXGAACVyAAAlcoAAJXLAACVzAAAlc4AAJXPAACWDgAAlhAAAJYSAACWFAAAlhcAAJYYAACWGQAAlhoAAJYbAACWHQAAlh8AAJYgAACWIQAAliMAAJYkAACWYwAAlmUAAJZnAACWaQAAlmwAAJZtAACWbgAAlm8AAJZwAACWcgAAlnQAAJZ1AACWdgAAlngAAJZ5AACWxAAAlucAAJcHAACXJwAAlykAAJcrAACXLQAAly8AAJcxAACXMgAAlzMAAJc2AACXNwAAlzkAAJc6AACXPAAAlz4AAJc/AACXQAAAl0MAAJdEAACXSQAAl1YAAJdbAACXXQAAl18AAJdkAACXZwAAl2oAAJdsAACXkQAAl7UAAJfcAACYAAAAmAMAAJgFAACYBwAAmAkAAJgLAACYDQAAmA4AAJgRAACYHgAAmC8AAJgxAACYMwAAmDUAAJg3AACYOQAAmDsAAJg9AACYPwAAmFAAAJhTAACYVgAAmFkAAJhcAACYXwAAmGIAAJhlAACYaAAAmGoAAJipAACYqwAAmK0AAJivAACYsgAAmLMAAJi0AACYtQAAmLYAAJi4AACYugAAmLsAAJi8AACYvgAAmL8AAJj+AACZAAAAmQIAAJkEAACZBwAAmQgAAJkJAACZCgAAmQsAAJkNAACZDwAAmRAAAJkRAACZEwAAmRQAAJlTAACZVQAAmVgAAJlaAACZXQAAmV4AAJlfAACZYAAAmWEAAJljAACZZQAAmWYAAJlnAACZaQAAmWoAAJl3AACZeAAAmXkAAJl7AACZugAAmbwAAJm+AACZwAAAmcMAAJnEAACZxQAAmcYAAJnHAACZyQAAmcsAAJnMAACZzQAAmc8AAJnQAACaDwAAmhEAAJoTAACaFQAAmhgAAJoZAACaGgAAmhsAAJocAACaHgAAmiAAAJohAACaIgAAmiQAAJolAACaZAAAmmYAAJpoAACaagAAmm0AAJpuAACabwAAmnAAAJpxAACacwAAmnUAAJp2AACadwAAmnkAAJp6AACauQAAmrsAAJq9AACavwAAmsIAAJrDAACaxAAAmsUAAJrGAACayAAAmsoAAJrLAACazAAAms4AAJrPAACbDgAAmxAAAJsSAACbFAAAmxcAAJsYAACbGQAAmxoAAJsbAACbHQAAmx8AAJsgAACbIQAAmyMAAJskAACbSQAAm20AAJuUAACbuAAAm7sAAJu9AACbvwAAm8EAAJvDAACbxQAAm8YAAJvJAACb1gAAm+UAAJvnAACb6QAAm+sAAJvtAACb7wAAm/EAAJvzAACcAgAAnAUAAJwIAACcCwAAnA4AAJwRAACcFAAAnBcAAJwZAACcWAAAnFoAAJxcAACcXgAAnGEAAJxiAACcYwAAnGQAAJxlAACcZwAAnGkAAJxqAACcawAAnG0AAJxuAACcrQAAnK8AAJyxAACcswAAnLYAAJy3AACcuAAAnLkAAJy6AACcvAAAnL4AAJy/AACcwAAAnMIAAJzDAACdAgAAnQQAAJ0GAACdCAAAnQsAAJ0MAACdDQAAnQ4AAJ0PAACdEQAAnRMAAJ0UAACdFQAAnRcAAJ0YAACdVwAAnVkAAJ1bAACdXQAAnWAAAJ1hAACdYgAAnWMAAJ1kAACdZgAAnWgAAJ1pAACdagAAnWwAAJ1tAACdrAAAna4AAJ2wAACdsgAAnbUAAJ22AACdtwAAnbgAAJ25AACduwAAnb0AAJ2+AACdvwAAncEAAJ3CAACeAQAAngMAAJ4FAACeBwAAngoAAJ4LAACeDAAAng0AAJ4OAACeEAAAnhIAAJ4TAACeFAAAnhYAAJ4XAACeVgAAnlgAAJ5aAACeXAAAnl8AAJ5gAACeYQAAnmIAAJ5jAACeZQAAnmcAAJ5oAACeaQAAnmsAAJ5sAACetwAAntoAAJ76AACfGgAAnxwAAJ8eAACfIAAAnyIAAJ8kAACfJQAAnyYAAJ8pAACfKgAAnywAAJ8tAACfLwAAnzEAAJ8yAACfMwAAnzYAAJ83AACfPAAAn0kAAJ9OAACfUAAAn1IAAJ9XAACfWgAAn10AAJ9fAACfhAAAn6gAAJ/PAACf8wAAn/YAAJ/4AACf+gAAn/wAAJ/+AACgAAAAoAEAAKAEAACgEQAAoCIAAKAkAACgJgAAoCgAAKAqAACgLAAAoC4AAKAwAACgMgAAoEMAAKBGAACgSQAAoEwAAKBPAACgUgAAoFUAAKBYAACgWwAAoF0AAKCcAACgngAAoKAAAKCiAACgpQAAoKYAAKCnAACgqAAAoKkAAKCrAACgrQAAoK4AAKCvAACgsQAAoLIAAKDxAACg8wAAoPUAAKD3AACg+gAAoPsAAKD8AACg/QAAoP4AAKEAAAChAgAAoQMAAKEEAAChBgAAoQcAAKFGAAChSAAAoUsAAKFNAAChUAAAoVEAAKFSAAChUwAAoVQAAKFWAAChWAAAoVkAAKFaAAChXAAAoV0AAKFqAAChawAAoWwAAKFuAAChrQAAoa8AAKGxAAChswAAobYAAKG3AAChuAAAobkAAKG6AAChvAAAob4AAKG/AAChwAAAocIAAKHDAACiAgAAogQAAKIGAACiCAAAogsAAKIMAACiDQAAog4AAKIPAACiEQAAohMAAKIUAACiFQAAohcAAKIYAACiVwAAolkAAKJbAACiXQAAomAAAKJhAACiYgAAomMAAKJkAACiZgAAomgAAKJpAACiagAAomwAAKJtAACirAAAoq4AAKKwAACisgAAorUAAKK2AACitwAAorgAAKK5AACiuwAAor0AAKK+AACivwAAosEAAKLCAACjAQAAowMAAKMFAACjBwAAowoAAKMLAACjDAAAow0AAKMOAACjEAAAoxIAAKMTAACjFAAAoxYAAKMXAACjPAAAo2AAAKOHAACjqwAAo64AAKOwAACjsgAAo7QAAKO2AACjuAAAo7kAAKO8AACjyQAAo9gAAKPaAACj3AAAo94AAKPgAACj4gAAo+QAAKPmAACj9QAAo/gAAKP7AACj/gAApAEAAKQEAACkBwAApAoAAKQMAACkSwAApE0AAKRQAACkUgAApFUAAKRWAACkVwAApFgAAKRZAACkWwAApF0AAKReAACkXwAApGEAAKRiAACkZAAApKMAAKSlAACkpwAApKkAAKSsAACkrQAApK4AAKSvAACksAAApLIAAKS0AACktQAApLYAAKS4AACkuQAApPgAAKT6AACk/AAApP4AAKUBAAClAgAApQMAAKUEAAClBQAApQcAAKUJAAClCgAApQsAAKUNAAClDgAApU0AAKVPAAClUgAApVQAAKVXAAClWAAApVkAAKVaAAClWwAApV0AAKVfAAClYAAApWEAAKVjAAClZAAApWcAAKWmAAClqAAApaoAAKWsAAClrwAApbAAAKWxAAClsgAApbMAAKW1AACltwAApbgAAKW5AACluwAApbwAAKX7AACl/QAApf8AAKYBAACmBAAApgUAAKYGAACmBwAApggAAKYKAACmDAAApg0AAKYOAACmEAAAphEAAKZQAACmUgAAplQAAKZWAACmWQAAploAAKZbAACmXAAApl0AAKZfAACmYQAApmIAAKZjAACmZQAApmYAAKaxAACm1AAApvQAAKcUAACnFgAApxgAAKcaAACnHAAApx4AAKcfAACnIAAApyMAAKckAACnJgAApycAAKcpAACnKwAApywAAKctAACnMAAApzEAAKc6AACnRwAAp0wAAKdOAACnUAAAp1UAAKdYAACnWwAAp10AAKeCAACnpgAAp80AAKfxAACn9AAAp/YAAKf4AACn+gAAp/wAAKf+AACn/wAAqAIAAKgPAACoIAAAqCIAAKgkAACoJgAAqCgAAKgqAACoLAAAqC4AAKgwAACoQQAAqEQAAKhHAACoSgAAqE0AAKhQAACoUwAAqFYAAKhZAACoWwAAqJoAAKicAACongAAqKAAAKijAACopAAAqKUAAKimAACopwAAqKkAAKirAACorAAAqK0AAKivAACosAAAqO8AAKjxAACo8wAAqPUAAKj4AACo+QAAqPoAAKj7AACo/AAAqP4AAKkAAACpAQAAqQIAAKkEAACpBQAAqUQAAKlGAACpSQAAqUsAAKlOAACpTwAAqVAAAKlRAACpUgAAqVQAAKlWAACpVwAAqVgAAKlaAACpWwAAqWgAAKlpAACpagAAqWwAAKmrAACprQAAqa8AAKmxAACptAAAqbUAAKm2AACptwAAqbgAAKm6AACpvAAAqb0AAKm+AACpwAAAqcEAAKoAAACqAgAAqgQAAKoGAACqCQAAqgoAAKoLAACqDAAAqg0AAKoPAACqEQAAqhIAAKoTAACqFQAAqhYAAKpVAACqVwAAqlkAAKpbAACqXgAAql8AAKpgAACqYQAAqmIAAKpkAACqZgAAqmcAAKpoAACqagAAqmsAAKqqAACqrAAAqq4AAKqwAACqswAAqrQAAKq1AACqtgAAqrcAAKq5AACquwAAqrwAAKq9AACqvwAAqsAAAKr/AACrAQAAqwMAAKsFAACrCAAAqwkAAKsKAACrCwAAqwwAAKsOAACrEAAAqxEAAKsSAACrFAAAqxUAAKs6AACrXgAAq4UAAKupAACrrAAAq64AAKuwAACrsgAAq7QAAKu2AACrtwAAq7oAAKvHAACr1gAAq9gAAKvaAACr3AAAq94AAKvgAACr4gAAq+QAAKvzAACr9gAAq/kAAKv8AACr/wAArAIAAKwFAACsCAAArAoAAKxJAACsSwAArE4AAKxQAACsUwAArFQAAKxVAACsVgAArFcAAKxZAACsWwAArFwAAKxdAACsXwAArGAAAKyfAACsoQAArKMAAKylAACsqAAArKkAAKyqAACsqwAArKwAAKyuAACssAAArLEAAKyyAACstAAArLUAAKz0AACs9gAArPgAAKz6AACs/QAArP4AAKz/AACtAAAArQEAAK0DAACtBQAArQYAAK0HAACtCQAArQoAAK1JAACtSwAArU4AAK1QAACtUwAArVQAAK1VAACtVgAArVcAAK1ZAACtWwAArVwAAK1dAACtXwAArWAAAK2fAACtoQAAraMAAK2lAACtqAAArakAAK2qAACtqwAArawAAK2uAACtsAAArbEAAK2yAACttAAArbUAAK30AACt9gAArfgAAK36AACt/QAArf4AAK3/AACuAAAArgEAAK4DAACuBQAArgYAAK4HAACuCQAArgoAAK5JAACuSwAArk0AAK5PAACuUgAArlMAAK5UAACuVQAArlYAAK5YAACuWgAArlsAAK5cAACuXgAArl8AAK6qAACuzQAAru0AAK8NAACvDwAArxEAAK8TAACvFQAArxcAAK8YAACvGQAArxwAAK8dAACvHwAAryAAAK8iAACvJAAAryUAAK8mAACvKQAAryoAAK8zAACvQAAAr0UAAK9HAACvSQAAr04AAK9RAACvVAAAr1YAAK97AACvnwAAr8YAAK/qAACv7QAAr+8AAK/xAACv8wAAr/UAAK/3AACv+AAAr/sAALAIAACwGQAAsBsAALAdAACwHwAAsCEAALAjAACwJQAAsCcAALApAACwOgAAsD0AALBAAACwQwAAsEYAALBJAACwTAAAsE8AALBSAACwVAAAsJMAALCVAACwlwAAsJkAALCcAACwnQAAsJ4AALCfAACwoAAAsKIAALCkAACwpQAAsKYAALCoAACwqQAAsOgAALDqAACw7AAAsO4AALDxAACw8gAAsPMAALD0AACw9QAAsPcAALD5AACw+gAAsPsAALD9AACw/gAAsT0AALE/AACxQgAAsUQAALFHAACxSAAAsUkAALFKAACxSwAAsU0AALFPAACxUAAAsVEAALFTAACxVAAAsWEAALFiAACxYwAAsWUAALGkAACxpgAAsagAALGqAACxrQAAsa4AALGvAACxsAAAsbEAALGzAACxtQAAsbYAALG3AACxuQAAsboAALH5AACx+wAAsf0AALH/AACyAgAAsgMAALIEAACyBQAAsgYAALIIAACyCgAAsgsAALIMAACyDgAAsg8AALJOAACyUAAAslIAALJUAACyVwAAslgAALJZAACyWgAAslsAALJdAACyXwAAsmAAALJhAACyYwAAsmQAALKjAACypQAAsqcAALKpAACyrAAAsq0AALKuAACyrwAAsrAAALKyAACytAAAsrUAALK2AACyuAAAsrkAALL4AACy+gAAsvwAALL+AACzAQAAswIAALMDAACzBAAAswUAALMHAACzCQAAswoAALMLAACzDQAAsw4AALMzAACzVwAAs34AALOiAACzpQAAs6cAALOpAACzqwAAs60AALOvAACzsAAAs7MAALPAAACzzwAAs9EAALPTAACz1QAAs9cAALPZAACz2wAAs90AALPsAACz7wAAs/IAALP1AACz+AAAs/sAALP+AAC0AQAAtAMAALRCAAC0RAAAtEYAALRIAAC0SwAAtEwAALRNAAC0TgAAtE8AALRRAAC0UwAAtFQAALRVAAC0VwAAtFgAALSXAAC0mQAAtJsAALSdAAC0oAAAtKEAALSiAAC0owAAtKQAALSmAAC0qAAAtKkAALSqAAC0rAAAtK0AALTsAAC07gAAtPAAALTyAAC09QAAtPYAALT3AAC0+AAAtPkAALT7AAC0/QAAtP4AALT/AAC1AQAAtQIAALVBAAC1QwAAtUUAALVHAAC1SgAAtUsAALVMAAC1TQAAtU4AALVQAAC1UgAAtVMAALVUAAC1VgAAtVcAALWWAAC1mAAAtZoAALWcAAC1nwAAtaAAALWhAAC1ogAAtaMAALWlAAC1pwAAtagAALWpAAC1qwAAtawAALXrAAC17QAAte8AALXxAAC19AAAtfUAALX2AAC19wAAtfgAALX6AAC1/AAAtf0AALX+AAC2AAAAtgEAALZAAAC2QgAAtkQAALZGAAC2SQAAtkoAALZLAAC2TAAAtk0AALZPAAC2UQAAtlIAALZTAAC2VQAAtlYAALahAAC2xAAAtuQAALcEAAC3BgAAtwgAALcKAAC3DAAAtw4AALcPAAC3EAAAtxMAALcUAAC3FgAAtxcAALcZAAC3GwAAtxwAALcdAAC3IAAAtyEAALcmAAC3MwAAtzgAALc6AAC3PAAAt0EAALdEAAC3RwAAt0kAALduAAC3kgAAt7kAALfdAAC34AAAt+IAALfkAAC35gAAt+gAALfqAAC36wAAt+4AALf7AAC4DAAAuA4AALgQAAC4EgAAuBQAALgWAAC4GAAAuBoAALgcAAC4LQAAuDAAALgzAAC4NgAAuDkAALg8AAC4PwAAuEIAALhFAAC4RwAAuIYAALiIAAC4igAAuIwAALiPAAC4kAAAuJEAALiSAAC4kwAAuJUAALiXAAC4mAAAuJkAALibAAC4nAAAuNsAALjdAAC43wAAuOEAALjkAAC45QAAuOYAALjnAAC46AAAuOoAALjsAAC47QAAuO4AALjwAAC48QAAuTAAALkyAAC5NQAAuTcAALk6AAC5OwAAuTwAALk9AAC5PgAAuUAAALlCAAC5QwAAuUQAALlGAAC5RwAAuVQAALlVAAC5VgAAuVgAALmXAAC5mQAAuZsAALmdAAC5oAAAuaEAALmiAAC5owAAuaQAALmmAAC5qAAAuakAALmqAAC5rAAAua0AALnsAAC57gAAufAAALnyAAC59QAAufYAALn3AAC5+AAAufkAALn7AAC5/QAAuf4AALn/AAC6AQAAugIAALpBAAC6QwAAukUAALpHAAC6SgAAuksAALpMAAC6TQAAuk4AALpQAAC6UgAAulMAALpUAAC6VgAAulcAALqWAAC6mAAAupoAALqcAAC6nwAAuqAAALqhAAC6ogAAuqMAALqlAAC6pwAAuqgAALqpAAC6qwAAuqwAALrrAAC67QAAuu8AALrxAAC69AAAuvUAALr2AAC69wAAuvgAALr6AAC6/AAAuv0AALr+AAC7AAAAuwEAALsmAAC7SgAAu3EAALuVAAC7mAAAu5oAALucAAC7ngAAu6AAALuiAAC7owAAu6YAALuzAAC7wgAAu8QAALvGAAC7yAAAu8oAALvMAAC7zgAAu9AAALvfAAC74gAAu+UAALvoAAC76wAAu+4AALvxAAC79AAAu/YAALw1AAC8NwAAvDkAALw7AAC8PgAAvD8AALxAAAC8QQAAvEIAALxEAAC8RgAAvEcAALxIAAC8SgAAvEsAALyKAAC8jAAAvI4AALyQAAC8kwAAvJQAALyVAAC8lgAAvJcAALyZAAC8mwAAvJwAALydAAC8nwAAvKAAALzfAAC84QAAvOMAALzlAAC86AAAvOkAALzqAAC86wAAvOwAALzuAAC88AAAvPEAALzyAAC89AAAvPUAAL00AAC9NgAAvTkAAL07AAC9PgAAvT8AAL1AAAC9QQAAvUIAAL1EAAC9RgAAvUcAAL1IAAC9SgAAvUsAAL1OAAC9jQAAvY8AAL2RAAC9kwAAvZYAAL2XAAC9mAAAvZkAAL2aAAC9nAAAvZ4AAL2fAAC9oAAAvaIAAL2jAAC94gAAveQAAL3mAAC96AAAvesAAL3sAAC97QAAve4AAL3vAAC98QAAvfMAAL30AAC99QAAvfcAAL34AAC+NwAAvjkAAL47AAC+PQAAvkAAAL5BAAC+QgAAvkMAAL5EAAC+RgAAvkgAAL5JAAC+SgAAvkwAAL5NAAC+mAAAvrsAAL7bAAC++wAAvv0AAL7/AAC/AQAAvwMAAL8FAAC/BgAAvwcAAL8KAAC/CwAAvw0AAL8OAAC/EAAAvxIAAL8TAAC/FAAAvxcAAL8YAAC/HQAAvyoAAL8vAAC/MQAAvzMAAL84AAC/OwAAvz4AAL9AAAC/ZQAAv4kAAL+wAAC/1AAAv9cAAL/ZAAC/2wAAv90AAL/fAAC/4QAAv+IAAL/lAAC/8gAAwAMAAMAFAADABwAAwAkAAMALAADADQAAwA8AAMARAADAEwAAwCQAAMAnAADAKgAAwC0AAMAwAADAMwAAwDYAAMA5AADAPAAAwD4AAMB9AADAfwAAwIEAAMCDAADAhgAAwIcAAMCIAADAiQAAwIoAAMCMAADAjgAAwI8AAMCQAADAkgAAwJMAAMDSAADA1AAAwNYAAMDYAADA2wAAwNwAAMDdAADA3gAAwN8AAMDhAADA4wAAwOQAAMDlAADA5wAAwOgAAMEnAADBKQAAwSwAAMEuAADBMQAAwTIAAMEzAADBNAAAwTUAAME3AADBOQAAwToAAME7AADBPQAAwT4AAMFLAADBTAAAwU0AAMFPAADBjgAAwZAAAMGSAADBlAAAwZcAAMGYAADBmQAAwZoAAMGbAADBnQAAwZ8AAMGgAADBoQAAwaMAAMGkAADB4wAAweUAAMHnAADB6QAAwewAAMHtAADB7gAAwe8AAMHwAADB8gAAwfQAAMH1AADB9gAAwfgAAMH5AADCOAAAwjoAAMI8AADCPgAAwkEAAMJCAADCQwAAwkQAAMJFAADCRwAAwkkAAMJKAADCSwAAwk0AAMJOAADCjQAAwo8AAMKRAADCkwAAwpYAAMKXAADCmAAAwpkAAMKaAADCnAAAwp4AAMKfAADCoAAAwqIAAMKjAADC4gAAwuQAAMLmAADC6AAAwusAAMLsAADC7QAAwu4AAMLvAADC8QAAwvMAAML0AADC9QAAwvcAAML4AADDHQAAw0EAAMNoAADDjAAAw48AAMORAADDkwAAw5UAAMOXAADDmQAAw5oAAMOdAADDqgAAw7kAAMO7AADDvQAAw78AAMPBAADDwwAAw8UAAMPHAADD1gAAw9kAAMPcAADD3wAAw+IAAMPlAADD6AAAw+sAAMPtAADELAAAxC4AAMQwAADEMgAAxDUAAMQ2AADENwAAxDgAAMQ5AADEOwAAxD0AAMQ+AADEPwAAxEEAAMRCAADEgQAAxIMAAMSFAADEhwAAxIoAAMSLAADEjAAAxI0AAMSOAADEkAAAxJIAAMSTAADElAAAxJYAAMSXAADE1gAAxNgAAMTaAADE3AAAxN8AAMTgAADE4QAAxOIAAMTjAADE5QAAxOcAAMToAADE6QAAxOsAAMTsAADFKwAAxS0AAMUwAADFMgAAxTUAAMU2AADFNwAAxTgAAMU5AADFOwAAxT0AAMU+AADFPwAAxUEAAMVCAADFhQAAxakAAMXNAADF8AAAxhcAAMY3AADGXgAAxoUAAMalAADGyQAAxu0AAMbvAADG8gAAxvQAAMb2AADG+AAAxvsAAMb+AADHAAAAxwIAAMcFAADHBwAAxwkAAMcMAADHDwAAxxAAAMcVAADHIgAAxyUAAMcnAADHKgAAxy0AAMcvAADHVAAAx3gAAMefAADHwwAAx8YAAMfIAADHygAAx8wAAMfOAADH0AAAx9EAAMfUAADH4QAAx/QAAMf2AADH+AAAx/oAAMf8AADH/gAAyAAAAMgCAADIBAAAyAYAAMgZAADIHAAAyB8AAMgiAADIJQAAyCgAAMgrAADILgAAyDEAAMg0AADINgAAyHUAAMh3AADIegAAyHwAAMh/AADIgAAAyIEAAMiCAADIgwAAyIUAAMiHAADIiAAAyIkAAMiLAADIjAAAyJUAAMiWAADImAAAyNcAAMjZAADI2wAAyN0AAMjgAADI4QAAyOIAAMjjAADI5AAAyOYAAMjoAADI6QAAyOoAAMjsAADI7QAAySwAAMkuAADJMQAAyTMAAMk2AADJNwAAyTgAAMk5AADJOgAAyTwAAMk+AADJPwAAyUAAAMlCAADJQwAAyUwAAMlNAADJTwAAyY4AAMmQAADJkgAAyZQAAMmXAADJmAAAyZkAAMmaAADJmwAAyZ0AAMmfAADJoAAAyaEAAMmjAADJpAAAyeMAAMnlAADJ6AAAyeoAAMntAADJ7gAAye8AAMnwAADJ8QAAyfMAAMn1AADJ9gAAyfcAAMn5AADJ+gAAygMAAMoEAADKBgAAykUAAMpHAADKSQAAyksAAMpOAADKTwAAylAAAMpRAADKUgAAylQAAMpWAADKVwAAylgAAMpaAADKWwAAypoAAMqcAADKnwAAyqEAAMqkAADKpQAAyqYAAMqnAADKqAAAyqoAAMqsAADKrQAAyq4AAMqwAADKsQAAyr4AAMq/AADKwAAAysIAAMsBAADLAwAAywUAAMsHAADLCgAAywsAAMsMAADLDQAAyw4AAMsQAADLEgAAyxMAAMsUAADLFgAAyxcAAMtWAADLWAAAy1oAAMtcAADLXwAAy2AAAMthAADLYgAAy2MAAMtlAADLZwAAy2gAAMtpAADLawAAy2wAAMt5AADLggAAy4UAAMuHAADLigAAy40AAMuWAADLmQAAy5wAAMufAADLogAAy6QAAMuzAADLxQAAy9IAAMwdAADMQAAAzGAAAMyAAADMggAAzIQAAMyGAADMiAAAzIsAAMyMAADMjQAAzJAAAMyRAADMkwAAzJQAAMyWAADMmQAAzJoAAMybAADMngAAzJ8AAMykAADMsQAAzLYAAMy4AADMugAAzL8AAMzCAADMxQAAzMcAAMzsAADNEAAAzTcAAM1bAADNXgAAzWAAAM1iAADNZAAAzWYAAM1oAADNaQAAzWwAAM15AADNigAAzYwAAM2OAADNkAAAzZIAAM2UAADNlgAAzZgAAM2aAADNqwAAza4AAM2xAADNtAAAzbcAAM26AADNvQAAzcAAAM3DAADNxQAAzgQAAM4GAADOCAAAzgoAAM4NAADODgAAzg8AAM4QAADOEQAAzhMAAM4VAADOFgAAzhcAAM4ZAADOGgAAzlkAAM5bAADOXQAAzl8AAM5iAADOYwAAzmQAAM5lAADOZgAAzmgAAM5qAADOawAAzmwAAM5uAADObwAAzq4AAM6wAADOswAAzrUAAM64AADOuQAAzroAAM67AADOvAAAzr4AAM7AAADOwQAAzsIAAM7EAADOxQAAztIAAM7TAADO1AAAztYAAM8VAADPFwAAzxkAAM8bAADPHgAAzx8AAM8gAADPIQAAzyIAAM8kAADPJgAAzycAAM8oAADPKgAAzysAAM9qAADPbAAAz24AAM9wAADPcwAAz3QAAM91AADPdgAAz3cAAM95AADPewAAz3wAAM99AADPfwAAz4AAAM+/AADPwQAAz8MAAM/FAADPyAAAz8kAAM/KAADPywAAz8wAAM/OAADP0AAAz9EAAM/SAADP1AAAz9UAANAUAADQFgAA0BgAANAaAADQHQAA0B4AANAfAADQIAAA0CEAANAjAADQJQAA0CYAANAnAADQKQAA0CoAANBpAADQawAA0G0AANBvAADQcgAA0HMAANB0AADQdQAA0HYAANB4AADQegAA0HsAANB8AADQfgAA0H8AANCkAADQyAAA0O8AANETAADRFgAA0RgAANEaAADRHAAA0R4AANEgAADRIQAA0SQAANExAADRQAAA0UIAANFEAADRRgAA0UgAANFKAADRTAAA0U4AANFdAADRYAAA0WMAANFmAADRaQAA0WwAANFvAADRcgAA0XQAANGzAADRtQAA0bcAANG5AADRvAAA0b0AANG+AADRvwAA0cAAANHCAADRxAAA0cUAANHGAADRyAAA0ckAANIIAADSCgAA0gwAANIOAADSEQAA0hIAANITAADSFAAA0hUAANIXAADSGQAA0hoAANIbAADSHQAA0h4AANJdAADSXwAA0mEAANJjAADSZgAA0mcAANJoAADSaQAA0moAANJsAADSbgAA0m8AANJwAADScgAA0nMAANKyAADStAAA0rYAANK4AADSuwAA0rwAANK9AADSvgAA0r8AANLBAADSwwAA0sQAANLFAADSxwAA0sgAANMHAADTCQAA0wsAANMNAADTEAAA0xEAANMSAADTEwAA0xQAANMWAADTGAAA0xkAANMaAADTHAAA0x0AANNcAADTXgAA02AAANNiAADTZQAA02YAANNnAADTaAAA02kAANNrAADTbQAA024AANNvAADTcQAA03IAANOxAADTswAA07YAANO4AADTuwAA07wAANO9AADTvgAA078AANPBAADTwwAA08QAANPFAADTxwAA08gAANQTAADUNgAA1FYAANR2AADUeAAA1HoAANR8AADUfgAA1IEAANSCAADUgwAA1IYAANSHAADUiQAA1IoAANSMAADUjgAA1I8AANSQAADUkwAA1JQAANSdAADUqgAA1K8AANSxAADUswAA1LgAANS7AADUvgAA1MAAANTlAADVCQAA1TAAANVUAADVVwAA1VkAANVbAADVXQAA1V8AANVhAADVYgAA1WUAANVyAADVgwAA1YUAANWHAADViQAA1YsAANWNAADVjwAA1ZEAANWTAADVpAAA1acAANWqAADVrQAA1bAAANWzAADVtgAA1bkAANW8AADVvgAA1f0AANX/AADWAQAA1gMAANYGAADWBwAA1ggAANYJAADWCgAA1gwAANYOAADWDwAA1hAAANYSAADWEwAA1lIAANZUAADWVgAA1lgAANZbAADWXAAA1l0AANZeAADWXwAA1mEAANZjAADWZAAA1mUAANZnAADWaAAA1qcAANapAADWrAAA1q4AANaxAADWsgAA1rMAANa0AADWtQAA1rcAANa5AADWugAA1rsAANa9AADWvgAA1ssAANbMAADWzQAA1s8AANcOAADXEAAA1xIAANcUAADXFwAA1xgAANcZAADXGgAA1xsAANcdAADXHwAA1yAAANchAADXIwAA1yQAANdjAADXZQAA12cAANdpAADXbAAA120AANduAADXbwAA13AAANdyAADXdAAA13UAANd2AADXeAAA13kAANe4AADXugAA17wAANe+AADXwQAA18IAANfDAADXxAAA18UAANfHAADXyQAA18oAANfLAADXzQAA184AANgNAADYDwAA2BEAANgTAADYFgAA2BcAANgYAADYGQAA2BoAANgcAADYHgAA2B8AANggAADYIgAA2CMAANhiAADYZAAA2GYAANhoAADYawAA2GwAANhtAADYbgAA2G8AANhxAADYcwAA2HQAANh1AADYdwAA2HgAANidAADYwQAA2OgAANkMAADZDwAA2REAANkTAADZFQAA2RcAANkZAADZGgAA2R0AANkqAADZOQAA2TsAANk9AADZPwAA2UEAANlDAADZRQAA2UcAANlWAADZWQAA2VwAANlfAADZYgAA2WUAANloAADZawAA2W0AANmsAADZrgAA2bAAANmyAADZtQAA2bYAANm3AADZuAAA2bkAANm7AADZvQAA2b4AANm/AADZwQAA2cIAANoBAADaAwAA2gUAANoHAADaCgAA2gsAANoMAADaDQAA2g4AANoQAADaEgAA2hMAANoUAADaFgAA2hcAANpWAADaWAAA2loAANpcAADaXwAA2mAAANphAADaYgAA2mMAANplAADaZwAA2mgAANppAADaawAA2mwAANqrAADarQAA2q8AANqxAADatAAA2rUAANq2AADatwAA2rgAANq6AADavAAA2r0AANq+AADawAAA2sEAANsAAADbAgAA2wQAANsGAADbCQAA2woAANsLAADbDAAA2w0AANsPAADbEQAA2xIAANsTAADbFQAA2xYAANtVAADbVwAA21kAANtbAADbXgAA218AANtgAADbYQAA22IAANtkAADbZgAA22cAANtoAADbagAA22sAANuqAADbrAAA268AANuxAADbtAAA27UAANu2AADbtwAA27gAANu6AADbvAAA270AANu+AADbwAAA28EAANwMAADcLwAA3E8AANxvAADccQAA3HMAANx1AADcdwAA3HkAANx6AADcewAA3H4AANx/AADcgQAA3IIAANyEAADchgAA3IcAANyIAADciwAA3IwAANyRAADcngAA3KMAANylAADcpwAA3KwAANyvAADcsgAA3LQAANzZAADc/QAA3SQAAN1IAADdSwAA3U0AAN1PAADdUQAA3VMAAN1VAADdVgAA3VkAAN1mAADddwAA3XkAAN17AADdfQAA3X8AAN2BAADdgwAA3YUAAN2HAADdmAAA3ZsAAN2eAADdoQAA3aQAAN2nAADdqgAA3a0AAN2wAADdsgAA3fEAAN3zAADd9QAA3fcAAN36AADd+wAA3fwAAN39AADd/gAA3gAAAN4CAADeAwAA3gQAAN4GAADeBwAA3kYAAN5IAADeSgAA3kwAAN5PAADeUAAA3lEAAN5SAADeUwAA3lUAAN5XAADeWAAA3lkAAN5bAADeXAAA3psAAN6dAADeoAAA3qIAAN6lAADepgAA3qcAAN6oAADeqQAA3qsAAN6tAADergAA3q8AAN6xAADesgAA3r8AAN7AAADewQAA3sMAAN8CAADfBAAA3wYAAN8IAADfCwAA3wwAAN8NAADfDgAA3w8AAN8RAADfEwAA3xQAAN8VAADfFwAA3xgAAN9XAADfWQAA31sAAN9dAADfYAAA32EAAN9iAADfYwAA32QAAN9mAADfaAAA32kAAN9qAADfbAAA320AAN+sAADfrgAA37AAAN+yAADftQAA37YAAN+3AADfuAAA37kAAN+7AADfvQAA374AAN+/AADfwQAA38IAAOABAADgAwAA4AUAAOAHAADgCgAA4AsAAOAMAADgDQAA4A4AAOAQAADgEgAA4BMAAOAUAADgFgAA4BcAAOBWAADgWAAA4FoAAOBcAADgXwAA4GAAAOBhAADgYgAA4GMAAOBlAADgZwAA4GgAAOBpAADgawAA4GwAAOCRAADgtQAA4NwAAOEAAADhAwAA4QUAAOEHAADhCQAA4QsAAOENAADhDgAA4REAAOEeAADhLQAA4S8AAOExAADhMwAA4TUAAOE3AADhOQAA4TsAAOFKAADhTQAA4VAAAOFTAADhVgAA4VkAAOFcAADhXwAA4WEAAOGgAADhogAA4aQAAOGmAADhqQAA4aoAAOGrAADhrAAA4a0AAOGvAADhsQAA4bIAAOGzAADhtQAA4bYAAOH1AADh9wAA4fkAAOH7AADh/gAA4f8AAOIAAADiAQAA4gIAAOIEAADiBgAA4gcAAOIIAADiCgAA4gsAAOJKAADiTAAA4k4AAOJQAADiUwAA4lQAAOJVAADiVgAA4lcAAOJZAADiWwAA4lwAAOJdAADiXwAA4mAAAOKfAADioQAA4qQAAOKmAADiqQAA4qoAAOKrAADirAAA4q0AAOKvAADisQAA4rIAAOKzAADitQAA4rYAAOL1AADi9wAA4vkAAOL7AADi/gAA4v8AAOMAAADjAQAA4wIAAOMEAADjBgAA4wcAAOMIAADjCgAA4wsAAONKAADjTAAA404AAONQAADjUwAA41QAAONVAADjVgAA41cAAONZAADjWwAA41wAAONdAADjXwAA42AAAOOfAADjoQAA46QAAOOmAADjqQAA46oAAOOrAADjrAAA460AAOOvAADjsQAA47IAAOOzAADjtQAA47YAAOQBAADkJAAA5EQAAORkAADkZgAA5GgAAORqAADkbAAA5G8AAORwAADkcQAA5HQAAOR1AADkdwAA5HgAAOR6AADkfQAA5H4AAOR/AADkggAA5IMAAOSIAADklQAA5JoAAOScAADkngAA5KMAAOSmAADkqQAA5KsAAOTQAADk9AAA5RsAAOU/AADlQgAA5UQAAOVGAADlSAAA5UoAAOVMAADlTQAA5VAAAOVdAADlbgAA5XAAAOVyAADldAAA5XYAAOV4AADlegAA5XwAAOV+AADljwAA5ZIAAOWVAADlmAAA5ZsAAOWeAADloQAA5aQAAOWnAADlqQAA5egAAOXqAADl7AAA5e4AAOXxAADl8gAA5fMAAOX0AADl9QAA5fcAAOX5AADl+gAA5fsAAOX9AADl/gAA5j0AAOY/AADmQQAA5kMAAOZGAADmRwAA5kgAAOZJAADmSgAA5kwAAOZOAADmTwAA5lAAAOZSAADmUwAA5pIAAOaUAADmlwAA5pkAAOacAADmnQAA5p4AAOafAADmoAAA5qIAAOakAADmpQAA5qYAAOaoAADmqQAA5rYAAOa3AADmuAAA5roAAOb5AADm+wAA5v0AAOb/AADnAgAA5wMAAOcEAADnBQAA5wYAAOcIAADnCgAA5ws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AARC2AAEQuQABELoAARC7AAEQvAABEL0AARC/AAEQwQABEMIAARDDAAEQxQABEMYAARDcAAERGwABER0AAREfAAERIQABESQAARElAAERJgABEScAAREoAAERKgABESwAAREtAAERLgABETAAARExAAERVgABEXoAARGhAAERxQABEcgAARHKAAERzAABEc4AARHQAAER0gABEdMAARHWAAER4wABEfIAARH0AAER9gABEfgAARH6AAER/AABEf4AARIAAAESDwABEhIAARIVAAESGAABEhsAARIeAAESIQABEiQAARImAAESZQABEmcAARJpAAESawABEm4AARJvAAEScAABEnEAARJyAAESdAABEnYAARJ3AAESeAABEnoAARJ7AAESugABErwAARK+AAESwAABEsMAARLEAAESxQABEsYAARLHAAESyQABEssAARLMAAESzQABEs8AARLQAAETDwABExEAARMTAAETFQABExgAARMZAAETGgABExsAARMcAAETHgABEyAAARMhAAETIgABEyQAARMlAAETZAABE2YAARNoAAETagABE20AARNuAAETbwABE3AAARNxAAETcwABE3UAARN2AAETdwABE3kAARN6AAETuQABE7sAARO9AAETvwABE8IAARPDAAETxAABE8UAARPGAAETyAABE8oAARPLAAETzAABE84AARPPAAEUDgABFBAAARQSAAEUFAABFBcAARQYAAEUGQABFBoAARQbAAEUHQABFB8AARQgAAEUIQABFCMAARQkAAEUYwABFGUAARRnAAEUaQABFGwAARRtAAEUbgABFG8AARRwAAEUcgABFHQAARR1AAEUdgABFHgAARR5AAEUxAABFOcAARUHAAEVJwABFSkAARUrAAEVLQABFS8AARUyAAEVMwABFTQAARU3AAEVOAABFToAARU7AAEVPQABFUAAARVBAAEVQgABFUUAARVGAAEVTwABFVwAARVhAAEVYwABFWUAARVqAAEVbQABFXAAARVyAAEVlwABFbsAARXiAAEWBgABFgkAARYLAAEWDQABFg8AARYRAAEWEwABFhQAARYXAAEWJAABFjUAARY3AAEWOQABFjsAARY9AAEWPwABFkEAARZDAAEWRQABFlYAARZZAAEWXAABFl8AARZiAAEWZQABFmgAARZrAAEWbgABFnAAARavAAEWsQABFrMAARa1AAEWuAABFrkAARa6AAEWuwABFrwAARa+AAEWwAABFsEAARbCAAEWxAABFsUAARcEAAEXBgABFwgAARcKAAEXDQABFw4AARcPAAEXEAABFxEAARcTAAEXFQABFxYAARcXAAEXGQABFxoAARdZAAEXWwABF14AARdgAAEXYwABF2QAARdlAAEXZgABF2cAARdpAAEXawABF2wAARdtAAEXbwABF3AAARd9AAEXfgABF38AAReBAAEXwAABF8IAARfEAAEXxgABF8kAARfKAAEXywABF8wAARfNAAEXzwABF9EAARfSAAEX0wABF9UAARfWAAEYFQABGBcAARgZAAEYGwABGB4AARgfAAEYIAABGCEAARgiAAEYJAABGCYAARgnAAEYKAABGCoAARgrAAEYagABGGwAARhuAAEYcAABGHMAARh0AAEYdQABGHYAARh3AAEYeQABGHsAARh8AAEYfQABGH8AARiAAAEYvwABGMEAARjDAAEYxQABGMgAARjJAAEYygABGMsAARjMAAEYzgABGNAAARjRAAEY0gABGNQAARjVAAEZFAABGRYAARkYAAEZGgABGR0AARkeAAEZHwABGSAAARkhAAEZIwABGSUAARkmAAEZJwABGSkAARkqAAEZTwABGXMAARmaAAEZvgABGcEAARnDAAEZxQABGccAARnJAAEZywABGcwAARnPAAEZ3AABGesAARntAAEZ7wABGfEAARnzAAEZ9QABGfcAARn5AAEaCAABGgsAARoOAAEaEQABGhQAARoXAAEaGgABGh0AARofAAEaXgABGmAAARpiAAEaZAABGmcAARpoAAEaaQABGmoAARprAAEabQABGm8AARpwAAEacQABGnMAARp0AAEaswABGrUAARq3AAEauQABGrwAARq9AAEavgABGr8AARrAAAEawgABGsQAARrFAAEaxgABGsgAARrJAAEbCAABGwoAARsMAAEbDgABGxEAARsSAAEbEwABGxQAARsVAAEbFwABGxkAARsaAAEbGwABGx0AARseAAEbXQABG18AARthAAEbYwABG2YAARtnAAEbaAABG2kAARtqAAEbbAABG24AARtvAAEbcAABG3IAARtzAAEbsgABG7QAARu2AAEbuAABG7sAARu8AAEbvQABG74AARu/AAEbwQABG8MAARvEAAEbxQABG8cAARvIAAEcBwABHAkAARwLAAEcDQABHBAAARwRAAEcEgABHBMAARwUAAEcFgABHBgAARwZAAEcGgABHBwAARwdAAEcXAABHF4AARxgAAEcYgABHGUAARxmAAEcZwABHGgAARxpAAEcawABHG0AARxuAAEcbwABHHEAARxyAAEcvQABHOAAAR0AAAEdIAABHSIAAR0kAAEdJgABHSgAAR0rAAEdLAABHS0AAR0wAAEdMQABHTMAAR00AAEdNgABHTkAAR06AAEdOwABHT4AAR0/AAEdSAABHVUAAR1aAAEdXAABHV4AAR1jAAEdZgABHWkAAR1rAAEdkAABHbQAAR3bAAEd/wABHgIAAR4EAAEeBgABHggAAR4KAAEeDAABHg0AAR4QAAEeHQABHi4AAR4wAAEeMgABHjQAAR42AAEeOAABHjoAAR48AAEePgABHk8AAR5SAAEeVQABHlgAAR5bAAEeXgABHmEAAR5kAAEeZwABHmkAAR6oAAEeqgABHqwAAR6uAAEesQABHrIAAR6zAAEetAABHrUAAR63AAEeuQABHroAAR67AAEevQABHr4AAR79AAEe/wABHwEAAR8DAAEfBgABHwcAAR8IAAEfCQABHwoAAR8MAAEfDgABHw8AAR8QAAEfEgABHxMAAR9SAAEfVAABH1cAAR9ZAAEfXAABH10AAR9eAAEfXwABH2AAAR9iAAEfZAABH2UAAR9mAAEfaAABH2kAAR92AAEfdwABH3gAAR96AAEfuQABH7sAAR+9AAEfvwABH8IAAR/DAAEfxAABH8UAAR/GAAEfyAABH8oAAR/LAAEfzAABH84AAR/PAAEgDgABIBAAASASAAEgFAABIBcAASAYAAEgGQABIBoAASAbAAEgHQABIB8AASAgAAEgIQABICMAASAkAAEgYwABIGUAASBnAAEgaQABIGwAASBtAAEgbgABIG8AASBwAAEgcgABIHQAASB1AAEgdgABIHgAASB5AAEguAABILoAASC8AAEgvgABIMEAASDCAAEgwwABIMQAASDFAAEgxwABIMkAASDKAAEgywABIM0AASDOAAEhDQABIQ8AASERAAEhEwABIRYAASEXAAEhGAABIRkAASEaAAEhHAABIR4AASEfAAEhIAABISIAASEjAAEhSAABIWwAASGTAAEhtwABIboAASG8AAEhvgABIcAAASHCAAEhxAABIcUAASHIAAEh1QABIeQAASHmAAEh6AABIeoAASHsAAEh7gABIfAAASHyAAEiAQABIgQAASIHAAEiCgABIg0AASIQAAEiEwABIhYAASIYAAEiVwABIlkAASJbAAEiXQABImAAASJhAAEiYgABImMAASJkAAEiZgABImgAASJpAAEiagABImwAASJtAAEirAABIq4AASKwAAEisgABIrUAASK2AAEitwABIrgAASK5AAEiuwABIr0AASK+AAEivwABIsEAASLCAAEjAQABIwMAASMFAAEjBwABIwoAASMLAAEjDAABIw0AASMOAAEjEAABIxIAASMTAAEjFAABIxYAASMXAAEjVgABI1gAASNaAAEjXAABI18AASNgAAEjYQABI2IAASNjAAEjZQABI2cAASNoAAEjaQABI2sAASNsAAEjqwABI60AASOvAAEjsQABI7QAASO1AAEjtgABI7cAASO4AAEjugABI7wAASO9AAEjvgABI8AAASPBAAEkAAABJAIAASQEAAEkBgABJAkAASQKAAEkCwABJAwAASQNAAEkDwABJBEAASQSAAEkEwABJBUAASQWAAEkVQABJFcAASRZAAEkWwABJF4AASRfAAEkYAABJGEAASRiAAEkZAABJGYAASRnAAEkaAABJGoAASRrAAEktgABJNkAAST5AAElGQABJRsAASUdAAElHwABJSEAASUkAAElJQABJSYAASUpAAElKgABJSwAASUtAAElLwABJTIAASUzAAElNAABJTcAASU4AAElPQABJUoAASVPAAElUQABJVMAASVYAAElWwABJV4AASVgAAElhQABJakAASXQAAEl9AABJfcAASX5AAEl+wABJf0AASX/AAEmAQABJgIAASYFAAEmEgABJiMAASYlAAEmJwABJikAASYrAAEmLQABJi8AASYxAAEmMwABJkQAASZHAAEmSgABJk0AASZQAAEmUwABJlYAASZZAAEmXAABJl4AASadAAEmnwABJqEAASajAAEmpgABJqcAASaoAAEmqQABJqoAASasAAEmrgABJq8AASawAAEmsgABJrMAASbyAAEm9AABJvYAASb4AAEm+wABJvwAASb9AAEm/gABJv8AAScBAAEnAwABJwQAAScFAAEnBwABJwgAASdHAAEnSQABJ0wAASdOAAEnUQABJ1IAASdTAAEnVAABJ1UAASdXAAEnWQABJ1oAASdbAAEnXQABJ14AASdrAAEnbAABJ20AASdvAAEnrgABJ7AAASeyAAEntAABJ7cAASe4AAEnuQABJ7oAASe7AAEnvQABJ78AASfAAAEnwQABJ8MAASfEAAEoAwABKAUAASgHAAEoCQABKAwAASgNAAEoDgABKA8AASgQAAEoEgABKBQAASgVAAEoFgABKBgAASgZAAEoWAABKFoAAShcAAEoXgABKGEAAShiAAEoYwABKGQAAShlAAEoZwABKGkAAShqAAEoawABKG0AAShuAAEorQABKK8AASixAAEoswABKLYAASi3AAEouAABKLkAASi6AAEovAABKL4AASi/AAEowAABKMIAASjDAAEpAgABKQQAASkGAAEpCAABKQsAASkMAAEpDQABKQ4AASkPAAEpEQABKRMAASkUAAEpFQABKRcAASkYAAEpPQABKWEAASmIAAEprAABKa8AASmxAAEpswABKbUAASm3AAEpuQABKboAASm9AAEpygABKdkAASnbAAEp3QABKd8AASnhAAEp4wABKeUAASnnAAEp9gABKfkAASn8AAEp/wABKgIAASoFAAEqCAABKgsAASoNAAEqTAABKk4AASpQAAEqUgABKlUAASpWAAEqVwABKlgAASpZAAEqWwABKl0AASpeAAEqXwABKmEAASpiAAEqoQABKqMAASqlAAEqpwABKqoAASqrAAEqrAABKq0AASquAAEqsAABKrIAASqzAAEqtAABKrYAASq3AAEq9gABKvgAASr6AAEq/AABKv8AASsAAAErAQABKwIAASsDAAErBQABKwcAASsIAAErCQABKwsAASsMAAErSwABK00AAStPAAErUQABK1QAAStVAAErVgABK1cAAStYAAErWgABK1wAAStdAAErXgABK2AAASthAAEroAABK6IAASukAAErpgABK6kAASuqAAErqwABK6wAASutAAErrwABK7EAASuyAAErswABK7UAASu2AAEr9QABK/cAASv5AAEr+wABK/4AASv/AAEsAAABLAEAASwCAAEsBAABLAYAASwHAAEsCAABLAoAASwLAAEsSgABLEwAASxOAAEsUAABLFMAASxUAAEsVQABLFYAASxXAAEsWQABLFsAASxcAAEsXQABLF8AASxgAAEsqwABLM4AASzuAAEtDgABLRAAAS0SAAEtFAABLRYAAS0ZAAEtGgABLRsAAS0eAAEtHwABLSEAAS0iAAEtJAABLScAAS0oAAEtKQABLSwAAS0tAAEtMgABLT8AAS1EAAEtRgABLUgAAS1NAAEtUAABLVMAAS1VAAEtegABLZ4AAS3FAAEt6QABLewAAS3uAAEt8AABLfIAAS30AAEt9gABLfcAAS36AAEuBwABLhgAAS4aAAEuHAABLh4AAS4gAAEuIgABLiQAAS4mAAEuKAABLjkAAS48AAEuPwABLkIAAS5FAAEuSAABLksAAS5OAAEuUQABLlMAAS6SAAEulAABLpYAAS6YAAEumwABLpwAAS6dAAEungABLp8AAS6hAAEuowABLqQAAS6lAAEupwABLqgAAS7nAAEu6QABLusAAS7tAAEu8AABLvEAAS7yAAEu8wABLvQAAS72AAEu+AABLvkAAS76AAEu/AABLv0AAS88AAEvPgABL0EAAS9DAAEvRgABL0cAAS9IAAEvSQABL0oAAS9MAAEvTgABL08AAS9QAAEvUgABL1MAAS9gAAEvYQABL2IAAS9kAAEvowABL6UAAS+nAAEvqQABL6wAAS+tAAEvrgABL68AAS+wAAEvsgABL7QAAS+1AAEvtgABL7gAAS+5AAEv+AABL/oAAS/8AAEv/gABMAEAATACAAEwAwABMAQAATAFAAEwBwABMAkAATAKAAEwCwABMA0AATAOAAEwTQABME8AATBRAAEwUwABMFYAATBXAAEwWAABMFkAATBaAAEwXAABMF4AATBfAAEwYAABMGIAATBjAAEwogABMKQAATCmAAEwqAABMKsAATCsAAEwrQABMK4AATCvAAEwsQABMLMAATC0AAEwtQABMLcAATC4AAEw9wABMPkAATD7AAEw/QABMQAAATEBAAExAgABMQMAATEEAAExBgABMQgAATEJAAExCgABMQwAATENAAExMgABMVYAATF9AAExoQABMaQAATGmAAExqAABMaoAATGsAAExrgABMa8AATGyAAExvwABMc4AATHQAAEx0gABMdQAATHWAAEx2AABMdoAATHcAAEx6wABMe4AATHxAAEx9AABMfcAATH6AAEx/QABMgAAATICAAEyQQABMkMAATJFAAEyRwABMkoAATJLAAEyTAABMk0AATJOAAEyUAABMlIAATJTAAEyVAABMlYAATJXAAEylgABMpgAATKaAAEynAABMp8AATKgAAEyoQABMqIAATKjAAEypQABMqcAATKoAAEyqQABMqsAATKsAAEy6wABMu0AATLvAAEy8QABMvQAATL1AAEy9gABMvcAATL4AAEy+gABMvwAATL9AAEy/gABMwAAATMBAAEzQAABM0IAATNEAAEzRgABM0kAATNKAAEzSwABM0wAATNNAAEzTwABM1EAATNSAAEzUwABM1UAATNWAAEzlQABM5cAATOZAAEzmwABM54AATOfAAEzoAABM6EAATOiAAEzpAABM6YAATOnAAEzqAABM6oAATOrAAEz6gABM+wAATPuAAEz8AABM/MAATP0AAEz9QABM/YAATP3AAEz+QABM/sAATP8AAEz/QABM/8AATQAAAE0PwABNEEAATRDAAE0RQABNEgAATRJAAE0SgABNEsAATRMAAE0TgABNFAAATRRAAE0UgABNFQAATRVAAE0oAABNMMAATTjAAE1AwABNQUAATUHAAE1CQABNQsAATUOAAE1DwABNRAAATUTAAE1FAABNRYAATUXAAE1GQABNRwAATUdAAE1HgABNSEAATUiAAE1JwABNTQAATU5AAE1OwABNT0AATVCAAE1RQABNUgAATVKAAE1bwABNZMAATW6AAE13gABNeEAATXjAAE15QABNecAATXpAAE16wABNewAATXvAAE1/AABNg0AATYPAAE2EQABNhMAATYVAAE2FwABNhkAATYbAAE2HQABNi4AATYxAAE2NAABNjcAATY6AAE2PQABNkAAATZDAAE2RgABNkgAATaHAAE2iQABNosAATaNAAE2kAABNpEAATaSAAE2kwABNpQAATaWAAE2mAABNpkAATaaAAE2nAABNp0AATbcAAE23gABNuAAATbiAAE25QABNuYAATbnAAE26AABNukAATbrAAE27QABNu4AATbvAAE28QABNvIAATcxAAE3MwABNzYAATc4AAE3OwABNzwAATc9AAE3PgABNz8AATdBAAE3QwABN0QAATdFAAE3RwABN0gAATdVAAE3VgABN1cAATdZAAE3mAABN5oAATecAAE3ngABN6EAATeiAAE3owABN6QAATelAAE3pwABN6kAATeqAAE3qwABN60AATeuAAE37QABN+8AATfxAAE38wABN/YAATf3AAE3+AABN/kAATf6AAE3/AABN/4AATf/AAE4AAABOAIAATgDAAE4QgABOEQAAThGAAE4SAABOEsAAThMAAE4TQABOE4AAThPAAE4UQABOFMAAThUAAE4VQABOFcAAThYAAE4lwABOJkAATibAAE4nQABOKAAATihAAE4ogABOKMAATikAAE4pgABOKgAATipAAE4qgABOKwAATitAAE47AABOO4AATjwAAE48gABOPUAATj2AAE49wABOPgAATj5AAE4+wABOP0AATj+AAE4/wABOQEAATkCAAE5JwABOUsAATlyAAE5lgABOZkAATmbAAE5nQABOZ8AATmhAAE5owABOaQAATmnAAE5tAABOcMAATnFAAE5xwABOckAATnLAAE5zQABOc8AATnRAAE54AABOeMAATnmAAE56QABOewAATnvAAE58gABOfUAATn3AAE6NgABOjgAATo6AAE6PAABOj8AATpAAAE6QQABOkIAATpDAAE6RQABOkcAATpIAAE6SQABOksAATpMAAE6iwABOo0AATqPAAE6kQABOpQAATqVAAE6lgABOpcAATqYAAE6mgABOpwAATqdAAE6ngABOqAAATqhAAE64AABOuIAATrkAAE65gABOukAATrqAAE66wABOuwAATrtAAE67wABOvEAATryAAE68wABOvUAATr2AAE7NQABOzcAATs5AAE7OwABOz4AATs/AAE7QAABO0EAATtCAAE7RAABO0YAATtHAAE7SAABO0oAATtLAAE7igABO4wAATuOAAE7kAABO5MAATuUAAE7lQABO5YAATuXAAE7mQABO5sAATucAAE7nQABO58AATugAAE73wABO+EAATvjAAE75QABO+gAATvpAAE76gABO+sAATvsAAE77gABO/AAATvxAAE78gABO/QAATv1AAE8NAABPDYAATw4AAE8OgABPD0AATw+AAE8PwABPEAAATxBAAE8QwABPEUAATxGAAE8RwABPEkAATxKAAE8lQABPLgAATzYAAE8+AABPPoAATz8AAE8/gABPQAAAT0DAAE9BAABPQUAAT0IAAE9CQABPQsAAT0MAAE9DgABPREAAT0SAAE9EwABPRYAAT0XAAE9HAABPSkAAT0uAAE9MAABPTIAAT03AAE9OgABPT0AAT0/AAE9ZAABPYg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AAU6GAAFOiAABTosAAU6MAAFOjQABTo4AAU6PAAFOkQABTpMAAU6UAAFOlQABTpcAAU6YAAFO1wABTtkAAU7bAAFO3QABTuAAAU7hAAFO4gABTuMAAU7kAAFO5gABTugAAU7pAAFO6gABTuwAAU7tAAFPLAABTy4AAU8xAAFPMwABTzYAAU83AAFPOAABTzkAAU86AAFPPAABTz4AAU8/AAFPQAABT0IAAU9DAAFPUAABT1EAAU9SAAFPVAABT5MAAU+VAAFPlwABT5kAAU+cAAFPnQABT54AAU+fAAFPoAABT6IAAU+kAAFPpQABT6YAAU+oAAFPqQABT+gAAU/qAAFP7AABT+4AAU/xAAFP8gABT/MAAU/0AAFP9QABT/cAAU/5AAFP+gABT/sAAU/9AAFP/gABUD0AAVA/AAFQQQABUEMAAVBGAAFQRwABUEgAAVBJAAFQSgABUEwAAVBOAAFQTwABUFAAAVBSAAFQUwABUJIAAVCUAAFQlgABUJgAAVCbAAFQnAABUJ0AAVCeAAFQnwABUKEAAVCjAAFQpAABUKUAAVCnAAFQqAABUOcAAVDpAAFQ6wABUO0AAVDwAAFQ8QABUPIAAVDzAAFQ9AABUPYAAVD4AAFQ+QABUPoAAVD8AAFQ/QABUSIAAVFGAAFRbQABUZEAAVGUAAFRlgABUZgAAVGaAAFRnAABUZ4AAVGfAAFRogABUa8AAVG+AAFRwAABUcIAAVHEAAFRxgABUcgAAVHKAAFRzAABUdsAAVHeAAFR4QABUeQAAVHnAAFR6gABUe0AAVHwAAFR8gABUjEAAVIzAAFSNQABUjcAAVI6AAFSOwABUjwAAVI9AAFSPgABUkAAAVJCAAFSQwABUkQAAVJGAAFSRwABUoYAAVKIAAFSigABUowAAVKPAAFSkAABUpEAAVKSAAFSkwABUpUAAVKXAAFSmAABUpkAAVKbAAFSnAABUtsAAVLdAAFS3wABUuEAAVLkAAFS5QABUuYAAVLnAAFS6AABUuoAAVLsAAFS7QABUu4AAVLwAAFS8QABUzAAAVMyAAFTNAABUzYAAVM5AAFTOgABUzsAAVM8AAFTPQABUz8AAVNBAAFTQgABU0MAAVNFAAFTRgABU4UAAVOHAAFTiQABU4sAAVOOAAFTjwABU5AAAVORAAFTkgABU5QAAVOWAAFTlwABU5gAAVOaAAFTmwABU9oAAVPcAAFT3gABU+AAAVPjAAFT5AABU+UAAVPmAAFT5wABU+kAAVPrAAFT7AABU+0AAVPvAAFT8AABVC8AAVQxAAFUMwABVDUAAVQ4AAFUOQABVDoAAVQ7AAFUPAABVD4AAVRAAAFUQQABVEIAAVREAAFURQABVJAAAVSzAAFU0wABVPMAAVT1AAFU9wABVPkAAVT7AAFU/gABVP8AAVUAAAFVAwABVQQAAVUGAAFVBwABVQkAAVUMAAFVDQABVQ4AAVURAAFVEgABVRsAAVUoAAFVLQABVS8AAVUxAAFVNgABVTkAAVU8AAFVPgABVWMAAVWHAAFVrgABVdIAAVXVAAFV1wABVdkAAVXbAAFV3QABVd8AAVXgAAFV4wABVfAAAVYBAAFWAwABVgUAAVYHAAFWCQABVgsAAVYNAAFWDwABVhEAAVYiAAFWJQABVigAAVYrAAFWLgABVjEAAVY0AAFWNwABVjoAAVY8AAFWewABVn0AAVZ/AAFWgQABVoQAAVaFAAFWhgABVocAAVaIAAFWigABVowAAVaNAAFWjgABVpAAAVaRAAFW0AABVtIAAVbUAAFW1gABVtkAAVbaAAFW2wABVtwAAVbdAAFW3wABVuEAAVbiAAFW4wABVuUAAVbmAAFXJQABVycAAVcqAAFXLAABVy8AAVcwAAFXMQABVzIAAVczAAFXNQABVzcAAVc4AAFXOQABVzsAAVc8AAFXSQABV0oAAVdLAAFXTQABV4wAAVeOAAFXkAABV5IAAVeVAAFXlgABV5cAAVeYAAFXmQABV5sAAVedAAFXngABV58AAVehAAFXogABV+EAAVfjAAFX5QABV+cAAVfqAAFX6wABV+wAAVftAAFX7gABV/AAAVfyAAFX8wABV/QAAVf2AAFX9wABWDYAAVg4AAFYOgABWDwAAVg/AAFYQAABWEEAAVhCAAFYQwABWEUAAVhHAAFYSAABWEkAAVhLAAFYTAABWIsAAViNAAFYjwABWJEAAViUAAFYlQABWJYAAViXAAFYmAABWJoAAVicAAFYnQABWJ4AAVigAAFYoQABWOAAAVjiAAFY5AABWOYAAVjpAAFY6gABWOsAAVjsAAFY7QABWO8AAVjxAAFY8gABWPMAAVj1AAFY9gABWRsAAVk/AAFZZgABWYoAAVmNAAFZjwABWZEAAVmTAAFZlQABWZcAAVmYAAFZmwABWagAAVm3AAFZuQABWbsAAVm9AAFZvwABWcEAAVnDAAFZxQABWdQAAVnXAAFZ2gABWd0AAVngAAFZ4wABWeYAAVnpAAFZ6wABWioAAVosAAFaLgABWjAAAVozAAFaNAABWjUAAVo2AAFaNwABWjkAAVo7AAFaPAABWj0AAVo/AAFaQAABWn8AAVqBAAFagwABWoUAAVqIAAFaiQABWooAAVqLAAFajAABWo4AAVqQAAFakQABWpIAAVqUAAFalQABWtQAAVrWAAFa2AABWtoAAVrdAAFa3gABWt8AAVrgAAFa4QABWuMAAVrlAAFa5gABWucAAVrpAAFa6gABWykAAVsrAAFbLQABWy8AAVsyAAFbMwABWzQAAVs1AAFbNgABWzgAAVs6AAFbOwABWzwAAVs+AAFbPwABW34AAVuAAAFbggABW4QAAVuHAAFbiAABW4kAAVuKAAFbiwABW40AAVuPAAFbkAABW5EAAVuTAAFblAABW9MAAVvVAAFb1wABW9kAAVvcAAFb3QABW94AAVvfAAFb4AABW+IAAVvkAAFb5QABW+YAAVvoAAFb6QABXCgAAVwqAAFcLAABXC4AAVwxAAFcMgABXDMAAVw0AAFcNQABXDcAAVw5AAFcOgABXDsAAVw9AAFcPgABXIkAAVysAAFczAABXOwAAVzuAAFc8AABXPIAAVz0AAFc9wABXPgAAVz5AAFc/AABXP0AAVz/AAFdAAABXQIAAV0EAAFdBQABXQYAAV0JAAFdCgABXQ8AAV0cAAFdIQABXSMAAV0lAAFdKgABXS0AAV0wAAFdMgABXVcAAV17AAFdogABXcYAAV3JAAFdywABXc0AAV3PAAFd0QABXdMAAV3UAAFd1wABXeQAAV31AAFd9wABXfkAAV37AAFd/QABXf8AAV4BAAFeAwABXgUAAV4WAAFeGQABXhwAAV4fAAFeIgABXiUAAV4oAAFeKwABXi4AAV4wAAFebwABXnEAAV5zAAFedQABXngAAV55AAFeegABXnsAAV58AAFefgABXoAAAV6BAAFeggABXoQAAV6FAAFexAABXsYAAV7IAAFeygABXs0AAV7OAAFezwABXtAAAV7RAAFe0wABXtUAAV7WAAFe1wABXtkAAV7aAAFfGQABXxsAAV8eAAFfIAABXyMAAV8kAAFfJQABXyYAAV8nAAFfKQABXysAAV8sAAFfLQABXy8AAV8wAAFfPQABXz4AAV8/AAFfQQABX4AAAV+CAAFfhAABX4YAAV+JAAFfigABX4sAAV+MAAFfjQABX48AAV+RAAFfkgABX5MAAV+VAAFflgABX9UAAV/XAAFf2QABX9sAAV/eAAFf3wABX+AAAV/hAAFf4gABX+QAAV/mAAFf5wABX+gAAV/qAAFf6wABYCoAAWAsAAFgLgABYDAAAWAzAAFgNAABYDUAAWA2AAFgNwABYDkAAWA7AAFgPAABYD0AAWA/AAFgQAABYH8AAWCBAAFggwABYIUAAWCIAAFgiQABYIoAAWCLAAFgjAABYI4AAWCQAAFgkQABYJIAAWCUAAFglQABYNQAAWDWAAFg2AABYNoAAWDdAAFg3gABYN8AAWDgAAFg4QABYOMAAWDlAAFg5gABYOcAAWDpAAFg6gABYQ8AAWEzAAFhWgABYX4AAWGBAAFhgwABYYUAAWGHAAFhiQABYYsAAWGMAAFhjwABYZwAAWGrAAFhrQABYa8AAWGxAAFhswABYbUAAWG3AAFhuQABYcgAAWHLAAFhzgABYdEAAWHUAAFh1wABYdoAAWHdAAFh3wABYh4AAWIgAAFiIgABYiQAAWInAAFiKAABYikAAWIqAAFiKwABYi0AAWIvAAFiMAABYjEAAWIzAAFiNAABYnMAAWJ1AAFidwABYnkAAWJ8AAFifQABYn4AAWJ/AAFigAABYoIAAWKEAAFihQABYoYAAWKIAAFiiQABYsgAAWLKAAFizAABYs4AAWLRAAFi0gABYtMAAWLUAAFi1QABYtcAAWLZAAFi2gABYtsAAWLdAAFi3gABYx0AAWMfAAFjIQABYyMAAWMmAAFjJwABYygAAWMpAAFjKgABYywAAWMuAAFjLwABYzAAAWMyAAFjMwABY3IAAWN0AAFjdgABY3gAAWN7AAFjfAABY30AAWN+AAFjfwABY4EAAWODAAFjhAABY4UAAWOHAAFjiAABY8cAAWPJAAFjywABY80AAWPQAAFj0QABY9IAAWPTAAFj1AABY9YAAWPYAAFj2QABY9oAAWPcAAFj3QABZBwAAWQeAAFkIAABZCIAAWQlAAFkJgABZCcAAWQoAAFkKQABZCsAAWQtAAFkLgABZC8AAWQxAAFkMgABZH0AAWSgAAFkwAABZOAAAWTiAAFk5AABZOYAAWToAAFk6wABZOwAAWTtAAFk8AABZPEAAWTzAAFk9AABZPYAAWT5AAFk+gABZPsAAWT+AAFk/wABZQQAAWURAAFlFgABZRgAAWUaAAFlHwABZSIAAWUlAAFlJwABZUwAAWVwAAFllwABZbsAAWW+AAFlwAABZcIAAWXEAAFlxgABZcgAAWXJAAFlzAABZdkAAWXqAAFl7AABZe4AAWXwAAFl8gABZfQAAWX2AAFl+AABZfoAAWYLAAFmDgABZhEAAWYUAAFmFwABZhoAAWYdAAFmIAABZiMAAWYlAAFmZAABZmYAAWZoAAFmagABZm0AAWZuAAFmbwABZnAAAWZxAAFmcwABZnUAAWZ2AAFmdwABZnkAAWZ6AAFmuQABZrsAAWa9AAFmvwABZsIAAWbDAAFmxAABZsUAAWbGAAFmyAABZsoAAWbLAAFmzAABZs4AAWbPAAFnDgABZxAAAWcTAAFnFQABZxgAAWcZAAFnGgABZxsAAWccAAFnHgABZyAAAWchAAFnIgABZyQAAWclAAFnMgABZzMAAWc0AAFnNgABZ3UAAWd3AAFneQABZ3sAAWd+AAFnfwABZ4AAAWeBAAFnggABZ4QAAWeGAAFnhwABZ4gAAWeKAAFniwABZ8oAAWfMAAFnzgABZ9AAAWfTAAFn1AABZ9UAAWfWAAFn1wABZ9kAAWfbAAFn3AABZ90AAWffAAFn4AABaB8AAWghAAFoIwABaCUAAWgoAAFoKQABaCoAAWgrAAFoLAABaC4AAWgwAAFoMQABaDIAAWg0AAFoNQABaHQAAWh2AAFoeQABaHsAAWh+AAFofwABaIAAAWiBAAFoggABaIQAAWiGAAFohwABaIgAAWiKAAFoiwABaJ4AAWjdAAFo3wABaOEAAWjjAAFo5gABaOcAAWjoAAFo6QABaOoAAWjsAAFo7gABaO8AAWjwAAFo8gABaPMAAWkYAAFpPAABaWMAAWmHAAFpigABaYwAAWmOAAFpkAABaZIAAWmUAAFplQABaZgAAWmlAAFptAABabYAAWm4AAFpugABabwAAWm+AAFpwAABacIAAWnRAAFp1AABadcAAWnaAAFp3QABaeAAAWnjAAFp5gABaegAAWonAAFqKQABaisAAWotAAFqMAABajEAAWoyAAFqMwABajQAAWo2AAFqOAABajkAAWo6AAFqPAABaj0AAWp8AAFqfgABaoAAAWqCAAFqhQABaoYAAWqHAAFqiAABaokAAWqLAAFqjQABao4AAWqPAAFqkQABapIAAWrRAAFq0wABatUAAWrXAAFq2gABatsAAWrcAAFq3QABat4AAWrgAAFq4gABauMAAWrkAAFq5gABaucAAWsmAAFrKAABayoAAWssAAFrLwABazAAAWsxAAFrMgABazMAAWs1AAFrNwABazgAAWs5AAFrOwABazwAAWt7AAFrfQABa38AAWuBAAFrhAABa4UAAWuGAAFrhwABa4gAAWuKAAFrjAABa40AAWuOAAFrkAABa5EAAWvQAAFr0gABa9QAAWvWAAFr2QABa9oAAWvbAAFr3AABa90AAWvfAAFr4QABa+IAAWvjAAFr5QABa+YAAWwlAAFsJwABbCkAAWwrAAFsLgABbC8AAWwwAAFsMQABbDIAAWw0AAFsNgABbDcAAWw4AAFsOgABbDsAAWyGAAFsqQABbMkAAWzpAAFs6wABbO0AAWzvAAFs8QABbPQAAWz1AAFs9gABbPkAAWz6AAFs/AABbP0AAWz/AAFtAgABbQMAAW0EAAFtBwABbQgAAW0NAAFtGgABbR8AAW0hAAFtIwABbSgAAW0rAAFtLgABbTAAAW1VAAFteQABbaAAAW3EAAFtxwABbckAAW3LAAFtzQABbc8AAW3RAAFt0gABbdUAAW3iAAFt8wABbfUAAW33AAFt+QABbfsAAW39AAFt/wABbgEAAW4DAAFuFAABbhcAAW4aAAFuHQABbiAAAW4jAAFuJgABbikAAW4sAAFuLgABbm0AAW5vAAFucQABbnMAAW52AAFudwABbngAAW55AAFuegABbnwAAW5+AAFufwABboAAAW6CAAFugwABbsIAAW7EAAFuxgABbsgAAW7LAAFuzAABbs0AAW7OAAFuzwABbtEAAW7TAAFu1AABbtUAAW7XAAFu2AABbxcAAW8ZAAFvHAABbx4AAW8hAAFvIgABbyMAAW8kAAFvJQABbycAAW8pAAFvKgABbysAAW8tAAFvLgABbzsAAW88AAFvPQABbz8AAW9+AAFvgAABb4IAAW+EAAFvhwABb4gAAW+JAAFvigABb4sAAW+NAAFvjwABb5AAAW+RAAFvkwABb5QAAW/TAAFv1QABb9cAAW/ZAAFv3AABb90AAW/eAAFv3wABb+AAAW/iAAFv5AABb+UAAW/mAAFv6AABb+kAAXAoAAFwKgABcCwAAXAuAAFwMQABcDIAAXAzAAFwNAABcDUAAXA3AAFwOQABcDoAAXA7AAFwPQABcD4AAXB9AAFwfwABcIEAAXCDAAFwhgABcIcAAXCIAAFwiQABcIoAAXCMAAFwjgABcI8AAXCQAAFwkgABcJMAAXDSAAFw1AABcNYAAXDYAAFw2wABcNwAAXDdAAFw3gABcN8AAXDhAAFw4wABcOQAAXDlAAFw5wABcOgAAXENAAFxMQABcVgAAXF8AAFxfwABcYEAAXGDAAFxhQABcYcAAXGJAAFxigABcY0AAXGaAAFxqQABcasAAXGtAAFxrwABcbEAAXGzAAFxtQABcbcAAXHGAAFxyQABccwAAXHPAAFx0gABcdUAAXHYAAFx2wABcd0AAXIcAAFyHgABciAAAXIiAAFyJQABciYAAXInAAFyKAABcikAAXIrAAFyLQABci4AAXIvAAFyMQABcjIAAXJxAAFycwABcnUAAXJ3AAFyegABcnsAAXJ8AAFyfQABcn4AAXKAAAFyggABcoMAAXKEAAFyhgABcocAAXLGAAFyyAABcsoAAXLMAAFyzwABctAAAXLRAAFy0gABctMAAXLVAAFy1wABctgAAXLZAAFy2wABctwAAXMbAAFzHQABcx8AAXMhAAFzJAABcyUAAXMmAAFzJwABcygAAXMqAAFzLAABcy0AAXMuAAFzMAABczEAAXNwAAFzcgABc3QAAXN2AAFzeQABc3oAAXN7AAFzfAABc30AAXN/AAFzgQABc4IAAXODAAFzhQABc4YAAXPFAAFzxwABc8kAAXPLAAFzzgABc88AAXPQAAFz0QABc9IAAXPUAAFz1gABc9cAAXPYAAFz2gABc9sAAXQaAAF0HAABdB4AAXQgAAF0IwABdCQAAXQlAAF0JgABdCcAAXQpAAF0KwABdCwAAXQtAAF0LwABdDAAAXR7AAF0ngABdL4AAXTeAAF04AABdOIAAXTkAAF05gABdOkAAXTqAAF06wABdO4AAXTvAAF08QABdPIAAXT0AAF09gABdPcAAXT4AAF0+wABdPwAAXUBAAF1DgABdRMAAXUVAAF1FwABdRwAAXUfAAF1IgABdSQAAXVJAAF1bQABdZQAAXW4AAF1uwABdb0AAXW/AAF1wQABdcMAAXXFAAF1xgABdckAAXXWAAF15wABdekAAXXrAAF17QABde8AAXXxAAF18wABdfUAAXX3AAF2CAABdgsAAXYOAAF2EQABdhQAAXYXAAF2GgABdh0AAXYgAAF2IgABdmEAAXZjAAF2ZQABdmcAAXZqAAF2awABdmwAAXZtAAF2bgABdnAAAXZyAAF2cwABdnQAAXZ2AAF2dwABdrYAAXa4AAF2ugABdrwAAXa/AAF2wAABdsEAAXbCAAF2wwABdsUAAXbHAAF2yAABdskAAXbLAAF2zAABdwsAAXcNAAF3EAABdxIAAXcVAAF3FgABdxcAAXcYAAF3GQABdxsAAXcdAAF3HgABdx8AAXchAAF3IgABdy8AAXcwAAF3MQABdzMAAXdyAAF3dAABd3YAAXd4AAF3ewABd3wAAXd9AAF3fgABd38AAXeBAAF3gwABd4QAAXeFAAF3hwABd4gAAXfHAAF3yQABd8sAAXfNAAF30AABd9EAAXfSAAF30wABd9QAAXfWAAF32AABd9kAAXfaAAF33AABd90AAXgcAAF4HgABeCAAAXgiAAF4JQABeCYAAXgnAAF4KAABeCkAAXgrAAF4LQABeC4AAXgvAAF4MQABeDIAAXhxAAF4cwABeHUAAXh3AAF4egABeHsAAXh8AAF4fQABeH4AAXiAAAF4ggABeIMAAXiEAAF4hgABeIcAAXjGAAF4yAABeMoAAXjMAAF4zwABeNAAAXjRAAF40gABeNMAAXjVAAF41wABeNgAAXjZAAF42wABeNwAAXkBAAF5JQABeUwAAXlwAAF5cwABeXUAAXl3AAF5eQABeXsAAXl9AAF5fgABeYEAAXmOAAF5nQABeZ8AAXmhAAF5owABeaUAAXmnAAF5qQABeasAAXm6AAF5vQABecAAAXnDAAF5xgABeckAAXnMAAF5zwABedEAAXoQAAF6EgABehQAAXoWAAF6GQABehoAAXobAAF6HAABeh0AAXofAAF6IQABeiIAAXojAAF6JQABeiYAAXplAAF6ZwABemkAAXprAAF6bgABem8AAXpwAAF6cQABenIAAXp0AAF6dgABencAAXp4AAF6egABensAAXq6AAF6vAABer4AAXrAAAF6wwABesQAAXrFAAF6xgABescAAXrJAAF6ywABesw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AAYZaAAGGWwABhlwAAYZdAAGGXgABhmAAAYZiAAGGYwABhmQAAYZmAAGGZwABhqYAAYaoAAGGqgABhqwAAYavAAGGsAABhrEAAYayAAGGswABhrUAAYa3AAGGuAABhrkAAYa7AAGGvAABhvsAAYb9AAGHAAABhwIAAYcFAAGHBgABhwcAAYcIAAGHCQABhwsAAYcNAAGHDgABhw8AAYcRAAGHEgABhx8AAYcgAAGHIQABhyMAAYdiAAGHZAABh2YAAYdoAAGHawABh2wAAYdtAAGHbgABh28AAYdxAAGHcwABh3QAAYd1AAGHdwABh3gAAYe3AAGHuQABh7sAAYe9AAGHwAABh8EAAYfCAAGHwwABh8QAAYfGAAGHyAABh8kAAYfKAAGHzAABh80AAYgMAAGIDgABiBAAAYgSAAGIFQABiBYAAYgXAAGIGAABiBkAAYgbAAGIHQABiB4AAYgfAAGIIQABiCIAAYhhAAGIYwABiGYAAYhoAAGIawABiGwAAYhtAAGIbgABiG8AAYhxAAGIcwABiHQAAYh1AAGIdwABiHgAAYiMAAGIywABiM0AAYjPAAGI0QABiNQAAYjVAAGI1gABiNcAAYjYAAGI2gABiNwAAYjdAAGI3gABiOAAAYjhAAGJBgABiSoAAYlRAAGJdQABiXgAAYl6AAGJfAABiX4AAYmAAAGJggABiYMAAYmGAAGJkwABiaIAAYmkAAGJpgABiagAAYmqAAGJrAABia4AAYmwAAGJvwABicIAAYnFAAGJyAABicsAAYnOAAGJ0QABidQAAYnWAAGKFQABihcAAYoZAAGKGwABih4AAYofAAGKIAABiiEAAYoiAAGKJAABiiYAAYonAAGKKAABiioAAYorAAGKagABimwAAYpuAAGKcAABinMAAYp0AAGKdQABinYAAYp3AAGKeQABinsAAYp8AAGKfQABin8AAYqAAAGKvwABisEAAYrDAAGKxQABisgAAYrJAAGKygABissAAYrMAAGKzgABitAAAYrRAAGK0gABitQAAYrVAAGLFAABixYAAYsYAAGLGgABix0AAYseAAGLHwABiyAAAYshAAGLIwABiyUAAYsmAAGLJwABiykAAYsqAAGLaQABi2sAAYttAAGLbwABi3IAAYtzAAGLdAABi3UAAYt2AAGLeAABi3oAAYt7AAGLfAABi34AAYt/AAGLvgABi8AAAYvCAAGLxAABi8cAAYvIAAGLyQABi8oAAYvLAAGLzQABi88AAYvQAAGL0QABi9MAAYvUAAGMEwABjBUAAYwXAAGMGQABjBwAAYwdAAGMHgABjB8AAYwgAAGMIgABjCQAAYwlAAGMJgABjCgAAYwpAAGMdAABjJcAAYy3AAGM1wABjNkAAYzbAAGM3QABjN8AAYziAAGM4wABjOQAAYznAAGM6AABjOoAAYzrAAGM7QABjPAAAYzxAAGM8gABjPUAAYz2AAGM+wABjQgAAY0NAAGNDwABjREAAY0WAAGNGQABjRwAAY0eAAGNQwABjWcAAY2OAAGNsgABjbUAAY23AAGNuQABjbsAAY29AAGNvwABjcAAAY3DAAGN0AABjeEAAY3jAAGN5QABjecAAY3pAAGN6wABje0AAY3vAAGN8QABjgIAAY4FAAGOCAABjgsAAY4OAAGOEQABjhQAAY4XAAGOGgABjhwAAY5bAAGOXQABjl8AAY5hAAGOZAABjmUAAY5mAAGOZwABjmgAAY5qAAGObAABjm0AAY5uAAGOcAABjnEAAY6wAAGOsgABjrQAAY62AAGOuQABjroAAY67AAGOvAABjr0AAY6/AAGOwQABjsIAAY7DAAGOxQABjsYAAY8FAAGPBwABjwoAAY8MAAGPDwABjxAAAY8RAAGPEgABjxMAAY8VAAGPFwABjxgAAY8ZAAGPGwABjxwAAY8pAAGPKgABjysAAY8tAAGPbAABj24AAY9wAAGPcgABj3UAAY92AAGPdwABj3gAAY95AAGPewABj30AAY9+AAGPfwABj4EAAY+CAAGPwQABj8MAAY/FAAGPxwABj8oAAY/LAAGPzAABj80AAY/OAAGP0AABj9IAAY/TAAGP1AABj9YAAY/XAAGQFgABkBgAAZAaAAGQHAABkB8AAZAgAAGQIQABkCIAAZAjAAGQJQABkCcAAZAoAAGQKQABkCsAAZAsAAGQawABkG0AAZBwAAGQcgABkHUAAZB2AAGQdwABkHgAAZB5AAGQewABkH0AAZB+AAGQfwABkIEAAZCCAAGQkQABkNAAAZDSAAGQ1AABkNYAAZDZAAGQ2gABkNsAAZDcAAGQ3QABkN8AAZDhAAGQ4gABkOMAAZDlAAGQ5gABkQsAAZEvAAGRVgABkXoAAZF9AAGRfwABkYEAAZGDAAGRhQABkYcAAZGIAAGRiwABkZgAAZGnAAGRqQABkasAAZGtAAGRrwABkbEAAZGzAAGRtQABkcQAAZHHAAGRygABkc0AAZHQAAGR0wABkdYAAZHZAAGR2wABkhoAAZIcAAGSHgABkiAAAZIjAAGSJAABkiUAAZImAAGSJwABkikAAZIrAAGSLAABki0AAZIvAAGSMAABkm8AAZJxAAGScwABknUAAZJ4AAGSeQABknoAAZJ7AAGSfAABkn4AAZKAAAGSgQABkoIAAZKEAAGShQABksQAAZLGAAGSyAABksoAAZLNAAGSzgABks8AAZLQAAGS0QABktMAAZLVAAGS1gABktcAAZLZAAGS2gABkxkAAZMbAAGTHQABkx8AAZMiAAGTIwABkyQAAZMlAAGTJgABkygAAZMqAAGTKwABkywAAZMuAAGTLwABk24AAZNwAAGTcgABk3QAAZN3AAGTeAABk3kAAZN6AAGTewABk30AAZN/AAGTgAABk4EAAZODAAGThAABk8MAAZPFAAGTxwABk8kAAZPMAAGTzQABk84AAZPPAAGT0AABk9IAAZPUAAGT1QABk9YAAZPYAAGT2QABlBgAAZQaAAGUHAABlB4AAZQhAAGUIgABlCMAAZQkAAGUJQABlCcAAZQpAAGUKgABlCsAAZQtAAGULgABlHkAAZScAAGUvAABlNwAAZTeAAGU4AABlOIAAZTkAAGU5wABlOgAAZTpAAGU7AABlO0AAZTvAAGU8AABlPIAAZT1AAGU9gABlPcAAZT6AAGU+wABlQAAAZUNAAGVEgABlRQAAZUWAAGVGwABlR4AAZUhAAGVIwABlUgAAZVsAAGVkwABlbcAAZW6AAGVvAABlb4AAZXAAAGVwgABlcQAAZXFAAGVyAABldUAAZXmAAGV6AABleoAAZXsAAGV7gABlfAAAZXyAAGV9AABlfYAAZYHAAGWCgABlg0AAZYQAAGWEwABlhYAAZYZAAGWHAABlh8AAZYhAAGWYAABlmIAAZZkAAGWZgABlmkAAZZqAAGWawABlmwAAZZtAAGWbwABlnEAAZZyAAGWcwABlnUAAZZ2AAGWtQABlrcAAZa5AAGWuwABlr4AAZa/AAGWwAABlsEAAZbCAAGWxAABlsYAAZbHAAGWyAABlsoAAZbLAAGXCgABlwwAAZcPAAGXEQABlxQAAZcVAAGXFgABlxcAAZcYAAGXGgABlxwAAZcdAAGXHgABlyAAAZchAAGXLgABly8AAZcwAAGXMgABl3EAAZdzAAGXdQABl3cAAZd6AAGXewABl3wAAZd9AAGXfgABl4AAAZeCAAGXgwABl4QAAZeGAAGXhwABl8YAAZfIAAGXygABl8wAAZfPAAGX0AABl9EAAZfSAAGX0wABl9UAAZfXAAGX2AABl9kAAZfbAAGX3AABmBsAAZgdAAGYHwABmCEAAZgkAAGYJQABmCYAAZgnAAGYKAABmCoAAZgsAAGYLQABmC4AAZgwAAGYMQABmHAAAZhyAAGYdQABmHcAAZh6AAGYewABmHwAAZh9AAGYfgABmIAAAZiCAAGYgwABmIQAAZiGAAGYhwABmJsAAZjaAAGY3AABmN4AAZjgAAGY4wABmOQAAZjlAAGY5gABmOcAAZjpAAGY6wABmOwAAZjtAAGY7wABmPAAAZkVAAGZOQABmWAAAZmEAAGZhwABmYkAAZmLAAGZjQABmY8AAZmRAAGZkgABmZUAAZmiAAGZsQABmbMAAZm1AAGZtwABmbkAAZm7AAGZvQABmb8AAZnOAAGZ0QABmdQAAZnXAAGZ2gABmd0AAZngAAGZ4wABmeUAAZokAAGaJgABmigAAZoqAAGaLQABmi4AAZovAAGaMAABmjEAAZozAAGaNQABmjYAAZo3AAGaOQABmjoAAZp5AAGaewABmn0AAZp/AAGaggABmoMAAZqEAAGahQABmoYAAZqIAAGaigABmosAAZqMAAGajgABmo8AAZrOAAGa0AABmtIAAZrUAAGa1wABmtgAAZrZAAGa2gABmtsAAZrdAAGa3wABmuAAAZrhAAGa4wABmuQAAZsjAAGbJQABmycAAZspAAGbLAABmy0AAZsuAAGbLwABmzAAAZsyAAGbNAABmzUAAZs2AAGbOAABmzkAAZt4AAGbegABm3wAAZt+AAGbgQABm4IAAZuDAAGbhAABm4UAAZuHAAGbiQABm4oAAZuLAAGbjQABm44AAZvNAAGbzwABm9EAAZvTAAGb1gABm9cAAZvYAAGb2QABm9oAAZvcAAGb3gABm98AAZvgAAGb4gABm+MAAZwiAAGcJAABnCYAAZwoAAGcKwABnCwAAZwtAAGcLgABnC8AAZwxAAGcMwABnDQAAZw1AAGcNwABnDgAAZyDAAGcpgABnMYAAZzmAAGc6AABnOoAAZzsAAGc7gABnPEAAZzyAAGc8wABnPYAAZz3AAGc+QABnPoAAZz8AAGc/wABnQAAAZ0BAAGdBAABnQUAAZ0KAAGdFwABnRwAAZ0eAAGdIAABnSUAAZ0oAAGdKwABnS0AAZ1SAAGddgABnZ0AAZ3BAAGdxAABncYAAZ3IAAGdygABncwAAZ3OAAGdzwABndIAAZ3fAAGd8AABnfIAAZ30AAGd9gABnfgAAZ36AAGd/AABnf4AAZ4AAAGeEQABnhQAAZ4XAAGeGgABnh0AAZ4gAAGeIwABniYAAZ4pAAGeKwABnmoAAZ5sAAGebgABnnAAAZ5zAAGedAABnnUAAZ52AAGedwABnnkAAZ57AAGefAABnn0AAZ5/AAGegAABnr8AAZ7BAAGewwABnsUAAZ7IAAGeyQABnsoAAZ7LAAGezAABns4AAZ7QAAGe0QABntIAAZ7UAAGe1QABnxQAAZ8WAAGfGQABnxsAAZ8eAAGfHwABnyAAAZ8hAAGfIgABnyQAAZ8mAAGfJwABnygAAZ8qAAGfKwABnzgAAZ85AAGfOgABnzwAAZ97AAGffQABn38AAZ+BAAGfhAABn4UAAZ+GAAGfhwABn4gAAZ+KAAGfjAABn40AAZ+OAAGfkAABn5EAAZ/QAAGf0gABn9QAAZ/WAAGf2QABn9oAAZ/bAAGf3AABn90AAZ/fAAGf4QABn+IAAZ/jAAGf5QABn+YAAaAlAAGgJwABoCkAAaArAAGgLgABoC8AAaAwAAGgMQABoDIAAaA0AAGgNgABoDcAAaA4AAGgOgABoDsAAaB6AAGgfAABoH4AAaCAAAGggwABoIQAAaCFAAGghgABoIcAAaCJAAGgiwABoIwAAaCNAAGgjwABoJAAAaDPAAGg0QABoNMAAaDVAAGg2AABoNkAAaDaAAGg2wABoNwAAaDeAAGg4AABoOEAAaDiAAGg5AABoOUAAaEKAAGhLgABoVUAAaF5AAGhfAABoX4AAaGAAAGhggABoYQAAaGGAAGhhwABoYoAAaGXAAGhpgABoagAAaGqAAGhrAABoa4AAaGwAAGhsgABobQAAaHDAAGhxgABockAAaHMAAGhzwABodIAAaHVAAGh2AABodoAAaIZAAGiGwABoh0AAaIfAAGiIgABoiMAAaIkAAGiJQABoiYAAaIoAAGiKgABoisAAaIsAAGiLgABoi8AAaJuAAGicAABonIAAaJ0AAGidwABongAAaJ5AAGiegABonsAAaJ9AAGifwABooAAAaKBAAGigwABooQAAaLDAAGixQABoscAAaLJAAGizAABos0AAaLOAAGizwABotAAAaLSAAGi1AABotUAAaLWAAGi2AABotkAAaMYAAGjGgABoxwAAaMeAAGjIQABoyIAAaMjAAGjJAABoyUAAaMnAAGjKQABoyoAAaMrAAGjLQABoy4AAaNtAAGjbwABo3EAAaNzAAGjdgABo3cAAaN4AAGjeQABo3oAAaN8AAGjfgABo38AAaOAAAGjggABo4MAAaPCAAGjxAABo8YAAaPIAAGjywABo8wAAaPNAAGjzgABo88AAaPRAAGj0wABo9QAAaPVAAGj1wABo9gAAaQXAAGkGQABpBsAAaQdAAGkIAABpCEAAaQiAAGkIwABpCQAAaQmAAGkKAABpCkAAaQqAAGkLAABpC0AAaR4AAGkmwABpLsAAaTbAAGk3QABpN8AAaThAAGk4wABpOYAAaTnAAGk6AABpOsAAaTsAAGk7gABpO8AAaTxAAGk9AABpPUAAaT2AAGk+QABpPoAAaT/AAGlDAABpREAAaUTAAGlFQABpRoAAaUdAAGlIAABpSIAAaVHAAGlawABpZIAAaW2AAGluQABpbsAAaW9AAGlvwABpcEAAaXDAAGlxAABpccAAaXUAAGl5QABpecAAaXpAAGl6wABpe0AAaXvAAGl8QABpfMAAaX1AAGmBgABpgkAAaYMAAGmDwABphIAAaYVAAGmGAABphsAAaYeAAGmIAABpl8AAaZhAAGmYwABpmUAAaZoAAGmaQABpmoAAaZrAAGmbAABpm4AAaZwAAGmcQABpnIAAaZ0AAGmdQABprQAAaa2AAGmuAABproAAaa9AAGmvgABpr8AAabAAAGmwQABpsMAAabFAAGmxgABpscAAabJAAGmygABpwkAAacLAAGnDgABpxAAAacTAAGnFAABpxUAAacWAAGnFwABpxkAAacbAAGnHAABpx0AAacfAAGnIAABpy0AAacuAAGnLwABpzEAAadwAAGncgABp3QAAad2AAGneQABp3oAAad7AAGnfAABp30AAad/AAGngQABp4IAAaeDAAGnhQABp4YAAafFAAGnxwABp8kAAafLAAGnzgABp88AAafQAAGn0QABp9IAAafUAAGn1gABp9cAAafYAAGn2gABp9sAAagaAAGoHAABqB4AAaggAAGoIwABqCQAAaglAAGoJgABqCcAAagpAAGoKwABqCwAAagtAAGoLwABqDAAAahvAAGocQABqHMAAah1AAGoeAABqHkAAah6AAGoewABqHwAAah+AAGogAABqIEAAaiCAAGohAABqIUAAajEAAGoxgABqMgAAajKAAGozQABqM4AAajPAAGo0AABqNEAAajTAAGo1QABqNYAAajXAAGo2QABqNoAAaj/AAGpIwABqUoAAaluAAGpcQABqXMAAal1AAGpdwABqXkAAal7AAGpfAABqX8AAamMAAGpmwABqZ0AAamfAAGpoQABqaMAAamlAAGppwABqakAAam4AAGpuwABqb4AAanBAAGpxAABqccAAanKAAGpzQABqc8AAaoOAAGqEAABqhIAAaoUAAGqFwABqhgAAaoZAAGqGgABqhsAAaodAAGqHwABqiAAAaohAAGqIwABqiQAAapjAAGqZQABqmcAAappAAGqbAABqm0AAapuAAGqbwABqnAAAapyAAGqdAABqnUAAap2AAGqeAABqnkAAaq4AAGqugABqrwAAaq+AAGqwQABqsIAAarDAAGqxAABqsUAAarHAAGqyQABqsoAAarLAAGqzQABqs4AAasNAAGrDwABqxEAAasTAAGrFgABqxcAAasYAAGrGQABqxoAAascAAGrHgABqx8AAasgAAGrIgABqyMAAatiAAGrZAABq2YAAatoAAGrawABq2wAAattAAGrbgABq28AAatxAAGrcwABq3QAAat1AAGrdwABq3gAAau3AAGruQABq7sAAau9AAGrwAABq8EAAavCAAGrwwABq8QAAavGAAGryAABq8kAAavKAAGrzAABq80AAawMAAGsDgABrBAAAawSAAGsFQABrBYAAawXAAGsGAABrBkAAawbAAGsHQABrB4AAawfAAGsIQABrCIAAaxtAAGskAABrLAAAazQAAGs0gABrNQAAazWAAGs2AABrNsAAazcAAGs3QABrOAAAazhAAGs4wABrOQAAazmAAGs6QABrOoAAazrAAGs7gABrO8AAaz0AAGtAQABrQYAAa0IAAGtCgABrQ8AAa0SAAGtFQABrRcAAa08AAGtYAABrYcAAa2rAAGtrgABrbAAAa2yAAGttAABrbYAAa24AAGtuQABrbwAAa3JAAGt2gABrdwAAa3eAAGt4AABreIAAa3kAAGt5gABregAAa3qAAGt+wABrf4AAa4BAAGuBAABrgcAAa4KAAGuDQABrhAAAa4TAAGuFQABrlQAAa5WAAGuWAABrloAAa5dAAGuXgABrl8AAa5gAAGuYQABrmMAAa5lAAGuZgABrmcAAa5pAAGuagABrqkAAa6rAAGurQABrq8AAa6yAAGuswABrrQAAa61AAGutgABrrgAAa66AAGuuwABrrwAAa6+AAGuvwABrv4AAa8AAAGvAwABrwUAAa8IAAGvCQABrwoAAa8LAAGvDAABrw4AAa8QAAGvEQABrxIAAa8UAAGvFQABryIAAa8jAAGvJAABryYAAa9lAAGvZwABr2kAAa9rAAGvbgABr28AAa9wAAGvcQABr3IAAa90AAGvdgABr3cAAa94AAGvegABr3sAAa+6AAGvvAABr74AAa/AAAGvwwABr8QAAa/FAAGvxgABr8cAAa/JAAGvywABr8wAAa/NAAGvzwABr9AAAbAPAAGwEQABsBMAAbAVAAGwGAABsBkAAbAaAAGwGwABsBwAAbAeAAGwIAABsCEAAbAiAAGwJAABsCUAAbBkAAGwZgABsGgAAbBqAAGwbQABsG4AAbBvAAGwcAABsHEAAbBzAAGwdQABsHYAAbB3AAGweQABsHoAAbC5AAGwuwABsL0AAbC/AAGwwgABsMMAAbDEAAGwxQABsMYAAbDIAAGwygABsMsAAbDMAAGwzgABsM8AAbD0AAGxGAABsT8AAbFjAAGxZgABsWgAAbFqAAGxbAABsW4AAbFwAAGxcQABsXQAAbGBAAGxkAABsZIAAbGUAAGxlgABsZgAAbGaAAGxnAABsZ4AAbGtAAGxsAABsbMAAbG2AAGxuQABsbwAAbG/AAGxwgABscQAAbIDAAGyBQABsgcAAbIJAAGyDAABsg0AAbIOAAGyDwABshAAAbISAAGyFAABshUAAbIWAAGyGAABshkAAbJYAAGyWgABslwAAbJeAAGyYQABsmIAAbJjAAGyZAABsmUAAbJnAAGyaQABsmoAAbJrAAGybQABsm4AAbKtAAGyrwABsrEAAbKzAAGytgABsrcAAbK4AAGyuQABsroAAbK8AAGyvgABsr8AAbLAAAGywgABssMAAbMCAAGzBAABswcAAbMJAAGzDAABsw0AAbMOAAGzDwABsxAAAbMSAAGzFAABsxUAAbMWAAGzGAABsxkAAbNYAAGzWgABs1wAAbNeAAGzYQABs2IAAbNjAAGzZAABs2UAAbNnAAGzaQABs2oAAbNrAAGzbQABs24AAbOtAAGzrwABs7EAAbOzAAGztgABs7cAAbO4AAGzuQABs7oAAbO8AAGzvgABs78AAbPAAAGzwgABs8MAAbQCAAG0BAABtAcAAbQJAAG0DAABtA0AAbQOAAG0DwABtBAAAbQSAAG0FAABtBUAAbQWAAG0GAABtBkAAbRkAAG0hwABtKcAAbTHAAG0yQABtMsAAbTNAAG0zwABtNIAAbTTAAG01AABtNcAAbTYAAG02gABtNsAAbTdAAG04AABtOEAAbTiAAG05QABtOYAAbTrAAG0+AABtP0AAbT/AAG1AQABtQYAAbUJAAG1DAABtQ4AAbUzAAG1VwABtX4AAbWiAAG1pQABtacAAbWpAAG1qwABta0AAbWvAAG1sAABtbMAAbXAAAG10QABtdMAAbXVAAG11wABtdkAAbXbAAG13QABtd8AAbXhAAG18gABtfUAAbX4AAG1+wABtf4AAbYBAAG2BAABtgcAAbYKAAG2DAABtksAAbZNAAG2TwABtlEAAbZUAAG2VQABtlYAAbZXAAG2WAABtloAAbZcAAG2XQABtl4AAbZgAAG2YQABtqAAAbaiAAG2pAABtqYAAbapAAG2qgABtqsAAbasAAG2rQABtq8AAbaxAAG2sgABtrMAAba1AAG2tgABtvUAAbb3AAG2+gABtvwAAbb/AAG3AAABtwEAAbcCAAG3AwABtwUAAbcHAAG3CAABtwkAAbcLAAG3DAABtxkAAbcaAAG3GwABtx0AAbdcAAG3XgABt2AAAbdiAAG3ZQABt2YAAbdnAAG3aAABt2kAAbdrAAG3bQABt24AAbdvAAG3cQABt3IAAbexAAG3swABt7UAAbe3AAG3ugABt7sAAbe8AAG3vQABt74AAbfAAAG3wgABt8MAAbfEAAG3xgABt8cAAbgGAAG4CAABuAoAAbgMAAG4DwABuBAAAbgRAAG4EgABuBMAAbgVAAG4FwABuBgAAbgZAAG4GwABuBwAAbhbAAG4XQABuF8AAbhhAAG4ZAABuGUAAbhmAAG4ZwABuGgAAbhqAAG4bAABuG0AAbhuAAG4cAABuHEAAbiwAAG4sgABuLQAAbi2AAG4uQABuLoAAbi7AAG4vAABuL0AAbi/AAG4wQABuMIAAbjDAAG4xQABuMYAAbjrAAG5DwABuTYAAblaAAG5XQABuV8AAblhAAG5YwABuWUAAblnAAG5aAABuWsAAbl4AAG5hwABuYkAAbmLAAG5jQABuY8AAbmRAAG5kwABuZUAAbmkAAG5pwABuaoAAbmtAAG5sAABubMAAbm2AAG5uQABubsAAbn6AAG5/AABuf4AAboAAAG6AwABugQAAboFAAG6BgABugcAAboJAAG6CwABugwAAboNAAG6DwABuhAAAbpPAAG6UQABulMAAbpVAAG6WAABulkAAbpaAAG6WwABulwAAbpeAAG6YAABumEAAbpiAAG6ZAABumUAAbqkAAG6pgABuqgAAbqqAAG6rQABuq4AAbqvAAG6sAABurEAAbqzAAG6tQABurYAAbq3AAG6uQABuroAAbr5AAG6+wABuv4AAbsAAAG7AwABuwQAAbsFAAG7BgABuwcAAbsJAAG7CwABuwwAAbsNAAG7DwABuxAAAbtPAAG7UQABu1MAAbtVAAG7WAABu1kAAbtaAAG7WwABu1wAAbteAAG7YAABu2EAAbtiAAG7ZAABu2UAAbukAAG7pgABu6gAAbuqAAG7rQABu64AAbuvAAG7sAABu7EAAbuzAAG7tQABu7YAAbu3AAG7uQABu7oAAbv5AAG7+wABu/4AAbwAAAG8AwABvAQAAbwFAAG8BgABvAcAAbwJAAG8CwABvAwAAbwNAAG8DwABvBAAAbxbAAG8fgABvJ4AAby+AAG8wAABvMIAAbzEAAG8xgABvMkAAbzKAAG8ywABvM4AAbzPAAG80QABvNIAAbzUAAG81wABvNgAAbzZAAG83AABvN0AAbziAAG87wABvPQAAbz2AAG8+AABvP0AAb0AAAG9AwABvQUAAb0qAAG9TgABvXUAAb2ZAAG9nAABvZ4AAb2gAAG9ogABvaQAAb2mAAG9pwABvaoAAb23AAG9yAABvcoAAb3MAAG9zgABvdAAAb3SAAG91AABvdYAAb3YAAG96QABvewAAb3vAAG98gABvfUAAb34AAG9+wABvf4AAb4BAAG+AwABvkIAAb5EAAG+RgABvkgAAb5LAAG+TAABvk0AAb5OAAG+TwABvlEAAb5TAAG+VAABvlUAAb5XAAG+WAABvpcAAb6ZAAG+mwABvp0AAb6gAAG+oQABvqIAAb6jAAG+pAABvqYAAb6oAAG+qQABvqoAAb6sAAG+rQABvuwAAb7uAAG+8QABvvMAAb72AAG+9wABvvgAAb75AAG++gABvvwAAb7+AAG+/wABvwAAAb8CAAG/AwABvxAAAb8RAAG/EgABvxQAAb9TAAG/VQABv1cAAb9ZAAG/XAABv10AAb9eAAG/XwABv2AAAb9iAAG/ZAABv2UAAb9mAAG/aAABv2kAAb+oAAG/qgABv6wAAb+uAAG/sQABv7IAAb+zAAG/tAABv7UAAb+3AAG/uQABv7oAAb+7AAG/vQABv74AAb/9AAG//wABwAEAAcADAAHABgABwAcAAcAIAAHACQABwAoAAcAMAAHADgABwA8AAcAQAAHAEgABwBMAAcBSAAHAVAABwFcAAcBZAAHAXAABwF0AAcBeAAHAXwABwGAAAcBiAAHAZAABwGUAAcBmAAHAaAABwGkAAcB3AAHAtgABwLgAAcC6AAHAvAABwL8AAcDAAAHAwQABwMIAAcDDAAHAxQABwMcAAcDIAAHAyQABwMsAAcDMAAHA8QABwRUAAcE8AAHBYAABwWMAAcFlAAHBZwABwWkAAcFrAAHBbQABwW4AAcFxAAHBfgABwY0AAcGPAAHBkQABwZMAAcGVAAHBlwABwZkAAcGbAAHBqgABwa0AAcGwAAHBswABwbYAAcG5AAHBvAABwb8AAcHBAAHCAAABwgIAAcIEAAHCBgABwgkAAcIKAAHCCwABwgwAAcINAAHCDwABwhEAAcISAAHCEwABwhUAAcIWAAHCVQABwlcAAcJZAAHCWwABwl4AAcJfAAHCYAABwmEAAcJiAAHCZAABwmYAAcJnAAHCaAABwmoAAcJrAAHCqgABwqwAAcKuAAHCsAABwrMAAcK0AAHCtQABwrYAAcK3AAHCuQABwrsAAcK8AAHCvQABwr8AAcLAAAHC/wABwwEAAcMDAAHDBQABwwgAAcMJAAHDCgABwwsAAcMMAAHDDgABwxAAAcMRAAHDEgABwxQAAcMVAAHDVAABw1YAAcNYAAHDWgABw10AAcNeAAHDXwABw2AAAcNhAAHDYwABw2UAAcNmAAHDZwABw2kAAcNqAAHDqQABw6sAAcOtAAHDrwABw7IAAcOzAAHDtAABw7UAAcO2AAHDuAABw7oAAcO7AAHDvAABw74AAcO/AAHD/gABxAAAAcQCAAHEBAABxAcAAcQIAAHECQABxAoAAcQLAAHEDQABxA8AAcQQAAHEEQABxBMAAcQUAAHEXwABxIIAAcSiAAHEwgABxMQAAcTGAAHEyAABxMoAAcTNAAHEzgABxM8AAcTSAAHE0wABxNUAAcTWAAHE2AABxNsAAcTcAAHE3QABxOAAAcThAAHE6gABxPcAAcT8AAHE/gABxQAAAcUFAAHFCAABxQsAAcUNAAHFMgABxVYAAcV9AAHFoQABxaQAAcWmAAHFqAABxaoAAcWsAAHFrgABxa8AAcWyAAHFvwABxdAAAcXSAAHF1AABxdYAAcXYAAHF2gABxdwAAcXeAAHF4AABxfEAAcX0AAHF9wABxfoAAcX9AAHGAAABxgMAAcYGAAHGCQABxgsAAcZKAAHGTAABxk4AAcZQAAHGUwABxlQAAcZVAAHGVgABxlcAAcZZAAHGWwABxlwAAcZdAAHGXwABxmAAAcafAAHGoQABxqMAAcalAAHGqAABxqkAAcaqAAHGqwABxqwAAcauAAHGsAABxrEAAcayAAHGtAABxrUAAcb0AAHG9gABxvkAAcb7AAHG/gABxv8AAccAAAHHAQABxwIAAccEAAHHBgABxwcAAccIAAHHCgABxwsAAccYAAHHGQABxxoAAcccAAHHWwABx10AAcdfAAHHYQABx2QAAcdlAAHHZgABx2cAAcdoAAHHagABx2wAAcdtAAHHbgABx3AAAcdxAAHHsAABx7IAAce0AAHHtgABx7kAAce6AAHHuwABx7wAAce9AAHHvwABx8EAAcfCAAHHwwABx8UAAcfGAAHIBQAByAcAAcgJAAHICwAByA4AAcgPAAHIEAAByBEAAcgSAAHIFAAByBYAAcgXAAHIGAAByBoAAcgbAAHIWgAByFwAAcheAAHIYAAByGMAAchkAAHIZQAByGYAAchnAAHIaQAByGsAAchsAAHIbQAByG8AAchwAAHIrwAByLEAAcizAAHItQAByLgAAci5AAHIugAByLsAAci8AAHIvgAByMAAAcjBAAHIwgAByMQAAcjFAAHI6gAByQ4AAck1AAHJWQAByVwAAcleAAHJYAAByWIAAclkAAHJZgAByWcAAclqAAHJdwAByYYAAcmIAAHJigAByYwAAcmOAAHJkAAByZIAAcmUAAHJowAByaYAAcmpAAHJrAABya8AAcmyAAHJtQABybgAAcm6AAHJ+QAByfsAAcn9AAHJ/wABygIAAcoDAAHKBAABygUAAcoGAAHKCAABygoAAcoLAAHKDAAByg4AAcoPAAHKTgABylAAAcpSAAHKVAABylcAAcpYAAHKWQAByloAAcpbAAHKXQAByl8AAcpgAAHKYQABymMAAcpkAAHKowAByqUAAcqnAAHKqQAByqwAAcqtAAHKrgAByq8AAcqwAAHKsgAByrQAAcq1AAHKtgAByrgAAcq5AAHK+AAByvoAAcr8AAHK/gABywEAAcsCAAHLAwABywQAAcsFAAHLBwABywkAAcsKAAHLCwAByw0AAcsOAAHLTQABy08AActRAAHLUwABy1YAActXAAHLWAABy1kAActaAAHLXAABy14AActfAAHLYAABy2IAActjAAHLogABy6QAAcumAAHLqAABy6sAAcusAAHLrQABy64AAcuvAAHLsQABy7MAAcu0AAHLtQABy7cAAcu4AAHL9wABy/kAAcv7AAHL/QABzAAAAcwBAAHMAgABzAMAAcwEAAHMBgABzAgAAcwJAAHMCgABzAwAAcwNAAHMWAABzHsAAcybAAHMuwABzL0AAcy/AAHMwQABzMMAAczGAAHMxwABzMgAAczLAAHMzAABzM4AAczPAAHM0QABzNQAAczVAAHM1gABzNkAAczaAAHM3wABzOwAAczxAAHM8wABzPUAAcz6AAHM/QABzQAAAc0CAAHNJwABzUsAAc1yAAHNlgABzZkAAc2bAAHNnQABzZ8AAc2hAAHNowABzaQAAc2nAAHNtAABzcUAAc3HAAHNyQABzcsAAc3NAAHNzwABzdEAAc3TAAHN1QABzeYAAc3pAAHN7AABze8AAc3yAAHN9QABzfgAAc37AAHN/gABzgAAAc4/AAHOQQABzkMAAc5FAAHOSAABzkkAAc5KAAHOSwABzkwAAc5OAAHOUAABzlEAAc5SAAHOVAABzlUAAc6UAAHOlgABzpgAAc6aAAHOnQABzp4AAc6fAAHOoAABzqEAAc6jAAHOpQABzqYAAc6nAAHOqQABzqoAAc7pAAHO6wABzu4AAc7wAAHO8wABzvQAAc71AAHO9gABzvcAAc75AAHO+wABzvwAAc79AAHO/wABzwAAAc8NAAHPDgABzw8AAc8RAAHPUAABz1IAAc9UAAHPVgABz1kAAc9aAAHPWwABz1wAAc9dAAHPXwABz2EAAc9iAAHPYwABz2UAAc9mAAHPpQABz6cAAc+pAAHPqwABz64AAc+vAAHPsAABz7EAAc+yAAHPtAABz7YAAc+3AAHPuAABz7oAAc+7AAHP+gABz/wAAc/+AAHQAAAB0AMAAdAEAAHQBQAB0AYAAdAHAAHQCQAB0AsAAdAMAAHQDQAB0A8AAdAQAAHQTwAB0FEAAdBTAAHQVQAB0FgAAdBZAAHQWgAB0FsAAdBcAAHQXgAB0GAAAdBhAAHQYgAB0GQAAdBlAAHQpAAB0KYAAdCoAAHQqgAB0K0AAdCuAAHQrwAB0LAAAdCxAAHQswAB0LUAAdC2AAHQtwAB0LkAAdC6AAHQ3wAB0QMAAdEqAAHRTgAB0VEAAdFTAAHRVQAB0VcAAdFZAAHRWwAB0VwAAdFfAAHRbAAB0XsAAdF9AAHRfwAB0YEAAdGDAAHRhQAB0YcAAdGJAAHRmAAB0ZsAAdGeAAHRoQAB0aQAAdGnAAHRqgAB0a0AAdGvAAHR7gAB0fAAAdHyAAHR9AAB0fcAAdH4AAHR+QAB0foAAdH7AAHR/QAB0f8AAdIAAAHSAQAB0gMAAdIEAAHSQwAB0kUAAdJHAAHSSQAB0kwAAdJNAAHSTgAB0k8AAdJQAAHSUgAB0lQAAdJVAAHSVgAB0lgAAdJZAAHSmAAB0poAAdKcAAHSngAB0qEAAdKiAAHSowAB0qQAAdKlAAHSpwAB0qkAAdKqAAHSqwAB0q0AAdKuAAHS7QAB0u8AAdLxAAHS8wAB0vYAAdL3AAHS+AAB0vkAAdL6AAHS/AAB0v4AAdL/AAHTAAAB0wIAAdMDAAHTQgAB00QAAdNGAAHTSAAB00sAAdNMAAHTTQAB004AAdNPAAHTUQAB01MAAdNUAAHTVQAB01cAAdNYAAHTlwAB05kAAdObAAHTnQAB06AAAdOhAAHTogAB06MAAdOkAAHTpgAB06gAAdOpAAHTqgAB06wAAdOtAAHT7AAB0+4AAdPwAAHT8gAB0/UAAdP2AAHT9wAB0/gAAdP5AAHT+wAB0/0AAdP+AAHT/wAB1AEAAdQCAAHUCwAB1AwAAdQOAAHUTQAB1E8AAdRRAAHUUwAB1FYAAdRXAAHUWAAB1FkAAdRaAAHUXAAB1F4AAdRfAAHUYAAB1GIAAdRjAAHUogAB1KQAAdSmAAHUqAAB1KsAAdSsAAHUrQAB1K4AAdSvAAHUsQAB1LMAAdS0AAHUtQAB1LcAAdS4AAHU9wAB1PkAAdT8AAHU/gAB1QEAAdUCAAHVAwAB1QQAAdUFAAHVBwAB1QkAAdUKAAHVCwAB1Q0AAdUOAAHVFwAB1RgAAdUaAAHVWQAB1VsAAdVdAAHVXwAB1WIAAdVjAAHVZAAB1WUAAdVmAAHVaAAB1WoAAdVrAAHVbAAB1W4AAdVvAAHVrgAB1bAAAdWyAAHVtAAB1bcAAdW4AAHVuQAB1boAAdW7AAHVvQAB1b8AAdXAAAHVwQAB1cMAAdXEAAHWAwAB1gUAAdYIAAHWCgAB1g0AAdYOAAHWDwAB1hAAAdYRAAHWEwAB1hUAAdYWAAHWFwAB1hkAAdYaAAHWZQAB1ogAAdaoAAHWyAAB1soAAdbMAAHWzgAB1tAAAdbSAAHW0wAB1tQAAdbXAAHW2AAB1toAAdbbAAHW3QAB1t8AAdbgAAHW4QAB1uQAAdblAAHW6gAB1vcAAdb8AAHW/gAB1wAAAdcFAAHXCAAB1wsAAdcNAAHXMgAB11YAAdd9AAHXoQAB16QAAdemAAHXqAAB16oAAdesAAHXrgAB168AAdeyAAHXvwAB19AAAdfSAAHX1AAB19YAAdfYAAHX2gAB19wAAdfeAAHX4AAB1/EAAdf0AAHX9wAB1/oAAdf9AAHYAAAB2AMAAdgGAAHYCQAB2AsAAdhKAAHYTAAB2E4AAdhQAAHYUwAB2FQAAdhVAAHYVgAB2FcAAdhZAAHYWwAB2FwAAdhdAAHYXwAB2GAAAdifAAHYoQAB2KMAAdilAAHYqAAB2KkAAdiqAAHYqwAB2KwAAdiuAAHYsAAB2LEAAdiyAAHYtAAB2LUAAdj0AAHY9gAB2PkAAdj7AAHY/gAB2P8AAdkAAAHZAQAB2QIAAdkEAAHZBgAB2QcAAdkIAAHZCgAB2QsAAdkYAAHZGQAB2RoAAdkcAAHZWwAB2V0AAdlfAAHZYQAB2WQAAdllAAHZZgAB2WcAAdloAAHZagAB2WwAAdltAAHZbgAB2XAAAdlxAAHZsAAB2bIAAdm0AAHZtgAB2bkAAdm6AAHZuwAB2bwAAdm9AAHZvwAB2cEAAdnCAAHZwwAB2cUAAdnGAAHaBQAB2gcAAdoJAAHaCwAB2g4AAdoPAAHaEAAB2hEAAdoSAAHaFAAB2hYAAdoXAAHaGAAB2hoAAdobAAHaWgAB2lwAAdpeAAHaYAAB2mMAAdpkAAHaZQAB2mYAAdpnAAHaaQAB2msAAdpsAAHabQAB2m8AAdpwAAHarwAB2rEAAdqzAAHatQAB2rgAAdq5AAHaugAB2rsAAdq8AAHavgAB2sAAAdrBAAHawgAB2sQAAdrFAAHa6gAB2w4AAds1AAHbWQAB21wAAdteAAHbYAAB22IAAdtkAAHbZgAB22cAAdtqAAHbdwAB24YAAduIAAHbigAB24wAAduOAAHbkAAB25IAAduUAAHbowAB26YAAdupAAHbrAAB268AAduyAAHbtQAB27gAAdu6AAHb+QAB2/sAAdv9AAHb/wAB3AIAAdwDAAHcBAAB3AUAAdwGAAHcCAAB3AoAAdwLAAHcDAAB3A4AAdwPAAHcTgAB3FAAAdxSAAHcVAAB3FcAAdxYAAHcWQAB3FoAAdxbAAHcXQAB3F8AAdxgAAHcYQAB3GMAAdxkAAHcowAB3KUAAdynAAHcqQAB3KwAAdytAAHcrgAB3K8AAdywAAHcsgAB3LQAAdy1AAHctgAB3LgAAdy5AAHc+AAB3PoAAdz9AAHc/wAB3QIAAd0DAAHdBAAB3QUAAd0GAAHdCAAB3QoAAd0LAAHdDAAB3Q4AAd0PAAHdTgAB3VAAAd1SAAHdVAAB3VcAAd1YAAHdWQAB3VoAAd1bAAHdXQAB3V8AAd1gAAHdYQAB3WMAAd1kAAHdowAB3aUAAd2nAAHdqQAB3awAAd2tAAHdrgAB3a8AAd2wAAHdsgAB3bQAAd21AAHdtgAB3bgAAd25AAHd+AAB3foAAd38AAHd/gAB3gEAAd4CAAHeAwAB3gQAAd4FAAHeBwAB3gkAAd4KAAHeCwAB3g0AAd4OAAHeWQAB3nwAAd6cAAHevAAB3r4AAd7AAAHewgAB3sQAAd7GAAHexwAB3sgAAd7LAAHezAAB3s4AAd7PAAHe0QAB3tMAAd7UAAHe1QAB3tgAAd7ZAAHe3gAB3usAAd7wAAHe8gAB3vQAAd75AAHe/AAB3v8AAd8BAAHfJgAB30oAAd9xAAHflQAB35g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AAgDQAAIA0QACANMAAgDVAAIA1gACANcAAgDZAAIA2gACAOcAAgDoAAIA6QACAOsAAgEqAAIBLAACAS4AAgEwAAIBMwACATQAAgE1AAIBNgACATcAAgE5AAIBOwACATwAAgE9AAIBPwACAUAAAgF/AAIBgQACAYMAAgGFAAIBiAACAYkAAgGKAAIBiwACAYwAAgGOAAIBkAACAZEAAgGSAAIBlAACAZUAAgHUAAIB1gACAdgAAgHaAAIB3QACAd4AAgHfAAIB4AACAeEAAgHjAAIB5QACAeYAAgHnAAIB6QACAeoAAgIpAAICKwACAi0AAgIvAAICMgACAjMAAgI0AAICNQACAjYAAgI4AAICOgACAjsAAgI8AAICPgACAj8AAgJ+AAICgAACAoIAAgKEAAIChwACAogAAgKJAAICigACAosAAgKNAAICjwACApAAAgKRAAICkwACApQAAgK5AAIC3QACAwQAAgMoAAIDKwACAy0AAgMvAAIDMQACAzMAAgM1AAIDNgACAzkAAgNGAAIDVQACA1cAAgNZAAIDWwACA10AAgNfAAIDYQACA2MAAgNyAAIDdQACA3gAAgN7AAIDfgACA4EAAgOEAAIDhwACA4kAAgPIAAIDygACA8wAAgPOAAID0QACA9IAAgPTAAID1AACA9UAAgPXAAID2QACA9oAAgPbAAID3QACA94AAgQdAAIEHwACBCEAAgQjAAIEJgACBCcAAgQoAAIEKQACBCoAAgQsAAIELgACBC8AAgQwAAIEMgACBDMAAgRyAAIEdAACBHYAAgR4AAIEewACBHwAAgR9AAIEfgACBH8AAgSBAAIEgwACBIQAAgSFAAIEhwACBIgAAgTHAAIEyQACBMwAAgTOAAIE0QACBNIAAgTTAAIE1AACBNUAAgTXAAIE2QACBNoAAgTbAAIE3QACBN4AAgUhAAIFRQACBWkAAgWMAAIFswACBdMAAgX6AAIGIQACBkEAAgZlAAIGiQACBosAAgaOAAIGkAACBpIAAgaUAAIGlwACBpoAAgacAAIGngACBqEAAgajAAIGpQACBqgAAgarAAIGrAACBrEAAga+AAIGwQACBsMAAgbGAAIGyQACBssAAgbwAAIHFAACBzsAAgdfAAIHYgACB2QAAgdmAAIHaAACB2oAAgdsAAIHbQACB3AAAgd9AAIHkAACB5IAAgeUAAIHlgACB5gAAgeaAAIHnAACB54AAgegAAIHogACB7UAAge4AAIHuwACB74AAgfBAAIHxAACB8cAAgfKAAIHzQACB9AAAgfSAAIIEQACCBMAAggWAAIIGAACCBsAAggcAAIIHQACCB4AAggfAAIIIQACCCMAAggkAAIIJQACCCcAAggoAAIIMQACCDIAAgg0AAIIcwACCHUAAgh3AAIIeQACCHwAAgh9AAIIfgACCH8AAgiAAAIIggACCIQAAgiFAAIIhgACCIgAAgiJAAIIyAACCMoAAgjNAAIIzwACCNIAAgjTAAII1AACCNUAAgjWAAII2AACCNoAAgjbAAII3AACCN4AAgjfAAII6AACCOkAAgjrAAIJKgACCSwAAgkuAAIJMAACCTMAAgk0AAIJNQACCTYAAgk3AAIJOQACCTsAAgk8AAIJPQACCT8AAglAAAIJfwACCYEAAgmEAAIJhgACCYkAAgmKAAIJiwACCYwAAgmNAAIJjwACCZEAAgmSAAIJkwACCZUAAgmWAAIJnwACCaAAAgmiAAIJ4QACCeMAAgnlAAIJ5wACCeoAAgnrAAIJ7AACCe0AAgnuAAIJ8AACCfIAAgnzAAIJ9AACCfYAAgn3AAIKNgACCjgAAgo7AAIKPQACCkAAAgpBAAIKQgACCkMAAgpEAAIKRgACCkgAAgpJAAIKSgACCkwAAgpNAAIKWgACClsAAgpcAAIKXgACCp0AAgqfAAIKoQACCqMAAgqmAAIKpwACCqgAAgqpAAIKqgACCqwAAgquAAIKrwACCrAAAgqyAAIKswACCvIAAgr0AAIK9gACCvgAAgr7AAIK/AACCv0AAgr+AAIK/wACCwEAAgsDAAILBAACCwUAAgsHAAILCAACCxUAAgseAAILIQACCyMAAgsmAAILKQACCzIAAgs1AAILOAACCzsAAgs+AAILQAACC0UAAgtKAAILTwACC5oAAgu9AAIL3QACC/0AAgv/AAIMAQACDAMAAgwFAAIMCAACDAkAAgwKAAIMDQACDA4AAgwQAAIMEQACDBMAAgwWAAIMFwACDBgAAgwbAAIMHAACDCEAAgwuAAIMMwACDDUAAgw3AAIMPAACDD8AAgxCAAIMRAACDGkAAgyNAAIMtAACDNgAAgzbAAIM3QACDN8AAgzhAAIM4wACDOUAAgzmAAIM6QACDPY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AAhfhAAIX4wACF+UAAhfoAAIX6QACF+oAAhfrAAIX7AACF+4AAhfwAAIX8QACF/IAAhf0AAIX9QACGBoAAhg+AAIYZQACGIkAAhiMAAIYjgACGJAAAhiSAAIYlAACGJYAAhiXAAIYmgACGKcAAhi2AAIYuAACGLoAAhi8AAIYvgACGMAAAhjCAAIYxAACGNMAAhjWAAIY2QACGNwAAhjfAAIY4gACGOUAAhjoAAIY6gACGSkAAhkrAAIZLgACGTAAAhkzAAIZNAACGTUAAhk2AAIZNwACGTkAAhk7AAIZPAACGT0AAhk/AAIZQAACGX8AAhmBAAIZgwACGYUAAhmIAAIZiQACGYoAAhmLAAIZjAACGY4AAhmQAAIZkQACGZIAAhmUAAIZlQACGdQAAhnWAAIZ2AACGdoAAhndAAIZ3gACGd8AAhngAAIZ4QACGeMAAhnlAAIZ5gACGecAAhnpAAIZ6gACGikAAhorAAIaLgACGjAAAhozAAIaNAACGjUAAho2AAIaNwACGjkAAho7AAIaPAACGj0AAho/AAIaQAACGn8AAhqBAAIagwACGoUAAhqIAAIaiQACGooAAhqLAAIajAACGo4AAhqQAAIakQACGpIAAhqUAAIalQACGtQAAhrWAAIa2AACGtoAAhrdAAIa3gACGt8AAhrgAAIa4QACGuMAAhrlAAIa5gACGucAAhrpAAIa6gACGykAAhsrAAIbLQACGy8AAhsyAAIbMwACGzQAAhs1AAIbNgACGzgAAhs6AAIbOwACGzwAAhs+AAIbPwACG4oAAhutAAIbzQACG+0AAhvvAAIb8QACG/MAAhv1AAIb+AACG/kAAhv6AAIb/QACG/4AAhwAAAIcAQACHAMAAhwGAAIcBwACHAgAAhwLAAIcDAACHBUAAhwiAAIcJwACHCkAAhwrAAIcMAACHDMAAhw2AAIcOAACHF0AAhyBAAIcqAACHMwAAhzPAAIc0QACHNMAAhzVAAIc1wACHNkAAhzaAAIc3QACHOoAAhz7AAIc/QACHP8AAh0BAAIdAwACHQUAAh0HAAIdCQACHQsAAh0cAAIdHwACHSIAAh0lAAIdKAACHSsAAh0uAAIdMQACHTQAAh02AAIddQACHXcAAh15AAIdewACHX4AAh1/AAIdgAACHYEAAh2CAAIdhAACHYYAAh2HAAIdiAACHYoAAh2LAAIdygACHcwAAh3OAAId0AACHdMAAh3UAAId1QACHdYAAh3XAAId2QACHdsAAh3cAAId3QACHd8AAh3gAAIeHwACHiEAAh4kAAIeJgACHikAAh4qAAIeKwACHiwAAh4tAAIeLwACHjEAAh4yAAIeMwACHjUAAh42AAIeQwACHkQAAh5FAAIeRwACHoYAAh6IAAIeigACHowAAh6PAAIekAACHpEAAh6SAAIekwACHpUAAh6XAAIemAACHpkAAh6bAAIenAACHtsAAh7dAAIe3wACHuEAAh7kAAIe5QACHuYAAh7nAAIe6AACHuoAAh7sAAIe7QACHu4AAh7wAAIe8QACHzAAAh8yAAIfNAACHzYAAh85AAIfOgACHzsAAh88AAIfPQACHz8AAh9BAAIfQgACH0MAAh9FAAIfRgACH4UAAh+HAAIfiQACH4sAAh+OAAIfjwACH5AAAh+RAAIfkgACH5QAAh+WAAIflwACH5gAAh+aAAIfmwACH9oAAh/cAAIf3gACH+AAAh/jAAIf5AACH+UAAh/mAAIf5wACH+kAAh/rAAIf7AACH+0AAh/vAAIf8AACIBUAAiA5AAIgYAACIIQAAiCHAAIgiQACIIsAAiCNAAIgjwACIJEAAiCSAAIglQACIKIAAiCxAAIgswACILUAAiC3AAIguQACILsAAiC9AAIgvwACIM4AAiDRAAIg1AACINcAAiDaAAIg3QACIOAAAiDjAAIg5QACISQAAiEmAAIhKQACISsAAiEuAAIhLwACITAAAiExAAIhMgACITQAAiE2AAIhNwACITgAAiE6AAIhOwACIXoAAiF8AAIhfgACIYAAAiGDAAIhhAACIYUAAiGGAAIhhwACIYkAAiGLAAIhjAACIY0AAiGPAAIhkAACIc8AAiHRAAIh0wACIdUAAiHYAAIh2QACIdoAAiHbAAIh3AACId4AAiHgAAIh4QACIeIAAiHkAAIh5QACIiQAAiImAAIiKQACIisAAiIuAAIiLwACIjAAAiIxAAIiMgACIjQAAiI2AAIiNwACIjgAAiI6AAIiOwACInoAAiJ8AAIifgACIoAAAiKDAAIihAACIoUAAiKGAAIihwACIokAAiKLAAIijAACIo0AAiKPAAIikAACIs8AAiLRAAIi0wACItUAAiLYAAIi2QACItoAAiLbAAIi3AACIt4AAiLgAAIi4QACIuIAAiLkAAIi5QACIyQAAiMmAAIjKAACIyoAAiMtAAIjLgACIy8AAiMwAAIjMQACIzMAAiM1AAIjNgACIzcAAiM5AAIjOgACI4UAAiOoAAIjyAACI+gAAiPqAAIj7AACI+4AAiPwAAIj8wACI/QAAiP1AAIj+AACI/kAAiP7AAIj/AACI/4AAiQBAAIkAgACJAMAAiQGAAIkBwACJAwAAiQZAAIkHgACJCAAAiQiAAIkJwACJCoAAiQtAAIkLwACJFQAAiR4AAIknwACJMMAAiTGAAIkyAACJMoAAiTMAAIkzgACJNAAAiTRAAIk1AACJOEAAiTyAAIk9AACJPYAAiT4AAIk+gACJPwAAiT+AAIlAAACJQIAAiUTAAIlFgACJRkAAiUcAAIlHwACJSIAAiUlAAIlKAACJSsAAiUtAAIlbAACJW4AAiVwAAIlcgACJXUAAiV2AAIldwACJXgAAiV5AAIlewACJX0AAiV+AAIlfwACJYEAAiWCAAIlwQACJcMAAiXFAAIlxwACJcoAAiXLAAIlzAACJc0AAiXOAAIl0AACJdIAAiXTAAIl1AACJdYAAiXXAAImFgACJhgAAiYbAAImHQACJiAAAiYhAAImIgACJiMAAiYkAAImJgACJigAAiYpAAImKgACJiwAAiYtAAImOgACJjsAAiY8AAImPgACJn0AAiZ/AAImgQACJoMAAiaGAAImhwACJogAAiaJAAImigACJowAAiaOAAImjwACJpAAAiaSAAImkwACJtIAAibUAAIm1gACJtgAAibbAAIm3AACJt0AAibeAAIm3wACJuEAAibjAAIm5AACJuUAAibnAAIm6AACJycAAicpAAInKwACJy0AAicwAAInMQACJzIAAiczAAInNAACJzYAAic4AAInOQACJzoAAic8AAInPQACJ3wAAid+AAIngAACJ4IAAieFAAInhgACJ4cAAieIAAIniQACJ4sAAieNAAInjgACJ48AAieRAAInkgACJ9EAAifTAAIn1QACJ9cAAifaAAIn2wACJ9wAAifdAAIn3gACJ+AAAifiAAIn4wACJ+QAAifmAAIn5wACKAwAAigwAAIoVwACKHsAAih+AAIogAACKIIAAiiEAAIohgACKIgAAiiJAAIojAACKJkAAiioAAIoqgACKKwAAiiuAAIosAACKLIAAii0AAIotgACKMUAAijIAAIoywACKM4AAijRAAIo1AACKNcAAijaAAIo3AACKRsAAikdAAIpHwACKSEAAikkAAIpJQACKSYAAiknAAIpKAACKSoAAiksAAIpLQACKS4AAikwAAIpMQACKXAAAilyAAIpdAACKXYAAil5AAIpegACKXsAAil8AAIpfQACKX8AAimBAAIpggACKYMAAimFAAIphgACKcUAAinHAAIpyQACKcsAAinOAAIpzwACKdAAAinRAAIp0gACKdQAAinWAAIp1wACKdgAAinaAAIp2wACKhoAAiocAAIqHgACKiAAAiojAAIqJAACKiUAAiomAAIqJwACKikAAiorAAIqLAACKi0AAiovAAIqMAACKm8AAipxAAIqcwACKnUAAip4AAIqeQACKnoAAip7AAIqfAACKn4AAiqAAAIqgQACKoIAAiqEAAIqhQACKsQAAirGAAIqyAACKsoAAirNAAIqzgACKs8AAirQAAIq0QACKtMAAirVAAIq1gACKtcAAirZAAIq2gACKxkAAisbAAIrHQACKx8AAisiAAIrIwACKyQAAislAAIrJgACKygAAisqAAIrKwACKywAAisuAAIrLwACKzgAAis5AAIrOwACK3oAAit8AAIrfgACK4AAAiuDAAIrhAACK4UAAiuGAAIrhwACK4kAAiuLAAIrjAACK40AAiuPAAIrkAACK88AAivRAAIr0wACK9UAAivYAAIr2QACK9oAAivbAAIr3AACK94AAivgAAIr4QACK+IAAivkAAIr5QACLCQAAiwmAAIsKQACLCsAAiwuAAIsLwACLDAAAiwxAAIsMgACLDQAAiw2AAIsNwACLDgAAiw6AAIsOwACLIYAAiypAAIsyQACLOkAAizrAAIs7QACLO8AAizxAAIs8wACLPQAAiz1AAIs+AACLPkAAiz7AAIs/AACLP4AAi0AAAItAQACLQIAAi0FAAItBgACLQsAAi0YAAItHQACLR8AAi0hAAItJgACLSkAAi0sAAItLgACLVMAAi13AAItngACLcIAAi3FAAItxwACLckAAi3LAAItzQACLc8AAi3QAAIt0wACLeAAAi3xAAIt8wACLfUAAi33AAIt+QACLfsAAi39AAIt/wACLgEAAi4SAAIuFQACLhgAAi4bAAIuHgACLiEAAi4kAAIuJwACLioAAi4sAAIuawACLm0AAi5vAAIucQACLnQAAi51AAIudgACLncAAi54AAIuegACLnwAAi59AAIufgACLoAAAi6BAAIuwAACLsIAAi7EAAIuxgACLskAAi7KAAIuywACLswAAi7NAAIuzwACLtEAAi7SAAIu0wACLtUAAi7WAAIvFQACLxcAAi8aAAIvHAACLx8AAi8gAAIvIQACLyIAAi8jAAIvJQACLycAAi8oAAIvKQACLysAAi8sAAIvOQACLzoAAi87AAIvPQACL3wAAi9+AAIvgAACL4IAAi+FAAIvhgACL4cAAi+IAAIviQACL4sAAi+NAAIvjgACL48AAi+RAAIvkgACL9EAAi/TAAIv1QACL9cAAi/aAAIv2wACL9wAAi/dAAIv3gACL+AAAi/iAAIv4wACL+QAAi/mAAIv5wACMCYAAjAoAAIwKgACMCwAAjAvAAIwMAACMDEAAjAyAAIwMwACMDUAAjA3AAIwOAACMDkAAjA7AAIwPAACMHsAAjB9AAIwfwACMIEAAjCEAAIwhQACMIYAAjCHAAIwiAACMIoAAjCMAAIwjQACMI4AAjCQAAIwkQACMNAAAjDSAAIw1AACMNYAAjDZAAIw2gACMNsAAjDcAAIw3QACMN8AAjDhAAIw4gACMOMAAjDlAAIw5gACMQsAAjEvAAIxVgACMXoAAjF9AAIxfwACMYEAAjGDAAIxhQACMYcAAjGIAAIxiwACMZgAAjGnAAIxqQACMasAAjGtAAIxrwACMbEAAjGzAAIxtQACMcQAAjHHAAIxygACMc0AAjHQAAIx0wACMdYAAjHZAAIx2wACMhoAAjIcAAIyHwACMiEAAjIkAAIyJQACMiYAAjInAAIyKAACMioAAjIsAAIyLQACMi4AAjIwAAIyMQACMnAAAjJyAAIydAACMnYAAjJ5AAIyegACMnsAAjJ8AAIyfQACMn8AAjKBAAIyggACMoMAAjKFAAIyhgACMsUAAjLHAAIyyQACMssAAjLOAAIyzwACMtAAAjLRAAIy0gACMtQAAjLWAAIy1wACMtgAAjLaAAIy2wACMxoAAjMcAAIzHwACMyEAAjMkAAIzJQACMyYAAjMnAAIzKAACMyoAAjMsAAIzLQACMy4AAjMwAAIzMQACM3AAAjNyAAIzdAACM3YAAjN5AAIzegACM3sAAjN8AAIzfQACM38AAjOBAAIzggACM4MAAjOFAAIzhgACM8UAAjPHAAIzyQACM8sAAjPOAAIzzwACM9AAAjPRAAIz0gACM9QAAjPWAAIz1wACM9gAAjPaAAIz2wACNBoAAjQcAAI0HgACNCAAAjQjAAI0JAACNCUAAjQmAAI0JwACNCkAAjQrAAI0LAACNC0AAjQvAAI0MAACNHsAAjSeAAI0vgACNN4AAjTgAAI04gACNOQAAjTmAAI06AACNOkAAjTqAAI07QACNO4AAjTwAAI08QACNPMAAjT1AAI09gACNPcAAjT6AAI0+wACNQQAAjURAAI1FgACNRgAAjUaAAI1HwACNSIAAjUlAAI1JwACNUwAAjVwAAI1lwACNbsAAjW+AAI1wAACNcIAAjXEAAI1xgACNcgAAjXJAAI1zAACNdkAAjXqAAI17AACNe4AAjXwAAI18gACNfQAAjX2AAI1+AACNfoAAjYLAAI2DgACNhEAAjYUAAI2FwACNhoAAjYdAAI2IAACNiMAAjYlAAI2ZAACNmYAAjZoAAI2agACNm0AAjZuAAI2bwACNnAAAjZxAAI2cwACNnUAAjZ2AAI2dwACNnkAAjZ6AAI2uQACNrsAAja9AAI2vwACNsIAAjbDAAI2xAACNsUAAjbGAAI2yAACNsoAAjbLAAI2zAACNs4AAjbPAAI3DgACNxAAAjcTAAI3FQACNxgAAjcZAAI3GgACNxsAAjccAAI3HgACNyAAAjchAAI3IgACNyQAAjclAAI3MgACNzMAAjc0AAI3NgACN3UAAjd3AAI3eQACN3sAAjd+AAI3fwACN4AAAjeBAAI3ggACN4QAAjeGAAI3hwACN4gAAjeKAAI3iwACN8oAAjfMAAI3zgACN9AAAjfTAAI31AACN9UAAjfWAAI31wACN9kAAjfbAAI33AACN90AAjffAAI34AACOB8AAjghAAI4IwACOCUAAjgoAAI4KQACOCoAAjgrAAI4LAACOC4AAjgwAAI4MQACODIAAjg0AAI4NQACOHQAAjh2AAI4eAACOHoAAjh9AAI4fgACOH8AAjiAAAI4gQACOIMAAjiFAAI4hgACOIcAAjiJAAI4igACOMkAAjjLAAI4zQACOM8AAjjSAAI40wACONQAAjjVAAI41gACONgAAjjaAAI42wACONwAAjjeAAI43wACOQQAAjkoAAI5TwACOXM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AAkVoAAJFawACRWwAAkVtAAJFbgACRW8AAkVxAAJFcwACRXQAAkV1AAJFdwACRXgAAkW3AAJFuQACRbwAAkW+AAJFwQACRcIAAkXDAAJFxAACRcUAAkXHAAJFyQACRcoAAkXLAAJFzQACRc4AAkXbAAJF3AACRd0AAkXfAAJGHgACRiAAAkYiAAJGJAACRicAAkYoAAJGKQACRioAAkYrAAJGLQACRi8AAkYwAAJGMQACRjMAAkY0AAJGcwACRnUAAkZ3AAJGeQACRnwAAkZ9AAJGfgACRn8AAkaAAAJGggACRoQAAkaFAAJGhgACRogAAkaJAAJGyAACRsoAAkbMAAJGzgACRtEAAkbSAAJG0wACRtQAAkbVAAJG1wACRtkAAkbaAAJG2wACRt0AAkbeAAJHHQACRx8AAkchAAJHIwACRyYAAkcnAAJHKAACRykAAkcqAAJHLAACRy4AAkcvAAJHMAACRzIAAkczAAJHcgACR3QAAkd2AAJHeAACR3sAAkd8AAJHfQACR34AAkd/AAJHgQACR4MAAkeEAAJHhQACR4cAAkeIAAJHrQACR9EAAkf4AAJIHAACSB8AAkghAAJIIwACSCUAAkgnAAJIKQACSCoAAkgtAAJIOgACSEkAAkhLAAJITQACSE8AAkhRAAJIUwACSFUAAkhXAAJIZgACSGkAAkhsAAJIbwACSHIAAkh1AAJIeAACSHsAAkh9AAJIvAACSL4AAkjAAAJIwgACSMUAAkjGAAJIxwACSMgAAkjJAAJIywACSM0AAkjOAAJIzwACSNEAAkjSAAJJEQACSRMAAkkVAAJJFwACSRoAAkkbAAJJHAACSR0AAkkeAAJJIAACSSIAAkkjAAJJJAACSSYAAkknAAJJZgACSWgAAklqAAJJbAACSW8AAklwAAJJcQACSXIAAklzAAJJdQACSXcAAkl4AAJJeQACSXsAAkl8AAJJuwACSb0AAknAAAJJwgACScUAAknGAAJJxwACScgAAknJAAJJywACSc0AAknOAAJJzwACSdEAAknSAAJKFQACSjkAAkpdAAJKgAACSqcAAkrHAAJK7gACSxUAAks1AAJLWQACS30AAkt/AAJLggACS4QAAkuGAAJLiAACS4sAAkuOAAJLkAACS5IAAkuVAAJLlwACS5kAAkucAAJLnwACS6AAAkupAAJLtgACS7kAAku7AAJLvgACS8EAAkvDAAJL6AACTAwAAkwzAAJMVwACTFoAAkxcAAJMXgACTGAAAkxiAAJMZAACTGUAAkxoAAJMdQACTIgAAkyKAAJMjAACTI4AAkyQAAJMkgACTJQAAkyWAAJMmAACTJoAAkytAAJMsAACTLMAAky2AAJMuQACTLwAAky/AAJMwgACTMUAAkzIAAJMygACTQkAAk0LAAJNDgACTRAAAk0TAAJNFAACTRUAAk0WAAJNFwACTRkAAk0bAAJNHAACTR0AAk0fAAJNIAACTSkAAk0qAAJNLAACTWsAAk1tAAJNbwACTXEAAk10AAJNdQACTXYAAk13AAJNeAACTXoAAk18AAJNfQACTX4AAk2AAAJNgQACTcAAAk3CAAJNxQACTccAAk3KAAJNywACTcwAAk3NAAJNzgACTdAAAk3SAAJN0wACTdQAAk3WAAJN1wACTeAAAk3hAAJN4wACTiIAAk4kAAJOJgACTigAAk4rAAJOLAACTi0AAk4uAAJOLwACTjEAAk4zAAJONAACTjUAAk43AAJOOAACTncAAk55AAJOfAACTn4AAk6BAAJOggACToMAAk6EAAJOhQACTocAAk6JAAJOigACTosAAk6NAAJOjgACTpcAAk6YAAJOmgACTtkAAk7bAAJO3QACTt8AAk7iAAJO4wACTuQAAk7lAAJO5gACTugAAk7qAAJO6wACTuwAAk7uAAJO7wACTy4AAk8wAAJPMwACTzUAAk84AAJPOQACTzoAAk87AAJPPAACTz4AAk9AAAJPQQACT0IAAk9EAAJPRQACT1IAAk9TAAJPVAACT1YAAk+VAAJPlwACT5kAAk+bAAJPngACT58AAk+gAAJPoQACT6IAAk+kAAJPpgACT6cAAk+oAAJPqgACT6sAAk/qAAJP7AACT+4AAk/wAAJP8wACT/QAAk/1AAJP9gACT/cAAk/5AAJP+wACT/wAAk/9AAJP/wACUAAAAlANAAJQGAACUBoAAlAdAAJQHwACUCIAAlAlAAJQMAACUDMAAlA2AAJQOQACUDwAAlA/AAJQQQACUEcAAlBMAAJQUgACUJ0AAlDAAAJQ4AACUQAAAlECAAJRBAACUQYAAlEIAAJRCwACUQwAAlENAAJREAACUREAAlETAAJRFAACURYAAlEYAAJRGQACURoAAlEdAAJRHgACUScAAlE0AAJROQACUTsAAlE9AAJRQgACUUUAAlFIAAJRSgACUW8AAlGTAAJRugACUd4AAlHhAAJR4wACUeUAAlHnAAJR6QACUesAAlHsAAJR7wACUfwAAlINAAJSDwACUhEAAlITAAJSFQACUhcAAlIZAAJSGwACUh0AAlIuAAJSMQACUjQAAlI3AAJSOgACUj0AAlJAAAJSQwACUkYAAlJIAAJShwACUokAAlKLAAJSjQACUpAAAlKRAAJSkgACUpMAAlKUAAJSlgACUpgAAlKZAAJSmgACUpwAAlKdAAJS3AACUt4AAlLgAAJS4gACUuUAAlLmAAJS5wACUugAAlLpAAJS6wACUu0AAlLuAAJS7wACUvEAAlLyAAJTMQACUzMAAlM2AAJTOAACUzsAAlM8AAJTPQACUz4AAlM/AAJTQQACU0MAAlNEAAJTRQACU0cAAlNIAAJTVQACU1YAAlNXAAJTWQACU5gAAlOaAAJTnAACU54AAlOhAAJTogACU6MAAlOkAAJTpQACU6cAAlOpAAJTqgACU6sAAlOtAAJTrgACU+0AAlPvAAJT8QACU/MAAlP2AAJT9wACU/gAAlP5AAJT+gACU/wAAlP+AAJT/wACVAAAAlQCAAJUAwACVEIAAlREAAJURgACVEgAAlRLAAJUTAACVE0AAlROAAJUTwACVFEAAlRTAAJUVAACVFUAAlRXAAJUWAACVJcAAlSZAAJUmwACVJ0AAlSgAAJUoQACVKIAAlSjAAJUpAACVKYAAlSoAAJUqQACVKoAAlSsAAJUrQACVOwAAlTuAAJU8AACVPIAAlT1AAJU9gACVPcAAlT4AAJU+QACVPsAAlT9AAJU/gACVP8AAlUBAAJVAgACVScAAlVLAAJVcgACVZYAAlWZAAJVmwACVZ0AAlWfAAJVoQACVaMAAlWkAAJVpwACVbQAAlXDAAJVxQACVccAAlXJAAJVywACVc0AAlXPAAJV0QACVeAAAlXjAAJV5gACVekAAlXsAAJV7wACVfIAAlX1AAJV9wACVjYAAlY4AAJWOwACVj0AAlZAAAJWQQACVkIAAlZDAAJWRAACVkYAAlZIAAJWSQACVkoAAlZMAAJWTQACVowAAlaOAAJWkAACVpIAAlaVAAJWlgACVpcAAlaYAAJWmQACVpsAAladAAJWngACVp8AAlahAAJWogACVuEAAlbjAAJW5QACVucAAlbqAAJW6wACVuwAAlbtAAJW7gACVvAAAlbyAAJW8wACVvQAAlb2AAJW9wACVzYAAlc4AAJXOwACVz0AAldAAAJXQQACV0IAAldDAAJXRAACV0YAAldIAAJXSQACV0oAAldMAAJXTQACV4wAAleOAAJXkAACV5IAAleVAAJXlgACV5cAAleYAAJXmQACV5sAAledAAJXngACV58AAlehAAJXogACV+EAAlfjAAJX5QACV+cAAlfqAAJX6wACV+wAAlftAAJX7gACV/AAAlfyAAJX8wACV/QAAlf2AAJX9wACWDYAAlg4AAJYOgACWDwAAlg/AAJYQAACWEEAAlhCAAJYQwACWEUAAlhHAAJYSAACWEkAAlhLAAJYTAACWJcAAli6AAJY2gACWPoAAlj8AAJY/gACWQAAAlkCAAJZBQACWQYAAlkHAAJZCgACWQsAAlkNAAJZDgACWRAAAlkTAAJZFAACWRUAAlkYAAJZGQACWSIAAlkvAAJZNAACWTYAAlk4AAJZPQACWUAAAllDAAJZRQACWWoAAlmOAAJZtQACWdkAAlncAAJZ3gACWeAAAlniAAJZ5AACWeYAAlnnAAJZ6gACWfcAAloIAAJaCgACWgwAAloOAAJaEAACWhIAAloUAAJaFgACWhgAAlopAAJaLAACWi8AAloyAAJaNQACWjgAAlo7AAJaPgACWkEAAlpDAAJaggACWoQAAlqGAAJaiAACWosAAlqMAAJajQACWo4AAlqPAAJakQACWpMAAlqUAAJalQACWpcAAlqYAAJa1wACWtkAAlrbAAJa3QACWuAAAlrhAAJa4gACWuMAAlrkAAJa5gACWugAAlrpAAJa6gACWuwAAlrtAAJbLAACWy4AAlsxAAJbMwACWzYAAls3AAJbOAACWzkAAls6AAJbPAACWz4AAls/AAJbQAACW0IAAltDAAJbUAACW1EAAltSAAJbVAACW5MAAluVAAJblwACW5kAAlucAAJbnQACW54AAlufAAJboAACW6IAAlukAAJbpQACW6YAAluoAAJbqQACW+gAAlvqAAJb7AACW+4AAlvxAAJb8gACW/MAAlv0AAJb9QACW/cAAlv5AAJb+gACW/sAAlv9AAJb/gACXD0AAlw/AAJcQQACXEMAAlxGAAJcRwACXEgAAlxJAAJcSgACXEwAAlxOAAJcTwACXFAAAlxSAAJcUwACXJIAAlyUAAJclgACXJgAAlybAAJcnAACXJ0AAlyeAAJcnwACXKEAAlyjAAJcpAACXKUAAlynAAJcqAACXOcAAlzpAAJc6wACXO0AAlzwAAJc8QACXPIAAlzzAAJc9AACXPYAAlz4AAJc+QACXPoAAlz8AAJc/QACXSIAAl1GAAJdbQACXZEAAl2UAAJdlgACXZgAAl2aAAJdnAACXZ4AAl2fAAJdogACXa8AAl2+AAJdwAACXcIAAl3EAAJdxgACXcgAAl3KAAJdzAACXdsAAl3eAAJd4QACXeQAAl3nAAJd6gACXe0AAl3wAAJd8gACXjEAAl4zAAJeNgACXjgAAl47AAJePAACXj0AAl4+AAJePwACXkEAAl5DAAJeRAACXkUAAl5HAAJeSAACXocAAl6JAAJeiwACXo0AAl6QAAJekQACXpIAAl6TAAJelAACXpYAAl6YAAJemQACXpoAAl6cAAJenQACXtwAAl7eAAJe4AACXuIAAl7lAAJe5gACXucAAl7oAAJe6QACXusAAl7tAAJe7gACXu8AAl7xAAJe8gACXzEAAl8zAAJfNgACXzgAAl87AAJfPAACXz0AAl8+AAJfPwACX0EAAl9DAAJfRAACX0UAAl9HAAJfSAACX4cAAl+JAAJfiwACX40AAl+QAAJfkQACX5IAAl+TAAJflAACX5YAAl+YAAJfmQACX5oAAl+cAAJfnQACX9wAAl/eAAJf4AACX+IAAl/lAAJf5gACX+cAAl/oAAJf6QACX+sAAl/tAAJf7gACX+8AAl/xAAJf8gACYDEAAmAzAAJgNQACYDcAAmA6AAJgOwACYDwAAmA9AAJgPgACYEAAAmBCAAJgQwACYEQAAmBGAAJgRwACYJIAAmC1AAJg1QACYPUAAmD3AAJg+QACYPsAAmD9AAJhAAACYQEAAmECAAJhBQACYQYAAmEIAAJhCQACYQsAAmENAAJhDgACYQ8AAmESAAJhEwACYRgAAmElAAJhKgACYSwAAmEuAAJhMwACYTYAAmE5AAJhOwACYWAAAmGEAAJhqwACYc8AAmHSAAJh1AACYdYAAmHYAAJh2gACYdwAAmHdAAJh4AACYe0AAmH+AAJiAAACYgIAAmIEAAJiBgACYggAAmIKAAJiDAACYg4AAmIfAAJiIgACYiUAAmIoAAJiKwACYi4AAmIxAAJiNAACYjcAAmI5AAJieAACYnoAAmJ8AAJifgACYoEAAmKCAAJigwACYoQAAmKFAAJihwACYokAAmKKAAJiiwACYo0AAmKOAAJizQACYs8AAmLRAAJi0wACYtYAAmLXAAJi2AACYtkAAmLaAAJi3AACYt4AAmLfAAJi4AACYuIAAmLjAAJjIgACYyQAAmMnAAJjKQACYywAAmMtAAJjLgACYy8AAmMwAAJjMgACYzQAAmM1AAJjNgACYzgAAmM5AAJjRgACY0cAAmNIAAJjSgACY4kAAmOLAAJjjQACY48AAmOSAAJjkwACY5QAAmOVAAJjlgACY5gAAmOaAAJjmwACY5wAAmOeAAJjnwACY94AAmPgAAJj4gACY+QAAmPnAAJj6AACY+kAAmPqAAJj6wACY+0AAmPvAAJj8AACY/EAAmPzAAJj9AACZDMAAmQ1AAJkNwACZDkAAmQ8AAJkPQACZD4AAmQ/AAJkQAACZEIAAmREAAJkRQACZEYAAmRIAAJkSQACZIgAAmSKAAJkjAACZI4AAmSRAAJkkgACZJMAAmSUAAJklQACZJcAAmSZAAJkmgACZJsAAmSdAAJkngACZN0AAmTfAAJk4QACZOMAAmTmAAJk5wACZOgAAmTpAAJk6gACZOwAAmTuAAJk7wACZPAAAmTyAAJk8wACZRgAAmU8AAJlYwACZYcAAmWKAAJljAACZY4AAmWQAAJlkgACZZQAAmWVAAJlmAACZaUAAmW0AAJltgACZbgAAmW6AAJlvAACZb4AAmXAAAJlwgACZdEAAmXUAAJl1wACZdoAAmXdAAJl4AACZeMAAmXmAAJl6AACZicAAmYpAAJmKwACZi0AAmYwAAJmMQACZjIAAmYzAAJmNAACZjYAAmY4AAJmOQACZjoAAmY8AAJmPQACZnwAAmZ+AAJmgAACZoIAAmaFAAJmhgACZocAAmaIAAJmiQACZosAAmaNAAJmjgACZo8AAmaRAAJmkgACZtEAAmbTAAJm1QACZtcAAmbaAAJm2wACZtwAAmbdAAJm3gACZuAAAmbiAAJm4wACZuQAAmbmAAJm5wACZyYAAmcoAAJnKgACZywAAmcvAAJnMAACZzEAAmcyAAJnMwACZzUAAmc3AAJnOAACZzkAAmc7AAJnPAACZ3sAAmd9AAJnfwACZ4EAAmeEAAJnhQACZ4YAAmeHAAJniAACZ4oAAmeMAAJnjQACZ44AAmeQAAJnkQACZ9AAAmfSAAJn1AACZ9YAAmfZAAJn2gACZ9sAAmfcAAJn3QACZ98AAmfhAAJn4gACZ+MAAmflAAJn5gACaCUAAmgnAAJoKQACaCsAAmguAAJoLwACaDAAAmgxAAJoMgACaDQAAmg2AAJoNwACaDgAAmg6AAJoOwACaIYAAmipAAJoyQACaOkAAmjrAAJo7QACaO8AAmjxAAJo9AACaPUAAmj2AAJo+QACaPoAAmj8AAJo/QACaP8AAmkCAAJpAwACaQQAAmkHAAJpCAACaREAAmkeAAJpIwACaSUAAmknAAJpLAACaS8AAmkyAAJpNAACaVkAAml9AAJppAACacgAAmnLAAJpzQACac8AAmnRAAJp0wACadUAAmnWAAJp2QACaeYAAmn3AAJp+QACafsAAmn9AAJp/wACagEAAmoDAAJqBQACagcAAmoYAAJqGwACah4AAmohAAJqJAACaicAAmoqAAJqLQACajAAAmoyAAJqcQACanMAAmp1AAJqdwACanoAAmp7AAJqfAACan0AAmp+AAJqgAACaoIAAmqDAAJqhAACaoYAAmqHAAJqxgACasgAAmrKAAJqzAACas8AAmrQAAJq0QACatIAAmrTAAJq1QACatcAAmrYAAJq2QACatsAAmrcAAJrGwACax0AAmsgAAJrIgACayUAAmsmAAJrJwACaygAAmspAAJrKwACay0AAmsuAAJrLwACazEAAmsyAAJrPwACa0AAAmtBAAJrQwACa4IAAmuEAAJrhgACa4gAAmuLAAJrjAACa40AAmuOAAJrjwACa5EAAmuTAAJrlAACa5UAAmuXAAJrmAACa9cAAmvZAAJr2wACa90AAmvgAAJr4QACa+IAAmvjAAJr5AACa+YAAmvoAAJr6QACa+oAAmvsAAJr7QACbCwAAmwuAAJsMAACbDIAAmw1AAJsNgACbDcAAmw4AAJsOQACbDsAAmw9AAJsPgACbD8AAmxBAAJsQgACbIEAAmyDAAJshQACbIcAAmyKAAJsiwACbIwAAmyNAAJsjgACbJAAAmySAAJskwACbJQAAmyWAAJslwACbNYAAmzYAAJs2gACbNwAAmzfAAJs4AACbOEAAmziAAJs4wACbOUAAmznAAJs6AACbOkAAmzrAAJs7AACbREAAm01AAJtXAACbYAAAm2DAAJthQACbYcAAm2JAAJtiwACbY0AAm2OAAJtkQACbZ4AAm2tAAJtrwACbbEAAm2zAAJttQACbbcAAm25AAJtuwACbcoAAm3NAAJt0AACbdMAAm3WAAJt2QACbdwAAm3fAAJt4QACbiAAAm4iAAJuJAACbiYAAm4pAAJuKgACbisAAm4sAAJuLQACbi8AAm4xAAJuMgACbjMAAm41AAJuNgACbnUAAm53AAJueQACbnsAAm5+AAJufwACboAAAm6BAAJuggACboQAAm6GAAJuhwACbogAAm6KAAJuiwACbsoAAm7MAAJuzgACbtAAAm7TAAJu1AACbtUAAm7WAAJu1wACbtkAAm7bAAJu3AACbt0AAm7fAAJu4AACbx8AAm8hAAJvJAACbyYAAm8pAAJvKgACbysAAm8sAAJvLQACby8AAm8xAAJvMgACbzMAAm81AAJvNgACb3UAAm93AAJveQACb3sAAm9+AAJvfwACb4AAAm+BAAJvggACb4QAAm+GAAJvhwACb4gAAm+KAAJviwACb8oAAm/MAAJvzgACb9AAAm/TAAJv1AACb9UAAm/WAAJv1wACb9kAAm/bAAJv3AACb90AAm/fAAJv4AACcB8AAnAhAAJwJAACcCYAAnApAAJwKgACcCsAAnAsAAJwLQACcC8AAnAxAAJwMgACcDMAAnA1AAJwNgACcIEAAnCkAAJwxAACcOQAAnDmAAJw6AACcOoAAnDsAAJw7wACcPAAAnDxAAJw9AACcPUAAnD3AAJw+AACcPoAAnD9AAJw/gACcP8AAnECAAJxAwACcQgAAnEVAAJxGgACcRwAAnEeAAJxIwACcSYAAnEpAAJxKwACcVAAAnF0AAJxmwACcb8AAnHCAAJxxAACccYAAnHIAAJxygACccwAAnHNAAJx0AACcd0AAnHuAAJx8AACcfIAAnH0AAJx9gACcfgAAnH6AAJx/AACcf4AAnIPAAJyEgACchUAAnIYAAJyGwACch4AAnIhAAJyJAACcicAAnIpAAJyaAACcmoAAnJsAAJybgACcnEAAnJyAAJycwACcnQAAnJ1AAJydwACcnkAAnJ6AAJyewACcn0AAnJ+AAJyvQACcr8AAnLBAAJywwACcsYAAnLHAAJyyAACcskAAnLKAAJyzAACcs4AAnLPAAJy0AACctIAAnLTAAJzEgACcxQAAnMXAAJzGQACcxwAAnMdAAJzHgACcx8AAnMgAAJzIgACcyQAAnMlAAJzJgACcygAAnMpAAJzNgACczcAAnM4AAJzOgACc3kAAnN7AAJzfQACc38AAnOCAAJzgwACc4QAAnOFAAJzhgACc4gAAnOKAAJziwACc4wAAnOOAAJzjwACc84AAnPQAAJz0gACc9QAAnPXAAJz2AACc9kAAnPaAAJz2wACc90AAnPfAAJz4AACc+EAAnPjAAJz5AACdCMAAnQlAAJ0JwACdCkAAnQsAAJ0LQACdC4AAnQvAAJ0MAACdDIAAnQ0AAJ0NQACdDYAAnQ4AAJ0OQACdHgAAnR6AAJ0fAACdH4AAnSBAAJ0ggACdIMAAnSEAAJ0hQACdIcAAnSJAAJ0igACdIsAAnSNAAJ0jgACdM0AAnTPAAJ00QACdNMAAnTWAAJ01wACdNgAAnTZAAJ02gACdNwAAnTeAAJ03wACdOAAAnTiAAJ04wACdQgAAnUsAAJ1UwACdXcAAnV6AAJ1fAACdX4AAnWAAAJ1ggACdYQAAnWFAAJ1iAACdZUAAnWkAAJ1pgACdagAAnWqAAJ1rAACda4AAnWwAAJ1sgACdcEAAnXEAAJ1xwACdcoAAnXNAAJ10AACddMAAnXWAAJ12AACdhcAAnYZAAJ2HAACdh4AAnYhAAJ2IgACdiMAAnYkAAJ2JQACdicAAnYpAAJ2KgACdisAAnYtAAJ2LgACdm0AAnZvAAJ2cQACdnMAAnZ2AAJ2dwACdngAAnZ5AAJ2egACdnwAAnZ+AAJ2fwACdoAAAnaCAAJ2gwACdsIAAnbEAAJ2xgACdsgAAnbLAAJ2zAACds0AAnbOAAJ2zwACdtEAAnbTAAJ21AACdtUAAnbXAAJ22AACdxcAAncZAAJ3HAACdx4AAnchAAJ3IgACdyMAAnckAAJ3JQACdycAAncpAAJ3KgACdysAAnctAAJ3LgACd20AAndvAAJ3cQACd3MAAnd2AAJ3dwACd3gAAnd5AAJ3egACd3wAAnd+AAJ3fwACd4AAAneCAAJ3gwACd8IAAnfEAAJ3xgACd8gAAnfLAAJ3zAACd80AAnfOAAJ3zwACd9EAAnfTAAJ31AACd9UAAnfXAAJ32AACeBcAAngZAAJ4GwACeB0AAnggAAJ4IQACeCIAAngjAAJ4JAACeCYAAngoAAJ4KQACeCoAAngsAAJ4LQACeDYAAng3AAJ4OQACeHgAAnh6AAJ4fAACeH4AAniBAAJ4ggACeIMAAniEAAJ4hQACeIcAAniJAAJ4igACeIsAAniNAAJ4jgACeM0AAnjPAAJ40QACeNMAAnjWAAJ41wACeNgAAnjZAAJ42gACeNwAAnjeAAJ43wACeOAAAnjiAAJ44wACeSIAAnkkAAJ5JwACeSkAAnksAAJ5LQACeS4AAnkvAAJ5MAACeTIAAnk0AAJ5NQACeTYAAnk4AAJ5OQACeUIAAnlFAAJ5SAACeUoAAnlPAAJ5WAACeXEAAnl6AAJ5kwACeaoAAnm8AAJ52QACedwAAnneAAJ54AACeeIAAnnlAAJ55wACeewAAnorAAJ6LQACei8AAnoxAAJ6MwACejQAAno1AAJ6NgACejcAAno5AAJ6OwACejwAAno9AAJ6PwACekAAAnp/AAJ6gQACeoMAAnqFAAJ6hwACeogAAnqJAAJ6igACeosAAnqNAAJ6jwACepAAAnqRAAJ6kwACepQAAnrTAAJ61QACetcAAnrZAAJ62wACetwAAnrdAAJ63gACet8AAnrhAAJ64wACeuQAAnrlAAJ65wACeugAAnrxAAJ69AACevcAAnr5AAJ7PAACe2AAAnuEAAJ7pwACe84AAnvuAAJ8FQACfDwAAnxcAAJ8gAACfKQAAnymAAJ8qQACfKsAAnytAAJ8rwACfLIAAny1AAJ8twACfLkAAny8AAJ8vgACfMAAAnzDAAJ8xgACfMcAAnzMAAJ82QACfNwAAnzeAAJ84QACfOQAAnzmAAJ9CwACfS8AAn1WAAJ9egACfX0AAn1/AAJ9gQACfYMAAn2FAAJ9hwACfYgAAn2LAAJ9mAACfasAAn2tAAJ9rwACfbEAAn2zAAJ9tQACfbcAAn25AAJ9uwACfb0AAn3QAAJ90wACfdYAAn3ZAAJ93AACfd8AAn3iAAJ95QACfegAAn3rAAJ97QACfiwAAn4uAAJ+MQACfjMAAn42AAJ+NwACfjgAAn45AAJ+OgACfjwAAn4+AAJ+PwACfkAAAn5CAAJ+QwACfkwAAn5NAAJ+TwACfo4AAn6QAAJ+kgACfpQAAn6XAAJ+mAACfpkAAn6aAAJ+mwACfp0AAn6fAAJ+oAACfqEAAn6jAAJ+pAACfuMAAn7lAAJ+6AACfuoAAn7tAAJ+7gACfu8AAn7wAAJ+8QACfvMAAn71AAJ+9gACfvcAAn75AAJ++gACfwMAAn8EAAJ/BgACf0UAAn9HAAJ/SQACf0sAAn9OAAJ/TwACf1AAAn9RAAJ/UgACf1QAAn9WAAJ/VwACf1gAAn9aAAJ/WwACf5oAAn+cAAJ/nwACf6EAAn+kAAJ/pQACf6YAAn+nAAJ/qAACf6oAAn+sAAJ/rQACf64AAn+wAAJ/sQACf7oAAn+7AAJ/vQACf/wAAn/+AAKAAAACgAIAAoAFAAKABgACgAcAAoAIAAKACQACgAsAAoANAAKADgACgA8AAoARAAKAEgACgFEAAoBTAAKAVgACgFgAAoBbAAKAXAACgF0AAoBeAAKAXwACgGEAAoBjAAKAZAACgGUAAoBnAAKAaAACgHUAAoB2AAKAdwACgHkAAoC4AAKAugACgLwAAoC+AAKAwQACgMIAAoDDAAKAxAACgMUAAoDHAAKAyQACgMoAAoDLAAKAzQACgM4AAoENAAKBDwACgREAAoETAAKBFgACgRcAAoEYAAKBGQACgRoAAoEcAAKBHgACgR8AAoEgAAKBIgACgSMAAoEwAAKBOQACgTwAAoE/AAKBQQACgUQAAoFNAAKBUAACgVMAAoFWAAKBWQACgVsAAoFhAAKBcwACgYAAAoHLAAKB7gACgg4AAoIuAAKCMAACgjIAAoI0AAKCNgACgjkAAoI6AAKCOwACgj4AAoI/AAKCQQACgkIAAoJEAAKCRwACgkgAAoJJAAKCTAACgk0AAoJSAAKCXwACgmQAAoJmAAKCaAACgm0AAoJwAAKCcwACgnUAAoKaAAKCvgACguUAAoMJAAKDDAACgw4AAoMQAAKDEgACgxQAAoMWAAKDFwACgxoAAoMnAAKDOAACgzoAAoM8AAKDPgACg0AAAoNCAAKDRAACg0YAAoNIAAKDWQACg1wAAoNfAAKDYgACg2UAAoNoAAKDawACg24AAoNxAAKDcwACg7IAAoO0AAKDtgACg7gAAoO7AAKDvAACg70AAoO+AAKDvwACg8EAAoPDAAKDxAACg8UAAoPHAAKDyAAChAcAAoQJAAKECwAChA0AAoQQAAKEEQAChBIAAoQTAAKEFAAChBYAAoQYAAKEGQAChBoAAoQcAAKEHQAChFwAAoReAAKEYQAChGMAAoRmAAKEZwAChGgAAoRpAAKEagAChGwAAoRuAAKEbwAChHAAAoRyAAKEcwAChIAAAoSBAAKEggAChIQAAoTDAAKExQAChMcAAoTJAAKEzAAChM0AAoTOAAKEzwAChNAAAoTSAAKE1AAChNUAAoTWAAKE2AAChNkAAoUYAAKFGgAChRwAAoUeAAKFIQAChSIAAoUjAAKFJAAChSUAAoUnAAKFKQAChSoAAoUrAAKFLQAChS4AAoVtAAKFbwAChXEAAoVzAAKFdgAChXcAAoV4AAKFeQAChXoAAoV8AAKFfgAChX8AAoWAAAKFggAChYMAAoXCAAKFxAAChcYAAoXIAAKFywAChcwAAoXNAAKFzgAChc8AAoXRAAKF0wAChdQAAoXVAAKF1wAChdgAAoYXAAKGGQAChhsAAoYdAAKGIAAChiEAAoYiAAKGIwAChiQAAoYmAAKGKAAChikAAoYqAAKGLAAChi0AAoZSAAKGdgAChp0AAobBAAKGxAAChsYAAobIAAKGygAChswAAobOAAKGzwAChtIAAobfAAKG7gAChvAAAobyAAKG9AAChvYAAob4AAKG+gAChvwAAocLAAKHDgAChxEAAocUAAKHFwAChxoAAocdAAKHIAAChyIAAodhAAKHYwACh2UAAodnAAKHagACh2sAAodsAAKHbQACh24AAodwAAKHcgACh3MAAod0AAKHdgACh3cAAoe2AAKHuAACh7oAAoe8AAKHvwACh8AAAofBAAKHwgACh8MAAofFAAKHxwACh8gAAofJAAKHywACh8wAAogLAAKIDQACiA8AAogRAAKIFAACiBUAAogWAAKIFwACiBgAAogaAAKIHAACiB0AAogeAAKIIAACiCEAAohgAAKIYgACiGQAAohmAAKIaQACiGoAAohrAAKIbAACiG0AAohvAAKIcQACiHIAAohzAAKIdQACiHYAAoi1AAKItwACiLkAAoi7AAKIvgACiL8AAojAAAKIwQACiMIAAojEAAKIxgACiMcAAojIAAKIygACiMsAAokKAAKJDAACiQ4AAokQAAKJEwACiRQAAokVAAKJFgACiRcAAokZAAKJGwACiRwAAokdAAKJHwACiSAAAolfAAKJYQACiWMAAollAAKJaAACiWkAAolqAAKJawACiWwAAoluAAKJcAACiXEAAolyAAKJdAACiXUAAonAAAKJ4wACigMAAoojAAKKJQACiicAAoopAAKKKwACii4AAoovAAKKMAACijMAAoo0AAKKNgACijcAAoo5AAKKPAACij0AAoo+AAKKQQACikIAAopHAAKKVAACilkAAopbAAKKXQACimIAAoplAAKKaAACimoAAoqPAAKKswACitoAAor+AAKLAQACiwMAAosFAAKLBwACiwkAAosLAAKLDAACiw8AAoscAAKLLQACiy8AAosxAAKLMwACizUAAos3AAKLOQACizsAAos9AAKLTgACi1EAAotUAAKLVwACi1oAAotdAAKLYAACi2MAAotmAAKLaAACi6cAAoupAAKLqwACi60AAouwAAKLsQACi7IAAouzAAKLtAACi7YAAou4AAKLuQACi7oAAou8AAKLvQACi/wAAov+AAKMAAACjAIAAowFAAKMBgACjAcAAowIAAKMCQACjAsAAowNAAKMDgACjA8AAowRAAKMEgACjFEAAoxTAAKMVgACjFgAAoxbAAKMXAACjF0AAoxeAAKMXwACjGEAAoxjAAKMZAACjGUAAoxnAAKMaAACjHUAAox2AAKMdwACjHkAAoy4AAKMugACjLwAAoy+AAKMwQACjMIAAozDAAKMxAACjMUAAozHAAKMyQACjMoAAozLAAKMzQACjM4AAo0NAAKNDwACjREAAo0TAAKNFgACjRcAAo0YAAKNGQACjRoAAo0cAAKNHgACjR8AAo0gAAKNIgACjSMAAo1iAAKNZAACjWYAAo1oAAKNawACjWwAAo1tAAKNbgACjW8AAo1xAAKNcwACjXQAAo11AAKNdwACjXgAAo23AAKNuQACjbsAAo29AAKNwAACjcEAAo3CAAKNwwACjcQAAo3GAAKNyAACjckAAo3KAAKNzAACjc0AAo4MAAKODgACjhAAAo4SAAKOFQACjhYAAo4XAAKOGAACjhkAAo4bAAKOHQACjh4AAo4fAAKOIQACjiIAAo5HAAKOawACjpIAAo62AAKOuQACjrsAAo69AAKOvwACjsEAAo7DAAKOxAACjscAAo7UAAKO4wACjuUAAo7nAAKO6QACjusAAo7tAAKO7wACjvEAAo8AAAKPAwACjwYAAo8JAAKPDAACjw8AAo8SAAKPFQACjxcAAo9WAAKPWAACj1oAAo9cAAKPXwACj2AAAo9hAAKPYgACj2MAAo9lAAKPZwACj2gAAo9pAAKPawACj2wAAo+rAAKPrQACj68AAo+xAAKPtAACj7UAAo+2AAKPtwACj7gAAo+6AAKPvAACj70AAo++AAKPwAACj8EAApAAAAKQAgACkAQAApAGAAKQCQACkAoAApALAAKQDAACkA0AApAPAAKQEQACkBIAApATAAKQFQACkBYAApBVAAKQVwACkFoAApBcAAKQXwACkGAAApBhAAKQYgACkGMAApBlAAKQZwACkGgAApBpAAKQawACkGwAApCrAAKQrQACkK8AApCxAAKQtAACkLUAApC2AAKQtwACkLgAApC6AAKQvAACkL0AApC+AAKQwAACkMEAApEAAAKRAgACkQQAApEGAAKRCQACkQoAApELAAKRDAACkQ0AApEPAAKREQACkRIAApETAAKRFQACkRYAApFVAAKRVwACkVkAApFbAAKRXgACkV8AApFgAAKRYQACkWIAApFkAAKRZgACkWcAApFoAAKRagACkWsAApG2AAKR2QACkfkAApIZAAKSGwACkh0AApIfAAKSIQACkiQAApIlAAKSJgACkikAApIqAAKSLAACki0AApIvAAKSMQACkjIAApIzAAKSNgACkjcAApI8AAKSSQACkk4AApJQAAKSUgACklcAApJaAAKSXQACkl8AApKEAAKSqAACks8AApLzAAKS9gACkvgAApL6AAKS/AACkv4AApMAAAKTAQACkwQAApMRAAKTIgACkyQAApMmAAKTKAACkyoAApMsAAKTLgACkzAAApMyAAKTQwACk0YAApNJAAKTTAACk08AApNSAAKTVQACk1gAApNbAAKTXQACk5wAApOeAAKToAACk6IAApOlAAKTpgACk6cAApOoAAKTqQACk6sAApOtAAKTrgACk68AApOxAAKTsgACk/EAApPzAAKT9QACk/cAApP6AAKT+wACk/wAApP9AAKT/gAClAAAApQCAAKUAwAClAQAApQGAAKUBwAClEYAApRIAAKUSwAClE0AApRQAAKUUQAClFIAApRTAAKUVAAClFYAApRYAAKUWQAClFoAApRcAAKUXQAClGoAApRrAAKUbAAClG4AApStAAKUrwAClLEAApSzAAKUtgAClLcAApS4AAKUuQAClLoAApS8AAKUvgAClL8AApTAAAKUwgAClMMAApUCAAKVBAAClQYAApUIAAKVCwAClQwAApUNAAKVDgAClQ8AApURAAKVEwAClRQAApUVAAKVFwAClRgAApVXAAKVWQAClVsAApVdAAKVYAAClWEAApViAAKVYwAClWQAApVmAAKVaAAClWkAApVqAAKVbAAClW0AApWsAAKVrgAClbAAApWyAAKVtQAClbYAApW3AAKVuAAClbkAApW7AAKVvQAClb4AApW/AAKVwQAClcIAApYBAAKWAwAClgUAApYHAAKWCgAClgsAApYMAAKWDQAClg4AApYQAAKWEgAClhMAApYUAAKWFgAClhcAApY8AAKWYAAClocAAparAAKWrgAClrAAApayAAKWtAAClrYAApa4AAKWuQAClrwAApbJAAKW2AACltoAApbcAAKW3gACluAAApbiAAKW5AACluYAApb1AAKW+AAClvsAApb+AAKXAQAClwQAApcHAAKXCgAClwwAApdLAAKXTQACl08AApdRAAKXVAACl1UAApdWAAKXVwACl1gAApdaAAKXXAACl10AApdeAAKXYAACl2EAApegAAKXogACl6QAApemAAKXqQACl6oAAperAAKXrAACl60AApevAAKXsQACl7IAApezAAKXtQACl7YAApf1AAKX9wACl/kAApf7AAKX/gACl/8AApgAAAKYAQACmAIAApgEAAKYBgACmAcAApgIAAKYCgACmAsAAphKAAKYTAACmE4AAphQAAKYUwACmFQAAphVAAKYVgACmFcAAphZAAKYWwACmFwAAphdAAKYXwACmGAAApifAAKYoQACmKMAApilAAKYqAACmKkAApiqAAKYqwACmKwAApiuAAKYsAACmLEAApiyAAKYtAACmLUAApj0AAKY9gACmPgAApj6AAKY/QACmP4AApj/AAKZAAACmQEAApkDAAKZBQACmQYAApkHAAKZCQACmQoAAplJAAKZSwACmU0AAplPAAKZUgACmVMAAplUAAKZVQACmVYAAplYAAKZWgACmVsAAplcAAKZXgACmV8AApmqAAKZzQACme0AApoNAAKaDwACmhEAApoTAAKaFQACmhgAApoZAAKaGgACmh0AApoeAAKaIAACmiEAApojAAKaJgACmicAApooAAKaKwACmiwAApoxAAKaPgACmkMAAppFAAKaRwACmkwAAppPAAKaUgACmlQAApp5AAKanQACmsQAAproAAKa6wACmu0AAprvAAKa8QACmvMAApr1AAKa9gACmvkAApsGAAKbFwACmxkAApsbAAKbHQACmx8AApshAAKbIwACmyUAApsnAAKbOAACmzsAAps+AAKbQQACm0QAAptHAAKbSgACm00AAptQAAKbUgACm5EAApuTAAKblQACm5cAApuaAAKbmwACm5wAApudAAKbngACm6AAApuiAAKbowACm6QAApumAAKbpwACm+YAApvoAAKb6gACm+wAApvvAAKb8AACm/EAApvyAAKb8wACm/UAApv3AAKb+AACm/kAApv7AAKb/AACnDsAApw9AAKcQAACnEIAApxFAAKcRgACnEcAApxIAAKcSQACnEsAApxNAAKcTgACnE8AApxRAAKcUgACnF8AApxgAAKcYQACnGMAApyiAAKcpAACnKYAApyoAAKcqwACnKwAApytAAKcrgACnK8AApyxAAKcswACnLQAApy1AAKctwACnLgAApz3AAKc+QACnPsAApz9AAKdAAACnQEAAp0CAAKdAwACnQQAAp0GAAKdCAACnQkAAp0KAAKdDAACnQ0AAp1MAAKdTgACnVAAAp1SAAKdVQACnVYAAp1XAAKdWAACnVkAAp1bAAKdXQACnV4AAp1fAAKdYQACnWIAAp2hAAKdowACnaUAAp2nAAKdqgACnasAAp2sAAKdrQACna4AAp2wAAKdsgACnbMAAp20AAKdtgACnbcAAp32AAKd+AACnfoAAp38AAKd/wACngAAAp4BAAKeAgACngMAAp4FAAKeBwACnggAAp4JAAKeCwACngwAAp4xAAKeVQACnnwAAp6gAAKeowACnqUAAp6nAAKeqQACnqsAAp6tAAKergACnrEAAp6+AAKezQACns8AAp7RAAKe0wACntUAAp7XAAKe2QACntsAAp7qAAKe7QACnvAAAp7zAAKe9gACnvkAAp78AAKe/wACnwEAAp9AAAKfQgACn0QAAp9GAAKfSQACn0oAAp9LAAKfTAACn00AAp9PAAKfUQACn1IAAp9TAAKfVQACn1YAAp+VAAKflwACn5kAAp+bAAKfngACn58AAp+gAAKfoQACn6IAAp+kAAKfpgACn6cAAp+oAAKfqgACn6sAAp/qAAKf7AACn+4AAp/wAAKf8wACn/QAAp/1AAKf9gACn/cAAp/5AAKf+wACn/wAAp/9AAKf/wACoAAAAqA/AAKgQQACoEQAAqBGAAKgSQACoEoAAqBLAAKgTAACoE0AAqBPAAKgUQACoFIAAqBTAAKgVQACoFYAAqCVAAKglwACoJkAAqCbAAKgngACoJ8AAqCgAAKgoQACoKIAAqCkAAKgpgACoKcAAqCoAAKgqgACoKsAAqDqAAKg7AACoO4AAqDwAAKg8wACoPQAAqD1AAKg9gACoPcAAqD5AAKg+wACoPwAAqD9AAKg/wACoQAAAqE/AAKhQQACoUMAAqFFAAKhSAACoUkAAqFKAAKhSwACoUwAAqFOAAKhUAACoVEAAqFSAAKhVAACoVUAAqFeAAKhXwACoWEAAqGkAAKhyAACoewAAqIPAAKiNgAColYAAqJ9AAKipAACosQAAqLoAAKjDAACow4AAqMRAAKjEwACoxUAAqMXAAKjGgACox0AAqMfAAKjIQACoyQAAqMmAAKjKAACoysAAqMuAAKjLwACozQAAqNBAAKjRAACo0YAAqNJAAKjTAACo04AAqNzAAKjlwACo74AAqPiAAKj5QACo+cAAqPpAAKj6wACo+0AAqPvAAKj8AACo/MAAqQAAAKkEwACpBUAAqQXAAKkGQACpBsAAqQdAAKkHwACpCEAAqQjAAKkJQACpDgAAqQ7AAKkPgACpEEAAqREAAKkRwACpEoAAqRNAAKkUAACpFMAAqRVAAKklAACpJYAAqSZAAKkmwACpJ4AAqSfAAKkoAACpKEAAqSiAAKkpAACpKYAAqSnAAKkqAACpKoAAqSrAAKktAACpLUAAqS3AAKk9gACpPgAAqT6AAKk/AACpP8AAqUAAAKlAQACpQIAAqUDAAKlBQACpQcAAqUIAAKlCQACpQsAAqUMAAKlSwACpU0AAqVQAAKlUgACpVUAAqVWAAKlVwACpVgAAqVZAAKlWwACpV0AAqVeAAKlXwACpWEAAqViAAKlawACpWwAAqVuAAKlrQACpa8AAqWxAAKlswACpbYAAqW3AAKluAACpbkAAqW6AAKlvAACpb4AAqW/AAKlwAACpcIAAqXDAAKmAgACpgQAAqYHAAKmCQACpgwAAqYNAAKmDgACpg8AAqYQAAKmEgACphQAAqYVAAKmFgACphgAAqYZAAKmIgACpiMAAqYlAAKmZAACpmYAAqZoAAKmagACpm0AAqZuAAKmbwACpnAAAqZxAAKmcwACpnUAAqZ2AAKmdwACpnkAAqZ6AAKmuQACprsAAqa+AAKmwAACpsMAAqbEAAKmxQACpsYAAqbHAAKmyQACpssAAqbMAAKmzQACps8AAqbQAAKm3QACpt4AAqbfAAKm4QACpyAAAqciAAKnJAACpyYAAqcpAAKnKgACpysAAqcsAAKnLQACpy8AAqcxAAKnMgACpzMAAqc1AAKnNgACp3UAAqd3AAKnegACp3wAAqd/AAKngAACp4EAAqeCAAKngwACp4UAAqeHAAKniAACp4kAAqeLAAKnjAACp5sAAqeoAAKnrQACp7AAAqezAAKnuAACp7sAAqe+AAKnwAACp8UAAqgQAAKoMwACqFMAAqhzAAKodQACqHcAAqh5AAKoewACqH4AAqh/AAKogAACqIMAAqiEAAKohgACqIcAAqiJAAKojAACqI0AAqiOAAKokQACqJIAAqiXAAKopAACqKkAAqirAAKorQACqLIAAqi1AAKouAACqLoAAqjfAAKpAwACqSoAAqlOAAKpUQACqVMAAqlVAAKpVwACqVkAAqlbAAKpXAACqV8AAqlsAAKpfQACqX8AAqmBAAKpgwACqYUAAqmHAAKpiQACqYsAAqmNAAKpngACqaEAAqmkAAKppwACqaoAAqmtAAKpsAACqbMAAqm2AAKpuAACqfcAAqn5AAKp+wACqf0AAqoAAAKqAQACqgIAAqoDAAKqBAACqgYAAqoIAAKqCQACqgoAAqoMAAKqDQACqkwAAqpOAAKqUAACqlIAAqpVAAKqVgACqlcAAqpYAAKqWQACqlsAAqpdAAKqXgACql8AAqphAAKqYgACqqEAAqqjAAKqpgACqqgAAqqrAAKqrAACqq0AAqquAAKqrwACqrEAAqqzAAKqtAACqrUAAqq3AAKquAACqsUAAqrGAAKqxwACqskAAqsIAAKrCgACqwwAAqsOAAKrEQACqxIAAqsTAAKrFAACqxUAAqsXAAKrGQACqxoAAqsbAAKrHQACqx4AAqtdAAKrXwACq2EAAqtjAAKrZgACq2cAAqtoAAKraQACq2oAAqtsAAKrbgACq28AAqtwAAKrcgACq3MAAquyAAKrtAACq7YAAqu4AAKruwACq7wAAqu9AAKrvgACq78AAqvBAAKrwwACq8QAAqvFAAKrxwACq8gAAqwHAAKsCQACrAsAAqwNAAKsEAACrBEAAqwSAAKsEwACrBQAAqwWAAKsGAACrBkAAqwaAAKsHAACrB0AAqxcAAKsXgACrGAAAqxiAAKsZQACrGYAAqxnAAKsaAACrGkAAqxrAAKsbQACrG4AAqxvAAKscQACrHIAAqyXAAKsuwACrOIAAq0GAAKtCQACrQsAAq0NAAKtDwACrREAAq0TAAKtFAACrRcAAq0kAAKtMwACrTUAAq03AAKtOQACrTsAAq09AAKtPwACrUEAAq1QAAKtUwACrVYAAq1ZAAKtXAACrV8AAq1iAAKtZQACrWcAAq2mAAKtqAACraoAAq2sAAKtrwACrbAAAq2xAAKtsgACrbMAAq21AAKttwACrbgAAq25AAKtuwACrbwAAq37AAKt/QACrf8AAq4BAAKuBAACrgUAAq4GAAKuBwACrggAAq4KAAKuDAACrg0AAq4OAAKuEAACrhEAAq5QAAKuUgACrlQAAq5WAAKuWQACrloAAq5bAAKuXAACrl0AAq5fAAKuYQACrmIAAq5jAAKuZQACrmYAAq6lAAKupwACrqoAAq6sAAKurwACrrAAAq6xAAKusgACrrMAAq61AAKutwACrrgAAq65AAKuuwACrrwAAq77AAKu/QACrv8AAq8BAAKvBAACrwUAAq8GAAKvBwACrwgAAq8KAAKvDAACrw0AAq8OAAKvEAACrxEAAq9QAAKvUgACr1QAAq9WAAKvWQACr1oAAq9bAAKvXAACr10AAq9fAAKvYQACr2IAAq9jAAKvZQACr2YAAq+lAAKvpwACr6kAAq+rAAKvrgACr68AAq+wAAKvsQACr7IAAq+0AAKvtgACr7cAAq+4AAKvugACr7sAArAGAAKwKQACsEkAArBpAAKwawACsG0AArBvAAKwcQACsHQAArB1AAKwdgACsHkAArB6AAKwfAACsH0AArB/AAKwggACsIMAArCEAAKwhwACsIgAArCNAAKwmgACsJ8AArChAAKwowACsKgAArCrAAKwrgACsLAAArDVAAKw+QACsSAAArFEAAKxRwACsUkAArFLAAKxTQACsU8AArFRAAKxUgACsVUAArFiAAKxcwACsXUAArF3AAKxeQACsXsAArF9AAKxfwACsYEAArGDAAKxlAACsZcAArGaAAKxnQACsaAAArGjAAKxpgACsakAArGsAAKxrgACse0AArHvAAKx8QACsfMAArH2AAKx9wACsfgAArH5AAKx+gACsfwAArH+AAKx/wACsgAAArICAAKyAwACskIAArJEAAKyRgACskgAArJLAAKyTAACsk0AArJOAAKyTwACslEAArJTAAKyVAACslUAArJXAAKyWAACspcAArKZAAKynAACsp4AArKhAAKyogACsqMAArKkAAKypQACsqcAArKpAAKyqgACsqsAArKtAAKyrgACsrsAArK8AAKyvQACsr8AArL+AAKzAAACswIAArMEAAKzBwACswgAArMJAAKzCgACswsAArMNAAKzDwACsxAAArMRAAKzEwACsxQAArNTAAKzVQACs1cAArNZAAKzXAACs10AArNeAAKzXwACs2AAArNiAAKzZAACs2UAArNmAAKzaAACs2kAArOoAAKzqgACs6wAArOuAAKzsQACs7IAArOzAAKztAACs7UAArO3AAKzuQACs7oAArO7AAKzvQACs74AArP9AAKz/wACtAEAArQDAAK0BgACtAcAArQIAAK0CQACtAoAArQMAAK0DgACtA8AArQQAAK0EgACtBMAArRSAAK0VAACtFYAArRYAAK0WwACtFwAArRdAAK0XgACtF8AArRhAAK0YwACtGQAArRlAAK0ZwACtGgAArSNAAK0sQACtNgAArT8AAK0/wACtQEAArUDAAK1BQACtQcAArUJAAK1CgACtQ0AArUaAAK1KQACtSsAArUtAAK1LwACtTEAArUzAAK1NQACtTcAArVGAAK1SQACtUwAArVPAAK1UgACtVUAArVYAAK1WwACtV0AArWcAAK1ngACtaEAArWjAAK1pgACtacAArWoAAK1qQACtaoAArWsAAK1rgACta8AArWwAAK1sgACtbMAArXyAAK19AACtfYAArX4AAK1+wACtfwAArX9AAK1/gACtf8AArYBAAK2AwACtgQAArYFAAK2BwACtggAArZHAAK2SQACtksAArZNAAK2UAACtlEAArZSAAK2UwACtlQAArZWAAK2WAACtlkAArZaAAK2XAACtl0AAracAAK2ngACtqEAArajAAK2pgACtqcAAraoAAK2qQACtqoAArasAAK2rgACtq8AArawAAK2sgACtrMAArbyAAK29AACtvYAArb4AAK2+wACtvwAArb9AAK2/gACtv8AArcBAAK3AwACtwQAArcFAAK3BwACtwgAArdHAAK3SQACt0sAArdNAAK3UAACt1EAArdSAAK3UwACt1QAArdWAAK3WAACt1kAArdaAAK3XAACt10AArecAAK3ngACt6AAAreiAAK3pQACt6YAArenAAK3qAACt6kAArerAAK3rQACt64AArevAAK3sQACt7IAAre7AAK3vAACt74AArfLAAK3zAACt80AArfPAAK33AACt90AArfeAAK34AACt+0AArfuAAK37wACt/EAArf6AAK4CQACuBYAArglAAK4NwACuEsAArhiAAK4dAACuH0AArh+AAK4gAACuI0AAriOAAK4jwACuJEAAriSAAK4mwACuKUAArisAAAAAAAABAIAAAAAAABowQAAAAAAAAAAAAAAAAACuLQ= + + Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 +cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEJIAALAAwAGQA1ADYANwBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgB5AHoAewCBAIIAjgCkAKUApgCnAKgAqQCqAKsArACtAMYAyQDQANYA5QDmAPUA+AEHARYBGQB4ASkBOAE8AUABTwFVAVYBXgFtAXYBfAF9AZIBkwGbAZwBnQGpAb0BvgG/AcABwQHCAcMBxAHFAdQB4wHyAfYCBQIUAhUCJAIzAjQCQwJPAmECYgJjAmQCZQJmAmcCaAAvAncChgKHApYCpQLHAsgCzgLaAvAC/wMCAxEDIAMjAzIDQQNEA1MDYgNmA3UDhAOFA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gD3QPeA+YD8gQGBBUEJAQzBDcERgRVBGQEcwSCBI4EoASvBL4EzQTcBOsE+gUJBREFJgUnBS8FMAU8BVAFXwVuBX0FgQWQBZ8FrgW9BcwF2AXqBesF7AXtBe4F7wXwBfEGAAYPBh4GLQYuBj0GTAZbBmMGeAZ5BoEGjQahBrAGvwbOBtIG4QbwBv8HDgcdBykHOwdKB1kHWgdpB3gHkgeTB5kHpQe7B8oHzQfcB+sH7gf9CAwIDwgeCC0IMQhACE8IUAhiCGMIZAhlCGYIZwhoCH0IfgiGCJIIpgi1CMQI0wjXCOYI9QkECRMJIgkuCUAJTwlQCV8Jbgl9CX4JjQmcCasJwAnBCckJ1QnpCfgKBwoWChoKKQo4CkcKVgplCnEKgwqSCqEKsAq/Cs4K3QrsCwELAgsKCxYLKgs5C0gLVwtbC2oLeQuIC5cLpguyC8QL0wviC/EMAAwBDBAMHwwuDEMMRAxMDFgMbAx7DIoMmQydDKwMuwzKDNkM6Az0DQYNFQ0kDTMNQg1RDWANbw2EDYUNjQ2ZDa0NvA3LDdoN3g3tDfwOCw4aDikONQ5HDlYOZQ50DoMOkg6hDrAOxQ7GDs4O2g7uDv0PDA8bDx8PLg89D0wPWw9qD3YPiA+XD6YPtQ/ED8UP1A/jD/IQBxAIEBAQHBAwED8QThBdEGEQcBB/EI4QnRCsELgQyhDZEOgQ9xEGERURJBEzETQRNxFAEU8RXhFtEYIRgxGLEZcRqxG6EckR2BHcEesR+hIJEhgSJxIzEkUSVBJVEmQScxKCEoMSkhKhErASxRLGEs4S2hLuEv0TDBMbEx8TLhM9E0wTWxNqE3YTiBOXE6YTtRPEE9MT4hPxFAYUBxQPFBsULxQ+FE0UXBRgFG8UfhSNFJwUqxS3FMkU2BTnFPYVBRUUFSMVMhVHFUgVUBVcFXAVfxWOFZ0VoRWwFb8VzhXdFewV+BYKFhkWGhYpFjgWRxZIFlcWZhZ1FooWixaTFp8WsxbCFtEW4BbkFvMXAhcRFyAXLxc7F00XXBdrF3oXiReYF6cXthfLF8wX1BfgF/QYAxgSGCEYJRg0GEMYUhhhGHAYfBiOGJ0YrBi7GMoY2RjoGPcZDBkNGRUZIRk1GUQZUxliGWYZdRmEGZMZohmxGb0ZzxneGe0Z/BoLGgwaGxoqGjkaThpPGlcaYxp3GoYalRqkGqgatxrGGtUa5BrzGv8bERsgGy8bPhtNG2cbaBtuG3obkBufG6IbsRvAG8Mb0hvhG+Qb8xwCHAYcFRwkHDAcMRwyHDMcSBxJHFEcXRxxHIAcjxyeHKIcsRzAHM8c3hztHPkdCx0aHSkdOB1HHVYdZR10HYkdih2SHZ4dsh3BHdAd3x3jHfIeAR4QHh8eLh46HkweWx5qHnkeiB6XHqYetR7KHsse0x7fHvMfAh8RHyAfJB8zH0IfUR9gH28fex+NH5wfqx+6H8kf2B/nH/YgCyAMIBQgICA0IEMgUiBhIGUgdCCDIJIgoSCwILwgziDdIOwg+yEKISQhJSErITchTSFcIV8hbiFvIX4hgSGQIZ8hoiGxIcAhxCHTIeIiHCIdIh4iHyIgIiEiIiIjIiQiJSImIiciKCIpIioiKyIsIi0iLiIvIjAiMSIyIjMiNCI1IkoiSyJTIl8icyKCIpEioCKkIrMiwiLRIuAi4SLwIvwjDiMdIywjOyNKI1kjaCN3I4wjjSOVI6EjtSPEI9Mj4iPmI/UkBCQTJCIkMSQ9JE8kXiRtJHwkiySaJKkkuCTNJM4k1iTiJPYlBSUUJSMlJyU2JUUlVCVjJXIlfiWQJZ8lriW9Jcwl2yXqJfkmDiYPJhcmIyY3JkYmVSZkJmgmdyaGJpUmpCalJrQmwCbSJuEm8Cb/Jw4nHScsJzsnUCdRJ1knZSd5J4gnlyemJ6onuSfIJ9cn5if1KAEoEygiKDEoQChPKF4obSh8KJEokiiaKKYouij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MWNtY6lj5WQVZF1kmWTVZRFlTWW1Zbll0WYBZllmlWahZt1nGWclZ2FnnWepZ+VoIWgxaG1oqWjZaN1o4WjlaTlpPWldaY1p3WoZalVqkWqhat1rGWtVa5FrzWv9bEVsgWy9bPltNW1xba1t6W49bkFuYW6RbuFvHW9Zb5VvpW/hcB1wWXCVcNFxAXFJcYVxwXH9cjlydXKxcu1zQXNFc2VzlXPldCF0XXSZdKl05XUhdV11mXXVdgV2TXaJdsV3AXc9d3l3tXfxeEV4SXhpeJl46XkleWF5nXmteel6JXphep162XsJe1F7jXvJfAV8QXx9fLl89X0BfT19eX21fgl+DX4tfl1+rX7pfyV/YX9xf61/6YAlgGGAnYDNgRWBUYGNgcmCBYJBgn2CuYMNgxGDMYNhg7GD7YQphGWEdYSxhO2FKYVlhaGF0YYZhlWGkYbNhwmHRYeBh72HyYfdiAGIaYhtiIWItYkNiUmJVYmRic2J2YoVilGKXYqZitWK5Yshi12LdYt5i82L0YvxjCGMcYytjOmNJY01jXGNrY3pjiWOYY6RjtmPFY9Rj42PyZAxkDWQTZB9kNWREZEdkVmRlZGhkd2SGZIlkmGSnZKtkumTJZNdk2GTZZNpk72TwZPhlBGUYZSdlNmVFZUllWGVnZXZlhWWUZaBlsmXBZdBl32XuZf1mDGYbZjBmMWY5ZkVmWWZoZndmhmaKZplmqGa3ZsZm1WbhZvNnAmcRZyBnL2c+Z01nXGdxZ3JnemeGZ5pnqWe4Z8dny2faZ+ln+GgHaBZoImg0aENoUmhhaHBof2iOaJ1osmizaLtox2jbaOpo+WkIaQxpG2kqaTlpSGlXaWNpdWmEaZNpommxacBpz2neafNp9Gn8aghqHGorajpqSWpNalxqa2p6aolqmGqkarZqxWrUauNq8msBaxBrH2siazFrQGtPa1NrVGtaa2FrYmtxa4Brj2uTa61rrmu0a8Br1mvla+hr92wGbAlsGGwnbCpsOWxIbExsW2xqbHZsd2x4bHlsjmyPbJdso2y3bMZs1WzkbOhs920GbRVtJG0zbT9tUW1gbW9tfm2NbZxtq226bc9t0G3YbeRt+G4HbhZuJW4pbjhuR25WbmVudG6AbpJuoW6wbr9uzm7dbuxu+28QbxFvGW8lbzlvSG9Xb2Zvam95b4hvl2+mb7VvwW/Tb+Jv8XAAcA9wHnAtcDxwUXBScFpwZnB6cIlwmHCncKtwunDJcNhw53D2cQJxFHEjcTJxQXFQcV9xbnF9cYBxmnGbcaFxrXHDcdJx1XHkcfNx9nIFchRyF3ImcjVyOXJIcldyWHJgcmFydnJ3cn9yi3Kfcq5yvXLMctBy33Lucv1zDHMbcydzOXNIc1dzZnN1c4Rzk3Oic7dzuHPAc8xz4HPvc/50DXQRdCB0L3Q+dE10XHRodHp0iXSYdKd0tnTFdNR043TmdOp07nTydPp0/XUBdQJVJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCR+AAIEJHIEJHYEJHt4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEJGoEJGIABgASAAIEJGYEJGxAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEYAUldOUy5rZXlzWk5TLm9iamVjdHOrADsAPAA9AD4APwBAAEEAQgBDAEQARYAGgAeACIAJgAqAC4AMgA2ADoAPgBCrAEcASABJAEoASwBMAE0ATgBPAFAAUYARgNmBB6OBBvyBB8uAYoEGEYEIYYECWIEI1IECx4AwVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbV8QEEV4dGVybmFsUmVzb3VyY2VXQWNjb3VudFdMaWJyYXJ5XlBsYXliYWNrUmVjb3JkVVRoZW1l3xAQAF8AYABhAGIAHwBjAGQAIQBlAGYADgAjAGcAaAAmAGkAagBrACcAJwATAG8AcAAvACcAagBzADsAagB2AHcAeF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZVtfaXNBYnN0cmFjdIATgDeABIAEgAKAFIEBmIAEgBOBAZqABoATgQhggBIIEslD2+xXb3JkZXJlZNMAOAA5AA4AfAB+AFKhAH2AFaEAf4AWgDBeWERfUFN0ZXJlb3R5cGXZAB8AIwCDAA4AJgCEACEAaQCFAEcAfQBqAIkAFQAnAC8AeACNXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgBGAFYATgDaAAIAECIAX0wA4ADkADgCPAJkAUqkAkACRAJIAkwCUAJUAlgCXAJiAGIAZgBqAG4AcgB2AHoAfgCCpAJoAmwCcAJ0AngCfAKAAoQCigCGAJYAngCmAKoAsgC6AMYA1gDBfEBNYRFBNQ29tcG91bmR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QDwCuAK8AsAAfALEAsgCzACEAtAAOACMAtQC2ACYAtwAVAnkAFQGZAHgAeAB4AC8AeADAAlIAeAB4ABUAeIAAgF+AAIBTCAgICIAkgFYICIAACBAB3xAPAK4ArwCwAB8AsQCyALMAIQC0AA4AIwC1ALYAJgC3ABUCagAVAZkAeAB4AHgALwB4AMACUwB4AHgAFQB4gACAXYAAgFMICAgIgCSAVwgIgAAI3xAPAK4ArwCwAB8AsQCyALMAIQC0AA4AIwC1ALYAJgC3ABUATAAVAZkAeAB4AHgALwB4AMACVAB4AHgAFQB4gACAYoAAgFMICAgIgCSAWAgIgAAI3xAUAGkCpgKnAqgCqQKqAqsAHwAOAqwAIwKtACYCrgKvArACsQKyArMAIQIUAGoAagK3ACcAcABqABMAcwAnAEACvwLAACcAJwBqAsQCxQBwAC9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgBOAE4BkgASBAZiAE4ACgQGagASAC4EHoIBjgASABIATgHWBB6GBAZgTAAAAASZ6YGvTADg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AtwAVAEUAFSEpAHgAeAB4AC8AeADAAJgAeAB4ABUAeIAAgBCAAIECyggICAiAJIAgCAiAAAjTADgAOQAOIeMh/wBSrxAbIeQh5SHmIech6CHpIeoh6yHsIe0h7iHvIfADiCHyIfMDlSH1IfYh9yH4Ifkh+iH7Ifwh/SH+gQLbgQLcgQLdgQLegQLfgQLggQLhgQLigQLjgQLkgQLlgQLmgQLngHeBAuiBAumAhIEC6oEC64EC7IEC7YEC7oEC74EC8IEC8YEC8oEC868QGyIAIgEiAiIDIgQiBSIGIgciCCIJIgoiCyIMIg0iDiIPIhAiESISIhMiFCIVIhYiFyIYIhkiGoEC9IEDDIEDI4EDOoEDUoEDaYEDgIEDl4EDroEDxYED3YED9IEEC4EEIoEEOYEEUYEEaIEEf4EEloEEroEExoEE3oEE9YEFDIEFOoEFUoEFaYAwXxAQZGFya1NlY29uZGFyeUhleF8QH2RhcmtUZXJ0aWFyeVN5c3RlbUJhY2tncm91bmRIZXhfEBxsaWdodFF1YXRlcm5hcnlTeXN0ZW1GaWxsSGV4XxARbGlnaHRTZWNvbmRhcnlIZXhfEBtkYXJrUXVhdGVybmFyeVN5c3RlbUZpbGxIZXhfEBpkYXJrU2Vjb25kYXJ5U3lzdGVtRmlsbEhleF8QIWxpZ2h0U2Vjb25kYXJ5U3lzdGVtQmFja2dyb3VuZEhleF8QHmRhcmtTeXN0ZW1Hcm91cGVkQmFja2dyb3VuZEhleF8QIGRhcmtTZWNvbmRhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAYbGlnaHRTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAQZGFya1NlcGFyYXRvckhleF8QEWRhcmtTeXN0ZW1GaWxsSGV4XxAabGlnaHRUZXJ0aWFyeVN5c3RlbUZpbGxIZXhebGlnaHRBY2NlbnRIZXhfEBFsaWdodFNlcGFyYXRvckhleF8QEmxpZ2h0U3lzdGVtRmlsbEhleF8QD2xpZ2h0UHJpbWFyeUhleF5kYXJrUHJpbWFyeUhleF8QF2RhcmtTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAZZGFya1RlcnRpYXJ5U3lzdGVtRmlsbEhleF8QG2xpZ2h0U2Vjb25kYXJ5U3lzdGVtRmlsbEhleFhzZWxlY3RlZF1kYXJrQWNjZW50SGV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AACeJAAAnigAAJ4wAACeNAAAnzAAAJ84AACfQAAAn0gAAJ9QAACfVAAAn1gAAJ9cAACfYAAAn2gAAJ9wAACfdAAAn3gAAJ+AAACfhAAAoNAAAKFgAACh8AAAonAAAKMMAACjqAAApCgAAKTEAAClVAAApeAAAKZ8AACnDAAAp5wAAKgsAACoyAAAqMwAAKjUAACo3AAAqOQAAKjsAACo+AAAqQAAAKkIAACpFAAAqRwAAKkkAACpMAAAqTgAAKlAAACpSAAAqVAAAKlYAACpZAAAqXAAAKmUAACpyAAAqdQAAKncAACp6AAAqfAAAKn4AACqjAAAqxwAAKu4AACsSAAArFAAAKxYAACsYAAArGgAAKxwAACseAAArHwAAKyEAACsuAAArQQAAK0MAACtFAAArRwAAK0kAACtLAAArTQAAK08AACtRAAArUwAAK2YAACtoAAAragAAK2wAACtuAAArcAAAK3IAACt0AAArdgAAK3gAACt6AAAruQAAK7sAACu9AAArvwAAK8EAACvCAAArwwAAK8QAACvFAAArxwAAK8kAACvKAAArywAAK80AACvOAAAr1wAAK9gAACvaAAAsGQAALBsAACwdAAAsHwAALCEAACwiAAAsIwAALCQAACwlAAAsJwAALCkAACwqAAAsKwAALC0AACwuAAAsbQAALG8AACxxAAAscwAALHUAACx2AAAsdwAALHgAACx5AAAsewAALH0AACx+AAAsfwAALIEAACyCAAAsiwAALIwAACyOAAAszQAALM8AACzRAAAs0wAALNUAACzWAAAs1wAALNgAACzZAAAs2wAALN0AACzeAAAs3wAALOEAACziAAAtIQAALSMAAC0lAAAtJwAALSkAAC0qAAAtKwAALSwAAC0tAAAtLwAALTEAAC0yAAAtMwAALTUAAC02AAAtPwAALUAAAC1CAAAtgQAALYMAAC2FAAAthwAALYkAAC2KAAAtiwAALYwAAC2NAAAtjwAALZEAAC2SAAAtkwAALZUAAC2WAAAt1QAALdcAAC3ZAAAt2wAALd0AAC3eAAAt3wAALeAAAC3hAAAt4wAALeUAAC3mAAAt5wAALekAAC3qAAAt9wAALfgAAC35AAAt+wAALjoAAC48AAAuPgAALkAAAC5CAAAuQwAALkQAAC5FAAAuRgAALkgAAC5KAAAuSwAALkwAAC5OAAAuTwAALo4AAC6QAAAukgAALpQAAC6WAAAulwAALpgAAC6ZAAAumgAALpwAAC6eAAAunwAALqAAAC6iAAAuowAALq8AAC68AAAu6QAALusAAC7tAAAu7wAALvEAAC7zAAAu9QAALvcAAC75AAAu+wAALv0AAC7/AAAvAQAALwMAAC8FAAAvBwAALwkAAC8LAAAvDQAALw8AAC8RAAAvEwAAL0AAAC9CAAAvRAAAL0YAAC9JAAAvTAAAL08AAC9SAAAvVQAAL1gAAC9bAAAvXgAAL2EAAC9kAAAvZwAAL2oAAC9tAAAvcAAAL3MAAC92AAAveQAAL3wAAC9+AAAvhQAAL4sAAC+ZAAAvogAAL64AAC/BAAAvxwAAL9EAAC/WAAAv4wAAL+4AAC/5AAAv/gAAMAYAADAOAAAwGAAAMCMAADA3AAAwQQAAMFQAADBhAAAwrAAAMM8AADDvAAAxDwAAMREAADETAAAxFQAAMRcAADEZAAAxGgAAMRsAADEdAAAxHgAAMSAAADEhAAAxIwAAMSUAADEmAAAxJwAAMSkAADEqAAAxLwAAMTwAADFBAAAxQwAAMUUAADFKAAAxTAAAMU4AADFQAAAxdQAAMZkAADHAAAAx5AAAMeYAADHoAAAx6gAAMewAADHuAAAx8AAAMfEAADHzAAAyAAAAMhEAADITAAAyFQAAMhcAADIZAAAyGwAAMh0AADIfAAAyIQAAMjIAADI0AAAyNgAAMjgAADI6AAAyPAAAMj4AADJAAAAyQgAAMkQAADKDAAAyhQAAMocAADKJAAAyiwAAMowAADKNAAAyjgAAMo8AADKRAAAykwAAMpQAADKVAAAylwAAMpgAADLXAAAy2QAAMtsAADLdAAAy3wAAMuAAADLhAAAy4gAAMuMAADLlAAAy5wAAMugAADLpAAAy6wAAMuwAADMrAAAzLQAAMy8AADMxAAAzMwAAMzQAADM1AAAzNgAAMzcAADM5AAAzOwAAMzwAADM9AAAzPwAAM0AAADNNAAAzTgAAM08AADNRAAAzkAAAM5IAADOUAAAzlgAAM5gAADOZAAAzmgAAM5sAADOcAAAzngAAM6AAADOhAAAzogAAM6QAADOlAAAz5AAAM+YAADPoAAAz6gAAM+wAADPtAAAz7gAAM+8AADPwAAAz8gAAM/QAADP1AAAz9gAAM/gAADP5AAA0OAAANDoAADQ8AAA0PgAANEAAADRBAAA0QgAANEMAADREAAA0RgAANEgAADRJAAA0SgAANEwAADRNAAA0jAAANI4AADSQAAA0kgAANJQAADSVAAA0lgAANJcAADSYAAA0mgAANJwAADSdAAA0ngAANKAAADShAAA04AAANOIAADTkAAA05gAANOgAADTpAAA06gAANOsAADTsAAA07gAANPAAADTxAAA08gAANPQAADT1AAA1GgAANT4AADVlAAA1iQAANYsAADWNAAA1jwAANZEAADWTAAA1lQAANZYAADWYAAA1pQAANbQAADW2AAA1uAAANboAADW8AAA1vgAANcAAADXCAAA10QAANdMAADXVAAA11wAANdkAADXbAAA13QAANd8AADXhAAA2IAAANiIAADYkAAA2JgAANigAADYpAAA2KgAANisAADYsAAA2LgAANjAAADYxAAA2MgAANjQAADY1AAA2dAAANnYAADZ4AAA2egAANnwAADZ9AAA2fgAANn8AADaAAAA2ggAANoQAADaFAAA2hgAANogAADaJAAA2yAAANsoAADbMAAA2zgAANtAAADbRAAA20gAANtMAADbUAAA21gAANtgAADbZAAA22gAANtwAADbdAAA3HAAANx4AADcgAAA3IgAANyQAADclAAA3JgAANycAADcoAAA3KgAANywAADctAAA3LgAANzAAADcxAAA3cAAAN3IAADd0AAA3dgAAN3gAADd5AAA3egAAN3sAADd8AAA3fgAAN4AAADeBAAA3ggAAN4QAADeFAAA3xAAAN8YAADfIAAA3ygAAN8wAADfNAAA3zgAAN88AADfQAAA30gAAN9QAADfVAAA31gAAN9gAADfZAAA4GAAAOBoAADgcAAA4HgAAOCAAADghAAA4IgAAOCMAADgkAAA4JgAAOCgAADgpAAA4KgAAOCwAADgtAAA4NgAAOEkAADhWAAA4aQAAOHYAADiJAAA4oAAAOLIAADj9AAA5IAAAOUAAADlgAAA5YgAAOWQAADlmAAA5aAAAOWoAADlrAAA5bAAAOW4AADlvAAA5cQAAOXIAADl0AAA5dgAAOXcAADl4AAA5egAAOXsAADmAAAA5jQAAOZIAADmUAAA5lgAAOZsAADmdAAA5nwAAOaEAADm2AAA52wAAOf8AADomAAA6SgAAOkwAADpOAAA6UAAAOlIAADpUAAA6VgAAOlcAADpZAAA6ZgAAOncAADp5AAA6ewAAOn0AADp/AAA6gQAAOoMAADqFAAA6hwAAOpgAADqaAAA6nAAAOp4AADqgAAA6ogAAOqQAADqmAAA6qAAAOqoAADrpAAA66wAAOu0AADrvAAA68QAAOvIAADrzAAA69AAAOvUAADr3AAA6+QAAOvoAADr7AAA6/QAAOv4AADs9AAA7PwAAO0EAADtDAAA7RQAAO0YAADtHAAA7SAAAO0kAADtLAAA7TQAAO04AADtPAAA7UQAAO1IAADuRAAA7kwAAO5UAADuXAAA7mQAAO5oAADubAAA7nAAAO50AADufAAA7oQAAO6IAADujAAA7pQAAO6YAADuzAAA7tAAAO7UAADu3AAA79gAAO/gAADv6AAA7/AAAO/4AADv/AAA8AAAAPAEAADwCAAA8BAAAPAYAADwHAAA8CAAAPAoAADwLAAA8SgAAPEwAADxOAAA8UAAAPFIAADxTAAA8VAAAPFUAADxWAAA8WAAAPFoAADxbAAA8XAAAPF4AADxfAAA8ngAAPKAAADyiAAA8pAAAPKYAADynAAA8qAAAPKkAADyqAAA8rAAAPK4AADyvAAA8sAAAPLIAADyzAAA88gAAPPQAADz2AAA8+AAAPPoAADz7AAA8/AAAPP0AADz+AAA9AAAAPQIAAD0DAAA9BAAAPQYAAD0HAAA9RgAAPUgAAD1KAAA9TAAAPU4AAD1PAAA9UAAAPVEAAD1SAAA9VAAAPVYAAD1XAAA9WAAAPVoAAD1bAAA9gAAAPaQAAD3LAAA97wAAPfEAAD3zAAA99QAAPfcAAD35AAA9+wAAPfwAAD3+AAA+CwAAPhoAAD4cAAA+HgAAPiAAAD4iAAA+JAAAPiYAAD4oAAA+NwAAPjkAAD47AAA+PQAAPj8AAD5BAAA+QwAAPkUAAD5HAAA+ZwAAPpIAAD6sAAA+xQAAPt8AAD7/AAA/IgAAP2EAAD9jAAA/ZQAAP2cAAD9pAAA/agAAP2sAAD9sAAA/bQAAP28AAD9xAAA/cgAAP3MAAD91AAA/dgAAP7UAAD+3AAA/uQAAP7sAAD+9AAA/vgAAP78AAD/AAAA/wQAAP8MAAD/FAAA/xgAAP8cAAD/JAAA/ygAAQAkAAEALAABADQAAQA8AAEARAABAEgAAQBMAAEAUAABAFQAAQBcAAEAZAABAGgAAQBsAAEAdAABAHgAAQF0AAEBfAABAYQAAQGMAAEBlAABAZgAAQGcAAEBoAABAaQAAQGsAAEBtAABAbgAAQG8AAEBxAABAcgAAQHUAAEC0AABAtgAAQLgAAEC6AABAvAAAQL0AAEC+AABAvwAAQMAAAEDCAABAxAAAQMUAAEDGAABAyAAAQMkAAEEIAABBCgAAQQwAAEEOAABBEAAAQREAAEESAABBEwAAQRQAAEEWAABBGAAAQRkAAEEaAABBHAAAQR0AAEFcAABBXgAAQWAAAEFiAABBZAAAQWUAAEFmAABBZwAAQWgAAEFqAABBbAAAQW0AAEFuAABBcAAAQXEAAEF6AABBiAAAQZUAAEGjAABBsAAAQcMAAEHaAABB7AAAQjcAAEJaAABCegAAQpoAAEKcAABCngAAQqAAAEKiAABCpAAAQqUAAEKmAABCqAAAQqkAAEKrAABCrAAAQq4AAEKwAABCsQAAQrIAAEK0AABCtQAAQroAAELHAABCzAAAQs4AAELQAABC1QAAQtcAAELZAABC2wAAQwAAAEMkAABDSwAAQ28AAENxAABDcwAAQ3UAAEN3AABDeQAAQ3sAAEN8AABDfgAAQ4sAAEOcAABDngAAQ6AAAEOiAABDpAAAQ6YAAEOoAABDqgAAQ6wAAEO9AABDvwAAQ8EAAEPDAABDxQAAQ8cAAEPJAABDywAAQ80AAEPPAABEDgAARBAAAEQSAABEFAAARBYAAEQXAABEGAAARBkAAEQaAABEHAAARB4AAEQfAABEIAAARCIAAEQjAABEYgAARGQAAERmAABEaAAARGoAAERrAABEbAAARG0AAERuAABEcAAARHIAAERzAABEdAAARHYAAER3AABEtgAARLgAAES6AABEvAAARL4AAES/AABEwAAARMEAAETCAABExAAARMYAAETHAABEyAAARMoAAETLAABE2AAARNkAAETaAABE3AAARRsAAEUdAABFHwAARSEAAEUjAABFJAAARSUAAEUmAABFJwAARSkAAEUrAABFLAAARS0AAEUvAABFMAAARW8AAEVxAABFcwAARXUAAEV3AABFeAAARXkAAEV6AABFewAARX0AAEV/AABFgAAARYEAAEWDAABFhAAARcMAAEXFAABFxwAARckAAEXLAABFzAAARc0AAEXOAABFzwAARdEAAEXTAABF1AAARdUAAEXXAABF2AAARhcAAEYZAABGGwAARh0AAEYfAABGIAAARiEAAEYiAABGIwAARiUAAEYnAABGKAAARikAAEYrAABGLAAARmsAAEZtAABGbwAARnEAAEZzAABGdAAARnUAAEZ2AABGdwAARnkAAEZ7AABGfAAARn0AAEZ/AABGgAAARqUAAEbJAABG8AAARxQAAEcWAABHGAAARxoAAEccAABHHgAARyAAAEchAABHIwAARzAAAEc/AABHQQAAR0MAAEdFAABHRwAAR0kAAEdLAABHTQAAR1wAAEdeAABHYAAAR2IAAEdkAABHZwAAR2oAAEdtAABHbwAAR64AAEewAABHsgAAR7QAAEe2AABHtwAAR7gAAEe5AABHugAAR7wAAEe+AABHvwAAR8AAAEfCAABHwwAASAIAAEgEAABIBgAASAgAAEgKAABICwAASAwAAEgNAABIDgAASBAAAEgSAABIEwAASBQAAEgWAABIFwAASBkAAEhYAABIWgAASFwAAEheAABIYAAASGEAAEhiAABIYwAASGQAAEhmAABIaAAASGkAAEhqAABIbAAASG0AAEisAABIrgAASLAAAEiyAABItAAASLUAAEi2AABItwAASLgAAEi6AABIvAAASL0AAEi+AABIwAAASMEAAEkEAABJKAAASUwAAElvAABJlgAASbYAAEndAABKBAAASiQAAEpIAABKbAAASm4AAEpwAABKcgAASnQAAEp2AABKeAAASnsAAEp9AABKfwAASoIAAEqEAABKhgAASokAAEqLAABKjAAASpEAAEqeAABKoQAASqMAAEqmAABKqAAASqoAAErPAABK8wAASxoAAEs+AABLQAAAS0IAAEtEAABLRgAAS0gAAEtKAABLSwAAS00AAEtaAABLbQAAS28AAEtxAABLcwAAS3UAAEt3AABLeQAAS3sAAEt9AABLfwAAS5IAAEuUAABLlgAAS5gAAEuaAABLnAAAS54AAEugAABLogAAS6QAAEumAABL5QAAS+cAAEvpAABL6wAAS+0AAEvuAABL7wAAS/AAAEvxAABL8wAAS/UAAEv2AABL9wAAS/kAAEv6AABMAwAATAQAAEwGAABMRQAATEcAAExJAABMSwAATE0AAExOAABMTwAATFAAAExRAABMUwAATFUAAExWAABMVwAATFkAAExaAABMmQAATJsAAEydAABMnwAATKEAAEyiAABMowAATKQAAEylAABMpwAATKkAAEyqAABMqwAATK0AAEyuAABMtwAATLgAAEy6AABM+QAATPsAAEz9AABM/wAATQEAAE0CAABNAwAATQQAAE0FAABNBwAATQkAAE0KAABNCwAATQ0AAE0OAABNTQAATU8AAE1RAABNUwAATVUAAE1WAABNVwAATVgAAE1ZAABNWwAATV0AAE1eAABNXwAATWEAAE1iAABNawAATWwAAE1uAABNrQAATa8AAE2xAABNswAATbUAAE22AABNtwAATbgAAE25AABNuwAATb0AAE2+AABNvwAATcEAAE3CAABOAQAATgMAAE4FAABOBwAATgkAAE4KAABOCwAATgwAAE4NAABODwAAThEAAE4SAABOEwAAThUAAE4WAABOIwAATiQAAE4lAABOJwAATmYAAE5oAABOagAATmwAAE5uAABObwAATnAAAE5xAABOcgAATnQAAE52AABOdwAATngAAE56AABOewAATroAAE68AABOvgAATsAAAE7CAABOwwAATsQAAE7FAABOxgAATsgAAE7KAABOywAATswAAE7OAABOzwAATt0AAE7qAABO+QAATvsAAE79AABO/wAATwEAAE8DAABPBQAATwcAAE8WAABPGAAATxsAAE8eAABPIQAATyQAAE8nAABPKgAATywAAE8zAABPOgAATz0AAE9IAABPUwAAT18AAE+qAABPzQAAT+0AAFANAABQDwAAUBEAAFATAABQFQAAUBcAAFAYAABQGQAAUBsAAFAcAABQHgAAUB8AAFAhAABQIwAAUCQAAFAlAABQJwAAUCgAAFAtAABQOgAAUD8AAFBBAABQQwAAUEgAAFBKAABQTQAAUE8AAFB0AABQmAAAUL8AAFDjAABQ5QAAUOcAAFDpAABQ6wAAUO0AAFDvAABQ8AAAUPIAAFD/AABREAAAURIAAFEUAABRFgAAURgAAFEaAABRHAAAUR4AAFEgAABRMQAAUTMAAFE1AABRNwAAUTkAAFE7AABRPQAAUT8AAFFCAABRRAAAUYMAAFGFAABRhwAAUYkAAFGLAABRjAAAUY0AAFGOAABRjwAAUZEAAFGTAABRlAAAUZUAAFGXAABRmAAAUdcAAFHZAABR2wAAUd0AAFHfAABR4AAAUeEAAFHiAABR4wAAUeUAAFHnAABR6AAAUekAAFHrAABR7AAAUisAAFItAABSLwAAUjEAAFIzAABSNAAAUjUAAFI2AABSNwAAUjkAAFI7AABSPAAAUj0AAFI/AABSQAAAUk0AAFJOAABSTwAAUlEAAFKQAABSkgAAUpQAAFKWAABSmAAAUpkAAFKaAABSmwAAUpwAAFKeAABSoAAAUqEAAFKiAABSpAAAUqUAAFLkAABS5gAAUugAAFLqAABS7AAAUu0AAFLuAABS7wAAUvAAAFLyAABS9AAAUvUAAFL2AABS+AAAUvkAAFM4AABTOgAAUzwAAFM+AABTQAAAU0EAAFNCAABTQwAAU0QAAFNGAABTSAAAU0kAAFNKAABTTAAAU00AAFOMAABTjgAAU5AAAFOSAABTlAAAU5UAAFOWAABTlwAAU5gAAFOaAABTnAAAU50AAFOeAABToAAAU6EAAFPgAABT4gAAU+QAAFPmAABT6AAAU+kAAFPqAABT6wAAU+wAAFPuAABT8AAAU/EAAFPyAABT9AAAU/UAAFQaAABUPgAAVGUAAFSJAABUiwAAVI0AAFSPAABUkQAAVJMAAFSVAABUlgAAVJkAAFSmAABUtQAAVLcAAFS5AABUuwAAVL0AAFS/AABUwQAAVMMAAFTSAABU1QAAVNgAAFTbAABU3gAAVOEAAFTkAABU5wAAVOkAAFUoAABVKgAAVS0AAFUvAABVMgAAVTMAAFU0AABVNQAAVTYAAFU4AABVOgAAVTsAAFU8AABVPgAAVT8AAFVBAABVgAAAVYIAAFWEAABVhgAAVYkAAFWKAABViwAAVYwAAFWNAABVjwAAVZEAAFWSAABVkwAAVZUAAFWWAABV1QAAVdcAAFXZAABV2wAAVd4AAFXfAABV4AAAVeEAAFXiAABV5AAAVeYAAFXnAABV6AAAVeoAAFXrAABWKgAAViwAAFYvAABWMQAAVjQAAFY1AABWNgAAVjcAAFY4AABWOgAAVjwAAFY9AABWPgAAVkAAAFZBAABWQwAAVoIAAFaEAABWhgAAVogAAFaLAABWjAAAVo0AAFaOAABWjwAAVpEAAFaTAABWlAAAVpUAAFaXAABWmAAAVtcAAFbZAABW2wAAVt0AAFbgAABW4QAAVuIAAFbjAABW5AAAVuYAAFboAABW6QAAVuoAAFbsAABW7QAAVywAAFcuAABXMAAAVzIAAFc1AABXNgAAVzcAAFc4AABXOQAAVzsAAFc9AABXPgAAVz8AAFdBAABXQgAAV40AAFewAABX0AAAV/AAAFfyAABX9AAAV/YAAFf4AABX+gAAV/sAAFf8AABX/wAAWAAAAFgCAABYAwAAWAUAAFgHAABYCAAAWAkAAFgMAABYDQAAWBIAAFgfAABYJAAAWCYAAFgoAABYLQAAWDAAAFgzAABYNQAAWFoAAFh+AABYpQAAWMkAAFjMAABYzgAAWNAAAFjSAABY1AAAWNYAAFjXAABY2gAAWOcAAFj4AABY+gAAWPwAAFj+AABZAAAAWQIAAFkEAABZBgAAWQgAAFkZAABZHAAAWR8AAFkiAABZJQAAWSgAAFkrAABZLgAAWTEAAFkzAABZcgAAWXQAAFl2AABZeAAAWXsAAFl8AABZfQAAWX4AAFl/AABZgQAAWYMAAFmEAABZhQAAWYcAAFmIAABZxwAAWckAAFnLAABZzQAAWdAAAFnRAABZ0gAAWdMAAFnUAABZ1gAAWdgAAFnZAABZ2gAAWdwAAFndAABaHAAAWh4AAFohAABaIwAAWiYAAFonAABaKAAAWikAAFoqAABaLAAAWi4AAFovAABaMAAAWjIAAFozAABaQAAAWkEAAFpCAABaRAAAWoMAAFqFAABahwAAWokAAFqMAABajQAAWo4AAFqPAABakAAAWpIAAFqUAABalQAAWpYAAFqYAABamQAAWtgAAFraAABa3AAAWt4AAFrhAABa4gAAWuMAAFrkAABa5QAAWucAAFrpAABa6gAAWusAAFrtAABa7gAAWy0AAFsvAABbMQAAWzMAAFs2AABbNwAAWzgAAFs5AABbOgAAWzwAAFs+AABbPwAAW0AAAFtCAABbQwAAW4IAAFuEAABbhgAAW4gAAFuLAABbjAAAW40AAFuOAABbjwAAW5EAAFuTAABblAAAW5UAAFuXAABbmAAAW9cAAFvZAABb2wAAW90AAFvgAABb4QAAW+IAAFvjAABb5AAAW+YAAFvoAABb6QAAW+oAAFvsAABb7QAAXBIAAFw2AABcXQAAXIEAAFyEAABchgAAXIgAAFyKAABcjAAAXI4AAFyPAABckgAAXJ8AAFyuAABcsAAAXLIAAFy0AABctgAAXLgAAFy6AABcvAAAXMsAAFzOAABc0QAAXNQAAFzXAABc2gAAXN0AAFzgAABc4gAAXSEAAF0jAABdJQAAXScAAF0qAABdKwAAXSwAAF0tAABdLgAAXTAAAF0yAABdMwAAXTQAAF02AABdNwAAXXYAAF14AABdegAAXXwAAF1/AABdgAAAXYEAAF2CAABdgwAAXYUAAF2HAABdiAAAXYkAAF2LAABdjAAAXcsAAF3NAABdzwAAXdEAAF3UAABd1QAAXdYAAF3XAABd2AAAXdoAAF3cAABd3QAAXd4AAF3gAABd4QAAXiAAAF4iAABeJAAAXiYAAF4pAABeKgAAXisAAF4sAABeLQAAXi8AAF4xAABeMgAAXjMAAF41AABeNgAAXnUAAF53AABeeQAAXnsAAF5+AABefwAAXoAAAF6BAABeggAAXoQAAF6GAABehwAAXogAAF6KAABeiwAAXsoAAF7MAABezgAAXtAAAF7TAABe1AAAXtUAAF7WAABe1wAAXtkAAF7bAABe3AAAXt0AAF7fAABe4AAAXx8AAF8hAABfIwAAXyUAAF8oAABfKQAAXyoAAF8rAABfLAAAXy4AAF8wAABfMQAAXzIAAF80AABfNQAAX4AAAF+jAABfwwAAX+MAAF/lAABf5wAAX+kAAF/rAABf7QAAX+4AAF/vAABf8gAAX/MAAF/1AABf9gAAX/gAAF/6AABf+wAAX/wAAF//AABgAAAAYAUAAGASAABgFwAAYBkAAGAbAABgIAAAYCMAAGAmAABgKAAAYE0AAGBxAABgmAAAYLwAAGC/AABgwQAAYMMAAGDFAABgxwAAYMkAAGDKAABgzQAAYNoAAGDrAABg7QAAYO8AAGDxAABg8wAAYPUAAGD3AABg+QAAYPsAAGEMAABhDwAAYRIAAGEVAABhGAAAYRsAAGEeAABhIQAAYSQAAGEmAABhZQAAYWcAAGFpAABhawAAYW4AAGFvAABhcAAAYXEAAGFyAABhdAAAYXYAAGF3AABheAAAYXoAAGF7AABhugAAYbwAAGG+AABhwAAAYcMAAGHEAABhxQAAYcYAAGHHAABhyQAAYcsAAGHMAABhzQAAYc8AAGHQAABiDwAAYhEAAGIUAABiFgAAYhkAAGIaAABiGwAAYhwAAGIdAABiHwAAYiEAAGIiAABiIwAAYiUAAGImAABiMwAAYjQAAGI1AABiNwAAYnYAAGJ4AABiegAAYnwAAGJ/AABigAAAYoEAAGKCAABigwAAYoUAAGKHAABiiAAAYokAAGKLAABijAAAYssAAGLNAABizwAAYtEAAGLUAABi1QAAYtYAAGLXAABi2AAAYtoAAGLcAABi3QAAYt4AAGLgAABi4QAAYyAAAGMiAABjJAAAYyYAAGMpAABjKgAAYysAAGMsAABjLQAAYy8AAGMxAABjMgAAYzMAAGM1AABjNgAAY3UAAGN3AABjeQAAY3sAAGN+AABjfwAAY4AAAGOBAABjggAAY4QAAGOGAABjhwAAY4gAAGOKAABjiwAAY8oAAGPMAABjzgAAY9AAAGPTAABj1AAAY9UAAGPWAABj1wAAY9kAAGPbAABj3AAAY90AAGPfAABj4AAAZAUAAGQpAABkUAAAZHQAAGR3AABkeQAAZHsAAGR9AABkfwAAZIEAAGSCAABkhQAAZJIAAGShAABkowAAZKUAAGSnAABkqQAAZKsAAGStAABkrwAAZL4AAGTBAABkxAAAZMcAAGTKAABkzQAAZNAAAGTTAABk1QAAZRQAAGUWAABlGQAAZRsAAGUeAABlHwAAZSAAAGUhAABlIgAAZSQAAGUmAABlJwAAZSgAAGUqAABlKwAAZWoAAGVsAABlbgAAZXAAAGVzAABldAAAZXUAAGV2AABldwAAZXkAAGV7AABlfAAAZX0AAGV/AABlgAAAZb8AAGXBAABlwwAAZcUAAGXIAABlyQAAZcoAAGXLAABlzAAAZc4AAGXQAABl0QAAZdIAAGXUAABl1QAAZhQAAGYWAABmGQAAZhsAAGYeAABmHwAAZiAAAGYhAABmIgAAZiQAAGYmAABmJwAAZigAAGYqAABmKwAAZi0AAGZsAABmbgAAZnAAAGZyAABmdQAAZnYAAGZ3AABmeAAAZnkAAGZ7AABmfQAAZn4AAGZ/AABmgQAAZoIAAGbBAABmwwAAZsUAAGbHAABmygAAZssAAGbMAABmzQAAZs4AAGbQAABm0gAAZtMAAGbUAABm1gAAZtcAAGcWAABnGAAAZxoAAGccAABnHwAAZyAAAGchAABnIgAAZyMAAGclAABnJwAAZygAAGcpAABnKwAAZywAAGd3AABnmgAAZ7oAAGfaAABn3AAAZ94AAGfgAABn4gAAZ+QAAGflAABn5gAAZ+kAAGfqAABn7AAAZ+0AAGfvAABn8QAAZ/IAAGfzAABn9gAAZ/cAAGf8AABoCQAAaA4AAGgQAABoEgAAaBcAAGgaAABoHQAAaB8AAGhEAABoaAAAaI8AAGizAABotgAAaLgAAGi6AABovAAAaL4AAGjAAABowQAAaMQAAGjRAABo4gAAaOQAAGjmAABo6AAAaOoAAGjsAABo7gAAaPAAAGjyAABpAwAAaQYAAGkJAABpDAAAaQ8AAGkSAABpFQAAaRgAAGkbAABpHQAAaVwAAGleAABpYAAAaWIAAGllAABpZgAAaWcAAGloAABpaQAAaWsAAGltAABpbgAAaW8AAGlxAABpcgAAabEAAGmzAABptQAAabcAAGm6AABpuwAAabwAAGm9AABpvgAAacAAAGnCAABpwwAAacQAAGnGAABpxwAAagYAAGoIAABqCwAAag0AAGoQAABqEQAAahIAAGoTAABqFAAAahYAAGoYAABqGQAAahoAAGocAABqHQAAaioAAGorAABqLAAAai4AAGptAABqbwAAanEAAGpzAABqdgAAancAAGp4AABqeQAAanoAAGp8AABqfgAAan8AAGqAAABqggAAaoMAAGrCAABqxAAAasYAAGrIAABqywAAaswAAGrNAABqzgAAas8AAGrRAABq0wAAatQAAGrVAABq1wAAatgAAGsXAABrGQAAaxsAAGsdAABrIAAAayEAAGsiAABrIwAAayQAAGsmAABrKAAAaykAAGsqAABrLAAAay0AAGtsAABrbgAAa3AAAGtyAABrdQAAa3YAAGt3AABreAAAa3kAAGt7AABrfQAAa34AAGt/AABrgQAAa4IAAGvBAABrwwAAa8UAAGvHAABrygAAa8sAAGvMAABrzQAAa84AAGvQAABr0gAAa9MAAGvUAABr1gAAa9cAAGv8AABsIAAAbEcAAGxrAABsbgAAbHAAAGxyAABsdAAAbHYAAGx4AABseQAAbHwAAGyJAABsmAAAbJoAAGycAABsngAAbKAAAGyiAABspAAAbKYAAGy1AABsuAAAbLsAAGy+AABswQAAbMQAAGzHAABsygAAbMwAAG0LAABtDQAAbQ8AAG0RAABtFAAAbRUAAG0WAABtFwAAbRgAAG0aAABtHAAAbR0AAG0eAABtIAAAbSEAAG1gAABtYgAAbWQAAG1mAABtaQAAbWoAAG1rAABtbAAAbW0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AAHjYAAB42gAAeNwAAHjeAAB47wAAePIAAHj1AAB4+AAAePsAAHj+AAB5AQAAeQQAAHkHAAB5CQAAeUgAAHlKAAB5TAAAeU4AAHlRAAB5UgAAeVMAAHlUAAB5VQAAeVcAAHlZAAB5WgAAeVsAAHldAAB5XgAAeZ0AAHmfAAB5oQAAeaMAAHmmAAB5pwAAeagAAHmpAAB5qgAAeawAAHmuAAB5rwAAebAAAHmyAAB5swAAefIAAHn0AAB59wAAefkAAHn8AAB5/QAAef4AAHn/AAB6AAAAegIAAHoEAAB6BQAAegYAAHoIAAB6CQAAehYAAHoXAAB6GAAAehoAAHpZAAB6WwAAel0AAHpfAAB6YgAAemMAAHpkAAB6ZQAAemYAAHpoAAB6agAAemsAAHpsAAB6bgAAem8AAHquAAB6sAAAerIAAHq0AAB6twAAergAAHq5AAB6ugAAersAAHq9AAB6vwAAesAAAHrBAAB6wwAAesQAAHsDAAB7BQAAewcAAHsJAAB7DAAAew0AAHsOAAB7DwAAexAAAHsSAAB7FAAAexUAAHsWAAB7GAAAexkAAHtYAAB7WgAAe1wAAHteAAB7YQAAe2IAAHtjAAB7ZAAAe2UAAHtnAAB7aQAAe2oAAHtrAAB7bQAAe24AAHutAAB7rwAAe7EAAHuzAAB7tgAAe7cAAHu4AAB7uQAAe7oAAHu8AAB7vgAAe78AAHvAAAB7wgAAe8MAAHvoAAB8DAAAfDMAAHxXAAB8WgAAfFwAAHxeAAB8YAAAfGIAAHxkAAB8ZQAAfGgAAHx1AAB8hAAAfIYAAHyIAAB8igAAfIwAAHyOAAB8kAAAfJIAAHyhAAB8pAAAfKcAAHyqAAB8rQAAfLAAAHyzAAB8tgAAfLgAAHz3AAB8+QAAfPsAAHz9AAB9AAAAfQEAAH0CAAB9AwAAfQQAAH0GAAB9CAAAfQkAAH0KAAB9DAAAfQ0AAH1MAAB9TgAAfVAAAH1SAAB9VQAAfVYAAH1XAAB9WAAAfVkAAH1bAAB9XQAAfV4AAH1fAAB9YQAAfWIAAH2hAAB9owAAfaUAAH2nAAB9qgAAfasAAH2sAAB9rQAAfa4AAH2wAAB9sgAAfbMAAH20AAB9tgAAfbcAAH32AAB9+AAAffsAAH39AAB+AAAAfgEAAH4CAAB+AwAAfgQAAH4GAAB+CAAAfgkAAH4KAAB+DAAAfg0AAH4QAAB+TwAAflEAAH5TAAB+VQAAflgAAH5ZAAB+WgAAflsAAH5cAAB+XgAAfmAAAH5hAAB+YgAAfmQAAH5lAAB+pAAAfqYAAH6oAAB+qgAAfq0AAH6uAAB+rwAAfrAAAH6xAAB+swAAfrUAAH62AAB+twAAfrkAAH66AAB++QAAfvsAAH79AAB+/wAAfwIAAH8DAAB/BAAAfwUAAH8GAAB/CAAAfwoAAH8LAAB/DAAAfw4AAH8PAAB/WgAAf30AAH+dAAB/vQAAf78AAH/BAAB/wwAAf8UAAH/HAAB/yAAAf8kAAH/MAAB/zQAAf88AAH/QAAB/0gAAf9QAAH/VAAB/1gAAf9kAAH/aAAB/3wAAf+wAAH/xAAB/8wAAf/UAAH/6AAB//QAAgAAAAIACAACAJwAAgEsAAIByAACAlgAAgJkAAICbAACAnQAAgJ8AAIChAACAowAAgKQAAICnAACAtAAAgMUAAIDHAACAyQAAgMsAAIDNAACAzwAAgNEAAIDTAACA1QAAgOYAAIDpAACA7AAAgO8AAIDyAACA9QAAgPgAAID7AACA/gAAgQAAAIE/AACBQQAAgUMAAIFFAACBSAAAgUkAAIFKAACBSwAAgUwAAIFOAACBUAAAgVEAAIFSAACBVAAAgVUAAIGUAACBlgAAgZgAAIGaAACBnQAAgZ4AAIGfAACBoAAAgaEAAIGjAACBpQAAgaYAAIGnAACBqQAAgaoAAIHpAACB6wAAge4AAIHwAACB8wAAgfQAAIH1AACB9gAAgfcAAIH5AACB+wAAgfwAAIH9AACB/wAAggAAAIINAACCDgAAgg8AAIIRAACCUAAAglIAAIJUAACCVgAAglkAAIJaAACCWwAAglwAAIJdAACCXwAAgmEAAIJiAACCYwAAgmUAAIJmAACCpQAAgqcAAIKpAACCqwAAgq4AAIKvAACCsAAAgrEAAIKyAACCtAAAgrYAAIK3AACCuAAAgroAAIK7AACC+gAAgvwAAIL+AACDAAAAgwMAAIMEAACDBQAAgwYAAIMHAACDCQAAgwsAAIMMAACDDQAAgw8AAIMQAACDTwAAg1EAAINTAACDVQAAg1gAAINZAACDWgAAg1sAAINcAACDXgAAg2AAAINhAACDYgAAg2QAAINlAACDpAAAg6YAAIOoAACDqgAAg60AAIOuAACDrwAAg7AAAIOxAACDswAAg7UAAIO2AACDtwAAg7kAAIO6AACD3wAAhAMAAIQqAACETgAAhFEAAIRTAACEVQAAhFcAAIRZAACEWwAAhFwAAIRfAACEbAAAhHsAAIR9AACEfwAAhIEAAISDAACEhQAAhIcAAISJAACEmAAAhJsAAISeAACEoQAAhKQAAISnAACEqgAAhK0AAISvAACE7gAAhPAAAITyAACE9AAAhPcAAIT4AACE+QAAhPoAAIT7AACE/QAAhP8AAIUAAACFAQAAhQMAAIUEAACFQwAAhUUAAIVHAACFSQAAhUwAAIVNAACFTgAAhU8AAIVQAACFUgAAhVQAAIVVAACFVgAAhVgAAIVZAACFmAAAhZoAAIWcAACFngAAhaEAAIWiAACFowAAhaQAAIWlAACFpwAAhakAAIWqAACFqwAAha0AAIWuAACF7QAAhe8AAIXxAACF8wAAhfYAAIX3AACF+AAAhfkAAIX6AACF/AAAhf4AAIX/AACGAAAAhgIAAIYDAACGQgAAhkQAAIZGAACGSAAAhksAAIZMAACGTQAAhk4AAIZPAACGUQAAhlMAAIZUAACGVQAAhlcAAIZYAACGlwAAhpkAAIabAACGnQAAhqAAAIahAACGogAAhqMAAIakAACGpgAAhqgAAIapAACGqgAAhqwAAIatAACG7AAAhu4AAIbwAACG8gAAhvUAAIb2AACG9wAAhvgAAIb5AACG+wAAhv0AAIb+AACG/wAAhwEAAIcCAACHDQAAhxYAAIcXAACHGQAAhyIAAIctAACHPAAAh0cAAIdVAACHagAAh34AAIeVAACHpwAAh+YAAIfoAACH6gAAh+wAAIfuAACH7wAAh/AAAIfxAACH8gAAh/QAAIf2AACH9wAAh/gAAIf6AACH+wAAiDoAAIg8AACIPgAAiEAAAIhCAACIQwAAiEQAAIhFAACIRgAAiEgAAIhKAACISwAAiEwAAIhOAACITwAAiI4AAIiQAACIkwAAiJUAAIiXAACImAAAiJkAAIiaAACImwAAiJ0AAIifAACIoAAAiKEAAIijAACIpAAAiO8AAIkSAACJMgAAiVIAAIlUAACJVgAAiVgAAIlaAACJXAAAiV0AAIleAACJYQAAiWIAAIlkAACJZQAAiWcAAIlpAACJagAAiWsAAIluAACJbwAAiXQAAImBAACJhgAAiYgAAImKAACJjwAAiZIAAImVAACJlwAAibwAAIngAACKBwAAiisAAIouAACKMAAAijIAAIo0AACKNgAAijgAAIo5AACKPAAAikkAAIpaAACKXAAAil4AAIpgAACKYgAAimQAAIpmAACKaAAAimoAAIp7AACKfgAAioEAAIqEAACKhwAAiooAAIqNAACKkAAAipMAAIqVAACK1AAAitYAAIrYAACK2gAAit0AAIreAACK3wAAiuAAAIrhAACK4wAAiuUAAIrmAACK5wAAiukAAIrqAACLKQAAiysAAIstAACLLwAAizIAAIszAACLNAAAizUAAIs2AACLOAAAizoAAIs7AACLPAAAiz4AAIs/AACLfgAAi4AAAIuDAACLhQAAi4gAAIuJAACLigAAi4sAAIuMAACLjgAAi5AAAIuRAACLkgAAi5QAAIuVAACLogAAi6MAAIukAACLpgAAi+UAAIvnAACL6QAAi+sAAIvuAACL7wAAi/AAAIvxAACL8gAAi/QAAIv2AACL9wAAi/gAAIv6AACL+wAAjDoAAIw8AACMPgAAjEAAAIxDAACMRAAAjEUAAIxGAACMRwAAjEkAAIxLAACMTAAAjE0AAIxPAACMUAAAjI8AAIyRAACMkwAAjJUAAIyYAACMmQAAjJoAAIybAACMnAAAjJ4AAIygAACMoQAAjKIAAIykAACMpQAAjOQAAIzmAACM6AAAjOoAAIztAACM7gAAjO8AAIzwAACM8QAAjPMAAIz1AACM9gAAjPcAAIz5AACM+gAAjTkAAI07AACNPQAAjT8AAI1CAACNQwAAjUQAAI1FAACNRgAAjUgAAI1KAACNSwAAjUwAAI1OAACNTwAAjXQAAI2YAACNvwAAjeMAAI3mAACN6AAAjeoAAI3sAACN7gAAjfAAAI3xAACN9AAAjgEAAI4QAACOEgAAjhQAAI4WAACOGAAAjhoAAI4cAACOHgAAji0AAI4wAACOMwAAjjYAAI45AACOPAAAjj8AAI5CAACORAAAjoMAAI6FAACOiAAAjooAAI6NAACOjgAAjo8AAI6QAACOkQAAjpMAAI6VAACOlgAAjpcAAI6ZAACOmgAAjp4AAI7dAACO3wAAjuEAAI7jAACO5gAAjucAAI7oAACO6QAAjuoAAI7sAACO7gAAju8AAI7wAACO8gAAjvMAAI8yAACPNAAAjzYAAI84AACPOwAAjzwAAI89AACPPgAAjz8AAI9BAACPQwAAj0QAAI9FAACPRwAAj0gAAI+HAACPiQAAj4wAAI+OAACPkQAAj5IAAI+TAACPlAAAj5UAAI+XAACPmQAAj5oAAI+bAACPnQAAj54AAI+hAACP4AAAj+IAAI/kAACP5gAAj+kAAI/qAACP6wAAj+wAAI/tAACP7wAAj/EAAI/yAACP8wAAj/UAAI/2AACQNQAAkDcAAJA5AACQOwAAkD4AAJA/AACQQAAAkEEAAJBCAACQRAAAkEYAAJBHAACQSAAAkEoAAJBLAACQigAAkIwAAJCOAACQkAAAkJMAAJCUAACQlQAAkJYAAJCXAACQmQAAkJsAAJCcAACQnQAAkJ8AAJCgAACQ6wAAkQ4AAJEuAACRTgAAkVAAAJFSAACRVAAAkVYAAJFYAACRWQAAkVoAAJFdAACRXgAAkWAAAJFhAACRYwAAkWUAAJFmAACRZwAAkWoAAJFrAACRdAAAkYEAAJGGAACRiAAAkYoAAJGPAACRkgAAkZUAAJGXAACRvAAAkeAAAJIHAACSKwAAki4AAJIwAACSMgAAkjQAAJI2AACSOAAAkjkAAJI8AACSSQAAkloAAJJcAACSXgAAkmAAAJJiAACSZAAAkmYAAJJoAACSagAAknsAAJJ+AACSgQAAkoQAAJKHAACSigAAko0AAJKQAACSkwAAkpUAAJLUAACS1gAAktgAAJLaAACS3QAAkt4AAJLfAACS4AAAkuEAAJLjAACS5QAAkuYAAJLnAACS6QAAkuoAAJMpAACTKwAAky0AAJMvAACTMgAAkzMAAJM0AACTNQAAkzYAAJM4AACTOgAAkzsAAJM8AACTPgAAkz8AAJN+AACTgAAAk4MAAJOFAACTiAAAk4kAAJOKAACTiwAAk4wAAJOOAACTkAAAk5EAAJOSAACTlAAAk5UAAJOiAACTowAAk6QAAJOmAACT5QAAk+cAAJPpAACT6wAAk+4AAJPvAACT8AAAk/EAAJPyAACT9AAAk/YAAJP3AACT+AAAk/oAAJP7AACUOgAAlDwAAJQ+AACUQAAAlEMAAJREAACURQAAlEYAAJRHAACUSQAAlEsAAJRMAACUTQAAlE8AAJRQAACUjwAAlJEAAJSTAACUlQAAlJgAAJSZAACUmgAAlJsAAJScAACUngAAlKAAAJShAACUogAAlKQAAJSlAACU5AAAlOYAAJToAACU6gAAlO0AAJTuAACU7wAAlPAAAJTxAACU8wAAlPUAAJT2AACU9wAAlPkAAJT6AACVOQAAlTsAAJU9AACVPwAAlUIAAJVDAACVRAAAlUUAAJVGAACVSAAAlUoAAJVLAACVTAAAlU4AAJVPAACVdAAAlZgAAJW/AACV4wAAleYAAJXoAACV6gAAlewAAJXuAACV8AAAlfEAAJX0AACWAQAAlhAAAJYSAACWFAAAlhYAAJYYAACWGgAAlhwAAJYeAACWLQAAljAAAJYzAACWNgAAljkAAJY8AACWPwAAlkIAAJZEAACWgwAAloUAAJaIAACWigAAlo0AAJaOAACWjwAAlpAAAJaRAACWkwAAlpUAAJaWAACWlwAAlpkAAJaaAACW2QAAltsAAJbdAACW3wAAluIAAJbjAACW5AAAluUAAJbmAACW6AAAluoAAJbrAACW7AAAlu4AAJbvAACXLgAAlzAAAJcyAACXNAAAlzcAAJc4AACXOQAAlzoAAJc7AACXPQAAlz8AAJdAAACXQQAAl0MAAJdEAACXgwAAl4UAAJeIAACXigAAl40AAJeOAACXjwAAl5AAAJeRAACXkwAAl5UAAJeWAACXlwAAl5kAAJeaAACX2QAAl9sAAJfdAACX3wAAl+IAAJfjAACX5AAAl+UAAJfmAACX6AAAl+oAAJfrAACX7AAAl+4AAJfvAACYLgAAmDAAAJgyAACYNAAAmDcAAJg4AACYOQAAmDoAAJg7AACYPQAAmD8AAJhAAACYQQAAmEMAAJhEAACYgwAAmIUAAJiHAACYiQAAmIwAAJiNAACYjgAAmI8AAJiQAACYkgAAmJQAAJiVAACYlgAAmJgAAJiZAACY5AAAmQcAAJknAACZRwAAmUkAAJlLAACZTQAAmU8AAJlRAACZUgAAmVMAAJlWAACZVwAAmVkAAJlaAACZXAAAmV4AAJlfAACZYAAAmWMAAJlkAACZaQAAmXYAAJl7AACZfQAAmX8AAJmEAACZhwAAmYoAAJmMAACZsQAAmdUAAJn8AACaIAAAmiMAAJolAACaJwAAmikAAJorAACaLQAAmi4AAJoxAACaPgAAmk8AAJpRAACaUwAAmlUAAJpXAACaWQAAmlsAAJpdAACaXwAAmnAAAJpzAACadgAAmnkAAJp8AACafwAAmoIAAJqFAACaiAAAmooAAJrJAACaywAAms0AAJrPAACa0gAAmtMAAJrUAACa1QAAmtYAAJrYAACa2gAAmtsAAJrcAACa3gAAmt8AAJseAACbIAAAmyIAAJskAACbJwAAmygAAJspAACbKgAAmysAAJstAACbLwAAmzAAAJsxAACbMwAAmzQAAJtzAACbdQAAm3gAAJt6AACbfQAAm34AAJt/AACbgAAAm4EAAJuDAACbhQAAm4YAAJuHAACbiQAAm4oAAJuXAACbmAAAm5kAAJubAACb2gAAm9wAAJveAACb4AAAm+MAAJvkAACb5QAAm+YAAJvnAACb6QAAm+sAAJvsAACb7QAAm+8AAJvwAACcLwAAnDEAAJwzAACcNQAAnDgAAJw5AACcOgAAnDsAAJw8AACcPgAAnEAAAJxBAACcQgAAnEQAAJxFAACchAAAnIYAAJyIAACcigAAnI0AAJyOAACcjwAAnJAAAJyRAACckwAAnJUAAJyWAACclwAAnJkAAJyaAACc2QAAnNsAAJzdAACc3wAAnOIAAJzjAACc5AAAnOUAAJzmAACc6AAAnOoAAJzrAACc7AAAnO4AAJzvAACdLgAAnTAAAJ0yAACdNAAAnTcAAJ04AACdOQAAnToAAJ07AACdPQAAnT8AAJ1AAACdQQAAnUMAAJ1EAACdaQAAnY0AAJ20AACd2AAAndsAAJ3dAACd3wAAneEAAJ3jAACd5QAAneYAAJ3pAACd9gAAngUAAJ4HAACeCQAAngsAAJ4NAACeDwAAnhEAAJ4TAACeIgAAniUAAJ4oAACeKwAAni4AAJ4xAACeNAAAnjcAAJ45AACeeAAAnnoAAJ58AACefgAAnoEAAJ6CAACegwAAnoQAAJ6FAACehwAAnokAAJ6KAACeiwAAno0AAJ6OAACezQAAns8AAJ7RAACe0wAAntYAAJ7XAACe2AAAntkAAJ7aAACe3AAAnt4AAJ7fAACe4AAAnuIAAJ7jAACfIgAAnyQAAJ8mAACfKAAAnysAAJ8sAACfLQAAny4AAJ8vAACfMQAAnzMAAJ80AACfNQAAnzcAAJ84AACfdwAAn3kAAJ97AACffQAAn4AAAJ+BAACfggAAn4MAAJ+EAACfhgAAn4gAAJ+JAACfigAAn4wAAJ+NAACfzAAAn84AAJ/QAACf0gAAn9UAAJ/WAACf1wAAn9gAAJ/ZAACf2wAAn90AAJ/eAACf3wAAn+EAAJ/iAACgIQAAoCMAAKAlAACgJwAAoCoAAKArAACgLAAAoC0AAKAuAACgMAAAoDIAAKAzAACgNAAAoDYAAKA3AACgdgAAoHgAAKB6AACgfAAAoH8AAKCAAACggQAAoIIAAKCDAACghQAAoIcAAKCIAACgiQAAoIsAAKCMAACg1wAAoPoAAKEaAAChOgAAoTwAAKE+AAChQAAAoUIAAKFEAAChRQAAoUYAAKFJAAChSgAAoUwAAKFNAAChTwAAoVEAAKFSAAChUwAAoVYAAKFXAAChXAAAoWkAAKFuAAChcAAAoXIAAKF3AAChegAAoX0AAKF/AAChpAAAocgAAKHvAACiEwAAohYAAKIYAACiGgAAohwAAKIeAACiIAAAoiEAAKIkAACiMQAAokIAAKJEAACiRgAAokgAAKJKAACiTAAAok4AAKJQAACiUgAAomMAAKJmAACiaQAAomwAAKJvAACicgAAonUAAKJ4AACiewAAon0AAKK8AACivgAAosAAAKLCAACixQAAosYAAKLHAACiyAAAoskAAKLLAACizQAAos4AAKLPAACi0QAAotIAAKMRAACjEwAAoxUAAKMXAACjGgAAoxsAAKMcAACjHQAAox4AAKMgAACjIgAAoyMAAKMkAACjJgAAoycAAKNmAACjaAAAo2sAAKNtAACjcAAAo3EAAKNyAACjcwAAo3QAAKN2AACjeAAAo3kAAKN6AACjfAAAo30AAKOKAACjiwAAo4wAAKOOAACjzQAAo88AAKPRAACj0wAAo9YAAKPXAACj2AAAo9kAAKPaAACj3AAAo94AAKPfAACj4AAAo+IAAKPjAACkIgAApCQAAKQmAACkKAAApCsAAKQsAACkLQAApC4AAKQvAACkMQAApDMAAKQ0AACkNQAApDcAAKQ4AACkdwAApHkAAKR7AACkfQAApIAAAKSBAACkggAApIMAAKSEAACkhgAApIgAAKSJAACkigAApIwAAKSNAACkzAAApM4AAKTQAACk0gAApNUAAKTWAACk1wAApNgAAKTZAACk2wAApN0AAKTeAACk3wAApOEAAKTiAAClIQAApSMAAKUlAAClJwAApSoAAKUrAAClLAAApS0AAKUuAAClMAAApTIAAKUzAAClNAAApTYAAKU3AAClXAAApYAAAKWnAAClywAApc4AAKXQAACl0gAApdQAAKXWAACl2AAApdkAAKXcAACl6QAApfgAAKX6AACl/AAApf4AAKYAAACmAgAApgQAAKYGAACmFQAAphgAAKYbAACmHgAApiEAAKYkAACmJwAApioAAKYsAACmawAApm0AAKZwAACmcgAApnUAAKZ2AACmdwAApngAAKZ5AACmewAApn0AAKZ+AACmfwAApoEAAKaCAACmhAAApsMAAKbFAACmxwAApskAAKbMAACmzQAAps4AAKbPAACm0AAAptIAAKbUAACm1QAAptYAAKbYAACm2QAApxgAAKcaAACnHAAApx4AAKchAACnIgAApyMAAKckAACnJQAApycAAKcpAACnKgAApysAAKctAACnLgAAp20AAKdvAACncgAAp3QAAKd3AACneAAAp3kAAKd6AACnewAAp30AAKd/AACngAAAp4EAAKeDAACnhAAAp4cAAKfGAACnyAAAp8oAAKfMAACnzwAAp9AAAKfRAACn0gAAp9MAAKfVAACn1wAAp9gAAKfZAACn2wAAp9wAAKgbAACoHQAAqB8AAKghAACoJAAAqCUAAKgmAACoJwAAqCgAAKgqAACoLAAAqC0AAKguAACoMAAAqDEAAKhwAACocgAAqHQAAKh2AACoeQAAqHoAAKh7AACofAAAqH0AAKh/AACogQAAqIIAAKiDAACohQAAqIYAAKjRAACo9AAAqRQAAKk0AACpNgAAqTgAAKk6AACpPAAAqT4AAKk/AACpQAAAqUMAAKlEAACpRgAAqUcAAKlJAACpSwAAqUwAAKlNAACpUAAAqVEAAKlWAACpYwAAqWgAAKlqAACpbAAAqXEAAKl0AACpdwAAqXkAAKmeAACpwgAAqekAAKoNAACqEAAAqhIAAKoUAACqFgAAqhgAAKoaAACqGwAAqh4AAKorAACqPAAAqj4AAKpAAACqQgAAqkQAAKpGAACqSAAAqkoAAKpMAACqXQAAqmAAAKpjAACqZgAAqmkAAKpsAACqbwAAqnIAAKp1AACqdwAAqrYAAKq4AACqugAAqrwAAKq/AACqwAAAqsEAAKrCAACqwwAAqsUAAKrHAACqyAAAqskAAKrLAACqzAAAqwsAAKsNAACrDwAAqxEAAKsUAACrFQAAqxYAAKsXAACrGAAAqxoAAKscAACrHQAAqx4AAKsgAACrIQAAq2AAAKtiAACrZQAAq2cAAKtqAACrawAAq2wAAKttAACrbgAAq3AAAKtyAACrcwAAq3QAAKt2AACrdwAAq4QAAKuFAACrhgAAq4gAAKvHAACryQAAq8sAAKvNAACr0AAAq9EAAKvSAACr0wAAq9QAAKvWAACr2AAAq9kAAKvaAACr3AAAq90AAKwcAACsHgAArCAAAKwiAACsJQAArCYAAKwnAACsKAAArCkAAKwrAACsLQAArC4AAKwvAACsMQAArDIAAKxxAACscwAArHUAAKx3AACsegAArHsAAKx8AACsfQAArH4AAKyAAACsggAArIMAAKyEAACshgAArIcAAKzGAACsyAAArMoAAKzMAACszwAArNAAAKzRAACs0gAArNMAAKzVAACs1wAArNgAAKzZAACs2wAArNwAAK0bAACtHQAArR8AAK0hAACtJAAArSUAAK0mAACtJwAArSgAAK0qAACtLAAArS0AAK0uAACtMAAArTEAAK1WAACtegAAraEAAK3FAACtyAAArcoAAK3MAACtzgAArdAAAK3SAACt0wAArdYAAK3jAACt8gAArfQAAK32AACt+AAArfoAAK38AACt/gAArgAAAK4PAACuEgAArhUAAK4YAACuGwAArh4AAK4hAACuJAAAriYAAK5lAACuZwAArmoAAK5sAACubwAArnAAAK5xAACucgAArnMAAK51AACudwAArngAAK55AACuewAArnwAAK67AACuvQAArr8AAK7BAACuxAAArsUAAK7GAACuxwAArsgAAK7KAACuzAAArs0AAK7OAACu0AAArtEAAK8QAACvEgAArxQAAK8WAACvGQAArxoAAK8bAACvHAAArx0AAK8fAACvIQAAryIAAK8jAACvJQAAryYAAK9lAACvZwAAr2oAAK9sAACvbwAAr3AAAK9xAACvcgAAr3MAAK91AACvdwAAr3gAAK95AACvewAAr3wAAK+7AACvvQAAr78AAK/BAACvxAAAr8UAAK/GAACvxwAAr8gAAK/KAACvzAAAr80AAK/OAACv0AAAr9EAALAQAACwEgAAsBQAALAWAACwGQAAsBoAALAbAACwHAAAsB0AALAfAACwIQAAsCIAALAjAACwJQAAsCYAALBlAACwZwAAsGkAALBrAACwbgAAsG8AALBwAACwcQAAsHIAALB0AACwdgAAsHcAALB4AACwegAAsHsAALDGAACw6QAAsQkAALEpAACxKwAAsS0AALEvAACxMQAAsTMAALE0AACxNQAAsTgAALE5AACxOwAAsTwAALE+AACxQAAAsUEAALFCAACxRQAAsUYAALFLAACxWAAAsV0AALFfAACxYQAAsWYAALFpAACxbAAAsW4AALGTAACxtwAAsd4AALICAACyBQAAsgcAALIJAACyCwAAsg0AALIPAACyEAAAshMAALIgAACyMQAAsjMAALI1AACyNwAAsjkAALI7AACyPQAAsj8AALJBAACyUgAAslUAALJYAACyWwAAsl4AALJhAACyZAAAsmcAALJqAACybAAAsqsAALKtAACyrwAAsrEAALK0AACytQAAsrYAALK3AACyuAAAsroAALK8AACyvQAAsr4AALLAAACywQAAswAAALMCAACzBAAAswYAALMJAACzCgAAswsAALMMAACzDQAAsw8AALMRAACzEgAAsxMAALMVAACzFgAAs1UAALNXAACzWgAAs1wAALNfAACzYAAAs2EAALNiAACzYwAAs2UAALNnAACzaAAAs2kAALNrAACzbAAAs3kAALN6AACzewAAs30AALO8AACzvgAAs8AAALPCAACzxQAAs8YAALPHAACzyAAAs8kAALPLAACzzQAAs84AALPPAACz0QAAs9IAALQRAAC0EwAAtBUAALQXAAC0GgAAtBsAALQcAAC0HQAAtB4AALQgAAC0IgAAtCMAALQkAAC0JgAAtCcAALRmAAC0aAAAtGoAALRsAAC0bwAAtHAAALRxAAC0cgAAtHMAALR1AAC0dwAAtHgAALR5AAC0ewAAtHwAALS7AAC0vQAAtL8AALTBAAC0xAAAtMUAALTGAAC0xwAAtMgAALTKAAC0zAAAtM0AALTOAAC00AAAtNEAALUQAAC1EgAAtRQAALUWAAC1GQAAtRoAALUbAAC1HAAAtR0AALUfAAC1IQAAtSIAALUjAAC1JQAAtSYAALVLAAC1bwAAtZYAALW6AAC1vQAAtb8AALXBAAC1wwAAtcUAALXHAAC1yAAAtcsAALXYAAC15wAAtekAALXrAAC17QAAte8AALXxAAC18wAAtfUAALYEAAC2BwAAtgoAALYNAAC2EAAAthMAALYWAAC2GQAAthsAALZaAAC2XAAAtl4AALZgAAC2YwAAtmQAALZlAAC2ZgAAtmcAALZpAAC2awAAtmwAALZtAAC2bwAAtnAAALavAAC2sQAAtrMAALa1AAC2uAAAtrkAALa6AAC2uwAAtrwAALa+AAC2wAAAtsEAALbCAAC2xAAAtsUAALcEAAC3BgAAtwgAALcKAAC3DQAAtw4AALcPAAC3EAAAtxEAALcTAAC3FQAAtxYAALcXAAC3GQAAtxoAALdZAAC3WwAAt10AALdfAAC3YgAAt2MAALdkAAC3ZQAAt2YAALdoAAC3agAAt2sAALdsAAC3bgAAt28AALeuAAC3sAAAt7IAALe0AAC3twAAt7gAALe5AAC3ugAAt7sAALe9AAC3vwAAt8AAALfBAAC3wwAAt8QAALgDAAC4BQAAuAcAALgJAAC4DAAAuA0AALgOAAC4DwAAuBAAALgSAAC4FAAAuBUAALgWAAC4GAAAuBkAALhYAAC4WgAAuFwAALheAAC4YQAAuGIAALhjAAC4ZAAAuGUAALhnAAC4aQAAuGoAALhrAAC4bQAAuG4AALi5AAC43AAAuPwAALkcAAC5HgAAuSAAALkiAAC5JAAAuSYAALknAAC5KAAAuSsAALksAAC5LgAAuS8AALkxAAC5MwAAuTQAALk1AAC5OAAAuTkAALk+AAC5SwAAuVAAALlSAAC5VAAAuVkAALlcAAC5XwAAuWEAALmGAAC5qgAAudEAALn1AAC5+AAAufoAALn8AAC5/gAAugAAALoCAAC6AwAAugYAALoTAAC6JAAAuiYAALooAAC6KgAAuiwAALouAAC6MAAAujIAALo0AAC6RQAAukgAALpLAAC6TgAAulEAALpUAAC6VwAAuloAALpdAAC6XwAAup4AALqgAAC6ogAAuqQAALqnAAC6qAAAuqkAALqqAAC6qwAAuq0AALqvAAC6sAAAurEAALqzAAC6tAAAuvMAALr1AAC69wAAuvkAALr8AAC6/QAAuv4AALr/AAC7AAAAuwIAALsEAAC7BQAAuwYAALsIAAC7CQAAu0gAALtKAAC7TQAAu08AALtSAAC7UwAAu1QAALtVAAC7VgAAu1gAALtaAAC7WwAAu1wAALteAAC7XwAAu2wAALttAAC7bgAAu3AAALuvAAC7sQAAu7MAALu1AAC7uAAAu7kAALu6AAC7uwAAu7wAALu+AAC7wAAAu8EAALvCAAC7xAAAu8UAALwEAAC8BgAAvAgAALwKAAC8DQAAvA4AALwPAAC8EAAAvBEAALwTAAC8FQAAvBYAALwXAAC8GQAAvBoAALxZAAC8WwAAvF0AALxfAAC8YgAAvGMAALxkAAC8ZQAAvGYAALxoAAC8agAAvGsAALxsAAC8bgAAvG8AALyuAAC8sAAAvLIAALy0AAC8twAAvLgAALy5AAC8ugAAvLsAALy9AAC8vwAAvMAAALzBAAC8wwAAvMQAAL0DAAC9BQAAvQcAAL0JAAC9DAAAvQ0AAL0OAAC9DwAAvRAAAL0SAAC9FAAAvRUAAL0WAAC9GAAAvRkAAL0+AAC9YgAAvYkAAL2tAAC9sAAAvbIAAL20AAC9tgAAvbgAAL26AAC9uwAAvb4AAL3LAAC92gAAvdwAAL3eAAC94AAAveIAAL3kAAC95gAAvegAAL33AAC9+gAAvf0AAL4AAAC+AwAAvgYAAL4JAAC+DAAAvg4AAL5NAAC+TwAAvlEAAL5TAAC+VgAAvlcAAL5YAAC+WQAAvloAAL5cAAC+XgAAvl8AAL5gAAC+YgAAvmMAAL6iAAC+pAAAvqYAAL6oAAC+qwAAvqwAAL6tAAC+rgAAvq8AAL6xAAC+swAAvrQAAL61AAC+twAAvrgAAL73AAC++QAAvvsAAL79AAC/AAAAvwEAAL8CAAC/AwAAvwQAAL8GAAC/CAAAvwkAAL8KAAC/DAAAvw0AAL9MAAC/TgAAv1EAAL9TAAC/VgAAv1cAAL9YAAC/WQAAv1oAAL9cAAC/XgAAv18AAL9gAAC/YgAAv2MAAL9mAAC/pQAAv6cAAL+pAAC/qwAAv64AAL+vAAC/sAAAv7EAAL+yAAC/tAAAv7YAAL+3AAC/uAAAv7oAAL+7AAC/+gAAv/wAAL/+AADAAAAAwAMAAMAEAADABQAAwAYAAMAHAADACQAAwAsAAMAMAADADQAAwA8AAMAQAADATwAAwFEAAMBTAADAVQAAwFgAAMBZAADAWgAAwFsAAMBcAADAXgAAwGAAAMBhAADAYgAAwGQAAMBlAADAsAAAwNMAAMDzAADBEwAAwRUAAMEXAADBGQAAwRsAAMEdAADBHgAAwR8AAMEiAADBIwAAwSUAAMEmAADBKAAAwSoAAMErAADBLAAAwS8AAMEwAADBNQAAwUIAAMFHAADBSQAAwUsAAMFQAADBUwAAwVYAAMFYAADBfQAAwaEAAMHIAADB7AAAwe8AAMHxAADB8wAAwfUAAMH3AADB+QAAwfoAAMH9AADCCgAAwhsAAMIdAADCHwAAwiEAAMIjAADCJQAAwicAAMIpAADCKwAAwjwAAMI/AADCQgAAwkUAAMJIAADCSwAAwk4AAMJRAADCVAAAwlYAAMKVAADClwAAwpkAAMKbAADCngAAwp8AAMKgAADCoQAAwqIAAMKkAADCpgAAwqcAAMKoAADCqgAAwqsAAMLqAADC7AAAwu4AAMLwAADC8wAAwvQAAML1AADC9gAAwvcAAML5AADC+wAAwvwAAML9AADC/wAAwwAAAMM/AADDQQAAw0QAAMNGAADDSQAAw0oAAMNLAADDTAAAw00AAMNPAADDUQAAw1IAAMNTAADDVQAAw1YAAMNjAADDZAAAw2UAAMNnAADDpgAAw6gAAMOqAADDrAAAw68AAMOwAADDsQAAw7IAAMOzAADDtQAAw7cAAMO4AADDuQAAw7sAAMO8AADD+wAAw/0AAMP/AADEAQAAxAQAAMQFAADEBgAAxAcAAMQIAADECgAAxAwAAMQNAADEDgAAxBAAAMQRAADEUAAAxFIAAMRUAADEVgAAxFkAAMRaAADEWwAAxFwAAMRdAADEXwAAxGEAAMRiAADEYwAAxGUAAMRmAADEpQAAxKcAAMSpAADEqwAAxK4AAMSvAADEsAAAxLEAAMSyAADEtAAAxLYAAMS3AADEuAAAxLoAAMS7AADE+gAAxPwAAMT+AADFAAAAxQMAAMUEAADFBQAAxQYAAMUHAADFCQAAxQsAAMUMAADFDQAAxQ8AAMUQAADFNQAAxVkAAMWAAADFpAAAxacAAMWpAADFqwAAxa0AAMWvAADFsQAAxbIAAMW1AADFwgAAxdEAAMXTAADF1QAAxdcAAMXZAADF2wAAxd0AAMXfAADF7gAAxfEAAMX0AADF9wAAxfoAAMX9AADGAAAAxgMAAMYFAADGRAAAxkYAAMZIAADGSgAAxk0AAMZOAADGTwAAxlAAAMZRAADGUwAAxlUAAMZWAADGVwAAxlkAAMZaAADGmQAAxpsAAMadAADGnwAAxqIAAMajAADGpAAAxqUAAMamAADGqAAAxqoAAMarAADGrAAAxq4AAMavAADG7gAAxvAAAMbyAADG9AAAxvcAAMb4AADG+QAAxvoAAMb7AADG/QAAxv8AAMcAAADHAQAAxwMAAMcEAADHQwAAx0UAAMdIAADHSgAAx00AAMdOAADHTwAAx1AAAMdRAADHUwAAx1UAAMdWAADHVwAAx1kAAMdaAADHnQAAx8EAAMflAADICAAAyC8AAMhPAADIdgAAyJ0AAMi9AADI4QAAyQUAAMkHAADJCgAAyQwAAMkOAADJEAAAyRMAAMkWAADJGAAAyRoAAMkdAADJHwAAySEAAMkkAADJJwAAySgAAMktAADJOgAAyT0AAMk/AADJQgAAyUUAAMlHAADJbAAAyZAAAMm3AADJ2wAAyd4AAMngAADJ4gAAyeQAAMnmAADJ6AAAyekAAMnsAADJ+QAAygwAAMoOAADKEAAAyhIAAMoUAADKFgAAyhgAAMoaAADKHAAAyh4AAMoxAADKNAAAyjcAAMo6AADKPQAAykAAAMpDAADKRgAAykkAAMpMAADKTgAAyo0AAMqPAADKkgAAypQAAMqXAADKmAAAypkAAMqaAADKmwAAyp0AAMqfAADKoAAAyqEAAMqjAADKpAAAyq0AAMquAADKsAAAyu8AAMrxAADK8wAAyvUAAMr4AADK+QAAyvoAAMr7AADK/AAAyv4AAMsAAADLAQAAywIAAMsEAADLBQAAy0QAAMtGAADLSQAAy0sAAMtOAADLTwAAy1AAAMtRAADLUgAAy1QAAMtWAADLVwAAy1gAAMtaAADLWwAAy2QAAMtlAADLZwAAy6YAAMuoAADLqgAAy6wAAMuvAADLsAAAy7EAAMuyAADLswAAy7UAAMu3AADLuAAAy7kAAMu7AADLvAAAy/sAAMv9AADMAAAAzAIAAMwFAADMBgAAzAcAAMwIAADMCQAAzAsAAMwNAADMDgAAzA8AAMwRAADMEgAAzBsAAMwcAADMHgAAzF0AAMxfAADMYQAAzGMAAMxmAADMZwAAzGgAAMxpAADMagAAzGwAAMxuAADMbwAAzHAAAMxyAADMcwAAzLIAAMy0AADMtwAAzLkAAMy8AADMvQAAzL4AAMy/AADMwAAAzMIAAMzEAADMxQAAzMYAAMzIAADMyQAAzNYAAMzXAADM2AAAzNoAAM0ZAADNGwAAzR0AAM0fAADNIgAAzSMAAM0kAADNJQAAzSYAAM0oAADNKgAAzSsAAM0sAADNLgAAzS8AAM1uAADNcAAAzXIAAM10AADNdwAAzXgAAM15AADNegAAzXsAAM19AADNfwAAzYAAAM2BAADNgwAAzYQAAM2RAADNmgAAzZ0AAM2fAADNogAAzaUAAM2uAADNsQAAzbQAAM23AADNugAAzbwAAM3LAADN3QAAzeoAAM41AADOWAAAzngAAM6YAADOmgAAzpwAAM6eAADOoAAAzqMAAM6kAADOpQAAzqgAAM6pAADOqwAAzqwAAM6uAADOsQAAzrIAAM6zAADOtgAAzrcAAM68AADOyQAAzs4AAM7QAADO0gAAztcAAM7aAADO3QAAzt8AAM8EAADPKAAAz08AAM9zAADPdgAAz3gAAM96AADPfAAAz34AAM+AAADPgQAAz4QAAM+RAADPogAAz6QAAM+mAADPqAAAz6oAAM+sAADPrgAAz7AAAM+yAADPwwAAz8YAAM/JAADPzAAAz88AAM/SAADP1QAAz9gAAM/bAADP3QAA0BwAANAeAADQIAAA0CIAANAlAADQJgAA0CcAANAoAADQKQAA0CsAANAtAADQLgAA0C8AANAxAADQMgAA0HEAANBzAADQdQAA0HcAANB6AADQewAA0HwAANB9AADQfgAA0IAAANCCAADQgwAA0IQAANCGAADQhwAA0MYAANDIAADQywAA0M0AANDQAADQ0QAA0NIAANDTAADQ1AAA0NYAANDYAADQ2QAA0NoAANDcAADQ3QAA0OoAANDrAADQ7AAA0O4AANEtAADRLwAA0TEAANEzAADRNgAA0TcAANE4AADROQAA0ToAANE8AADRPgAA0T8AANFAAADRQgAA0UMAANGCAADRhAAA0YYAANGIAADRiwAA0YwAANGNAADRjgAA0Y8AANGRAADRkwAA0ZQAANGVAADRlwAA0ZgAANHXAADR2QAA0dsAANHdAADR4AAA0eEAANHiAADR4wAA0eQAANHmAADR6AAA0ekAANHqAADR7AAA0e0AANIsAADSLgAA0jAAANIyAADSNQAA0jYAANI3AADSOAAA0jkAANI7AADSPQAA0j4AANI/AADSQQAA0kIAANKBAADSgwAA0oUAANKHAADSigAA0osAANKMAADSjQAA0o4AANKQAADSkgAA0pMAANKUAADSlgAA0pcAANK8AADS4AAA0wcAANMrAADTLgAA0zAAANMyAADTNAAA0zYAANM4AADTOQAA0zwAANNJAADTWAAA01oAANNcAADTXgAA02AAANNiAADTZAAA02YAANN1AADTeAAA03sAANN+AADTgQAA04QAANOHAADTigAA04wAANPLAADTzQAA088AANPRAADT1AAA09UAANPWAADT1wAA09gAANPaAADT3AAA090AANPeAADT4AAA0+EAANQgAADUIgAA1CQAANQmAADUKQAA1CoAANQrAADULAAA1C0AANQvAADUMQAA1DIAANQzAADUNQAA1DYAANR1AADUdwAA1HkAANR7AADUfgAA1H8AANSAAADUgQAA1IIAANSEAADUhgAA1IcAANSIAADUigAA1IsAANTKAADUzAAA1M4AANTQAADU0wAA1NQAANTVAADU1gAA1NcAANTZAADU2wAA1NwAANTdAADU3wAA1OAAANUfAADVIQAA1SMAANUlAADVKAAA1SkAANUqAADVKwAA1SwAANUuAADVMAAA1TEAANUyAADVNAAA1TUAANV0AADVdgAA1XgAANV6AADVfQAA1X4AANV/AADVgAAA1YEAANWDAADVhQAA1YYAANWHAADViQAA1YoAANXJAADVywAA1c4AANXQAADV0wAA1dQAANXVAADV1gAA1dcAANXZAADV2wAA1dwAANXdAADV3wAA1eAAANYrAADWTgAA1m4AANaOAADWkAAA1pIAANaUAADWlgAA1pkAANaaAADWmwAA1p4AANafAADWoQAA1qIAANakAADWpgAA1qcAANaoAADWqwAA1qwAANaxAADWvgAA1sMAANbFAADWxwAA1swAANbPAADW0gAA1tQAANb5AADXHQAA10QAANdoAADXawAA120AANdvAADXcQAA13MAANd1AADXdgAA13kAANeGAADXlwAA15kAANebAADXnQAA158AANehAADXowAA16UAANenAADXuAAA17sAANe+AADXwQAA18QAANfHAADXygAA180AANfQAADX0gAA2BEAANgTAADYFQAA2BcAANgaAADYGwAA2BwAANgdAADYHgAA2CAAANgiAADYIwAA2CQAANgmAADYJwAA2GYAANhoAADYagAA2GwAANhvAADYcAAA2HEAANhyAADYcwAA2HUAANh3AADYeAAA2HkAANh7AADYfAAA2LsAANi9AADYwAAA2MIAANjFAADYxgAA2McAANjIAADYyQAA2MsAANjNAADYzgAA2M8AANjRAADY0gAA2N8AANjgAADY4QAA2OMAANkiAADZJAAA2SYAANkoAADZKwAA2SwAANktAADZLgAA2S8AANkxAADZMwAA2TQAANk1AADZNwAA2TgAANl3AADZeQAA2XsAANl9AADZgAAA2YEAANmCAADZgwAA2YQAANmGAADZiAAA2YkAANmKAADZjAAA2Y0AANnMAADZzgAA2dAAANnSAADZ1QAA2dYAANnXAADZ2AAA2dkAANnbAADZ3QAA2d4AANnfAADZ4QAA2eIAANohAADaIwAA2iUAANonAADaKgAA2isAANosAADaLQAA2i4AANowAADaMgAA2jMAANo0AADaNgAA2jcAANp2AADaeAAA2noAANp8AADafwAA2oAAANqBAADaggAA2oMAANqFAADahwAA2ogAANqJAADaiwAA2owAANqxAADa1QAA2vwAANsgAADbIwAA2yUAANsnAADbKQAA2ysAANstAADbLgAA2zEAANs+AADbTQAA208AANtRAADbUwAA21UAANtXAADbWQAA21sAANtqAADbbQAA23AAANtzAADbdgAA23kAANt8AADbfwAA24EAANvAAADbwgAA28QAANvGAADbyQAA28oAANvLAADbzAAA280AANvPAADb0QAA29IAANvTAADb1QAA29YAANwVAADcFwAA3BkAANwbAADcHgAA3B8AANwgAADcIQAA3CIAANwkAADcJgAA3CcAANwoAADcKgAA3CsAANxqAADcbAAA3G4AANxwAADccwAA3HQAANx1AADcdgAA3HcAANx5AADcewAA3HwAANx9AADcfwAA3IAAANy/AADcwQAA3MMAANzFAADcyAAA3MkAANzKAADcywAA3MwAANzOAADc0AAA3NEAANzSAADc1AAA3NUAAN0UAADdFgAA3RgAAN0aAADdHQAA3R4AAN0fAADdIAAA3SEAAN0jAADdJQAA3SYAAN0nAADdKQAA3SoAAN1pAADdawAA3W0AAN1vAADdcgAA3XMAAN10AADddQAA3XYAAN14AADdegAA3XsAAN18AADdfgAA3X8AAN2+AADdwAAA3cMAAN3FAADdyAAA3ckAAN3KAADdywAA3cwAAN3OAADd0AAA3dEAAN3SAADd1AAA3dUAAN4gAADeQwAA3mMAAN6DAADehQAA3ocAAN6JAADeiwAA3o0AAN6OAADejwAA3pIAAN6TAADelQAA3pYAAN6YAADemgAA3psAAN6cAADenwAA3qAAAN6pAADetgAA3rsAAN69AADevwAA3sQAAN7HAADeygAA3swAAN7xAADfFQAA3zwAAN9gAADfYwAA32UAAN9nAADfaQAA32sAAN9tAADfbgAA33EAAN9+AADfjwAA35EAAN+TAADflQAA35cAAN+ZAADfmwAA350AAN+fAADfsAAA37MAAN+2AADfuQAA37wAAN+/AADfwgAA38UAAN/IAADfygAA4AkAAOALAADgDQAA4A8AAOASAADgEwAA4BQAAOAVAADgFgAA4BgAAOAaAADgGwAA4BwAAOAeAADgHwAA4F4AAOBgAADgYgAA4GQAAOBnAADgaAAA4GkAAOBqAADgawAA4G0AAOBvAADgcAAA4HEAAOBzAADgdAAA4LMAAOC1AADguAAA4LoAAOC9AADgvgAA4L8AAODAAADgwQAA4MMAAODFAADgxgAA4McAAODJAADgygAA4NcAAODYAADg2QAA4NsAAOEaAADhHAAA4R4AAOEgAADhIwAA4SQAAOElAADhJgAA4ScAAOEpAADhKwAA4SwAAOEtAADhLwAA4TAAAOFvAADhcQAA4XMAAOF1AADheAAA4XkAAOF6AADhewAA4XwAAOF+AADhgAAA4YEAAOGCAADhhAAA4YUAAOHEAADhxgAA4cgAAOHKAADhzQAA4c4AAOHPAADh0AAA4dEAAOHTAADh1QAA4dYAAOHXAADh2QAA4doAAOIZAADiGwAA4h0AAOIfAADiIgAA4iMAAOIkAADiJQAA4iYAAOIoAADiKgAA4isAAOIsAADiLgAA4i8AAOJuAADicAAA4nIAAOJ0AADidwAA4ngAAOJ5AADiegAA4nsAAOJ9AADifwAA4oAAAOKBAADigwAA4oQAAOKpAADizQAA4vQAAOMYAADjGwAA4x0AAOMfAADjIQAA4yMAAOMlAADjJgAA4ykAAOM2AADjRQAA40cAAONJAADjSwAA400AAONPAADjUQAA41MAAONiAADjZQAA42gAAONrAADjbgAA43EAAON0AADjdwAA43kAAOO4AADjugAA47wAAOO+AADjwQAA48IAAOPDAADjxAAA48UAAOPHAADjyQAA48oAAOPLAADjzQAA484AAOQNAADkDwAA5BEAAOQTAADkFgAA5BcAAOQYAADkGQAA5BoAAOQcAADkHgAA5B8AAOQgAADkIgAA5CMAAORiAADkZAAA5GYAAORoAADkawAA5GwAAORtAADkbgAA5G8AAORxAADkcwAA5HQAAOR1AADkdwAA5HgAAOS3AADkuQAA5LwAAOS+AADkwQAA5MIAAOTDAADkxAAA5MUAAOTHAADkyQAA5MoAAOTLAADkzQAA5M4AAOUNAADlDwAA5REAAOUTAADlFgAA5RcAAOUYAADlGQAA5RoAAOUcAADlHgAA5R8AAOUgAADlIgAA5SMAAOViAADlZAAA5WYAAOVoAADlawAA5WwAAOVtAADlbgAA5W8AAOVxAADlcwAA5XQAAOV1AADldwAA5XgAAOW3AADluQAA5bwAAOW+AADlwQAA5cIAAOXDAADlxAAA5cUAAOXHAADlyQAA5coAAOXLAADlzQAA5c4AAOYZAADmPAAA5lwAAOZ8AADmfgAA5oAAAOaCAADmhAAA5ocAAOaIAADmiQAA5owAAOaNAADmjwAA5pAAAOaSAADmlQAA5pYAAOaXAADmmgAA5psAAOagAADmrQAA5rIAAOa0AADmtgAA5rsAAOa+AADmwQAA5sMAAOboAADnDAAA5zMAAOdXAADnWgAA51wAAOdeAADnYAAA52IAAOdkAADnZQAA52gAAOd1AADnhgAA54gAAOeKAADnjAAA544AAOeQAADnkgAA55QAAOeWAADnpwAA56oAAOetAADnsAAA57MAAOe2AADnuQAA57wAAOe/AADnwQAA6AAAAOgCAADoBAAA6AYAAOgJAADoCgAA6AsAAOgMAADoDQAA6A8AAOgRAADoEgAA6BMAAOgVAADoFgAA6FUAAOhXAADoWQAA6FsAAOheAADoXwAA6GAAAOhhAADoYgAA6GQAAOhmAADoZwAA6GgAAOhqAADoawAA6KoAAOisAADorwAA6LEAAOi0AADotQAA6LYAAOi3AADouAAA6LoAAOi8AADovQAA6L4AAOjAAADowQAA6M4AAOjPAADo0AAA6NIAAOkRAADpEwAA6RUAAOkXAADpGgAA6RsAAOkcAADpHQAA6R4AAOkgAADpIgAA6SMAAOkkAADpJgAA6ScAAOlmAADpaAAA6WoAAOlsAADpbwAA6XAAAOlxAADpcgAA6XMAAOl1AADpdwAA6XgAAOl5AADpewAA6XwAAOm7AADpvQAA6b8AAOnBAADpxAAA6cUAAOnGAADpxwAA6cgAAOnKAADpzAAA6c0AAOnOAADp0AAA6dEAAOoQAADqEgAA6hQAAOoWAADqGQAA6hoAAOobAADqHAAA6h0AAOofAADqIQAA6iIAAOojAADqJQAA6iYAAOplAADqZwAA6mkAAOprAADqbgAA6m8AAOpwAADqcQAA6nIAAOp0AADqdgAA6ncAAOp4AADqegAA6nsAAOqgAADqxAAA6usAAOsPAADrEgAA6xQAAOsWAADrGAAA6xoAAOscAADrHQAA6yAAAOstAADrPAAA6z4AAOtAAADrQgAA60QAAOtGAADrSAAA60oAAOtZAADrXAAA618AAOtiAADrZQAA62gAAOtrAADrbgAA63AAAOuvAADrsQAA67MAAOu1AADruAAA67kAAOu6AADruwAA67wAAOu+AADrwAAA68EAAOvCAADrxAAA68UAAOwEAADsBgAA7AgAAOwKAADsDQAA7A4AAOwPAADsEAAA7BEAAOwTAADsFQAA7BYAAOwXAADsGQAA7BoAAOxZAADsWwAA7F0AAOxfAADsYgAA7GMAAOxkAADsZQAA7GYAAOxoAADsagAA7GsAAOxsAADsbgAA7G8AAOyuAADssAAA7LMAAOy1AADsuAAA7LkAAOy6AADsuwAA7LwAAOy+AADswAAA7MEAAOzCAADsxAAA7MUAAO0IAADtLAAA7VAAAO1zAADtmgAA7boAAO3hAADuCAAA7igAAO5MAADucAAA7nIAAO51AADudwAA7nkAAO57AADufgAA7oEAAO6DAADuhQAA7ogAAO6KAADujAAA7o8AAO6SAADukwAA7pwAAO6pAADurAAA7q4AAO6xAADutAAA7rYAAO7bAADu/wAA7yYAAO9KAADvTQAA708AAO9RAADvUwAA71UAAO9XAADvWAAA71sAAO9oAADvewAA730AAO9/AADvgQAA74MAAO+FAADvhwAA74kAAO+LAADvjQAA76AAAO+jAADvpgAA76kAAO+sAADvrwAA77IAAO+1AADvuAAA77sAAO+9AADv/AAA7/4AAPABAADwAwAA8AYAAPAHAADwCAAA8Ak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AAQI9AAECQAABAkEAAQJCAAECQwABAkQAAQJGAAECSAABAkkAAQJKAAECTAABAk0AAQKMAAECjgABApAAAQKSAAEClQABApYAAQKXAAECmAABApkAAQKbAAECnQABAp4AAQKfAAECoQABAqIAAQLhAAEC4wABAuUAAQLnAAEC6gABAusAAQLsAAEC7QABAu4AAQLwAAEC8gABAvMAAQL0AAEC9gABAvcAAQM2AAEDOAABAzoAAQM8AAEDPwABA0AAAQNBAAEDQgABA0MAAQNFAAEDRwABA0gAAQNJAAEDSwABA0wAAQNxAAEDlQABA7wAAQPgAAED4wABA+UAAQPnAAED6QABA+sAAQPtAAED7gABA/EAAQP+AAEEDQABBA8AAQQRAAEEEwABBBUAAQQXAAEEGQABBBsAAQQqAAEELQABBDAAAQQzAAEENgABBDkAAQQ8AAEEPwABBEEAAQSAAAEEggABBIQAAQSGAAEEiQABBIoAAQSLAAEEjAABBI0AAQSPAAEEkQABBJIAAQSTAAEElQABBJYAAQTVAAEE1wABBNkAAQTbAAEE3gABBN8AAQTgAAEE4QABBOIAAQTkAAEE5gABBOcAAQToAAEE6gABBOsAAQUqAAEFLAABBS4AAQUwAAEFMwABBTQAAQU1AAEFNgABBTcAAQU5AAEFOwABBTwAAQU9AAEFPwABBUAAAQV/AAEFgQABBYMAAQWFAAEFiAABBYkAAQWKAAEFiwABBYwAAQWOAAEFkAABBZEAAQWSAAEFlAABBZUAAQXUAAEF1gABBdgAAQXaAAEF3QABBd4AAQXfAAEF4AABBeEAAQXjAAEF5QABBeYAAQXnAAEF6QABBeoAAQYpAAEGKwABBi0AAQYvAAEGMgABBjMAAQY0AAEGNQABBjYAAQY4AAEGOgABBjsAAQY8AAEGPgABBj8AAQZ+AAEGgAABBoIAAQaEAAEGhwABBogAAQaJAAEGigABBosAAQaNAAEGjwABBpAAAQaRAAEGkwABBpQAAQbfAAEHAgABByIAAQdCAAEHRAABB0YAAQdIAAEHSgABB00AAQdOAAEHTwABB1IAAQdTAAEHVQABB1YAAQdYAAEHWwABB1wAAQddAAEHYAABB2EAAQdmAAEHcwABB3gAAQd6AAEHfAABB4EAAQeEAAEHhwABB4kAAQeuAAEH0gABB/kAAQgdAAEIIAABCCIAAQgkAAEIJgABCCgAAQgqAAEIKwABCC4AAQg7AAEITAABCE4AAQhQAAEIUgABCFQAAQhWAAEIWAABCFoAAQhcAAEIbQABCHAAAQhzAAEIdgABCHkAAQh8AAEIfwABCIIAAQiFAAEIhwABCMYAAQjIAAEIygABCMwAAQjPAAEI0AABCNEAAQjSAAEI0wABCNUAAQjXAAEI2AABCNkAAQjbAAEI3AABCRsAAQkdAAEJHwABCSEAAQkkAAEJJQABCSYAAQknAAEJKAABCSoAAQksAAEJLQABCS4AAQkwAAEJMQABCXAAAQlyAAEJdQABCXcAAQl6AAEJewABCXwAAQl9AAEJfgABCYAAAQmCAAEJgwABCYQAAQmGAAEJhwABCZQAAQmVAAEJlgABCZgAAQnXAAEJ2QABCdsAAQndAAEJ4AABCeEAAQniAAEJ4wABCeQAAQnmAAEJ6AABCekAAQnqAAEJ7AABCe0AAQosAAEKLgABCjAAAQoyAAEKNQABCjYAAQo3AAEKOAABCjkAAQo7AAEKPQABCj4AAQo/AAEKQQABCkIAAQqBAAEKgwABCoUAAQqHAAEKigABCosAAQqMAAEKjQABCo4AAQqQAAEKkgABCpMAAQqUAAEKlgABCpcAAQrWAAEK2AABCtoAAQrcAAEK3wABCuAAAQrhAAEK4gABCuMAAQrlAAEK5wABCugAAQrpAAEK6wABCuwAAQsrAAELLQABCy8AAQsxAAELNAABCzUAAQs2AAELNwABCzgAAQs6AAELPAABCz0AAQs+AAELQAABC0EAAQtmAAELigABC7EAAQvVAAEL2AABC9oAAQvcAAEL3gABC+AAAQviAAEL4wABC+YAAQvzAAEMAgABDAQAAQwGAAEMCAABDAoAAQwMAAEMDgABDBAAAQwfAAEMIgABDCUAAQwoAAEMKwABDC4AAQwxAAEMNAABDDYAAQx1AAEMdwABDHkAAQx7AAEMfgABDH8AAQyAAAEMgQABDIIAAQyEAAEMhgABDIcAAQyIAAEMigABDIsAAQzKAAEMzAABDM4AAQzQAAEM0wABDNQAAQzVAAEM1gABDNcAAQzZAAEM2wABDNwAAQzdAAEM3wABDOAAAQ0fAAENIQABDSMAAQ0lAAENKAABDSkAAQ0qAAENKwABDSwAAQ0uAAENMAABDTEAAQ0yAAENNAABDTUAAQ10AAENdgABDXgAAQ16AAENfQABDX4AAQ1/AAENgAABDYEAAQ2DAAENhQABDYYAAQ2HAAENiQABDYoAAQ3JAAENywABDc0AAQ3PAAEN0gABDdMAAQ3UAAEN1QABDdYAAQ3YAAEN2gABDdsAAQ3cAAEN3gABDd8AAQ4eAAEOIAABDiIAAQ4kAAEOJwABDigAAQ4pAAEOKgABDisAAQ4tAAEOLwABDjAAAQ4xAAEOMwABDjQAAQ5zAAEOdQABDncAAQ55AAEOfAABDn0AAQ5+AAEOfwABDoAAAQ6CAAEOhAABDoUAAQ6GAAEOiAABDokAAQ7UAAEO9wABDxcAAQ83AAEPOQABDzsAAQ89AAEPPwABD0IAAQ9DAAEPRAABD0cAAQ9IAAEPSgABD0sAAQ9NAAEPUAABD1EAAQ9SAAEPVQABD1YAAQ9fAAEPbAABD3EAAQ9zAAEPdQABD3oAAQ99AAEPgAABD4IAAQ+nAAEPywABD/IAARAWAAEQGQABEBsAARAdAAEQHwABECEAARAjAAEQJAABECcAARA0AAEQRQABEEcAARBJAAEQSwABEE0AARBPAAEQUQABEFMAARBVAAEQZgABEGkAARBsAAEQbwABEHIAARB1AAEQeAABEHsAARB+AAEQgAABEL8AARDBAAEQwwABEMUAARDIAAEQyQABEMoAARDLAAEQzAABEM4AARDQAAEQ0QABENIAARDUAAEQ1QABERQAAREWAAERGAABERoAAREdAAERHgABER8AAREgAAERIQABESMAARElAAERJgABEScAAREpAAERKgABEWkAARFrAAERbgABEXAAARFzAAERdAABEXUAARF2AAERdwABEXkAARF7AAERfAABEX0AARF/AAERgAABEY0AARGOAAERjwABEZEAARHQAAER0gABEdQAARHWAAER2QABEdoAARHbAAER3AABEd0AARHfAAER4QABEeIAARHjAAER5QABEeYAARIlAAESJwABEikAARIrAAESLgABEi8AARIwAAESMQABEjIAARI0AAESNgABEjcAARI4AAESOgABEjsAARJ6AAESfAABEn4AARKAAAESgwABEoQAARKFAAEShgABEocAARKJAAESiwABEowAARKNAAESjwABEpAAARLPAAES0QABEtQAARLWAAES2QABEtoAARLbAAES3AABEt0AARLfAAES4QABEuIAARLjAAES5QABEuYAARL8AAETOwABEz0AARM/AAETQQABE0QAARNFAAETRgABE0cAARNIAAETSgABE0wAARNNAAETTgABE1AAARNRAAETdgABE5oAARPBAAET5QABE+gAARPqAAET7AABE+4AARPwAAET8gABE/MAARP2AAEUAwABFBIAARQUAAEUFgABFBgAARQaAAEUHAABFB4AARQgAAEULwABFDIAARQ1AAEUOAABFDsAARQ+AAEUQQABFEQAARRGAAEUhQABFIcAARSJAAEUiwABFI4AARSPAAEUkAABFJEAARSSAAEUlAABFJYAARSXAAEUmAABFJoAARSbAAEU2gABFNwAARTeAAEU4AABFOMAARTkAAEU5QABFOYAARTnAAEU6QABFOsAARTsAAEU7QABFO8AARTwAAEVLwABFTEAARUzAAEVNQABFTgAARU5AAEVOgABFTsAARU8AAEVPgABFUAAARVBAAEVQgABFUQAARVFAAEVhAABFYYAARWIAAEVigABFY0AARWOAAEVjwABFZAAARWRAAEVkwABFZUAARWWAAEVlwABFZkAARWaAAEV2QABFdsAARXdAAEV3wABFeIAARXjAAEV5AABFeUAARXmAAEV6AABFeoAARXrAAEV7AABFe4AARXvAAEWLgABFjAAARYyAAEWNAABFjcAARY4AAEWOQABFjoAARY7AAEWPQABFj8AARZAAAEWQQABFkMAARZEAAEWgwABFoUAARaHAAEWiQABFowAARaNAAEWjgABFo8AARaQAAEWkgABFpQAARaVAAEWlgABFpgAARaZAAEW5AABFwcAARcnAAEXRwABF0kAARdLAAEXTQABF08AARdSAAEXUwABF1QAARdXAAEXWAABF1oAARdbAAEXXQABF2AAARdhAAEXYgABF2UAARdmAAEXawABF3gAARd9AAEXfwABF4EAAReGAAEXiQABF4wAAReOAAEXswABF9cAARf+AAEYIgABGCUAARgnAAEYKQABGCsAARgtAAEYLwABGDAAARgzAAEYQAABGFEAARhTAAEYVQABGFcAARhZAAEYWwABGF0AARhfAAEYYQABGHIAARh1AAEYeAABGHsAARh+AAEYgQABGIQAARiHAAEYigABGIwAARjLAAEYzQABGM8AARjRAAEY1AABGNUAARjWAAEY1wABGNgAARjaAAEY3AABGN0AARjeAAEY4AABGOEAARkgAAEZIgABGSQAARkmAAEZKQABGSoAARkrAAEZLAABGS0AARkvAAEZMQABGTIAARkzAAEZNQABGTYAARl1AAEZdwABGXoAARl8AAEZfwABGYAAARmBAAEZggABGYMAARmFAAEZhwABGYgAARmJAAEZiwABGYwAARmZAAEZmgABGZsAARmdAAEZ3AABGd4AARngAAEZ4gABGeUAARnmAAEZ5wABGegAARnpAAEZ6wABGe0AARnuAAEZ7wABGfEAARnyAAEaMQABGjMAARo1AAEaNwABGjoAARo7AAEaPAABGj0AARo+AAEaQAABGkIAARpDAAEaRAABGkYAARpHAAEahgABGogAARqKAAEajAABGo8AARqQAAEakQABGpIAARqTAAEalQABGpcAARqYAAEamQABGpsAARqcAAEa2wABGt0AARrfAAEa4QABGuQAARrlAAEa5gABGucAARroAAEa6gABGuwAARrtAAEa7gABGvAAARrxAAEbMAABGzIAARs0AAEbNgABGzkAARs6AAEbOwABGzwAARs9AAEbPwABG0EAARtCAAEbQwABG0UAARtGAAEbawABG48AARu2AAEb2gABG90AARvfAAEb4QABG+MAARvlAAEb5wABG+gAARvrAAEb+AABHAcAARwJAAEcCwABHA0AARwPAAEcEQABHBMAARwVAAEcJAABHCcAARwqAAEcLQABHDAAARwzAAEcNgABHDkAARw7AAEcegABHHwAARx+AAEcgAABHIMAARyEAAEchQABHIYAARyHAAEciQABHIsAARyMAAEcjQABHI8AARyQAAEczwABHNEAARzTAAEc1QABHNgAARzZAAEc2gABHNsAARzcAAEc3gABHOAAARzhAAEc4gABHOQAARzlAAEdJAABHSYAAR0oAAEdKgABHS0AAR0uAAEdLwABHTAAAR0xAAEdMwABHTUAAR02AAEdNwABHTkAAR06AAEdeQABHXsAAR19AAEdfwABHYIAAR2DAAEdhAABHYUAAR2GAAEdiAABHYoAAR2LAAEdjAABHY4AAR2PAAEdzgABHdAAAR3SAAEd1AABHdcAAR3YAAEd2QABHdoAAR3bAAEd3QABHd8AAR3gAAEd4QABHeMAAR3kAAEeIwABHiUAAR4nAAEeKQABHiwAAR4tAAEeLgABHi8AAR4wAAEeMgABHjQAAR41AAEeNgABHjgAAR45AAEeeAABHnoAAR58AAEefgABHoEAAR6CAAEegwABHoQAAR6FAAEehwABHokAAR6KAAEeiwABHo0AAR6OAAEe2QABHvwAAR8cAAEfPAABHz4AAR9AAAEfQgABH0QAAR9HAAEfSAABH0kAAR9MAAEfTQABH08AAR9QAAEfUgABH1UAAR9WAAEfVwABH1oAAR9bAAEfYAABH20AAR9yAAEfdAABH3YAAR97AAEffgABH4EAAR+DAAEfqAABH8wAAR/zAAEgFwABIBoAASAcAAEgHgABICAAASAiAAEgJAABICUAASAoAAEgNQABIEYAASBIAAEgSgABIEwAASBOAAEgUAABIFIAASBUAAEgVgABIGcAASBqAAEgbQABIHAAASBzAAEgdgABIHkAASB8AAEgfwABIIEAASDAAAEgwgABIMQAASDGAAEgyQABIMoAASDLAAEgzAABIM0AASDPAAEg0QABINIAASDTAAEg1QABINYAASEVAAEhFwABIRkAASEbAAEhHgABIR8AASEgAAEhIQABISIAASEkAAEhJgABIScAASEoAAEhKgABISsAASFqAAEhbAABIW8AASFxAAEhdAABIXUAASF2AAEhdwABIXgAASF6AAEhfAABIX0AASF+AAEhgAABIYEAASGOAAEhjwABIZAAASGSAAEh0QABIdMAASHVAAEh1wABIdoAASHbAAEh3AABId0AASHeAAEh4AABIeIAASHjAAEh5AABIeYAASHnAAEiJgABIigAASIqAAEiLAABIi8AASIwAAEiMQABIjIAASIzAAEiNQABIjcAASI4AAEiOQABIjsAASI8AAEiewABIn0AASJ/AAEigQABIoQAASKFAAEihgABIocAASKIAAEiigABIowAASKNAAEijgABIpAAASKRAAEi0AABItIAASLUAAEi1gABItkAASLaAAEi2wABItwAASLdAAEi3wABIuEAASLiAAEi4wABIuUAASLmAAEjJQABIycAASMpAAEjKwABIy4AASMvAAEjMAABIzEAASMyAAEjNAABIzYAASM3AAEjOAABIzoAASM7AAEjYAABI4QAASOrAAEjzwABI9IAASPUAAEj1gABI9gAASPaAAEj3AABI90AASPgAAEj7QABI/wAASP+AAEkAAABJAIAASQEAAEkBgABJAgAASQKAAEkGQABJBwAASQfAAEkIgABJCUAASQoAAEkKwABJC4AASQwAAEkbwABJHEAASRzAAEkdQABJHgAASR5AAEkegABJHsAASR8AAEkfgABJIAAASSBAAEkggABJIQAASSFAAEkxAABJMYAASTIAAEkygABJM0AASTOAAEkzwABJNAAASTRAAEk0wABJNUAASTWAAEk1wABJNkAASTaAAElGQABJRsAASUdAAElHwABJSIAASUjAAElJAABJSUAASUmAAElKAABJSoAASUrAAElLAABJS4AASUvAAElbgABJXAAASVyAAEldAABJXcAASV4AAEleQABJXoAASV7AAElfQABJX8AASWAAAElgQABJYMAASWEAAElwwABJcUAASXHAAElyQABJcwAASXNAAElzgABJc8AASXQAAEl0gABJdQAASXVAAEl1gABJdgAASXZAAEmGAABJhoAASYcAAEmHgABJiEAASYiAAEmIwABJiQAASYlAAEmJwABJikAASYqAAEmKwABJi0AASYuAAEmbQABJm8AASZxAAEmcwABJnYAASZ3AAEmeAABJnkAASZ6AAEmfAABJn4AASZ/AAEmgAABJoIAASaDAAEmzgABJvEAAScRAAEnMQABJzMAASc1AAEnNwABJzkAASc8AAEnPQABJz4AASdBAAEnQgABJ0QAASdFAAEnRwABJ0oAASdLAAEnTAABJ08AASdQAAEnWQABJ2YAASdrAAEnbQABJ28AASd0AAEndwABJ3oAASd8AAEnoQABJ8UAASfsAAEoEAABKBMAASgVAAEoFwABKBkAASgbAAEoHQABKB4AASghAAEoLgABKD8AAShBAAEoQwABKEUAAShHAAEoSQABKEsAAShNAAEoTwABKGAAAShjAAEoZgABKGkAAShsAAEobwABKHIAASh1AAEoeAABKHoAASi5AAEouwABKL0AASi/AAEowgABKMMAASjEAAEoxQABKMYAASjIAAEoygABKMsAASjMAAEozgABKM8AASkOAAEpEAABKRIAASkUAAEpFwABKRgAASkZAAEpGgABKRsAASkdAAEpHwABKSAAASkhAAEpIwABKSQAASljAAEpZQABKWgAASlqAAEpbQABKW4AASlvAAEpcAABKXEAASlzAAEpdQABKXYAASl3AAEpeQABKXoAASmHAAEpiAABKYkAASmLAAEpygABKcwAASnOAAEp0AABKdMAASnUAAEp1QABKdYAASnXAAEp2QABKdsAASncAAEp3QABKd8AASngAAEqHwABKiEAASojAAEqJQABKigAASopAAEqKgABKisAASosAAEqLgABKjAAASoxAAEqMgABKjQAASo1AAEqdAABKnYAASp4AAEqegABKn0AASp+AAEqfwABKoAAASqBAAEqgwABKoUAASqGAAEqhwABKokAASqKAAEqyQABKssAASrNAAEqzwABKtIAASrTAAEq1AABKtUAASrWAAEq2AABKtoAASrbAAEq3AABKt4AASrfAAErHgABKyAAASsiAAErJAABKycAASsoAAErKQABKyoAASsrAAErLQABKy8AASswAAErMQABKzMAASs0AAErWQABK30AASukAAEryAABK8sAASvNAAErzwABK9EAASvTAAEr1QABK9YAASvZAAEr5gABK/UAASv3AAEr+QABK/sAASv9AAEr/wABLAEAASwDAAEsEgABLBUAASwYAAEsGwABLB4AASwhAAEsJAABLCcAASwpAAEsaAABLGoAASxsAAEsbgABLHEAASxyAAEscwABLHQAASx1AAEsdwABLHkAASx6AAEsewABLH0AASx+AAEsvQABLL8AASzBAAEswwABLMYAASzHAAEsyAABLMkAASzKAAEszAABLM4AASzPAAEs0AABLNIAASzTAAEtEgABLRQAAS0WAAEtGAABLRsAAS0cAAEtHQABLR4AAS0fAAEtIQABLSMAAS0kAAEtJQABLScAAS0oAAEtZwABLWkAAS1rAAEtbQABLXAAAS1xAAEtcgABLXMAAS10AAEtdgABLXgAAS15AAEtegABLXwAAS19AAEtvAABLb4AAS3AAAEtwgABLcUAAS3GAAEtxwABLcgAAS3JAAEtywABLc0AAS3OAAEtzwABLdEAAS3SAAEuEQABLhMAAS4VAAEuFwABLhoAAS4bAAEuHAABLh0AAS4eAAEuIAABLiIAAS4jAAEuJAABLiYAAS4nAAEuZgABLmgAAS5qAAEubAABLm8AAS5wAAEucQABLnIAAS5zAAEudQABLncAAS54AAEueQABLnsAAS58AAEuxwABLuoAAS8KAAEvKgABLywAAS8uAAEvMAABLzIAAS81AAEvNgABLzcAAS86AAEvOwABLz0AAS8+AAEvQAABL0MAAS9EAAEvRQABL0gAAS9JAAEvTgABL1sAAS9gAAEvYgABL2QAAS9pAAEvbAABL28AAS9xAAEvlgABL7oAAS/hAAEwBQABMAgAATAKAAEwDAABMA4AATAQAAEwEgABMBMAATAWAAEwIwABMDQAATA2AAEwOAABMDoAATA8AAEwPgABMEAAATBCAAEwRAABMFUAATBYAAEwWwABMF4AATBhAAEwZAABMGcAATBqAAEwbQABMG8AATCuAAEwsAABMLIAATC0AAEwtwABMLgAATC5AAEwugABMLsAATC9AAEwvwABMMAAATDBAAEwwwABMMQAATEDAAExBQABMQcAATEJAAExDAABMQ0AATEOAAExDwABMRAAATESAAExFAABMRUAATEWAAExGAABMRkAATFYAAExWgABMV0AATFfAAExYgABMWMAATFkAAExZQABMWYAATFoAAExagABMWsAATFsAAExbgABMW8AATF8AAExfQABMX4AATGAAAExvwABMcEAATHDAAExxQABMcgAATHJAAExygABMcsAATHMAAExzgABMdAAATHRAAEx0gABMdQAATHVAAEyFAABMhYAATIYAAEyGgABMh0AATIeAAEyHwABMiAAATIhAAEyIwABMiUAATImAAEyJwABMikAATIqAAEyaQABMmsAATJtAAEybwABMnIAATJzAAEydAABMnUAATJ2AAEyeAABMnoAATJ7AAEyfAABMn4AATJ/AAEyvgABMsAAATLCAAEyxAABMscAATLIAAEyyQABMsoAATLLAAEyzQABMs8AATLQAAEy0QABMtMAATLUAAEzEwABMxUAATMXAAEzGQABMxwAATMdAAEzHgABMx8AATMgAAEzIgABMyQAATMlAAEzJgABMygAATMpAAEzTgABM3IAATOZAAEzvQABM8AAATPCAAEzxAABM8YAATPIAAEzygABM8sAATPOAAEz2wABM+oAATPsAAEz7gABM/AAATPyAAEz9AABM/YAATP4AAE0BwABNAoAATQNAAE0EAABNBMAATQWAAE0GQABNBwAATQeAAE0XQABNF8AATRhAAE0YwABNGYAATRnAAE0aAABNGkAATRqAAE0bAABNG4AATRvAAE0cAABNHIAATRzAAE0sgABNLQAATS2AAE0uAABNLsAATS8AAE0vQABNL4AATS/AAE0wQABNMMAATTEAAE0xQABNMcAATTIAAE1BwABNQkAATULAAE1DQABNRAAATURAAE1EgABNRMAATUUAAE1FgABNRgAATUZAAE1GgABNRwAATUdAAE1XAABNV4AATVgAAE1YgABNWUAATVmAAE1ZwABNWgAATVpAAE1awABNW0AATVuAAE1bwABNXEAATVyAAE1sQABNbMAATW1AAE1twABNboAATW7AAE1vAABNb0AATW+AAE1wAABNcIAATXDAAE1xAABNcYAATXHAAE2BgABNggAATYKAAE2DAABNg8AATYQAAE2EQABNhIAATYTAAE2FQABNhcAATYYAAE2GQABNhsAATYcAAE2WwABNl0AATZfAAE2YQABNmQAATZlAAE2ZgABNmcAATZoAAE2agABNmwAATZtAAE2bgABNnAAATZxAAE2vAABNt8AATb/AAE3HwABNyEAATcjAAE3JQABNycAATcqAAE3KwABNywAATcvAAE3MAABNzIAATczAAE3NQABNzgAATc5AAE3OgABNz0AATc+AAE3QwABN1AAATdVAAE3VwABN1kAATdeAAE3YQABN2QAATdmAAE3iwABN68AATfWAAE3+gABN/0AATf/AAE4AQABOAMAATgFAAE4BwABOAgAATgLAAE4GAABOCkAATgrAAE4LQABOC8AATgxAAE4MwABODUAATg3AAE4OQABOEoAAThNAAE4UAABOFMAAThWAAE4WQABOFwAAThfAAE4YgABOGQAATijAAE4pQABOKcAATipAAE4rAABOK0AATiuAAE4rwABOLAAATiyAAE4tAABOLUAATi2AAE4uAABOLkAATj4AAE4+gABOPwAATj+AAE5AQABOQIAATkDAAE5BAABOQUAATkHAAE5CQABOQoAATkLAAE5DQABOQ4AATlNAAE5TwABOVIAATlUAAE5VwABOVgAATlZAAE5WgABOVsAATldAAE5XwABOWAAATlhAAE5YwABOWQAATlxAAE5cgABOXMAATl1AAE5tAABObYAATm4AAE5ugABOb0AATm+AAE5vwABOcAAATnBAAE5wwABOcUAATnGAAE5xwABOckAATnKAAE6CQABOgsAAToNAAE6DwABOhIAAToTAAE6FAABOhUAAToWAAE6GAABOhoAATobAAE6HAABOh4AATofAAE6XgABOmAAATpiAAE6ZAABOmcAATpoAAE6aQABOmoAATprAAE6bQABOm8AATpwAAE6cQABOnMAATp0AAE6swABOrUAATq3AAE6uQABOrwAATq9AAE6vgABOr8AATrAAAE6wgABOsQAATrFAAE6xgABOsgAATrJAAE7CAABOwoAATsMAAE7DgABOxEAATsSAAE7EwABOxQAATsVAAE7FwABOxkAATsaAAE7GwABOx0AATseAAE7QwABO2cAATuOAAE7sgABO7UAATu3AAE7uQABO7sAATu9AAE7vwABO8AAATvDAAE70AABO98AATvhAAE74wABO+UAATvnAAE76QABO+sAATvtAAE7/AABO/8AATwCAAE8BQABPAgAATwLAAE8DgABPBEAATwTAAE8UgABPFQAATxWAAE8WAABPFsAATxcAAE8XQABPF4AATxfAAE8YQABPGMAATxkAAE8ZQABPGcAATxoAAE8pwABPKkAATyrAAE8rQABPLAAATyxAAE8sgABPLMAATy0AAE8tgABPLgAATy5AAE8ugABPLwAATy9AAE8/AABPP4AAT0AAAE9AgABPQUAAT0GAAE9BwABPQgAAT0JAAE9CwABPQ0AAT0OAAE9DwABPREAAT0SAAE9UQABPVMAAT1VAAE9VwABPVoAAT1bAAE9XAABPV0AAT1eAAE9YAABPWIAAT1jAAE9ZAABPWYAAT1nAAE9pgABPagAAT2qAAE9rAABPa8AAT2wAAE9sQABPbIAAT2zAAE9tQABPbcAAT24AAE9uQABPbsAAT28AAE9+wABPf0AAT3/AAE+AQABPgQAAT4FAAE+BgABPgcAAT4IAAE+CgABPgwAAT4NAAE+DgABPhAAAT4RAAE+UAABPlIAAT5UAAE+VgABPlkAAT5aAAE+WwABPlwAAT5dAAE+XwABPmEAAT5iAAE+YwABPmUAAT5mAAE+sQABPtQAAT70AAE/FAABPxYAAT8YAAE/GgABPxwAAT8fAAE/IAABPyEAAT8kAAE/JQABPycAAT8oAAE/KgABPy0AAT8uAAE/LwABPzIAAT8zAAE/PAABP0kAAT9OAAE/UAABP1IAAT9XAAE/WgABP10AAT9fAAE/hAABP6gAAT/PAAE/8wABP/Y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AAVu4AAFbuwABW8gAAVvXAAFb2QABW9sAAVvdAAFb3wABW+EAAVvjAAFb5QABW/QAAVv3AAFb+gABW/0AAVwAAAFcAwABXAYAAVwJAAFcCwABXEoAAVxMAAFcTgABXFAAAVxTAAFcVAABXFUAAVxWAAFcVwABXFkAAVxbAAFcXAABXF0AAVxfAAFcYAABXJ8AAVyhAAFcowABXKUAAVyoAAFcqQABXKoAAVyrAAFcrAABXK4AAVywAAFcsQABXLIAAVy0AAFctQABXPQAAVz2AAFc+AABXPoAAVz9AAFc/gABXP8AAV0AAAFdAQABXQMAAV0FAAFdBgABXQcAAV0JAAFdCgABXUkAAV1LAAFdTQABXU8AAV1SAAFdUwABXVQAAV1VAAFdVgABXVgAAV1aAAFdWwABXVwAAV1eAAFdXwABXZ4AAV2gAAFdogABXaQAAV2nAAFdqAABXakAAV2qAAFdqwABXa0AAV2vAAFdsAABXbEAAV2zAAFdtAABXfMAAV31AAFd9wABXfkAAV38AAFd/QABXf4AAV3/AAFeAAABXgIAAV4EAAFeBQABXgYAAV4IAAFeCQABXkgAAV5KAAFeTAABXk4AAV5RAAFeUgABXlMAAV5UAAFeVQABXlcAAV5ZAAFeWgABXlsAAV5dAAFeXgABXqkAAV7MAAFe7AABXwwAAV8OAAFfEAABXxIAAV8UAAFfFwABXxgAAV8ZAAFfHAABXx0AAV8fAAFfIAABXyIAAV8kAAFfJQABXyYAAV8pAAFfKgABXy8AAV88AAFfQQABX0MAAV9FAAFfSgABX00AAV9QAAFfUgABX3cAAV+bAAFfwgABX+YAAV/pAAFf6wABX+0AAV/vAAFf8QABX/MAAV/0AAFf9wABYAQAAWAVAAFgFwABYBkAAWAbAAFgHQABYB8AAWAhAAFgIwABYCUAAWA2AAFgOQABYDwAAWA/AAFgQgABYEUAAWBIAAFgSwABYE4AAWBQAAFgjwABYJEAAWCTAAFglQABYJgAAWCZAAFgmgABYJsAAWCcAAFgngABYKAAAWChAAFgogABYKQAAWClAAFg5AABYOYAAWDoAAFg6gABYO0AAWDuAAFg7wABYPAAAWDxAAFg8wABYPUAAWD2AAFg9wABYPkAAWD6AAFhOQABYTsAAWE+AAFhQAABYUMAAWFEAAFhRQABYUYAAWFHAAFhSQABYUsAAWFMAAFhTQABYU8AAWFQAAFhXQABYV4AAWFfAAFhYQABYaAAAWGiAAFhpAABYaYAAWGpAAFhqgABYasAAWGsAAFhrQABYa8AAWGxAAFhsgABYbMAAWG1AAFhtgABYfUAAWH3AAFh+QABYfsAAWH+AAFh/wABYgAAAWIBAAFiAgABYgQAAWIGAAFiBwABYggAAWIKAAFiCwABYkoAAWJMAAFiTgABYlAAAWJTAAFiVAABYlUAAWJWAAFiVwABYlkAAWJbAAFiXAABYl0AAWJfAAFiYAABYp8AAWKhAAFiowABYqUAAWKoAAFiqQABYqoAAWKrAAFirAABYq4AAWKwAAFisQABYrIAAWK0AAFitQABYvQAAWL2AAFi+AABYvoAAWL9AAFi/gABYv8AAWMAAAFjAQABYwMAAWMFAAFjBgABYwcAAWMJAAFjCgABYy8AAWNTAAFjegABY54AAWOhAAFjowABY6UAAWOnAAFjqQABY6sAAWOsAAFjrwABY7wAAWPLAAFjzQABY88AAWPRAAFj0wABY9UAAWPXAAFj2QABY+gAAWPrAAFj7gABY/EAAWP0AAFj9wABY/oAAWP9AAFj/wABZD4AAWRAAAFkQgABZEQAAWRHAAFkSAABZEkAAWRKAAFkSwABZE0AAWRPAAFkUAABZFEAAWRTAAFkVAABZJMAAWSVAAFklwABZJkAAWScAAFknQABZJ4AAWSfAAFkoAABZKIAAWSkAAFkpQABZKYAAWSoAAFkqQABZOgAAWTqAAFk7AABZO4AAWTxAAFk8gABZPMAAWT0AAFk9QABZPcAAWT5AAFk+gABZPsAAWT9AAFk/gABZT0AAWU/AAFlQQABZUMAAWVGAAFlRwABZUgAAWVJAAFlSgABZUwAAWVOAAFlTwABZVAAAWVSAAFlUwABZZIAAWWUAAFllgABZZgAAWWbAAFlnAABZZ0AAWWeAAFlnwABZaEAAWWjAAFlpAABZaUAAWWnAAFlqAABZecAAWXpAAFl6wABZe0AAWXwAAFl8QABZfIAAWXzAAFl9AABZfYAAWX4AAFl+QABZfoAAWX8AAFl/QABZjwAAWY+AAFmQAABZkIAAWZFAAFmRgABZkcAAWZIAAFmSQABZksAAWZNAAFmTgABZk8AAWZRAAFmUgABZp0AAWbAAAFm4AABZwAAAWcCAAFnBAABZwYAAWcIAAFnCwABZwwAAWcNAAFnEAABZxEAAWcTAAFnFAABZxYAAWcZAAFnGgABZxsAAWceAAFnHwABZyQAAWcxAAFnNgABZzgAAWc6AAFnPwABZ0IAAWdFAAFnRwABZ2wAAWeQAAFntwABZ9sAAWfeAAFn4AABZ+IAAWfkAAFn5gABZ+gAAWfpAAFn7AABZ/kAAWgKAAFoDAABaA4AAWgQAAFoEgABaBQAAWgWAAFoGAABaBoAAWgrAAFoLgABaDEAAWg0AAFoNwABaDoAAWg9AAFoQAABaEMAAWhFAAFohAABaIYAAWiIAAFoigABaI0AAWiOAAFojwABaJAAAWiRAAFokwABaJUAAWiWAAFolwABaJkAAWiaAAFo2QABaNsAAWjdAAFo3wABaOIAAWjjAAFo5AABaOUAAWjmAAFo6AABaOoAAWjrAAFo7AABaO4AAWjvAAFpLgABaTAAAWkzAAFpNQABaTgAAWk5AAFpOgABaTsAAWk8AAFpPgABaUAAAWlBAAFpQgABaUQAAWlFAAFpUgABaVMAAWlUAAFpVgABaZUAAWmXAAFpmQABaZsAAWmeAAFpnwABaaAAAWmhAAFpogABaaQAAWmmAAFppwABaagAAWmqAAFpqwABaeoAAWnsAAFp7gABafAAAWnzAAFp9AABafUAAWn2AAFp9wABafkAAWn7AAFp/AABaf0AAWn/AAFqAAABaj8AAWpBAAFqQwABakUAAWpIAAFqSQABakoAAWpLAAFqTAABak4AAWpQAAFqUQABalIAAWpUAAFqVQABapQAAWqWAAFqmQABapsAAWqeAAFqnwABaqAAAWqhAAFqogABaqQAAWqmAAFqpwABaqgAAWqqAAFqqwABar4AAWr9AAFq/wABawEAAWsDAAFrBgABawcAAWsIAAFrCQABawoAAWsMAAFrDgABaw8AAWsQAAFrEgABaxMAAWs4AAFrXAABa4MAAWunAAFrqgABa6wAAWuuAAFrsAABa7IAAWu0AAFrtQABa7gAAWvFAAFr1AABa9YAAWvYAAFr2gABa9wAAWveAAFr4AABa+IAAWvxAAFr9AABa/cAAWv6AAFr/QABbAAAAWwDAAFsBgABbAgAAWxHAAFsSQABbEsAAWxNAAFsUAABbFEAAWxSAAFsUwABbFQAAWxWAAFsWAABbFkAAWxaAAFsXAABbF0AAWycAAFsngABbKAAAWyiAAFspQABbKYAAWynAAFsqAABbKkAAWyrAAFsrQABbK4AAWyvAAFssQABbLIAAWzxAAFs8wABbPUAAWz3AAFs+gABbPsAAWz8AAFs/QABbP4AAW0AAAFtAgABbQMAAW0EAAFtBgABbQcAAW1GAAFtSAABbUoAAW1MAAFtTwABbVAAAW1RAAFtUgABbVMAAW1VAAFtVwABbVgAAW1ZAAFtWwABbVwAAW2bAAFtnQABbZ8AAW2hAAFtpAABbaUAAW2mAAFtpwABbagAAW2qAAFtrAABba0AAW2uAAFtsAABbbEAAW3wAAFt8gABbfQAAW32AAFt+QABbfoAAW37AAFt/AABbf0AAW3/AAFuAQABbgIAAW4DAAFuBQABbgYAAW5FAAFuRwABbkkAAW5LAAFuTgABbk8AAW5QAAFuUQABblIAAW5UAAFuVgABblcAAW5YAAFuWgABblsAAW6mAAFuyQABbukAAW8JAAFvCwABbw0AAW8PAAFvEQABbxQAAW8VAAFvFgABbxkAAW8aAAFvHAABbx0AAW8fAAFvIgABbyMAAW8kAAFvJwABbygAAW8xAAFvPgABb0MAAW9FAAFvRwABb0wAAW9PAAFvUgABb1QAAW95AAFvnQABb8QAAW/oAAFv6wABb+0AAW/vAAFv8QABb/MAAW/1AAFv9gABb/kAAXAGAAFwFwABcBkAAXAbAAFwHQABcB8AAXAhAAFwIwABcCUAAXAnAAFwOAABcDsAAXA+AAFwQQABcEQAAXBHAAFwSgABcE0AAXBQAAFwUgABcJEAAXCTAAFwlQABcJcAAXCaAAFwmwABcJwAAXCdAAFwngABcKAAAXCiAAFwowABcKQAAXCmAAFwpwABcOYAAXDoAAFw6gABcOwAAXDvAAFw8AABcPEAAXDyAAFw8wABcPUAAXD3AAFw+AABcPkAAXD7AAFw/AABcTsAAXE9AAFxQAABcUIAAXFFAAFxRgABcUcAAXFIAAFxSQABcUsAAXFNAAFxTgABcU8AAXFRAAFxUgABcV8AAXFgAAFxYQABcWMAAXGiAAFxpAABcaYAAXGoAAFxqwABcawAAXGtAAFxrgABca8AAXGxAAFxswABcbQAAXG1AAFxtwABcbgAAXH3AAFx+QABcfsAAXH9AAFyAAABcgEAAXICAAFyAwABcgQAAXIGAAFyCAABcgkAAXIKAAFyDAABcg0AAXJMAAFyTgABclAAAXJSAAFyVQABclYAAXJXAAFyWAABclkAAXJbAAFyXQABcl4AAXJfAAFyYQABcmIAAXKhAAFyowABcqUAAXKnAAFyqgABcqsAAXKsAAFyrQABcq4AAXKwAAFysgABcrMAAXK0AAFytgABcrcAAXL2AAFy+AABcvoAAXL8AAFy/wABcwAAAXMBAAFzAgABcwMAAXMFAAFzBwABcwgAAXMJAAFzCwABcwwAAXMxAAFzVQABc3wAAXOgAAFzowABc6UAAXOnAAFzqQABc6sAAXOtAAFzrgABc7EAAXO+AAFzzQABc88AAXPRAAFz0wABc9UAAXPXAAFz2QABc9sAAXPqAAFz7QABc/AAAXPzAAFz9gABc/kAAXP8AAFz/wABdAEAAXRAAAF0QgABdEQAAXRGAAF0SQABdEoAAXRLAAF0TAABdE0AAXRPAAF0UQABdFIAAXRTAAF0VQABdFYAAXSVAAF0lwABdJkAAXSbAAF0ngABdJ8AAXSgAAF0oQABdKIAAXSkAAF0pgABdKcAAXSoAAF0qgABdKsAAXTqAAF07AABdO4AAXTwAAF08wABdPQAAXT1AAF09gABdPcAAXT5AAF0+wABdPwAAXT9AAF0/wABdQAAAXU/AAF1QQABdUMAAXVFAAF1SAABdUkAAXVKAAF1SwABdUwAAXVOAAF1UAABdVEAAXVSAAF1VAABdVUAAXWUAAF1lgABdZgAAXWaAAF1nQABdZ4AAXWfAAF1oAABdaEAAXWjAAF1pQABdaYAAXWnAAF1qQABdaoAAXXpAAF16wABde0AAXXvAAF18gABdfMAAXX0AAF19QABdfYAAXX4AAF1+gABdfsAAXX8AAF1/gABdf8AAXY+AAF2QAABdkIAAXZEAAF2RwABdkgAAXZJAAF2SgABdksAAXZNAAF2TwABdlAAAXZRAAF2UwABdlQAAXafAAF2wgABduIAAXcCAAF3BAABdwYAAXcIAAF3CgABdw0AAXcOAAF3DwABdxIAAXcTAAF3FQABdxYAAXcYAAF3GgABdxsAAXccAAF3HwABdyAAAXclAAF3MgABdzcAAXc5AAF3OwABd0AAAXdDAAF3RgABd0gAAXdtAAF3kQABd7gAAXfcAAF33wABd+EAAXfjAAF35QABd+cAAXfpAAF36gABd+0AAXf6AAF4CwABeA0AAXgPAAF4EQABeBMAAXgVAAF4FwABeBkAAXgbAAF4LAABeC8AAXgyAAF4NQABeDgAAXg7AAF4PgABeEEAAXhEAAF4RgABeIUAAXiHAAF4iQABeIsAAXiOAAF4jwABeJAAAXiRAAF4kgABeJQAAXiWAAF4lwABeJgAAXiaAAF4mwABeNoAAXjcAAF43gABeOAAAXjjAAF45AABeOUAAXjmAAF45wABeOkAAXjrAAF47AABeO0AAXjvAAF48AABeS8AAXkxAAF5NAABeTYAAXk5AAF5OgABeTsAAXk8AAF5PQABeT8AAXlBAAF5QgABeUMAAXlFAAF5RgABeVMAAXlUAAF5VQABeVcAAXmWAAF5mAABeZoAAXmcAAF5nwABeaAAAXmhAAF5ogABeaMAAXmlAAF5pwABeagAAXmpAAF5qwABeawAAXnrAAF57QABee8AAXnxAAF59AABefUAAXn2AAF59wABefgAAXn6AAF5/AABef0AAXn+AAF6AAABegEAAXpAAAF6QgABekQAAXpGAAF6SQABekoAAXpLAAF6TAABek0AAXpPAAF6UQABelIAAXpTAAF6VQABelYAAXqVAAF6lwABepkAAXqbAAF6ngABep8AAXqgAAF6oQABeqIAAXqkAAF6pgABeqcAAXqoAAF6qgABeqsAAXrqAAF67AABeu4AAXrwAAF68wABevQAAXr1AAF69gABevcAAXr5AAF6+wABevwAAXr9AAF6/wABewAAAXslAAF7SQABe3AAAXuUAAF7lwABe5kAAXubAAF7nQABe58AAXuhAAF7ogABe6UAAXuyAAF7wQABe8MAAXvFAAF7xwABe8kAAXvLAAF7zQABe88AAXveAAF74QABe+QAAXvnAAF76gABe+0AAXvwAAF78wABe/UAAXw0AAF8NgABfDgAAXw6AAF8PQABfD4AAXw/AAF8QAABfEEAAXxDAAF8RQABfEYAAXxHAAF8SQABfEoAAXyJAAF8iwABfI0AAXyPAAF8kgABfJMAAXyUAAF8lQABfJYAAXyYAAF8mgABfJsAAXycAAF8ngABfJ8AAXzeAAF84AABfOIAAXzkAAF85wABfOgAAXzpAAF86gABfOsAAXztAAF87wABfPAAAXzxAAF88wABfPQAAX0zAAF9NQABfTgAAX06AAF9PQABfT4AAX0/AAF9QAABfUEAAX1DAAF9RQABfUYAAX1HAAF9SQABfUoAAX2JAAF9iwABfY0AAX2PAAF9kgABfZMAAX2UAAF9lQABfZYAAX2YAAF9mgABfZsAAX2cAAF9ngABfZ8AAX3eAAF94AABfeIAAX3kAAF95wABfegAAX3pAAF96gABfesAAX3tAAF97wABffAAAX3xAAF98wABffQAAX4zAAF+NQABfjgAAX46AAF+PQABfj4AAX4/AAF+QAABfkEAAX5DAAF+RQABfkYAAX5HAAF+SQABfkoAAX6VAAF+uAABftgAAX74AAF++gABfvwAAX7+AAF/AAABfwMAAX8EAAF/BQABfwgAAX8JAAF/CwABfwwAAX8OAAF/EQABfxIAAX8TAAF/FgABfxcAAX8gAAF/LQABfzIAAX80AAF/NgABfzsAAX8+AAF/QQABf0MAAX9oAAF/jAABf7MAAX/XAAF/2gABf9wAAX/eAAF/4AABf+IAAX/kAAF/5QABf+gAAX/1AAGABgABgAgAAYAKAAGADAABgA4AAYAQAAGAEgABgBQAAYAWAAGAJwABgCoAAYAtAAGAMAABgDMAAYA2AAGAOQABgDwAAYA/AAGAQQABgIAAAYCCAAGAhAABgIYAAYCJAAGAigABgIsAAYCMAAGAjQABgI8AAYCRAAGAkgABgJMAAYCVAAGAlgABgNUAAYDXAAGA2QABgNsAAYDeAAGA3wABgOAAAYDhAAGA4gABgOQAAYDmAAGA5wABgOgAAYDqAAGA6wABgSoAAYEsAAGBLwABgTEAAYE0AAGBNQABgTYAAYE3AAGBOAABgToAAYE8AAGBPQABgT4AAYFAAAGBQQABgU4AAYFPAAGBUAABgVIAAYGRAAGBkwABgZUAAYGXAAGBmgABgZsAAYGcAAGBnQABgZ4AAYGgAAGBogABgaMAAYGkAAGBpgABgacAAYHmAAGB6AABgeoAAYHsAAGB7wABgfAAAYHxAAGB8gABgfMAAYH1AAGB9wABgfgAAYH5AAGB+wABgfwAAYI7AAGCPQABgj8AAYJBAAGCRAABgkUAAYJGAAGCRwABgkgAAYJKAAGCTAABgk0AAYJOAAGCUAABglEAAYKQAAGCkgABgpQAAYKWAAGCmQABgpoAAYKbAAGCnAABgp0AAYKfAAGCoQABgqIAAYKjAAGCpQABgqYAAYLlAAGC5wABgukAAYLrAAGC7gABgu8AAYLwAAGC8QABgvIAAYL0AAGC9gABgvcAAYL4AAGC+gABgvsAAYMgAAGDRAABg2sAAYOPAAGDkgABg5QAAYOWAAGDmAABg5oAAYOcAAGDnQABg6AAAYOtAAGDvAABg74AAYPAAAGDwgABg8QAAYPGAAGDyAABg8oAAYPZAAGD3AABg98AAYPiAAGD5QABg+gAAYPrAAGD7gABg/AAAYQvAAGEMQABhDMAAYQ1AAGEOAABhDkAAYQ6AAGEOwABhDwAAYQ+AAGEQAABhEEAAYRCAAGERAABhEUAAYSEAAGEhgABhIgAAYSKAAGEjQABhI4AAYSPAAGEkAABhJEAAYSTAAGElQABhJYAAYSXAAGEmQABhJoAAYTZAAGE2wABhN0AAYTfAAGE4gABhOMAAYTkAAGE5QABhOYAAYToAAGE6gABhOsAAYTsAAGE7gABhO8AAYUuAAGFMAABhTIAAYU0AAGFNwABhTgAAYU5AAGFOgABhTsAAYU9AAGFPwABhUAAAYVBAAGFQwABhUQAAYWDAAGFhQABhYcAAYWJAAGFjAABhY0AAYWOAAGFjwABhZAAAYWSAAGFlAABhZUAAYWWAAGFmAABhZkAAYXYAAGF2gABhdwAAYXeAAGF4QABheIAAYXjAAGF5AABheUAAYXnAAGF6QABheoAAYXrAAGF7QABhe4AAYYtAAGGLwABhjEAAYYzAAGGNgABhjcAAYY4AAGGOQABhjoAAYY8AAGGPgABhj8AAYZAAAGGQgABhkMAAYaOAAGGsQABhtEAAYbxAAGG8wABhvUAAYb3AAGG+QABhvwAAYb9AAGG/gABhwEAAYcCAAGHBAABhwUAAYcHAAGHCgABhwsAAYcMAAGHDwABhxAAAYcVAAGHIgABhycAAYcpAAGHKwABhzAAAYczAAGHNgABhzgAAYddAAGHgQABh6gAAYfMAAGHzwABh9EAAYfTAAGH1QABh9cAAYfZAAGH2gABh90AAYfqAAGH+wABh/0AAYf/AAGIAQABiAMAAYgFAAGIBwABiAkAAYgLAAGIHAABiB8AAYgiAAGIJQABiCgAAYgrAAGILgABiDEAAYg0AAGINgABiHUAAYh3AAGIeQABiHsAAYh+AAGIfwABiIAAAYiBAAGIggABiIQAAYiGAAGIhwABiIgAAYiKAAGIiwABiMoAAYjMAAGIzgABiNAAAYjTAAGI1AABiNUAAYjWAAGI1wABiNkAAYjbAAGI3AABiN0AAYjfAAGI4AABiR8AAYkhAAGJJAABiSYAAYkpAAGJKgABiSsAAYksAAGJLQABiS8AAYkxAAGJMgABiTMAAYk1AAGJNgABiUMAAYlEAAGJRQABiUcAAYmGAAGJiAABiYoAAYmMAAGJjwABiZAAAYmRAAGJkgABiZMAAYmVAAGJlwABiZgAAYmZAAGJmwABiZwAAYnbAAGJ3QABid8AAYnhAAGJ5AABieUAAYnmAAGJ5wABiegAAYnqAAGJ7AABie0AAYnuAAGJ8AABifEAAYowAAGKMgABijQAAYo2AAGKOQABijoAAYo7AAGKPAABij0AAYo/AAGKQQABikIAAYpDAAGKRQABikYAAYqFAAGKhwABiooAAYqMAAGKjwABipAAAYqRAAGKkgABipMAAYqVAAGKlwABipgAAYqZAAGKmwABipwAAYqwAAGK7wABivEAAYrzAAGK9QABivgAAYr5AAGK+gABivsAAYr8AAGK/gABiwAAAYsBAAGLAgABiwQAAYsFAAGLKgABi04AAYt1AAGLmQABi5wAAYueAAGLoAABi6IAAYukAAGLpgABi6cAAYuqAAGLtwABi8YAAYvIAAGLygABi8wAAYvOAAGL0AABi9IAAYvUAAGL4wABi+YAAYvpAAGL7AABi+8AAYvyAAGL9QABi/gAAYv6AAGMOQABjDsAAYw9AAGMPwABjEIAAYxDAAGMRAABjEUAAYxGAAGMSAABjEoAAYxLAAGMTAABjE4AAYxPAAGMjgABjJAAAYySAAGMlAABjJcAAYyYAAGMmQABjJoAAYybAAGMnQABjJ8AAYygAAGMoQABjKMAAYykAAGM4wABjOUAAYznAAGM6QABjOwAAYztAAGM7gABjO8AAYzwAAGM8gABjPQAAYz1AAGM9gABjPgAAYz5AAGNOAABjToAAY08AAGNPgABjUEAAY1CAAGNQwABjUQAAY1FAAGNRwABjUkAAY1KAAGNSwABjU0AAY1OAAGNjQABjY8AAY2RAAGNkwABjZYAAY2XAAGNmAABjZkAAY2aAAGNnAABjZ4AAY2fAAGNoAABjaIAAY2jAAGN4gABjeQAAY3mAAGN6AABjesAAY3sAAGN7QABje4AAY3vAAGN8QABjfMAAY30AAGN9QABjfcAAY34AAGONwABjjkAAY47AAGOPQABjkAAAY5BAAGOQgABjkMAAY5EAAGORgABjkgAAY5JAAGOSgABjkwAAY5NAAGOmAABjrsAAY7bAAGO+wABjv0AAY7/AAGPAQABjwMAAY8GAAGPBwABjwgAAY8LAAGPDAABjw4AAY8PAAGPEQABjxQAAY8VAAGPFgABjxkAAY8aAAGPHwABjywAAY8xAAGPMwABjzUAAY86AAGPPQABj0AAAY9CAAGPZwABj4sAAY+yAAGP1gABj9kAAY/bAAGP3QABj98AAY/hAAGP4wABj+QAAY/nAAGP9AABkAUAAZAHAAGQCQABkAsAAZANAAGQDwABkBEAAZATAAGQFQABkCYAAZApAAGQLAABkC8AAZAyAAGQNQABkDgAAZA7AAGQPgABkEAAAZB/AAGQgQABkIMAAZCFAAGQiAABkIkAAZCKAAGQiwABkIwAAZCOAAGQkAABkJEAAZCSAAGQlAABkJUAAZDUAAGQ1gABkNgAAZDaAAGQ3QABkN4AAZDfAAGQ4AABkOEAAZDjAAGQ5QABkOYAAZDnAAGQ6QABkOoAAZEpAAGRKwABkS4AAZEwAAGRMwABkTQAAZE1AAGRNgABkTcAAZE5AAGROwABkTwAAZE9AAGRPwABkUAAAZFNAAGRTgABkU8AAZFRAAGRkAABkZIAAZGUAAGRlgABkZkAAZGaAAGRmwABkZwAAZGdAAGRnwABkaEAAZGiAAGRowABkaUAAZGmAAGR5QABkecAAZHpAAGR6wABke4AAZHvAAGR8AABkfEAAZHyAAGR9AABkfYAAZH3AAGR+AABkfoAAZH7AAGSOgABkjwAAZI+AAGSQAABkkMAAZJEAAGSRQABkkYAAZJHAAGSSQABkksAAZJMAAGSTQABkk8AAZJQAAGSjwABkpEAAZKUAAGSlgABkpkAAZKaAAGSmwABkpwAAZKdAAGSnwABkqEAAZKiAAGSowABkqUAAZKmAAGStQABkvQAAZL2AAGS+AABkvoAAZL9AAGS/gABkv8AAZMAAAGTAQABkwMAAZMFAAGTBgABkwcAAZMJAAGTCgABky8AAZNTAAGTegABk54AAZOhAAGTowABk6UAAZOnAAGTqQABk6sAAZOsAAGTrwABk7wAAZPLAAGTzQABk88AAZPRAAGT0wABk9UAAZPXAAGT2QABk+gAAZPrAAGT7gABk/EAAZP0AAGT9wABk/oAAZP9AAGT/wABlD4AAZRAAAGUQgABlEQAAZRHAAGUSAABlEkAAZRKAAGUSwABlE0AAZRPAAGUUAABlFEAAZRTAAGUVAABlJMAAZSVAAGUlwABlJkAAZScAAGUnQABlJ4AAZSfAAGUoAABlKIAAZSkAAGUpQABlKYAAZSoAAGUqQABlOgAAZTqAAGU7AABlO4AAZTxAAGU8gABlPMAAZT0AAGU9QABlPcAAZT5AAGU+gABlPsAAZT9AAGU/gABlT0AAZU/AAGVQQABlUMAAZVGAAGVRwABlUgAAZVJAAGVSgABlUwAAZVOAAGVTwABlVAAAZVSAAGVUwABlZIAAZWUAAGVlgABlZgAAZWbAAGVnAABlZ0AAZWeAAGVnwABlaEAAZWjAAGVpAABlaUAAZWnAAGVqAABlecAAZXpAAGV6wABle0AAZXwAAGV8QABlfIAAZXzAAGV9AABlfYAAZX4AAGV+QABlfoAAZX8AAGV/QABljwAAZY+AAGWQAABlkIAAZZFAAGWRgABlkcAAZZIAAGWSQABlksAAZZNAAGWTgABlk8AAZZRAAGWUgABlp0AAZbAAAGW4AABlwAAAZcCAAGXBAABlwYAAZcIAAGXCwABlwwAAZcNAAGXEAABlxEAAZcTAAGXFAABlxYAAZcZAAGXGgABlxsAAZceAAGXHwABlyQAAZcxAAGXNgABlzgAAZc6AAGXPwABl0IAAZdFAAGXRwABl2wAAZeQAAGXtwABl9sAAZfeAAGX4AABl+IAAZfkAAGX5gABl+gAAZfpAAGX7AABl/kAAZgKAAGYDAABmA4AAZgQAAGYEgABmBQAAZgWAAGYGAABmBoAAZgrAAGYLgABmDEAAZg0AAGYNwABmDoAAZg9AAGYQAABmEMAAZhFAAGYhAABmIYAAZiIAAGYigABmI0AAZiOAAGYjwABmJAAAZiRAAGYkwABmJUAAZiWAAGYlwABmJkAAZiaAAGY2QABmNsAAZjdAAGY3wABmOIAAZjjAAGY5AABmOUAAZjmAAGY6AABmOoAAZjrAAGY7AABmO4AAZjvAAGZLgABmTAAAZkzAAGZNQABmTgAAZk5AAGZOgABmTsAAZk8AAGZPgABmUAAAZlBAAGZQgABmUQAAZlFAAGZUgABmVMAAZlUAAGZVgABmZUAAZmXAAGZmQABmZsAAZmeAAGZnwABmaAAAZmhAAGZogABmaQAAZmmAAGZpwABmagAAZmqAAGZqwABmeoAAZnsAAGZ7gABmfAAAZnzAAGZ9AABmfUAAZn2AAGZ9wABmfkAAZn7AAGZ/AABmf0AAZn/AAGaAAABmj8AAZpBAAGaQwABmkUAAZpIAAGaSQABmkoAAZpLAAGaTAABmk4AAZpQAAGaUQABmlIAAZpUAAGaVQABmpQAAZqWAAGamQABmpsAAZqeAAGanwABmqAAAZqhAAGaogABmqQAAZqmAAGapwABmqgAAZqqAAGaqwABmr8AAZr+AAGbAAABmwIAAZsEAAGbBwABmwgAAZsJAAGbCgABmwsAAZsNAAGbDwABmxAAAZsRAAGbEwABmxQAAZs5AAGbXQABm4QAAZuoAAGbqwABm60AAZuvAAGbsQABm7MAAZu1AAGbtgABm7kAAZvGAAGb1QABm9cAAZvZAAGb2wABm90AAZvfAAGb4QABm+MAAZvyAAGb9QABm/gAAZv7AAGb/gABnAEAAZwEAAGcBwABnAkAAZxIAAGcSgABnEwAAZxOAAGcUQABnFIAAZxTAAGcVAABnFUAAZxXAAGcWQABnFoAAZxbAAGcXQABnF4AAZydAAGcnwABnKEAAZyjAAGcpgABnKcAAZyoAAGcqQABnKoAAZysAAGcrgABnK8AAZywAAGcsgABnLMAAZzyAAGc9AABnPYAAZz4AAGc+wABnPwAAZz9AAGc/gABnP8AAZ0BAAGdAwABnQQAAZ0FAAGdBwABnQgAAZ1HAAGdSQABnUsAAZ1NAAGdUAABnVEAAZ1SAAGdUwABnVQAAZ1WAAGdWAABnVkAAZ1aAAGdXAABnV0AAZ2cAAGdngABnaAAAZ2iAAGdpQABnaYAAZ2nAAGdqAABnakAAZ2rAAGdrQABna4AAZ2vAAGdsQABnbIAAZ3xAAGd8wABnfUAAZ33AAGd+gABnfsAAZ38AAGd/QABnf4AAZ4AAAGeAgABngMAAZ4EAAGeBgABngcAAZ5GAAGeSAABnkoAAZ5MAAGeTwABnlAAAZ5RAAGeUgABnlMAAZ5VAAGeVwABnlgAAZ5ZAAGeWwABnlwAAZ6nAAGeygABnuoAAZ8KAAGfDAABnw4AAZ8QAAGfEgABnxUAAZ8WAAGfFwABnxoAAZ8bAAGfHQABnx4AAZ8gAAGfIwABnyQAAZ8lAAGfKAABnykAAZ8uAAGfOwABn0AAAZ9CAAGfRAABn0kAAZ9MAAGfTwABn1EAAZ92AAGfmgABn8EAAZ/lAAGf6AABn+oAAZ/sAAGf7gABn/AAAZ/yAAGf8wABn/YAAaADAAGgFAABoBYAAaAYAAGgGgABoBwAAaAeAAGgIAABoCIAAaAkAAGgNQABoDgAAaA7AAGgPgABoEEAAaBEAAGgRwABoEoAAaBNAAGgTwABoI4AAaCQAAGgkgABoJQAAaCXAAGgmAABoJkAAaCaAAGgmwABoJ0AAaCfAAGgoAABoKEAAaCjAAGgpAABoOMAAaDlAAGg5wABoOkAAaDsAAGg7QABoO4AAaDvAAGg8AABoPIAAaD0AAGg9QABoPYAAaD4AAGg+QABoTgAAaE6AAGhPQABoT8AAaFCAAGhQwABoUQAAaFFAAGhRgABoUgAAaFKAAGhSwABoUwAAaFOAAGhTwABoVwAAaFdAAGhXgABoWAAAaGfAAGhoQABoaMAAaGlAAGhqAABoakAAaGqAAGhqwABoawAAaGuAAGhsAABobEAAaGyAAGhtAABobUAAaH0AAGh9gABofgAAaH6AAGh/QABof4AAaH/AAGiAAABogEAAaIDAAGiBQABogYAAaIHAAGiCQABogoAAaJJAAGiSwABok0AAaJPAAGiUgABolMAAaJUAAGiVQABolYAAaJYAAGiWgABolsAAaJcAAGiXgABol8AAaKeAAGioAABoqIAAaKkAAGipwABoqgAAaKpAAGiqgABoqsAAaKtAAGirwABorAAAaKxAAGiswABorQAAaLzAAGi9QABovcAAaL5AAGi/AABov0AAaL+AAGi/wABowAAAaMCAAGjBAABowUAAaMGAAGjCAABowkAAaMuAAGjUgABo3kAAaOdAAGjoAABo6IAAaOkAAGjpgABo6gAAaOqAAGjqwABo64AAaO7AAGjygABo8wAAaPOAAGj0AABo9IAAaPUAAGj1gABo9gAAaPnAAGj6gABo+0AAaPwAAGj8wABo/YAAaP5AAGj/AABo/4AAaQ9AAGkPwABpEEAAaRDAAGkRgABpEcAAaRIAAGkSQABpEoAAaRMAAGkTgABpE8AAaRQAAGkUgABpFMAAaSSAAGklAABpJYAAaSYAAGkmwABpJwAAaSdAAGkngABpJ8AAaShAAGkowABpKQAAaSlAAGkpwABpKgAAaTnAAGk6QABpOsAAaTtAAGk8AABpPEAAaTyAAGk8wABpPQAAaT2AAGk+AABpPkAAaT6AAGk/AABpP0AAaU8AAGlPgABpUAAAaVCAAGlRQABpUYAAaVHAAGlSAABpUkAAaVLAAGlTQABpU4AAaVPAAGlUQABpVIAAaWRAAGlkwABpZUAAaWXAAGlmgABpZsAAaWcAAGlnQABpZ4AAaWgAAGlogABpaMAAaWkAAGlpgABpacAAaXmAAGl6AABpeoAAaXsAAGl7wABpfAAAaXxAAGl8gABpfMAAaX1AAGl9wABpfgAAaX5AAGl+wABpfwAAaY7AAGmPQABpj8AAaZBAAGmRAABpkUAAaZGAAGmRwABpkgAAaZKAAGmTAABpk0AAaZOAAGmUAABplEAAaacAAGmvwABpt8AAab/AAGnAQABpwMAAacFAAGnBwABpwoAAacLAAGnDAABpw8AAacQAAGnEgABpxMAAacVAAGnGAABpxkAAacaAAGnHQABpx4AAacnAAGnNAABpzkAAac7AAGnPQABp0IAAadFAAGnSAABp0oAAadvAAGnkwABp7oAAafeAAGn4QABp+MAAaflAAGn5wABp+kAAafrAAGn7AABp+8AAaf8AAGoDQABqA8AAagRAAGoEwABqBUAAagXAAGoGQABqBsAAagdAAGoLgABqDEAAag0AAGoNwABqDoAAag9AAGoQAABqEMAAahGAAGoSAABqIcAAaiJAAGoiwABqI0AAaiQAAGokQABqJIAAaiTAAGolAABqJYAAaiYAAGomQABqJoAAaicAAGonQABqNwAAajeAAGo4AABqOIAAajlAAGo5gABqOcAAajoAAGo6QABqOsAAajtAAGo7gABqO8AAajxAAGo8gABqTEAAakzAAGpNgABqTgAAak7AAGpPAABqT0AAak+AAGpPwABqUEAAalDAAGpRAABqUUAAalHAAGpSAABqVUAAalWAAGpVwABqVkAAamYAAGpmgABqZwAAameAAGpoQABqaIAAamjAAGppAABqaUAAamnAAGpqQABqaoAAamrAAGprQABqa4AAantAAGp7wABqfEAAanzAAGp9gABqfcAAan4AAGp+QABqfoAAan8AAGp/gABqf8AAaoAAAGqAgABqgMAAapCAAGqRAABqkYAAapIAAGqSwABqkwAAapNAAGqTgABqk8AAapRAAGqUwABqlQAAapVAAGqVwABqlgAAaqXAAGqmQABqpsAAaqdAAGqoAABqqEAAaqiAAGqowABqqQAAaqmAAGqqAABqqkAAaqqAAGqrAABqq0AAarsAAGq7gABqvAAAaryAAGq9QABqvYAAar3AAGq+AABqvkAAar7AAGq/QABqv4AAar/AAGrAQABqwIAAasnAAGrSwABq3IAAauWAAGrmQABq5sAAaudAAGrnwABq6EAAaujAAGrpAABq6cAAau0AAGrwwABq8UAAavHAAGryQABq8sAAavNAAGrzwABq9EAAavgAAGr4wABq+YAAavpAAGr7AABq+8AAavyAAGr9QABq/cAAaw2AAGsOAABrDoAAaw8AAGsPwABrEAAAaxBAAGsQgABrEMAAaxFAAGsRwABrEgAAaxJAAGsSwABrEwAAayLAAGsjQABrI8AAayRAAGslAABrJUAAayWAAGslwABrJgAAayaAAGsnAABrJ0AAayeAAGsoAABrKEAAazgAAGs4gABrOQAAazmAAGs6QABrOoAAazrAAGs7AABrO0AAazvAAGs8QABrPIAAazzAAGs9QABrPYAAa01AAGtNwABrTkAAa07AAGtPgABrT8AAa1AAAGtQQABrUIAAa1EAAGtRgABrUcAAa1IAAGtSgABrUsAAa2KAAGtjAABrY4AAa2QAAGtkwABrZQAAa2VAAGtlgABrZcAAa2ZAAGtmwABrZwAAa2dAAGtnwABraAAAa3fAAGt4QABreMAAa3lAAGt6AABrekAAa3qAAGt6wABrewAAa3uAAGt8AABrfEAAa3yAAGt9AABrfUAAa40AAGuNgABrjgAAa46AAGuPQABrj4AAa4/AAGuQAABrkEAAa5DAAGuRQABrkYAAa5HAAGuSQABrkoAAa6VAAGuuAABrtgAAa74AAGu+gABrvwAAa7+AAGvAAABrwMAAa8EAAGvBQABrwgAAa8JAAGvCwABrwwAAa8OAAGvEQABrxIAAa8TAAGvFgABrxcAAa8cAAGvKQABry4AAa8wAAGvMgABrzcAAa86AAGvPQABrz8AAa9kAAGviAABr68AAa/TAAGv1gABr9gAAa/aAAGv3AABr94AAa/gAAGv4QABr+QAAa/xAAGwAgABsAQAAbAGAAGwCAABsAoAAbAMAAGwDgABsBAAAbASAAGwIwABsCYAAbApAAGwLAABsC8AAbAyAAGwNQABsDgAAbA7AAGwPQABsHwAAbB+AAGwgAABsIIAAbCFAAGwhgABsIcAAbCIAAGwiQABsIsAAbCNAAGwjgABsI8AAbCRAAGwkgABsNEAAbDTAAGw1QABsNcAAbDaAAGw2wABsNwAAbDdAAGw3gABsOAAAbDiAAGw4wABsOQAAbDmAAGw5wABsSYAAbEoAAGxKwABsS0AAbEwAAGxMQABsTIAAbEzAAGxNAABsTYAAbE4AAGxOQABsToAAbE8AAGxPQABsUoAAbFLAAGxTAABsU4AAbGNAAGxjwABsZEAAbGTAAGxlgABsZcAAbGYAAGxmQABsZoAAbGcAAGxngABsZ8AAbGgAAGxogABsaMAAbHiAAGx5AABseYAAbHoAAGx6wABsewAAbHtAAGx7gABse8AAbHxAAGx8wABsfQAAbH1AAGx9wABsfgAAbI3AAGyOQABsjsAAbI9AAGyQAABskEAAbJCAAGyQwABskQAAbJGAAGySAABskkAAbJKAAGyTAABsk0AAbKMAAGyjgABspAAAbKSAAGylQABspYAAbKXAAGymAABspkAAbKbAAGynQABsp4AAbKfAAGyoQABsqIAAbLhAAGy4wABsuUAAbLnAAGy6gABsusAAbLsAAGy7QABsu4AAbLwAAGy8gABsvMAAbL0AAGy9gABsvcAAbMcAAGzQAABs2cAAbOLAAGzjgABs5AAAbOSAAGzlAABs5YAAbOYAAGzmQABs5wAAbOpAAGzuAABs7oAAbO8AAGzvgABs8AAAbPCAAGzxAABs8YAAbPVAAGz2AABs9sAAbPeAAGz4QABs+QAAbPnAAGz6gABs+wAAbQrAAG0LQABtC8AAbQxAAG0NAABtDUAAbQ2AAG0NwABtDgAAbQ6AAG0PAABtD0AAbQ+AAG0QAABtEEAAbSAAAG0ggABtIQAAbSGAAG0iQABtIoAAbSLAAG0jAABtI0AAbSPAAG0kQABtJIAAbSTAAG0lQABtJYAAbTVAAG01wABtNkAAbTbAAG03gABtN8AAbTgAAG04QABtOIAAbTkAAG05gABtOcAAbToAAG06gABtOsAAbUqAAG1LAABtS8AAbUxAAG1NAABtTUAAbU2AAG1NwABtTgAAbU6AAG1PAABtT0AAbU+AAG1QAABtUEAAbWAAAG1ggABtYQAAbWGAAG1iQABtYoAAbWLAAG1jAABtY0AAbWPAAG1kQABtZIAAbWTAAG1lQABtZYAAbXVAAG11wABtdkAAbXbAAG13gABtd8AAbXgAAG14QABteIAAbXkAAG15gABtecAAbXoAAG16gABtesAAbYqAAG2LAABti8AAbYxAAG2NAABtjUAAbY2AAG2NwABtjgAAbY6AAG2PAABtj0AAbY+AAG2QAABtkEAAbaMAAG2rwABts8AAbbvAAG28QABtvMAAbb1AAG29wABtvoAAbb7AAG2/AABtv8AAbcAAAG3AgABtwMAAbcFAAG3CAABtwkAAbcKAAG3DQABtw4AAbcTAAG3IAABtyUAAbcnAAG3KQABty4AAbcxAAG3NAABtzYAAbdbAAG3fwABt6YAAbfKAAG3zQABt88AAbfRAAG30wABt9UAAbfXAAG32AABt9sAAbfoAAG3+QABt/sAAbf9AAG3/wABuAEAAbgDAAG4BQABuAcAAbgJAAG4GgABuB0AAbggAAG4IwABuCYAAbgpAAG4LAABuC8AAbgyAAG4NAABuHMAAbh1AAG4dwABuHkAAbh8AAG4fQABuH4AAbh/AAG4gAABuIIAAbiEAAG4hQABuIYAAbiIAAG4iQABuMgAAbjKAAG4zAABuM4AAbjRAAG40gABuNMAAbjUAAG41QABuNcAAbjZAAG42gABuNsAAbjdAAG43gABuR0AAbkfAAG5IgABuSQAAbknAAG5KAABuSkAAbkqAAG5KwABuS0AAbkvAAG5MAABuTEAAbkzAAG5NAABuUEAAblCAAG5QwABuUUAAbmEAAG5hgABuYgAAbmKAAG5jQABuY4AAbmPAAG5kAABuZEAAbmTAAG5lQABuZYAAbmXAAG5mQABuZoAAbnZAAG52wABud0AAbnfAAG54gABueMAAbnkAAG55QABueYAAbnoAAG56gABuesAAbnsAAG57gABue8AAbouAAG6MAABujIAAbo0AAG6NwABujgAAbo5AAG6OgABujsAAbo9AAG6PwABukAAAbpBAAG6QwABukQAAbqDAAG6hQABuocAAbqJAAG6jAABuo0AAbqOAAG6jwABupAAAbqSAAG6lAABupUAAbqWAAG6mAABupkAAbrYAAG62gAButwAAbreAAG64QABuuIAAbrjAAG65AABuuUAAbrnAAG66QABuuoAAbrrAAG67QABuu4AAbsTAAG7NwABu14AAbuCAAG7hQABu4cAAbuJAAG7iwABu40AAbuPAAG7kAABu5MAAbugAAG7rwABu7EAAbuzAAG7tQABu7cAAbu5AAG7uwABu70AAbvMAAG7zwABu9IAAbvVAAG72AABu9sAAbveAAG74QABu+MAAbwiAAG8JAABvCYAAbwoAAG8KwABvCwAAbwtAAG8LgABvC8AAbwxAAG8MwABvDQAAbw1AAG8NwABvDgAAbx3AAG8eQABvHsAAbx9AAG8gAABvIEAAbyCAAG8gwABvIQAAbyGAAG8iAABvIkAAbyKAAG8jAABvI0AAbzMAAG8zgABvNAAAbzSAAG81QABvNYAAbzXAAG82AABvNkAAbzbAAG83QABvN4AAbzfAAG84QABvOIAAb0hAAG9IwABvSYAAb0oAAG9KwABvSwAAb0tAAG9LgABvS8AAb0xAAG9MwABvTQAAb01AAG9NwABvTgAAb13AAG9eQABvXsAAb19AAG9gAABvYEAAb2CAAG9gwABvYQAAb2GAAG9iAABvYkAAb2KAAG9jAABvY0AAb3MAAG9zgABvdAAAb3SAAG91QABvdYAAb3XAAG92AABvdkAAb3bAAG93QABvd4AAb3fAAG94QABveIAAb4hAAG+IwABviYAAb4oAAG+KwABviwAAb4tAAG+LgABvi8AAb4xAAG+MwABvjQAAb41AAG+NwABvjgAAb6DAAG+pgABvsYAAb7mAAG+6AABvuoAAb7sAAG+7gABvvEAAb7yAAG+8wABvvYAAb73AAG++QABvvoAAb78AAG+/wABvwAAAb8BAAG/BAABvwUAAb8OAAG/GwABvyAAAb8iAAG/JAABvykAAb8sAAG/LwABvzEAAb9WAAG/egABv6EAAb/FAAG/yAABv8oAAb/MAAG/zgABv9AAAb/SAAG/0wABv9YAAb/jAAG/9AABv/YAAb/4AAG/+gABv/wAAb/+AAHAAAABwAIAAcAEAAHAFQABwBgAAcAbAAHAHgABwCEAAcAkAAHAJwABwCoAAcAtAAHALwABwG4AAcBwAAHAcgABwHQAAcB3AAHAeAABwHkAAcB6AAHAewABwH0AAcB/AAHAgAABwIEAAcCDAAHAhAABwMMAAcDFAAHAxwABwMkAAcDMAAHAzQABwM4AAcDPAAHA0AABwNIAAcDUAAHA1QABwNYAAcDYAAHA2QABwRgAAcEaAAHBHQABwR8AAcEiAAHBIwABwSQAAcElAAHBJgABwSgAAcEqAAHBKwABwSwAAcEuAAHBLwABwTwAAcE9AAHBPgABwUAAAcF/AAHBgQABwYMAAcGFAAHBiAABwYkAAcGKAAHBiwABwYwAAcGOAAHBkAABwZEAAcGSAAHBlAABwZUAAcHUAAHB1gABwdgAAcHaAAHB3QABwd4AAcHfAAHB4AABweEAAcHjAAHB5QABweYAAcHnAAHB6QABweoAAcIpAAHCKwABwi0AAcIvAAHCMgABwjMAAcI0AAHCNQABwjYAAcI4AAHCOgABwjsAAcI8AAHCPgABwj8AAcJ+AAHCgAABwoMAAcKFAAHCiAABwokAAcKKAAHCiwABwowAAcKOAAHCkAABwpEAAcKSAAHClAABwpUAAcKjAAHC4gABwuQAAcLmAAHC6AABwusAAcLsAAHC7QABwu4AAcLvAAHC8QABwvMAAcL0AAHC9QABwvcAAcL4AAHDHQABw0EAAcNoAAHDjAABw48AAcORAAHDkwABw5UAAcOXAAHDmQABw5oAAcOdAAHDqgABw7kAAcO7AAHDvQABw78AAcPBAAHDwwABw8UAAcPHAAHD1gABw9kAAcPcAAHD3wABw+IAAcPlAAHD6AABw+sAAcPtAAHELAABxC4AAcQwAAHEMgABxDUAAcQ2AAHENwABxDgAAcQ5AAHEOwABxD0AAcQ+AAHEPwABxEEAAcRCAAHEgQABxIMAAcSFAAHEhwABxIoAAcSLAAHEjAABxI0AAcSOAAHEkAABxJIAAcSTAAHElAABxJYAAcSXAAHE1gABxNgAAcTaAAHE3AABxN8AAcTgAAHE4QABxOIAAcTjAAHE5QABxOcAAcToAAHE6QABxOsAAcTsAAHFKwABxS0AAcUvAAHFMQABxTQAAcU1AAHFNgABxTcAAcU4AAHFOgABxTwAAcU9AAHFPgABxUAAAcVBAAHFgAABxYIAAcWEAAHFhgABxYkAAcWKAAHFiwABxYwAAcWNAAHFjwABxZEAAcWSAAHFkwABxZUAAcWWAAHF1QABxdcAAcXZAAHF2wABxd4AAcXfAAHF4AABxeEAAcXiAAHF5AABxeYAAcXnAAHF6AABxeoAAcXrAAHGKgABxiwAAcYuAAHGMAABxjMAAcY0AAHGNQABxjYAAcY3AAHGOQABxjsAAcY8AAHGPQABxj8AAcZAAAHGiwABxq4AAcbOAAHG7gABxvAAAcbyAAHG9AABxvYAAcb5AAHG+gABxvsAAcb+AAHG/wABxwEAAccCAAHHBAABxwcAAccIAAHHCQABxwwAAccNAAHHFgABxyMAAccoAAHHKgABxywAAccxAAHHNAABxzcAAcc5AAHHXgABx4IAAcepAAHHzQABx9AAAcfSAAHH1AABx9YAAcfYAAHH2gABx9sAAcfeAAHH6wABx/wAAcf+AAHIAAAByAIAAcgEAAHIBgAByAgAAcgKAAHIDAAByB0AAcggAAHIIwAByCYAAcgpAAHILAAByC8AAcgyAAHINQAByDcAAch2AAHIeAAByHoAAch8AAHIfwAByIAAAciBAAHIggAByIMAAciFAAHIhwAByIgAAciJAAHIiwAByIwAAcjLAAHIzQAByM8AAcjRAAHI1AAByNUAAcjWAAHI1wAByNgAAcjaAAHI3AAByN0AAcjeAAHI4AAByOEAAckgAAHJIgABySUAAcknAAHJKgABySsAAcksAAHJLQAByS4AAckwAAHJMgAByTMAAck0AAHJNgAByTcAAclEAAHJRQAByUYAAclIAAHJhwAByYkAAcmLAAHJjQAByZAAAcmRAAHJkgAByZMAAcmUAAHJlgAByZgAAcmZAAHJmgAByZwAAcmdAAHJ3AAByd4AAcngAAHJ4gAByeUAAcnmAAHJ5wAByegAAcnpAAHJ6wABye0AAcnuAAHJ7wAByfEAAcnyAAHKMQAByjMAAco1AAHKNwAByjoAAco7AAHKPAAByj0AAco+AAHKQAABykIAAcpDAAHKRAABykYAAcpHAAHKhgAByogAAcqKAAHKjAAByo8AAcqQAAHKkQABypIAAcqTAAHKlQABypcAAcqYAAHKmQABypsAAcqcAAHK2wAByt0AAcrfAAHK4QAByuQAAcrlAAHK5gAByucAAcroAAHK6gAByuwAAcrtAAHK7gAByvAAAcrxAAHLFgAByzoAActhAAHLhQABy4gAAcuKAAHLjAABy44AAcuQAAHLkgABy5MAAcuWAAHLowABy7IAAcu0AAHLtgABy7gAAcu6AAHLvAABy74AAcvAAAHLzwABy9IAAcvVAAHL2AABy9sAAcveAAHL4QABy+QAAcvmAAHMJQABzCcAAcwpAAHMKwABzC4AAcwvAAHMMAABzDEAAcwyAAHMNAABzDYAAcw3AAHMOAABzDoAAcw7AAHMegABzHwAAcx+AAHMgAABzIMAAcyEAAHMhQABzIYAAcyHAAHMiQABzIsAAcyMAAHMjQABzI8AAcyQAAHMzwABzNEAAczTAAHM1QABzNgAAczZAAHM2gABzNsAAczcAAHM3gABzOAAAczhAAHM4gABzOQAAczlAAHNJAABzSYAAc0oAAHNKgABzS0AAc0uAAHNLwABzTAAAc0xAAHNMwABzTUAAc02AAHNNwABzTkAAc06AAHNeQABzXsAAc19AAHNfwABzYIAAc2DAAHNhAABzYUAAc2GAAHNiAABzYoAAc2LAAHNjAABzY4AAc2PAAHNzgABzdAAAc3SAAHN1AABzdcAAc3YAAHN2QABzdoAAc3bAAHN3QABzd8AAc3gAAHN4QABzeMAAc3kAAHOIwABziUAAc4nAAHOKQABziwAAc4tAAHOLgABzi8AAc4wAAHOMgABzjQAAc41AAHONgABzjgAAc45AAHOhAABzqcAAc7HAAHO5wABzukAAc7rAAHO7QABzu8AAc7yAAHO8wABzvQAAc73AAHO+AABzvoAAc77AAHO/QABzwAAAc8BAAHPAgABzwUAAc8GAAHPCwABzxgAAc8dAAHPHwABzyEAAc8mAAHPKQABzywAAc8uAAHPUwABz3cAAc+eAAHPwgABz8UAAc/HAAHPyQABz8sAAc/NAAHPzwABz9AAAc/TAAHP4AABz/EAAc/zAAHP9QABz/cAAc/5AAHP+wABz/0AAc//AAHQAQAB0BIAAdAVAAHQGAAB0BsAAdAeAAHQIQAB0CQAAdAnAAHQKgAB0CwAAdBrAAHQbQAB0G8AAdBxAAHQdAAB0HUAAdB2AAHQdwAB0HgAAdB6AAHQfAAB0H0AAdB+AAHQgAAB0IEAAdDAAAHQwgAB0MQAAdDGAAHQyQAB0MoAAdDLAAHQzAAB0M0AAdDPAAHQ0QAB0NIAAdDTAAHQ1QAB0NYAAdEVAAHRFwAB0RoAAdEcAAHRHwAB0SAAAdEhAAHRIgAB0SMAAdElAAHRJwAB0SgAAdEpAAHRKwAB0SwAAdE5AAHROgAB0TsAAdE9AAHRfAAB0X4AAdGAAAHRggAB0YUAAdGGAAHRhwAB0YgAAdGJAAHRiwAB0Y0AAdGOAAHRjwAB0ZEAAdGSAAHR0QAB0dMAAdHVAAHR1wAB0doAAdHbAAHR3AAB0d0AAdHeAAHR4AAB0eIAAdHjAAHR5AAB0eYAAdHnAAHSJgAB0igAAdIqAAHSLAAB0i8AAdIwAAHSMQAB0jIAAdIzAAHSNQAB0jcAAdI4AAHSOQAB0jsAAdI8AAHSewAB0n0AAdJ/AAHSgQAB0oQAAdKFAAHShgAB0ocAAdKIAAHSigAB0owAAdKNAAHSjgAB0pAAAdKRAAHS0AAB0tIAAdLUAAHS1gAB0tkAAdLaAAHS2wAB0twAAdLdAAHS3wAB0uEAAdLiAAHS4wAB0uUAAdLmAAHTCwAB0y8AAdNWAAHTegAB030AAdN/AAHTgQAB04MAAdOFAAHThwAB04gAAdOLAAHTmAAB06cAAdOpAAHTqwAB060AAdOvAAHTsQAB07MAAdO1AAHTxAAB08cAAdPKAAHTzQAB09AAAdPTAAHT1gAB09kAAdPbAAHUGgAB1BwAAdQeAAHUIAAB1CMAAdQkAAHUJQAB1CYAAdQnAAHUKQAB1CsAAdQsAAHULQAB1C8AAdQwAAHUbwAB1HEAAdRzAAHUdQAB1HgAAdR5AAHUegAB1HsAAdR8AAHUfgAB1IAAAdSBAAHUggAB1IQAAdSFAAHUxAAB1MYAAdTIAAHUygAB1M0AAdTOAAHUzwAB1NAAAdTRAAHU0wAB1NUAAdTWAAHU1wAB1NkAAdTaAAHVGQAB1RsAAdUdAAHVHwAB1SIAAdUjAAHVJAAB1SUAAdUmAAHVKAAB1SoAAdUrAAHVLAAB1S4AAdUvAAHVbgAB1XAAAdVyAAHVdAAB1XcAAdV4AAHVeQAB1XoAAdV7AAHVfQAB1X8AAdWAAAHVgQAB1YMAAdWEAAHVwwAB1cUAAdXHAAHVyQAB1cwAAdXNAAHVzgAB1c8AAdXQAAHV0gAB1dQAAdXVAAHV1gAB1dgAAdXZAAHWGAAB1hoAAdYcAAHWHgAB1iEAAdYiAAHWIwAB1iQAAdYlAAHWJwAB1ikAAdYqAAHWKwAB1i0AAdYuAAHWNwAB1jgAAdY6AAHWeQAB1ns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AAfJhAAHyYwAB8mQAAfJlAAHyZwAB8mgAAfKnAAHyqQAB8qsAAfKtAAHysAAB8rEAAfKyAAHyswAB8rQAAfK2AAHyuAAB8rkAAfK6AAHyvAAB8r0AAfL8AAHy/gAB8wEAAfMDAAHzBgAB8wcAAfMIAAHzCQAB8woAAfMMAAHzDgAB8w8AAfMQAAHzEgAB8xMAAfMgAAHzIQAB8yIAAfMkAAHzYwAB82UAAfNnAAHzaQAB82wAAfNtAAHzbgAB828AAfNwAAHzcgAB83QAAfN1AAHzdgAB83gAAfN5AAHzuAAB87oAAfO8AAHzvgAB88EAAfPCAAHzwwAB88QAAfPFAAHzxwAB88kAAfPKAAHzywAB880AAfPOAAH0DQAB9A8AAfQRAAH0EwAB9BYAAfQXAAH0GAAB9BkAAfQaAAH0HAAB9B4AAfQfAAH0IAAB9CIAAfQjAAH0YgAB9GQAAfRmAAH0aAAB9GsAAfRsAAH0bQAB9G4AAfRvAAH0cQAB9HMAAfR0AAH0dQAB9HcAAfR4AAH0twAB9LkAAfS7AAH0vQAB9MAAAfTBAAH0wgAB9MMAAfTEAAH0xgAB9MgAAfTJAAH0ygAB9MwAAfTNAAH08gAB9RYAAfU9AAH1YQAB9WQAAfVmAAH1aAAB9WoAAfVsAAH1bgAB9W8AAfVyAAH1fwAB9Y4AAfWQAAH1kgAB9ZQAAfWWAAH1mAAB9ZoAAfWcAAH1qwAB9a4AAfWxAAH1tAAB9bcAAfW6AAH1vQAB9cAAAfXCAAH2AQAB9gMAAfYFAAH2BwAB9goAAfYLAAH2DAAB9g0AAfYOAAH2EAAB9hIAAfYTAAH2FAAB9hYAAfYXAAH2VgAB9lgAAfZaAAH2XAAB9l8AAfZgAAH2YQAB9mIAAfZjAAH2ZQAB9mcAAfZoAAH2aQAB9msAAfZsAAH2qwAB9q0AAfavAAH2sQAB9rQAAfa1AAH2tgAB9rcAAfa4AAH2ugAB9rwAAfa9AAH2vgAB9sAAAfbBAAH3AAAB9wIAAfcFAAH3BwAB9woAAfcLAAH3DAAB9w0AAfcOAAH3EAAB9xIAAfcTAAH3FAAB9xYAAfcXAAH3VgAB91gAAfdaAAH3XAAB918AAfdgAAH3YQAB92IAAfdjAAH3ZQAB92cAAfdoAAH3aQAB92sAAfdsAAH3qwAB960AAfevAAH3sQAB97Q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AAgL9AAIC/gACAv8AAgMBAAIDAgACAw8AAgMQAAIDEQACAxMAAgNSAAIDVAACA1YAAgNYAAIDWwACA1wAAgNdAAIDXgACA18AAgNhAAIDYwACA2QAAgNlAAIDZwACA2gAAgOnAAIDqQACA6sAAgOtAAIDsAACA7EAAgOyAAIDswACA7QAAgO2AAIDuAACA7kAAgO6AAIDvAACA70AAgP8AAID/gACBAAAAgQCAAIEBQACBAYAAgQHAAIECAACBAkAAgQLAAIEDQACBA4AAgQPAAIEEQACBBIAAgRRAAIEUwACBFUAAgRXAAIEWgACBFsAAgRcAAIEXQACBF4AAgRgAAIEYgACBGMAAgRkAAIEZgACBGcAAgSmAAIEqAACBKoAAgSsAAIErwACBLAAAgSxAAIEsgACBLMAAgS1AAIEtwACBLgAAgS5AAIEuwACBLwAAgThAAIFBQACBSwAAgVQAAIFUwACBVUAAgVXAAIFWQACBVsAAgVdAAIFXgACBWEAAgVuAAIFfQACBX8AAgWBAAIFgwACBYUAAgWHAAIFiQACBYsAAgWaAAIFnQACBaAAAgWjAAIFpgACBakAAgWsAAIFrwACBbEAAgXwAAIF8gACBfQAAgX2AAIF+QACBfoAAgX7AAIF/AACBf0AAgX/AAIGAQACBgIAAgYDAAIGBQACBgYAAgZFAAIGRwACBkkAAgZLAAIGTgACBk8AAgZQAAIGUQACBlIAAgZUAAIGVgACBlcAAgZYAAIGWgACBlsAAgaaAAIGnAACBp4AAgagAAIGowACBqQAAgalAAIGpgACBqcAAgapAAIGqwACBqwAAgatAAIGrwACBrAAAgbvAAIG8QACBvQAAgb2AAIG+QACBvoAAgb7AAIG/AACBv0AAgb/AAIHAQACBwIAAgcDAAIHBQACBwYAAgdJAAIHbQACB5EAAge0AAIH2wACB/sAAggiAAIISQACCGkAAgiNAAIIsQACCLMAAgi2AAIIuAACCLoAAgi8AAIIvwACCMIAAgjEAAIIxgACCMkAAgjLAAIIzQACCNAAAgjTAAII1AACCNkAAgjmAAII6QACCOsAAgjuAAII8QACCPMAAgkYAAIJPAACCWMAAgmHAAIJigACCYwAAgmOAAIJkAACCZIAAgmUAAIJlQACCZgAAgmlAAIJuAACCboAAgm8AAIJvgACCcAAAgnCAAIJxAACCcYAAgnIAAIJygACCd0AAgngAAIJ4wACCeYAAgnpAAIJ7AACCe8AAgnyAAIJ9QACCfgAAgn6AAIKOQACCjsAAgo+AAIKQAACCkMAAgpEAAIKRQACCkYAAgpHAAIKSQACCksAAgpMAAIKTQACCk8AAgpQAAIKWQACCloAAgpcAAIKmwACCp0AAgqfAAIKoQACCqQAAgqlAAIKpgACCqcAAgqoAAIKqgACCqwAAgqtAAIKrgACCrAAAgqxAAIK8AACCvIAAgr1AAIK9wACCvoAAgr7AAIK/AACCv0AAgr+AAILAAACCwIAAgsDAAILBAACCwYAAgsHAAILEAACCxEAAgsTAAILUgACC1QAAgtWAAILWAACC1sAAgtcAAILXQACC14AAgtfAAILYQACC2MAAgtkAAILZQACC2cAAgtoAAILpwACC6kAAgusAAILrgACC7EAAguyAAILswACC7QAAgu1AAILtwACC7kAAgu6AAILuwACC70AAgu+AAILxwACC8gAAgvKAAIMCQACDAsAAgwNAAIMDwACDBIAAgwTAAIMFAACDBUAAgwWAAIMGAACDBoAAgwbAAIMHAACDB4AAgwfAAIMXgACDGAAAgxjAAIMZQACDGgAAgxpAAIMagACDGsAAgxsAAIMbgACDHAAAgxxAAIMcgACDHQAAgx1AAIMggACDIMAAgyEAAIMhgACDMUAAgzHAAIMyQACDMsAAgzOAAIMzwACDNAAAgzRAAIM0gACDNQAAgzWAAIM1wACDNgAAgzaAAIM2wACDRoAAg0cAAINHwACDSEAAg0kAAINJQACDSYAAg0nAAINKAACDSoAAg0sAAINLQACDS4AAg0wAAINMQACDUQAAg1RAAINYgACDWUAAg1oAAINawACDW0AAg1wAAINcwACDXYAAg15AAINigACDY0AAg2QAAINkwACDZYAAg2ZAAINnAACDZ8AAg2iAAINpAACDasAAg22AAINxAACDdEAAg3cAAIN6QACDfUAAg5AAAIOYwACDoMAAg6jAAIOpQACDqcAAg6pAAIOqwACDq4AAg6vAAIOsAACDrMAAg60AAIOtgACDrcAAg65AAIOvAACDr0AAg6+AAIOwQACDsIAAg7HAAIO1AACDtkAAg7bAAIO3QACDuIAAg7lAAIO6AACDuoAAg8PAAIPMwACD1oAAg9+AAIPgQACD4MAAg+FAAIPhwACD4kAAg+LAAIPjAACD48AAg+cAAIPrQACD68AAg+xAAIPswACD7UAAg+3AAIPuQACD7sAAg+9AAIPzgACD9EAAg/UAAIP1wACD9oAAg/dAAIP4AACD+MAAg/mAAIP6AACECcAAhApAAIQKwACEC0AAhAwAAIQMQACEDIAAhAzAAIQNAACEDYAAhA4AAIQOQACEDoAAhA8AAIQPQACEHwAAhB+AAIQgAACEIIAAhCFAAIQhgACEIcAAhCIAAIQiQACEIsAAhCNAAIQjgACEI8AAhCRAAIQkgACENEAAhDTAAIQ1gACENgAAhDbAAIQ3AACEN0AAhDeAAIQ3wACEOEAAhDjAAIQ5AACEOUAAhDnAAIQ6AACEPUAAhD2AAIQ9wACEPkAAhE4AAIROgACETwAAhE+AAIRQQACEUIAAhFDAAIRRAACEUUAAhFHAAIRSQACEUoAAhFLAAIRTQACEU4AAhGNAAIRjwACEZEAAhGTAAIRlgACEZcAAhGYAAIRmQACEZoAAhGcAAIRngACEZ8AAhGgAAIRogACEaMAAhHiAAIR5AACEeYAAhHoAAIR6wACEewAAhHtAAIR7gACEe8AAhHxAAIR8wACEfQAAhH1AAIR9wACEfgAAhI3AAISOQACEjsAAhI9AAISQAACEkEAAhJCAAISQwACEkQAAhJGAAISSAACEkkAAhJKAAISTAACEk0AAhKMAAISjgACEpAAAhKSAAISlQACEpYAAhKXAAISmAACEpkAAhKbAAISnQACEp4AAhKfAAISoQACEqIAAhLHAAIS6wACExIAAhM2AAITOQACEzsAAhM9AAITPwACE0EAAhNDAAITRAACE0cAAhNUAAITYwACE2UAAhNnAAITaQACE2sAAhNtAAITbwACE3EAAhOAAAITgwACE4YAAhOJAAITjAACE48AAhOSAAITlQACE5cAAhPWAAIT2AACE9oAAhPcAAIT3wACE+AAAhPhAAIT4gACE+MAAhPlAAIT5wACE+gAAhPpAAIT6wACE+wAAhQrAAIULQACFC8AAhQxAAIUNAACFDUAAhQ2AAIUNwACFDgAAhQ6AAIUPAACFD0AAhQ+AAIUQAACFEEAAhSAAAIUggACFIQAAhSGAAIUiQACFIoAAhSLAAIUjAACFI0AAhSPAAIUkQACFJIAAhSTAAIUlQACFJYAAhTVAAIU1wACFNkAAhTbAAIU3gACFN8AAhTgAAIU4QACFOIAAhTkAAIU5gACFOcAAhToAAIU6gACFOsAAhUqAAIVLAACFS4AAhUwAAIVMwACFTQAAhU1AAIVNgACFTcAAhU5AAIVOwACFTwAAhU9AAIVPwACFUAAAhV/AAIVgQACFYMAAhWFAAIViAACFYkAAhWKAAIViwACFYwAAhWOAAIVkAACFZEAAhWSAAIVlAACFZUAAhXUAAIV1gACFdgAAhXaAAIV3QACFd4AAhXfAAIV4AACFeEAAhXjAAIV5QACFeYAAhXnAAIV6QACFeoAAhY1AAIWWAACFngAAhaYAAIWmgACFpwAAhaeAAIWoAACFqMAAhakAAIWpQACFqgAAhapAAIWqwACFqwAAhauAAIWsQACFrIAAhazAAIWtgACFrcAAha8AAIWyQACFs4AAhbQAAIW0gACFtcAAhbaAAIW3QACFt8AAhcEAAIXKAACF08AAhdzAAIXdgACF3gAAhd6AAIXfAACF34AAheAAAIXgQACF4QAAheRAAIXogACF6QAAhemAAIXqAACF6oAAhesAAIXrgACF7AAAheyAAIXwwACF8YAAhfJAAIXzAACF88AAhfSAAIX1QACF9gAAhfbAAIX3QACGBwAAhgeAAIYIAACGCIAAhglAAIYJgACGCcAAhgoAAIYKQACGCsAAhgtAAIYLgACGC8AAhgxAAIYMgACGHEAAhhzAAIYdQACGHcAAhh6AAIYewACGHwAAhh9AAIYfgACGIAAAhiCAAIYgwACGIQAAhiGAAIYhwACGMYAAhjIAAIYywACGM0AAhjQAAIY0QACGNIAAhjTAAIY1AACGNYAAhjYAAIY2QACGNoAAhjcAAIY3QACGOoAAhjrAAIY7AACGO4AAhktAAIZLwACGTEAAhkzAAIZNgACGTcAAhk4AAIZOQACGToAAhk8AAIZPgACGT8AAhlAAAIZQgACGUMAAhmCAAIZhAACGYYAAhmIAAIZiwACGYwAAhmNAAIZjgACGY8AAhmRAAIZkwACGZQAAhmVAAIZlwACGZgAAhnXAAIZ2QACGdsAAhndAAIZ4AACGeEAAhniAAIZ4wACGeQAAhnmAAIZ6AACGekAAhnqAAIZ7AACGe0AAhosAAIaLgACGjAAAhoyAAIaNQACGjYAAho3AAIaOAACGjkAAho7AAIaPQACGj4AAho/AAIaQQACGkIAAhqBAAIagwACGoUAAhqHAAIaigACGosAAhqMAAIajQACGo4AAhqQAAIakgACGpMAAhqUAAIalgACGpcAAhq8AAIa4AACGwcAAhsrAAIbLgACGzAAAhsyAAIbNAACGzYAAhs4AAIbOQACGzwAAhtJAAIbWAACG1oAAhtcAAIbXgACG2AAAhtiAAIbZAACG2YAAht1AAIbeAACG3sAAht+AAIbgQACG4QAAhuHAAIbigACG4wAAhvLAAIbzQACG88AAhvRAAIb1AACG9UAAhvWAAIb1wACG9gAAhvaAAIb3AACG90AAhveAAIb4AACG+EAAhwgAAIcIgACHCQAAhwmAAIcKQACHCoAAhwrAAIcLAACHC0AAhwvAAIcMQACHDIAAhwzAAIcNQACHDYAAhx1AAIcdwACHHkAAhx7AAIcfgACHH8AAhyAAAIcgQACHIIAAhyEAAIchgACHIcAAhyIAAIcigACHIsAAhzKAAIczAACHM4AAhzQAAIc0wACHNQAAhzVAAIc1gACHNcAAhzZAAIc2wACHNwAAhzdAAIc3wACHOAAAh0fAAIdIQACHSMAAh0lAAIdKAACHSkAAh0qAAIdKwACHSwAAh0uAAIdMAACHTEAAh0yAAIdNAACHTUAAh10AAIddgACHXgAAh16AAIdfQACHX4AAh1/AAIdgAACHYEAAh2DAAIdhQACHYYAAh2HAAIdiQACHYoAAh3JAAIdywACHc0AAh3PAAId0gACHdMAAh3UAAId1QACHdYAAh3YAAId2gACHdsAAh3cAAId3gACHd8AAh4qAAIeTQACHm0AAh6NAAIejwACHpEAAh6TAAIelQACHpgAAh6ZAAIemgACHp0AAh6eAAIeoAACHqEAAh6jAAIepgACHqcAAh6oAAIeqwACHqwAAh6xAAIevgACHsMAAh7FAAIexwACHswAAh7PAAIe0gACHtQAAh75AAIfHQACH0QAAh9oAAIfawACH20AAh9vAAIfcQACH3MAAh91AAIfdgACH3kAAh+GAAIflwACH5kAAh+bAAIfnQACH58AAh+hAAIfowACH6UAAh+nAAIfuAACH7sAAh++AAIfwQACH8QAAh/HAAIfygACH80AAh/QAAIf0gACIBEAAiATAAIgFQACIBcAAiAaAAIgGwACIBwAAiAdAAIgHgACICAAAiAiAAIgIwACICQAAiAmAAIgJwACIGYAAiBoAAIgagACIGwAAiBvAAIgcAACIHEAAiByAAIgcwACIHUAAiB3AAIgeAACIHkAAiB7AAIgfAACILsAAiC9AAIgwAACIMIAAiDFAAIgxgACIMcAAiDIAAIgyQACIMsAAiDNAAIgzgACIM8AAiDRAAIg0gACIN8AAiDgAAIg4QACIOMAAiEiAAIhJAACISYAAiEoAAIhKwACISwAAiEtAAIhLgACIS8AAiExAAIhMwACITQAAiE1AAIhNwACITgAAiF3AAIheQACIXsAAiF9AAIhgAACIYEAAiGCAAIhgwACIYQAAiGGAAIhiAACIYkAAiGKAAIhjAACIY0AAiHMAAIhzgACIdAAAiHSAAIh1QACIdYAAiHXAAIh2AACIdkAAiHbAAIh3QACId4AAiHfAAIh4QACIeIAAiIhAAIiIwACIiUAAiInAAIiKgACIisAAiIsAAIiLQACIi4AAiIwAAIiMgACIjMAAiI0AAIiNgACIjcAAiJ2AAIieAACInoAAiJ8AAIifwACIoAAAiKBAAIiggACIoMAAiKFAAIihwACIogAAiKJAAIiiwACIowAAiKxAAIi1QACIvwAAiMgAAIjIwACIyUAAiMnAAIjKQACIysAAiMtAAIjLgACIzEAAiM+AAIjTQACI08AAiNRAAIjUwACI1UAAiNXAAIjWQACI1sAAiNqAAIjbQACI3AAAiNzAAIjdgACI3kAAiN8AAIjfwACI4EAAiPAAAIjwgACI8QAAiPGAAIjyQACI8oAAiPLAAIjzAACI80AAiPPAAIj0QACI9IAAiPTAAIj1QACI9YAAiQVAAIkFwACJBkAAiQbAAIkHgACJB8AAiQgAAIkIQACJCIAAiQkAAIkJgACJCcAAiQoAAIkKgACJCsAAiRqAAIkbAACJG4AAiRwAAIkcwACJHQAAiR1AAIkdgACJHcAAiR5AAIkewACJHwAAiR9AAIkfwACJIAAAiS/AAIkwQACJMQAAiTGAAIkyQACJMoAAiTLAAIkzAACJM0AAiTPAAIk0QACJNIAAiTTAAIk1QACJNYAAiUVAAIlFwACJRkAAiUbAAIlHgACJR8AAiUgAAIlIQACJSIAAiUkAAIlJgACJScAAiUoAAIlKgACJSsAAiVqAAIlbAACJW4AAiVwAAIlcwACJXQAAiV1AAIldgACJXcAAiV5AAIlewACJXwAAiV9AAIlfwACJYAAAiW/AAIlwQACJcMAAiXFAAIlyAACJckAAiXKAAIlywACJcwAAiXOAAIl0AACJdEAAiXSAAIl1AACJdUAAiYgAAImQwACJmMAAiaDAAImhQACJocAAiaJAAImiwACJo4AAiaPAAImkAACJpMAAiaUAAImlgACJpcAAiaZAAImmwACJpwAAiadAAImoAACJqEAAiamAAImswACJrgAAia6AAImvAACJsEAAibEAAImxwACJskAAibuAAInEgACJzkAAiddAAInYAACJ2IAAidkAAInZgACJ2gAAidqAAInawACJ24AAid7AAInjAACJ44AAieQAAInkgACJ5QAAieWAAInmAACJ5oAAiecAAInrQACJ7AAAiezAAIntgACJ7kAAie8AAInvwACJ8IAAifFAAInxwACKAYAAigIAAIoCgACKAwAAigPAAIoEAACKBEAAigSAAIoEwACKBUAAigXAAIoGAACKBkAAigbAAIoHAACKFsAAihdAAIoXwACKGEAAihkAAIoZQACKGYAAihnAAIoaAACKGoAAihsAAIobQACKG4AAihwAAIocQACKLAAAiiyAAIotQACKLcAAii6AAIouwACKLwAAii9AAIovgACKMAAAijCAAIowwACKMQAAijGAAIoxwACKNQAAijVAAIo1gACKNgAAikXAAIpGQACKRsAAikdAAIpIAACKSEAAikiAAIpIwACKSQAAikmAAIpKAACKSkAAikqAAIpLAACKS0AAilsAAIpbgACKXAAAilyAAIpdQACKXYAAil3AAIpeAACKXkAAil7AAIpfQACKX4AAil/AAIpgQACKYIAAinBAAIpwwACKcUAAinHAAIpygACKcsAAinMAAIpzQACKc4AAinQAAIp0gACKdMAAinUAAIp1gACKdcAAioWAAIqGAACKhoAAiocAAIqHwACKiAAAiohAAIqIgACKiMAAiolAAIqJwACKigAAiopAAIqKwACKiwAAiprAAIqbQACKm8AAipxAAIqdAACKnUAAip2AAIqdwACKngAAip6AAIqfAACKn0AAip+AAIqgAACKoEAAiqmAAIqygACKvEAAisVAAIrGAACKxoAAiscAAIrHgACKyAAAisiAAIrIwACKyYAAiszAAIrQgACK0QAAitGAAIrSAACK0oAAitMAAIrTgACK1AAAitfAAIrYgACK2UAAitoAAIrawACK24AAitxAAIrdAACK3YAAiu1AAIrtwACK7oAAiu8AAIrvwACK8AAAivBAAIrwgACK8MAAivFAAIrxwACK8gAAivJAAIrywACK8wAAiwLAAIsDQACLA8AAiwRAAIsFAACLBUAAiwWAAIsFwACLBgAAiwaAAIsHAACLB0AAiweAAIsIAACLCEAAixgAAIsYgACLGQAAixmAAIsaQACLGoAAixrAAIsbAACLG0AAixvAAIscQACLHIAAixzAAIsdQACLHYAAiy1AAIstwACLLoAAiy8AAIsvwACLMAAAizBAAIswgACLMMAAizFAAIsxwACLMgAAizJAAIsywACLMwAAi0LAAItDQACLQ8AAi0RAAItFAACLRUAAi0WAAItFwACLRgAAi0aAAItHAACLR0AAi0eAAItIAACLSEAAi1gAAItYgACLWQAAi1mAAItaQACLWoAAi1rAAItbAACLW0AAi1vAAItcQACLXIAAi1zAAItdQACLXYAAi21AAIttwACLbkAAi27AAItvgACLb8AAi3AAAItwQACLcIAAi3EAAItxgACLccAAi3IAAItygACLcsAAi4WAAIuOQACLlkAAi55AAIuewACLn0AAi5/AAIugQACLoQAAi6FAAIuhgACLokAAi6KAAIujAACLo0AAi6PAAIukgACLpMAAi6UAAIulwACLpgAAi6dAAIuqgACLq8AAi6xAAIuswACLrgAAi67AAIuvgACLsAAAi7lAAIvCQACLzAAAi9UAAIvVwACL1kAAi9bAAIvXQACL18AAi9hAAIvYgACL2UAAi9yAAIvgwACL4UAAi+HAAIviQACL4sAAi+NAAIvjwACL5EAAi+TAAIvpAACL6cAAi+qAAIvrQACL7AAAi+zAAIvtgACL7kAAi+8AAIvvgACL/0AAi//AAIwAQACMAMAAjAGAAIwBwACMAgAAjAJAAIwCgACMAwAAjAOAAIwDwACMBAAAjASAAIwEwACMFIAAjBUAAIwVgACMFgAAjBbAAIwXAACMF0AAjBeAAIwXwACMGEAAjBjAAIwZAACMGUAAjBnAAIwaAACMKcAAjCpAAIwrAACMK4AAjCxAAIwsgACMLMAAjC0AAIwtQACMLcAAjC5AAIwugACMLsAAjC9AAIwvgACMMsAAjDMAAIwzQACMM8AAjEOAAIxEAACMRIAAjEUAAIxFwACMRgAAjEZAAIxGgACMRsAAjEdAAIxHwACMSAAAjEhAAIxIwACMSQAAjFjAAIxZQACMWcAAjFpAAIxbAACMW0AAjFuAAIxbwACMXAAAjFyAAIxdAACMXUAAjF2AAIxeAACMXkAAjG4AAIxugACMbwAAjG+AAIxwQACMcIAAjHDAAIxxAACMcUAAjHHAAIxyQACMcoAAjHLAAIxzQACMc4AAjINAAIyDwACMhEAAjITAAIyFgACMhcAAjIYAAIyGQACMhoAAjIcAAIyHgACMh8AAjIgAAIyIgACMiMAAjJiAAIyZAACMmYAAjJoAAIyawACMmwAAjJtAAIybgACMm8AAjJxAAIycwACMnQAAjJ1AAIydwACMngAAjKdAAIywQACMugAAjMMAAIzDwACMxEAAjMTAAIzFQACMxcAAjMZAAIzGgACMx0AAjMqAAIzOQACMzsAAjM9AAIzPwACM0EAAjNDAAIzRQACM0cAAjNWAAIzWQACM1wAAjNfAAIzYgACM2UAAjNoAAIzawACM20AAjOsAAIzrgACM7AAAjOyAAIztQACM7YAAjO3AAIzuAACM7kAAjO7AAIzvQACM74AAjO/AAIzwQACM8IAAjQBAAI0AwACNAUAAjQHAAI0CgACNAsAAjQMAAI0DQACNA4AAjQQAAI0EgACNBMAAjQUAAI0FgACNBcAAjRWAAI0WAACNFoAAjRcAAI0XwACNGAAAjRhAAI0YgACNGMAAjRlAAI0ZwACNGgAAjRpAAI0awACNGwAAjSrAAI0rQACNK8AAjSxAAI0tAACNLUAAjS2AAI0twACNLgAAjS6AAI0vAACNL0AAjS+AAI0wAACNMEAAjUAAAI1AgACNQQAAjUGAAI1CQACNQoAAjULAAI1DAACNQ0AAjUPAAI1EQACNRIAAjUTAAI1FQACNRYAAjVVAAI1VwACNVkAAjVbAAI1XgACNV8AAjVgAAI1YQACNWIAAjVkAAI1ZgACNWcAAjVoAAI1agACNWsAAjWqAAI1rAACNa4AAjWwAAI1swACNbQAAjW1AAI1tgACNbcAAjW5AAI1uwACNbwAAjW9AAI1vwACNcAAAjYLAAI2LgACNk4AAjZuAAI2cAACNnIAAjZ0AAI2dgACNnkAAjZ6AAI2ewACNn4AAjZ/AAI2gQACNoIAAjaEAAI2hwACNogAAjaJAAI2jAACNo0AAjaSAAI2nwACNqQAAjamAAI2qAACNq0AAjawAAI2swACNrUAAjbaAAI2/gACNyUAAjdJAAI3TAACN04AAjdQAAI3UgACN1QAAjdWAAI3VwACN1oAAjdnAAI3eAACN3oAAjd8AAI3fgACN4AAAjeCAAI3hAACN4YAAjeIAAI3mQACN5wAAjefAAI3ogACN6UAAjeoAAI3qwACN64AAjexAAI3swACN/IAAjf0AAI39gACN/gAAjf7AAI3/AACN/0AAjf+AAI3/wACOAEAAjgDAAI4BAACOAUAAjgHAAI4CAACOEcAAjhJAAI4SwACOE0AAjhQAAI4UQACOFIAAjhTAAI4VAACOFYAAjhYAAI4WQACOFoAAjhcAAI4XQACOJwAAjieAAI4oQACOKMAAjimAAI4pwACOKgAAjipAAI4qgACOKwAAjiuAAI4rwACOLAAAjiyAAI4swACOMAAAjjBAAI4wgACOMQAAjkDAAI5BQACOQcAAjkJAAI5DAACOQ0AAjkOAAI5DwACORAAAjkSAAI5FAACORUAAjkWAAI5GAACORkAAjlYAAI5WgACOVwAAjleAAI5YQACOWIAAjljAAI5ZAACOWUAAjlnAAI5aQACOWoAAjlrAAI5bQACOW4AAjmtAAI5rwACObEAAjmzAAI5tgACObcAAjm4AAI5uQACOboAAjm8AAI5vgACOb8AAjnAAAI5wgACOcMAAjoCAAI6BAACOgYAAjoIAAI6CwACOgwAAjoNAAI6DgACOg8AAjoRAAI6EwACOhQAAjoVAAI6FwACOhgAAjpXAAI6WQACOlsAAjpdAAI6YAACOmEAAjpiAAI6YwACOmQAAjpmAAI6aAACOmkAAjpqAAI6bAACOm0AAjqSAAI6tgACOt0AAjsBAAI7BAACOwYAAjsIAAI7CgACOwwAAjsOAAI7DwACOxIAAjsfAAI7LgACOzAAAjsyAAI7NAACOzYAAjs4AAI7OgACOzwAAjtLAAI7TgACO1EAAjtUAAI7VwACO1oAAjtdAAI7YAACO2IAAjuhAAI7owACO6UAAjunAAI7qgACO6sAAjusAAI7rQACO64AAjuwAAI7sgACO7M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AAkc7AAJHPQACRz8AAkdBAAJHQgACR0UAAkdSAAJHYwACR2UAAkdnAAJHaQACR2sAAkdtAAJHbwACR3EAAkdzAAJHhAACR4cAAkeKAAJHjQACR5AAAkeTAAJHlgACR5kAAkecAAJHngACR90AAkffAAJH4QACR+MAAkfmAAJH5wACR+gAAkfpAAJH6gACR+wAAkfuAAJH7wACR/AAAkfyAAJH8wACSDIAAkg0AAJINgACSDgAAkg7AAJIPAACSD0AAkg+AAJIPwACSEEAAkhDAAJIRAACSEUAAkhHAAJISAACSIcAAkiJAAJIjAACSI4AAkiRAAJIkgACSJMAAkiUAAJIlQACSJcAAkiZAAJImgACSJsAAkidAAJIngACSKsAAkisAAJIrQACSK8AAkjuAAJI8AACSPIAAkj0AAJI9wACSPgAAkj5AAJI+gACSPsAAkj9AAJI/wACSQAAAkkBAAJJAwACSQQAAklDAAJJRQACSUcAAklJAAJJTAACSU0AAklOAAJJTwACSVAAAklSAAJJVAACSVUAAklWAAJJWAACSVkAAkmYAAJJmgACSZwAAkmeAAJJoQACSaIAAkmjAAJJpAACSaUAAkmnAAJJqQACSaoAAkmrAAJJrQACSa4AAkntAAJJ7wACSfEAAknzAAJJ9gACSfcAAkn4AAJJ+QACSfoAAkn8AAJJ/gACSf8AAkoAAAJKAgACSgMAAkpCAAJKRAACSkYAAkpIAAJKSwACSkwAAkpNAAJKTgACSk8AAkpRAAJKUwACSlQAAkpVAAJKVwACSlgAAkp9AAJKoQACSsgAAkrsAAJK7wACSvEAAkrzAAJK9QACSvcAAkr5AAJK+gACSv0AAksKAAJLGQACSxsAAksdAAJLHwACSyEAAksjAAJLJQACSycAAks2AAJLOQACSzwAAks/AAJLQgACS0UAAktIAAJLSwACS00AAkuMAAJLjgACS5AAAkuSAAJLlQACS5YAAkuXAAJLmAACS5kAAkubAAJLnQACS54AAkufAAJLoQACS6IAAkvhAAJL4wACS+UAAkvnAAJL6gACS+sAAkvsAAJL7QACS+4AAkvwAAJL8gACS/MAAkv0AAJL9gACS/cAAkw2AAJMOAACTDoAAkw8AAJMPwACTEAAAkxBAAJMQgACTEMAAkxFAAJMRwACTEgAAkxJAAJMSwACTEwAAkyLAAJMjQACTI8AAkyRAAJMlAACTJUAAkyWAAJMlwACTJgAAkyaAAJMnAACTJ0AAkyeAAJMoAACTKEAAkzgAAJM4gACTOQAAkzmAAJM6QACTOoAAkzrAAJM7AACTO0AAkzvAAJM8QACTPIAAkzzAAJM9QACTPYAAk01AAJNNwACTTkAAk07AAJNPgACTT8AAk1AAAJNQQACTUIAAk1EAAJNRgACTUcAAk1IAAJNSgACTUsAAk2KAAJNjAACTY8AAk2RAAJNlAACTZUAAk2WAAJNlwACTZgAAk2aAAJNnAACTZ0AAk2eAAJNoAACTaEAAk2qAAJNqwACTa0AAk3sAAJN7gACTfAAAk3yAAJN9QACTfYAAk33AAJN+AACTfkAAk37AAJN/QACTf4AAk3/AAJOAQACTgIAAk5BAAJOQwACTkUAAk5HAAJOSgACTksAAk5MAAJOTQACTk4AAk5QAAJOUgACTlMAAk5UAAJOVgACTlcAAk6WAAJOmAACTpsAAk6dAAJOoAACTqEAAk6iAAJOowACTqQAAk6mAAJOqAACTqkAAk6qAAJOrAACTq0AAk74AAJPGwACTzsAAk9bAAJPXQACT18AAk9hAAJPYwACT2UAAk9mAAJPZwACT2oAAk9rAAJPbQACT24AAk9wAAJPcgACT3MAAk90AAJPdwACT3gAAk99AAJPigACT48AAk+RAAJPkwACT5gAAk+bAAJPngACT6AAAk/FAAJP6QACUBAAAlA0AAJQNwACUDkAAlA7AAJQPQACUD8AAlBBAAJQQgACUEUAAlBSAAJQYwACUGUAAlBnAAJQaQACUGsAAlBtAAJQbwACUHEAAlBzAAJQhAACUIcAAlCKAAJQjQACUJAAAlCTAAJQlgACUJkAAlCcAAJQngACUN0AAlDfAAJQ4QACUOMAAlDmAAJQ5wACUOgAAlDpAAJQ6gACUOwAAlDuAAJQ7wACUPAAAlDyAAJQ8wACUTIAAlE0AAJRNgACUTgAAlE7AAJRPAACUT0AAlE+AAJRPwACUUEAAlFDAAJRRAACUUUAAlFHAAJRSAACUYcAAlGJAAJRjAACUY4AAlGRAAJRkgACUZMAAlGUAAJRlQACUZcAAlGZAAJRmgACUZsAAlGdAAJRngACUasAAlGsAAJRrQACUa8AAlHuAAJR8AACUfIAAlH0AAJR9wACUfgAAlH5AAJR+gACUfsAAlH9AAJR/wACUgAAAlIBAAJSAwACUgQAAlJDAAJSRQACUkcAAlJJAAJSTAACUk0AAlJOAAJSTwACUlAAAlJSAAJSVAACUlUAAlJWAAJSWAACUlkAAlKYAAJSmgACUpwAAlKeAAJSoQACUqIAAlKjAAJSpAACUqUAAlKnAAJSqQACUqoAAlKrAAJSrQACUq4AAlLtAAJS7wACUvEAAlLzAAJS9gACUvcAAlL4AAJS+QACUvoAAlL8AAJS/gACUv8AAlMAAAJTAgACUwMAAlNCAAJTRAACU0YAAlNIAAJTSwACU0wAAlNNAAJTTgACU08AAlNRAAJTUwACU1QAAlNVAAJTVwACU1gAAlN9AAJToQACU8gAAlPsAAJT7wACU/EAAlPzAAJT9QACU/cAAlP5AAJT+gACU/0AAlQKAAJUGQACVBsAAlQdAAJUHwACVCEAAlQjAAJUJQACVCcAAlQ2AAJUOQACVDwAAlQ/AAJUQgACVEUAAlRIAAJUSwACVE0AAlSMAAJUjgACVJAAAlSSAAJUlQACVJYAAlSXAAJUmAACVJkAAlSbAAJUnQACVJ4AAlSfAAJUoQACVKIAAlThAAJU4wACVOUAAlTnAAJU6gACVOsAAlTsAAJU7QACVO4AAlTwAAJU8gACVPMAAlT0AAJU9gACVPcAAlU2AAJVOAACVToAAlU8AAJVPwACVUAAAlVBAAJVQgACVUMAAlVFAAJVRwACVUgAAlVJAAJVSwACVUwAAlWLAAJVjQACVZAAAlWSAAJVlQACVZYAAlWXAAJVmAACVZkAAlWbAAJVnQACVZ4AAlWfAAJVoQACVaIAAlXlAAJWCQACVi0AAlZQAAJWdwACVpcAAla+AAJW5QACVwUAAlcpAAJXTQACV08AAldSAAJXVAACV1YAAldYAAJXWwACV14AAldgAAJXYgACV2UAAldnAAJXaQACV2wAAldvAAJXcAACV3UAAleCAAJXhQACV4cAAleKAAJXjQACV48AAle0AAJX2AACV/8AAlgjAAJYJgACWCgAAlgqAAJYLAACWC4AAlgwAAJYMQACWDQAAlhBAAJYVAACWFYAAlhYAAJYWgACWFwAAlheAAJYYAACWGIAAlhkAAJYZgACWHkAAlh8AAJYfwACWIIAAliFAAJYiAACWIsAAliOAAJYkQACWJQAAliWAAJY1QACWNcAAljaAAJY3AACWN8AAljgAAJY4QACWOIAAljjAAJY5QACWOcAAljoAAJY6QACWOsAAljsAAJY9QACWPYAAlj4AAJZNwACWTkAAlk7AAJZPQACWUAAAllBAAJZQgACWUMAAllEAAJZRgACWUgAAllJAAJZSgACWUwAAllNAAJZjAACWY4AAlmRAAJZkwACWZYAAlmXAAJZmAACWZkAAlmaAAJZnAACWZ4AAlmfAAJZoAACWaIAAlmjAAJZrAACWa0AAlmvAAJZ7gACWfAAAlnyAAJZ9AACWfcAAln4AAJZ+QACWfoAAln7AAJZ/QACWf8AAloAAAJaAQACWgMAAloEAAJaQwACWkUAAlpIAAJaSgACWk0AAlpOAAJaTwACWlAAAlpRAAJaUwACWlUAAlpWAAJaVwACWlkAAlpaAAJaYwACWmQAAlpmAAJapQACWqcAAlqpAAJaqwACWq4AAlqvAAJasAACWrEAAlqyAAJatAACWrYAAlq3AAJauAACWroAAlq7AAJa+gACWvwAAlr/AAJbAQACWwQAAlsFAAJbBgACWwcAAlsIAAJbCgACWwwAAlsNAAJbDgACWxAAAlsRAAJbHgACWx8AAlsgAAJbIgACW2EAAltjAAJbZQACW2cAAltqAAJbawACW2wAAlttAAJbbgACW3AAAltyAAJbcwACW3QAAlt2AAJbdwACW7YAAlu4AAJbugACW7wAAlu/AAJbwAACW8EAAlvCAAJbwwACW8UAAlvHAAJbyAACW8kAAlvLAAJbzAACW9kAAlviAAJb5QACW+cAAlvqAAJb7QACW/YAAlv5AAJb/AACW/8AAlwCAAJcBAACXAkAAlwOAAJcEwACXF4AAlyBAAJcoQACXMEAAlzDAAJcxQACXMcAAlzJAAJczAACXM0AAlzOAAJc0QACXNIAAlzUAAJc1QACXNcAAlzaAAJc2wACXNwAAlzfAAJc4AACXOUAAlzyAAJc9wACXPkAAlz7AAJdAAACXQMAAl0GAAJdCAACXS0AAl1RAAJdeAACXZwAAl2fAAJdoQACXaMAAl2lAAJdpwACXakAAl2qAAJdrQACXboAAl3LAAJdzQACXc8AAl3RAAJd0wACXdUAAl3XAAJd2QACXdsAAl3sAAJd7wACXfIAAl31AAJd+AACXfsAAl3+AAJeAQACXgQAAl4GAAJeRQACXkcAAl5JAAJeSwACXk4AAl5PAAJeUAACXlEAAl5SAAJeVAACXlYAAl5XAAJeWAACXloAAl5bAAJemgACXpwAAl6eAAJeoAACXqMAAl6kAAJepQACXqYAAl6nAAJeqQACXqsAAl6sAAJerQACXq8AAl6wAAJe7wACXvEAAl70AAJe9gACXvkAAl76AAJe+wACXvwAAl79AAJe/wACXwEAAl8CAAJfAwACXwUAAl8GAAJfEwACXxQAAl8VAAJfFwACX1YAAl9YAAJfWgACX1wAAl9fAAJfYAACX2EAAl9iAAJfYwACX2UAAl9nAAJfaAACX2kAAl9rAAJfbAACX6sAAl+tAAJfrwACX7EAAl+0AAJftQACX7YAAl+3AAJfuAACX7oAAl+8AAJfvQACX74AAl/AAAJfwQACYAAAAmACAAJgBAACYAYAAmAJAAJgCgACYAsAAmAMAAJgDQACYA8AAmARAAJgEgACYBMAAmAVAAJgFgACYFUAAmBXAAJgWQACYFsAAmBeAAJgXwACYGAAAmBhAAJgYgACYGQAAmBmAAJgZwACYGgAAmBqAAJgawACYKoAAmCsAAJgrgACYLAAAmCzAAJgtAACYLUAAmC2AAJgtwACYLkAAmC7AAJgvAACYL0AAmC/AAJgwAACYOUAAmEJAAJhMAACYVQAAmFXAAJhWQACYVsAAmFdAAJhXwACYWEAAmFiAAJhZQACYXIAAmGBAAJhgwACYYUAAmGHAAJhiQACYYsAAmGNAAJhjwACYZ4AAmGhAAJhpAACYacAAmGqAAJhrQACYbAAAmGzAAJhtQACYfQAAmH2AAJh+AACYfoAAmH9AAJh/gACYf8AAmIAAAJiAQACYgMAAmIFAAJiBgACYgcAAmIJAAJiCgACYkkAAmJLAAJiTQACYk8AAmJSAAJiUwACYlQAAmJVAAJiVgACYlgAAmJaAAJiWwACYlwAAmJeAAJiXwACYp4AAmKgAAJiogACYqQAAmKnAAJiqAACYqkAAmKqAAJiqwACYq0AAmKvAAJisAACYrEAAmKzAAJitAACYvMAAmL1AAJi9wACYvkAAmL8AAJi/QACYv4AAmL/AAJjAAACYwIAAmMEAAJjBQACYwYAAmMIAAJjCQACY0gAAmNKAAJjTAACY04AAmNRAAJjUgACY1MAAmNUAAJjVQACY1cAAmNZAAJjWgACY1sAAmNdAAJjXgACY50AAmOfAAJjoQACY6MAAmOmAAJjpwACY6gAAmOpAAJjqgACY6wAAmOuAAJjrwACY7AAAmOyAAJjswACY/IAAmP0AAJj9wACY/kAAmP8AAJj/QACY/4AAmP/AAJkAAACZAIAAmQEAAJkBQACZAYAAmQIAAJkCQACZFQAAmR3AAJklwACZLcAAmS5AAJkuwACZL0AAmS/AAJkwgACZMMAAmTEAAJkxwACZMgAAmTKAAJkywACZM0AAmTPAAJk0AACZNEAAmTUAAJk1QACZNoAAmTnAAJk7AACZO4AAmTwAAJk9QACZPgAAmT7AAJk/QACZSIAAmVGAAJlbQACZZEAAmWUAAJllgACZZgAAmWaAAJlnAACZZ4AAmWfAAJlogACZa8AAmXAAAJlwgACZcQAAmXGAAJlyAACZcoAAmXMAAJlzgACZdAAAmXhAAJl5AACZecAAmXqAAJl7QACZfAAAmXzAAJl9gACZfkAAmX7AAJmOgACZjwAAmY+AAJmQAACZkMAAmZEAAJmRQACZkYAAmZHAAJmSQACZksAAmZMAAJmTQACZk8AAmZQAAJmjwACZpEAAmaTAAJmlQACZpgAAmaZAAJmmgACZpsAAmacAAJmngACZqAAAmahAAJmogACZqQAAmalAAJm5AACZuYAAmbpAAJm6wACZu4AAmbvAAJm8AACZvEAAmbyAAJm9AACZvYAAmb3AAJm+AACZvoAAmb7AAJnCAACZwkAAmcKAAJnDAACZ0sAAmdNAAJnTwACZ1EAAmdUAAJnVQACZ1YAAmdXAAJnWAACZ1oAAmdcAAJnXQACZ14AAmdgAAJnYQACZ6AAAmeiAAJnpAACZ6YAAmepAAJnqgACZ6sAAmesAAJnrQACZ68AAmexAAJnsgACZ7MAAme1AAJntgACZ/UAAmf3AAJn+QACZ/sAAmf+AAJn/wACaAAAAmgBAAJoAgACaAQAAmgGAAJoBwACaAgAAmgKAAJoCwACaEoAAmhMAAJoTgACaFAAAmhTAAJoVAACaFUAAmhWAAJoVwACaFkAAmhbAAJoXAACaF0AAmhfAAJoYAACaJ8AAmihAAJoowACaKUAAmioAAJoqQACaKoAAmirAAJorAACaK4AAmiwAAJosQACaLIAAmi0AAJotQACaNoAAmj+AAJpJQACaUkAAmlMAAJpTgACaVAAAmlSAAJpVAACaVYAAmlXAAJpWgACaWcAAml2AAJpeAACaXoAAml8AAJpfgACaYAAAmmCAAJphAACaZMAAmmWAAJpmQACaZwAAmmfAAJpogACaaUAAmmoAAJpqgACaekAAmnrAAJp7gACafAAAmnzAAJp9AACafUAAmn2AAJp9wACafkAAmn7AAJp/AACaf0AAmn/AAJqAAACaj8AAmpBAAJqQwACakUAAmpIAAJqSQACakoAAmpLAAJqTAACak4AAmpQAAJqUQACalIAAmpUAAJqVQACapQAAmqWAAJqmAACapoAAmqdAAJqngACap8AAmqgAAJqoQACaqMAAmqlAAJqpgACaqcAAmqpAAJqqgACaukAAmrrAAJq7gACavAAAmrzAAJq9AACavUAAmr2AAJq9wACavkAAmr7AAJq/AACav0AAmr/AAJrAAACaz8AAmtBAAJrQwACa0UAAmtIAAJrSQACa0oAAmtLAAJrTAACa04AAmtQAAJrUQACa1IAAmtUAAJrVQACa5QAAmuWAAJrmAACa5oAAmudAAJrngACa58AAmugAAJroQACa6MAAmulAAJrpgACa6cAAmupAAJrqgACa+kAAmvrAAJr7QACa+8AAmvyAAJr8wACa/QAAmv1AAJr9gACa/gAAmv6AAJr+wACa/wAAmv+AAJr/wACbEoAAmxtAAJsjQACbK0AAmyvAAJssQACbLMAAmy1AAJsuAACbLkAAmy6AAJsvQACbL4AAmzAAAJswQACbMMAAmzGAAJsxwACbMgAAmzLAAJszAACbNUAAmziAAJs5wACbOkAAmzrAAJs8AACbPMAAmz2AAJs+AACbR0AAm1BAAJtaAACbYwAAm2PAAJtkQACbZMAAm2VAAJtlwACbZkAAm2aAAJtnQACbaoAAm27AAJtvQACbb8AAm3BAAJtwwACbcUAAm3HAAJtyQACbcsAAm3cAAJt3wACbeIAAm3lAAJt6AACbesAAm3uAAJt8QACbfQAAm32AAJuNQACbjcAAm45AAJuOwACbj4AAm4/AAJuQAACbkEAAm5CAAJuRAACbkYAAm5HAAJuSAACbkoAAm5LAAJuigACbowAAm6OAAJukAACbpMAAm6UAAJulQACbpYAAm6XAAJumQACbpsAAm6cAAJunQACbp8AAm6gAAJu3wACbuEAAm7kAAJu5gACbukAAm7qAAJu6wACbuwAAm7tAAJu7wACbvEAAm7yAAJu8wACbvUAAm72AAJvAwACbwQAAm8FAAJvBwACb0YAAm9IAAJvSgACb0wAAm9PAAJvUAACb1EAAm9SAAJvUwACb1UAAm9XAAJvWAACb1kAAm9bAAJvXAACb5sAAm+dAAJvnwACb6EAAm+kAAJvpQACb6YAAm+nAAJvqAACb6oAAm+sAAJvrQACb64AAm+wAAJvsQACb/AAAm/yAAJv9AACb/YAAm/5AAJv+gACb/sAAm/8AAJv/QACb/8AAnABAAJwAgACcAMAAnAFAAJwBgACcEUAAnBHAAJwSQACcEsAAnBOAAJwTwACcFAAAnBRAAJwUgACcFQAAnBWAAJwVwACcFgAAnBaAAJwWwACcJoAAnCcAAJwngACcKAAAnCjAAJwpAACcKUAAnCmAAJwpwACcKkAAnCrAAJwrAACcK0AAnCvAAJwsAACcNUAAnD5AAJxIAACcUQAAnFHAAJxSQACcUsAAnFNAAJxTwACcVEAAnFSAAJxVQACcWIAAnFxAAJxcwACcXUAAnF3AAJxeQACcXsAAnF9AAJxfwACcY4AAnGRAAJxlAACcZcAAnGaAAJxnQACcaAAAnGjAAJxpQACceQAAnHmAAJx6QACcesAAnHuAAJx7wACcfAAAnHxAAJx8gACcfQAAnH2AAJx9wACcfgAAnH6AAJx+wACcjoAAnI8AAJyPgACckAAAnJDAAJyRAACckUAAnJGAAJyRwACckkAAnJLAAJyTAACck0AAnJPAAJyUAACco8AAnKRAAJykwACcpUAAnKYAAJymQACcpoAAnKbAAJynAACcp4AAnKgAAJyoQACcqIAAnKkAAJypQACcuQAAnLmAAJy6QACcusAAnLuAAJy7wACcvAAAnLxAAJy8gACcvQAAnL2AAJy9wACcvgAAnL6AAJy+wACczoAAnM8AAJzPgACc0AAAnNDAAJzRAACc0UAAnNGAAJzRwACc0kAAnNLAAJzTAACc00AAnNPAAJzUAACc48AAnORAAJzkwACc5UAAnOYAAJzmQACc5oAAnObAAJznAACc54AAnOgAAJzoQACc6IAAnOkAAJzpQACc+QAAnPmAAJz6AACc+oAAnPtAAJz7gACc+8AAnPwAAJz8QACc/MAAnP1AAJz9gACc/cAAnP5AAJz+gACdEUAAnRoAAJ0iAACdKgAAnSqAAJ0rAACdK4AAnSwAAJ0swACdLQAAnS1AAJ0uAACdLkAAnS7AAJ0vAACdL4AAnTBAAJ0wgACdMMAAnTGAAJ0xwACdMwAAnTZAAJ03gACdOAAAnTiAAJ05wACdOoAAnTtAAJ07wACdRQAAnU4AAJ1XwACdYMAAnWGAAJ1iAACdYoAAnWMAAJ1jgACdZAAAnWRAAJ1lAACdaEAAnWyAAJ1tAACdbYAAnW4AAJ1ugACdbwAAnW+AAJ1wAACdcIAAnXTAAJ11gACddkAAnXcAAJ13wACdeIAAnXlAAJ16AACdesAAnXtAAJ2LAACdi4AAnYwAAJ2MgACdjUAAnY2AAJ2NwACdjgAAnY5AAJ2OwACdj0AAnY+AAJ2PwACdkEAAnZCAAJ2gQACdoMAAnaFAAJ2hwACdooAAnaLAAJ2jAACdo0AAnaOAAJ2kAACdpIAAnaTAAJ2lAACdpYAAnaXAAJ21gACdtgAAnbbAAJ23QACduAAAnbhAAJ24gACduMAAnbkAAJ25gACdugAAnbpAAJ26gACduwAAnbtAAJ2+gACdvsAAnb8AAJ2/gACdz0AAnc/AAJ3QQACd0MAAndGAAJ3RwACd0gAAndJAAJ3SgACd0wAAndOAAJ3TwACd1AAAndSAAJ3UwACd5IAAneUAAJ3lgACd5gAAnebAAJ3nAACd50AAneeAAJ3nwACd6EAAnejAAJ3pAACd6UAAnenAAJ3qAACd+cAAnfpAAJ36wACd+0AAnfwAAJ38QACd/IAAnfzAAJ39AACd/YAAnf4AAJ3+QACd/oAAnf8AAJ3/QACeDwAAng+AAJ4QAACeEIAAnhFAAJ4RgACeEcAAnhIAAJ4SQACeEsAAnhNAAJ4TgACeE8AAnhRAAJ4UgACeJEAAniTAAJ4lQACeJcAAniaAAJ4mwACeJwAAnidAAJ4ngACeKAAAniiAAJ4owACeKQAAnimAAJ4pwACeMwAAnjwAAJ5FwACeTsAAnk+AAJ5QAACeUIAAnlEAAJ5RgACeUgAAnlJAAJ5TAACeVkAAnloAAJ5agACeWwAAnluAAJ5cAACeXIAAnl0AAJ5dgACeYUAAnmIAAJ5iwACeY4AAnmRAAJ5lAACeZcAAnmaAAJ5nAACedsAAnndAAJ53wACeeEAAnnkAAJ55QACeeYAAnnnAAJ56AACeeoAAnnsAAJ57QACee4AAnnwAAJ58QACejAAAnoyAAJ6NAACejYAAno5AAJ6OgACejsAAno8AAJ6PQACej8AAnpBAAJ6QgACekMAAnpFAAJ6RgACeoUAAnqHAAJ6iQACeosAAnqOAAJ6jwACepAAAnqRAAJ6kgACepQAAnqWAAJ6lwACepgAAnqaAAJ6mwACetoAAnrcAAJ63gACeuAAAnrjAAJ65AACeuUAAnrmAAJ65wACeukAAnrrAAJ67AACeu0AAnrvAAJ68AACey8AAnsxAAJ7MwACezUAAns4AAJ7OQACezoAAns7AAJ7PAACez4AAntAAAJ7QQACe0IAAntEAAJ7RQACe4QAAnuGAAJ7iAACe4oAAnuNAAJ7jgACe48AAnuQAAJ7kQACe5MAAnuVAAJ7lgACe5cAAnuZAAJ7mgACe9kAAnvbAAJ73QACe98AAnviAAJ74wACe+QAAnvlAAJ75gACe+gAAnvqAAJ76wACe+wAAnvuAAJ77wACe/gAAnv5AAJ7+wACfDoAAnw8AAJ8PgACfEAAAnxDAAJ8RAACfEUAAnxGAAJ8RwACfEkAAnxLAAJ8TAACfE0AAnxPAAJ8UAACfI8AAnyRAAJ8kwACfJUAAnyYAAJ8mQACfJoAAnybAAJ8nAACfJ4AAnygAAJ8oQACfKIAAnykAAJ8pQACfOQAAnzmAAJ86QACfOsAAnzuAAJ87wACfPAAAnzxAAJ88gACfPQAAnz2AAJ89wACfPgAAnz6AAJ8+wACfUYAAn1pAAJ9iQACfakAAn2rAAJ9rQACfa8AAn2xAAJ9swACfbQAAn21AAJ9uAACfbkAAn27AAJ9vAACfb4AAn3AAAJ9wQACfcIAAn3FAAJ9xgACfcsAAn3YAAJ93QACfd8AAn3hAAJ95gACfekAAn3sAAJ97gACfhMAAn43AAJ+XgACfoIAAn6FAAJ+hwACfokAAn6LAAJ+jQACfo8AAn6QAAJ+kwACfqAAAn6xAAJ+swACfrUAAn63AAJ+uQACfrsAAn69AAJ+vwACfsEAAn7SAAJ+1QACftgAAn7bAAJ+3gACfuEAAn7kAAJ+5wACfuoAAn7sAAJ/KwACfy0AAn8vAAJ/MQACfzQAAn81AAJ/NgACfzcAAn84AAJ/OgACfzwAAn89AAJ/PgACf0AAAn9BAAJ/gAACf4IAAn+EAAJ/hgACf4kAAn+KAAJ/iwACf4wAAn+NAAJ/jwACf5EAAn+SAAJ/kwACf5UAAn+WAAJ/1QACf9cAAn/aAAJ/3AACf98AAn/gAAJ/4QACf+IAAn/jAAJ/5QACf+cAAn/oAAJ/6QACf+sAAn/sAAJ/+QACf/oAAn/7AAJ//QACgDwAAoA+AAKAQAACgEIAAoBFAAKARgACgEcAAoBIAAKASQACgEsAAoBNAAKATgACgE8AAoBRAAKAUgACgJEAAoCTAAKAlQACgJcAAoCaAAKAmwACgJwAAoCdAAKAngACgKAAAoCiAAKAowACgKQAAoCmAAKApwACgOYAAoDoAAKA6gACgOwAAoDvAAKA8AACgPEAAoDyAAKA8wACgPUAAoD3AAKA+AACgPkAAoD7AAKA/AACgTsAAoE9AAKBPwACgUEAAoFEAAKBRQACgUYAAoFHAAKBSAACgUoAAoFMAAKBTQACgU4AAoFQAAKBUQACgZAAAoGSAAKBlAACgZYAAoGZAAKBmgACgZsAAoGcAAKBnQACgZ8AAoGhAAKBogACgaMAAoGlAAKBpgACgcsAAoHvAAKCFgACgjoAAoI9AAKCPwACgkEAAoJDAAKCRQACgkcAAoJIAAKCSwACglgAAoJnAAKCaQACgmsAAoJtAAKCbwACgnEAAoJzAAKCdQACgoQAAoKHAAKCigACgo0AAoKQAAKCkwACgpYAAoKZAAKCmwACgtoAAoLcAAKC3wACguEAAoLkAAKC5QACguYAAoLnAAKC6AACguoAAoLsAAKC7QACgu4AAoLwAAKC8QACgzAAAoMyAAKDNAACgzYAAoM5AAKDOgACgzsAAoM8AAKDPQACgz8AAoNBAAKDQgACg0MAAoNFAAKDRgACg4UAAoOHAAKDiQACg4sAAoOOAAKDjwACg5AAAoORAAKDkgACg5QAAoOWAAKDlwACg5gAAoOaAAKDmwACg9oAAoPcAAKD3wACg+EAAoPkAAKD5QACg+YAAoPnAAKD6AACg+oAAoPsAAKD7QACg+4AAoPwAAKD8QAChDAAAoQyAAKENAAChDYAAoQ5AAKEOgAChDsAAoQ8AAKEPQAChD8AAoRBAAKEQgAChEMAAoRFAAKERgAChIUAAoSHAAKEiQAChIsAAoSOAAKEjwAChJAAAoSRAAKEkgAChJQAAoSWAAKElwAChJgAAoSaAAKEmwAChNoAAoTcAAKE3gAChOAAAoTjAAKE5AAChOUAAoTmAAKE5wAChOkAAoTrAAKE7AAChO0AAoTvAAKE8AAChTsAAoVeAAKFfgAChZ4AAoWgAAKFogAChaQAAoWmAAKFqAAChakAAoWqAAKFrQACha4AAoWwAAKFsQAChbMAAoW1AAKFtgAChbcAAoW6AAKFuwAChcAAAoXNAAKF0gAChdQAAoXWAAKF2wAChd4AAoXhAAKF4wAChggAAoYsAAKGUwAChncAAoZ6AAKGfAAChn4AAoaAAAKGggAChoQAAoaFAAKGiAAChpUAAoamAAKGqAAChqoAAoasAAKGrgAChrAAAoayAAKGtAAChrYAAobHAAKGygAChs0AAobQAAKG0wAChtYAAobZAAKG3AACht8AAobhAAKHIAAChyIAAockAAKHJgAChykAAocqAAKHKwAChywAAoctAAKHLwAChzEAAocyAAKHMwAChzUAAoc2AAKHdQACh3cAAod5AAKHewACh34AAod/AAKHgAACh4EAAoeCAAKHhAACh4YAAoeHAAKHiAACh4oAAoeLAAKHygACh8wAAofPAAKH0QACh9QAAofVAAKH1gACh9cAAofYAAKH2gACh9wAAofdAAKH3gACh+AAAofhAAKH7gACh+8AAofwAAKH8gACiDEAAogzAAKINQACiDcAAog6AAKIOwACiDwAAog9AAKIPgACiEAAAohCAAKIQwACiEQAAohGAAKIRwACiIYAAoiIAAKIigACiIwAAoiPAAKIkAACiJEAAoiSAAKIkwACiJUAAoiXAAKImAACiJkAAoibAAKInAACiNsAAojdAAKI3wACiOEAAojkAAKI5QACiOYAAojnAAKI6AACiOoAAojsAAKI7QACiO4AAojwAAKI8QACiTAAAokyAAKJNAACiTYAAok5AAKJOgACiTsAAok8AAKJPQACiT8AAolBAAKJQgACiUMAAolFAAKJRgACiYUAAomHAAKJiQACiYsAAomOAAKJjwACiZAAAomRAAKJkgACiZQAAomWAAKJlwACiZgAAomaAAKJmwACicAAAonkAAKKCwACii8AAooyAAKKNAACijYAAoo4AAKKOgACijwAAoo9AAKKQAACik0AAopcAAKKXgACimAAAopiAAKKZAACimYAAopoAAKKagACinkAAop8AAKKfwACioIAAoqFAAKKiAACiosAAoqOAAKKkAACis8AAorRAAKK0wACitUAAorYAAKK2QACitoAAorbAAKK3AACit4AAorgAAKK4QACiuIAAorkAAKK5QACiyQAAosmAAKLKAACiyoAAostAAKLLgACiy8AAoswAAKLMQACizMAAos1AAKLNgACizcAAos5AAKLOgACi3kAAot7AAKLfQACi38AAouCAAKLgwACi4QAAouFAAKLhgACi4gAAouKAAKLiwACi4wAAouOAAKLjwACi84AAovQAAKL0gACi9QAAovXAAKL2AACi9kAAovaAAKL2wACi90AAovfAAKL4AACi+EAAovjAAKL5AACjCMAAowlAAKMJwACjCkAAowsAAKMLQACjC4AAowvAAKMMAACjDIAAow0AAKMNQACjDYAAow4AAKMOQACjHgAAox6AAKMfAACjH4AAoyBAAKMggACjIMAAoyEAAKMhQACjIcAAoyJAAKMigACjIsAAoyNAAKMjgACjM0AAozPAAKM0QACjNMAAozWAAKM1wACjNgAAozZAAKM2gACjNwAAozeAAKM3wACjOAAAoziAAKM4wACjOwAAoztAAKM7wACjPgAAoz9AAKNAAACjQMAAo0FAAKNIgACjSwAAo01AAKNOAACjToAAo09AAKNQAACjUMAAo1FAAKNiAACjawAAo3QAAKN8wACjhoAAo46AAKOYQACjogAAo6oAAKOzAACjvAAAo7yAAKO9QACjvcAAo75AAKO+wACjv4AAo8BAAKPAwACjwUAAo8IAAKPCgACjwwAAo8PAAKPEgACjxMAAo8YAAKPJQACjygAAo8qAAKPLQACjzAAAo8yAAKPVwACj3sAAo+iAAKPxgACj8kAAo/LAAKPzQACj88AAo/RAAKP0wACj9QAAo/XAAKP5AACj/cAAo/5AAKP+wACj/0AAo//AAKQAQACkAMAApAFAAKQBwACkAkAApAcAAKQHwACkCIAApAlAAKQKAACkCsAApAuAAKQMQACkDQAApA3AAKQOQACkHgAApB6AAKQfQACkH8AApCCAAKQgwACkIQAApCFAAKQhgACkIgAApCKAAKQiwACkIwAApCOAAKQjwACkJgAApCZAAKQmwACkNoAApDcAAKQ3gACkOAAApDjAAKQ5AACkOUAApDmAAKQ5wACkOkAApDrAAKQ7AACkO0AApDvAAKQ8AACkS8AApExAAKRNAACkTYAApE5AAKROgACkTsAApE8AAKRPQACkT8AApFBAAKRQgACkUMAApFFAAKRRgACkU8AApFQAAKRUgACkZEAApGTAAKRlQACkZcAApGaAAKRmwACkZwAApGdAAKRngACkaAAApGiAAKRowACkaQAApGmAAKRpwACkeYAApHoAAKR6wACke0AApHwAAKR8QACkfIAApHzAAKR9AACkfYAApH4AAKR+QACkfoAApH8AAKR/QACkgYAApIHAAKSCQACkkgAApJKAAKSTAACkk4AApJRAAKSUgACklMAApJUAAKSVQACklcAApJZAAKSWgACklsAApJdAAKSXgACkp0AApKfAAKSogACkqQAApKnAAKSqAACkqkAApKqAAKSqwACkq0AApKvAAKSsAACkrEAApKzAAKStAACksEAApLCAAKSwwACksUAApMEAAKTBgACkwgAApMKAAKTDQACkw4AApMPAAKTEAACkxEAApMTAAKTFQACkxYAApMXAAKTGQACkxoAApNZAAKTWwACk10AApNfAAKTYgACk2MAApNkAAKTZQACk2YAApNoAAKTagACk2sAApNsAAKTbgACk28AApN8AAKTfwACk4IAApOFAAKTiAACk4oAApOTAAKT3gAClAEAApQhAAKUQQAClEMAApRFAAKURwAClEkAApRMAAKUTQAClE4AApRRAAKUUgAClFQAApRVAAKUVwAClFoAApRbAAKUXAAClF8AApRgAAKUaQAClHYAApR7AAKUfQAClH8AApSEAAKUhwAClIoAApSMAAKUsQAClNUAApT8AAKVIAAClSMAApUlAAKVJwAClSkAApUrAAKVLQAClS4AApUxAAKVPgAClU8AApVRAAKVUwAClVUAApVXAAKVWQAClVsAApVdAAKVXwAClXAAApVzAAKVdgAClXkAApV8AAKVfwAClYIAApWFAAKViAAClYoAApXJAAKVywAClc0AApXPAAKV0gACldMAApXUAAKV1QACldYAApXYAAKV2gACldsAApXcAAKV3gACld8AApYeAAKWIAACliIAApYkAAKWJwACligAApYpAAKWKgAClisAApYtAAKWLwACljAAApYxAAKWMwACljQAApZzAAKWdQAClngAApZ6AAKWfQACln4AApZ/AAKWgAACloEAApaDAAKWhQACloYAApaHAAKWiQAClooAApaXAAKWmAAClpkAApabAAKW2gACltwAApbeAAKW4AACluMAApbkAAKW5QACluYAApbnAAKW6QAClusAApbsAAKW7QAClu8AApbwAAKXLwAClzEAApczAAKXNQAClzgAApc5AAKXOgAClzsAApc8AAKXPgACl0AAApdBAAKXQgACl0QAApdFAAKXhAACl4YAApeIAAKXigACl40AApeOAAKXjwACl5AAApeRAAKXkwACl5UAApeWAAKXlwACl5kAApeaAAKX2QACl9sAApfdAAKX3wACl+IAApfjAAKX5AACl+UAApfmAAKX6AACl+oAApfrAAKX7AACl+4AApfvAAKYLgACmDAAApgyAAKYNAACmDcAApg4AAKYOQACmDoAApg7AAKYPQACmD8AAphAAAKYQQACmEMAAphEAAKYaQACmI0AApi0AAKY2AACmNsAApjdAAKY3wACmOEAApjjAAKY5QACmOYAApjpAAKY9gACmQUAApkHAAKZCQACmQsAApkNAAKZDwACmREAApkTAAKZIgACmSUAApkoAAKZKwACmS4AApkxAAKZNAACmTcAApk5AAKZeAACmXoAApl8AAKZfgACmYEAApmCAAKZgwACmYQAApmFAAKZhwACmYkAApmKAAKZiwACmY0AApmOAAKZzQACmc8AApnRAAKZ0wACmdYAApnXAAKZ2AACmdkAApnaAAKZ3AACmd4AApnfAAKZ4AACmeIAApnjAAKaIgACmiQAApomAAKaKAACmisAAposAAKaLQACmi4AApovAAKaMQACmjMAApo0AAKaNQACmjcAApo4AAKadwACmnkAApp8AAKafgACmoEAApqCAAKagwACmoQAApqFAAKahwACmokAApqKAAKaiwACmo0AApqOAAKa0QACmvUAApsZAAKbPAACm2MAApuDAAKbqgACm9EAApvxAAKcFQACnDkAApw7AAKcPgACnEAAApxCAAKcRAACnEcAApxKAAKcTAACnE4AApxRAAKcUwACnFUAApxYAAKcWwACnFwAApxhAAKcbgACnHEAApxzAAKcdgACnHkAApx7AAKcoAACnMQAApzrAAKdDwACnRIAAp0UAAKdFgACnRgAAp0aAAKdHAACnR0AAp0gAAKdLQACnUAAAp1CAAKdRAACnUYAAp1IAAKdSgACnUwAAp1OAAKdUAACnVIAAp1lAAKdaAACnWsAAp1uAAKdcQACnXQAAp13AAKdegACnX0AAp2AAAKdggACncEAAp3DAAKdxgACncgAAp3LAAKdzAACnc0AAp3OAAKdzwACndEAAp3TAAKd1AACndUAAp3XAAKd2AACneEAAp3iAAKd5AACniMAAp4lAAKeJwACnikAAp4sAAKeLQACni4AAp4vAAKeMAACnjIAAp40AAKeNQACnjYAAp44AAKeOQACnngAAp56AAKefQACnn8AAp6CAAKegwACnoQAAp6FAAKehgACnogAAp6KAAKeiwACnowAAp6OAAKejwACnpgAAp6ZAAKemwACntoAAp7cAAKe3gACnuAAAp7jAAKe5AACnuUAAp7mAAKe5wACnukAAp7rAAKe7AACnu0AAp7vAAKe8AACny8AAp8xAAKfNAACnzYAAp85AAKfOgACnzsAAp88AAKfPQACnz8AAp9BAAKfQgACn0MAAp9FAAKfRgACn08AAp9QAAKfUgACn5EAAp+TAAKflQACn5cAAp+aAAKfmwACn5wAAp+dAAKfngACn6AAAp+iAAKfowACn6QAAp+mAAKfpwACn+YAAp/oAAKf6wACn+0AAp/wAAKf8QACn/IAAp/zAAKf9AACn/YAAp/4AAKf+QACn/oAAp/8AAKf/QACoAoAAqALAAKgDAACoA4AAqBNAAKgTwACoFEAAqBTAAKgVgACoFcAAqBYAAKgWQACoFoAAqBcAAKgXgACoF8AAqBgAAKgYgACoGMAAqCiAAKgpAACoKYAAqCoAAKgqwACoKwAAqCtAAKgrgACoK8AAqCxAAKgswACoLQAAqC1AAKgtwACoLgAAqDFAAKg0AACoNIAAqDVAAKg1wACoNoAAqDdAAKg6AACoOsAAqDuAAKg8QACoPQAAqD3AAKg+QACoP8AAqEEAAKhCgACoVUAAqF4AAKhmAACobgAAqG6AAKhvAACob4AAqHAAAKhwwACocQAAqHFAAKhyAACockAAqHLAAKhzAACoc4AAqHQAAKh0QACodIAAqHVAAKh1gACodsAAqHoAAKh7QACoe8AAqHxAAKh9gACofkAAqH8AAKh/gACoiMAAqJHAAKibgACopIAAqKVAAKilwACopkAAqKbAAKinQACop8AAqKgAAKiowACorAAAqLBAAKiwwACosUAAqLHAAKiyQACossAAqLNAAKizwACotEAAqLiAAKi5QACougAAqLrAAKi7gACovEAAqL0AAKi9wACovoAAqL8AAKjOwACoz0AAqM/AAKjQQACo0QAAqNFAAKjRgACo0cAAqNIAAKjSgACo0wAAqNNAAKjTgACo1AAAqNRAAKjkAACo5IAAqOUAAKjlgACo5kAAqOaAAKjmwACo5wAAqOdAAKjnwACo6EAAqOiAAKjowACo6UAAqOmAAKj5QACo+cAAqPqAAKj7AACo+8AAqPwAAKj8QACo/IAAqPzAAKj9QACo/cAAqP4AAKj+QACo/sAAqP8AAKkCQACpAoAAqQLAAKkDQACpEwAAqROAAKkUAACpFIAAqRVAAKkVgACpFcAAqRYAAKkWQACpFsAAqRdAAKkXgACpF8AAqRhAAKkYgACpKEAAqSjAAKkpQACpKcAAqSqAAKkqwACpKwAAqStAAKkrgACpLAAAqSyAAKkswACpLQAAqS2AAKktwACpPYAAqT4AAKk+gACpPwAAqT/AAKlAAACpQEAAqUCAAKlAwACpQUAAqUHAAKlCAACpQkAAqULAAKlDAACpUsAAqVNAAKlTwACpVEAAqVUAAKlVQACpVYAAqVXAAKlWAACpVoAAqVcAAKlXQACpV4AAqVgAAKlYQACpaAAAqWiAAKlpAACpaYAAqWpAAKlqgACpasAAqWsAAKlrQACpa8AAqWxAAKlsgACpbMAAqW1AAKltgACpdsAAqX/AAKmJgACpkoAAqZNAAKmTwACplEAAqZTAAKmVQACplcAAqZYAAKmWwACpmgAAqZ3AAKmeQACpnsAAqZ9AAKmfwACpoEAAqaDAAKmhQACppQAAqaXAAKmmgACpp0AAqagAAKmowACpqYAAqapAAKmqwACpuoAAqbsAAKm7wACpvEAAqb0AAKm9QACpvYAAqb3AAKm+AACpvoAAqb8AAKm/QACpv4AAqcAAAKnAQACp0AAAqdCAAKnRAACp0YAAqdJAAKnSgACp0sAAqdMAAKnTQACp08AAqdRAAKnUgACp1MAAqdVAAKnVgACp5UAAqeXAAKnmQACp5sAAqeeAAKnnwACp6AAAqehAAKnogACp6QAAqemAAKnpwACp6gAAqeqAAKnqwACp+oAAqfsAAKn7wACp/EAAqf0AAKn9QACp/YAAqf3AAKn+AACp/oAAqf8AAKn/QACp/4AAqgAAAKoAQACqEAAAqhCAAKoRAACqEYAAqhJAAKoSgACqEsAAqhMAAKoTQACqE8AAqhRAAKoUgACqFMAAqhVAAKoVgACqJUAAqiXAAKomQACqJsAAqieAAKonwACqKAAAqihAAKoogACqKQAAqimAAKopwACqKgAAqiqAAKoqwACqOoAAqjsAAKo7gACqPAAAqjzAAKo9AACqPUAAqj2AAKo9wACqPkAAqj7AAKo/AACqP0AAqj/AAKpAAACqUsAAqluAAKpjgACqa4AAqmwAAKpsgACqbQAAqm2AAKpuQACqboAAqm7AAKpvgACqb8AAqnBAAKpwgACqcQAAqnHAAKpyAACqckAAqnMAAKpzQACqdIAAqnfAAKp5AACqeYAAqnoAAKp7QACqfAAAqnzAAKp9QACqhoAAqo+AAKqZQACqokAAqqMAAKqjgACqpAAAqqSAAKqlAACqpYAAqqXAAKqmgACqqcAAqq4AAKqugACqrwAAqq+AAKqwAACqsIAAqrEAAKqxgACqsgAAqrZAAKq3AACqt8AAqriAAKq5QACqugAAqrrAAKq7gACqvEAAqrzAAKrMgACqzQAAqs2AAKrOAACqzsAAqs8AAKrPQACqz4AAqs/AAKrQQACq0MAAqtEAAKrRQACq0cAAqtIAAKrhwACq4kAAquLAAKrjQACq5AAAquRAAKrkgACq5MAAquUAAKrlgACq5gAAquZAAKrmgACq5wAAqudAAKr3AACq94AAqvhAAKr4wACq+YAAqvnAAKr6AACq+kAAqvqAAKr7AACq+4AAqvvAAKr8AACq/IAAqvzAAKsAAACrAEAAqwCAAKsBAACrEMAAqxFAAKsRwACrEkAAqxMAAKsTQACrE4AAqxPAAKsUAACrFIAAqxUAAKsVQACrFYAAqxYAAKsWQACrJgAAqyaAAKsnAACrJ4AAqyhAAKsogACrKMAAqykAAKspQACrKcAAqypAAKsqgACrKsAAqytAAKsrgACrO0AAqzvAAKs8QACrPMAAqz2AAKs9wACrPgAAqz5AAKs+gACrPwAAqz+AAKs/wACrQAAAq0CAAKtAwACrUIAAq1EAAKtRgACrUgAAq1LAAKtTAACrU0AAq1OAAKtTwACrVEAAq1TAAKtVAACrVUAAq1XAAKtWAACrZcAAq2ZAAKtmwACrZ0AAq2gAAKtoQACraIAAq2jAAKtpAACraYAAq2oAAKtqQACraoAAq2sAAKtrQACrdIAAq32AAKuHQACrkEAAq5EAAKuRgACrkgAAq5KAAKuTAACrk4AAq5PAAKuUgACrl8AAq5uAAKucAACrnIAAq50AAKudgACrngAAq56AAKufAACrosAAq6OAAKukQACrpQAAq6XAAKumgACrp0AAq6gAAKuogACruEAAq7jAAKu5gACrugAAq7rAAKu7AACru0AAq7uAAKu7wACrvEAAq7zAAKu9AACrvUAAq73AAKu+AACrzcAAq85AAKvOwACrz0AAq9AAAKvQQACr0IAAq9DAAKvRAACr0YAAq9IAAKvSQACr0oAAq9MAAKvTQACr4wAAq+OAAKvkAACr5IAAq+VAAKvlgACr5cAAq+YAAKvmQACr5sAAq+dAAKvngACr58AAq+hAAKvogACr+EAAq/jAAKv5gACr+gAAq/rAAKv7AACr+0AAq/uAAKv7wACr/EAAq/zAAKv9AACr/UAAq/3AAKv+AACsDcAArA5AAKwOwACsD0AArBAAAKwQQACsEIAArBDAAKwRAACsEYAArBIAAKwSQACsEoAArBMAAKwTQACsIwAArCOAAKwkAACsJIAArCVAAKwlgACsJcAArCYAAKwmQACsJsAArCdAAKwngACsJ8AArChAAKwogACsOEAArDjAAKw5QACsOcAArDqAAKw6wACsOwAArDtAAKw7gACsPAAArDyAAKw8wACsPQAArD2AAKw9wACsUIAArFlAAKxhQACsaUAArGnAAKxqQACsasAArGtAAKxsAACsbEAArGyAAKxtQACsbYAArG4AAKxuQACsbsAArG9AAKxvgACsb8AArHCAAKxwwACscgAArHVAAKx2gACsdwAArHeAAKx4wACseYAArHpAAKx6wACshAAArI0AAKyWwACsn8AArKCAAKyhAACsoYAArKIAAKyigACsowAArKNAAKykAACsp0AArKuAAKysAACsrIAArK0AAKytgACsrgAArK6AAKyvAACsr4AArLPAAKy0gACstUAArLYAAKy2wACst4AArLhAAKy5AACsucAArLpAAKzKAACsyoAArMsAAKzLgACszEAArMyAAKzMwACszQAArM1AAKzNwACszkAArM6AAKzOwACsz0AArM+AAKzfQACs38AArOBAAKzgwACs4YAArOHAAKziAACs4kAArOKAAKzjAACs44AArOPAAKzkAACs5IAArOTAAKz0gACs9QAArPXAAKz2QACs9wAArPdAAKz3gACs98AArPgAAKz4gACs+QAArPlAAKz5gACs+gAArPpAAKz9gACs/cAArP4AAKz+gACtDkAArQ7AAK0PQACtD8AArRCAAK0QwACtEQAArRFAAK0RgACtEgAArRKAAK0SwACtEwAArROAAK0TwACtI4AArSQAAK0kgACtJQAArSXAAK0mAACtJkAArSaAAK0mwACtJ0AArSfAAK0oAACtKEAArSjAAK0pAACtOMAArTlAAK05wACtOkAArTsAAK07QACtO4AArTvAAK08AACtPIAArT0AAK09QACtPYAArT4AAK0+QACtTgAArU6AAK1PAACtT4AArVBAAK1QgACtUMAArVEAAK1RQACtUcAArVJAAK1SgACtUsAArVNAAK1TgACtY0AArWPAAK1kQACtZMAArWWAAK1lwACtZgAArWZAAK1mgACtZwAArWeAAK1nwACtaAAArWiAAK1owACtcgAArXsAAK2EwACtjcAArY6AAK2PAACtj4AArZAAAK2QgACtkQAArZFAAK2SAACtlUAArZkAAK2ZgACtmgAArZqAAK2bAACtm4AArZwAAK2cgACtoEAAraEAAK2hwACtooAAraNAAK2kAACtpMAAraWAAK2mAACttcAArbZAAK22wACtt0AArbgAAK24QACtuIAArbjAAK25AACtuYAArboAAK26QACtuoAArbsAAK27QACtywAArcuAAK3MAACtzIAArc1AAK3NgACtzcAArc4AAK3OQACtzsAArc9AAK3PgACtz8AArdBAAK3QgACt4EAAreDAAK3hQACt4cAAreKAAK3iwACt4wAAreNAAK3jgACt5AAAreSAAK3kwACt5QAAreWAAK3lwACt9YAArfYAAK32gACt9wAArffAAK34AACt+EAArfiAAK34wACt+UAArfnAAK36AACt+kAArfrAAK37AACuCsAArgtAAK4LwACuDEAArg0AAK4NQACuDYAArg3AAK4OAACuDoAArg8AAK4PQACuD4AArhAAAK4QQACuIAAAriCAAK4hAACuIYAAriJAAK4igACuIsAAriMAAK4jQACuI8AAriRAAK4kgACuJMAAriVAAK4lgACuNUAArjXAAK42QACuNsAArjeAAK43wACuOAAArjhAAK44gACuOQAArjmAAK45wACuOgAArjqAAK46wACuTYAArlZAAK5eQACuZkAArmbAAK5nQACuZ8AArmhAAK5pAACuaUAArmmAAK5qQACuaoAArmsAAK5rQACua8AArmyAAK5swACubQAArm3AAK5uAACub0AArnKAAK5zwACudEAArnTAAK52AACudsAArneAAK54AACugUAAropAAK6UAACunQAArp3AAK6eQACunsAArp9AAK6fwACuoEAArqCAAK6hQACupIAArqjAAK6pQACuqcAArqpAAK6qwACuq0AArqvAAK6sQACurMAArrEAAK6xwACusoAArrNAAK60AACutMAArrWAAK62QACutwAArreAAK7HQACux8AArshAAK7IwACuyYAArsnAAK7KAACuykAArsqAAK7LAACuy4AArsvAAK7MAACuzIAArszAAK7cgACu3QAArt2AAK7eAACu3sAArt8AAK7fQACu34AArt/AAK7gQACu4MAAruEAAK7hQACu4cAAruIAAK7xwACu8kAArvMAAK7zgACu9EAArvSAAK70wACu9QAArvVAAK71wACu9kAArvaAAK72wACu90AArveAAK76wACu+wAArvtAAK77wACvC4AArwwAAK8MgACvDQAArw3AAK8OAACvDkAArw6AAK8OwACvD0AArw/AAK8QAACvEEAArxDAAK8RAACvIMAAryFAAK8hwACvIkAAryMAAK8jQACvI4AAryPAAK8kAACvJIAAryUAAK8lQACvJYAAryYAAK8mQACvNgAArzaAAK83AACvN4AArzhAAK84gACvOMAArzkAAK85QACvOcAArzpAAK86gACvOsAArztAAK87gACvS0AAr0vAAK9MQACvTMAAr02AAK9NwACvTgAAr05AAK9OgACvTwAAr0+AAK9PwACvUAAAr1CAAK9QwACvYIAAr2EAAK9hgACvYgAAr2LAAK9jAACvY0AAr2OAAK9jwACvZEAAr2TAAK9lAACvZUAAr2XAAK9mAACvb0AAr3hAAK+CAACviwAAr4vAAK+MQACvjMAAr41AAK+NwACvjkAAr46AAK+PQACvkoAAr5ZAAK+WwACvl0AAr5fAAK+YQACvmMAAr5lAAK+ZwACvnYAAr55AAK+fAACvn8AAr6CAAK+hQACvogAAr6LAAK+jQACvswAAr7OAAK+0AACvtIAAr7VAAK+1gACvtcAAr7YAAK+2QACvtsAAr7dAAK+3gACvt8AAr7hAAK+4gACvyEAAr8jAAK/JQACvycAAr8qAAK/KwACvywAAr8tAAK/LgACvzAAAr8yAAK/MwACvzQAAr82AAK/NwACv3YAAr94AAK/egACv3wAAr9/AAK/gAACv4EAAr+CAAK/gwACv4UAAr+HAAK/iAACv4kAAr+LAAK/jAACv8sAAr/NAAK/0AACv9IAAr/VAAK/1gACv9cAAr/YAAK/2QACv9sAAr/dAAK/3gACv98AAr/hAAK/4gACwCEAAsAjAALAJQACwCcAAsAqAALAKwACwCwAAsAtAALALgACwDAAAsAyAALAMwACwDQAAsA2AALANwACwHYAAsB4AALAegACwHwAAsB/AALAgAACwIEAAsCCAALAgwACwIUAAsCHAALAiAACwIkAAsCLAALAjAACwMsAAsDNAALA0AACwNIAAsDVAALA1gACwNcAAsDYAALA2QACwNsAAsDdAALA3gACwN8AAsDhAALA4gACwS0AAsFQAALBcAACwZAAAsGSAALBlAACwZYAAsGYAALBmwACwZwAAsGdAALBoAACwaEAAsGjAALBpAACwaYAAsGpAALBqgACwasAAsGuAALBrwACwbQAAsHBAALBxgACwcgAAsHKAALBzwACwdIAAsHVAALB1wACwfwAAsIgAALCRwACwmsAAsJuAALCcAACwnIAAsJ0AALCdgACwngAAsJ5AALCfAACwokAAsKaAALCnAACwp4AAsKgAALCogACwqQAAsKmAALCqAACwqoAAsK7AALCvgACwsEAAsLEAALCxwACwsoAAsLNAALC0AACwtMAAsLVAALDFAACwxYAAsMYAALDGgACwx0AAsMeAALDHwACwyAAAsMhAALDIwACwyUAAsMmAALDJwACwykAAsMqAALDaQACw2sAAsNtAALDbwACw3IAAsNzAALDdAACw3UAAsN2AALDeAACw3oAAsN7AALDfAACw34AAsN/AALDvgACw8AAAsPDAALDxQACw8gAAsPJAALDygACw8sAAsPMAALDzgACw9AAAsPRAALD0gACw9QAAsPVAALD4gACw+MAAsPkAALD5gACxCUAAsQnAALEKQACxCsAAsQuAALELwACxDAAAsQxAALEMgACxDQAAsQ2AALENwACxDgAAsQ6AALEOwACxHoAAsR8AALEfgACxIAAAsSDAALEhAACxIUAAsSGAALEhwACxIkAAsSLAALEjAACxI0AAsSPAALEkAACxM8AAsTRAALE0wACxNUAAsTYAALE2QACxNoAAsTbAALE3AACxN4AAsTgAALE4QACxOIAAsTkAALE5QACxSQAAsUmAALFKAACxSoAAsUtAALFLgACxS8AAsUwAALFMQACxTMAAsU1AALFNgACxTcAAsU5AALFOgACxXkAAsV7AALFfQACxX8AAsWCAALFgwACxYQAAsWFAALFhgACxYgAAsWKAALFiwACxYwAAsWOAALFjwACxbQAAsXYAALF/wACxiMAAsYmAALGKAACxioAAsYsAALGLgACxjAAAsYxAALGNAACxkEAAsZQAALGUgACxlQAAsZWAALGWAACxloAAsZcAALGXgACxm0AAsZwAALGcwACxnYAAsZ5AALGfAACxn8AAsaCAALGhAACxsMAAsbFAALGyAACxsoAAsbNAALGzgACxs8AAsbQAALG0QACxtMAAsbVAALG1gACxtcAAsbZAALG2gACxxkAAscbAALHHQACxx8AAsciAALHIwACxyQAAsclAALHJgACxygAAscqAALHKwACxywAAscuAALHLwACx24AAsdwAALHcgACx3QAAsd3AALHeAACx3kAAsd6AALHewACx30AAsd/AALHgAACx4EAAseDAALHhAACx8MAAsfFAALHyAACx8oAAsfNAALHzgACx88AAsfQAALH0QACx9MAAsfVAALH1gACx9cAAsfZAALH2gACyBkAAsgbAALIHQACyB8AAsgiAALIIwACyCQAAsglAALIJgACyCgAAsgqAALIKwACyCwAAsguAALILwACyG4AAshwAALIcgACyHQAAsh3AALIeAACyHkAAsh6AALIewACyH0AAsh/AALIgAACyIEAAsiDAALIhAACyMMAAsjFAALIxwACyMkAAsjMAALIzQACyM4AAsjPAALI0AACyNIAAsjUAALI1QACyNYAAsjYAALI2QACyOIAAsjjAALI5QACySQAAskmAALJKAACySoAAsktAALJLgACyS8AAskwAALJMQACyTMAAsk1AALJNgACyTcAAsk5AALJOgACyXkAAsl7AALJfQACyX8AAsmCAALJgwACyYQAAsmFAALJhgACyYgAAsmKAALJiwACyYwAAsmOAALJjwACyc4AAsnQAALJ0wACydUAAsnYAALJ2QACydoAAsnbAALJ3AACyd4AAsngAALJ4QACyeIAAsnkAALJ5QACye4AAsnxAALJ9AACyfYAAsn7AALKBAACyh0AAsomAALKPwACylYAAspoAALKhQACyogAAsqKAALKjAACyo4AAsqRAALKkwACypgAAsrXAALK2QACytsAAsrdAALK3wACyuAAAsrhAALK4gACyuMAAsrlAALK5wACyugAAsrpAALK6wACyuwAAssrAALLLQACyy8AAssxAALLMwACyzQAAss1AALLNgACyzcAAss5AALLOwACyzwAAss9AALLPwACy0AAAst/AALLgQACy4MAAsuFAALLhwACy4gAAsuJAALLigACy4sAAsuNAALLjwACy5AAAsuRAALLkwACy5QAAsudAALLoAACy6MAAsulAALL6AACzAwAAswwAALMUwACzHoAAsyaAALMwQACzOgAAs0IAALNLAACzVAAAs1SAALNVQACzVcAAs1ZAALNWwACzV4AAs1hAALNYwACzWUAAs1oAALNagACzWwAAs1vAALNcgACzXMAAs14AALNhQACzYgAAs2KAALNjQACzZAAAs2SAALNtwACzdsAAs4CAALOJgACzikAAs4rAALOLQACzi8AAs4xAALOMwACzjQAAs43AALORAACzlcAAs5ZAALOWwACzl0AAs5fAALOYQACzmMAAs5lAALOZwACzmkAAs58AALOfwACzoIAAs6FAALOiAACzosAAs6OAALOkQACzpQAAs6XAALOmQACztgAAs7aAALO3QACzt8AAs7iAALO4wACzuQAAs7lAALO5gACzugAAs7qAALO6wACzuwAAs7uAALO7wACzvgAAs75AALO+wACzzoAAs88AALPPgACz0AAAs9DAALPRAACz0UAAs9GAALPRwACz0kAAs9LAALPTAACz00AAs9PAALPUAACz48AAs+RAALPlAACz5YAAs+ZAALPmgACz5sAAs+cAALPnQACz58AAs+hAALPogACz6MAAs+lAALPpgACz68AAs+wAALPsgACz/EAAs/zAALP9QACz/cAAs/6AALP+wACz/wAAs/9AALP/gAC0AAAAtACAALQAwAC0AQAAtAGAALQBwAC0EYAAtBIAALQSwAC0E0AAtBQAALQUQAC0FIAAtBTAALQVAAC0FYAAtBYAALQWQAC0FoAAtBcAALQXQAC0GYAAtBnAALQaQAC0KgAAtCqAALQrAAC0K4AAtCxAALQsgAC0LMAAtC0AALQtQAC0LcAAtC5AALQugAC0LsAAtC9AALQvgAC0P0AAtD/AALRAgAC0QQAAtEHAALRCAAC0QkAAtEKAALRCwAC0Q0AAtEPAALREAAC0REAAtETAALRFAAC0SEAAtEiAALRIwAC0SUAAtFkAALRZgAC0WgAAtFqAALRbQAC0W4AAtFvAALRcAAC0XEAAtFzAALRdQAC0XYAAtF3AALReQAC0XoAAtG5AALRuwAC0b0AAtG/AALRwgAC0cMAAtHEAALRxQAC0cYAAtHIAALRygAC0csAAtHMAALRzgAC0c8AAtHcAALR5QAC0egAAtHrAALR7QAC0fAAAtH5AALR/AAC0f8AAtICAALSBQAC0gcAAtINAALSHwAC0iwAAtJ3AALSmgAC0roAAtLaAALS3AAC0t4AAtLgAALS4gAC0uUAAtLmAALS5wAC0uoAAtLrAALS7QAC0u4AAtLwAALS8wAC0vQAAtL1AALS+AAC0vkAAtMCAALTDwAC0xQAAtMWAALTGAAC0x0AAtMgAALTIwAC0yUAAtNKAALTbgAC05UAAtO5AALTvAAC074AAtPAAALTwgAC08QAAtPGAALTxwAC08oAAtPXAALT6AAC0+oAAtPsAALT7gAC0/AAAtPyAALT9AAC0/YAAtP4AALUCQAC1AwAAtQPAALUEgAC1BUAAtQYAALUGwAC1B4AAtQhAALUIwAC1GIAAtRkAALUZgAC1GgAAtRrAALUbAAC1G0AAtRuAALUbwAC1HEAAtRzAALUdAAC1HUAAtR3AALUeAAC1LcAAtS5AALUuwAC1L0AAtTAAALUwQAC1MIAAtTDAALUxAAC1MYAAtTIAALUyQAC1MoAAtTMAALUzQAC1QwAAtUOAALVEQAC1RMAAtUWAALVFwAC1RgAAtUZAALVGgAC1RwAAtUeAALVHwAC1SAAAtUiAALVIwAC1TAAAtUxAALVMgAC1TQAAtVzAALVdQAC1XcAAtV5AALVfAAC1X0AAtV+AALVfwAC1YAAAtWCAALVhAAC1YUAAtWGAALViAAC1YkAAtXIAALVygAC1cwAAtXOAALV0QAC1dIAAtXTAALV1AAC1dUAAtXXAALV2QAC1doAAtXbAALV3QAC1d4AAtYdAALWHwAC1iEAAtYjAALWJgAC1icAAtYoAALWKQAC1ioAAtYsAALWLgAC1i8AAtYwAALWMgAC1jMAAtZyAALWdAAC1nYAAtZ4AALWewAC1nwAAtZ9AALWfgAC1n8AAtaBAALWgwAC1oQAAtaFAALWhwAC1ogAAtbHAALWyQAC1ssAAtbNAALW0AAC1tEAAtbSAALW0wAC1tQAAtbWAALW2AAC1tkAAtbaAALW3AAC1t0AAtcCAALXJgAC100AAtdxAALXdAAC13YAAtd4AALXegAC13wAAtd+AALXfwAC14IAAtePAALXngAC16AAAteiAALXpAAC16YAAteoAALXqgAC16wAAte7AALXvgAC18EAAtfEAALXxwAC18oAAtfNAALX0AAC19IAAtgRAALYEwAC2BUAAtgXAALYGgAC2BsAAtgcAALYHQAC2B4AAtggAALYIgAC2CMAAtgkAALYJgAC2CcAAthmAALYaAAC2GoAAthsAALYbwAC2HAAAthxAALYcgAC2HMAAth1AALYdwAC2HgAAth5AALYewAC2HwAAti7AALYvQAC2L8AAtjBAALYxAAC2MUAAtjGAALYxwAC2MgAAtjKAALYzAAC2M0AAtjOAALY0AAC2NEAAtkQAALZEgAC2RQAAtkWAALZGQAC2RoAAtkbAALZHAAC2R0AAtkfAALZIQAC2SIAAtkjAALZJQAC2SYAAtllAALZZwAC2WkAAtlrAALZbgAC2W8AAtlwAALZcQAC2XIAAtl0AALZdgAC2XcAAtl4AALZegAC2XsAAtm6AALZvAAC2b4AAtnAAALZwwAC2cQAAtnFAALZxgAC2ccAAtnJAALZywAC2cwAAtnNAALZzwAC2dAAAtoPAALaEQAC2hMAAtoVAALaGAAC2hkAAtoaAALaGwAC2hwAAtoeAALaIAAC2iEAAtoiAALaJAAC2iUAAtpwAALakwAC2rMAAtrTAALa1QAC2tcAAtrZAALa2wAC2t4AAtrfAALa4AAC2uMAAtrkAALa5gAC2ucAAtrpAALa7AAC2u0AAtruAALa8QAC2vIAAtr3AALbBAAC2wkAAtsLAALbDQAC2xIAAtsVAALbGAAC2xoAAts/AALbYwAC24oAAtuuAALbsQAC27MAAtu1AALbtwAC27kAAtu7AALbvAAC278AAtvMAALb3QAC298AAtvhAALb4wAC2+UAAtvnAALb6QAC2+sAAtvtAALb/gAC3AEAAtwEAALcBwAC3AoAAtwNAALcEAAC3BMAAtwWAALcGAAC3FcAAtxZAALcWwAC3F0AAtxgAALcYQAC3GIAAtxjAALcZAAC3GYAAtxoAALcaQAC3GoAAtxsAALcbQAC3KwAAtyuAALcsAAC3LIAAty1AALctgAC3LcAAty4AALcuQAC3LsAAty9AALcvgAC3L8AAtzBAALcwgAC3QEAAt0DAALdBgAC3QgAAt0LAALdDAAC3Q0AAt0OAALdDwAC3REAAt0TAALdFAAC3RUAAt0XAALdGAAC3SUAAt0mAALdJwAC3SkAAt1oAALdagAC3WwAAt1uAALdcQAC3XIAAt1zAALddAAC3XUAAt13AALdeQAC3XoAAt17AALdfQAC3X4AAt29AALdvwAC3cEAAt3DAALdxgAC3ccAAt3IAALdyQAC3coAAt3MAALdzgAC3c8AAt3QAALd0gAC3dMAAt4SAALeFAAC3hYAAt4YAALeGwAC3hwAAt4dAALeHgAC3h8AAt4hAALeIwAC3iQAAt4lAALeJwAC3igAAt5nAALeaQAC3msAAt5tAALecAAC3nEAAt5yAALecwAC3nQAAt52AALeeAAC3nkAAt56AALefAAC3n0AAt68AALevgAC3sAAAt7CAALexQAC3sYAAt7HAALeyAAC3skAAt7LAALezQAC3s4AAt7PAALe0QAC3tIAAt73AALfGwAC30IAAt9mAALfaQAC32sAAt9tAALfbwAC33EAAt9zAALfdAAC33cAAt+EAALfkwAC35UAAt+XAALfmQAC35sAAt+dAALfnwAC36EAAt+wAALfswAC37YAAt+5AALfvAAC378AAt/CAALfxQAC38cAAuAGAALgCAAC4AoAAuAMAALgDwAC4BAAAuARAALgEgAC4BMAAuAVAALgFwAC4BgAAuAZAALgGwAC4BwAAuBbAALgXQAC4F8AAuBhAALgZAAC4GUAAuBmAALgZwAC4GgAAuBqAALgbAAC4G0AAuBuAALgcAAC4HEAAuCwAALgsgAC4LQAAuC2AALguQAC4LoAAuC7AALgvAAC4L0AAuC/AALgwQAC4MIAAuDDAALgxQAC4MYAAuEFAALhBwAC4QoAAuEMAALhDwAC4RAAAuERAALhEgAC4RMAAuEVAALhFwAC4RgAAuEZAALhGwAC4RwAAuFbAALhXQAC4V8AAuFhAALhZAAC4WUAAuFmAALhZwAC4WgAAuFqAALhbAAC4W0AAuFuAALhcAAC4XEAAuGwAALhsgAC4bQAAuG2AALhuQAC4boAAuG7AALhvAAC4b0AAuG/AALhwQAC4cIAAuHDAALhxQAC4cYAAuIFAALiBwAC4gkAAuILAALiDgAC4g8AAuIQAALiEQAC4hIAAuIUAALiFgAC4hcAAuIYAALiGgAC4hsAAuJmAALiiQAC4qkAAuLJAALiywAC4s0AAuLPAALi0QAC4tQAAuLVAALi1gAC4tkAAuLaAALi3AAC4t0AAuLfAALi4QAC4uIAAuLjAALi5gAC4ucAAuLwAALi/QAC4wIAAuMEAALjBgAC4wsAAuMOAALjEQAC4xMAAuM4AALjXAAC44MAAuOnAALjqgAC46wAAuOuAALjsAAC47IAAuO0AALjtQAC47gAAuPFAALj1gAC49gAAuPaAALj3AAC494AAuPgAALj4gAC4+QAAuPmAALj9wAC4/oAAuP9AALkAAAC5AMAAuQGAALkCQAC5AwAAuQPAALkEQAC5FAAAuRSAALkVAAC5FYAAuRZAALkWgAC5FsAAuRcAALkXQAC5F8AAuRhAALkYgAC5GMAAuRlAALkZgAC5KUAAuSnAALkqQAC5KsAAuSuAALkrwAC5LAAAuSxAALksgAC5LQAAuS2AALktwAC5LgAAuS6AALkuwAC5PoAAuT8AALk/wAC5QEAAuUEAALlBQAC5QYAAuUHAALlCAAC5QoAAuUMAALlDQAC5Q4AAuUQAALlEQAC5R4AAuUfAALlIAAC5SIAAuVhAALlYwAC5WUAAuVnAALlagAC5WsAAuVsAALlbQAC5W4AAuVwAALlcgAC5XMAAuV0AALldgAC5XcAAuW2AALluAAC5boAAuW8AALlvwAC5cAAAuXBAALlwgAC5cMAAuXFAALlxwAC5cgAAuXJAALlywAC5cwAAuYLAALmDQAC5g8AAuYRAALmFAAC5hUAAuYWAALmFwAC5hgAAuYaAALmHAAC5h0AAuYeAALmIAAC5iEAAuZgAALmYgAC5mQAAuZmAALmaQAC5moAAuZrAALmbAAC5m0AAuZvAALmcQAC5nIAAuZzAALmdQAC5nYAAua1AALmtwAC5rkAAua7AALmvgAC5r8AAubAAALmwQAC5sIAAubEAALmxgAC5scAAubIAALmygAC5ssAAubwAALnFAAC5zsAAudfAALnYgAC52QAAudmAALnaAAC52oAAudsAALnbQAC53AAAud9AALnjAAC544AAueQAALnkgAC55QAAueWAALnmAAC55oAAuepAALnrAAC568AAueyAALntQAC57gAAue7AALnvgAC58AAAuf/AALoAQAC6AMAAugFAALoCAAC6AkAAugKAALoCwAC6AwAAugOAALoEAAC6BEAAugSAALoFAAC6BUAAuhUAALoVgAC6FgAAuhaAALoXQAC6F4AAuhfAALoYAAC6GEAAuhjAALoZQAC6GYAAuhnAALoaQAC6GoAAuipAALoqwAC6K0AAuivAALosgAC6LMAAui0AALotQAC6LYAAui4AALougAC6LsAAui8AALovgAC6L8AAuj+AALpAAAC6QIAAukEAALpBwAC6QgAAukJAALpCgAC6QsAAukNAALpDwAC6RAAAukRAALpEwAC6RQAAulTAALpVQAC6VcAAulZAALpXAAC6V0AAuleAALpXwAC6WAAAuliAALpZAAC6WUAAulmAALpaAAC6WkAAumoAALpqgAC6awAAumuAALpsQAC6bIAAumzAALptAAC6bUAAum3AALpuQAC6boAAum7AALpvQAC6b4AAun9AALp/wAC6gEAAuoDAALqBgAC6gcAAuoIAALqCQAC6goAAuoMAALqDgAC6g8AAuoQAALqEgAC6hMAAupeAALqgQAC6qEAAurBAALqwwAC6sUAAurHAALqyQAC6swAAurNAALqzgAC6tEAAurSAALq1AAC6tUAAurXAALq2gAC6tsAAurcAALq3wAC6uAAAurlAALq8gAC6vcAAur5AALq+wAC6wAAAusDAALrBgAC6wgAAustAALrUQAC63gAAuucAALrnwAC66EAAuujAALrpQAC66cAAuupAALrqgAC660AAuu6AALrywAC680AAuvPAALr0QAC69MAAuvVAALr1wAC69kAAuvbAALr7AAC6+8AAuvyAALr9QAC6/gAAuv7AALr/gAC7AEAAuwEAALsBgAC7EUAAuxHAALsSQAC7EsAAuxOAALsTwAC7FAAAuxRAALsUgAC7FQAAuxWAALsVwAC7FgAAuxaAALsWwAC7JoAAuycAALsngAC7KAAAuyjAALspAAC7KUAAuymAALspwAC7KkAAuyrAALsrAAC7K0AAuyvAALssAAC7O8AAuzxAALs9AAC7PYAAuz5AALs+gAC7PsAAuz8AALs/QAC7P8AAu0BAALtAgAC7QMAAu0FAALtBgAC7RMAAu0UAALtFQAC7RcAAu1WAALtWAAC7VoAAu1cAALtXwAC7WAAAu1hAALtYgAC7WMAAu1lAALtZwAC7WgAAu1pAALtawAC7WwAAu2rAALtrQAC7a8AAu2xAALttAAC7bUAAu22AALttwAC7bgAAu26AALtvAAC7b0AAu2+AALtwAAC7cEAAu4AAALuAgAC7gQAAu4GAALuCQAC7goAAu4LAALuDAAC7g0AAu4PAALuEQAC7hIAAu4TAALuFQAC7hYAAu5VAALuVwAC7lkAAu5bAALuXgAC7l8AAu5gAALuYQAC7mIAAu5kAALuZgAC7mcAAu5oAALuagAC7msAAu6qAALurAAC7q4AAu6wAALuswAC7rQAAu61AALutgAC7rcAAu65AALuuwAC7rwAAu69AALuvwAC7sAAAu7lAALvCQAC7zAAAu9UAALvVwAC71kAAu9bAALvXQAC718AAu9hAALvYgAC72UAAu9yAALvgQAC74MAAu+FAALvhwAC74kAAu+LAALvjQAC748AAu+eAALvoQAC76QAAu+nAALvqgAC760AAu+wAALvswAC77UAAu/0AALv9gAC7/gAAu/6AALv/QAC7/4AAu//AALwAAAC8AEAAvADAALwBQAC8AYAAvAHAALwCQAC8AoAAvBJAALwSwAC8E0AAvBPAALwUgAC8FMAAvBUAALwVQAC8FYAAvBYAALwWgAC8FsAAvBcAALwXgAC8F8AAvCeAALwoAAC8KIAAvCkAALwpwAC8KgAAvCpAALwqgAC8KsAAvCtAALwrwAC8LAAAvCxAALwswAC8LQAAvDzAALw9QAC8PgAAvD6AALw/QAC8P4AAvD/AALxAAAC8QEAAvEDAALxBQAC8QYAAvEHAALxCQAC8QoAAvFJAALxSwAC8U0AAvFPAALxUgAC8VMAAvFUAALxVQAC8VYAAvFYAALxWgAC8VsAAvFcAALxXgAC8V8AAvGeAALxoAAC8aIAAvGkAALxpwAC8agAAvGpAALxqgAC8asAAvGtAALxrwAC8bAAAvGxAALxswAC8bQAAvHzAALx9QAC8fcAAvH5AALx/AAC8f0AAvH+AALx/wAC8gAAAvICAALyBAAC8gUAAvIGAALyCAAC8gkAAvISAALyEwAC8hUAAvJYAALyfAAC8qAAAvLDAALy6gAC8woAAvMxAALzWAAC83gAAvOcAALzwAAC88IAAvPFAALzxwAC88kAAvPLAALzzgAC89EAAvPTAALz1QAC89gAAvPaAALz3AAC898AAvPiAALz4wAC8+gAAvP1AALz+AAC8/oAAvP9AAL0AAAC9AIAAvQnAAL0SwAC9HIAAvSWAAL0mQAC9JsAAvSdAAL0nwAC9KEAAvSjAAL0pAAC9KcAAvS0AAL0xwAC9MkAAvTLAAL0zQAC9M8AAvTRAAL00wAC9NUAAvTXAAL02QAC9OwAAvTvAAL08gAC9PUAAvT4AAL0+wAC9P4AAvUBAAL1BAAC9QcAAvUJAAL1SAAC9UoAAvVNAAL1TwAC9VIAAvVTAAL1VAAC9VUAAvVWAAL1WAAC9VoAAvVbAAL1XAAC9V4AAvVfAAL1aAAC9WkAAvVrAAL1qgAC9awAAvWuAAL1sAAC9bMAAvW0AAL1tQAC9bYAAvW3AAL1uQAC9bsAAvW8AAL1vQAC9b8AAvXAAAL1/wAC9gEAAvYEAAL2BgAC9gkAAvYKAAL2CwAC9gwAAvYNAAL2DwAC9hEAAvYSAAL2EwAC9hUAAvYWAAL2HwAC9iAAAvYiAAL2YQAC9mMAAvZlAAL2ZwAC9moAAvZrAAL2bAAC9m0AAvZuAAL2cAAC9nIAAvZzAAL2dAAC9nYAAvZ3AAL2tgAC9rgAAva7AAL2vQAC9sAAAvbBAAL2wgAC9sMAAvbEAAL2xgAC9sgAAvbJAAL2ygAC9swAAvbNAAL21gAC9tcAAvbZAAL3GAAC9xoAAvccAAL3HgAC9yEAAvciAAL3IwAC9yQAAvclAAL3JwAC9ykAAvcqAAL3KwAC9y0AAvcuAAL3bQAC928AAvdyAAL3dAAC93cAAvd4AAL3eQAC93oAAvd7AAL3fQAC938AAveAAAL3gQAC94MAAveEAAL3kQAC95IAAveTAAL3lQAC99QAAvfWAAL32AAC99oAAvfdAAL33gAC998AAvfgAAL34QAC9+MAAvflAAL35gAC9+cAAvfpAAL36gAC+CkAAvgrAAL4LgAC+DAAAvgzAAL4NAAC+DUAAvg2AAL4NwAC+DkAAvg7AAL4PAAC+D0AAvg/AAL4QAAC+E8AAvhcAAL4YQAC+GQAAvhnAAL4bAAC+G8AAvhyAAL4dAAC+HkAAvjEAAL45wAC+QcAAvknAAL5KQAC+SsAAvktAAL5LwAC+TIAAvkzAAL5NAAC+TcAAvk4AAL5OgAC+TsAAvk9AAL5QAAC+UEAAvlCAAL5RQAC+UYAAvlLAAL5WAAC+V0AAvlfAAL5YQAC+WYAAvlpAAL5bAAC+W4AAvmTAAL5twAC+d4AAvoCAAL6BQAC+gcAAvoJAAL6CwAC+g0AAvoPAAL6EAAC+hMAAvogAAL6MQAC+jMAAvo1AAL6NwAC+jkAAvo7AAL6PQAC+j8AAvpBAAL6UgAC+lUAAvpYAAL6WwAC+l4AAvphAAL6ZAAC+mcAAvpqAAL6bAAC+qsAAvqtAAL6rwAC+rEAAvq0AAL6tQAC+rYAAvq3AAL6uAAC+roAAvq8AAL6vQAC+r4AAvrAAAL6wQAC+wAAAvsCAAL7BAAC+wYAAvsJAAL7CgAC+wsAAvsMAAL7DQAC+w8AAvsRAAL7EgAC+xMAAvsVAAL7FgAC+1UAAvtXAAL7WgAC+1wAAvtfAAL7YAAC+2EAAvtiAAL7YwAC+2UAAvtnAAL7aAAC+2kAAvtrAAL7bAAC+3kAAvt6AAL7ewAC+30AAvu8AAL7vgAC+8AAAvvCAAL7xQAC+8YAAvvHAAL7yAAC+8kAAvvLAAL7zQAC+84AAvvPAAL70QAC+9IAAvwRAAL8EwAC/BUAAvwXAAL8GgAC/BsAAvwcAAL8HQAC/B4AAvwgAAL8IgAC/CMAAvwkAAL8JgAC/CcAAvxmAAL8aAAC/GoAAvxsAAL8bwAC/HAAAvxxAAL8cgAC/HMAAvx1AAL8dwAC/HgAAvx5AAL8ewAC/HwAAvy7AAL8vQAC/L8AAvzBAAL8xAAC/MUAAvzGAAL8xwAC/MgAAvzKAAL8zAAC/M0AAvzOAAL80AAC/NEAAv0QAAL9EgAC/RQAAv0WAAL9GQAC/Ro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 + + + + + lastPlayDate + + + + lightAccentHex + + + + originalFileName + + + \ No newline at end of file diff --git a/Shared/Extensions/Notification+BookPlayerKit.swift b/Shared/Extensions/Notification+BookPlayerKit.swift index 6f86bedd6..99cdf7c81 100644 --- a/Shared/Extensions/Notification+BookPlayerKit.swift +++ b/Shared/Extensions/Notification+BookPlayerKit.swift @@ -22,5 +22,5 @@ extension Notification.Name { public static let uploadProgressUpdated = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).upload.progress.update") public static let uploadCompleted = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).upload.completed") public static let listeningProgressChanged = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).listening.progress.changed") - + public static let newTaskInQueue = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).concurrent.task.queue") } diff --git a/BookPlayer/MediaServerIntegration/Connection/IntegrationConnectionPayload.swift b/Shared/Integrations/IntegrationConnectionPayload.swift similarity index 98% rename from BookPlayer/MediaServerIntegration/Connection/IntegrationConnectionPayload.swift rename to Shared/Integrations/IntegrationConnectionPayload.swift index 79146fd4e..6d826007d 100644 --- a/BookPlayer/MediaServerIntegration/Connection/IntegrationConnectionPayload.swift +++ b/Shared/Integrations/IntegrationConnectionPayload.swift @@ -6,7 +6,6 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // -import BookPlayerKit import Foundation /// A saved media-server connection, as persisted in the Keychain. diff --git a/BookPlayer/MediaServerIntegration/Connection/IntegrationConnectionStore.swift b/Shared/Integrations/IntegrationConnectionStore.swift similarity index 99% rename from BookPlayer/MediaServerIntegration/Connection/IntegrationConnectionStore.swift rename to Shared/Integrations/IntegrationConnectionStore.swift index fca463521..6cb3f3001 100644 --- a/BookPlayer/MediaServerIntegration/Connection/IntegrationConnectionStore.swift +++ b/Shared/Integrations/IntegrationConnectionStore.swift @@ -6,7 +6,6 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // -import BookPlayerKit import Foundation /// Keychain-backed storage for a single integration's saved connections. diff --git a/BookPlayer/MediaServerIntegration/IntegrationDetailsViewModelProtocol.swift b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift similarity index 67% rename from BookPlayer/MediaServerIntegration/IntegrationDetailsViewModelProtocol.swift rename to Shared/Integrations/IntegrationDetailsViewModelProtocol.swift index 88cfdf64a..3c13bc282 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationDetailsViewModelProtocol.swift +++ b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift @@ -8,7 +8,7 @@ import Foundation -protocol IntegrationDetailsDataProtocol { +public protocol IntegrationDetailsDataProtocol: Hashable, Identifiable { var artist: String? { get } var filePath: String? { get } var overview: String? { get } @@ -27,14 +27,20 @@ extension IntegrationDetailsDataProtocol { var seriesEntries: [IntegrationSeriesEntry] { [] } } -struct IntegrationSeriesEntry: Identifiable, Hashable { - let id: String - let name: String +public struct IntegrationSeriesEntry: Identifiable, Hashable { + public let id: String + public let name: String let sequence: String? + + public init(id: String, name: String, sequence: String?) { + self.id = id + self.name = name + self.sequence = sequence + } } @MainActor -protocol IntegrationDetailsViewModelProtocol: ObservableObject { +public protocol IntegrationDetailsViewModelProtocol: ObservableObject { associatedtype Item: IntegrationLibraryItemProtocol associatedtype Details: IntegrationDetailsDataProtocol @@ -45,4 +51,6 @@ protocol IntegrationDetailsViewModelProtocol: ObservableObject { func fetchData() func cancelFetchData() func beginDownloadAudiobook(_ item: Item) throws + func virtualImportAudiobook(_ item: Item) + func handleImportAudiobook(_ item: Item) throws } diff --git a/BookPlayer/MediaServerIntegration/IntegrationError.swift b/Shared/Integrations/IntegrationError.swift similarity index 96% rename from BookPlayer/MediaServerIntegration/IntegrationError.swift rename to Shared/Integrations/IntegrationError.swift index 1d9ff8f13..cb7993c19 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationError.swift +++ b/Shared/Integrations/IntegrationError.swift @@ -10,7 +10,7 @@ import Foundation /// `Equatable` is synthesized (every associated value already is) so tests can assert on a specific /// case instead of pattern-matching in every expectation. -enum IntegrationError: Error, LocalizedError, Equatable { +public enum IntegrationError: Error, LocalizedError, Equatable { case urlMalformed(_ url: URL?) case urlFromComponents(_ components: URLComponents) case noClient(_ integrationName: String) @@ -53,7 +53,7 @@ enum IntegrationError: Error, LocalizedError, Equatable { /// body is a short human-readable string, otherwise the bare status code. AudiobookShelf's auth /// endpoints answer in plain text, and those messages are the difference between "unexpected /// response 400" and "Invalid redirect_uri". - static func from(status: Int, body: Data) -> IntegrationError { + public static func from(status: Int, body: Data) -> IntegrationError { guard let text = String(data: body, encoding: .utf8)? .trimmingCharacters(in: .whitespacesAndNewlines), @@ -70,12 +70,12 @@ enum IntegrationError: Error, LocalizedError, Equatable { /// True when the error is a recoverable re-auth case — the UI should offer a Sign-In-only /// recovery path that preserves the existing connection instead of treating it as a generic /// load failure with the full Retry / Sign-In / Cancel set. - var isSessionExpired: Bool { + public var isSessionExpired: Bool { if case .sessionExpired = self { return true } return false } - var errorDescription: String? { + public var errorDescription: String? { switch self { case .urlMalformed(let url): String(format: "integration_internal_error_invalid_url".localized, String(reflecting: url)) diff --git a/BookPlayer/MediaServerIntegration/Auth/IntegrationHTTPClient.swift b/Shared/Integrations/IntegrationHTTPClient.swift similarity index 90% rename from BookPlayer/MediaServerIntegration/Auth/IntegrationHTTPClient.swift rename to Shared/Integrations/IntegrationHTTPClient.swift index 067d694b1..931c49ae0 100644 --- a/BookPlayer/MediaServerIntegration/Auth/IntegrationHTTPClient.swift +++ b/Shared/Integrations/IntegrationHTTPClient.swift @@ -10,7 +10,7 @@ import Foundation /// The HTTP surface the integration auth flows need, behind a protocol so those flows can be driven /// in tests without a network or a server. -protocol IntegrationHTTPClient: Sendable { +public protocol IntegrationHTTPClient: Sendable { func data(for request: URLRequest) async throws -> (Data, HTTPURLResponse) /// Issues `request` **without following redirects** and returns the URL it was redirected to. @@ -25,10 +25,10 @@ protocol IntegrationHTTPClient: Sendable { /// `URLSession`-backed client. Deliberately one long-lived session, so cookies set by one call are /// present on the next — the OIDC exchange depends on exactly that. -final class IntegrationURLSessionClient: IntegrationHTTPClient { +public final class IntegrationURLSessionClient: IntegrationHTTPClient { private let session: URLSession - init(timeout: TimeInterval = 15) { + public init(timeout: TimeInterval = 15) { let configuration = URLSessionConfiguration.default configuration.timeoutIntervalForRequest = timeout // Spelled out rather than left to the defaults, because the OIDC flow's correctness rests on it. @@ -37,7 +37,7 @@ final class IntegrationURLSessionClient: IntegrationHTTPClient { self.session = URLSession(configuration: configuration) } - func data(for request: URLRequest) async throws -> (Data, HTTPURLResponse) { + public func data(for request: URLRequest) async throws -> (Data, HTTPURLResponse) { let (data, response) = try await session.data(for: request) guard let http = response as? HTTPURLResponse else { throw IntegrationError.unexpectedResponse(code: nil) @@ -45,7 +45,7 @@ final class IntegrationURLSessionClient: IntegrationHTTPClient { return (data, http) } - func redirectLocation(for request: URLRequest) async throws -> URL { + public func redirectLocation(for request: URLRequest) async throws -> URL { let (data, response) = try await session.data(for: request, delegate: RedirectBlocker()) guard let http = response as? HTTPURLResponse else { throw IntegrationError.unexpectedResponse(code: nil) diff --git a/BookPlayer/MediaServerIntegration/IntegrationLibraryItemProtocol.swift b/Shared/Integrations/IntegrationLibraryItemProtocol.swift similarity index 82% rename from BookPlayer/MediaServerIntegration/IntegrationLibraryItemProtocol.swift rename to Shared/Integrations/IntegrationLibraryItemProtocol.swift index 11065f95a..83d29131d 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationLibraryItemProtocol.swift +++ b/Shared/Integrations/IntegrationLibraryItemProtocol.swift @@ -8,7 +8,7 @@ import Foundation -protocol IntegrationLibraryItemProtocol: Identifiable, Hashable { +public protocol IntegrationLibraryItemProtocol: Identifiable, Hashable { var id: String { get } var displayName: String { get } var isDownloadable: Bool { get } diff --git a/BookPlayer/MediaServerIntegration/Auth/PKCE.swift b/Shared/Integrations/PKCE.swift similarity index 99% rename from BookPlayer/MediaServerIntegration/Auth/PKCE.swift rename to Shared/Integrations/PKCE.swift index d5da475a0..df164f0b0 100644 --- a/BookPlayer/MediaServerIntegration/Auth/PKCE.swift +++ b/Shared/Integrations/PKCE.swift @@ -6,7 +6,6 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // -import BookPlayerKit import CryptoKit import Foundation diff --git a/BookPlayer/MediaServerIntegration/Auth/WebAuthenticating.swift b/Shared/Integrations/WebAuthenticating.swift similarity index 90% rename from BookPlayer/MediaServerIntegration/Auth/WebAuthenticating.swift rename to Shared/Integrations/WebAuthenticating.swift index 0381e731b..bdb39f943 100644 --- a/BookPlayer/MediaServerIntegration/Auth/WebAuthenticating.swift +++ b/Shared/Integrations/WebAuthenticating.swift @@ -6,8 +6,10 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // +// The browser-based SSO handshake is iOS-only: ASWebAuthenticationSession presentation +// and UIKit anchors don't exist on watchOS, and the watch never signs in by itself. +#if !os(watchOS) import AuthenticationServices -import BookPlayerKit import Foundation import UIKit @@ -18,7 +20,7 @@ import UIKit /// escape hatch. Conformers are `@MainActor` classes, which are implicitly `Sendable`, so this costs /// them nothing — and it makes the isolation guarantee compiler-enforced rather than a comment. @MainActor -protocol WebAuthenticating: Sendable { +public protocol WebAuthenticating: Sendable { /// - Returns: the callback URL, e.g. `audiobookshelf://oauth?code=…&state=…`. /// - Throws: `CancellationError` when the user dismisses the sheet, so callers can stay silent on a /// deliberate cancel while still surfacing genuine failures. @@ -34,7 +36,7 @@ protocol WebAuthenticating: Sendable { /// Concentrating the session lifetime here is deliberate: getting it wrong produces a hard crash or /// a silent hang, and doing it once means every flow inherits the fix. @MainActor -final class WebAuthenticationSession: NSObject, WebAuthenticating, BPLogger { +public final class WebAuthenticationSession: NSObject, WebAuthenticating, BPLogger { /// Holds the in-flight handshake. Doubles as the strong reference the system session needs (it /// tears its sheet down if released while suspended) and as the single-flight guard. private var pending: WebAuthHandshake? @@ -47,11 +49,11 @@ final class WebAuthenticationSession: NSObject, WebAuthenticating, BPLogger { /// `nonisolated` so the owning services — which are built as `@Entry` environment placeholders /// outside any actor — can construct one as a default argument. Nothing isolated is touched here. - nonisolated override init() { + public nonisolated override init() { super.init() } - func authenticate( + public func authenticate( url: URL, callbackScheme: String, prefersEphemeralSession: Bool @@ -130,7 +132,15 @@ final class WebAuthenticationSession: NSObject, WebAuthenticating, BPLogger { /// The only window we'll present from: one belonging to a foreground-active scene, which is what /// `ASWebAuthenticationSession` documents as the requirement for a valid anchor. private static func foregroundWindow() -> UIWindow? { - let scenes = UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene } + // `UIApplication.shared` is statically unavailable here: BookPlayerKit compiles + // extension-safe (it links into the widgets/share/intents extensions). This flow only ever + // runs in the app process — SSO is user-driven UI — so reach the shared application + // dynamically; in an extension the lookup simply returns nil and the caller fails the + // handshake instead of crashing. + guard let app = UIApplication.value(forKeyPath: "sharedApplication") as? UIApplication else { + return nil + } + let scenes = app.connectedScenes.compactMap { $0 as? UIWindowScene } guard let scene = scenes.first(where: { $0.activationState == .foregroundActive }) else { return nil } @@ -139,7 +149,7 @@ final class WebAuthenticationSession: NSObject, WebAuthenticating, BPLogger { } extension WebAuthenticationSession: ASWebAuthenticationPresentationContextProviding { - func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor { + public func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor { // `anchor` is validated before the session starts, so the fallback is unreachable in practice — // it exists only because the protocol requires a non-optional return. anchor ?? ASPresentationAnchor() @@ -235,3 +245,5 @@ final class WebAuthHandshake: @unchecked Sendable { Task { @MainActor in session.cancel() } } } + +#endif diff --git a/Shared/Jellyfin/JellyfinAudiobookDetailsData.swift b/Shared/Jellyfin/JellyfinAudiobookDetailsData.swift new file mode 100644 index 000000000..3dbf855d8 --- /dev/null +++ b/Shared/Jellyfin/JellyfinAudiobookDetailsData.swift @@ -0,0 +1,73 @@ +// +// JellyfinDetailsData.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 23/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +public struct JellyfinAudiobookDetailsData: IntegrationDetailsDataProtocol { + public let id: String = UUID().uuidString + public let artist: String? + public let filePath: String? + public let fileSize: Int? + public let overview: String? + public let runtimeInSeconds: TimeInterval? + public let genres: [String]? + public let tags: [String]? + public let fileExtension: String? + + public let narrator: String? + public var seriesEntries: [IntegrationSeriesEntry] = [] + + public var fileSizeString: String { + if let fileSize { + ByteCountFormatter.string( + fromByteCount: Int64(fileSize), + countStyle: ByteCountFormatter.CountStyle.file + ) + } else { + "file_size_unknown".localized + } + } + + public var runtimeString: String { + if let runtimeInSeconds { + return TimeParser.formatTotalDuration(runtimeInSeconds) + } else { + return "runtime_unknown".localized + } + } + + public init( + artist: String? = nil, + filePath: String? = nil, + fileSize: Int? = nil, + fileExtension: String? = nil, + overview: String? = nil, + runtimeInSeconds: TimeInterval? = nil, + genres: [String]? = nil, + tags: [String]? = nil + ) { + self.artist = artist + self.filePath = filePath + self.fileSize = fileSize + self.overview = overview + self.runtimeInSeconds = runtimeInSeconds + self.genres = genres + self.tags = tags + self.narrator = nil + self.seriesEntries = [] + self.fileExtension = fileExtension + } +} + +public enum JellyfinLayout { + public enum Options: String { + case grid, list + } + + public enum SortBy: String { + case recent, name, smart + } +} diff --git a/Shared/Jellyfin/JellyfinLibraryItem.swift b/Shared/Jellyfin/JellyfinLibraryItem.swift new file mode 100644 index 000000000..843b8e46c --- /dev/null +++ b/Shared/Jellyfin/JellyfinLibraryItem.swift @@ -0,0 +1,141 @@ +// +// JellyfinLibraryItem.swift +// BookPlayer +// +// Created by Lysann Tranvouez on 2024-10-26. +// Copyright © 2024 BookPlayer LLC. All rights reserved. +// + +import Foundation +import JellyfinAPI + +public struct JellyfinLibraryItem: IntegrationLibraryItemProtocol { + public static func == (lhs: JellyfinLibraryItem, rhs: JellyfinLibraryItem) -> Bool { + return lhs.id == rhs.id + } + + public enum Kind { + case userView + case folder + case audiobook + case author + case narrator + } + + public let id: String + public let name: String + public let kind: Kind + + public let durationSeconds: Int64? + public let currentSeconds: Int64? + public let isFinished: Bool? + public let lastPlayedDate: Date? + public let blurHash: String? + public let imageAspectRatio: Double? + public let details: JellyfinAudiobookDetailsData? + + public var isDownloadable: Bool { + kind == .audiobook + } + + public var isNavigable: Bool { + !isDownloadable + } + + public var displayName: String { name } + + public var placeholderImageName: String { + switch kind { + case .audiobook: "waveform" + case .userView, .folder: "folder" + case .author: "person" + case .narrator: "mic" + } + } +} + +extension JellyfinLibraryItem { + public init(id: String, name: String, kind: Kind) { + self.init( + id: id, + name: name, + kind: kind, + durationSeconds: nil, + currentSeconds: nil, + isFinished: false, + lastPlayedDate: nil, + blurHash: nil, + imageAspectRatio: nil, + details: nil + ) + } +} + +extension JellyfinLibraryItem { + public init?(apiItem: BaseItemDto) { + let kind: JellyfinLibraryItem.Kind? = switch apiItem.type { + case .userView, .collectionFolder: .userView + case .folder: .folder + case .audioBook: .audiobook + default: nil + } + + guard let id = apiItem.id, let kind else { + return nil + } + let name = apiItem.name ?? id + let blurHash = apiItem.imageBlurHashes?.primary?.first?.value + + let artist = apiItem.albumArtist ?? apiItem.artists?.first + let filePath = apiItem.mediaSources?.first?.path ?? apiItem.path + let runtimeInSeconds = (apiItem.runTimeTicks != nil) ? TimeInterval(apiItem.runTimeTicks!) / 10000000.0 : nil + let fileExtension = apiItem.mediaSources?.first?.container?.components(separatedBy: ",").first + ?? apiItem.mediaSources?.first?.container + ?? (filePath as NSString?)?.pathExtension + + var myDetails: JellyfinAudiobookDetailsData? = nil + if artist != nil || filePath != nil || runtimeInSeconds != nil || fileExtension != nil { + myDetails = JellyfinAudiobookDetailsData( + artist: artist, + filePath: filePath, + fileSize: apiItem.mediaSources?.first?.size, + fileExtension: fileExtension, + overview: apiItem.overview, + runtimeInSeconds: runtimeInSeconds, + genres: apiItem.genres, + tags: apiItem.tags + ) + } + + self.init( + id: id, + name: name, + kind: kind, + durationSeconds: Int64((apiItem.runTimeTicks ?? 0) / 10000000), + currentSeconds: Int64((apiItem.userData?.playbackPositionTicks ?? 0) / 10000000), + isFinished: apiItem.userData?.isPlayed, + lastPlayedDate: apiItem.userData?.lastPlayedDate, + blurHash: blurHash, + imageAspectRatio: apiItem.primaryImageAspectRatio, + details: myDetails + ) + } + + /// Create an author item from an AlbumArtists API response + init?(authorApiItem: BaseItemDto) { + guard let id = authorApiItem.id else { return nil } + let name = authorApiItem.name ?? id + let blurHash = authorApiItem.imageBlurHashes?.primary?.first?.value + self.init(id: id, name: name, kind: .author, durationSeconds: Int64((authorApiItem.runTimeTicks ?? 0) / 10000000), currentSeconds: Int64((authorApiItem.userData?.playbackPositionTicks ?? 0) / 10000000), isFinished: authorApiItem.userData?.isPlayed, + lastPlayedDate: authorApiItem.userData?.lastPlayedDate, blurHash: blurHash, imageAspectRatio: authorApiItem.primaryImageAspectRatio, details: nil) + } + + /// Create a narrator item from a Persons API response + init?(narratorApiItem: BaseItemDto) { + guard let id = narratorApiItem.id else { return nil } + let name = narratorApiItem.name ?? id + let blurHash = narratorApiItem.imageBlurHashes?.primary?.first?.value + self.init(id: id, name: name, kind: .narrator, durationSeconds: Int64((narratorApiItem.runTimeTicks ?? 0) / 10000000), currentSeconds: Int64((narratorApiItem.userData?.playbackPositionTicks ?? 0) / 10000000), isFinished: narratorApiItem.userData?.isPlayed, + lastPlayedDate: narratorApiItem.userData?.lastPlayedDate, blurHash: blurHash, imageAspectRatio: narratorApiItem.primaryImageAspectRatio, details: nil) + } +} diff --git a/BookPlayer/Jellyfin/Network/JellyfinConnectionData.swift b/Shared/Jellyfin/Network/JellyfinConnectionData.swift similarity index 65% rename from BookPlayer/Jellyfin/Network/JellyfinConnectionData.swift rename to Shared/Jellyfin/Network/JellyfinConnectionData.swift index 64611c48a..de74b3991 100644 --- a/BookPlayer/Jellyfin/Network/JellyfinConnectionData.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionData.swift @@ -8,22 +8,24 @@ import Foundation -struct JellyfinConnectionData: Codable, Identifiable { - let id: String - let url: URL - let serverName: String - let userID: String - let userName: String - let accessToken: String - var selectedLibraryId: String? - var customHeaders: [String: String] = [:] +public struct JellyfinConnectionData: Codable, Identifiable { + public let id: String + public let serverId: String? + public let url: URL + public let serverName: String + public let userID: String + public let userName: String + public let accessToken: String + public var selectedLibraryId: String? + public var customHeaders: [String: String] = [:] enum CodingKeys: String, CodingKey { - case id, url, serverName, userID, userName, accessToken, selectedLibraryId, customHeaders + case id, serverId, url, serverName, userID, userName, accessToken, selectedLibraryId, customHeaders } init( id: String = UUID().uuidString, + serverId: String? = nil, url: URL, serverName: String, userID: String, @@ -33,6 +35,7 @@ struct JellyfinConnectionData: Codable, Identifiable { customHeaders: [String: String] = [:] ) { self.id = id + self.serverId = serverId self.url = url self.serverName = serverName self.userID = userID @@ -42,9 +45,10 @@ struct JellyfinConnectionData: Codable, Identifiable { self.customHeaders = customHeaders } - init(from decoder: Decoder) throws { + public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.id = (try? container.decode(String.self, forKey: .id)) ?? UUID().uuidString + self.serverId = try? container.decodeIfPresent(String.self, forKey: .serverId) self.url = try container.decode(URL.self, forKey: .url) self.serverName = try container.decode(String.self, forKey: .serverName) self.userID = try container.decode(String.self, forKey: .userID) @@ -62,8 +66,13 @@ extension JellyfinConnectionData: IntegrationConnectionPayload { } extension JellyfinConnectionData: CustomDebugStringConvertible { - var debugDescription: String { + public var debugDescription: String { let accessTokenDebugDesc = accessToken.isEmpty ? "" : "" - return "JellyfinConnectionData(\(url), \(serverName), \(userID), \(userName), \(accessTokenDebugDesc))" + let serverIdDesc = serverId ?? "" + return "JellyfinConnectionData(\(url), serverId: \(serverIdDesc), \(serverName), \(userID), \(userName), \(accessTokenDebugDesc))" + } + + public func buildDownloadUrl(providerId: String) -> String { + return "\(self.url.absoluteString)/items/\(providerId)/Download" } } diff --git a/BookPlayer/Jellyfin/Network/JellyfinConnectionService.swift b/Shared/Jellyfin/Network/JellyfinConnectionService.swift similarity index 84% rename from BookPlayer/Jellyfin/Network/JellyfinConnectionService.swift rename to Shared/Jellyfin/Network/JellyfinConnectionService.swift index f99a54aaf..a9c2e391a 100644 --- a/BookPlayer/Jellyfin/Network/JellyfinConnectionService.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionService.swift @@ -6,11 +6,16 @@ // Copyright © 2024 BookPlayer LLC. All rights reserved. // -import BookPlayerKit import Get import JellyfinAPI import os +#if os(watchOS) +import WatchKit +#else +import UIKit +#endif + /// Applies user-defined custom HTTP headers (e.g. Cloudflare Access Service Tokens) /// to every outgoing `JellyfinClient` request. Skips `Authorization` so the Jellyfin /// client's own MediaBrowser token is never overwritten. @@ -18,18 +23,18 @@ import os /// `willSendRequest` is invoked on `Get.APIClient`'s actor executor, while /// `setCustomHeaders(_:)` is typically called from `@MainActor`. The dictionary /// is therefore guarded by `OSAllocatedUnfairLock`. -final class JellyfinHeaderInjector: APIClientDelegate, @unchecked Sendable { +public final class JellyfinHeaderInjector: APIClientDelegate, @unchecked Sendable { private let lockedHeaders: OSAllocatedUnfairLock<[String: String]> - init(customHeaders: [String: String] = [:]) { + public init(customHeaders: [String: String] = [:]) { self.lockedHeaders = OSAllocatedUnfairLock(initialState: customHeaders) } - func setCustomHeaders(_ headers: [String: String]) { + public func setCustomHeaders(_ headers: [String: String]) { lockedHeaders.withLock { $0 = headers } } - func client(_ client: APIClient, willSendRequest request: inout URLRequest) async throws { + public func client(_ client: APIClient, willSendRequest request: inout URLRequest) async throws { let headers = lockedHeaders.withLock { $0 } for (key, value) in headers where key.caseInsensitiveCompare("Authorization") != .orderedSame { request.setValue(value, forHTTPHeaderField: key) @@ -39,7 +44,7 @@ final class JellyfinHeaderInjector: APIClientDelegate, @unchecked Sendable { @MainActor @Observable -class JellyfinConnectionService: BPLogger { +public class JellyfinConnectionService: BPLogger { /// `nonisolated` so the `nonisolated init` below can read it without crossing isolation. private nonisolated static let activeConnectionIDKey = "jellyfin_active_connection_id" @@ -57,14 +62,36 @@ class JellyfinConnectionService: BPLogger { /// on another device before this one gives up. private static let quickConnectMaxPolls = 200 - var connections: [JellyfinConnectionData] { store.connections } - var connection: JellyfinConnectionData? { store.active } - var client: JellyfinClient? - private var headerInjector: JellyfinHeaderInjector? + public var connections: [JellyfinConnectionData] { store.connections } + /// A connection pinned by the sync/stream engine for a specific external resource — + /// overrides the UI's active selection until cleared. Set via ``useConnection(_:)``. + private var manualConnection: JellyfinConnectionData? + public var connection: JellyfinConnectionData? { + if let manualConnection { return manualConnection } + return store.active + } + + /// Pins `connection` and rebuilds the client against it (used when consuming a stream + /// for a resource whose host resolved to a non-active saved server). + public func useConnection(_ connection: JellyfinConnectionData) { + manualConnection = connection + rebuildClient(for: connection) + } + + /// Vendor device identifier forwarded to Jellyfin as the client device id. + public var deviceIdentifier: String? { +#if os(watchOS) + return WKInterfaceDevice.current().identifierForVendor?.uuidString +#else + return UIDevice.current.identifierForVendor?.uuidString +#endif + } + public var client: JellyfinClient? + public var headerInjector: JellyfinHeaderInjector? - var activeConnectionID: String? { store.activeConnectionID } + public var activeConnectionID: String? { store.activeConnectionID } - nonisolated init(keychainService: KeychainServiceProtocol = KeychainService()) { + public nonisolated init(keychainService: KeychainServiceProtocol = KeychainService()) { self.store = IntegrationConnectionStore( keychainKey: .jellyfinConnection, activeIDDefaultsKey: Self.activeConnectionIDKey, @@ -72,7 +99,7 @@ class JellyfinConnectionService: BPLogger { ) } - func setup() { + public func setup() { store.reload() // Bring the live client up for whichever connection ended up active. rebuildClient(for: connection) @@ -83,14 +110,14 @@ class JellyfinConnectionService: BPLogger { /// the connection. Until that commit, neither `self.client` nor `self.headerInjector` /// are mutated, so an in-flight Add Server flow can't corrupt the active library /// session. - struct PendingServer { - let serverName: String - let client: JellyfinClient - let injector: JellyfinHeaderInjector + public struct PendingServer { + public let serverName: String + public let client: JellyfinClient + public let injector: JellyfinHeaderInjector /// Whether this server reports Quick Connect as enabled. Probed during `findServer` so the UI can /// offer the affordance only when it can actually work — admins can turn Quick Connect off, and a /// button that always appears sends those users into a flow that fails with a server error. - let quickConnectEnabled: Bool + public let quickConnectEnabled: Bool } /// Validates server reachability without mutating service state. Returns a @@ -170,9 +197,15 @@ class JellyfinConnectionService: BPLogger { // off (same library context, same outbound references) rather than on a fresh record they have // to re-configure. let serverURL = pending.client.configuration.url + // Capture the server's stable GUID (System/Info id) — the cross-device host identity for + // synced external resources. Best-effort: a failed info call must never fail the sign-in, + // and must not wipe a previously captured id. + let publicSystemInfo = try? await pending.client.send(Paths.getPublicSystemInfo) + let serverId = publicSystemInfo?.value.id store.upsert(url: serverURL, userID: userID, replacingID: replacingID) { existing in JellyfinConnectionData( id: existing?.id ?? UUID().uuidString, + serverId: serverId ?? existing?.serverId, url: serverURL, serverName: serverName, userID: userID, @@ -194,7 +227,7 @@ class JellyfinConnectionService: BPLogger { /// The reworked add-server flow keeps the `JellyfinClient` transient inside ``PendingServer`` /// and only commits it on a successful sign-in. Quick Connect needs a working client *before* /// any credentials exist, so it runs against the pending client rather than `self.client`. - func makeQuickConnectController( + public func makeQuickConnectController( using client: JellyfinClient ) -> JellyfinAPI.QuickConnect { JellyfinAPI.QuickConnect( @@ -234,9 +267,13 @@ class JellyfinConnectionService: BPLogger { // and carries the existing connection's id and selectedLibraryId forward on a re-auth, so the // user lands back in the same library context with the same outbound references. let serverURL = pending.client.configuration.url + // Same stable-GUID capture as the password path (see signIn). + let publicSystemInfo = try? await pending.client.send(Paths.getPublicSystemInfo) + let serverId = publicSystemInfo?.value.id store.upsert(url: serverURL, userID: userID, replacingID: replacingID) { existing in JellyfinConnectionData( id: existing?.id ?? UUID().uuidString, + serverId: serverId ?? existing?.serverId, url: serverURL, serverName: serverName, userID: userID, @@ -255,31 +292,31 @@ class JellyfinConnectionService: BPLogger { return userName } - func updateCustomHeaders(_ headers: [String: String]) { + public func updateCustomHeaders(_ headers: [String: String]) { guard let activeID = connection?.id else { return } updateCustomHeaders(id: activeID, headers) } /// Persist `headers` to the connection with the given id, regardless of which is active. /// If `id` happens to be the active connection, the live header injector is also updated. - func updateCustomHeaders(id: String, _ headers: [String: String]) { + public func updateCustomHeaders(id: String, _ headers: [String: String]) { guard store.updateCustomHeaders(id: id, headers) else { return } if id == connection?.id { headerInjector?.setCustomHeaders(headers) } } - func saveSelectedLibrary(id: String?) { + public func saveSelectedLibrary(id: String?) { guard let activeID = connection?.id else { return } store.setSelectedLibrary(id: activeID, libraryId: id) } - func activateConnection(id: String) { + public func activateConnection(id: String) { guard store.setActive(id: id) else { return } rebuildClient(for: connection) } - func deleteConnection(id: String) { + public func deleteConnection(id: String) { // Capture the old client BEFORE we mutate state, so the fire-and-forget // signOut doesn't race with the rebuildClient call below (and so signOut // is invoked on the connection the user actually asked us to remove). @@ -323,7 +360,7 @@ class JellyfinConnectionService: BPLogger { ) } - func deleteConnection() { + public func deleteConnection() { if let id = connection?.id { deleteConnection(id: id) } @@ -618,6 +655,40 @@ class JellyfinConnectionService: BPLogger { ) } + /// Fetches one library item by id (used to refresh a synced external resource's metadata). + public func fetchItem(for id: String) async throws -> JellyfinLibraryItem? { + let response = try await send(Paths.getItem(itemID: id)) + try Task.checkCancellation() + return JellyfinLibraryItem(apiItem: response.value) + } + + /// Pushes playback progress for one item (`updateItemUserData`), mirroring what the Android + /// app's external-update task sends. Routed through ``send(_:)`` so a mid-session 401/403 + /// surfaces as the typed re-auth signal instead of a generic error. + public func updateItemProgress(_ itemId: String, positionTicks: Int, percentCompleted: Double) async throws { + let userDataDto = UpdateUserItemDataDto( + playbackPositionTicks: positionTicks, + playedPercentage: percentCompleted + ) + _ = try await send(Paths.updateItemUserData(itemID: itemId, userDataDto)) + } + + /// Batch-fetches the Jellyfin items backing the given synced external resources, keyed by + /// provider item id — one round-trip instead of N when refreshing a list. + public func updateItemsFromJellyfin(_ externalResources: [SimpleExternalResource]) async throws -> [String: JellyfinLibraryItem] { + guard !externalResources.isEmpty, let myId = connection?.userID else { return [:] } + + let request = Paths.getItems(parameters: Paths.GetItemsParameters(userID: myId, ids: externalResources.map(\.providerId))) + let response = try await send(request) + + var itemsDictionary: [String: JellyfinLibraryItem] = [:] + for item in response.value.items ?? [] { + guard let jellyfinItem = JellyfinLibraryItem(apiItem: item) else { continue } + itemsDictionary[jellyfinItem.id] = jellyfinItem + } + return itemsDictionary + } + public func fetchAudiobookDownloadRequests(for folderID: String) async throws -> [URLRequest] { let parameters = Paths.GetItemsParameters( isRecursive: false, @@ -682,7 +753,13 @@ class JellyfinConnectionService: BPLogger { let mainBundleInfo = Bundle.main.infoDictionary let clientName = mainBundleInfo?[kCFBundleNameKey as String] as? String let clientVersion = mainBundleInfo?[kCFBundleVersionKey as String] as? String +#if os(watchOS) + let deviceID = WKInterfaceDevice.current().identifierForVendor + let deviceName = WKInterfaceDevice.current().name +#else let deviceID = UIDevice.current.identifierForVendor + let deviceName = UIDevice.current.name +#endif guard let url = URL(string: serverUrlString), let clientName, let clientVersion, let deviceID else { Self.logger.error( "cannot build Jellyfin API client. \(serverUrlString), \(clientName), \(clientVersion), \(String(reflecting: deviceID))" @@ -692,7 +769,7 @@ class JellyfinConnectionService: BPLogger { let configuration = JellyfinClient.Configuration( url: url, client: clientName, - deviceName: UIDevice.current.name, + deviceName: deviceName, deviceID: "\(deviceID.uuidString)-\(clientName)", version: clientVersion ) @@ -723,7 +800,7 @@ class JellyfinConnectionService: BPLogger { return client } - func createItemDownloadUrl(_ item: JellyfinLibraryItem) throws -> URL { + public func createItemDownloadUrl(_ item: JellyfinLibraryItem) throws -> URL { guard let client else { throw IntegrationError.noClient("Jellyfin") } @@ -744,14 +821,14 @@ class JellyfinConnectionService: BPLogger { /// Returns a URLRequest for downloading a library item, carrying the user-defined /// custom HTTP headers (needed for servers behind Cloudflare Access etc.). - func createItemDownloadRequest(_ item: JellyfinLibraryItem) throws -> URLRequest { + public func createItemDownloadRequest(_ item: JellyfinLibraryItem) throws -> URLRequest { let url = try createItemDownloadUrl(item) return wrapWithCustomHeaders(url) } /// Wraps an arbitrary URL (e.g. a cover image) in a URLRequest carrying the current /// connection's custom HTTP headers. Skips `Authorization` so the Jellyfin token is preserved. - func wrapWithCustomHeaders(_ url: URL) -> URLRequest { + public func wrapWithCustomHeaders(_ url: URL) -> URLRequest { var request = URLRequest(url: url) for (key, value) in connection?.customHeaders ?? [:] where key.caseInsensitiveCompare("Authorization") != .orderedSame { @@ -760,7 +837,7 @@ class JellyfinConnectionService: BPLogger { return request } - func createItemImageURL(_ item: JellyfinLibraryItem, size: CGSize?, quality: Int? = nil) throws -> URL { + public func createItemImageURL(_ item: JellyfinLibraryItem, size: CGSize?, quality: Int? = nil) throws -> URL { var parameters = Paths.GetItemImageParameters() if let size { diff --git a/Shared/Jellyfin/Network/JellyfinError.swift b/Shared/Jellyfin/Network/JellyfinError.swift new file mode 100644 index 000000000..d0ad7b97a --- /dev/null +++ b/Shared/Jellyfin/Network/JellyfinError.swift @@ -0,0 +1,49 @@ +// +// IntegrationError.swift +// BookPlayer +// +// Created by Gianni Carlo on 4/5/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +public enum IntegrationError: Error, LocalizedError { + case urlMalformed(_ url: URL?) + case urlFromComponents(_ components: URLComponents) + case noClient(_ integrationName: String) + case unexpectedResponse(code: Int?) + case clientError(code: Int) + + public var errorDescription: String? { + switch self { + case .urlMalformed(let url): + String(format: "integration_internal_error_invalid_url".localized, String(reflecting: url)) + case .urlFromComponents: + "integration_internal_error_build_url".localized + case .noClient(let name): + String(format: "integration_internal_error_no_client".localized, name) + case .unexpectedResponse(let code): + if let code { + String( + format: "integration_error_unexpected_response_with_code".localized, + code, + HTTPURLResponse.localizedString(forStatusCode: code) + ) + } else { + "integration_error_unexpected_response".localized + } + case .clientError(let code): + switch code { + case 401: + "integration_error_unauthorized".localized + default: + String( + format: "integration_error_unexpected_response_with_code".localized, + code, + HTTPURLResponse.localizedString(forStatusCode: code) + ) + } + } + } +} diff --git a/Shared/Network/NetworkClient.swift b/Shared/Network/NetworkClient.swift index 45e571fca..55263f6a3 100644 --- a/Shared/Network/NetworkClient.swift +++ b/Shared/Network/NetworkClient.swift @@ -139,10 +139,18 @@ public class NetworkClient: NetworkClientProtocol, BPLogger { var request = URLRequest(url: remoteURL) request.cachePolicy = .reloadIgnoringLocalCacheData request.httpMethod = HTTPMethod.put.rawValue - - Self.logger.trace("[Request] PUT \(remoteURL.path)") - - _ = try await URLSession.shared.upload(for: request, from: data) + + Self.logger.trace("[Request] PUT \(remoteURL.absoluteString)") + + let (responseData, response) = try await URLSession.shared.upload(for: request, from: data) + + // Cast the response to HTTPURLResponse to check the status code + if let httpResponse = response as? HTTPURLResponse { + if !(200...299).contains(httpResponse.statusCode) { + let errorMessage = String(data: responseData, encoding: .utf8) ?? "No error body" + throw URLError(.badServerResponse, userInfo: ["error": errorMessage]) + } + } } public func uploadTask( diff --git a/Shared/Services/Account/AccountService.swift b/Shared/Services/Account/AccountService.swift index f49d7d1f4..8895c34ab 100644 --- a/Shared/Services/Account/AccountService.swift +++ b/Shared/Services/Account/AccountService.swift @@ -28,7 +28,7 @@ public enum SecondOnboardingError: Error { } public enum AccessLevel: String, CaseIterable, Identifiable { - case free, plus, pro + case free, plus, lite, pro public var id: String { rawValue } } @@ -74,7 +74,8 @@ public protocol AccountServiceProtocol { func getHardcodedSubscriptionOptions() -> [PricingModel] func getSubscriptionOptions() async throws -> [PricingModel] - + func getAccessLevel() -> AccessLevel + func subscribe(option: PricingModel) async throws -> Bool func restorePurchases() async throws -> CustomerInfo @@ -106,6 +107,8 @@ public protocol AccountServiceProtocol { @Observable public final class AccountService: AccountServiceProtocol { + let monthlyLiteSubscriptionId = "com.tortugapower.audiobookplayer.subscription.lite" + let yearlyLiteSubscriptionId = "com.tortugapower.audiobookplayer.subscription.lite.yearly" let monthlySubscriptionId = "com.tortugapower.audiobookplayer.subscription.pro" let yearlySubscriptionId = "com.tortugapower.audiobookplayer.subscription.pro.yearly" var dataManager: DataManager! @@ -175,7 +178,11 @@ public final class AccountService: AccountServiceProtocol { } public func hasSyncEnabled() -> Bool { - return Purchases.shared.cachedCustomerInfo?.entitlements.all["pro"]?.isActive == true + return Purchases.shared.cachedCustomerInfo?.entitlements.all["pro"]?.isActive == true || Purchases.shared.cachedCustomerInfo?.entitlements.all["lite"]?.isActive == true + } + + public func hasLiteEnabled() -> Bool { + return Purchases.shared.cachedCustomerInfo?.entitlements.all["lite"]?.isActive == true } public func hasPlusAccess() -> Bool { @@ -184,9 +191,9 @@ public final class AccountService: AccountServiceProtocol { } let entitlements = cachedInfo.entitlements.all - if entitlements["plus"]?.isActive == true || entitlements["pro"]?.isActive == true + || entitlements["lite"]?.isActive == true { return true } @@ -197,13 +204,22 @@ public final class AccountService: AccountServiceProtocol { { return false } + + if entitlements["lite"]?.isActive == false, + let subscriptionInfo = getSubscriptionInfo(from: cachedInfo), + subscriptionInfo.refundedAt != nil + { + return false + } return getAccount()?.donationMade == true } - private func getAccessLevel() -> AccessLevel { - if hasSyncEnabled() { + public func getAccessLevel() -> AccessLevel { + if hasSyncEnabled() && !hasLiteEnabled() { return .pro + } else if hasLiteEnabled() { + return .lite } else if hasPlusAccess() { return .plus } else { @@ -322,6 +338,38 @@ public final class AccountService: AccountServiceProtocol { return options } + + public func getLiteSubscriptionOptions() async throws -> [PricingModel] { + let products = await Purchases.shared.products([yearlyLiteSubscriptionId, monthlyLiteSubscriptionId]) + + var options = [PricingModel]() + + if let product = products.first(where: { $0.productIdentifier == yearlyLiteSubscriptionId }) { + options.append( + PricingModel( + id: product.productIdentifier, + title: "\(product.localizedPriceString) \("yearly_title".localized)", + price: product.priceDecimalNumber.doubleValue + ) + ) + } + + if let product = products.first(where: { $0.productIdentifier == monthlyLiteSubscriptionId }) { + options.append( + PricingModel( + id: product.productIdentifier, + title: "\(product.localizedPriceString) \("monthly_title".localized)", + price: product.priceDecimalNumber.doubleValue + ) + ) + } + + if options.isEmpty { + throw AccountError.emptyProducts + } + + return options + } public func subscribe(option: PricingModel) async throws -> Bool { return try await subscribe(productId: option.id) diff --git a/Shared/Services/Account/PricingModel.swift b/Shared/Services/Account/PricingModel.swift index 2f5a4818a..1be8ef4c6 100644 --- a/Shared/Services/Account/PricingModel.swift +++ b/Shared/Services/Account/PricingModel.swift @@ -46,6 +46,8 @@ public enum PricingOption: String, Identifiable, Codable, CaseIterable { case proMonthly = "com.tortugapower.audiobookplayer.subscription.pro" case proYearly = "com.tortugapower.audiobookplayer.subscription.pro.yearly" + case liteMonthly = "com.tortugapower.audiobookplayer.subscription.lite" + case liteYearly = "com.tortugapower.audiobookplayer.subscription.lite.yearly" case supportTier4 = "com.tortugapower.audiobookplayer.subscription.support.4" case supportTier6 = "com.tortugapower.audiobookplayer.subscription.support.6" case supportTier7 = "com.tortugapower.audiobookplayer.subscription.support.7" @@ -71,6 +73,10 @@ public enum PricingOption: String, Identifiable, Codable, CaseIterable { return "$8.99" case .supportTier10: return "$9.99" + case .liteMonthly: + return "$2.99" + case .liteYearly: + return "$29.99" } } @@ -92,6 +98,10 @@ public enum PricingOption: String, Identifiable, Codable, CaseIterable { return 8.99 case .supportTier10: return 9.99 + case .liteMonthly: + return 2.99 + case .liteYearly: + return 29.99 } } } diff --git a/Shared/Services/ConcurrentSync/AsyncOperation.swift b/Shared/Services/ConcurrentSync/AsyncOperation.swift new file mode 100644 index 000000000..bc78ce6e7 --- /dev/null +++ b/Shared/Services/ConcurrentSync/AsyncOperation.swift @@ -0,0 +1,48 @@ +// +// AsyncOperation.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 23/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +class AsyncOperation: Operation, @unchecked Sendable { + enum State: String { + case ready, executing, finished + fileprivate var keyPath: String { return "is\(rawValue.capitalized)" } + } + + var state = State.ready { + willSet { + willChangeValue(forKey: newValue.keyPath) + willChangeValue(forKey: state.keyPath) + } + didSet { + didChangeValue(forKey: oldValue.keyPath) + didChangeValue(forKey: state.keyPath) + } + } + + var onProgress: (@Sendable (Double) -> Void)? + var didSucceed: Bool = false + override var isReady: Bool { super.isReady && state == .ready } + override var isExecuting: Bool { state == .executing } + override var isFinished: Bool { state == .finished } + override var isAsynchronous: Bool { true } + + override func start() { + guard !isCancelled else { + state = .finished + return + } + state = .executing + main() + } + + // Subclasses must call this when their async work is totally done + func finish() { + state = .finished + } +} diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift new file mode 100644 index 000000000..ffb1fd31e --- /dev/null +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -0,0 +1,432 @@ +// +// SyncOrchestrator.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 23/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation +import Combine +import CoreData + +public protocol ConcurrenceServiceProtocol { + var accessPolicy: [SyncJobType: Bool] { get set } + + /// Shared repository backing every task queue + var taskContainer: ConcurrentTasksRepositoryProtocol! { get } + + /// Last sync error information for debugging + var lastSyncError: SyncErrorInfo? { get } + + init(maxConcurrentTasks: Int) + + func setup( + libraryService: LibrarySyncProtocol, + accessLevel: AccessLevel, + tasksDataManager: TasksDataManager, + networkClient: NetworkClientProtocol, + dataManager: DataManager + ) + + func observeConcurrentTasksCount() -> AnyPublisher + + func getAllQueuedJobs() async -> [ConcurrentSyncTask] + + func getOrderedQueuedJobs(activeTasks: [String: TaskProgressTracker]) async -> [ConcurrentSyncTask] + + /// Pending-task count per active queue; the sync queue is always listed first, + /// even when idle + func getQueueSummaries() async -> [QueueSummary] + + func scheduleMetadataUpdate(params: [String: Any]) + + func scheduleFileUpload(params: [String: Any]) + + func updateConcurrentService(_ accessLevel: AccessLevel) +} + +public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { + let operationQueue: OperationQueue + public var taskContainer: ConcurrentTasksRepositoryProtocol! // Your DB model + var libraryService: LibrarySyncProtocol! + var networkClient: NetworkClientProtocol! + var dataManager: DataManager! + + private var _accessPolicy: [SyncJobType: Bool] = [:] + public var accessPolicy: [SyncJobType: Bool] { + get { + policyLock.withLock { + return _accessPolicy + } + } + set { + policyLock.withLock { + _accessPolicy = newValue + } + } + } + // Tracks which queueKeys currently have an active worker looping + private var activeQueueKeys = Set() + private let stateLock = NSLock() + private let policyLock = NSLock() + private var disposeBag = Set() + private var listeningTask: Task? + public var tasksCountService: ConcurrentTasksCountService! + /// Last sync error information for debugging; only written on the main queue + public private(set) var lastSyncError: SyncErrorInfo? + // Services + + required public init(maxConcurrentTasks: Int = 4) { + self.operationQueue = OperationQueue() + self.operationQueue.name = "com.bookplayer.synctask.concurrent" + // This still caps the total number of operations running simultaneously across all keys + self.operationQueue.maxConcurrentOperationCount = maxConcurrentTasks + } + + deinit { listeningTask?.cancel() } + + public func setup( + libraryService: LibrarySyncProtocol, + accessLevel: AccessLevel, + tasksDataManager: TasksDataManager, + networkClient: NetworkClientProtocol, + dataManager: DataManager + ) { + self.libraryService = libraryService + self.networkClient = networkClient + self.dataManager = dataManager + self.taskContainer = ConcurrentTasksRepository(tasksDataManager: tasksDataManager) + self.tasksCountService = ConcurrentTasksCountService(tasksDataManager: tasksDataManager) + startListeningForNewTasks() + bindObservers() + wakeUpWorkers() + updateConcurrentService(accessLevel) + } + + func bindObservers() { + NotificationCenter.default.publisher(for: .logout, object: nil) + .sink(receiveValue: { _ in + UserDefaults.standard.set( + false, + forKey: Constants.UserDefaults.hasScheduledLibraryContents + ) + }) + .store(in: &disposeBag) + + libraryService.progressUpdatePublisher.sink { [weak self] params in + self?.scheduleMetadataUpdate(params: params) + } + .store(in: &disposeBag) + } + + private func startListeningForNewTasks() { + listeningTask = Task { + let stream = NotificationCenter.default.notifications(named: .newTaskInQueue) + + for await notification in stream { + guard let userInfo = notification.userInfo, + let queueKey = userInfo["queueKey"] as? String else { + continue + } + + // Wake up the worker! + await startWorkerLoop(for: queueKey) + } + } + } + + /// Call this when the app wakes up, or when a new task is added to the database + func wakeUpWorkers() { + // Get all unique queue keys that currently have pending tasks + Task { + // Now you can safely await the actor! + let pendingKeys = await taskContainer.getAllQueueKeys() + + for key in pendingKeys { + await startWorkerLoop(for: key) + } + } + } + + private func startWorkerLoop(for queueKey: String) async { + // 1. Use scoped locking to check and update the state safely + let isAlreadyRunning = stateLock.withLock { + // This entire block is perfectly thread-safe and synchronous + if activeQueueKeys.contains(queueKey) { + return true + } else { + activeQueueKeys.insert(queueKey) + return false + } + } + + // 2. If it was already running, safely bail out + guard !isAlreadyRunning else { return } + + // 3. Now we are safely outside the lock, so we can await! + await enqueueNextTask(for: queueKey) + } + + public func observeConcurrentTasksCount() -> AnyPublisher { + return tasksCountService.observeConcurrentTasksCount() + } + + private func enqueueNextTask(for queueKey: String) async { + // 1. AWAIT the actor to safely fetch the next task + guard let nextTask = await taskContainer.getNextTask(for: queueKey) else { + // The queue is empty! Use scoped locking to remove the key. + let _ = stateLock.withLock { + activeQueueKeys.remove(queueKey) + } + // Re-check after retiring: a task stored between the empty fetch and the + // removal above would have seen an "active" worker and skipped waking one. + if await taskContainer.getNextTask(for: queueKey) != nil { + await startWorkerLoop(for: queueKey) + } + return + } + guard let operation = createOperation(for: nextTask) else { + Task { + await self.taskContainer.pop(nextTask) + await self.enqueueNextTask(for: queueKey) + } + return + } + + operation.onProgress = { progress in + Task { @MainActor in + ConcurrentTaskProgressMonitor.shared.updateProgress(for: nextTask.id, progress: progress) + } + } + + operation.completionBlock = { [weak self] in + // 2. Bridge back into the async world inside the synchronous completion block + Task { + guard let self = self else { return } + + if operation.didSucceed { + await self.handleFinishedOperation(operation, task: nextTask) + await self.taskContainer.pop(nextTask) + } else { + if let syncOperation = operation as? LibraryItemSyncOperation, + let error = syncOperation.error { + Self.logger.error("Sync task failed: \(error.localizedDescription)") + await MainActor.run { + self.lastSyncError = SyncErrorInfo( + taskId: nextTask.id, + uuid: nextTask.uuid, + jobType: nextTask.jobType, + error: error.localizedDescription + ) + } + } + try? await Task.sleep(for: .seconds(5)) + } + + // 3. AWAIT the recursive call + await MainActor.run { + ConcurrentTaskProgressMonitor.shared.clear(taskID: nextTask.id) + } + await self.enqueueNextTask(for: queueKey) + } + } + + await MainActor.run { + ConcurrentTaskProgressMonitor.shared.markAsProcessing(taskID: nextTask.id) + } + + operationQueue.addOperation(operation) + } + + public func getAllQueuedJobs() async -> [ConcurrentSyncTask] { + return await taskContainer.getAllTasks() + } + + public func getOrderedQueuedJobs(activeTasks: [String: TaskProgressTracker]) async -> [ConcurrentSyncTask] { + return await taskContainer.getOrderedTasks(activeTasks: activeTasks) + } + + public func getQueueSummaries() async -> [QueueSummary] { + return await taskContainer.getQueueSummaries() + } + + private func createOperation(for task: ConcurrentSyncTask) -> AsyncOperation? { + switch task.jobType { + case .externalUpdate: + guard let providerName = task.parameters["providerName"] as? String, + let providerId = task.parameters["providerId"] as? String, + let currentTime = task.parameters["currentTime"] as? Double, + let percentCompleted = task.parameters["percentCompleted"] as? Double else { + return nil + } + let hostId = task.parameters["hostId"] as? String + return ExternalUpdateProgressOperation( + providerName: providerName, + providerItemId: providerId, + positionTicks: Int(currentTime * 10_000_000), + percentCompleted: percentCompleted, + hostId: hostId + ) + case .uploadFile: + guard let filePath = task.parameters["filePath"] as? String, + let remotePath = task.parameters["remotePath"] as? String, + let fileURL = URL(string: filePath), + let remoteURL = URL(string: remotePath), + let uuid = task.parameters["uuid"] as? String else { + return nil + } + return FileUploadOperation(fileURL: fileURL, remoteURL: remoteURL, uuid: uuid) + default: + /// Serial BookPlayer-server queue + return LibraryItemSyncOperation( + client: networkClient, + task: SyncTask( + id: task.id, + uuid: task.uuid, + relativePath: task.relativePath, + jobType: task.jobType, + parameters: task.parameters + ) + ) + } + } + + /// Post-completion side effects for finished sync tasks + private func handleFinishedOperation(_ operation: AsyncOperation, task: ConcurrentSyncTask) async { + guard + let syncOperation = operation as? LibraryItemSyncOperation, + let results = syncOperation.results + else { return } + + switch results { + case .matchUuid(let response): + await handleMatchUuidsResponse(response) + case .uploadMetadata(let result): + /// Provider-backed items don't upload the local file; the server pulls it + /// from the provider via `externalResourceToDownload` + if task.parameters["provider"] as? String == nil { + handleUploadResult(result) + } + } + } + + private func handleMatchUuidsResponse(_ results: MatchUuidsResponse) async { + guard !results.conflicts.isEmpty else { return } + do { + try await applyCoreDataConflicts(results.conflicts) + try await taskContainer.applyMatchUuidConflicts(results.conflicts) + } catch { + Self.logger.error("Failed to apply matchUuid conflicts: \(error.localizedDescription)") + await MainActor.run { + self.lastSyncError = SyncErrorInfo( + taskId: "", + uuid: "", + jobType: .matchUuid, + error: error.localizedDescription + ) + } + } + } + + private func applyCoreDataConflicts(_ conflicts: [ItemConflict]) async throws { + let context = dataManager.getBackgroundContext() + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + context.perform { + do { + let oldUuids = conflicts.map { $0.key } + let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() + fetchRequest.predicate = NSPredicate(format: "uuid IN %@", oldUuids) + let items = try context.fetch(fetchRequest) + let uuidMap = Dictionary(uniqueKeysWithValues: conflicts.map { ($0.key, $0.uuid) }) + for item in items { + if let newUuid = uuidMap[item.uuid] { + item.uuid = newUuid + } + } + try context.save() + continuation.resume() + } catch { + continuation.resume(throwing: error) + } + } + } + } + + private func handleUploadResult(_ result: UploadResponse) { + guard let remotePath = result.remotePath else { return } + + scheduleFileUpload(params: [ + "filePath": result.filePath, + "remotePath": remotePath, + "uuid": result.uuid + ]) + } + + public func updateConcurrentService(_ accessLevel: AccessLevel) { + switch accessLevel { + case .lite: + accessPolicy = [ + .externalUpdate: true, + .uploadFile: false, + ] + case .pro: + accessPolicy = [ + .externalUpdate: true, + .uploadFile: true, + ] + default: + accessPolicy = [ + .externalUpdate: false, + .uploadFile: false, + ] + } + } +} + +extension ConcurrenceService { + public func scheduleMetadataUpdate(params: [String: Any]) { + guard accessPolicy[.externalUpdate] == true else { + return + } + Task { + guard let queueKey = params["providerName"] as? String else { + return + } + + var params = params + params["id"] = UUID().uuidString + params["jobType"] = SyncJobType.externalUpdate.rawValue + params["queueKey"] = queueKey + /// Override param `lastPlayDate` if it exists with the proper name + if let lastPlayDate = params.removeValue(forKey: #keyPath(LibraryItem.lastPlayDate)) { + params["lastPlayDateTimestamp"] = lastPlayDate + } + + do { + try await taskContainer.storeTask(parameters: params) + } catch { + Self.logger.error("Failed to schedule metadata update task: \(error)") + } + } + } + + public func scheduleFileUpload(params: [String: Any]) { + guard accessPolicy[.uploadFile] == true else { + return + } + + Task { + var params = params + params["id"] = UUID().uuidString + params["jobType"] = SyncJobType.uploadFile.rawValue + params["queueKey"] = TaskQueueKey.uploadFile + + do { + try await taskContainer.storeTask(parameters: params) + } catch { + Self.logger.error("Failed to schedule upload file task: \(error)") + } + } + } +} diff --git a/Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift b/Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift new file mode 100644 index 000000000..e1615fca0 --- /dev/null +++ b/Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift @@ -0,0 +1,45 @@ +// +// ConcurrentSyncTask.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 24/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +/// Pending-task count for one queue key +public struct QueueSummary: Identifiable { + public let queueKey: String + public let count: Int + + public var id: String { queueKey } + + public init(queueKey: String, count: Int) { + self.queueKey = queueKey + self.count = count + } +} + +public struct ConcurrentSyncTask: Identifiable { + public let id: String + public let queueKey: String + public let jobType: SyncJobType + public let uuid: String + public let relativePath: String + public let parameters: [String: Any] + + public init( + id: String, + queueKey: String, + jobType: SyncJobType, + parameters: [String: Any], + uuid: String = "", + relativePath: String = "" + ) { + self.id = id + self.queueKey = queueKey + self.jobType = jobType + self.parameters = parameters + self.uuid = uuid + self.relativePath = relativePath + } +} diff --git a/Shared/Services/ConcurrentSync/ConcurrentTaskProgressMonitor.swift b/Shared/Services/ConcurrentSync/ConcurrentTaskProgressMonitor.swift new file mode 100644 index 000000000..8520b2dc5 --- /dev/null +++ b/Shared/Services/ConcurrentSync/ConcurrentTaskProgressMonitor.swift @@ -0,0 +1,73 @@ +// +// ConcurrentTasksProgressMonitor.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 25/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation +import SwiftUI +import SwiftData + +public enum ActiveTaskState: Equatable { + case processing // Indeterminate (API calls, updates) + case progress(Double) // Determinate (Files, byte progress) +} + +@Observable +@MainActor +public class TaskProgressTracker { + var state: ActiveTaskState + + init(state: ActiveTaskState) { + self.state = state + } +} + +@Observable +@MainActor +public class ConcurrentTaskProgressMonitor { + // Shared instance so both the UI and the Orchestrator can access it easily + public static let shared = ConcurrentTaskProgressMonitor() + + // A dictionary mapping the Task ID to a progress double (0.0 to 1.0) + public var activeTasks: [String: TaskProgressTracker] = [:] + + func markAsProcessing(taskID: String) { + if let tracker = activeTasks[taskID] { + tracker.state = .processing + } else { + activeTasks[taskID] = TaskProgressTracker(state: .processing) + } + } + + func updateProgress(for taskID: String, progress: Double) { + // We no longer mutate the dictionary! We just update the object's property. + // This surgical update is what SwiftUI's observation engine craves. + activeTasks[taskID]?.state = .progress(progress) + } + + func clear(taskID: String) { + activeTasks.removeValue(forKey: taskID) + } + + public func isActive(taskID: String) -> Bool { + return activeTasks.keys.contains(taskID) + } + + public func isTaskState(taskID: String) -> ActiveTaskState? { + return activeTasks[taskID]?.state ?? nil + } + + public func getTaskProgress(taskID: String) -> Double { + guard let myState = activeTasks[taskID]?.state else { return 0 } + + switch myState { + case .processing: + return 0 + case let .progress(progress): + return progress + } + } +} diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksCountService.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksCountService.swift new file mode 100644 index 000000000..0b0279825 --- /dev/null +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksCountService.swift @@ -0,0 +1,26 @@ +// +// ConcurrentTasksCountService.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 25/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Combine +import Foundation + +public protocol ConcurrentTasksCountServiceProtocol { + func observeConcurrentTasksCount() -> AnyPublisher +} + +public class ConcurrentTasksCountService: ConcurrentTasksCountServiceProtocol { + public let tasksDataManager: TasksDataManager + + public init(tasksDataManager: TasksDataManager) { + self.tasksDataManager = tasksDataManager + } + + public func observeConcurrentTasksCount() -> AnyPublisher { + return tasksDataManager.observeConcurrentTasksCount() + } +} diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift new file mode 100644 index 000000000..9100ee6d3 --- /dev/null +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift @@ -0,0 +1,466 @@ +// +// ConcurrentTasksStore.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 23/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Combine +import Foundation +import SwiftData + +public protocol ConcurrentTasksRepositoryProtocol: ModelActor { + init(tasksDataManager: TasksDataManager) + + func getNextTask(for queueKey: String) -> ConcurrentSyncTask? + + func pop(_ task: ConcurrentSyncTask) + + func getAllQueueKeys() -> [String] + + /// Pending-task count per active queue, with the sync queue always listed first + /// (even when idle), followed by the rest alphabetically + func getQueueSummaries() -> [QueueSummary] + + func storeTask(parameters: [String: Any]) async throws + + /// All queued tasks outside the serial sync queue + func getAllTasks() async -> [ConcurrentSyncTask] + + func getOrderedTasks(activeTasks: [String: TaskProgressTracker]) async -> [ConcurrentSyncTask] + + func getTasksCount(in queueKey: String) -> Int + + func getAllTasks(in queueKey: String, progress: [String: Double]) -> [SyncTaskReference] + + func getAllTasksWithParams(in queueKey: String) -> [SyncTask] + + func hasUploadTask(for relativePath: String) -> Bool + + func applyMatchUuidConflicts(_ conflicts: [ItemConflict]) throws + + func clearAll(in queueKey: String) throws + + func clearAll() throws +} + +public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol { + nonisolated public let modelContainer: ModelContainer + nonisolated public let modelExecutor: any ModelExecutor + + private let tasksDataManager: TasksDataManager + + public init(tasksDataManager: TasksDataManager) { + self.modelContainer = tasksDataManager.container + let modelContext = ModelContext(tasksDataManager.container) + modelContext.autosaveEnabled = true + self.modelExecutor = DefaultSerialModelExecutor(modelContext: modelContext) + self.tasksDataManager = tasksDataManager + } + + public func getNextTask(for queueKey: String) -> ConcurrentSyncTask? { + guard let tasksContainer = fetchGlobalQueueModel() else { return nil } + + for reference in tasksContainer.orderedTasks(for: queueKey) { + guard + let storedObject = tasksDataManager.getTaskModel( + with: reference.taskID, + jobType: reference.jobType, + in: modelContext + ) + else { + /// Drop dangling references (payload missing) instead of stalling the queue + tasksContainer.tasks.removeAll(where: { $0.id == reference.id }) + modelContext.delete(reference) + try? modelContext.save() + continue + } + + return ConcurrentSyncTask( + id: reference.taskID, + queueKey: reference.queueKey, + jobType: reference.jobType, + parameters: storedObject.toDictionaryPayload(), + uuid: reference.uuid, + relativePath: reference.relativePath + ) + } + + return nil + } + + public func pop(_ task: ConcurrentSyncTask) { + guard let tasksContainer = fetchGlobalQueueModel() else { return } + + let context = modelContext + + try? tasksDataManager.deleteTaskModel( + with: task.id, + jobType: task.jobType, + context: context + ) + + if let reference = tasksContainer.tasks.first(where: { $0.taskID == task.id }) { + tasksContainer.tasks.removeAll(where: { $0.id == reference.id }) + context.delete(reference) + } + + try? context.save() + + tasksDataManager.notifyTasksChanged(context: context) + } + + private func fetchGlobalQueueModel() -> ConcurrentTasksContainer? { + let context = modelContext + + let descriptor = FetchDescriptor() + let containers = try? context.fetch(descriptor) + + guard let tasksContainer = containers?.first else { + return nil + } + + return tasksContainer + } + + public func getAllQueueKeys() -> [String] { + return fetchGlobalQueueModel()?.allQueueKeys ?? [] + } + + public func getQueueSummaries() -> [QueueSummary] { + var countsByQueue = Dictionary(grouping: fetchGlobalQueueModel()?.tasks ?? [], by: { $0.queueKey }) + .mapValues(\.count) + + /// The sync queue is always listed, even when idle + if countsByQueue[TaskQueueKey.sync] == nil { + countsByQueue[TaskQueueKey.sync] = 0 + } + + return countsByQueue + .map { QueueSummary(queueKey: $0.key, count: $0.value) } + .sorted { lhs, rhs in + if lhs.queueKey == TaskQueueKey.sync { return true } + if rhs.queueKey == TaskQueueKey.sync { return false } + return lhs.queueKey < rhs.queueKey + } + } + + public func storeTask(parameters: [String: Any]) async throws { + guard + let taskId = parameters["id"] as? String, + let rawJobType = parameters["jobType"] as? String, + let jobType = SyncJobType(rawValue: rawJobType), + let queueKey = parameters["queueKey"] as? String + else { + throw BookPlayerError.runtimeError("Missing id, job type or queue key when creating task") + } + + let context = modelContext + + // Get or create the tasks container + let descriptor = FetchDescriptor() + let containers = try context.fetch(descriptor) + let tasksContainer = containers.first ?? ConcurrentTasksContainer() + + if containers.isEmpty { + context.insert(tasksContainer) + } + + if coalesceTaskIfPossible( + jobType: jobType, + queueKey: queueKey, + parameters: parameters, + tasksContainer: tasksContainer + ) { + try context.save() + tasksDataManager.notifyTasksChanged(context: context) + return + } + + tasksDataManager.createTaskModel(for: jobType, with: parameters, in: context) + + let nextPosition = (tasksContainer.tasks.map(\.position).max() ?? -1) + 1 + // Create task reference + let taskReference = ConcurrentTaskReferenceModel( + queueKey: queueKey, + taskID: taskId, + jobType: jobType, + position: nextPosition, + uuid: parameters["uuid"] as? String ?? "", + relativePath: parameters["relativePath"] as? String ?? "" + ) + + // Add to container + tasksContainer.tasks.append(taskReference) + taskReference.container = tasksContainer + + try context.save() + tasksDataManager.notifyTasksChanged(context: context) + + NotificationCenter.default.post( + name: .newTaskInQueue, + object: nil, + userInfo: ["queueKey": queueKey] + ) + } + + /// Merge the new task into an equivalent queued one when possible, so the queue + /// doesn't accumulate redundant work. The head of the queue is never a merge target: + /// its parameter snapshot may already have been read by `getNextTask`, so mutations + /// would be silently dropped when the running task finishes and gets deleted. + private func coalesceTaskIfPossible( + jobType: SyncJobType, + queueKey: String, + parameters: [String: Any], + tasksContainer: ConcurrentTasksContainer + ) -> Bool { + let queuedReferences = tasksContainer.orderedTasks(for: queueKey) + /// Skip the head of the queue when looking for a merge target + let mergeableReferences = queuedReferences.dropFirst() + + switch jobType { + case .matchUuid: + guard + let newUuidsDict = parameters["uuids"] as? [String: String], + let candidateReference = mergeableReferences.last(where: { $0.jobType == .matchUuid }), + let candidateTask = try? modelContext + .fetch(FetchDescriptor()) + .first(where: { $0.id == candidateReference.taskID }) + else { + return false + } + + /// Prefer existing values so we never overwrite uuids that other queued tasks or + /// Core Data are already referencing + var merged = candidateTask.uuids + for (path, uuid) in newUuidsDict where merged[path] == nil { + merged[path] = uuid + } + candidateTask.uuids = merged + return true + + case .update: + guard + let uuid = parameters["uuid"] as? String, + let candidateReference = mergeableReferences.last(where: { $0.jobType == .update && $0.uuid == uuid }), + let candidateTask = try? modelContext + .fetch(FetchDescriptor()) + .first(where: { $0.id == candidateReference.taskID }) + else { + return false + } + + var parameters = parameters + parameters["id"] = candidateTask.id + tasksDataManager.updateTaskModel(candidateTask, with: parameters) + return true + + case .externalUpdate: + guard + let providerId = parameters["providerId"] as? String, + let candidateReference = mergeableReferences.last(where: { $0.jobType == .externalUpdate }), + let candidateTask = try? modelContext + .fetch(FetchDescriptor()) + .first(where: { $0.id == candidateReference.taskID && $0.providerId == providerId }) + else { + return false + } + + tasksDataManager.updateExternalUpdateTaskModel(for: candidateTask, with: parameters, in: modelContext) + return true + + default: + return false + } + } + + public func getAllTasks() async -> [ConcurrentSyncTask] { + guard let tasksContainer = fetchGlobalQueueModel() else { return [] } + + return tasksContainer.orderedTasks + .filter { $0.queueKey != TaskQueueKey.sync } + .map { task in + ConcurrentSyncTask( + id: task.taskID, + queueKey: task.queueKey, + jobType: task.jobType, + parameters: [:], + uuid: task.uuid, + relativePath: task.relativePath + ) + } + } + + public func getOrderedTasks(activeTasks: [String: TaskProgressTracker]) async -> [ConcurrentSyncTask] { + let concurrentTasks = await self.getAllTasks() + + let activeGroup = concurrentTasks.filter { task in + activeTasks.keys.contains(task.id) + } + + // 2. Sieve out ONLY the tasks that are NOT active. + let inactiveGroup = concurrentTasks.filter { task in + !activeTasks.keys.contains(task.id) + } + + // 3. Merge them back together, active ones first! + return activeGroup + inactiveGroup + } + + public func getTasksCount(in queueKey: String) -> Int { + guard let tasksContainer = fetchGlobalQueueModel() else { return 0 } + + return tasksContainer.tasks.filter { $0.queueKey == queueKey }.count + } + + public func getAllTasks(in queueKey: String, progress: [String: Double]) -> [SyncTaskReference] { + guard let tasksContainer = fetchGlobalQueueModel() else { return [] } + + return tasksContainer.orderedTasks(for: queueKey).map { task in + let key = SyncProgressKey.resolve(uuid: task.uuid, relativePath: task.relativePath) + return SyncTaskReference( + id: task.taskID, + uuid: task.uuid, + relativePath: task.relativePath, + jobType: task.jobType, + progress: progress[key] ?? 0.0 + ) + } + } + + public func getAllTasksWithParams(in queueKey: String) -> [SyncTask] { + guard let tasksContainer = fetchGlobalQueueModel() else { return [] } + + return tasksContainer.orderedTasks(for: queueKey).compactMap { taskRef in + guard + let storedObject = tasksDataManager.getTaskModel( + with: taskRef.taskID, + jobType: taskRef.jobType, + in: modelContext + ) + else { + return nil + } + + return SyncTask( + id: taskRef.taskID, + uuid: taskRef.uuid, + relativePath: taskRef.relativePath, + jobType: taskRef.jobType, + parameters: storedObject.toDictionaryPayload() + ) + } + } + + /// Check if there's an upload task queued for the item + public func hasUploadTask(for relativePath: String) -> Bool { + do { + let descriptor = FetchDescriptor( + predicate: #Predicate { task in + task.relativePath == relativePath + } + ) + + let tasks = try modelContext.fetch(descriptor) + return !tasks.isEmpty + + } catch { + return false + } + } + + /// Rewrites task reference and task model uuids for each conflict returned by `matchUuid`. + /// Each conflict maps a locally-known uuid (`key`) to the uuid the server wants the client + /// to adopt (`uuid`). Runs on the actor's serial executor. + public func applyMatchUuidConflicts(_ conflicts: [ItemConflict]) throws { + for conflict in conflicts { + let oldUuid = conflict.key + let newUuid = conflict.uuid + let refs = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.uuid == oldUuid }) + ) + for ref in refs { + ref.uuid = newUuid + let taskId = ref.taskID + switch ref.jobType { + case .upload: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .update: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .move: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .renameFolder: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .delete, .shallowDelete: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .setBookmark: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .deleteBookmark: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .uploadArtwork: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .matchUuid, .externalUpdate: + break + case .externalResource: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .externalResourceToDownload: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .deleteExternalResource: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + case .uploadFile: + if let task = try modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first { task.uuid = newUuid } + } + } + } + try modelContext.save() + } + + public func clearAll(in queueKey: String) throws { + guard let tasksContainer = fetchGlobalQueueModel() else { return } + + let context = modelContext + + for reference in tasksContainer.orderedTasks(for: queueKey) { + try? tasksDataManager.deleteTaskModel( + with: reference.taskID, + jobType: reference.jobType, + context: context + ) + tasksContainer.tasks.removeAll(where: { $0.id == reference.id }) + context.delete(reference) + } + + try context.save() + + tasksDataManager.notifyTasksChanged(context: context) + } + + public func clearAll() throws { + try tasksDataManager.deleteAllTasks(with: modelContext) + } +} diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift new file mode 100644 index 000000000..57a28581c --- /dev/null +++ b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift @@ -0,0 +1,93 @@ +// +// ExternalUpdateProgressOperation.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 23/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +class ExternalUpdateProgressOperation: AsyncOperation, @unchecked Sendable { + + let providerName: String + let providerItemId: String + let positionTicks: Int + let percentCompleted: Double + let hostId: String? + + init(providerName: String, providerItemId: String, positionTicks: Int, percentCompleted: Double, hostId: String? = nil) { + self.providerName = providerName + self.providerItemId = providerItemId + self.positionTicks = positionTicks + self.percentCompleted = percentCompleted + self.hostId = hostId + super.init() + } + + override func main() { + guard !isCancelled else { + self.finish() + return + } + + Task { + // 1. defer guarantees this runs at the very end of the Task's scope, + // even if a crash or a throw happens inside. + defer { + self.finish() + } + try await Task.sleep(for: .seconds(5)) + // 2. Wrap the throwing code in a do-catch + do { + + switch ExternalResource.ProviderName(rawValue: self.providerName) { + case .jellyfin: + try await doJellyfinUpdate() + case .audiobookshelf: + try await doAudiobookshelfUpdate() + default: + break + } + + // If the code reaches here, the network request succeeded! + self.didSucceed = true + + } catch { + // If it throws, execution instantly jumps here. + print("🔴 OPERATION FAILED WITH ERROR: \(error)") + self.didSucceed = false + } + } + } + + func doJellyfinUpdate() async throws { + let jellyfinService = JellyfinConnectionService() + await jellyfinService.setup() + + if let hostId = self.hostId, !hostId.isEmpty { + if let targetConnection = await jellyfinService.connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) { + await jellyfinService.useConnection(targetConnection) + } + } + + try await jellyfinService.updateItemProgress( + self.providerItemId, + positionTicks: self.positionTicks, + percentCompleted: self.percentCompleted + ) + } + + func doAudiobookshelfUpdate() async throws { + let audiobookshelfService = AudiobookShelfConnectionService() + await audiobookshelfService.setup() + + if let hostId = self.hostId, !hostId.isEmpty { + if let targetConnection = await audiobookshelfService.connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) { + await audiobookshelfService.useConnection(targetConnection) + } + } + + try await audiobookshelfService.updateProgress(for: self.providerItemId, progress: self.percentCompleted, currentTime: Double(self.positionTicks / 10_000_000)) + } +} diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift new file mode 100644 index 000000000..5e9ec4734 --- /dev/null +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -0,0 +1,152 @@ +// +// FileUploadOperation.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 26/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation +import Combine + +class FileUploadOperation: AsyncOperation, @unchecked Sendable { + + // MARK: - Properties + let fileURL: URL + let remoteURL: URL + let uuid: String + + // Inject whatever type 'self.client' is in your original code + let client: NetworkClientProtocol + + // State management for the background task + private var currentUploadTask: URLSessionTask? + private var progressSubscriber: AnyCancellable? + private var completionSubscriber: AnyCancellable? + private var cellularDataObserver: NSKeyValueObservation? + + // MARK: - Init + init(fileURL: URL, remoteURL: URL, uuid: String, client: NetworkClientProtocol = NetworkClient()) { + self.fileURL = fileURL + self.remoteURL = remoteURL + self.uuid = uuid + self.client = client + super.init() + } + + // MARK: - Execution + override func main() { + guard !isCancelled else { + self.finish() + return + } + + // Spin up the async context + Task { + await startUploadTask() + } + } + + // MARK: - Upload Logic + private func startUploadTask() async { + // 1. Determine Session + let allowCellular = UserDefaults.standard.bool(forKey: Constants.UserDefaults.allowCellularData) + let session = allowCellular ? BPURLSession.shared.backgroundCellularSession : BPURLSession.shared.backgroundSession + // 2. Create the Task + let uploadTask = await self.client.uploadTask( + fileURL, + remoteURL: remoteURL, + taskDescription: uuid, + session: session + ) + self.currentUploadTask = uploadTask + + // 3. Bind everything before resuming + bindUploadObservers() + bindCellularObserver() + // 4. Fire! + uploadTask.resume() + } + + private func bindCellularObserver() { + cellularDataObserver?.invalidate() + + // Assuming \.userSettingsAllowCellularData is an extension on UserDefaults + cellularDataObserver = UserDefaults.standard.observe( + \.userSettingsAllowCellularData, + options: [.new] + ) { [weak self] _, change in + + guard let self = self, change.newValue != nil else { return } + + // If the user toggles cellular data mid-flight, we cancel the current internal task. + // (This triggers NSURLErrorCancelled in the completion subscriber). + self.currentUploadTask?.cancel() + + // Recursively restart the upload using the new session! + Task { + await self.startUploadTask() + } + } + } + + private func bindUploadObservers() { + progressSubscriber?.cancel() + progressSubscriber = BPURLSession.shared.progressPublisher + .sink { [weak self] (path, progress) in + guard let self = self else { return } + // CRITICAL: Only report progress if this event belongs to THIS operation + if uuid == self.uuid { + self.onProgress?(progress) + } + } + + completionSubscriber?.cancel() + completionSubscriber = BPURLSession.shared.completionPublisher + .sink { [weak self] (task, error) in + guard let self = self else { return } + + // CRITICAL: Ensure this completion event belongs to this specific task + guard task.taskDescription == self.uuid else { return } + + // We've hit a terminal state for this attempt, so clean up the KVO + self.cellularDataObserver?.invalidate() + + if let nserror = error as? NSError, + nserror.domain == NSURLErrorDomain, + nserror.code == NSURLErrorCancelled { + // Do nothing! The cellular KVO observer cancelled this task + // and is already spinning up a new one via startUploadTask(). + + } else if let error = error { + // Actual Failure + print("Upload failed for \(self.uuid): \(error)") + self.didSucceed = false + self.finish() + + } else { + // Success! + // (You could run your handleUploadFinished logic here if it does extra database work) + Task { @MainActor in + do { + try FileManager.default.removeItem(at: self.fileURL) + } catch { + print("Failed to delete hard link for \(self.uuid): \(error.localizedDescription)") + } + } + self.didSucceed = true + self.finish() + } + } + } + + // MARK: - Cleanup + // If the Orchestrator cancels the operation entirely, we must sever all ties. + override func cancel() { + super.cancel() + currentUploadTask?.cancel() + cellularDataObserver?.invalidate() + progressSubscriber?.cancel() + completionSubscriber?.cancel() + } +} diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index 4ae6f19eb..f5cc3b604 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -48,6 +48,11 @@ public protocol LibrarySyncProtocol { func getBookmarks(of type: BookmarkType, relativePath: String) -> [SimpleBookmark]? /// Store new synced bookmark func addBookmark(from bookmark: SimpleBookmark) async + + /// Item uuid + external resources as lightweight values, fetched on the context's queue + func getItemResourcesSnapshot(for relativePath: String) -> (uuid: String, resources: [SyncableExternalResource])? + + func updateExternalResource(for item: SyncableExternalResource) async } extension LibraryService: LibrarySyncProtocol { @@ -169,11 +174,85 @@ extension LibraryService: LibrarySyncProtocol { if !item.uuid.isEmpty { storedItem.uuid = item.uuid } + + if let remoteExternalResources = item.externalResources { + let remoteIds = Set(remoteExternalResources.compactMap { $0.providerId }) + let localIds = Set(storedItem.resourcesArray.compactMap { $0.providerId }) + + let idsToAdd = remoteIds.subtracting(localIds) + let idsToRemove = localIds.subtracting(remoteIds) + let idsExisting = localIds.intersection(remoteIds) + + for localResource in storedItem.resourcesArray { + if idsToRemove.contains(localResource.providerId) { + storedItem.removeFromExternalResources(localResource) + context.delete(localResource) + } + } + + for idExisting in idsExisting { + guard let localItem = storedItem.resourcesArray.first(where: { $0.providerId == idExisting }), + let remoteData = item.externalResources?.first(where: { $0.providerId == idExisting }), + remoteData.syncStatus != localItem.syncStatus + else { + continue + } + localItem.syncStatus = remoteData.syncStatus + } + + for idToAdd in idsToAdd { + // Find the original struct using the ID + guard let remoteData = item.externalResources?.first(where: { $0.providerId == idToAdd }) else { + continue + } + + let resourceEntity = NSEntityDescription.entity(forEntityName: "ExternalResource", in: context)! + let external = ExternalResource(entity: resourceEntity, insertInto: context) + + external.providerId = remoteData.providerId + external.providerName = remoteData.providerName + external.syncStatus = remoteData.syncStatus + external.lastSyncedAt = remoteData.lastSyncedAt + external.processedFile = remoteData.processedFile + + external.libraryItem = storedItem + storedItem.addToExternalResources(external) + } + } + + if let allExternalItems = self.findResources(for: storedItem.uuid, context: context), + allExternalItems.count > storedItem.resourcesArray.count { + let allSet = Set(allExternalItems) + let keepSet = Set(storedItem.resourcesArray) + + // 2. Find the difference (things in 'all' but NOT in 'keep') + let toDelete = allSet.subtracting(keepSet) + + // 3. Delete them from the context + toDelete.forEach { resource in + context.delete(resource) + } + } if shouldSaveContext { dataManager.saveSyncContext(context) } } + + public func updateExternalResource(for item: SyncableExternalResource) async { + return await withCheckedContinuation { continuation in + let context = dataManager.getBackgroundContext() + context.perform { [unowned self, context] in + let externalResource = self.findResource(for: item.providerId, context: context) + if let externalResource { + externalResource.syncStatus = item.syncStatus + externalResource.processedFile = item.processedFile + dataManager.saveSyncContext(context) + } + continuation.resume() + } + } + } public func storeNewItems(from itemsDict: [String: SyncableItem], parentFolder: String?) async { await withCheckedContinuation { continuation in @@ -209,6 +288,22 @@ extension LibraryService: LibrarySyncProtocol { syncItem: item, context: context ) + + if let externalResources = item.externalResources, externalResources.count > 0 { + for externalResource in externalResources { + let resourceEntity = NSEntityDescription.entity(forEntityName: "ExternalResource", in: context)! + let external = ExternalResource(entity: resourceEntity, insertInto: context) + + external.providerId = externalResource.providerId + external.providerName = externalResource.providerName + external.syncStatus = externalResource.syncStatus + external.lastSyncedAt = externalResource.lastSyncedAt + external.processedFile = externalResource.processedFile + + external.libraryItem = newBook + newBook.addToExternalResources(external) + } + } if let relativePath = parentFolder, let folder = getItem(with: relativePath, context: context) as? Folder @@ -279,7 +374,7 @@ extension LibraryService: LibrarySyncProtocol { let results = try? context.fetch(fetchRequest) as? [[String: Any]] - continuation.resume(returning: parseSyncableItems(from: results)) + continuation.resume(returning: parseSyncableItems(from: results, context: context)) } } } @@ -294,12 +389,17 @@ extension LibraryService: LibrarySyncProtocol { relativePath ) - let results = try? self.dataManager.getBackgroundContext().fetch(fetchRequest) as? [[String: Any]] + let context = self.dataManager.getBackgroundContext() + var items: [SyncableItem]? + context.performAndWait { + let results = try? context.fetch(fetchRequest) as? [[String: Any]] + items = parseSyncableItems(from: results, context: context) + } - return parseSyncableItems(from: results) + return items } - func parseSyncableItems(from results: [[String: Any]]?) -> [SyncableItem]? { + func parseSyncableItems(from results: [[String: Any]]?, context: NSManagedObjectContext) -> [SyncableItem]? { return results?.compactMap({ dictionary -> SyncableItem? in guard let uuid = dictionary["uuid"] as? String, @@ -322,6 +422,8 @@ extension LibraryService: LibrarySyncProtocol { if let lastPlayDate = dictionary["lastPlayDate"] as? Date { lastPlayDateTimestamp = lastPlayDate.timeIntervalSince1970 } + + let externalResources = self.findResources(for: uuid, context: context) return SyncableItem( relativePath: relativePath, @@ -338,7 +440,17 @@ extension LibraryService: LibrarySyncProtocol { orderRank: orderRank, lastPlayDateTimestamp: lastPlayDateTimestamp, type: type, - uuid: uuid + uuid: uuid, + externalResources: externalResources?.map({ + SyncableExternalResource( + providerName: $0.providerName, + providerId: $0.providerId, + syncStatus: $0.syncStatus, + lastSyncedAt: $0.lastSyncedAt, + processedFile: $0.processedFile, + hostId: $0.hostId + ) + }) ) }) } @@ -372,6 +484,46 @@ extension LibraryService: LibrarySyncProtocol { } } } + + public func getItemResourcesSnapshot(for relativePath: String) -> (uuid: String, resources: [SyncableExternalResource])? { + let context = self.dataManager.getBackgroundContext() + + var snapshot: (uuid: String, resources: [SyncableExternalResource])? + context.performAndWait { + let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() + fetchRequest.predicate = NSPredicate(format: "%K == %@", #keyPath(LibraryItem.relativePath), relativePath) + fetchRequest.fetchLimit = 1 + + guard let item = try? context.fetch(fetchRequest).first else { return } + + let resources = item.resourcesArray.map { + SyncableExternalResource( + providerName: $0.providerName, + providerId: $0.providerId, + syncStatus: $0.syncStatus, + lastSyncedAt: $0.lastSyncedAt, + processedFile: $0.processedFile, + hostId: $0.hostId + ) + } + + snapshot = (uuid: item.uuid, resources: resources) + } + + return snapshot + } + + public func getItemReference(with relativePath: String, context: NSManagedObjectContext) -> LibraryItem? { + let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() + fetchRequest.predicate = NSPredicate(format: "%K == %@", #keyPath(LibraryItem.relativePath), relativePath) + fetchRequest.fetchLimit = 1 + fetchRequest.propertiesToFetch = [ + #keyPath(LibraryItem.relativePath), + #keyPath(LibraryItem.originalFileName), + ] + + return try? context.fetch(fetchRequest).first + } private func createBackup( for item: SimpleLibraryItem, diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 04364ad69..d9d2e7e92 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -11,6 +11,11 @@ import Combine import CoreData import Foundation +public enum ImportSource { + case local(files: [URL]) + case external(files: [SimpleExternalResource]) +} + /// sourcery: AutoMockable public protocol LibraryServiceProtocol: AnyObject { /// Metadata publisher that collects changes during 10 seconds before normalizing the payload @@ -56,6 +61,7 @@ public protocol LibraryServiceProtocol: AnyObject { func findBooks(containing fileURL: URL) -> [Book]? /// Fetch a single item with properties loaded func getSimpleItem(with relativePath: String) -> SimpleLibraryItem? + func getSimpleItem(for uuid: String) -> SimpleLibraryItem? /// Get items not included in a specific set func getItems(notIn relativePaths: [String], parentFolder: String?) -> [SimpleLibraryItem]? /// Fetch a property from a stored library item @@ -162,6 +168,22 @@ public protocol LibraryServiceProtocol: AnyObject { func setHardcoverBook(_ hardcoverBook: SimpleHardcoverBook?, for relativePath: String) async /// Get hardcover book for an item func getHardcoverBook(for relativePath: String) async -> SimpleHardcoverBook? + /// Create an external resource linking the item (by uuid) to a provider's resource. + /// Returns the syncable representation to upload, or nil if it already exists or the item is missing. + func setExternalResource(providerName: String, providerId: String, for uuid: String) async -> SyncableExternalResource? + /// Remove the external resource of the given provider from the item (by uuid). + /// Returns the deleted resource's providerId, or nil if there was nothing to delete. + func removeExternalResource(providerName: String, for uuid: String) async -> String? + /// Returns the item's external resources as lightweight values. + func getExternalResources(for relativePath: String) async -> [SimpleExternalResource] + + func findResource(for providerId: String, context: NSManagedObjectContext?) -> ExternalResource? + + func findResources(for uuid: String, context: NSManagedObjectContext?) -> [ExternalResource]? + + @MainActor func insertItems(from resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] + + func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) } // swiftlint:disable force_cast @@ -279,18 +301,6 @@ public final class LibraryService: LibraryServiceProtocol, @unchecked Sendable { } } - func getItemReference(with relativePath: String, context: NSManagedObjectContext) -> LibraryItem? { - let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() - fetchRequest.predicate = NSPredicate(format: "%K == %@", #keyPath(LibraryItem.relativePath), relativePath) - fetchRequest.fetchLimit = 1 - fetchRequest.propertiesToFetch = [ - #keyPath(LibraryItem.relativePath), - #keyPath(LibraryItem.originalFileName), - ] - - return try? context.fetch(fetchRequest).first - } - public func getItemReference(with relativePath: String) -> LibraryItem? { return getItemReference(with: relativePath, context: dataManager.getContext()) } @@ -424,6 +434,8 @@ public final class LibraryService: LibraryServiceProtocol, @unchecked Sendable { self?.rebuildFolderDetails(relativePath, context: context) } + let externalResources = self?.findResources(for: uuid, context: context) + return SimpleLibraryItem( title: title, details: dictionary["details"] as? String ?? "", @@ -441,6 +453,7 @@ public final class LibraryService: LibraryServiceProtocol, @unchecked Sendable { lastPlayDate: dictionary["lastPlayDate"] as? Date, type: type, uuid: uuid, + externalResources: externalResources?.map({ SimpleExternalResource(from: $0, ignoreLibraryItem: true) }) ) }) } @@ -576,7 +589,9 @@ extension LibraryService { return nil } - return SimpleLibraryItem(from: item) + return SimpleLibraryItem( + from: item, + ) } public func getLibraryCurrentTheme() -> SimpleTheme? { @@ -1282,6 +1297,29 @@ extension LibraryService { try self.delete(items, mode: .deep, context: context) } + + @MainActor + @discardableResult + public func insertItems(from resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] { + // Phase 2: Create CoreData entities on the main thread using pre-extracted data + let library = getLibraryReference() + var processedFiles = [SimpleLibraryItem]() + var nextOrderRank = getNextOrderRank(in: nil) + for resource in resources { + let libraryItem: LibraryItem + let book = await createExternalBook(simpleItem: resource.libraryItem!, externalResource: resource) + libraryItem = book + libraryItem.orderRank = nextOrderRank + nextOrderRank += 1 + + library.addToItems(libraryItem) + processedFiles.append(SimpleLibraryItem(from: libraryItem)) + } + + dataManager.saveContext() + + return processedFiles + } } // MARK: - Fetch library items @@ -1424,6 +1462,19 @@ extension LibraryService { return parseFetchedItems(from: results, context: context)?.first } + + public func getSimpleItem(for uuid: String) -> SimpleLibraryItem? { + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: "LibraryItem") + fetchRequest.predicate = NSPredicate(format: "%K == %@", #keyPath(LibraryItem.uuid), uuid) + fetchRequest.fetchLimit = 1 + fetchRequest.propertiesToFetch = SimpleLibraryItem.fetchRequestProperties + fetchRequest.resultType = .dictionaryResultType + + let context = dataManager.getContext() + let results = try? context.fetch(fetchRequest) as? [[String: Any]] + + return parseFetchedItems(from: results, context: context)?.first + } func getItem(with relativePath: String, context: NSManagedObjectContext) -> LibraryItem? { let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() @@ -1733,6 +1784,45 @@ extension LibraryService { self.dataManager.saveSyncContext(context) return newBook } + + public func createExternalBook(simpleItem: SimpleLibraryItem, externalResource: SimpleExternalResource) async -> LibraryItem { + let context = dataManager.getContext() + + let entity = NSEntityDescription.entity(forEntityName: "Book", in: context)! + let book = Book(entity: entity, insertInto: context) + book.relativePath = simpleItem.originalFileName + book.remoteURL = nil + book.artworkURL = simpleItem.artworkURL + let title = simpleItem.title + book.title = title.isEmpty ? simpleItem.title.replacingOccurrences(of: "_", with: " ") : title + let artist = simpleItem.details + book.details = artist.isEmpty ? "voiceover_unknown_author".localized : artist + book.duration = simpleItem.duration + book.currentTime = simpleItem.currentTime + book.percentCompleted = simpleItem.percentCompleted + book.originalFileName = simpleItem.originalFileName + book.isFinished = simpleItem.isFinished + book.type = .book + book.uuid = UUID().uuidString + + self.dataManager.saveSyncContext(context) + + let resourceEntity = NSEntityDescription.entity(forEntityName: "ExternalResource", in: context)! + let external = ExternalResource(entity: resourceEntity, insertInto: context) + + external.providerId = externalResource.providerId + external.providerName = externalResource.providerName + external.syncStatus = externalResource.syncStatus + external.lastSyncedAt = externalResource.lastSyncedAt + external.processedFile = externalResource.processedFile + external.hostId = externalResource.hostId + + external.libraryItem = book + book.addToExternalResources(external) + + self.dataManager.saveSyncContext(context) + return book + } public func loadChaptersIfNeeded(relativePath: String, asset: AVAsset) async { let context = dataManager.getBackgroundContext() @@ -2380,14 +2470,22 @@ extension LibraryService { } else { dataManager.saveContext() } - - progressPassthroughPublisher.send([ + + var params = [ #keyPath(LibraryItem.relativePath): relativePath, #keyPath(LibraryItem.currentTime): time, #keyPath(LibraryItem.lastPlayDate): date.timeIntervalSince1970, #keyPath(LibraryItem.percentCompleted): percentCompleted, #keyPath(LibraryItem.uuid): item.uuid - ]) + ] as [String : Any] + + if let externalResource = item.resourcesArray.first { + params[#keyPath(ExternalResource.providerId)] = externalResource.providerId + params[#keyPath(ExternalResource.providerName)] = externalResource.providerName + params["hostId"] = externalResource.hostId + } + + progressPassthroughPublisher.send(params) } func recursiveFolderLastPlayedDateUpdate(from relativePath: String, date: Date) { @@ -2738,6 +2836,65 @@ extension LibraryService { } } +extension LibraryService { + public func findResource(for providerId: String, context: NSManagedObjectContext? = nil) -> ExternalResource? { + let fetch: NSFetchRequest = ExternalResource.fetchRequest() + fetch.predicate = NSPredicate(format: "providerId == %@", providerId) + let context = context ?? self.dataManager.getContext() + + let result = try? context.fetch(fetch) + + return result?.first + } + + public func findResources(for uuid: String, context: NSManagedObjectContext? = nil) -> [ExternalResource]? { + let fetch: NSFetchRequest = ExternalResource.fetchRequest() + fetch.predicate = NSPredicate(format: "%K == %@", #keyPath(ExternalResource.libraryItem.uuid), uuid) + let context = context ?? self.dataManager.getContext() + + let result = try? context.fetch(fetch) + + return result + } + + public func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) { + let remoteKeys = Array(remoteItemsDictionary.keys) + + let fetch: NSFetchRequest = ExternalResource.fetchRequest() + fetch.predicate = NSPredicate( + format: "%K == %@ AND %K IN %@", + #keyPath(ExternalResource.providerName), ExternalResource.ProviderName.jellyfin.rawValue, + #keyPath(ExternalResource.providerId), remoteKeys + ) + let context = self.dataManager.getContext() + + do { + let localResources = try context.fetch(fetch) + + for localResource in localResources { + // We already know this exists because of our predicate! + guard let localItem = localResource.libraryItem, + let remoteItem = remoteItemsDictionary[localResource.providerId] else { + continue + } + + let localDate = localItem.lastPlayDate ?? .distantPast + let remoteDate = remoteItem.lastPlayedDate ?? .distantPast + + if remoteDate > localDate { + localItem.currentTime = Double(remoteItem.currentSeconds ?? 0) + localItem.isFinished = remoteItem.isFinished ?? localItem.isFinished + localItem.lastPlayDate = remoteDate + } + } + + try context.save() + } catch { + print("Failed to batch fetch ExternalResources: \(error)") + } + } +} + // MARK: - HardcoverBook operations extension LibraryService { public func setHardcoverBook(_ hardcoverBook: SimpleHardcoverBook?, for relativePath: String) async { @@ -2768,6 +2925,97 @@ extension LibraryService { } } + public func setExternalResource( + providerName: String, + providerId: String, + for uuid: String + ) async -> SyncableExternalResource? { + return await withCheckedContinuation { continuation in + let context = dataManager.getBackgroundContext() + + context.perform { [unowned self, context] in + let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() + fetchRequest.predicate = NSPredicate(format: "%K == %@", #keyPath(LibraryItem.uuid), uuid) + fetchRequest.fetchLimit = 1 + + guard let item = try? context.fetch(fetchRequest).first else { + continuation.resume(returning: nil) + return + } + + /// Skip if the same resource is already linked + if item.resourcesArray.contains(where: { + $0.providerName == providerName && $0.providerId == providerId + }) { + continuation.resume(returning: nil) + return + } + + let syncable = SyncableExternalResource( + providerName: providerName, + providerId: providerId, + syncStatus: ExternalResource.SyncStatus.notSynced.rawValue, + lastSyncedAt: nil, + processedFile: true, + hostId: nil + ) + + _ = ExternalResource.create(syncable, libraryItem: item, in: context) + + dataManager.saveSyncContext(context) + continuation.resume(returning: syncable) + } + } + } + + public func removeExternalResource( + providerName: String, + for uuid: String + ) async -> String? { + return await withCheckedContinuation { continuation in + let context = dataManager.getBackgroundContext() + + context.perform { [unowned self, context] in + let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() + fetchRequest.predicate = NSPredicate(format: "%K == %@", #keyPath(LibraryItem.uuid), uuid) + fetchRequest.fetchLimit = 1 + + guard + let item = try? context.fetch(fetchRequest).first, + let resource = item.resourcesArray.first(where: { $0.providerName == providerName }) + else { + continuation.resume(returning: nil) + return + } + + let providerId = resource.providerId + item.removeFromExternalResources(resource) + context.delete(resource) + + dataManager.saveSyncContext(context) + continuation.resume(returning: providerId) + } + } + } + + public func getExternalResources(for relativePath: String) async -> [SimpleExternalResource] { + return await withCheckedContinuation { continuation in + let context = dataManager.getBackgroundContext() + + context.perform { [unowned self, context] in + guard let item = getItemReference(with: relativePath, context: context) else { + continuation.resume(returning: []) + return + } + + let resources = item.resourcesArray.map { + SimpleExternalResource(from: $0, ignoreLibraryItem: true) + } + continuation.resume(returning: resources) + } + } + } + public func getHardcoverBook(for relativePath: String) async -> SimpleHardcoverBook? { return await withCheckedContinuation { continuation in let context = dataManager.getBackgroundContext() @@ -2814,4 +3062,6 @@ extension LibraryService { } } } + + // swiftlint:enable force_cast diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index 6692d7da7..e0a27d795 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -221,6 +221,46 @@ public final class PlaybackService: PlaybackServiceProtocol { /// Ignore chapters that don't have the duration set properly chapters = chapters.filter { $0.duration > 0 } + // Resolve connection info once for the book + var externalUrl: URL? + var externalHeaders: [String: String] = [:] + + let externalResource = book.externalResources?.first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) + if let providerRaw = externalResource?.providerName, + let provider = ExternalResource.ProviderName(rawValue: providerRaw) { + + let keychainService = KeychainService() + let hostId = externalResource?.hostId ?? "" + + switch provider { + case .jellyfin: + let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] + let connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) + ?? connections.first + + if let connection = connection, let externalResource = externalResource { + let urlString = connection.buildDownloadUrl(providerId: externalResource.providerId) + externalUrl = URL(string: urlString) + externalHeaders = ["Authorization": "MediaBrowser Token=\"\(connection.accessToken)\""] + } + + case .audiobookshelf: + let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] + let connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) + ?? connections.first + + if let connection = connection, let externalResource = externalResource { + let urlString = connection.buildAudiobookshelfDownloadUrl(providerId: externalResource.providerId) + externalUrl = URL(string: urlString) + externalHeaders = ["Authorization": "Bearer \(connection.apiToken)"] + } + + default: + break + } + } + + // If no chapters, create a single one using the book metadata guard !chapters.isEmpty else { return [ PlayableChapter( @@ -230,11 +270,14 @@ public final class PlaybackService: PlaybackServiceProtocol { duration: book.duration, relativePath: book.relativePath, remoteURL: book.remoteURL, - index: 1 + externalURL: externalUrl ?? book.remoteURL, + index: 1, + externalHeaders: externalHeaders ) ] } + // Map existing chapters and apply resolved connection info return chapters.enumerated() .map({ (index, chapter) in return PlayableChapter( @@ -244,7 +287,9 @@ public final class PlaybackService: PlaybackServiceProtocol { duration: chapter.duration, relativePath: book.relativePath, remoteURL: book.remoteURL, - index: Int16(index + 1) + externalURL: externalUrl, + index: Int16(index + 1), + externalHeaders: externalHeaders ) }) } @@ -325,6 +370,7 @@ public final class PlaybackService: PlaybackServiceProtocol { duration: truncatedDuration, relativePath: nestedChapter.relativePath, remoteURL: nestedChapter.remoteURL, + externalURL: nestedChapter.externalUrl, index: index, chapterOffset: nestedChapters.count == 1 ? 0 : localCurrentDuration ) diff --git a/Shared/Services/Sync/ApiResponse.swift b/Shared/Services/Sync/ApiResponse.swift index 4972f1309..7b468107c 100644 --- a/Shared/Services/Sync/ApiResponse.swift +++ b/Shared/Services/Sync/ApiResponse.swift @@ -8,6 +8,7 @@ public enum ApiResponse { case matchUuid(MatchUuidsResponse) + case uploadMetadata(UploadResponse) } public struct MatchUuidsResponse: Decodable { @@ -33,3 +34,9 @@ public struct ItemConflict: Decodable { self.uuid = uuid } } + +public struct UploadResponse: Decodable { + let uuid: String + let filePath: String + let remotePath: String? +} diff --git a/Shared/Services/Sync/LibraryAPI.swift b/Shared/Services/Sync/LibraryAPI.swift index ae3e10f28..ad572ad6a 100644 --- a/Shared/Services/Sync/LibraryAPI.swift +++ b/Shared/Services/Sync/LibraryAPI.swift @@ -11,18 +11,21 @@ import Foundation public enum LibraryAPI { case syncedIdentifiers case contents(path: String) - case upload(params: [String: Any]) - case update(params: [String: Any]) + case upload(params: [String: Any]) //check + case externalResource(params: [String: Any]) + case update(params: [String: Any]) //check case move(origin: String, destination: String, uuid: String) case renameFolder(path: String, name: String, uuid: String) case remoteFileURL(path: String, uuid: String?) case remoteContentsURL(path: String, uuid: String?) - case delete(path: String, uuid: String) + case delete(path: String, uuid: String) //check case shallowDelete(path: String, uuid: String) case bookmarks(path: String, uuid: String?) - case setBookmark(path: String, note: String?, time: Double, isActive: Bool, uuid: String) + case setBookmark(path: String, note: String?, time: Double, isActive: Bool, uuid: String) //check case uploadArtwork(path: String, filename: String, uploaded: Bool?, uuid: String) case matchUuids(uuidsDictionary: [String: String]) + case externalResourceToDownload(uuid: String, uploaded: Bool) + case deleteExternalResource(uuid: String, providerName: String, providerId: String) } extension LibraryAPI: Endpoint { @@ -56,6 +59,12 @@ extension LibraryAPI: Endpoint { return "/v1/library/thumbnail_set" case .matchUuids: return "/v1/library/uuids" + case .externalResource: + return "/v1/library/external" + case .externalResourceToDownload: + return "/v1/library/external_set" + case .deleteExternalResource: + return "/v1/library/external" } } @@ -89,6 +98,12 @@ extension LibraryAPI: Endpoint { return .post case .matchUuids: return .post + case .externalResource: + return .put + case .externalResourceToDownload: + return .post + case .deleteExternalResource: + return .delete } } @@ -101,7 +116,7 @@ extension LibraryAPI: Endpoint { "relativePath": path, "sign": true ] - case .upload( let params): + case .upload(let params): return params case .update(let params): return params @@ -164,6 +179,19 @@ extension LibraryAPI: Endpoint { return [ "items": uuidsDictionary ] + case .externalResource(let params): + return params + case .externalResourceToDownload(let uuid, let uploaded): + return [ + "uuid": uuid, + "uploaded": uploaded + ] + case .deleteExternalResource(let uuid, let providerName, let providerId): + return [ + "uuid": uuid, + "providerName": providerName, + "providerId": providerId + ] } } } diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index dd2ca9262..cafb54099 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -9,46 +9,7 @@ import Foundation import Combine -/// Reference: https://www.avanderlee.com/swift/asynchronous-operations/ -class LibraryItemSyncOperation: Operation, BPLogger { - // MARK: - Async operation properties - - private var cellularDataObserver: NSKeyValueObservation? - private let lockQueue = DispatchQueue(label: "com.bookplayer.asyncoperation.synctask", attributes: .concurrent) - override var isAsynchronous: Bool { true } - - private var _isExecuting: Bool = false - override private(set) var isExecuting: Bool { - get { - return lockQueue.sync { () -> Bool in - return _isExecuting - } - } - set { - willChangeValue(forKey: "isExecuting") - lockQueue.sync(flags: [.barrier]) { - _isExecuting = newValue - } - didChangeValue(forKey: "isExecuting") - } - } - - private var _isFinished: Bool = false - override private(set) var isFinished: Bool { - get { - return lockQueue.sync { () -> Bool in - return _isFinished - } - } - set { - willChangeValue(forKey: "isFinished") - lockQueue.sync(flags: [.barrier]) { - _isFinished = newValue - } - didChangeValue(forKey: "isFinished") - } - } - +class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { // MARK: - Library sync properties let client: NetworkClientProtocol @@ -79,17 +40,6 @@ class LibraryItemSyncOperation: Operation, BPLogger { self.uuid = task.uuid } - override func start() { - guard !isCancelled else { - finish() - return - } - - isFinished = false - isExecuting = true - main() - } - // TODO: split into separate Operations override func main() { Task { @@ -141,6 +91,26 @@ class LibraryItemSyncOperation: Operation, BPLogger { case .matchUuid: try await handleMatchUuids() finish() + case .externalResource: + let _: Empty = try await self.provider.request(.externalResource(params: self.parameters)) + finish() + case .externalResourceToDownload: + try await handleExternalResourceToDownload() + finish() + case .deleteExternalResource: + guard + let providerName = parameters["providerName"] as? String, + let providerId = parameters["providerId"] as? String + else { + throw BookPlayerError.runtimeError("Missing parameters for deleting an external resource") + } + let _: Empty = try await self.provider.request( + .deleteExternalResource(uuid: uuid, providerName: providerName, providerId: providerId) + ) + finish() + case .externalUpdate, .uploadFile: + /// Handled by their dedicated operations, never routed here + throw BookPlayerError.runtimeError("Unsupported job type for sync operation: \(jobType.rawValue)") } } catch { self.error = error @@ -149,9 +119,9 @@ class LibraryItemSyncOperation: Operation, BPLogger { } } - func finish() { - isExecuting = false - isFinished = true + override func finish() { + didSucceed = error == nil + super.finish() } } @@ -159,8 +129,9 @@ class LibraryItemSyncOperation: Operation, BPLogger { extension LibraryItemSyncOperation { func handleUploadJob(type: SimpleItemType) async throws { - let response: UploadItemResponse = try await provider.request(.upload(params: parameters)) - + /// `provider` is client-side metadata (gates the follow-up file upload); keep it out of the request + let uploadParams = parameters.filter { $0.key != "provider" } + let response: UploadItemResponse = try await provider.request(.upload(params: uploadParams)) guard let remoteURL = response.content.url else { /// The file is already present in the storage try await markUploadAsSynced(uuid: self.uuid) @@ -196,108 +167,15 @@ extension LibraryItemSyncOperation { return } - await uploadFile( - fileURL: fileURL, - remoteURL: remoteURL, - relativePath: self.relativePath - ) - } - - /// Upload file on a background thread - func uploadFile( - fileURL: URL, - remoteURL: URL, - relativePath: String - ) async { - let session: URLSession = UserDefaults.standard.bool(forKey: Constants.UserDefaults.allowCellularData) - ? BPURLSession.shared.backgroundCellularSession - : BPURLSession.shared.backgroundSession - - let uploadTask = await self.client.uploadTask( - fileURL, - remoteURL: remoteURL, - taskDescription: relativePath, - session: session - ) - - bindUploadObservers() - - cellularDataObserver?.invalidate() - cellularDataObserver = UserDefaults.standard.observe( - \.userSettingsAllowCellularData, - options: [.new] - ) { [weak self] _, change in - guard let newValue = change.newValue else { return } - - let previousSession: URLSession = newValue - ? BPURLSession.shared.backgroundSession - : BPURLSession.shared.backgroundCellularSession - - self?.rescheduleUploadFile( - fileURL: fileURL, - remoteURL: remoteURL, - relativePath: relativePath, - previousSession: previousSession - ) - } - - uploadTask.resume() + results = .uploadMetadata(UploadResponse(uuid: self.uuid, filePath: fileURL.absoluteString, remotePath: remoteURL.absoluteString)) + self.handleUploadFinished() } - func bindUploadObservers() { - progressSubscriber?.cancel() - progressSubscriber = BPURLSession.shared.progressPublisher.sink(receiveValue: { [uuid, relativePath] (path, progress) in - guard path == relativePath else { return } - NotificationCenter.default.post( - name: .uploadProgressUpdated, - object: nil, - userInfo: [ - "progress": progress, - "relativePath": path, - "uuid": uuid - ] - ) - }) - - completionSubscriber?.cancel() - completionSubscriber = BPURLSession.shared.completionPublisher.sink(receiveValue: { [weak self] (task, error) in - self?.cellularDataObserver?.invalidate() - if let nserror = error as? NSError, - nserror.domain == NSURLErrorDomain, - nserror.code == NSURLErrorCancelled { - /// Do nothing, as the task is already being rescheduled - } else if let error { - self?.error = error - self?.finish() - } else { - self?.handleUploadFinished(task) - } - }) - } - - func rescheduleUploadFile( - fileURL: URL, - remoteURL: URL, - relativePath: String, - previousSession: URLSession - ) { + func handleUploadFinished() { Task { - let task = await previousSession.allTasks.filter({ $0.taskDescription == relativePath }).first - task?.cancel() - - await self.uploadFile( - fileURL: fileURL, - remoteURL: remoteURL, - relativePath: relativePath - ) - } - } - - func handleUploadFinished(_ task: URLSessionTask) { - Task { [task] in do { try await markUploadAsSynced(uuid: uuid) - NotificationCenter.default.post(name: .uploadCompleted, object: task) + NotificationCenter.default.post(name: .uploadCompleted, object: nil) finish() } catch { self.error = error @@ -377,6 +255,34 @@ extension LibraryItemSyncOperation { } } +extension LibraryItemSyncOperation { + func handleExternalResourceToDownload() async throws { + let response: UploadItemContent = try await self.provider.request( + .externalResourceToDownload(uuid: uuid, uploaded: false) + ) + + let hardLinkURL = FileManager.default.temporaryDirectory.appendingPathComponent(self.relativePath) + let fileURL = FileManager.default.fileExists(atPath: hardLinkURL.path) + ? hardLinkURL + : DataManager.getProcessedFolderURL().appendingPathComponent(self.relativePath) + + guard let data = FileManager.default.contents(atPath: fileURL.path), + let remoteUrl = response.url else { + return + } + + do { + try await client.upload(data, remoteURL: remoteUrl) + } catch { + print("Failed to upload data to \(remoteUrl): \(error)") + } + + let _: Empty = try await self.provider.request( + .externalResourceToDownload(uuid: uuid, uploaded: true) + ) + } +} + extension LibraryItemSyncOperation { func handleMatchUuids() async throws { guard diff --git a/Shared/Services/Sync/Model/RemoteFileURLResponse.swift b/Shared/Services/Sync/Model/RemoteFileURLResponse.swift index 19e6ff2d9..05afe7276 100644 --- a/Shared/Services/Sync/Model/RemoteFileURLResponse.swift +++ b/Shared/Services/Sync/Model/RemoteFileURLResponse.swift @@ -12,9 +12,11 @@ public struct RemoteFileURL: Decodable { public let url: URL public let relativePath: String public let type: SimpleItemType + public let externalResources: [SyncableExternalResource]? + public let headers: [String: String]? enum CodingKeys: CodingKey { - case url, relativePath, type + case url, relativePath, type, externalResources, headers } } diff --git a/Shared/Services/Sync/Model/SyncableExternalResource.swift b/Shared/Services/Sync/Model/SyncableExternalResource.swift new file mode 100644 index 000000000..7ee1f9bf1 --- /dev/null +++ b/Shared/Services/Sync/Model/SyncableExternalResource.swift @@ -0,0 +1,59 @@ +// +// SyncableExternalResource.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 27/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +public struct SyncableExternalResource { + public let providerName: String + public let providerId: String + public let syncStatus: String + public let lastSyncedAt: Date? + public let processedFile: Bool + public let hostId: String? + + static var fetchRequestProperties = [ + "providerName", + "providerId", + "syncStatus", + "lastSyncedAt", + "processedFile", + "hostId" + ] +} + +extension SyncableExternalResource: Decodable { + enum CodingKeys: String, CodingKey { + case providerName + case providerId + case syncStatus + case lastSyncedAt + case processedFile + case hostId + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.providerName = try container.decode(String.self, forKey: .providerName) + self.providerId = try container.decode(String.self, forKey: .providerId) + self.syncStatus = try container.decode(String.self, forKey: .syncStatus) + self.lastSyncedAt = try? container.decode(Date.self, forKey: .lastSyncedAt) + self.processedFile = try container.decode(Bool.self, forKey: .processedFile) + self.hostId = try? container.decode(String.self, forKey: .hostId) + } +} + +extension SyncableExternalResource { + public init(from item: SimpleExternalResource) { + self.providerName = item.providerName + self.providerId = item.providerId + self.syncStatus = item.syncStatus + self.lastSyncedAt = item.lastSyncedAt + self.processedFile = true + self.hostId = item.hostId + } +} diff --git a/Shared/Services/Sync/Model/SyncableItem.swift b/Shared/Services/Sync/Model/SyncableItem.swift index 5d0915eb4..b540d0cdc 100644 --- a/Shared/Services/Sync/Model/SyncableItem.swift +++ b/Shared/Services/Sync/Model/SyncableItem.swift @@ -24,6 +24,7 @@ public struct SyncableItem { public let lastPlayDateTimestamp: Double? let type: SimpleItemType let uuid: String + var externalResources: [SyncableExternalResource]? static var fetchRequestProperties = [ "relativePath", @@ -61,6 +62,7 @@ extension SyncableItem: Decodable { case lastPlayDateTimestamp case type case uuid + case externalResources } public init(from decoder: Decoder) throws { @@ -80,6 +82,7 @@ extension SyncableItem: Decodable { self.orderRank = try container.decodeIfPresent(Int.self, forKey: .orderRank) ?? 0 self.lastPlayDateTimestamp = try container.decodeIfPresent(Double.self, forKey: .lastPlayDateTimestamp) self.type = try container.decode(SimpleItemType.self, forKey: .type) + self.externalResources = try? container.decode([SyncableExternalResource].self, forKey: .externalResources) self.uuid = myUuid ?? "" } } @@ -101,6 +104,9 @@ extension SyncableItem { self.lastPlayDateTimestamp = item.lastPlayDate?.timeIntervalSince1970 self.type = item.type self.uuid = item.uuid + self.externalResources = item.externalResources?.map({ + SyncableExternalResource(from: $0) + }) } public func copy( diff --git a/Shared/Services/Sync/Model/UploadItemResponse.swift b/Shared/Services/Sync/Model/UploadItemResponse.swift index 6d0b338cd..e61d4255f 100644 --- a/Shared/Services/Sync/Model/UploadItemResponse.swift +++ b/Shared/Services/Sync/Model/UploadItemResponse.swift @@ -12,6 +12,6 @@ struct UploadItemResponse: Decodable { let content: UploadItemContent } -struct UploadItemContent: Decodable { +public struct UploadItemContent: Decodable { let url: URL? } diff --git a/Shared/Services/Sync/SyncJobScheduler.swift b/Shared/Services/Sync/SyncJobScheduler.swift index 4e185b30e..7879bb86d 100644 --- a/Shared/Services/Sync/SyncJobScheduler.swift +++ b/Shared/Services/Sync/SyncJobScheduler.swift @@ -8,19 +8,14 @@ import Combine import Foundation -import CoreData -import SwiftData public protocol JobSchedulerProtocol { - /// Last sync error information for debugging - var lastSyncError: SyncErrorInfo? { get } - func queuedJobsCount() async -> Int /// Uploads the metadata for the first time to the server func scheduleLibraryItemUploadJob(for item: SyncableItem) async /// Update existing metadata in the server func scheduleMetadataUpdateJob(with relativePath: String, parameters: [String: Any]) async - + func scheduleMatchUuidsJob(uuidsDict: [String: String]) async /// Move item to destination func scheduleMoveItemJob(with itemOrigin: LibraryItemRef, to parentFolder: LibraryItemRef?) async @@ -43,63 +38,35 @@ public protocol JobSchedulerProtocol { func getAllQueuedJobs() async -> [SyncTaskReference] /// Get all queued jobs with full parameters func getAllQueuedJobsWithParams() async -> [SyncTask] - /// Cancel all stored and ongoing jobs + /// Cancel all stored jobs across every queue func cancelAllJobs() - /// Cancel all stored and ongoing jobs and wait for completion + /// Cancel all stored sync jobs and wait for completion func resetAllJobs() async /// Check if there's an upload task queued for the item func hasUploadTask(for relativePath: String) async -> Bool + + func scheduleExternalResourceUpload(for externalResource: SyncableExternalResource, itemOrigin: LibraryItemRef) async + /// Delete an external resource on the server + func scheduleDeleteExternalResource(providerName: String, providerId: String, itemOrigin: LibraryItemRef) async + + func scheduleResourceToDownload(with relativePath: String, for uuid: String?, uploaded: Bool) async } +/// Scheduling facade for the serial BookPlayer-server queue: builds task parameters +/// and persists them under the `sync` queue key. Execution lives in `ConcurrenceService`. public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { - let networkClient: NetworkClientProtocol - let operationQueue: OperationQueue - let tasksDataManager: TasksDataManager - let dataManager: DataManager - + let tasksRepository: ConcurrentTasksRepositoryProtocol + /// Reference for observer - private var syncTasksObserver: NSKeyValueObservation? private var disposeBag = Set() - private let lockQueue = DispatchQueue(label: "com.bookplayer.synctask.schedule") - /// Reference to ongoing library fetch task - private var initializeStoreTask: Task<(), Error>? - private var taskStore: SyncTasksStorage! private var tasksProgress: [String: Double] = [:] - /// Last sync error information for debugging - public private(set) var lastSyncError: SyncErrorInfo? - - public init( - tasksDataManager: TasksDataManager, - networkClient: NetworkClientProtocol = NetworkClient(), - operationQueue: OperationQueue = OperationQueue(), - dataManager: DataManager - ) { - operationQueue.maxConcurrentOperationCount = 1 - self.operationQueue = operationQueue - self.networkClient = networkClient - self.tasksDataManager = tasksDataManager - self.dataManager = dataManager - + + public init(tasksRepository: ConcurrentTasksRepositoryProtocol) { + self.tasksRepository = tasksRepository bindObservers() } - + func bindObservers() { - NotificationCenter.default.publisher(for: .uploadCompleted) - .sink { notification in - guard - let task = notification.object as? URLSessionTask, - let relativePath = task.taskDescription - else { return } - - do { - let hardLinkURL = FileManager.default.temporaryDirectory.appendingPathComponent(relativePath) - try FileManager.default.removeItem(at: hardLinkURL) - } catch { - Self.logger.warning("Failed to delete hard link for \(relativePath): \(error.localizedDescription)") - } - } - .store(in: &disposeBag) - NotificationCenter.default.publisher(for: .uploadProgressUpdated) .receive(on: DispatchQueue.main) .sink { [weak self] notification in @@ -112,41 +79,26 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { self?.updateProgress(for: key, value: progress) } .store(in: &disposeBag) - - initializeStore() } - - private func initializeStore() { - initializeStoreTask = Task.detached { - do { - self.taskStore = try SyncTasksStorage(tasksDataManager: self.tasksDataManager) - } catch { - fatalError("Failed to initialize sync tasks store: \(error.localizedDescription)") - } - - /// This will start the loop where it will periodically check for queued tasks to execute - self.queueNextTask() - } - } - + private func createHardLink(for item: SyncableItem) { let hardLinkURL = FileManager.default.temporaryDirectory.appendingPathComponent(item.relativePath) - + let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(item.relativePath) - + /// Clean up in case hard link path is already used if FileManager.default.fileExists(atPath: hardLinkURL.path) { try? FileManager.default.removeItem(at: hardLinkURL) } - + /// Don't throw and let the rest of the items queue up try? FileManager.default.linkItem(at: fileURL, to: hardLinkURL) } - + public func scheduleLibraryItemUploadJob(for item: SyncableItem) async { /// Create hard link to file location in case the user moves the item around in the library createHardLink(for: item) - + var parameters: [String: Any] = [ "id": UUID().uuidString, "uuid": item.uuid, @@ -162,20 +114,58 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { "type": item.type.rawValue, "jobType": SyncJobType.upload.rawValue, ] - + if let lastPlayTimestamp = item.lastPlayDateTimestamp { parameters["lastPlayDateTimestamp"] = Int(lastPlayTimestamp) } else { parameters["lastPlayDateTimestamp"] = nil } - + if let speed = item.speed { parameters["speed"] = speed } - + + if let provider = item.externalResources?.first?.providerName { + parameters["provider"] = provider + } + + await persistTask(parameters: parameters) + } + + public func scheduleExternalResourceUpload(for externalResource: SyncableExternalResource, itemOrigin: LibraryItemRef) async { + let parameters: [String: Any] = [ + "id": UUID().uuidString, + "providerId": externalResource.providerId, + "providerName": externalResource.providerName, + "lastSyncedAt": externalResource.lastSyncedAt as Any, + "processedFile": externalResource.processedFile, + "syncStatus": externalResource.syncStatus, + "hostId": externalResource.hostId as Any, + "jobType": SyncJobType.externalResource.rawValue, + "uuid": itemOrigin.uuid, + "relativePath": itemOrigin.relativePath + ] + + await persistTask(parameters: parameters) + } + + public func scheduleDeleteExternalResource( + providerName: String, + providerId: String, + itemOrigin: LibraryItemRef + ) async { + let parameters: [String: Any] = [ + "id": UUID().uuidString, + "providerName": providerName, + "providerId": providerId, + "jobType": SyncJobType.deleteExternalResource.rawValue, + "uuid": itemOrigin.uuid, + "relativePath": itemOrigin.relativePath + ] + await persistTask(parameters: parameters) } - + public func scheduleMoveItemJob(with itemOrigin: LibraryItemRef, to parentFolder: LibraryItemRef?) async { let useUuids = Constants.isRealUuid(itemOrigin.uuid) @@ -190,19 +180,19 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { await persistTask(parameters: parameters) } - + /// Note: folder renames originalFilename property public func scheduleMetadataUpdateJob(with relativePath: String, parameters: [String: Any]) async { var parameters = parameters parameters["jobType"] = SyncJobType.update.rawValue parameters["id"] = UUID().uuidString - + await persistTask(parameters: parameters) } - + public func scheduleMatchUuidsJob(uuidsDict: [String: String]) async { guard !uuidsDict.isEmpty else { return } - + let parameters: [String: Any] = [ "jobType": SyncJobType.matchUuid.rawValue, "id": UUID().uuidString, @@ -212,27 +202,27 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { ] await persistTask(parameters: parameters) } - + public func scheduleDeleteJob(with relativePath: String, mode: DeleteMode, for uuid: String) async { let jobType: SyncJobType - + switch mode { case .deep: jobType = SyncJobType.delete case .shallow: jobType = SyncJobType.shallowDelete } - + let parameters: [String: Any] = [ "id": UUID().uuidString, "uuid": uuid, "relativePath": relativePath, "jobType": jobType.rawValue, ] - + await persistTask(parameters: parameters) } - + public func scheduleDeleteBookmarkJob(with relativePath: String, time: Double, for uuid: String) async { let parameters: [String: Any] = [ "id": UUID().uuidString, @@ -241,10 +231,10 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { "time": time, "jobType": SyncJobType.deleteBookmark.rawValue, ] - + await persistTask(parameters: parameters) } - + public func scheduleSetBookmarkJob( with relativePath: String, time: Double, @@ -258,14 +248,14 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { "time": time, "jobType": SyncJobType.setBookmark.rawValue, ] - + if let note { params["note"] = note } - + await persistTask(parameters: params) } - + public func scheduleRenameFolderJob(with relativePath: String, name: String, for uuid: String) async { let params: [String: Any] = [ "id": UUID().uuidString, @@ -274,10 +264,10 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { "name": name, "jobType": SyncJobType.renameFolder.rawValue, ] - + await persistTask(parameters: params) } - + public func scheduleArtworkUpload(with relativePath: String, for uuid: String) async { let params: [String: Any] = [ "id": UUID().uuidString, @@ -285,180 +275,73 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { "relativePath": relativePath, "jobType": SyncJobType.uploadArtwork.rawValue, ] - + await persistTask(parameters: params) } - + + public func scheduleResourceToDownload(with relativePath: String, for uuid: String?, uploaded: Bool) async { + var params: [String: Any] = [ + "id": UUID().uuidString, + "relativePath": relativePath, + "jobType": SyncJobType.externalResourceToDownload.rawValue, + "uploaded": uploaded + ] + + if let uuid = uuid { + params["uuid"] = uuid + } + + await persistTask(parameters: params) + } + public func getAllQueuedJobs() async -> [SyncTaskReference] { - _ = await initializeStoreTask?.result let currentProgress = await MainActor.run { tasksProgress } - return await taskStore.getAllTasks(progress: currentProgress) + return await tasksRepository.getAllTasks(in: TaskQueueKey.sync, progress: currentProgress) } - + public func getAllQueuedJobsWithParams() async -> [SyncTask] { - _ = await initializeStoreTask?.result - return await taskStore.getAllTasksWithParams() + return await tasksRepository.getAllTasksWithParams(in: TaskQueueKey.sync) } - + public func cancelAllJobs() { Task { - _ = await initializeStoreTask?.result - try await taskStore.clearAll() - operationQueue.cancelAllOperations() + try? await tasksRepository.clearAll() await MainActor.run { tasksProgress.removeAll() } } } - + public func resetAllJobs() async { - _ = await initializeStoreTask?.result - try? await taskStore.clearAll() - operationQueue.cancelAllOperations() + try? await tasksRepository.clearAll(in: TaskQueueKey.sync) await MainActor.run { tasksProgress.removeAll() } } - + public func queuedJobsCount() async -> Int { - _ = await initializeStoreTask?.result - return await taskStore.getTasksCount() + return await tasksRepository.getTasksCount(in: TaskQueueKey.sync) } - + private func persistTask(parameters: [String: Any]) async { + var parameters = parameters + parameters["queueKey"] = TaskQueueKey.sync do { - _ = await initializeStoreTask?.result - try await taskStore.appendTask(parameters: parameters) + try await tasksRepository.storeTask(parameters: parameters) } catch { Self.logger.error("Failed to persist task \(error): \(parameters.description)") } } - + /// Check if there's an upload task queued for the item public func hasUploadTask(for relativePath: String) async -> Bool { - return await taskStore.hasUploadTask(for: relativePath) - } - - private func queueNextTask() { - Task { - _ = await initializeStoreTask?.result - - do { - guard - let task = try await self.taskStore.getNextTask() - else { - self.retryQueuedTask() - return - } - - let operationTask = LibraryItemSyncOperation( - client: networkClient, - task: task - ) - - operationTask.completionBlock = { [weak self, weak operationTask] in - guard let self else { - return - } - let error = operationTask?.error - let results = operationTask?.results - - if let error { - Self.logger.error("Operation failed: \(error.localizedDescription)") - Task { @MainActor [weak self] in - self?.lastSyncError = SyncErrorInfo( - taskId: task.id, - uuid: task.uuid, - jobType: task.jobType, - error: error.localizedDescription - ) - } - self.retryQueuedTask() - } else { - Task { [weak self] in - guard let self else { return } - if let results { - switch results { - case .matchUuid(let response): - await self.handleMatchUuidsResponse(response) - } - } - self.handleFinishedTask(task) - } - } - } - - operationQueue.addOperation(operationTask) - } catch { - Self.logger.error("\(error.localizedDescription)") - } - } + return await tasksRepository.hasUploadTask(for: relativePath) } - + private func updateProgress( for key: String, value: Double ) { tasksProgress[key] = value } - - private func retryQueuedTask() { - /// Retry in 5 seconds - lockQueue.asyncAfter(deadline: .now() + .seconds(5)) { - self.queueNextTask() - } - } - - private func handleFinishedTask(_ task: SyncTask) { - lockQueue.asyncAfter(deadline: .now() + .seconds(1)) { - Task { @MainActor in - _ = await self.initializeStoreTask?.result - try! await self.taskStore.finishedTask(id: task.id, jobType: task.jobType) - self.queueNextTask() - self.tasksProgress.removeValue(forKey: task.progressKey) - } - } - } - - private func handleMatchUuidsResponse(_ results: MatchUuidsResponse) async { - guard !results.conflicts.isEmpty else { return } - do { - try await applyCoreDataConflicts(results.conflicts) - try await taskStore.applyMatchUuidConflicts(results.conflicts) - } catch { - Self.logger.error("Failed to apply matchUuid conflicts: \(error.localizedDescription)") - await MainActor.run { - self.lastSyncError = SyncErrorInfo( - taskId: "", - uuid: "", - jobType: .matchUuid, - error: error.localizedDescription - ) - } - } - } - - private func applyCoreDataConflicts(_ conflicts: [ItemConflict]) async throws { - let context = dataManager.getBackgroundContext() - try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in - context.perform { - do { - let oldUuids = conflicts.map { $0.key } - let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() - fetchRequest.predicate = NSPredicate(format: "uuid IN %@", oldUuids) - let items = try context.fetch(fetchRequest) - let uuidMap = Dictionary(uniqueKeysWithValues: conflicts.map { ($0.key, $0.uuid) }) - for item in items { - if let newUuid = uuidMap[item.uuid] { - item.uuid = newUuid - } - } - try context.save() - continuation.resume() - } catch { - continuation.resume(throwing: error) - } - } - } - } } diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 07db9bb68..08f1fd00c 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -83,7 +83,13 @@ public protocol SyncServiceProtocol { func scheduleDeleteBookmark(_ bookmark: SimpleBookmark) func scheduleUploadArtwork(relativePath: String, uuid: String) - + + /// Upload a newly linked external resource + func scheduleExternalResourceUpload(_ resource: SyncableExternalResource, relativePath: String, uuid: String) + + /// Delete an external resource on the server + func scheduleExternalResourceDeletion(providerName: String, providerId: String, relativePath: String, uuid: String) + /// Get all queued jobs func getAllQueuedJobs() async -> [SyncTaskReference] /// Get all queued jobs with full parameters for debugging @@ -110,6 +116,7 @@ public protocol SyncServiceProtocol { public final class SyncService: SyncServiceProtocol, BPLogger { private var libraryService: LibrarySyncProtocol! private var accountService: AccountServiceProtocol! + private var concurrenceService: ConcurrenceServiceProtocol! private var tasksCountService: SyncTasksCountService! var jobManager: JobSchedulerProtocol! private var client: NetworkClientProtocol! @@ -147,15 +154,16 @@ public final class SyncService: SyncServiceProtocol, BPLogger { isActive: Bool, libraryService: LibrarySyncProtocol, accountService: AccountServiceProtocol, - client: NetworkClientProtocol = NetworkClient(), - dataManager: DataManager + concurrenceService: ConcurrenceServiceProtocol, + tasksDataManager: TasksDataManager, + client: NetworkClientProtocol = NetworkClient() ) { self.isActive = isActive self.libraryService = libraryService self.accountService = accountService - let tasksDataManager = TasksDataManager() + self.concurrenceService = concurrenceService self.tasksCountService = SyncTasksCountService(tasksDataManager: tasksDataManager) - self.jobManager = SyncJobScheduler(tasksDataManager: tasksDataManager, dataManager: dataManager) + self.jobManager = SyncJobScheduler(tasksRepository: concurrenceService.taskContainer) self.client = client self.provider = NetworkProvider(client: client) @@ -339,8 +347,9 @@ public final class SyncService: SyncServiceProtocol, BPLogger { if let lastItemPlayed = response.lastItemPlayed { filteredItemsDict.removeValue(forKey: lastItemPlayed.relativePath) } - await libraryService.updateInfo(for: filteredItemsDict, parentFolder: parentFolder) + await libraryService.updateInfo(for: filteredItemsDict, parentFolder: parentFolder) + await libraryService.storeNewItems(from: completeItemsDict, parentFolder: parentFolder) if canDelete { @@ -452,8 +461,67 @@ public final class SyncService: SyncServiceProtocol, BPLogger { } public func downloadRemoteFiles(for item: SimpleLibraryItem) async throws { - let remoteURLs = try await getRemoteFileURLs(of: item.relativePath, for: item.uuid, type: item.type) + var remoteURLs: [RemoteFileURL] = [] + if item.type == .book, + let external = item.externalResources?.first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) { + switch ExternalResource.ProviderName(rawValue: external.providerName) { + case .jellyfin: + let keychainService = KeychainService() + let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] + var connection: JellyfinConnectionData? + + if let hostId = external.hostId, !hostId.isEmpty { + connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) + } + + if connection == nil { + connection = connections.first + } + + if let connection = connection, + let downloadUrl = URL(string: connection.buildDownloadUrl(providerId: external.providerId)) { + remoteURLs = [ + RemoteFileURL( + url: downloadUrl, + relativePath: item.relativePath, + type: .book, + externalResources: nil, + headers: ["Authorization": "MediaBrowser Token=\"\(connection.accessToken)\""] + ) + ] + } + case .audiobookshelf: + let keychainService = KeychainService() + let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] + var connection: AudiobookShelfConnectionData? + + if let hostId = external.hostId, !hostId.isEmpty { + connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) + } + + if connection == nil { + connection = connections.first + } + if let connection = connection, + let downloadUrl = URL(string: connection.buildAudiobookshelfDownloadUrl(providerId: external.providerId)) { + remoteURLs = [ + RemoteFileURL( + url: downloadUrl, + relativePath: item.relativePath, + type: .book, + externalResources: nil, + headers: ["Authorization": "Bearer \(connection.apiToken)"] + ) + ] + } + default: + break + } + } else { + remoteURLs = try await getRemoteFileURLs(of: item.relativePath, for: item.uuid, type: item.type) + } + let processedFolderURL = DataManager.getProcessedFolderURL() let folderURLs = remoteURLs.filter({ $0.type != .book }) @@ -471,16 +539,30 @@ public final class SyncService: SyncServiceProtocol, BPLogger { for remoteURL in bookURLs { let localURL = processedFolderURL.appendingPathComponent(remoteURL.relativePath) + let downloadUrl = remoteURL.url guard !FileManager.default.fileExists(atPath: localURL.path) else { continue } + + if let bearer = remoteURL.headers?["Authorization"] { + var request = URLRequest(url: downloadUrl) + request.setValue(bearer, forHTTPHeaderField: "Authorization") + + let task = await provider.client.download( + request: request, + taskDescription: remoteURL.relativePath, + session: downloadURLSession.backgroundSession + ) - let task = await provider.client.download( - url: remoteURL.url, - taskDescription: remoteURL.relativePath, - session: downloadURLSession.backgroundSession - ) + tasks.append(task) + } else { + let task = await provider.client.download( + url: downloadUrl, + taskDescription: remoteURL.relativePath, + session: downloadURLSession.backgroundSession + ) - tasks.append(task) + tasks.append(task) + } } downloadTasksDictionary[item.relativePath] = tasks @@ -502,6 +584,38 @@ public final class SyncService: SyncServiceProtocol, BPLogger { } } + public func scheduleExternalResourceUpload( + _ resource: SyncableExternalResource, + relativePath: String, + uuid: String + ) { + guard isActive else { return } + + Task { + await jobManager.scheduleExternalResourceUpload( + for: resource, + itemOrigin: LibraryItemRef(relativePath: relativePath, uuid: uuid) + ) + } + } + + public func scheduleExternalResourceDeletion( + providerName: String, + providerId: String, + relativePath: String, + uuid: String + ) { + guard isActive else { return } + + Task { + await jobManager.scheduleDeleteExternalResource( + providerName: providerName, + providerId: providerId, + itemOrigin: LibraryItemRef(relativePath: relativePath, uuid: uuid) + ) + } + } + public func getAllQueuedJobs() async -> [SyncTaskReference] { return await jobManager.getAllQueuedJobs() } @@ -511,7 +625,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { } public func getLastSyncError() -> SyncErrorInfo? { - return jobManager.lastSyncError + return concurrenceService.lastSyncError } public func cancelAllJobs() { @@ -588,6 +702,12 @@ extension SyncService { func handleItemsToUpload(_ items: [SyncableItem]) async { for item in items { await jobManager.scheduleLibraryItemUploadJob(for: item) + + if let externalResources = item.externalResources { + for externalResource in externalResources { + await jobManager.scheduleExternalResourceUpload(for: externalResource, itemOrigin: LibraryItemRef(relativePath: item.relativePath, uuid: item.uuid)) + } + } } /// Handle bookmarks in separate loop, as the viewContext can be unreliable @@ -786,6 +906,24 @@ extension SyncService { DispatchQueue.main.async { self.downloadCompletedPublisher.send((relativePath, startingItemPath, parentFolderPath)) } + + guard + let snapshot = libraryService.getItemResourcesSnapshot(for: relativePath), + let externalResource = snapshot.resources.first(where: { + $0.syncStatus == ExternalResource.SyncStatus.stream.rawValue + }) + else { return } + + let externalSyncItem = SyncableExternalResource( + providerName: externalResource.providerName, + providerId: externalResource.providerId, + syncStatus: externalResource.syncStatus, + lastSyncedAt: nil, + processedFile: true, + hostId: externalResource.hostId + ) + await libraryService.updateExternalResource(for: externalSyncItem) + await jobManager.scheduleResourceToDownload(with: relativePath, for: snapshot.uuid, uploaded: false) } /// Backstop against truncated/botched downloads that finish without surfacing a @@ -919,9 +1057,10 @@ extension SyncService { /// Get download state of an item public func getDownloadState(for item: SimpleLibraryItem) -> DownloadState { - /// Only process if subscription is active - guard isActive else { return .downloaded } - + let hasExternalResources = !(item.externalResources?.isEmpty ?? true) + /// Only process if subscription is active or it has external resources + guard isActive || hasExternalResources else { return .downloaded } + if downloadTasksDictionary[item.relativePath]?.isEmpty == false { return .downloading(progress: calculateDownloadProgress(with: item.relativePath)) } diff --git a/Shared/Services/Sync/SyncTasksCountService.swift b/Shared/Services/Sync/SyncTasksCountService.swift index ce07fe9c9..06417a114 100644 --- a/Shared/Services/Sync/SyncTasksCountService.swift +++ b/Shared/Services/Sync/SyncTasksCountService.swift @@ -14,7 +14,6 @@ public protocol SyncTasksCountServiceProtocol { } public class SyncTasksCountService: SyncTasksCountServiceProtocol { - private var tasksCountPublisher = CurrentValueSubject(nil) private let tasksDataManager: TasksDataManager public init(tasksDataManager: TasksDataManager) { diff --git a/Shared/Services/Sync/SyncTasksStorage.swift b/Shared/Services/Sync/SyncTasksStorage.swift deleted file mode 100644 index 95b1b22fe..000000000 --- a/Shared/Services/Sync/SyncTasksStorage.swift +++ /dev/null @@ -1,302 +0,0 @@ -// -// SyncTasksStorage.swift -// BookPlayer -// -// Created by Gianni Carlo on 13/1/24. -// Copyright © 2024 BookPlayer LLC. All rights reserved. -// - -import Combine -import Foundation -import SwiftData - -/// Persist jobs using SwiftData -public actor SyncTasksStorage: ModelActor { - nonisolated public let modelContainer: ModelContainer - nonisolated public let modelExecutor: any ModelExecutor - - private let tasksDataManager: TasksDataManager - - init(tasksDataManager: TasksDataManager) throws { - self.modelContainer = tasksDataManager.container - let modelContext = ModelContext(tasksDataManager.container) - modelContext.autosaveEnabled = true - self.modelExecutor = DefaultSerialModelExecutor(modelContext: modelContext) - self.tasksDataManager = tasksDataManager - } - - public func appendTask(parameters: [String: Any]) async throws { - guard - let taskId = parameters["id"] as? String, - let rawJobType = parameters["jobType"] as? String, - let jobType = SyncJobType(rawValue: rawJobType), - let uuid = parameters["uuid"] as? String, - let relativePath = parameters["relativePath"] as? String - else { - throw BookPlayerError.runtimeError("Missing id or job type when creating task") - } - - let context = modelContext - - // Get or create the tasks container - let descriptor = FetchDescriptor() - let containers = try context.fetch(descriptor) - let tasksContainer = containers.first ?? SyncTasksContainer() - - if containers.isEmpty { - context.insert(tasksContainer) - } - - // Coalesce matchUuid tasks: if one is already queued and is NOT the task currently - // in flight (head of the ordered queue), merge new relativePath→uuid pairs into it. - // Prefer existing values so we never overwrite uuids that other queued tasks or - // Core Data are already referencing. The in-flight task is skipped because its - // parameter snapshot has already been read by `getNextTask`, so mutations would - // be silently dropped when the task finishes and gets deleted. - if jobType == .matchUuid, - let newUuidsDict = parameters["uuids"] as? [String: String], - let headTaskID = tasksContainer.orderedTasks.first?.taskID, - let candidateTask = try context - .fetch(FetchDescriptor()) - .first(where: { $0.id != headTaskID }) - { - var merged = candidateTask.uuids - for (path, uuid) in newUuidsDict where merged[path] == nil { - merged[path] = uuid - } - candidateTask.uuids = merged - try context.save() - tasksDataManager.notifyTasksChanged(context: context) - return - } - - // Check for update task optimization - if jobType == .update, - tasksContainer.tasks.count > 1, - let existingTask = try context.fetch(FetchDescriptor()) - .last(where: { $0.uuid == uuid }) - { - - var parameters = parameters - parameters["id"] = existingTask.id - - // Update existing task - tasksDataManager.updateTaskModel(existingTask, with: parameters) - - } else { - // Create new task object - tasksDataManager.createTaskModel(for: jobType, with: parameters, in: modelContext) - - let nextPosition = (tasksContainer.tasks.map(\.position).max() ?? -1) + 1 - // Create task reference - let taskReference = SyncTaskReferenceModel( - uuid: uuid, - relativePath: relativePath, - taskID: taskId, - jobType: jobType, - position: nextPosition - ) - - // Add to container - tasksContainer.tasks.append(taskReference) - taskReference.container = tasksContainer - } - - try context.save() - - tasksDataManager.notifyTasksChanged(context: context) - } - - public func getNextTask() async throws -> SyncTask? { - let descriptor = FetchDescriptor() - let containers = try modelContext.fetch(descriptor) - - guard let tasksContainer = containers.first, - let firstTask = tasksContainer.orderedTasks.first - else { - return nil - } - - guard - let storedObject = tasksDataManager.getTaskModel( - with: firstTask.taskID, - jobType: firstTask.jobType, - in: modelContext - ) - else { - // Remove invalid task reference - tasksContainer.tasks = tasksContainer.tasks.filter { $0.taskID != firstTask.taskID } - try modelContext.save() - return nil - } - - return SyncTask( - id: firstTask.taskID, - uuid: firstTask.uuid, - relativePath: firstTask.relativePath, - jobType: firstTask.jobType, - parameters: storedObject.toDictionaryPayload() - ) - } - - public func finishedTask(id: String, jobType: SyncJobType) async throws { - let descriptor = FetchDescriptor() - let containers = try modelContext.fetch(descriptor) - - guard let tasksContainer = containers.first else { return } - - // Delete the actual task object - try tasksDataManager.deleteTaskModel( - with: id, - jobType: jobType, - context: modelContext - ) - - // Remove task reference - tasksContainer.tasks = tasksContainer.tasks.filter { $0.taskID != id } - - try tasksDataManager.deleteReferenceModel( - with: id, - jobType: jobType, - context: modelContext - ) - - try modelContext.save() - - tasksDataManager.notifyTasksChanged(context: modelContext) - } - - public func getAllTasks(progress: [String: Double]) async -> [SyncTaskReference] { - do { - let descriptor = FetchDescriptor() - let containers = try modelContext.fetch(descriptor) - - guard let tasksContainer = containers.first else { return [] } - - return tasksContainer.orderedTasks.map { task in - let key = SyncProgressKey.resolve(uuid: task.uuid, relativePath: task.relativePath) - return SyncTaskReference( - id: task.taskID, - uuid: task.uuid, - relativePath: task.relativePath, - jobType: task.jobType, - progress: progress[key] ?? 0.0 - ) - } - - } catch { - return [] - } - } - - public func getAllTasksWithParams() async -> [SyncTask] { - do { - let descriptor = FetchDescriptor() - let containers = try modelContext.fetch(descriptor) - - guard let tasksContainer = containers.first else { return [] } - - return tasksContainer.orderedTasks.compactMap { taskRef in - guard - let storedObject = tasksDataManager.getTaskModel( - with: taskRef.taskID, - jobType: taskRef.jobType, - in: modelContext - ) - else { - return nil - } - - return SyncTask( - id: taskRef.taskID, - uuid: taskRef.uuid, - relativePath: taskRef.relativePath, - jobType: taskRef.jobType, - parameters: storedObject.toDictionaryPayload() - ) - } - - } catch { - return [] - } - } - - public func getTasksCount() -> Int { - tasksDataManager.getTasksCount() - } - - public func clearAll() async throws { - try tasksDataManager.deleteAllTasks(with: modelContext) - } - - /// Rewrites task reference and task model uuids for each conflict returned by `matchUuid`. - /// Each conflict maps a locally-known uuid (`key`) to the uuid the server wants the client - /// to adopt (`uuid`). Runs on the actor's serial executor. - public func applyMatchUuidConflicts(_ conflicts: [ItemConflict]) throws { - for conflict in conflicts { - let oldUuid = conflict.key - let newUuid = conflict.uuid - let refs = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.uuid == oldUuid }) - ) - for ref in refs { - ref.uuid = newUuid - let taskId = ref.taskID - switch ref.jobType { - case .upload: - if let task = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.id == taskId }) - ).first { task.uuid = newUuid } - case .update: - if let task = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.id == taskId }) - ).first { task.uuid = newUuid } - case .move: - if let task = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.id == taskId }) - ).first { task.uuid = newUuid } - case .renameFolder: - if let task = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.id == taskId }) - ).first { task.uuid = newUuid } - case .delete, .shallowDelete: - if let task = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.id == taskId }) - ).first { task.uuid = newUuid } - case .setBookmark: - if let task = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.id == taskId }) - ).first { task.uuid = newUuid } - case .deleteBookmark: - if let task = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.id == taskId }) - ).first { task.uuid = newUuid } - case .uploadArtwork: - if let task = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.id == taskId }) - ).first { task.uuid = newUuid } - case .matchUuid: - break - } - } - } - try modelContext.save() - } - - /// Check if there's an upload task queued for the item - public func hasUploadTask(for relativePath: String) async -> Bool { - do { - let descriptor = FetchDescriptor( - predicate: #Predicate { task in - task.relativePath == relativePath - } - ) - - let tasks = try modelContext.fetch(descriptor) - return !tasks.isEmpty - - } catch { - return false - } - } -} diff --git a/Shared/SwiftData/MigrationPlan.swift b/Shared/SwiftData/MigrationPlan.swift index 96e3862d4..05d934ed0 100644 --- a/Shared/SwiftData/MigrationPlan.swift +++ b/Shared/SwiftData/MigrationPlan.swift @@ -11,11 +11,11 @@ import CoreData public enum MigrationPlan: SchemaMigrationPlan { public static var schemas: [any VersionedSchema.Type] { - [SchemaV1.self, SchemaV2.self] + [SchemaV1.self, SchemaV2.self, SchemaV3.self] } public static var stages: [MigrationStage] { - [v1ToV2] + [v1ToV2, v2ToV3] } public static var injectedCoreDataContext: NSManagedObjectContext? @@ -106,4 +106,145 @@ public enum MigrationPlan: SchemaMigrationPlan { try context.save() } ) + + /// Stash of the V2 sync-task references captured in `willMigrate` and replayed into + /// the unified container in `didMigrate`. Needed because SchemaV3 drops the V2 + /// `SyncTasksContainer`/`SyncTaskReferenceModel` entities (their rows are discarded + /// by the schema migration itself). The payload task models carry over untouched. + private static var stashedSyncReferences: + [(uuid: String, relativePath: String, taskID: String, jobType: SyncJobType, position: Int)] = [] + + // Stage 3: Move the V2 sync queue into the unified concurrent container (under the + // "sync" queue key), then backfill external resources for items that were linked to + // a Hardcover book before hardcover links were modeled as external resources, and + // enqueue an upload task for each so the link reaches the server. + static var v2ToV3: MigrationStage = MigrationStage.custom( + fromVersion: SchemaV2.self, + toVersion: SchemaV3.self, + willMigrate: { context in + stashedSyncReferences = [] + let containers = try context.fetch(FetchDescriptor()) + guard let tasksContainer = containers.first else { return } + + stashedSyncReferences = tasksContainer.orderedTasks.map { + ( + uuid: $0.uuid, + relativePath: $0.relativePath, + taskID: $0.taskID, + jobType: $0.jobType, + position: $0.position + ) + } + }, + didMigrate: { context in + let descriptor = FetchDescriptor() + let containers = try context.fetch(descriptor) + let tasksContainer = containers.first ?? SchemaV3.ConcurrentTasksContainer() + if containers.isEmpty { + context.insert(tasksContainer) + } + + // 1. Replay the stashed V2 sync queue, preserving its FIFO order. + var nextPosition = (tasksContainer.tasks.map(\.position).max() ?? -1) + 1 + for reference in stashedSyncReferences.sorted(by: { $0.position < $1.position }) { + let migrated = SchemaV3.ConcurrentTaskReferenceModel( + queueKey: TaskQueueKey.sync, + taskID: reference.taskID, + jobType: reference.jobType, + position: nextPosition, + uuid: reference.uuid, + relativePath: reference.relativePath + ) + tasksContainer.tasks.append(migrated) + migrated.container = tasksContainer + nextPosition += 1 + } + stashedSyncReferences = [] + try context.save() + + // 2. Hardcover external-resource backfill. + guard let coreDataContext = injectedCoreDataContext else { + return + } + + let providerName = ExternalResource.ProviderName.hardcover.rawValue + let syncStatus = ExternalResource.SyncStatus.notSynced.rawValue + + var resourcesToUpload: [(uuid: String, relativePath: String, providerId: String)] = [] + + // Create the missing hardcover external resources in Core Data. + coreDataContext.performAndWait { + let fetchRequest = NSFetchRequest(entityName: "LibraryItem") + fetchRequest.predicate = NSPredicate(format: "hardcoverBook != nil") + + guard let items = try? coreDataContext.fetch(fetchRequest) else { return } + + for item in items { + guard let hardcoverBook = item.hardcoverBook else { continue } + let providerId = String(hardcoverBook.id) + + // Skip if the resource already exists + if item.resourcesArray.contains(where: { + $0.providerName == providerName && $0.providerId == providerId + }) { + continue + } + + let syncable = SyncableExternalResource( + providerName: providerName, + providerId: providerId, + syncStatus: syncStatus, + lastSyncedAt: nil, + processedFile: true, + hostId: nil + ) + _ = ExternalResource.create(syncable, libraryItem: item, in: coreDataContext) + + resourcesToUpload.append( + (uuid: item.uuid, relativePath: item.relativePath, providerId: providerId) + ) + } + + try? coreDataContext.save() + } + + // Only enqueue upload tasks for users who already have a server-side library; + // resources for never-synced users are uploaded on their first sync. + guard + UserDefaults.standard.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents), + !resourcesToUpload.isEmpty + else { + return + } + + for resource in resourcesToUpload { + let taskId = UUID().uuidString + let task = SchemaV3.UploadExternalResourceTaskModel( + id: taskId, + uuid: resource.uuid, + providerId: resource.providerId, + providerName: providerName, + lastSyncedAt: nil, + syncStatus: syncStatus, + processedFile: true, + hostId: nil + ) + context.insert(task) + + let reference = SchemaV3.ConcurrentTaskReferenceModel( + queueKey: TaskQueueKey.sync, + taskID: taskId, + jobType: .externalResource, + position: nextPosition, + uuid: resource.uuid, + relativePath: resource.relativePath + ) + tasksContainer.tasks.append(reference) + reference.container = tasksContainer + nextPosition += 1 + } + + try context.save() + } + ) } diff --git a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift new file mode 100644 index 000000000..3fecf89e0 --- /dev/null +++ b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift @@ -0,0 +1,429 @@ +// +// SchemaV3SyncTasksModels.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 20/3/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import SwiftData +import Foundation + +// MARK: - Schema V3 (The Container) +public enum SchemaV3: VersionedSchema { + public static var versionIdentifier = Schema.Version(3, 0, 0) + + // List EVERY model in your app here + public static var models: [any PersistentModel.Type] { + [ + UploadTaskModel.self, + UpdateTaskModel.self, + MoveTaskModel.self, + DeleteTaskModel.self, + DeleteBookmarkTaskModel.self, + SetBookmarkTaskModel.self, + RenameFolderTaskModel.self, + ArtworkUploadTaskModel.self, + MatchUuidsTaskModel.self, + UploadExternalResourceTaskModel.self, + ConcurrentTasksContainer.self, + ConcurrentTaskReferenceModel.self, + ExternalUpdateTaskModel.self, + ConcurrentUploadTaskModel.self, + ExternalResourceToDownloadTaskModel.self, + DeleteExternalResourceTaskModel.self + ] + } + + @Model + public class UploadTaskModel { + @Attribute(.unique) public var id: String + public var relativePath: String + public var originalFileName: String + public var title: String + public var details: String + public var speed: Double? + public var currentTime: Double + public var duration: Double + public var percentCompleted: Double + public var isFinished: Bool + public var orderRank: Int + public var lastPlayDateTimestamp: Double? + public var type: Int16 + public var uuid: String = UUID().uuidString + public var provider: String? = nil + + public init( + id: String, + uuid: String, + relativePath: String, + originalFileName: String, + title: String, + details: String, + speed: Float? = nil, + currentTime: Double, + duration: Double, + percentCompleted: Double, + isFinished: Bool, + orderRank: Int, + lastPlayDateTimestamp: Double? = nil, + type: Int16, + provider: String? = nil + ) { + self.id = id + self.uuid = uuid + self.relativePath = relativePath + self.originalFileName = originalFileName + self.title = title + self.details = details + if let speed { + self.speed = Double(speed) + } else { + self.speed = nil + } + self.currentTime = currentTime + self.duration = duration + self.percentCompleted = percentCompleted + self.isFinished = isFinished + self.orderRank = orderRank + self.lastPlayDateTimestamp = lastPlayDateTimestamp + self.type = type + self.provider = provider + } + } + + @Model + public class UpdateTaskModel { + @Attribute(.unique) public var id: String + public var relativePath: String + public var title: String? + public var details: String? + public var speed: Double? + public var currentTime: Double? + public var duration: Double? + public var percentCompleted: Double? + public var isFinished: Bool? + public var orderRank: Int16? + public var lastPlayDateTimestamp: Double? + public var type: Int16? + public var uuid: String = UUID().uuidString + + public init( + id: String, + uuid: String, + relativePath: String, + title: String? = nil, + details: String? = nil, + speed: Float? = nil, + currentTime: Double? = nil, + duration: Double? = nil, + percentCompleted: Double? = nil, + isFinished: Bool? = nil, + orderRank: Int16? = nil, + lastPlayDateTimestamp: Double? = nil, + type: Int16? = nil + ) { + self.id = id + self.uuid = uuid + self.relativePath = relativePath + self.title = title + self.details = details + if let speed { + self.speed = Double(speed) + } else { + self.speed = nil + } + self.currentTime = currentTime + self.duration = duration + self.percentCompleted = percentCompleted + self.isFinished = isFinished + self.orderRank = orderRank + self.lastPlayDateTimestamp = lastPlayDateTimestamp + self.type = type + } + } + + @Model + public class MoveTaskModel { + @Attribute(.unique) public var id: String + public var relativePath: String + public var origin: String + public var destination: String + public var uuid: String = UUID().uuidString + + public init(id: String, uuid: String, relativePath: String, origin: String, destination: String) { + self.id = id + self.uuid = uuid + self.relativePath = relativePath + self.origin = origin + self.destination = destination + } + } + + @Model + public class DeleteTaskModel { + @Attribute(.unique) public var id: String + public var relativePath: String + /// Can only be `delete` or `shallowDelete` + public var jobType: SyncJobType + public var uuid: String = UUID().uuidString + + public init(id: String, uuid: String, relativePath: String, jobType: SyncJobType) { + self.id = id + self.uuid = uuid + self.relativePath = relativePath + self.jobType = jobType + } + } + + @Model + public class DeleteBookmarkTaskModel { + @Attribute(.unique) public var id: String + public var relativePath: String + public var time: Double + public var uuid: String = UUID().uuidString + + public init(id: String = UUID().uuidString, uuid: String, relativePath: String, time: Double) { + self.id = id + self.uuid = uuid + self.relativePath = relativePath + self.time = time + } + } + + @Model + public class SetBookmarkTaskModel { + @Attribute(.unique) public var id: String + public var relativePath: String + public var time: Double + public var note: String? + public var uuid: String = UUID().uuidString + + public init(id: String, uuid: String, relativePath: String, time: Double, note: String? = nil) { + self.id = id + self.uuid = uuid + self.relativePath = relativePath + self.time = time + self.note = note + } + } + + @Model + public class RenameFolderTaskModel { + @Attribute(.unique) public var id: String + public var relativePath: String + public var name: String + public var uuid: String = UUID().uuidString + + public init(id: String, uuid: String, relativePath: String, name: String) { + self.id = id + self.uuid = uuid + self.relativePath = relativePath + self.name = name + } + } + + @Model + public class ArtworkUploadTaskModel { + @Attribute(.unique) public var id: String + public var relativePath: String + public var uuid: String = UUID().uuidString + + public init(id: String, uuid: String, relativePath: String) { + self.id = id + self.uuid = uuid + self.relativePath = relativePath + } + } + + @Model + public class MatchUuidsTaskModel { + @Attribute(.unique) public var id: String + public var uuids: [String: String] + + public init(id: String, uuids: [String: String]) { + self.id = id + self.uuids = uuids + } + } + + @Model + public class UploadExternalResourceTaskModel { + @Attribute(.unique) public var id: String + public var providerId: String + public var providerName: String + public var lastSyncedAt: Date? + public var syncStatus: String + public var processedFile: Bool + public var hostId: String? + public var uuid: String + + public init( + id: String, + uuid: String, + providerId: String, + providerName: String, + lastSyncedAt: Date?, + syncStatus: String, + processedFile: Bool, + hostId: String? = nil + ) { + self.id = id + self.uuid = uuid + self.providerId = providerId + self.providerName = providerName + self.lastSyncedAt = lastSyncedAt + self.syncStatus = syncStatus + self.processedFile = processedFile + self.hostId = hostId + } + } + + /// Single container for every queued task, sharded by `queueKey`. + /// The `"sync"` key holds the serial BookPlayer-server queue; every other key + /// is a provider/upload queue that runs concurrently with the rest. + @Model + public class ConcurrentTasksContainer { + @Relationship(deleteRule: .cascade, inverse: \ConcurrentTaskReferenceModel.container) + public var tasks: [ConcurrentTaskReferenceModel] = [] + + public var orderedTasks: [ConcurrentTaskReferenceModel] { tasks.sorted { $0.position < $1.position } } + + public var allQueueKeys: [String] { + Array(Set(tasks.map { $0.queueKey })) + } + + public func orderedTasks(for queueKey: String) -> [ConcurrentTaskReferenceModel] { + tasks + .filter { $0.queueKey == queueKey } + .sorted { $0.position < $1.position } + } + + public init() {} + } + + @Model + public class ConcurrentTaskReferenceModel { + @Attribute(.unique) public var id: String + public var taskID: String + public var jobType: SyncJobType + public var position: Int + public var queueKey: String + public var uuid: String = "" + public var relativePath: String = "" + public var container: ConcurrentTasksContainer? + + public init( + id: String = UUID().uuidString, + queueKey: String, + taskID: String, + jobType: SyncJobType, + position: Int, + uuid: String = "", + relativePath: String = "" + ) { + self.id = id + self.taskID = taskID + self.jobType = jobType + self.queueKey = queueKey + self.position = position + self.uuid = uuid + self.relativePath = relativePath + } + } + + @Model + public class ExternalUpdateTaskModel { + @Attribute(.unique) public var id: String + public var title: String? + public var details: String? + public var currentTime: Double? + public var percentCompleted: Double? + public var isFinished: Bool? + public var lastPlayDateTimestamp: Double? + public var providerName: String + public var providerId: String + + public init( + id: String, + providerName: String, + providerId: String, + title: String? = nil, + details: String? = nil, + currentTime: Double? = nil, + percentCompleted: Double? = nil, + isFinished: Bool? = nil, + lastPlayDateTimestamp: Double? = nil, + ) { + self.id = id + self.providerName = providerName + self.providerId = providerId + self.title = title + self.details = details + self.currentTime = currentTime + self.percentCompleted = percentCompleted + self.isFinished = isFinished + self.lastPlayDateTimestamp = lastPlayDateTimestamp + } + } + + @Model + public class ConcurrentUploadTaskModel { + @Attribute(.unique) public var id: String + public var filePath: String + public var remotePath: String? + public var uuid: String + + public init( + id: String, + uuid: String, + filePath: String, + remotePath: String? = nil + ) { + self.id = id + self.uuid = uuid + self.filePath = filePath + self.remotePath = remotePath + } + } + + @Model + public class ExternalResourceToDownloadTaskModel { + @Attribute(.unique) public var id: String + public var uuid: String + public var uploaded: Bool + + public init( + id: String, + uuid: String, + uploaded: Bool + ) { + self.id = id + self.uuid = uuid + self.uploaded = uploaded + } + } + + @Model + public class DeleteExternalResourceTaskModel { + @Attribute(.unique) public var id: String + public var uuid: String + public var relativePath: String + public var providerName: String + public var providerId: String + + public init( + id: String, + uuid: String, + relativePath: String, + providerName: String, + providerId: String + ) { + self.id = id + self.uuid = uuid + self.relativePath = relativePath + self.providerName = providerName + self.providerId = providerId + } + } +} diff --git a/Shared/SwiftData/Models/SyncJobType.swift b/Shared/SwiftData/Models/SyncJobType.swift index 7b935a993..0f15b5358 100644 --- a/Shared/SwiftData/Models/SyncJobType.swift +++ b/Shared/SwiftData/Models/SyncJobType.swift @@ -19,4 +19,19 @@ public enum SyncJobType: String, CaseIterable, Codable { case deleteBookmark case uploadArtwork case matchUuid + case externalResource + case externalResourceToDownload + case deleteExternalResource + /// Progress update pushed to an external provider (Jellyfin/AudiobookShelf/Hardcover) + case externalUpdate + /// File upload to the BookPlayer server storage + case uploadFile +} + +/// Queue keys for the tasks container. The `sync` queue serially runs the +/// BookPlayer-server jobs; every other key (provider names, `uploadFile`) +/// runs concurrently with the rest. +public enum TaskQueueKey { + public static let sync = "sync" + public static let uploadFile = "uploadFile" } diff --git a/Shared/SwiftData/Models/SyncTasksModels.swift b/Shared/SwiftData/Models/SyncTasksModels.swift index d19b80120..f8353db4a 100644 --- a/Shared/SwiftData/Models/SyncTasksModels.swift +++ b/Shared/SwiftData/Models/SyncTasksModels.swift @@ -9,15 +9,20 @@ import Foundation import SwiftData -public typealias SyncTasksContainer = SchemaV2.SyncTasksContainer -public typealias SyncTaskReferenceModel = SchemaV2.SyncTaskReferenceModel -public typealias UploadTaskModel = SchemaV2.UploadTaskModel -public typealias UpdateTaskModel = SchemaV2.UpdateTaskModel -public typealias MoveTaskModel = SchemaV2.MoveTaskModel -public typealias DeleteTaskModel = SchemaV2.DeleteTaskModel -public typealias DeleteBookmarkTaskModel = SchemaV2.DeleteBookmarkTaskModel -public typealias SetBookmarkTaskModel = SchemaV2.SetBookmarkTaskModel -public typealias RenameFolderTaskModel = SchemaV2.RenameFolderTaskModel -public typealias ArtworkUploadTaskModel = SchemaV2.ArtworkUploadTaskModel -public typealias MatchUuidsTaskModel = SchemaV2.MatchUuidsTaskModel +public typealias UploadTaskModel = SchemaV3.UploadTaskModel +public typealias UpdateTaskModel = SchemaV3.UpdateTaskModel +public typealias MoveTaskModel = SchemaV3.MoveTaskModel +public typealias DeleteTaskModel = SchemaV3.DeleteTaskModel +public typealias DeleteBookmarkTaskModel = SchemaV3.DeleteBookmarkTaskModel +public typealias SetBookmarkTaskModel = SchemaV3.SetBookmarkTaskModel +public typealias RenameFolderTaskModel = SchemaV3.RenameFolderTaskModel +public typealias ArtworkUploadTaskModel = SchemaV3.ArtworkUploadTaskModel +public typealias MatchUuidsTaskModel = SchemaV3.MatchUuidsTaskModel +public typealias UploadExternalResourceTaskModel = SchemaV3.UploadExternalResourceTaskModel +public typealias ExternalResourceToDownloadTaskModel = SchemaV3.ExternalResourceToDownloadTaskModel +public typealias DeleteExternalResourceTaskModel = SchemaV3.DeleteExternalResourceTaskModel +public typealias ConcurrentTasksContainer = SchemaV3.ConcurrentTasksContainer +public typealias ConcurrentTaskReferenceModel = SchemaV3.ConcurrentTaskReferenceModel +public typealias ExternalUpdateTaskModel = SchemaV3.ExternalUpdateTaskModel +public typealias ConcurrentUploadTaskModel = SchemaV3.ConcurrentUploadTaskModel diff --git a/Shared/SwiftData/SwiftDataModels+Extensions.swift b/Shared/SwiftData/SwiftDataModels+Extensions.swift index 9e48632bf..6bfb8503a 100644 --- a/Shared/SwiftData/SwiftDataModels+Extensions.swift +++ b/Shared/SwiftData/SwiftDataModels+Extensions.swift @@ -46,6 +46,12 @@ extension UploadTaskModel: DictionaryConvertible { dict["lastPlayDateTimestamp"] = lastPlayDateTimestamp } + /// Provider-backed items skip the device file upload (the server pulls the file + /// from the provider instead) — see `ConcurrenceService.handleFinishedOperation` + if let provider { + dict["provider"] = provider + } + return dict } } @@ -175,3 +181,92 @@ extension MatchUuidsTaskModel: DictionaryConvertible { ] } } + +extension UploadExternalResourceTaskModel: DictionaryConvertible { + public func toDictionaryPayload() -> [String: Any] { + return [ + "id": id, + "uuid": uuid, + "providerId": providerId, + "providerName": providerName, + "lastSyncedAt": lastSyncedAt as Any, + "processedFile": processedFile, + "syncStatus": syncStatus, + "hostId": hostId as Any + ] + } +} + +extension ExternalResourceToDownloadTaskModel: DictionaryConvertible { + public func toDictionaryPayload() -> [String: Any] { + return [ + "id": id, + "uuid": uuid, + "uploaded": uploaded + ] + } +} + +extension DeleteExternalResourceTaskModel: DictionaryConvertible { + public func toDictionaryPayload() -> [String: Any] { + return [ + "id": id, + "uuid": uuid, + "relativePath": relativePath, + "providerName": providerName, + "providerId": providerId + ] + } +} + +extension ExternalUpdateTaskModel: DictionaryConvertible { + public func toDictionaryPayload() -> [String: Any] { + var dictionary: [String: Any] = [ + "id": id, + "providerId": providerId, + "providerName": providerName + ] + + if let title { + dictionary["title"] = title + } + + if let details { + dictionary["details"] = details + } + + if let currentTime { + dictionary["currentTime"] = currentTime + } + + if let percentCompleted { + dictionary["percentCompleted"] = percentCompleted + } + + if let isFinished { + dictionary["isFinished"] = isFinished + } + + if let lastPlayDateTimestamp { + dictionary["lastPlayDateTimestamp"] = lastPlayDateTimestamp + } + + return dictionary + } +} + +extension ConcurrentUploadTaskModel: DictionaryConvertible { + public func toDictionaryPayload() -> [String: Any] { + var dictionary: [String: Any] = [ + "id": id, + "uuid": uuid, + "filePath": filePath + ] + + if let remotePath { + dictionary["remotePath"] = remotePath + } + + return dictionary + } +} diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index 99637860b..716884635 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -13,11 +13,10 @@ import Combine public final class TasksDataManager { public let container: ModelContainer private let tasksCountSubject = CurrentValueSubject(0) + private let concurrentTasksCountSubject = CurrentValueSubject(0) public init() { let schema = Schema([ - SyncTasksContainer.self, - SyncTaskReferenceModel.self, UploadTaskModel.self, UpdateTaskModel.self, MoveTaskModel.self, @@ -26,7 +25,14 @@ public final class TasksDataManager { SetBookmarkTaskModel.self, RenameFolderTaskModel.self, ArtworkUploadTaskModel.self, - MatchUuidsTaskModel.self + MatchUuidsTaskModel.self, + UploadExternalResourceTaskModel.self, + ExternalResourceToDownloadTaskModel.self, + DeleteExternalResourceTaskModel.self, + ConcurrentTasksContainer.self, + ConcurrentTaskReferenceModel.self, + ExternalUpdateTaskModel.self, + ConcurrentUploadTaskModel.self, ]) let storeURL = DataManager.getSyncTasksSwiftDataURL() @@ -54,17 +60,32 @@ public final class TasksDataManager { .eraseToAnyPublisher() } + public func observeConcurrentTasksCount() -> AnyPublisher { + return concurrentTasksCountSubject + .receive(on: DispatchQueue.main) + .eraseToAnyPublisher() + } + + /// Publish updated counts for both queue groups from the unified container: + /// `tasksCountSubject` tracks the serial sync queue, `concurrentTasksCountSubject` + /// tracks everything else (provider updates, file uploads). public func notifyTasksChanged(context: ModelContext) { - let descriptor = FetchDescriptor() + let descriptor = FetchDescriptor() do { - let containers = try context.fetch(descriptor) - let count = containers.first?.tasks.count ?? 0 - tasksCountSubject.send(count) + let tasks = try context.fetch(descriptor).first?.tasks ?? [] + let syncCount = tasks.filter { $0.queueKey == TaskQueueKey.sync }.count + tasksCountSubject.send(syncCount) + concurrentTasksCountSubject.send(tasks.count - syncCount) } catch { tasksCountSubject.send(0) + concurrentTasksCountSubject.send(0) } } + + public func notifyConcurrentTasksChanged(context: ModelContext) { + notifyTasksChanged(context: context) + } public func deleteAllTasks(with context: ModelContext) throws { // Task payload models are standalone (no relationships), so a store-level @@ -78,23 +99,31 @@ public final class TasksDataManager { try context.delete(model: RenameFolderTaskModel.self) try context.delete(model: ArtworkUploadTaskModel.self) try context.delete(model: MatchUuidsTaskModel.self) + try context.delete(model: UploadExternalResourceTaskModel.self) + try context.delete(model: ExternalResourceToDownloadTaskModel.self) + try context.delete(model: DeleteExternalResourceTaskModel.self) - // SyncTaskReferenceModel.container participates in a cascade relationship with - // SyncTasksContainer. A store-level batch delete runs below the object graph and - // skips relationship-maintenance (cascade/nullify) entirely, which trips a - // constraint-trigger / optimistic-lock error on that inverse. Delete through the + try context.delete(model: ConcurrentUploadTaskModel.self) + try context.delete(model: ExternalUpdateTaskModel.self) + + // ConcurrentTaskReferenceModel.container participates in a cascade relationship + // with ConcurrentTasksContainer. A store-level batch delete runs below the object + // graph and skips relationship-maintenance (cascade/nullify) entirely, which trips + // a constraint-trigger / optimistic-lock error on that inverse. Delete through the // object graph instead: removing each container cascades to its task references. - let containers = try context.fetch(FetchDescriptor()) + let containers = try context.fetch(FetchDescriptor()) for container in containers { context.delete(container) } // Defensively clear any references that aren't attached to a container. - let orphanedReferences = try context.fetch(FetchDescriptor()) + let orphanedReferences = try context.fetch(FetchDescriptor()) for reference in orphanedReferences { context.delete(reference) } try context.save() + + notifyTasksChanged(context: context) } public func deleteTaskModel( @@ -173,16 +202,50 @@ public final class TasksDataManager { if let task = try context.fetch(descriptor).first { context.delete(task) } + case .externalResource: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + if let task = try context.fetch(descriptor).first { + context.delete(task) + } + case .externalResourceToDownload: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + if let task = try context.fetch(descriptor).first { + context.delete(task) + } + case .deleteExternalResource: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + if let task = try context.fetch(descriptor).first { + context.delete(task) + } + case .externalUpdate: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + if let task = try context.fetch(descriptor).first { + context.delete(task) + } + case .uploadFile: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + if let task = try context.fetch(descriptor).first { + context.delete(task) + } } } public func deleteReferenceModel( with id: String, - jobType: SyncJobType, context: ModelContext ) throws { - let descriptor = FetchDescriptor( - predicate: #Predicate { task in task.taskID == id } + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.taskID == id } ) if let task = try context.fetch(descriptor).first { context.delete(task) @@ -197,24 +260,7 @@ public final class TasksDataManager { ) { switch jobType { case .upload: - let task = UploadTaskModel( - id: parameters["id"] as! String, - uuid: parameters["uuid"] as! String, - relativePath: parameters["relativePath"] as! String, - originalFileName: parameters["originalFileName"] as! String, - title: parameters["title"] as! String, - details: parameters["details"] as! String, - speed: parameters["speed"] as? Float, - currentTime: parameters["currentTime"] as! Double, - duration: parameters["duration"] as! Double, - percentCompleted: parameters["percentCompleted"] as! Double, - isFinished: parameters["isFinished"] as! Bool, - orderRank: parameters["orderRank"] as! Int, - lastPlayDateTimestamp: parameters["lastPlayDateTimestamp"] as? Double, - type: parameters["type"] as! Int16, - ) - context.insert(task) - + context.insert(buildUploadTask(parameters)) case .update: let task = UpdateTaskModel( id: parameters["id"] as! String, @@ -293,9 +339,87 @@ public final class TasksDataManager { uuids: parameters["uuids"] as! [String: String] ) context.insert(task) + case .externalResource: + context.insert(buildUploadExternalResourceTask(parameters)) + case .externalResourceToDownload: + let task = ExternalResourceToDownloadTaskModel( + id: parameters["id"] as! String, + uuid: parameters["uuid"] as! String, + uploaded: parameters["uploaded"] as? Bool ?? false + ) + context.insert(task) + case .deleteExternalResource: + context.insert(buildDeleteExternalResourceTask(parameters)) + case .externalUpdate: + context.insert(buildExternalUpdateTask(parameters)) + case .uploadFile: + let task = ConcurrentUploadTaskModel( + id: parameters["id"] as! String, + uuid: parameters["uuid"] as! String, + filePath: parameters["filePath"] as! String, + remotePath: parameters["remotePath"] as! String + ) + context.insert(task) } } + private func buildExternalUpdateTask(_ parameters: [String: Any]) -> ExternalUpdateTaskModel { + return ExternalUpdateTaskModel( + id: parameters["id"] as! String, + providerName: parameters["providerName"] as! String, + providerId: parameters["providerId"] as! String, + title: parameters["title"] as? String, + details: parameters["details"] as? String, + currentTime: parameters["currentTime"] as? Double, + percentCompleted: parameters["percentCompleted"] as? Double, + isFinished: parameters["isFinished"] as? Bool, + lastPlayDateTimestamp: parameters["lastPlayDateTimestamp"] as? Double, + ) + } + + private func buildUploadExternalResourceTask(_ parameters: [String: Any]) -> UploadExternalResourceTaskModel { + return UploadExternalResourceTaskModel( + id: parameters["id"] as! String, + uuid: parameters["uuid"] as! String, + providerId: parameters["providerId"] as! String, + providerName: parameters["providerName"] as! String, + lastSyncedAt: parameters["lastSyncedAt"] as? Date, + syncStatus: parameters["syncStatus"] as! String, + processedFile: parameters["processedFile"] as! Bool, + hostId: parameters["hostId"] as? String + ) + } + + private func buildDeleteExternalResourceTask(_ parameters: [String: Any]) -> DeleteExternalResourceTaskModel { + return DeleteExternalResourceTaskModel( + id: parameters["id"] as! String, + uuid: parameters["uuid"] as! String, + relativePath: parameters["relativePath"] as! String, + providerName: parameters["providerName"] as! String, + providerId: parameters["providerId"] as! String + ) + } + + private func buildUploadTask(_ parameters: [String: Any]) -> UploadTaskModel { + return UploadTaskModel( + id: parameters["id"] as! String, + uuid: parameters["uuid"] as! String, + relativePath: parameters["relativePath"] as! String, + originalFileName: parameters["originalFileName"] as! String, + title: parameters["title"] as! String, + details: parameters["details"] as! String, + speed: parameters["speed"] as? Float, + currentTime: parameters["currentTime"] as! Double, + duration: parameters["duration"] as! Double, + percentCompleted: parameters["percentCompleted"] as! Double, + isFinished: parameters["isFinished"] as! Bool, + orderRank: parameters["orderRank"] as! Int, + lastPlayDateTimestamp: parameters["lastPlayDateTimestamp"] as? Double, + type: parameters["type"] as! Int16, + provider: parameters["provider"] as? String + ) + } + // swiftlint:enable force_cast public func getTaskModel( @@ -357,6 +481,31 @@ public final class TasksDataManager { predicate: #Predicate { task in task.id == id } ) return try context.fetch(descriptor).first + case .externalResource: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + return try context.fetch(descriptor).first + case .externalResourceToDownload: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + return try context.fetch(descriptor).first + case .deleteExternalResource: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + return try context.fetch(descriptor).first + case .externalUpdate: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + return try context.fetch(descriptor).first + case .uploadFile: + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } + ) + return try context.fetch(descriptor).first } } catch { return nil @@ -378,18 +527,24 @@ public final class TasksDataManager { if let type = parameters["type"] as? Int16 { task.type = type } } - /// Initialize the tasks count from the database on startup + /// Initialize both task counts from the database on startup private func initializeTasksCount() { let context = ModelContext(container) - - do { - let descriptor = FetchDescriptor() - let containers = try context.fetch(descriptor) - let count = containers.first?.tasks.count ?? 0 - tasksCountSubject.send(count) - } catch { - // If there's an error reading from the database, keep the default value of 0 - tasksCountSubject.send(0) + notifyTasksChanged(context: context) + } + + public func updateExternalUpdateTaskModel( + for task: ExternalUpdateTaskModel, + with parameters: [String: Any], + in context: ModelContext + ) { + if let title = parameters["title"] as? String { task.title = title } + if let details = parameters["details"] as? String { task.details = details } + if let currentTime = parameters["currentTime"] as? Double { task.currentTime = currentTime } + if let percentCompleted = parameters["percentCompleted"] as? Double { task.percentCompleted = percentCompleted } + if let isFinished = parameters["isFinished"] as? Bool { task.isFinished = isFinished } + if let lastPlayDateTimestamp = parameters["lastPlayDateTimestamp"] as? Double { + task.lastPlayDateTimestamp = lastPlayDateTimestamp } } } From 55ae3842cc2419466652604ab7613cfc9ed98885 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 10:58:25 -0500 Subject: [PATCH 002/172] test: add externalURL argument to PlayableChapter test factory Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayerTests/PlayableChapterTests.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/BookPlayerTests/PlayableChapterTests.swift b/BookPlayerTests/PlayableChapterTests.swift index d1b4ba30b..72d2d6882 100644 --- a/BookPlayerTests/PlayableChapterTests.swift +++ b/BookPlayerTests/PlayableChapterTests.swift @@ -20,6 +20,7 @@ class PlayableChapterTests: XCTestCase { duration: 1, relativePath: relativePath, remoteURL: nil, + externalURL: nil, index: 0 ) } From c4fe7cda00ae826f1043288f992acd2dcafad08b Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 11:05:08 -0500 Subject: [PATCH 003/172] fix: align external-resource host resolution with the shared Android contract MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review findings from comparing the rebased #1523 against the Android implementation (shipped in android 1.1.3): - New IntegrationHostResolver in Shared/Integrations — the single resolution choke point, mirroring Android's ExternalServiceUtils.serverForResource: stable server GUID match (case-insensitive; Jellyfin reports lowercase hex, ABS uppercase UUIDs) → canonical URL key → nil. The previous per-call-site lookups compared serverId case-sensitively against raw url.absoluteString and then fell back to connections.first — the guess-a-server behavior the Android rework eliminated, which cross-device streams the wrong file or writes progress to the wrong server when provider ids collide. - Applied at every consumer: PlaybackService stream-URL building, SyncService.downloadRemoteFiles, ItemDetailsView host display, ExternalUpdateProgressOperation (progress pushes to an unresolvable host are now DISCARDED, never sent to the active connection), and ItemListViewModel (batch metadata refresh now groups resources by their resolved server; the remote-resume check pins the resource's own server). - hostId writes go through the new stableHostId helper (serverId ?? url.canonicalDedupKey) at all six import sites — raw absoluteString fallbacks break cross-device matching on trailing-slash/ port/case URL variants. - PlayableChapter's Codable now excludes externalUrl/externalHeaders: the headers carry the media server's live Authorization token, and encoded PlayableItems travel through the WatchConnectivity application context, which is persisted to disk on both devices. Both values are per-device and re-resolved locally at load time. - The error alert's Media Servers shortcut now also appears when NO source resolves (no local file, no cloud copy) — previously it was gated on externalUrl != nil, hiding it in exactly the connect-your-server case. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 6 +++ .../AudiobookShelfLibraryViewModel.swift | 2 +- ...iobookShelfAudiobookDetailsViewModel.swift | 2 +- .../JellyfinAudiobookDetailsViewModel.swift | 2 +- .../JellyfinLibraryViewModel.swift | 6 +-- .../Library/ItemDetails/ItemDetailsView.swift | 4 +- .../Library/ItemList/ItemListViewModel.swift | 37 ++++++++++++-- BookPlayer/Player/PlayerManager.swift | 14 ++++-- .../AudiobookShelfConnectionData.swift | 2 +- .../Lightweight-Models/PlayableChapter.swift | 24 +++++++++ .../IntegrationHostResolver.swift | 50 +++++++++++++++++++ .../Network/JellyfinConnectionData.swift | 2 +- .../ExternalUpdateProgressOperation.swift | 23 +++++---- Shared/Services/PlaybackService.swift | 9 ++-- Shared/Services/Sync/SyncService.swift | 24 +++------ 15 files changed, 156 insertions(+), 51 deletions(-) create mode 100644 Shared/Integrations/IntegrationHostResolver.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 06de2ebe1..7b07d641b 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -279,6 +279,7 @@ 41F1A204254B09C00043FCF3 /* Themeable in Frameworks */ = {isa = PBXBuildFile; productRef = 41F1A203254B09C00043FCF3 /* Themeable */; }; 41F1A20D254B0A0C0043FCF3 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 41F1A20C254B0A0C0043FCF3 /* Sentry */; }; 41F1A228254B0C6C0043FCF3 /* ZipArchive in Frameworks */ = {isa = PBXBuildFile; productRef = 41F1A227254B0C6C0043FCF3 /* ZipArchive */; }; + 45FE3490229249F95A3CF5FF /* IntegrationHostResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */; }; 4645F9FD2D1E46AC00A04257 /* SwipeInlineTip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4645F9FC2D1E46AC00A04257 /* SwipeInlineTip.swift */; }; 465D87522D3195D600A4AA47 /* BookmarksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 465D87512D3195D600A4AA47 /* BookmarksView.swift */; }; 465D87542D31965100A4AA47 /* BookmarksViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 465D87532D31965100A4AA47 /* BookmarksViewModel.swift */; }; @@ -928,6 +929,7 @@ ADBA6DD206F76CF92C0765A3 /* WebAuthenticatingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4388D9707FA7C85F9D07E75 /* WebAuthenticatingTests.swift */; }; AE284AB4D4139ED869288F99 /* IntegrationConnectionPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A8030B619D18CA088DAA40A /* IntegrationConnectionPayload.swift */; }; B14881000000000000000001 /* IntegrationCustomHeadersSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14881000000000000000002 /* IntegrationCustomHeadersSectionView.swift */; }; + B16A2A4FFFE86D46E799A773 /* IntegrationHostResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */; }; B26B34D894351E8452FBB64B /* IntegrationServerInformationSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5F919ABFCEF9B58EFE9D82E /* IntegrationServerInformationSectionView.swift */; }; B7F1E4A9D2C5B8F0A6E3C12A /* IntegrationImageSizing.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4D9C8B6E5F1D2A7C4E9B81B /* IntegrationImageSizing.swift */; }; BF96AEBA456420ADE446427F /* URL+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126F120258E9F18009965DC /* URL+BookPlayer.swift */; }; @@ -1138,6 +1140,7 @@ 2BB8BD2F5EC900DC51D5D02D /* IntegrationConnectionDataDecodingTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionDataDecodingTests.swift; sourceTree = ""; }; 2E070421575334E1CD85C049 /* IntegrationLibraryViewModelProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationLibraryViewModelProtocol.swift; sourceTree = ""; }; 3373A34FC2536111E50BF868 /* PasskeyEmailInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PasskeyEmailInputView.swift; sourceTree = ""; }; + 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHostResolver.swift; sourceTree = ""; }; 35C564A7BDE3A2D98E02BF8B /* IntegrationConnectedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrationConnectedView.swift; sourceTree = ""; }; 3724BB21B1B88177C60BE4D8 /* IntegrationConnectionFormViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionFormViewModelProtocol.swift; sourceTree = ""; }; 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WebAuthenticating.swift; sourceTree = ""; }; @@ -3488,6 +3491,7 @@ 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */, 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */, 22E85F55E03D1981F097661C /* PKCE.swift */, + 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */, ); path = Integrations; sourceTree = ""; @@ -4776,6 +4780,7 @@ AE284AB4D4139ED869288F99 /* IntegrationConnectionPayload.swift in Sources */, EF5A25679D73F58A5D551D01 /* IntegrationConnectionStore.swift in Sources */, 8AC2579BAAAAFE0091DA9285 /* PKCE.swift in Sources */, + 45FE3490229249F95A3CF5FF /* IntegrationHostResolver.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5391,6 +5396,7 @@ 5E699DCEB4EB06CB0A18A770 /* IntegrationConnectionPayload.swift in Sources */, F575EA7BBE6C619D27225281 /* IntegrationConnectionStore.swift in Sources */, 77980C5A9B7CF1A948FE7CF1 /* PKCE.swift in Sources */, + B16A2A4FFFE86D46E799A773 /* IntegrationHostResolver.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index e5447bab4..59d5d988a 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -280,7 +280,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, lastSyncedAt: nil, - hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + hostId: connectionService.connection?.stableHostId, libraryItem: libraryItem ) diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index 6d6e7266b..c440dbbf7 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -109,7 +109,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, lastSyncedAt: nil, - hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + hostId: connectionService.connection?.stableHostId, libraryItem: libraryItem ) diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index bda79da4f..9d61e2b6a 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -120,7 +120,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, lastSyncedAt: nil, - hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + hostId: connectionService.connection?.stableHostId, libraryItem: libraryItem ) diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index 17cc90822..8d86d3d27 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -412,7 +412,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, lastSyncedAt: nil, - hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + hostId: connectionService.connection?.stableHostId, libraryItem: libraryItem ) @@ -628,7 +628,7 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, lastSyncedAt: nil, - hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + hostId: connectionService.connection?.stableHostId, libraryItem: libraryItem ) @@ -858,7 +858,7 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, lastSyncedAt: nil, - hostId: connectionService.connection?.serverId ?? connectionService.connection?.url.absoluteString, + hostId: connectionService.connection?.stableHostId, libraryItem: libraryItem ) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift index 8aae613ce..22ccc6cd2 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift @@ -186,12 +186,12 @@ struct ItemDetailsExternalResourceSectionView: View { switch ExternalResource.ProviderName(rawValue: resource.providerName) { case .jellyfin: let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] - if let connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) { + if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { return connection.url.absoluteString } case .audiobookshelf: let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] - if let connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) { + if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { return connection.url.absoluteString } default: diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index 09ea9bbb4..5519c528d 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -874,14 +874,30 @@ extension ItemListViewModel { } func updateFromResource(jellyfinService: JellyfinConnectionService) async { - // 1. Find and extract the Jellyfin resources in a single, safe pass. let jellyfinResources = self.items.compactMap { item in item.externalResources?.first { $0.providerName == ExternalResource.ProviderName.jellyfin.rawValue } } - - // 2. Pass the pre-calculated, explicitly-typed array into the function. - guard let results = try? await jellyfinService.updateItemsFromJellyfin(jellyfinResources) else { return } - + guard !jellyfinResources.isEmpty else { return } + + // Resources can belong to DIFFERENT servers — group them by their resolved connection and + // query each server for its own items. Resources whose host doesn't match any saved + // connection are skipped (their provider ids mean nothing to another server). + let connections = jellyfinService.connections + var resourcesByConnectionID: [String: [SimpleExternalResource]] = [:] + for resource in jellyfinResources { + guard let connection = IntegrationHostResolver.connection(for: resource.hostId, in: connections) else { continue } + resourcesByConnectionID[connection.id, default: []].append(resource) + } + + var results: [String: JellyfinLibraryItem] = [:] + for (connectionID, resources) in resourcesByConnectionID { + guard let connection = connections.first(where: { $0.id == connectionID }) else { continue } + jellyfinService.useConnection(connection) + guard let batch = try? await jellyfinService.updateItemsFromJellyfin(resources) else { continue } + results.merge(batch) { _, new in new } + } + guard !results.isEmpty else { return } + libraryService.handleSyncFromExternalResouce(remoteItemsDictionary: results) } } @@ -908,6 +924,12 @@ extension ItemListViewModel: PlaybackSyncProgressDelegate { switch ExternalResource.ProviderName(rawValue: externalResource.providerName) { case .jellyfin: do { + // Pin the resource's own server — the active connection may be a different instance + // where this provider id doesn't exist (or worse, names another book). + guard let connection = IntegrationHostResolver.connection( + for: externalResource.hostId, in: jellyfinService.connections + ) else { break } + jellyfinService.useConnection(connection) if let jellyfinItem = try await jellyfinService.fetchItem(for: externalResource.providerId) { let threshold: TimeInterval = 15 let externalPlayDate = jellyfinItem.lastPlayedDate ?? Date.distantPast @@ -923,6 +945,11 @@ extension ItemListViewModel: PlaybackSyncProgressDelegate { } case .audiobookshelf: do { + // Same per-resource server pinning as the Jellyfin branch above. + guard let connection = IntegrationHostResolver.connection( + for: externalResource.hostId, in: audiobookShelfService.connections + ) else { break } + audiobookShelfService.useConnection(connection) if let audiobookShelfItem = try await audiobookShelfService.fetchItem(for: externalResource.providerId) { let threshold: TimeInterval = 15 let externalPlayDate = Date.distantPast diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 7629ce046..1dd5328df 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -472,8 +472,13 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { } catch { var actions = [BPActionItem.okAction] - if chapter.externalUrl != nil, - !FileManager.default.fileExists(atPath: chapter.fileURL.path) { + // Offer the Media Servers shortcut when streaming is the missing piece: either an + // external URL resolved and failed (auth/network), or — the cross-device case — the + // item has NO local file and NO cloud copy, which for an errored load means its + // media-server connection isn't configured on this device (externalUrl stays nil + // precisely because no saved server matched the resource's host). + if !FileManager.default.fileExists(atPath: chapter.fileURL.path), + chapter.externalUrl != nil || chapter.remoteURL == nil { actions.append( BPActionItem(title: "media_servers_title".localized) { NotificationCenter.default.post(name: .showMediaServers, object: nil) @@ -1271,9 +1276,10 @@ extension PlayerManager { if playbackQueued == true { var actions = [BPActionItem.okAction] + // Same missing-source rule as the chapter-load failure path (see loadChapterTask). if let chapter = currentItem?.currentChapter, - chapter.externalUrl != nil, - !FileManager.default.fileExists(atPath: chapter.fileURL.path) { + !FileManager.default.fileExists(atPath: chapter.fileURL.path), + chapter.externalUrl != nil || chapter.remoteURL == nil { actions.append( BPActionItem(title: "media_servers_title".localized) { NotificationCenter.default.post(name: .showMediaServers, object: nil) diff --git a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift index ea3d252a9..eb098db26 100644 --- a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift +++ b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift @@ -8,7 +8,7 @@ import Foundation -public struct AudiobookShelfConnectionData: Codable, Identifiable { +public struct AudiobookShelfConnectionData: Codable, Identifiable, IntegrationHostIdentifiable { public let id: String public let serverId: String? public let url: URL diff --git a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift index b4dc71004..cda50f450 100644 --- a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift +++ b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift @@ -62,6 +62,30 @@ public struct PlayableChapter: Codable, Identifiable { self.chapterOffset = chapterOffset self.externalHeaders = externalHeaders } + + /// `externalUrl`/`externalHeaders` are deliberately EXCLUDED from Codable: the headers carry + /// the media server's live `Authorization` token, and encoded `PlayableItem`s travel through + /// the WatchConnectivity application context, which the system PERSISTS TO DISK on both + /// devices. Both values are per-device, resolved from the local connection at load time + /// (`PlaybackService.getPlayableChapters`), so there is nothing to transport — the receiving + /// side re-resolves against its own saved connections. + enum CodingKeys: String, CodingKey { + case title, author, start, duration, relativePath, remoteURL, index, chapterOffset + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.title = try container.decode(String.self, forKey: .title) + self.author = try container.decode(String.self, forKey: .author) + self.start = try container.decode(TimeInterval.self, forKey: .start) + self.duration = try container.decode(TimeInterval.self, forKey: .duration) + self.relativePath = try container.decode(String.self, forKey: .relativePath) + self.remoteURL = try container.decodeIfPresent(URL.self, forKey: .remoteURL) + self.index = try container.decode(Int16.self, forKey: .index) + self.chapterOffset = (try? container.decodeIfPresent(TimeInterval.self, forKey: .chapterOffset)) ?? 0 + self.externalUrl = nil + self.externalHeaders = [:] + } } extension PlayableChapter: Equatable { diff --git a/Shared/Integrations/IntegrationHostResolver.swift b/Shared/Integrations/IntegrationHostResolver.swift new file mode 100644 index 000000000..a93c0313b --- /dev/null +++ b/Shared/Integrations/IntegrationHostResolver.swift @@ -0,0 +1,50 @@ +// +// IntegrationHostResolver.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +/// A saved media-server connection that can be matched against a synced external resource's +/// `hostId`. Both `JellyfinConnectionData` and `AudiobookShelfConnectionData` conform. +public protocol IntegrationHostIdentifiable { + /// The server's own stable id (Jellyfin `System/Info.Id`, ABS login `server.id`), captured at + /// sign-in. Nil for connections saved before the server ever reported one. + var serverId: String? { get } + var url: URL { get } +} + +extension IntegrationHostIdentifiable { + /// The value written as `hostId` on external resources this connection imports — the + /// cross-device server identity. Contract shared with the Android app (its + /// `ExternalServiceUtils.stableHostId`): the server GUID when known, else the canonical + /// URL key (never the raw absolute string, so trailing-slash/port/case variants of one + /// logical server produce the same identity on every device). + public var stableHostId: String { + serverId ?? url.canonicalDedupKey + } +} + +/// Mirrors the Android app's `ExternalServiceUtils.serverForResource` resolution contract: +/// 1. stable server GUID, case-insensitive (Jellyfin reports lowercase hex, ABS uppercase UUIDs — +/// casing must never break the match); +/// 2. else canonical URL key (covers GUID-less servers and URL-fallback hostIds); +/// 3. else **nil** — deliberately NO first-connection fallback. Guessing a server streams the +/// wrong file or pushes progress to the wrong server when ids collide across instances; +/// an unresolvable host must surface as "connect your server", not silently misroute. +public enum IntegrationHostResolver { + public static func connection( + for hostId: String?, + in connections: [C] + ) -> C? { + guard let hostId, !hostId.isEmpty else { return nil } + if let byServerId = connections.first(where: { + $0.serverId?.caseInsensitiveCompare(hostId) == .orderedSame + }) { + return byServerId + } + return connections.first(where: { $0.url.canonicalDedupKey == hostId }) + } +} diff --git a/Shared/Jellyfin/Network/JellyfinConnectionData.swift b/Shared/Jellyfin/Network/JellyfinConnectionData.swift index de74b3991..bcf16c212 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionData.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionData.swift @@ -8,7 +8,7 @@ import Foundation -public struct JellyfinConnectionData: Codable, Identifiable { +public struct JellyfinConnectionData: Codable, Identifiable, IntegrationHostIdentifiable { public let id: String public let serverId: String? public let url: URL diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift index 57a28581c..76b15f2eb 100644 --- a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift +++ b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift @@ -65,11 +65,14 @@ class ExternalUpdateProgressOperation: AsyncOperation, @unchecked Sendable { let jellyfinService = JellyfinConnectionService() await jellyfinService.setup() - if let hostId = self.hostId, !hostId.isEmpty { - if let targetConnection = await jellyfinService.connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) { - await jellyfinService.useConnection(targetConnection) - } - } + // Stable-host resolution only. An unresolvable host means this device doesn't have the + // server the resource belongs to — pushing to whichever connection is active would write + // progress to the WRONG server, so the update is deliberately dropped (same discard + // semantics as the Android app's external-update task). + guard let targetConnection = await IntegrationHostResolver.connection( + for: self.hostId, in: jellyfinService.connections + ) else { return } + await jellyfinService.useConnection(targetConnection) try await jellyfinService.updateItemProgress( self.providerItemId, @@ -82,11 +85,11 @@ class ExternalUpdateProgressOperation: AsyncOperation, @unchecked Sendable { let audiobookshelfService = AudiobookShelfConnectionService() await audiobookshelfService.setup() - if let hostId = self.hostId, !hostId.isEmpty { - if let targetConnection = await audiobookshelfService.connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) { - await audiobookshelfService.useConnection(targetConnection) - } - } + // Same stable-host discard semantics as the Jellyfin path above. + guard let targetConnection = await IntegrationHostResolver.connection( + for: self.hostId, in: audiobookshelfService.connections + ) else { return } + await audiobookshelfService.useConnection(targetConnection) try await audiobookshelfService.updateProgress(for: self.providerItemId, progress: self.percentCompleted, currentTime: Double(self.positionTicks / 10_000_000)) } diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index e0a27d795..c4fca130a 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -235,8 +235,10 @@ public final class PlaybackService: PlaybackServiceProtocol { switch provider { case .jellyfin: let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] - let connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) - ?? connections.first + // Resolved by stable host identity ONLY — no first-connection fallback. A resource whose + // host doesn't match any saved server must surface as missing (connect-your-server), not + // silently stream from whichever server happens to be configured (shared Android contract). + let connection = IntegrationHostResolver.connection(for: hostId, in: connections) if let connection = connection, let externalResource = externalResource { let urlString = connection.buildDownloadUrl(providerId: externalResource.providerId) @@ -246,8 +248,7 @@ public final class PlaybackService: PlaybackServiceProtocol { case .audiobookshelf: let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] - let connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) - ?? connections.first + let connection = IntegrationHostResolver.connection(for: hostId, in: connections) if let connection = connection, let externalResource = externalResource { let urlString = connection.buildAudiobookshelfDownloadUrl(providerId: externalResource.providerId) diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 08f1fd00c..7fa8023a9 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -468,15 +468,9 @@ public final class SyncService: SyncServiceProtocol, BPLogger { case .jellyfin: let keychainService = KeychainService() let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] - var connection: JellyfinConnectionData? - - if let hostId = external.hostId, !hostId.isEmpty { - connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) - } - - if connection == nil { - connection = connections.first - } + // Stable-host resolution only — downloading from a guessed server fetches the wrong + // file when provider item ids collide across instances (shared Android contract). + let connection = IntegrationHostResolver.connection(for: external.hostId, in: connections) if let connection = connection, let downloadUrl = URL(string: connection.buildDownloadUrl(providerId: external.providerId)) { @@ -493,15 +487,9 @@ public final class SyncService: SyncServiceProtocol, BPLogger { case .audiobookshelf: let keychainService = KeychainService() let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] - var connection: AudiobookShelfConnectionData? - - if let hostId = external.hostId, !hostId.isEmpty { - connection = connections.first(where: { $0.serverId == hostId || $0.url.absoluteString == hostId }) - } - - if connection == nil { - connection = connections.first - } + // Stable-host resolution only — downloading from a guessed server fetches the wrong + // file when provider item ids collide across instances (shared Android contract). + let connection = IntegrationHostResolver.connection(for: external.hostId, in: connections) if let connection = connection, let downloadUrl = URL(string: connection.buildAudiobookshelfDownloadUrl(providerId: external.providerId)) { From ba0d5b2b1add40425509fcba49d0c9657cb0b326 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 17:43:00 -0500 Subject: [PATCH 004/172] fix: consume discarded external progress pushes; keep them ungated by tier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two follow-ups from the retry-semantics review of the unified queue: - A progress push whose hostId resolves to no saved connection is now CONSUMED (didSucceed = true), not left as a failure. The queue pops successful tasks and retries failures forever (5s sleep + re-enqueue), and an unknown host is a permanent condition on this device — a synced-down resource for a server the user never connected here would otherwise retry every few seconds indefinitely, blocking its provider queue. Matches the Android engine's discard semantics for the same case. - externalUpdate is available on every tier (free included): the push goes to the USER'S OWN media server, not a BookPlayer-billed resource — parity with Android, where the media-server queues are deliberately exempt from entitlement gating. A push that fails because the user's server is unreachable still retries forever by design (intentional parity with the existing sync engines). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ConcurrentSync/ConcurrenceService.swift | 5 ++++- .../ExternalUpdateProgressOperation.swift | 19 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index ffb1fd31e..a87984f70 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -376,8 +376,11 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { .uploadFile: true, ] default: + // Progress pushes go to the USER'S OWN media server, not a BookPlayer-billed resource — + // they stay available on every tier (parity with the Android app, where the media-server + // queues are deliberately exempt from entitlement gating). accessPolicy = [ - .externalUpdate: false, + .externalUpdate: true, .uploadFile: false, ] } diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift index 76b15f2eb..b717897ef 100644 --- a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift +++ b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift @@ -67,11 +67,17 @@ class ExternalUpdateProgressOperation: AsyncOperation, @unchecked Sendable { // Stable-host resolution only. An unresolvable host means this device doesn't have the // server the resource belongs to — pushing to whichever connection is active would write - // progress to the WRONG server, so the update is deliberately dropped (same discard - // semantics as the Android app's external-update task). + // progress to the WRONG server, so the update is deliberately dropped. Dropping means + // CONSUMING the task (didSucceed = true): the queue only pops successful tasks and retries + // failures forever, and an unknown host is a permanent condition on this device — leaving + // it failed would retry every few seconds until the end of time (same discard semantics as + // the Android app's external-update task). guard let targetConnection = await IntegrationHostResolver.connection( for: self.hostId, in: jellyfinService.connections - ) else { return } + ) else { + self.didSucceed = true + return + } await jellyfinService.useConnection(targetConnection) try await jellyfinService.updateItemProgress( @@ -85,10 +91,13 @@ class ExternalUpdateProgressOperation: AsyncOperation, @unchecked Sendable { let audiobookshelfService = AudiobookShelfConnectionService() await audiobookshelfService.setup() - // Same stable-host discard semantics as the Jellyfin path above. + // Same stable-host discard-by-consuming semantics as the Jellyfin path above. guard let targetConnection = await IntegrationHostResolver.connection( for: self.hostId, in: audiobookshelfService.connections - ) else { return } + ) else { + self.didSucceed = true + return + } await audiobookshelfService.useConnection(targetConnection) try await audiobookshelfService.updateProgress(for: self.providerItemId, progress: self.percentCompleted, currentTime: Double(self.positionTicks / 10_000_000)) From 249fbce8f1a33d4824756609fea418d35d77d69d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 18:02:37 -0500 Subject: [PATCH 005/172] fix: address review feedback (round 1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All ten findings from the automated review, verified against the code: - loadPlayer speaks RELATIVE PATHS again: the rename to uuid broke every launch surface that still passed a path (App Intents, CarPlay, search, watch, last-book restore, deep links) — resolution to the item happens inside the loader via getSimpleItem(with:), and the two uuid-passing call sites (including one that was actually feeding it a path) were reverted. - PlayerManager's two new loading-state observers are named, cancel-before- rebind subscriptions instead of disposeBag entries: the item-status KVO publisher retained every loaded AVPlayerItem for the manager's lifetime, and the player observer duplicated on every player recreation. - CoreDataStack.saveContext keeps performAndWait (the unified queue saves from arbitrary threads) but drops the cross-context isSaving/pendingSave gate (it dropped the deferred context's save) and restores the hard-fail on save errors per the repo invariant. - FileUploadOperation's progress filter compares the event's path against the operation's uuid — the previous check was a tautology and every upload reported every other upload's bytes. - connection.customHeaders are merged into external streaming and download requests (Authorization still wins), so servers behind header-gated reverse proxies keep working for synced items. - ConcurrenceService's notification listener captures self weakly — the never-ending for-await loop otherwise retains the service forever. - AsyncOperation.state is lock-guarded (queue thread and detached-Task finish() race it), with KVO notifications emitted outside the lock. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library/ItemList/ItemListView.swift | 10 +++--- .../Library/ItemList/LibraryRootView.swift | 2 +- BookPlayer/Player/PlayerLoaderService.swift | 7 +++-- BookPlayer/Player/PlayerManager.swift | 16 +++++++--- Shared/CoreData/CoreDataStack.swift | 31 ++++--------------- .../ConcurrentSync/AsyncOperation.swift | 26 ++++++++++++---- .../ConcurrentSync/ConcurrenceService.swift | 5 ++- .../ConcurrentSync/FileUploadOperation.swift | 5 +-- Shared/Services/PlaybackService.swift | 8 +++-- Shared/Services/Sync/SyncService.swift | 9 ++++-- 10 files changed, 69 insertions(+), 50 deletions(-) diff --git a/BookPlayer/Library/ItemList/ItemListView.swift b/BookPlayer/Library/ItemList/ItemListView.swift index ef8495876..4694c012d 100644 --- a/BookPlayer/Library/ItemList/ItemListView.swift +++ b/BookPlayer/Library/ItemList/ItemListView.swift @@ -306,7 +306,7 @@ struct ItemListView: View { case .downloading: cancelDownload(of: item.id) case .downloaded, .notDownloaded: - loadPlayer(with: item.uuid) + loadPlayer(with: item.relativePath) } } .accessibilityAction { @@ -323,7 +323,7 @@ struct ItemListView: View { case .downloading: cancelDownload(of: item.id) case .downloaded, .notDownloaded: - loadPlayer(with: item.uuid) + loadPlayer(with: item.relativePath) } } } @@ -584,7 +584,7 @@ struct ItemListView: View { loadPlayer(with: uuid) } case .bound, .book: - loadPlayer(with: item.uuid) + loadPlayer(with: item.relativePath) } } } @@ -596,10 +596,10 @@ struct ItemListView: View { } } - func loadPlayer(with uuid: String) { + func loadPlayer(with relativePath: String) { Task { do { - try await playerLoaderService.loadPlayer(uuid, autoplay: true) + try await playerLoaderService.loadPlayer(relativePath, autoplay: true) playerState.showPlayerBinding.wrappedValue = true } catch { print(error) diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index 43fa08f75..4961d3095 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -173,7 +173,7 @@ struct LibraryRootView: View { do { try await AppServices.shared.coreServices?.playerLoaderService.loadPlayer( - libraryItem.uuid, + libraryItem.relativePath, autoplay: false, recordAsLastBook: false ) diff --git a/BookPlayer/Player/PlayerLoaderService.swift b/BookPlayer/Player/PlayerLoaderService.swift index c1bc9f3e0..7867061a6 100644 --- a/BookPlayer/Player/PlayerLoaderService.swift +++ b/BookPlayer/Player/PlayerLoaderService.swift @@ -36,11 +36,14 @@ final class PlayerLoaderService: @unchecked Sendable { @MainActor func loadPlayer( - _ uuid: String, + _ relativePath: String, autoplay: Bool, recordAsLastBook: Bool = true ) async throws { - guard let libraryItem = self.libraryService.getSimpleItem(for: uuid) + // The loader's contract is a RELATIVE PATH — every launch surface speaks paths (App + // Intents, CarPlay, search, watch, last-book restore, deep links). Resolution to the + // item (and its uuid) happens here, in one place. + guard let libraryItem = self.libraryService.getSimpleItem(with: relativePath) else { return } let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(libraryItem.relativePath) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 1dd5328df..bb3390501 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -34,6 +34,12 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { private var isPlayingSubscription: AnyCancellable? /// Tracks the brief muted play used to claim Now Playing on CarPlay connect, so we can pause once it starts private var nowPlayingClaimSubscription: AnyCancellable? + /// Named + cancelled-before-rebind: bound on every player recreation (init, .failed, + /// mediaServicesWereReset) — a disposeBag entry would accumulate one sink per recreation. + private var playerLoadingStateSubscription: AnyCancellable? + /// Named + cancelled-before-rebind: bound on EVERY chapter/item load — a disposeBag entry + /// leaks one KVO publisher (which retains its AVPlayerItem) per loaded chapter. + private var playerItemStatusSubscription: AnyCancellable? private var periodicTimeObserver: Any? private var disposeBag = Set() /// Flag determining if it should resume playback after finishing up loading an item @@ -190,7 +196,8 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { guard let player = player else { return } // 2. Observe Buffering (AVPlayer TimeControlStatus) - player.publisher(for: \.timeControlStatus) + playerLoadingStateSubscription?.cancel() + playerLoadingStateSubscription = player.publisher(for: \.timeControlStatus) .sink { [weak self, weak player] status in guard let self = self, let player = player else { return } @@ -209,7 +216,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { break } } - .store(in: &disposeBag) // Keep the subscription alive + } func currentItemPublisher() -> AnyPublisher { @@ -347,7 +354,8 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { return } - playerItem.publisher(for: \.status) + playerItemStatusSubscription?.cancel() + playerItemStatusSubscription = playerItem.publisher(for: \.status) .sink { [weak self] status in guard let self = self else { return } @@ -364,7 +372,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { break } } - .store(in: &disposeBag) + } func load(_ item: PlayableItem, autoplay: Bool) { load(item, autoplay: autoplay, forceRefreshURL: false) diff --git a/Shared/CoreData/CoreDataStack.swift b/Shared/CoreData/CoreDataStack.swift index 3ffd0f1f3..19f4d8e14 100644 --- a/Shared/CoreData/CoreDataStack.swift +++ b/Shared/CoreData/CoreDataStack.swift @@ -62,42 +62,23 @@ public class CoreDataStack { } } - private let saveLock = NSRecursiveLock() - private var isSaving = false - private var pendingSave = false - public func saveContext() { saveContext(managedContext) } public func saveContext(_ context: NSManagedObjectContext) { - saveLock.lock() - if isSaving { - pendingSave = true - saveLock.unlock() - return - } - isSaving = true - saveLock.unlock() - + // performAndWait: the unified sync queue saves from arbitrary executor threads, and a + // save must run on the context's own queue. It also serializes concurrent saves of the + // SAME context — the only serialization CoreData needs here; different contexts save + // independently. Save failure remains a hard fail (repo invariant): with no merge + // policy set, a failed save means inconsistent state that must never be silently kept. context.performAndWait { guard context.hasChanges else { return } do { try context.save() } catch let error as NSError { - // Only crash in debug to allow investigation, or keep fatalError if strictly required - assertionFailure("Unresolved error \(error), \(error.userInfo)") + fatalError("Unresolved error \(error), \(error.userInfo)") } } - - saveLock.lock() - isSaving = false - let shouldRetry = pendingSave - pendingSave = false - saveLock.unlock() - - if shouldRetry { - saveContext(context) - } } } diff --git a/Shared/Services/ConcurrentSync/AsyncOperation.swift b/Shared/Services/ConcurrentSync/AsyncOperation.swift index bc78ce6e7..92e3cfdf5 100644 --- a/Shared/Services/ConcurrentSync/AsyncOperation.swift +++ b/Shared/Services/ConcurrentSync/AsyncOperation.swift @@ -14,14 +14,28 @@ class AsyncOperation: Operation, @unchecked Sendable { fileprivate var keyPath: String { return "is\(rawValue.capitalized)" } } - var state = State.ready { - willSet { - willChangeValue(forKey: newValue.keyPath) - willChangeValue(forKey: state.keyPath) + /// `state` is read by the OperationQueue and written from both the queue thread (`start()`) + /// and the subclasses' detached Tasks (`finish()`), so access is lock-guarded — the classic + /// async-Operation footgun. KVO notifications fire outside the lock. + private let stateLock = NSLock() + private var _state = State.ready + var state: State { + get { + stateLock.lock(); defer { stateLock.unlock() } + return _state } - didSet { + set { + let oldValue: State + stateLock.lock() + oldValue = _state + stateLock.unlock() + willChangeValue(forKey: newValue.keyPath) + willChangeValue(forKey: oldValue.keyPath) + stateLock.lock() + _state = newValue + stateLock.unlock() didChangeValue(forKey: oldValue.keyPath) - didChangeValue(forKey: state.keyPath) + didChangeValue(forKey: newValue.keyPath) } } diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index a87984f70..985779f9b 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -121,10 +121,13 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { } private func startListeningForNewTasks() { - listeningTask = Task { + // [weak self]: the for-await loop never terminates on its own, so a strong capture makes + // the service retain itself through its task and deinit (which cancels it) never runs. + listeningTask = Task { [weak self] in let stream = NotificationCenter.default.notifications(named: .newTaskInQueue) for await notification in stream { + guard let self else { return } guard let userInfo = notification.userInfo, let queueKey = userInfo["queueKey"] as? String else { continue diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index 5e9ec4734..f91b65ddb 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -95,8 +95,9 @@ class FileUploadOperation: AsyncOperation, @unchecked Sendable { progressSubscriber = BPURLSession.shared.progressPublisher .sink { [weak self] (path, progress) in guard let self = self else { return } - // CRITICAL: Only report progress if this event belongs to THIS operation - if uuid == self.uuid { + // CRITICAL: Only report progress if this event belongs to THIS operation — the + // publisher is shared by ALL concurrent uploads; `path` is the emitting task's uuid. + if path == self.uuid { self.onProgress?(progress) } } diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index c4fca130a..b6aae2db3 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -243,7 +243,10 @@ public final class PlaybackService: PlaybackServiceProtocol { if let connection = connection, let externalResource = externalResource { let urlString = connection.buildDownloadUrl(providerId: externalResource.providerId) externalUrl = URL(string: urlString) - externalHeaders = ["Authorization": "MediaBrowser Token=\"\(connection.accessToken)\""] + // Custom headers first (reverse-proxy gates like Cloudflare Access), then the + // integration's own Authorization so it always wins on conflict. + externalHeaders = connection.customHeaders + externalHeaders["Authorization"] = "MediaBrowser Token=\"\(connection.accessToken)\"" } case .audiobookshelf: @@ -253,7 +256,8 @@ public final class PlaybackService: PlaybackServiceProtocol { if let connection = connection, let externalResource = externalResource { let urlString = connection.buildAudiobookshelfDownloadUrl(providerId: externalResource.providerId) externalUrl = URL(string: urlString) - externalHeaders = ["Authorization": "Bearer \(connection.apiToken)"] + externalHeaders = connection.customHeaders + externalHeaders["Authorization"] = "Bearer \(connection.apiToken)" } default: diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 7fa8023a9..46a0c14a0 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -474,13 +474,16 @@ public final class SyncService: SyncServiceProtocol, BPLogger { if let connection = connection, let downloadUrl = URL(string: connection.buildDownloadUrl(providerId: external.providerId)) { + // Custom headers first (reverse-proxy gates), integration Authorization wins on conflict. + var headers = connection.customHeaders + headers["Authorization"] = "MediaBrowser Token=\"\(connection.accessToken)\"" remoteURLs = [ RemoteFileURL( url: downloadUrl, relativePath: item.relativePath, type: .book, externalResources: nil, - headers: ["Authorization": "MediaBrowser Token=\"\(connection.accessToken)\""] + headers: headers ) ] } @@ -493,13 +496,15 @@ public final class SyncService: SyncServiceProtocol, BPLogger { if let connection = connection, let downloadUrl = URL(string: connection.buildAudiobookshelfDownloadUrl(providerId: external.providerId)) { + var headers = connection.customHeaders + headers["Authorization"] = "Bearer \(connection.apiToken)" remoteURLs = [ RemoteFileURL( url: downloadUrl, relativePath: item.relativePath, type: .book, externalResources: nil, - headers: ["Authorization": "Bearer \(connection.apiToken)"] + headers: headers ) ] } From ee98b33af25304158ee9d23ee222e337c7bac622 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 18:22:55 -0500 Subject: [PATCH 006/172] fix: address review feedback (round 2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All fourteen findings from the second review pass, verified against the code: - The streamed/duration-unknown currentItem swap in loadPlayerItem now rebinds the playable-chapter subscription (repo invariant: EVERY currentItem reassignment rebinds, or .chapterChange fires off the orphaned item and the end-of-chapter sleep timer + Now Playing chapter title silently break). - handleExternalResourceToDownload streams the book from disk (new file-based upload on a NetworkClientProtocol extension) instead of materializing GB files as a single Data, rethrows on upload failure (previously swallowed), and only confirms uploaded:true to the server after a successful upload. - External-resource downloads forward EVERY prepared header, not just Authorization — the header dict deliberately carries the connection's custom reverse-proxy headers. - insertItems(from:) guards resource.libraryItem instead of force-unwrapping. - The phone refreshes ConcurrenceService's per-job access policy on .accountUpdate (mid-session subscription changes previously kept the launch-time policy until restart; the watch already handled this). - FileUploadOperation.cancel() finishes an executing operation — its completion subscriber (the usual finisher) is torn down by cancel, which otherwise leaks the OperationQueue slot forever. - PlayerViewModel mirrors playerManager.playerIsLoadingURL into a @Published the view actually observes; the buffering overlay updated only coincidentally before. - ExternalImportView + SyncInvitationCard: localized user-facing strings and accessibility labels (new base keys import_title, files_title, sync_invitation_learn_more_hint); apple_watch_beta_title added to Base; sync_invitation_description Base format specifiers fixed to match en. - ABS currentTime uses float division (integer division truncated to whole seconds before conversion). - Deleted the dead, unregistered duplicate IntegrationError declaration in Shared/Jellyfin/Network/JellyfinError.swift. - Debug print()s in the sync operations routed through BPLogger. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Base.lproj/Localizable.strings | 6 ++- BookPlayer/Coordinators/MainCoordinator.swift | 12 +++++ .../ExternalSource/ExternalImportView.swift | 8 +-- BookPlayer/Import/ImportManager.swift | 1 - BookPlayer/Player/PlayerManager.swift | 4 ++ .../Player/ViewModels/PlayerViewModel.swift | 11 +++++ BookPlayer/Player/Views/PlayerView.swift | 2 +- .../CompleteAccount/SyncInvitationCard.swift | 4 +- BookPlayer/en.lproj/Localizable.strings | 3 ++ Shared/Jellyfin/Network/JellyfinError.swift | 49 ------------------- Shared/Network/NetworkClient.swift | 23 +++++++++ .../ExternalUpdateProgressOperation.swift | 6 +-- .../ConcurrentSync/FileUploadOperation.swift | 10 ++-- Shared/Services/LibraryService.swift | 5 +- .../Sync/LibraryItemSyncOperation.swift | 15 +++--- Shared/Services/Sync/SyncService.swift | 8 ++- 16 files changed, 93 insertions(+), 74 deletions(-) delete mode 100644 Shared/Jellyfin/Network/JellyfinError.swift diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 4cf7d361b..d10b25b94 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -512,7 +512,7 @@ We're working hard on providing a seamless experience, if possible, please conta "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Save Your Storage!"; "sync_invitation_learn_more_button" = "Learn more"; -"sync_invitation_description" = "You're about to %1 %2 items. %3"; +"sync_invitation_description" = "You're about to %1$@ %2$d items. %3$@"; "sync_invitation_stream_description" = "Instead of taking up space, stream them directly from your server and keep your progress synced."; "sync_tasks_concurrent_count_title" = "Concurrent Tasks (%d)"; "sync_tasks_running_empty_title" = "No running tasks"; @@ -529,3 +529,7 @@ We're working hard on providing a seamless experience, if possible, please conta "create_profile_description" = "To enable cloud sync, sign into your profile. You can always do this later from within the Profile tab"; "not_now_button" = "Not now"; "quick_action_label" = "Quick Action %d"; +"apple_watch_beta_title" = "Apple Watch (Beta)"; +"import_title" = "Import"; +"files_title" = "%d Files"; +"sync_invitation_learn_more_hint" = "Learn more about streaming and syncing items from your server."; diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index ce0245da6..7152efdec 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -168,6 +168,18 @@ class MainCoordinator: NSObject { self?.playerState.loadedBookRelativePath = item?.relativePath } .store(in: &disposeBag) + + // Keep the queue's per-job access policy current with the subscription: RevenueCat + // updates post .accountUpdate, and without this a mid-session upgrade leaves the + // launch-time policy (e.g. file uploads still gated off) until the next app start. + // The watch already does the equivalent in ExtensionDelegate. + NotificationCenter.default.publisher(for: .accountUpdate) + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self else { return } + self.concurrenceService.updateConcurrentService(self.accountService.getAccessLevel()) + } + .store(in: &disposeBag) } func loadPlayer(_ relativePath: String, autoplay: Bool, showPlayer: Bool) { diff --git a/BookPlayer/Import/ExternalSource/ExternalImportView.swift b/BookPlayer/Import/ExternalSource/ExternalImportView.swift index 630714f55..c4cb37582 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportView.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportView.swift @@ -25,6 +25,7 @@ struct ExternalImportView: View { dismiss() } label: { Image(systemName: "xmark") + .accessibilityLabel("cancel_button".localized) .font(.system(size: 16, weight: .semibold)) .foregroundColor(theme.primaryColor) .frame(width: 44, height: 44) @@ -42,6 +43,7 @@ struct ExternalImportView: View { } } label: { Image(systemName: "checkmark") + .accessibilityLabel("import_button".localized) .font(.system(size: 16, weight: .semibold)) .foregroundColor(theme.primaryColor) .frame(width: 44, height: 44) @@ -53,7 +55,7 @@ struct ExternalImportView: View { .safeAreaPadding(.top) // Headers - Text("Import") + Text("import_title".localized) .font(.system(size: 34, weight: .bold)) .foregroundColor(theme.primaryColor) @@ -62,7 +64,7 @@ struct ExternalImportView: View { .foregroundColor(theme.primaryColor.opacity(0.6)) .lineSpacing(4) - Text("\(viewModel.resources.count) File\(viewModel.resources.count == 1 ? "" : "s")") + Text(String.localizedStringWithFormat("files_title".localized, viewModel.resources.count)) .font(.headline) .foregroundColor(theme.primaryColor.opacity(0.6)) .padding(.top, 10) @@ -86,7 +88,7 @@ struct ExternalImportView: View { .foregroundColor(.pink) // File Name - Text(resource.libraryItem?.originalFileName ?? "Unknown Item") + Text(resource.libraryItem?.originalFileName ?? "voiceover_unknown_title".localized) .foregroundColor(theme.primaryColor) .font(.system(size: 14)) .lineLimit(1) diff --git a/BookPlayer/Import/ImportManager.swift b/BookPlayer/Import/ImportManager.swift index 4e1197c15..5b28d0672 100644 --- a/BookPlayer/Import/ImportManager.swift +++ b/BookPlayer/Import/ImportManager.swift @@ -159,7 +159,6 @@ final class ImportManager: ObservableObject { guard let simpleItem = externalResource.libraryItem else { return false } let documentsFolder = DataManager.getDocumentsFolderURL() let destinationURL = documentsFolder.appendingPathComponent(simpleItem.relativePath) - print(destinationURL) if self.libraryService.findBooks(containing: destinationURL)?.first != nil { return true } diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index bb3390501..6850bb644 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -321,6 +321,10 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { if let libraryItem = libraryService.getSimpleItem(with: chapter.relativePath), let updatedItem = try? playbackService.getPlayableItem(from: libraryItem) { currentItem = updatedItem + // Invariant: EVERY currentItem reassignment rebinds the chapter subscription — + // otherwise .chapterChange keeps firing off the orphaned item and the + // end-of-chapter sleep timer + Now Playing chapter title silently break. + bindPlayableChapterSubscription(to: updatedItem, dropInitialReplay: true) } } } else { diff --git a/BookPlayer/Player/ViewModels/PlayerViewModel.swift b/BookPlayer/Player/ViewModels/PlayerViewModel.swift index cc5afd97a..5cffec92e 100644 --- a/BookPlayer/Player/ViewModels/PlayerViewModel.swift +++ b/BookPlayer/Player/ViewModels/PlayerViewModel.swift @@ -33,6 +33,9 @@ final class PlayerViewModel: ObservableObject { @Published var sleepText: String? @Published var sleepAccessibilityLabel: String? @Published var hasNextChapter = false + /// Mirrors playerManager.playerIsLoadingURL: the view can't observe an @Published on a + /// nested ObservableObject, so the buffering overlay would only update coincidentally. + @Published var isLoadingURL = false @Published var hasPreviousChapter = false @Published var lastBookmark: SimpleBookmark? @Published var sheetStyle: PlayerSheetStyle? @@ -198,6 +201,14 @@ final class PlayerViewModel: ObservableObject { } func bindBookPlayingProgressEvents() { + self.playerManager.$playerIsLoadingURL + .removeDuplicates() + .receive(on: DispatchQueue.main) + .sink { [weak self] isLoading in + self?.isLoadingURL = isLoading + } + .store(in: &disposeBag) + self.playerManager.isPlayingPublisher() .removeDuplicates() .receive(on: DispatchQueue.main) diff --git a/BookPlayer/Player/Views/PlayerView.swift b/BookPlayer/Player/Views/PlayerView.swift index b1bc01152..b0b6371b6 100644 --- a/BookPlayer/Player/Views/PlayerView.swift +++ b/BookPlayer/Player/Views/PlayerView.swift @@ -51,7 +51,7 @@ struct PlayerView: View { } } .overlay { - if viewModel.playerManager.playerIsLoadingURL { + if viewModel.isLoadingURL { DynamicWaveLoadingView() // Ensure the wave view respects the image's rounded corners .aspectRatio(1, contentMode: .fit) diff --git a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift index d5f812933..513eaf0c4 100644 --- a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift +++ b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift @@ -57,8 +57,8 @@ struct SyncInvitationCard: View { .foregroundColor(.white) .cornerRadius(14) } - .accessibilityLabel("Learn more") - .accessibilityHint("Learn more about streaming and syncing items from your server.") + .accessibilityLabel("learn_more_title".localized) + .accessibilityHint("sync_invitation_learn_more_hint".localized) } Button { diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 4ee39febf..24ea1cdb9 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -534,3 +534,6 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"import_title" = "Import"; +"files_title" = "%d Files"; +"sync_invitation_learn_more_hint" = "Learn more about streaming and syncing items from your server."; diff --git a/Shared/Jellyfin/Network/JellyfinError.swift b/Shared/Jellyfin/Network/JellyfinError.swift deleted file mode 100644 index d0ad7b97a..000000000 --- a/Shared/Jellyfin/Network/JellyfinError.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// IntegrationError.swift -// BookPlayer -// -// Created by Gianni Carlo on 4/5/26. -// Copyright © 2026 BookPlayer LLC. All rights reserved. -// - -import Foundation - -public enum IntegrationError: Error, LocalizedError { - case urlMalformed(_ url: URL?) - case urlFromComponents(_ components: URLComponents) - case noClient(_ integrationName: String) - case unexpectedResponse(code: Int?) - case clientError(code: Int) - - public var errorDescription: String? { - switch self { - case .urlMalformed(let url): - String(format: "integration_internal_error_invalid_url".localized, String(reflecting: url)) - case .urlFromComponents: - "integration_internal_error_build_url".localized - case .noClient(let name): - String(format: "integration_internal_error_no_client".localized, name) - case .unexpectedResponse(let code): - if let code { - String( - format: "integration_error_unexpected_response_with_code".localized, - code, - HTTPURLResponse.localizedString(forStatusCode: code) - ) - } else { - "integration_error_unexpected_response".localized - } - case .clientError(let code): - switch code { - case 401: - "integration_error_unauthorized".localized - default: - String( - format: "integration_error_unexpected_response_with_code".localized, - code, - HTTPURLResponse.localizedString(forStatusCode: code) - ) - } - } - } -} diff --git a/Shared/Network/NetworkClient.swift b/Shared/Network/NetworkClient.swift index 55263f6a3..bae840786 100644 --- a/Shared/Network/NetworkClient.swift +++ b/Shared/Network/NetworkClient.swift @@ -295,3 +295,26 @@ struct ErrorResponse: Decodable { let message: String let error: String? } + + +extension NetworkClientProtocol { + /// PUT a file streaming FROM DISK — for payloads (audiobooks) that must never be + /// materialized as one in-memory Data. Same error contract as `upload(_:remoteURL:)`. + /// A protocol extension (not a requirement) so the Sourcery mocks don't need regeneration. + public func upload( + fileURL: URL, + remoteURL: URL + ) async throws { + var request = URLRequest(url: remoteURL) + request.cachePolicy = .reloadIgnoringLocalCacheData + request.httpMethod = HTTPMethod.put.rawValue + + let (responseData, response) = try await URLSession.shared.upload(for: request, fromFile: fileURL) + + if let httpResponse = response as? HTTPURLResponse, + !(200...299).contains(httpResponse.statusCode) { + let errorMessage = String(data: responseData, encoding: .utf8) ?? "No error body" + throw URLError(.badServerResponse, userInfo: ["error": errorMessage]) + } + } +} diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift index b717897ef..8b8c49c1e 100644 --- a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift +++ b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift @@ -8,7 +8,7 @@ import Foundation -class ExternalUpdateProgressOperation: AsyncOperation, @unchecked Sendable { +class ExternalUpdateProgressOperation: AsyncOperation, BPLogger, @unchecked Sendable { let providerName: String let providerItemId: String @@ -55,7 +55,7 @@ class ExternalUpdateProgressOperation: AsyncOperation, @unchecked Sendable { } catch { // If it throws, execution instantly jumps here. - print("🔴 OPERATION FAILED WITH ERROR: \(error)") + Self.logger.error("External progress push failed: \(error)") self.didSucceed = false } } @@ -100,6 +100,6 @@ class ExternalUpdateProgressOperation: AsyncOperation, @unchecked Sendable { } await audiobookshelfService.useConnection(targetConnection) - try await audiobookshelfService.updateProgress(for: self.providerItemId, progress: self.percentCompleted, currentTime: Double(self.positionTicks / 10_000_000)) + try await audiobookshelfService.updateProgress(for: self.providerItemId, progress: self.percentCompleted, currentTime: Double(self.positionTicks) / 10_000_000) } } diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index f91b65ddb..bf211d571 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -9,7 +9,7 @@ import Foundation import Combine -class FileUploadOperation: AsyncOperation, @unchecked Sendable { +class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { // MARK: - Properties let fileURL: URL @@ -121,7 +121,7 @@ class FileUploadOperation: AsyncOperation, @unchecked Sendable { } else if let error = error { // Actual Failure - print("Upload failed for \(self.uuid): \(error)") + Self.logger.error("Upload failed for \(self.uuid): \(error)") self.didSucceed = false self.finish() @@ -132,7 +132,7 @@ class FileUploadOperation: AsyncOperation, @unchecked Sendable { do { try FileManager.default.removeItem(at: self.fileURL) } catch { - print("Failed to delete hard link for \(self.uuid): \(error.localizedDescription)") + Self.logger.warning("Failed to delete hard link for \(self.uuid): \(error.localizedDescription)") } } self.didSucceed = true @@ -149,5 +149,9 @@ class FileUploadOperation: AsyncOperation, @unchecked Sendable { cellularDataObserver?.invalidate() progressSubscriber?.cancel() completionSubscriber?.cancel() + // The completion subscriber (which would have called finish()) was just torn down — + // without this, an operation cancelled mid-flight stays .executing forever and its + // OperationQueue slot is never reclaimed. + if isExecuting { finish() } } } diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index d9d2e7e92..8b63a206f 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -1306,8 +1306,11 @@ extension LibraryService { var processedFiles = [SimpleLibraryItem]() var nextOrderRank = getNextOrderRank(in: nil) for resource in resources { + // libraryItem is optional by construction (ignoreLibraryItem paths) — a resource + // without one cannot become a book row; skip it instead of crashing. + guard let simpleItem = resource.libraryItem else { continue } let libraryItem: LibraryItem - let book = await createExternalBook(simpleItem: resource.libraryItem!, externalResource: resource) + let book = await createExternalBook(simpleItem: simpleItem, externalResource: resource) libraryItem = book libraryItem.orderRank = nextOrderRank nextOrderRank += 1 diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index cafb54099..e956825c8 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -266,17 +266,16 @@ extension LibraryItemSyncOperation { ? hardLinkURL : DataManager.getProcessedFolderURL().appendingPathComponent(self.relativePath) - guard let data = FileManager.default.contents(atPath: fileURL.path), + guard FileManager.default.fileExists(atPath: fileURL.path), let remoteUrl = response.url else { return } - - do { - try await client.upload(data, remoteURL: remoteUrl) - } catch { - print("Failed to upload data to \(remoteUrl): \(error)") - } - + + // Streamed straight from disk — audiobooks run into the GBs and must never be + // materialized as a single in-memory Data. A failed upload THROWS so the task is + // retried and the server is never told the file exists when it doesn't. + try await client.upload(fileURL: fileURL, remoteURL: remoteUrl) + let _: Empty = try await self.provider.request( .externalResourceToDownload(uuid: uuid, uploaded: true) ) diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 46a0c14a0..fcdcc671d 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -536,9 +536,13 @@ public final class SyncService: SyncServiceProtocol, BPLogger { guard !FileManager.default.fileExists(atPath: localURL.path) else { continue } - if let bearer = remoteURL.headers?["Authorization"] { + if let headers = remoteURL.headers, !headers.isEmpty { var request = URLRequest(url: downloadUrl) - request.setValue(bearer, forHTTPHeaderField: "Authorization") + // Forward EVERY header — the dict deliberately includes the connection's custom + // headers (reverse-proxy gates like Cloudflare Access), not just Authorization. + for (field, value) in headers { + request.setValue(value, forHTTPHeaderField: field) + } let task = await provider.client.download( request: request, From 1deee31ce6b0135d5c267dedc7268b1dcf6b01fe Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 18:41:00 -0500 Subject: [PATCH 007/172] fix: address review feedback (round 3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All ten findings from the third review pass, verified against the code: - FileUploadOperation no longer risks deleting the user's real audiobook: cleanup removes fileURL ONLY when it lives under the temp directory (when the hard link was never created, fileURL falls back to the Processed-folder original). The success branch also validates the HTTP status — the background delegate surfaces no error for a rejected PUT, so a 403/expired presigned URL was previously treated as a successful upload. - createExternalBook is @MainActor — it creates/mutates managed objects on the main-queue viewContext and was reachable off the main thread. - The Jellyfin batch refresh uses a throwaway connection-service instance; pinning connections on the shared environment service silently repointed the UI's active connection. - The streamed/duration-unknown load path checks Task cancellation after its awaits before applying the refreshed item over a newer load. - The main list's per-row external-resource lookup is a single grouped fetch (N+1 on every list render before). - ConcurrentSyncTasksView labels localized (new keys task_uploading_file_label, task_updating_progress_label); details-view keys copied into Base (file_path_title, genres_title, overview_title, tags_title, series_title). - MigrationPlan documents why v2ToV3's missing-context path is deliberately graceful while v1ToV2's traps. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Base.lproj/Localizable.strings | 7 ++++++ .../Library/ItemList/ItemListViewModel.swift | 7 +++++- BookPlayer/Player/PlayerManager.swift | 3 +++ .../Profile/ConcurrentSyncTasksView.swift | 4 ++-- BookPlayer/en.lproj/Localizable.strings | 2 ++ .../ConcurrentSync/FileUploadOperation.swift | 24 +++++++++++++------ Shared/Services/LibraryService.swift | 19 ++++++++++++++- Shared/SwiftData/MigrationPlan.swift | 3 +++ 8 files changed, 58 insertions(+), 11 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index d10b25b94..f672057e1 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -533,3 +533,10 @@ We're working hard on providing a seamless experience, if possible, please conta "import_title" = "Import"; "files_title" = "%d Files"; "sync_invitation_learn_more_hint" = "Learn more about streaming and syncing items from your server."; +"file_path_title" = "File Path"; +"genres_title" = "Genres"; +"overview_title" = "Overview"; +"tags_title" = "Tags"; +"series_title" = "Series"; +"task_uploading_file_label" = "Uploading file"; +"task_updating_progress_label" = "Updating progress for %@"; diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index 5519c528d..6aaaf6b12 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -873,12 +873,17 @@ extension ItemListViewModel { } } - func updateFromResource(jellyfinService: JellyfinConnectionService) async { + func updateFromResource(jellyfinService _: JellyfinConnectionService) async { let jellyfinResources = self.items.compactMap { item in item.externalResources?.first { $0.providerName == ExternalResource.ProviderName.jellyfin.rawValue } } guard !jellyfinResources.isEmpty else { return } + // A throwaway service instance: pinning connections on the SHARED environment service + // would silently repoint the UI's active connection after this refresh. + let jellyfinService = JellyfinConnectionService() + jellyfinService.setup() + // Resources can belong to DIFFERENT servers — group them by their resolved connection and // query each server for its own items. Resources whose host doesn't match any saved // connection are skipped (their provider ids mean nothing to another server). diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 6850bb644..2a7888519 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -318,6 +318,9 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { _ = try? await asset.load(.duration, .isPlayable) await libraryService.loadChaptersIfNeeded(relativePath: chapter.relativePath, asset: asset) + // The awaits above can outlive this load (user tapped another book) — applying the + // refreshed item afterwards would clobber the newer load's state. + try Task.checkCancellation() if let libraryItem = libraryService.getSimpleItem(with: chapter.relativePath), let updatedItem = try? playbackService.getPlayableItem(from: libraryItem) { currentItem = updatedItem diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift index 2ee79ef89..0a4a26019 100644 --- a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift @@ -131,9 +131,9 @@ struct ConcurrentSyncTasksView: View { func parseLabel(_ jobType: SyncJobType, _ queueKey: String) -> String { switch jobType { case .uploadFile: - return "Uploading file" + return "task_uploading_file_label".localized default: - return "Updating progress for \(queueKey)" + return String(format: "task_updating_progress_label".localized, queueKey) } } } diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 24ea1cdb9..b351de420 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -537,3 +537,5 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "import_title" = "Import"; "files_title" = "%d Files"; "sync_invitation_learn_more_hint" = "Learn more about streaming and syncing items from your server."; +"task_uploading_file_label" = "Uploading file"; +"task_updating_progress_label" = "Updating progress for %@"; diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index bf211d571..47770be11 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -125,14 +125,24 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.didSucceed = false self.finish() + } else if let http = self.currentUploadTask?.response as? HTTPURLResponse, + !(200...299).contains(http.statusCode) { + // error == nil is NOT success: the background delegate doesn't surface HTTP + // failures as errors, so a rejected PUT (expired presigned URL, 403) lands here. + Self.logger.error("Upload rejected for \(self.uuid): HTTP \(http.statusCode)") + self.didSucceed = false + self.finish() } else { - // Success! - // (You could run your handleUploadFinished logic here if it does extra database work) - Task { @MainActor in - do { - try FileManager.default.removeItem(at: self.fileURL) - } catch { - Self.logger.warning("Failed to delete hard link for \(self.uuid): \(error.localizedDescription)") + // Success! Clean up the temp hard link — and ONLY the temp hard link: when the + // link was never created, fileURL falls back to the user's REAL audiobook in the + // Processed folder, and deleting that is data loss. + if self.fileURL.path.hasPrefix(FileManager.default.temporaryDirectory.path) { + Task { @MainActor in + do { + try FileManager.default.removeItem(at: self.fileURL) + } catch { + Self.logger.warning("Failed to delete hard link for \(self.uuid): \(error.localizedDescription)") + } } } self.didSucceed = true diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 8b63a206f..bf408dd0b 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -411,7 +411,21 @@ public final class LibraryService: LibraryServiceProtocol, @unchecked Sendable { return fetchRequest } + /// One grouped fetch for every row's external resources — a per-row fetch here is an + /// N+1 on the main library list path. + private func findResourcesGrouped(forUuids uuids: [String], context: NSManagedObjectContext) -> [String: [ExternalResource]] { + guard !uuids.isEmpty else { return [:] } + let fetch: NSFetchRequest = ExternalResource.fetchRequest() + fetch.predicate = NSPredicate(format: "%K IN %@", #keyPath(ExternalResource.libraryItem.uuid), uuids) + guard let resources = try? context.fetch(fetch) else { return [:] } + return Dictionary(grouping: resources) { $0.libraryItem?.uuid ?? "" } + } + func parseFetchedItems(from results: [[String: Any]]?, context: NSManagedObjectContext) -> [SimpleLibraryItem]? { + let resourcesByUuid = findResourcesGrouped( + forUuids: results?.compactMap { $0["uuid"] as? String } ?? [], + context: context + ) return results?.compactMap({ [weak self] dictionary -> SimpleLibraryItem? in guard let uuid = dictionary["uuid"] as? String, @@ -434,7 +448,7 @@ public final class LibraryService: LibraryServiceProtocol, @unchecked Sendable { self?.rebuildFolderDetails(relativePath, context: context) } - let externalResources = self?.findResources(for: uuid, context: context) + let externalResources = resourcesByUuid[uuid] return SimpleLibraryItem( title: title, @@ -1788,6 +1802,9 @@ extension LibraryService { return newBook } + /// @MainActor: creates/mutates managed objects on the main-queue viewContext — running + /// this off the main thread is the CoreData threading violation the repo bans. + @MainActor public func createExternalBook(simpleItem: SimpleLibraryItem, externalResource: SimpleExternalResource) async -> LibraryItem { let context = dataManager.getContext() diff --git a/Shared/SwiftData/MigrationPlan.swift b/Shared/SwiftData/MigrationPlan.swift index 05d934ed0..9a1dcbcaf 100644 --- a/Shared/SwiftData/MigrationPlan.swift +++ b/Shared/SwiftData/MigrationPlan.swift @@ -163,6 +163,9 @@ public enum MigrationPlan: SchemaMigrationPlan { try context.save() // 2. Hardcover external-resource backfill. + // Deliberately graceful (unlike v1ToV2's fatalError): a missing context here only + // skips the OPTIONAL backfill of hardcover resources — losing that beats crashing + // an upgrade, whereas v1ToV2 without the context would corrupt real queued tasks. guard let coreDataContext = injectedCoreDataContext else { return } From 09826182c7ea646ffe5a4870c51398312a523886 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 18:58:43 -0500 Subject: [PATCH 008/172] fix: address review feedback (round 4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Twelve findings from the fourth review pass: - getNextPlayableBookPath returns a relative path again — its result feeds loadPlayer, whose contract is a path, so folder-artwork taps silently no-oped on the uuid it was returning. - @MainActor restored on JellyfinLibraryViewModel (dropped in a refactor hunk; every sibling VM is isolated and it mutates @Published state). - Streamed-item progress uses the 0-100 scale SimpleLibraryItem expects (Jellyfin: fraction ×100 at four sites; ABS: progress is ALREADY a fraction — dividing it by duration produced ~0). - ABS artwork goes through createItemImageURL — coverPath is a server-side filesystem path, not a URL. - Only task IDs (Set) cross into the ConcurrentTasksRepository actor; the @MainActor TaskProgressTracker map is non-Sendable. - Permanent upload failures are consumed instead of hot-looping the serial upload queue every 5s forever: a missing source file, and 4xx rejections (the presigned URL is frozen in the persisted task and can never work). Transient failures still retry indefinitely. - The buffering overlay is cleared when a load dies before the player item attaches — nothing else would ever flip it off. - Localized: the resume-playback alert, queued-task queue names and labels, SyncInvitationCard + ExternalImport accessibility strings, and the icon-only download button's missing accessibilityLabel (new Base+en keys). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelfLibraryViewModel.swift | 4 ++-- .../AudiobookShelfAudiobookDetailsViewModel.swift | 4 ++-- BookPlayer/Base.lproj/Localizable.strings | 11 +++++++++++ .../JellyfinAudiobookDetailsViewModel.swift | 2 +- .../Library Screen/JellyfinLibraryViewModel.swift | 7 ++++--- .../Library/ItemList/ItemListViewModel.swift | 3 ++- BookPlayer/MainView.swift | 8 ++++---- .../Details/IntegrationAudiobookDetailsView.swift | 1 + BookPlayer/Player/PlayerManager.swift | 3 +++ .../CompleteAccount/SyncInvitationCard.swift | 13 +++++++++---- .../Profile/Profile/ConcurrentSyncTasksView.swift | 2 +- .../Profile/Profile/Views/QueuedTasksView.swift | 4 ++-- BookPlayer/en.lproj/Localizable.strings | 11 +++++++++++ .../ConcurrentSync/ConcurrenceService.swift | 6 +++--- .../ConcurrentTasksRepository.swift | 10 ++++++---- .../ConcurrentSync/FileUploadOperation.swift | 15 ++++++++++++++- 16 files changed, 76 insertions(+), 28 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 59d5d988a..74b18c286 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -261,11 +261,11 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, currentTime: Double(item.currentTime ?? 0), duration: Double(item.duration ?? 0), percentCompleted: (item.progress ?? 0 > 0 && item.duration ?? 0 > 0) - ? Double(item.progress!) / Double(item.duration!) : 0, + ? Double(item.progress!) * 100 : 0, isFinished: item.isFinished ?? false, relativePath: "", remoteURL: nil, - artworkURL: item.coverPath != nil ? URL(string: item.coverPath!) : nil, + artworkURL: connectionService.createItemImageURL(item, size: CGSize(width: 300, height: 300)), orderRank: 0, parentFolder: nil, originalFileName: "\(item.title).\(fileExt)", diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index c440dbbf7..3dfecfa3d 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -90,11 +90,11 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc currentTime: Double(item.currentTime ?? 0), duration: Double(item.duration ?? 0), percentCompleted: (item.progress ?? 0 > 0 && item.duration ?? 0 > 0) - ? Double(item.progress!) / Double(item.duration!) : 0, + ? Double(item.progress!) * 100 : 0, isFinished: item.isFinished ?? false, relativePath: "", remoteURL: nil, - artworkURL: item.coverPath != nil ? URL(string: item.coverPath!) : nil, + artworkURL: connectionService.createItemImageURL(item, size: CGSize(width: 300, height: 300)), orderRank: 0, parentFolder: nil, originalFileName: "\(item.title).\(fileExt)", diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index f672057e1..eb5f17f22 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -540,3 +540,14 @@ We're working hard on providing a seamless experience, if possible, please conta "series_title" = "Series"; "task_uploading_file_label" = "Uploading file"; "task_updating_progress_label" = "Updating progress for %@"; +"yes_button" = "Yes"; +"ignore_button" = "Ignore"; +"resume_playback_alert_title" = "Resume Playback"; +"resume_playback_alert_message" = "There is another source with current play time %@. Play from this time?"; +"queue_library_sync_title" = "Library Sync"; +"queue_file_uploads_title" = "File Uploads"; +"sync_invitation_download_label" = "Download Locally"; +"sync_invitation_import_hint" = "Import %d items to your library."; +"sync_invitation_download_hint" = "Download %d items to your device storage."; +"sync_invitation_close_hint" = "Dismisses the invitation card."; +"close_title" = "Close"; diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 9d61e2b6a..33047a5f9 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -101,7 +101,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { currentTime: Double(item.currentSeconds ?? 0), duration: Double(item.durationSeconds ?? 0), percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) - ? Double(item.currentSeconds!) / Double(item.durationSeconds!) : 0, + ? Double(item.currentSeconds!) / Double(item.durationSeconds!) * 100 : 0, isFinished: item.isFinished ?? false, relativePath: "", remoteURL: nil, diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index 8d86d3d27..a9e33ca1f 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -22,6 +22,7 @@ enum JellyfinLibraryLevelData: Equatable, Hashable { case subscribe } +@MainActor final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLogger { enum Routes { case done @@ -393,7 +394,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog currentTime: Double(item.currentSeconds ?? 0), duration: Double(item.durationSeconds ?? 0), percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) - ? Double(item.currentSeconds!) / Double(item.durationSeconds!) : 0, + ? Double(item.currentSeconds!) / Double(item.durationSeconds!) * 100 : 0, isFinished: item.isFinished ?? false, relativePath: "", remoteURL: nil, @@ -609,7 +610,7 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B currentTime: Double(item.currentSeconds ?? 0), duration: Double(item.durationSeconds ?? 0), percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) - ? Double(item.currentSeconds!) / Double(item.durationSeconds!) : 0, + ? Double(item.currentSeconds!) / Double(item.durationSeconds!) * 100 : 0, isFinished: item.isFinished ?? false, relativePath: "", remoteURL: nil, @@ -839,7 +840,7 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, currentTime: Double(item.currentSeconds ?? 0), duration: Double(item.durationSeconds ?? 0), percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) - ? Double(item.currentSeconds!) / Double(item.durationSeconds!) : 0, + ? Double(item.currentSeconds!) / Double(item.durationSeconds!) * 100 : 0, isFinished: item.isFinished ?? false, relativePath: "", remoteURL: nil, diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index 6aaaf6b12..7d61b3998 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -380,7 +380,8 @@ final class ItemListViewModel: ObservableObject, BPLogger { isUnfinished: true ) - return nextPlayableItem?.uuid + // loadPlayer's contract is a RELATIVE PATH — a uuid silently no-ops the lookup. + return nextPlayableItem?.relativePath } } diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index f5ab1094a..ec82fc507 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -110,11 +110,11 @@ struct MainView: View { ) } .presentationBackground(.clear) - .alert("Resume Playback", isPresented: playerState.showResumePopupBinding) { - Button("Yes") { playerManager.jumpTo(playerState.remotePlayTime ?? 0)} - Button("Ignore", role: .cancel) { } + .alert("resume_playback_alert_title".localized, isPresented: playerState.showResumePopupBinding) { + Button("yes_button".localized) { playerManager.jumpTo(playerState.remotePlayTime ?? 0)} + Button("ignore_button".localized, role: .cancel) { } } message: { - Text("There is another source with current play time \(TimeParser.formatTime(playerState.remotePlayTime ?? 0)). Play from this time?") + Text(String(format: "resume_playback_alert_message".localized, TimeParser.formatTime(playerState.remotePlayTime ?? 0))) } } .sheet(isPresented: $importManager.isShowingExternalImportView) { diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index 6ed4b965f..af001d665 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -179,6 +179,7 @@ struct IntegrationAudiobookDetailsView< HStack { Image(systemName: "square.and.arrow.down") } + .accessibilityLabel("download_title".localized) .frame(width: 36, height: 24) .padding() .foregroundStyle(theme.primaryColor) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 2a7888519..a4d6b9628 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -504,6 +504,9 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { self.playbackQueued = nil self.isFetchingRemoteURL = nil self.observeStatus = false + // The load died before the item attached — nothing will ever flip the buffering + // overlay off, so clear it here or it covers the player indefinitely. + self.updatePlayerIsLoadingURL(false) self.showErrorAlert(title: "\("error_title".localized) Metadata", error.localizedDescription, actions: actions) return } diff --git a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift index 513eaf0c4..c1e4edb8d 100644 --- a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift +++ b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift @@ -72,8 +72,13 @@ struct SyncInvitationCard: View { .foregroundColor(.primary) .cornerRadius(14) } - .accessibilityLabel(subscription == .lite ? "Import" : "Download Locally") - .accessibilityHint(subscription == .lite ? "Import \(totalItems) items to your library." : "Download \(totalItems) items to your device storage.") + .accessibilityLabel(subscription == .lite ? "import_button".localized : "sync_invitation_download_label".localized) + .accessibilityHint( + String( + format: (subscription == .lite ? "sync_invitation_import_hint" : "sync_invitation_download_hint").localized, + totalItems + ) + ) } } .padding(24) @@ -88,8 +93,8 @@ struct SyncInvitationCard: View { .frame(width: 44, height: 44) } .padding(16) - .accessibilityLabel("Close") - .accessibilityHint("Dismisses the invitation card.") + .accessibilityLabel("close_title".localized) + .accessibilityHint("sync_invitation_close_hint".localized) } } } diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift index 0a4a26019..72592b0e9 100644 --- a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift @@ -112,7 +112,7 @@ struct ConcurrentSyncTasksView: View { func reloadQueuedJobs() { Task { @MainActor in - let allJobs = await concurrenceService.getOrderedQueuedJobs(activeTasks: monitor.activeTasks) + let allJobs = await concurrenceService.getOrderedQueuedJobs(activeTaskIDs: Set(monitor.activeTasks.keys)) .filter { $0.queueKey == queueKey } jobsCount = allJobs.count queuedJobs = allJobs diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index 73703bc6d..38a79a86f 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -15,9 +15,9 @@ enum QueueDisplay { static func name(for queueKey: String) -> String { switch queueKey { case TaskQueueKey.sync: - return "Library Sync" + return "queue_library_sync_title".localized case TaskQueueKey.uploadFile: - return "File Uploads" + return "queue_file_uploads_title".localized default: return queueKey.capitalized } diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index b351de420..a4af7f538 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -539,3 +539,14 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "sync_invitation_learn_more_hint" = "Learn more about streaming and syncing items from your server."; "task_uploading_file_label" = "Uploading file"; "task_updating_progress_label" = "Updating progress for %@"; +"yes_button" = "Yes"; +"ignore_button" = "Ignore"; +"resume_playback_alert_title" = "Resume Playback"; +"resume_playback_alert_message" = "There is another source with current play time %@. Play from this time?"; +"queue_library_sync_title" = "Library Sync"; +"queue_file_uploads_title" = "File Uploads"; +"sync_invitation_download_label" = "Download Locally"; +"sync_invitation_import_hint" = "Import %d items to your library."; +"sync_invitation_download_hint" = "Download %d items to your device storage."; +"sync_invitation_close_hint" = "Dismisses the invitation card."; +"close_title" = "Close"; diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 985779f9b..b4d1f6558 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -33,7 +33,7 @@ public protocol ConcurrenceServiceProtocol { func getAllQueuedJobs() async -> [ConcurrentSyncTask] - func getOrderedQueuedJobs(activeTasks: [String: TaskProgressTracker]) async -> [ConcurrentSyncTask] + func getOrderedQueuedJobs(activeTaskIDs: Set) async -> [ConcurrentSyncTask] /// Pending-task count per active queue; the sync queue is always listed first, /// even when idle @@ -246,8 +246,8 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { return await taskContainer.getAllTasks() } - public func getOrderedQueuedJobs(activeTasks: [String: TaskProgressTracker]) async -> [ConcurrentSyncTask] { - return await taskContainer.getOrderedTasks(activeTasks: activeTasks) + public func getOrderedQueuedJobs(activeTaskIDs: Set) async -> [ConcurrentSyncTask] { + return await taskContainer.getOrderedTasks(activeTaskIDs: activeTaskIDs) } public func getQueueSummaries() async -> [QueueSummary] { diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift index 9100ee6d3..a1472e678 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift @@ -28,7 +28,9 @@ public protocol ConcurrentTasksRepositoryProtocol: ModelActor { /// All queued tasks outside the serial sync queue func getAllTasks() async -> [ConcurrentSyncTask] - func getOrderedTasks(activeTasks: [String: TaskProgressTracker]) async -> [ConcurrentSyncTask] + // Set (not the @MainActor TaskProgressTracker map): only the ids cross the actor + // boundary — the tracker object is non-Sendable. + func getOrderedTasks(activeTaskIDs: Set) async -> [ConcurrentSyncTask] func getTasksCount(in queueKey: String) -> Int @@ -292,16 +294,16 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol { } } - public func getOrderedTasks(activeTasks: [String: TaskProgressTracker]) async -> [ConcurrentSyncTask] { + public func getOrderedTasks(activeTaskIDs: Set) async -> [ConcurrentSyncTask] { let concurrentTasks = await self.getAllTasks() let activeGroup = concurrentTasks.filter { task in - activeTasks.keys.contains(task.id) + activeTaskIDs.contains(task.id) } // 2. Sieve out ONLY the tasks that are NOT active. let inactiveGroup = concurrentTasks.filter { task in - !activeTasks.keys.contains(task.id) + !activeTaskIDs.contains(task.id) } // 3. Merge them back together, active ones first! diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index 47770be11..6f5878ffe 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -49,6 +49,14 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { // MARK: - Upload Logic private func startUploadTask() async { + // A missing local file is permanent — retrying can never succeed, and a failed task + // blocks the serial upload queue forever. Consume it instead. + guard FileManager.default.fileExists(atPath: fileURL.path) else { + Self.logger.error("Upload source missing for \(self.uuid), dropping task: \(self.fileURL.path)") + self.didSucceed = true + self.finish() + return + } // 1. Determine Session let allowCellular = UserDefaults.standard.bool(forKey: Constants.UserDefaults.allowCellularData) let session = allowCellular ? BPURLSession.shared.backgroundCellularSession : BPURLSession.shared.backgroundSession @@ -129,8 +137,13 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { !(200...299).contains(http.statusCode) { // error == nil is NOT success: the background delegate doesn't surface HTTP // failures as errors, so a rejected PUT (expired presigned URL, 403) lands here. + // A 4xx is PERMANENT for this task — its presigned URL is frozen in the persisted + // parameters and will never work again. The queue retries failures forever on a + // single serial key, so keeping it failed hot-loops every 5s and blocks every + // other upload behind it. Consume it; the item stays unsynced and a fresh upload + // task (with a fresh URL) can be scheduled later. Self.logger.error("Upload rejected for \(self.uuid): HTTP \(http.statusCode)") - self.didSucceed = false + self.didSucceed = (400...499).contains(http.statusCode) self.finish() } else { // Success! Clean up the temp hard link — and ONLY the temp hard link: when the From b13cd81f6d690645e8147bffe91d4a4bd3ebbe91 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 19:28:17 -0500 Subject: [PATCH 009/172] fix: address review feedback (round 5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - hostId is now ingested on BOTH sync-down create paths (updateInfo + addBook in LibraryService+Sync) — it round-tripped on upload but was dropped on the way down, so a synced-down resource could never resolve to a saved connection on another device: the linchpin of the cross-device contract. - synced:true is confirmed only AFTER the file PUT succeeds: the upload scheduling path no longer calls markUploadAsSynced when a backing file still has to upload; ConcurrenceService.handleFinishedOperation confirms (and posts .uploadCompleted) from the FileUploadOperation's success. - SimpleExternalResource(from:) copies processedFile from the entity. Acknowledged, not fixed: PlayerManagerProtocol.storedConnection is dead code on both platforms — removing it needs a Sourcery mock regeneration, left for a follow-up. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../SimpleExternalResource.swift | 1 + .../ConcurrentSync/ConcurrenceService.swift | 18 ++++++++++++++++++ Shared/Services/LibraryService+Sync.swift | 4 ++++ .../Sync/LibraryItemSyncOperation.swift | 6 +++++- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift index 2e4bf71d4..7d1168db0 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -50,6 +50,7 @@ extension SimpleExternalResource { self.providerId = item.providerId self.syncStatus = item.syncStatus self.lastSyncedAt = item.lastSyncedAt + self.processedFile = item.processedFile self.hostId = item.hostId self.libraryItemUuid = item.libraryItem?.uuid self.libraryItemName = item.libraryItem?.title diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index b4d1f6558..139b8da76 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -297,6 +297,24 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { /// Post-completion side effects for finished sync tasks private func handleFinishedOperation(_ operation: AsyncOperation, task: ConcurrentSyncTask) async { + // The synced:true confirmation for file-backed books happens HERE, after the bytes are + // actually on S3 — LibraryItemSyncOperation deliberately no longer confirms when it + // schedules a file upload (confirming before the PUT lies to the server if the upload + // later fails permanently). + if let uploadOperation = operation as? FileUploadOperation, uploadOperation.didSucceed { + let provider = NetworkProvider(client: networkClient) + do { + let _: UploadItemResponse = try await provider.request(.update(params: [ + "uuid": uploadOperation.uuid, + "relativePath": task.relativePath, + "synced": true + ])) + NotificationCenter.default.post(name: .uploadCompleted, object: nil) + } catch { + Self.logger.error("Failed to confirm upload for \(uploadOperation.uuid): \(error.localizedDescription)") + } + return + } guard let syncOperation = operation as? LibraryItemSyncOperation, let results = syncOperation.results diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index f5cc3b604..ed7f93055 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -214,6 +214,9 @@ extension LibraryService: LibrarySyncProtocol { external.syncStatus = remoteData.syncStatus external.lastSyncedAt = remoteData.lastSyncedAt external.processedFile = remoteData.processedFile + // The cross-device server identity — without it IntegrationHostResolver returns nil + // and a synced-down resource can never resolve to a saved connection on this device. + external.hostId = remoteData.hostId external.libraryItem = storedItem storedItem.addToExternalResources(external) @@ -299,6 +302,7 @@ extension LibraryService: LibrarySyncProtocol { external.syncStatus = externalResource.syncStatus external.lastSyncedAt = externalResource.lastSyncedAt external.processedFile = externalResource.processedFile + external.hostId = externalResource.hostId external.libraryItem = newBook newBook.addToExternalResources(external) diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index e956825c8..a093fb260 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -168,7 +168,11 @@ extension LibraryItemSyncOperation { } results = .uploadMetadata(UploadResponse(uuid: self.uuid, filePath: fileURL.absoluteString, remotePath: remoteURL.absoluteString)) - self.handleUploadFinished() + // Deliberately NOT handleUploadFinished() here: a backing file still has to be PUT by the + // FileUploadOperation this result schedules — confirming synced:true now lies to the server + // if that upload later fails permanently. The metadata-only branch above confirms + // immediately; this branch confirms from the file upload's completion. + finish() } func handleUploadFinished() { From f4c5cfe0ebf57983773245927e7c8e2e205e9c8f Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 19:43:39 -0500 Subject: [PATCH 010/172] fix: address review feedback (round 6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - The post-upload synced:true confirmation retries three times with a short backoff and then surfaces the failure in lastSyncError — the task is popped unconditionally after it, so a swallowed transient failure stranded the item as synced:false with its bytes already on S3. - Removed the now-dead handleUploadFinished (the confirmation flow lives in ConcurrenceService.handleFinishedOperation). - Localized the remaining hardcoded surfaces: the ExternalSyncInfoView benefit sections (bare LocalizedStringKey literals resolved from new Base+en keys), the Stream & Sync navigation title, and the Queued Tasks title. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Base.lproj/Localizable.strings | 8 +++++ .../Profile/Login/ExternalSyncInfoView.swift | 14 ++++---- .../Profile/Views/QueuedTasksView.swift | 2 +- BookPlayer/en.lproj/Localizable.strings | 8 +++++ .../ConcurrentSync/ConcurrenceService.swift | 33 ++++++++++++++----- .../Sync/LibraryItemSyncOperation.swift | 13 -------- 6 files changed, 48 insertions(+), 30 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index eb5f17f22..9844e3c88 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -551,3 +551,11 @@ We're working hard on providing a seamless experience, if possible, please conta "sync_invitation_download_hint" = "Download %d items to your device storage."; "sync_invitation_close_hint" = "Dismisses the invitation card."; "close_title" = "Close"; +"external_sync_benefit_server_title" = "Bring Your Own Server"; +"external_sync_benefit_server_subtitle" = "Connect your existing Jellyfin or Audiobookshelf directly to the app."; +"external_sync_benefit_stream_title" = "Stream & Save Space"; +"external_sync_benefit_stream_subtitle" = "Listen instantly by streaming directly from your source. No need to download files or use up local storage."; +"external_sync_benefit_sync_title" = "Two-Way Progress Sync"; +"external_sync_benefit_sync_subtitle" = "Your listening progress stays perfectly synced with your server and across all your devices."; +"external_sync_info_title" = "Stream & Sync"; +"queued_tasks_title" = "Queued Tasks"; diff --git a/BookPlayer/Profile/Login/ExternalSyncInfoView.swift b/BookPlayer/Profile/Login/ExternalSyncInfoView.swift index 5146fc778..c7f4a5693 100644 --- a/BookPlayer/Profile/Login/ExternalSyncInfoView.swift +++ b/BookPlayer/Profile/Login/ExternalSyncInfoView.swift @@ -26,22 +26,22 @@ struct ExternalSyncIntroView: View { // Feature 1: External Server Connection LoginBenefitSectionView( imageName: "server.rack", - title: "Bring Your Own Server", - subtitle: "Connect your existing Jellyfin or Audiobookshelf directly to the app." + title: "external_sync_benefit_server_title", + subtitle: "external_sync_benefit_server_subtitle" ) // Feature 2: Streaming (No Local Storage) LoginBenefitSectionView( imageName: "waveform", - title: "Stream & Save Space", - subtitle: "Listen instantly by streaming directly from your source. No need to download files or use up local storage." + title: "external_sync_benefit_stream_title", + subtitle: "external_sync_benefit_stream_subtitle" ) // Feature 3: Two-Way Sync LoginBenefitSectionView( imageName: "arrow.triangle.2.circlepath", - title: "Two-Way Progress Sync", - subtitle: "Your listening progress stays perfectly synced with your server and across all your devices." + title: "external_sync_benefit_sync_title", + subtitle: "external_sync_benefit_sync_subtitle" ) LoginDisclaimerSectionView() @@ -78,7 +78,7 @@ struct ExternalSyncIntroView: View { } } .listSectionSpacing(Spacing.S2) - .navigationTitle("Stream & Sync") + .navigationTitle("external_sync_info_title".localized) .navigationBarTitleDisplayMode(.inline) .sheet(isPresented: $showCompleteAccount) { NavigationStack { diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index 38a79a86f..a90ebd305 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -69,7 +69,7 @@ struct QueuedTasksView: View { .scrollContentBackground(.hidden) .background(theme.systemBackgroundColor) .toolbarColorScheme(theme.useDarkVariant ? .dark : .light, for: .navigationBar) - .navigationTitle("Queued Tasks") + .navigationTitle("queued_tasks_title".localized) .navigationBarTitleDisplayMode(.inline) .onReceive(syncService.observeTasksCount()) { _ in reloadQueues() diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index a4af7f538..a6a945408 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -550,3 +550,11 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "sync_invitation_download_hint" = "Download %d items to your device storage."; "sync_invitation_close_hint" = "Dismisses the invitation card."; "close_title" = "Close"; +"external_sync_benefit_server_title" = "Bring Your Own Server"; +"external_sync_benefit_server_subtitle" = "Connect your existing Jellyfin or Audiobookshelf directly to the app."; +"external_sync_benefit_stream_title" = "Stream & Save Space"; +"external_sync_benefit_stream_subtitle" = "Listen instantly by streaming directly from your source. No need to download files or use up local storage."; +"external_sync_benefit_sync_title" = "Two-Way Progress Sync"; +"external_sync_benefit_sync_subtitle" = "Your listening progress stays perfectly synced with your server and across all your devices."; +"external_sync_info_title" = "Stream & Sync"; +"queued_tasks_title" = "Queued Tasks"; diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 139b8da76..31109f2ec 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -303,15 +303,30 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { // later fails permanently). if let uploadOperation = operation as? FileUploadOperation, uploadOperation.didSucceed { let provider = NetworkProvider(client: networkClient) - do { - let _: UploadItemResponse = try await provider.request(.update(params: [ - "uuid": uploadOperation.uuid, - "relativePath": task.relativePath, - "synced": true - ])) - NotificationCenter.default.post(name: .uploadCompleted, object: nil) - } catch { - Self.logger.error("Failed to confirm upload for \(uploadOperation.uuid): \(error.localizedDescription)") + // The task is popped unconditionally after this, so a transient confirmation failure + // would strand the item as synced:false with its bytes already on S3 — retry a few + // times before surfacing it in lastSyncError (a later re-upload of the same item heals). + for attempt in 1...3 { + do { + let _: UploadItemResponse = try await provider.request(.update(params: [ + "uuid": uploadOperation.uuid, + "relativePath": task.relativePath, + "synced": true + ])) + NotificationCenter.default.post(name: .uploadCompleted, object: nil) + return + } catch { + Self.logger.error("Upload confirmation attempt \(attempt) failed for \(uploadOperation.uuid): \(error.localizedDescription)") + if attempt < 3 { try? await Task.sleep(for: .seconds(2)) } + else { + await MainActor.run { + self.lastSyncError = SyncErrorInfo( + taskId: task.id, uuid: uploadOperation.uuid, + jobType: .uploadFile, error: error.localizedDescription + ) + } + } + } } return } diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index a093fb260..3bd9f450c 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -175,19 +175,6 @@ extension LibraryItemSyncOperation { finish() } - func handleUploadFinished() { - Task { - do { - try await markUploadAsSynced(uuid: uuid) - NotificationCenter.default.post(name: .uploadCompleted, object: nil) - finish() - } catch { - self.error = error - finish() - } - } - } - func markUploadAsSynced(uuid: String) async throws { let _: UploadItemResponse = try await self.provider.request(.update(params: [ "uuid": uuid, From 8541b140860006c8ce78553e593a755acf9cca9d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 19:59:05 -0500 Subject: [PATCH 011/172] fix: address review feedback (round 7) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Streamed chapters inside bound books carry their media-server auth headers again — the bound-book rebuild dropped externalHeaders, so those chapters hit the server unauthenticated and 401'd. - Unified the externalURL fallback between the two chapter branches: cloud copies route through the remote-URL branch's refresh logic instead of the external branch with an empty header dict. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/Services/PlaybackService.swift | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index b6aae2db3..1de52a20f 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -275,7 +275,7 @@ public final class PlaybackService: PlaybackServiceProtocol { duration: book.duration, relativePath: book.relativePath, remoteURL: book.remoteURL, - externalURL: externalUrl ?? book.remoteURL, + externalURL: externalUrl, index: 1, externalHeaders: externalHeaders ) @@ -377,7 +377,10 @@ public final class PlaybackService: PlaybackServiceProtocol { remoteURL: nestedChapter.remoteURL, externalURL: nestedChapter.externalUrl, index: index, - chapterOffset: nestedChapters.count == 1 ? 0 : localCurrentDuration + chapterOffset: nestedChapters.count == 1 ? 0 : localCurrentDuration, + // Without the headers a streamed chapter inside a bound book hits the media + // server unauthenticated and 401s. + externalHeaders: nestedChapter.externalHeaders ) currentDuration = TimeParser.truncateTime(currentDuration + truncatedDuration) localCurrentDuration = TimeParser.truncateTime(localCurrentDuration + localDuration) From a9f50b11373eea7aa79b134cb48919678a0ff5ac Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 20:27:36 -0500 Subject: [PATCH 012/172] fix: persist hostId on external-update tasks (round 8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ExternalUpdateTaskModel gains hostId, wired through buildExternalUpdateTask, updateExternalUpdateTaskModel and toDictionaryPayload. The whole progress-push path routes by stable host — LibraryService puts hostId in the params and the operation resolves the target connection from it — but the persisted model dropped the field, so every task reloaded from the queue resolved no connection and was (correctly, silently) discarded. Schema V3 is unreleased in this PR, so the additive optional field needs no new schema version. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift | 6 ++++++ Shared/SwiftData/SwiftDataModels+Extensions.swift | 4 ++++ Shared/SwiftData/TasksDataManager.swift | 2 ++ 3 files changed, 12 insertions(+) diff --git a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift index 3fecf89e0..4f2b89da9 100644 --- a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift +++ b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift @@ -343,6 +343,10 @@ public enum SchemaV3: VersionedSchema { public var lastPlayDateTimestamp: Double? public var providerName: String public var providerId: String + /// The stable host identity of the server this push belongs to. Without persisting it, + /// a reloaded task resolves no connection and the push is (correctly) discarded — i.e. + /// dropping this field silently discards EVERY persisted progress push. + public var hostId: String? public init( id: String, @@ -354,10 +358,12 @@ public enum SchemaV3: VersionedSchema { percentCompleted: Double? = nil, isFinished: Bool? = nil, lastPlayDateTimestamp: Double? = nil, + hostId: String? = nil, ) { self.id = id self.providerName = providerName self.providerId = providerId + self.hostId = hostId self.title = title self.details = details self.currentTime = currentTime diff --git a/Shared/SwiftData/SwiftDataModels+Extensions.swift b/Shared/SwiftData/SwiftDataModels+Extensions.swift index 6bfb8503a..b2e1c149a 100644 --- a/Shared/SwiftData/SwiftDataModels+Extensions.swift +++ b/Shared/SwiftData/SwiftDataModels+Extensions.swift @@ -226,6 +226,10 @@ extension ExternalUpdateTaskModel: DictionaryConvertible { "providerId": providerId, "providerName": providerName ] + + if let hostId { + dictionary["hostId"] = hostId + } if let title { dictionary["title"] = title diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index 716884635..3805abb50 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -374,6 +374,7 @@ public final class TasksDataManager { percentCompleted: parameters["percentCompleted"] as? Double, isFinished: parameters["isFinished"] as? Bool, lastPlayDateTimestamp: parameters["lastPlayDateTimestamp"] as? Double, + hostId: parameters["hostId"] as? String, ) } @@ -546,5 +547,6 @@ public final class TasksDataManager { if let lastPlayDateTimestamp = parameters["lastPlayDateTimestamp"] as? Double { task.lastPlayDateTimestamp = lastPlayDateTimestamp } + if let hostId = parameters["hostId"] as? String { task.hostId = hostId } } } From e5a4665498515eddb47ade0406347884ad23bfe8 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 20:43:45 -0500 Subject: [PATCH 013/172] test: dedicated coverage for the concurrent-sync engine and host resolution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New ConcurrentSyncTests (11) pin the queue engine: hostId persistence through the worker's getNextTask reload path (the round-8 regression class), FIFO via the next+pop cycle, getOrderedTasks active-first ordering, the per-tier access policy (externalUpdate available on every tier for Android parity, uploadFile PRO-only), schedule gating at both entry points, the AsyncOperation state machine (cross-thread finish, cancel-before-start), and poison-upload consumption for permanently-missing source files. New IntegrationHostResolverTests (4) pin the cross-platform stable-host resolution contract, mirroring the Android app's ServerResolutionTest: case-insensitive GUID match, canonical-URL-key fallback, no first-connection fallback, and stableHostId preferring the GUID. Writing the suite immediately caught a real bug: a sync-tasks store written by an earlier schema revision permanently crash-looped the app at launch through try! ModelContainer ("Cannot use staged migration with an unknown model version"). TasksDataManager now destroys and recreates an unloadable store — the task queue is recoverable state, a launch crash-loop is not — and still traps if a fresh store fails to load. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 8 + .../Services/ConcurrentSyncTests.swift | 260 ++++++++++++++++++ .../IntegrationHostResolverTests.swift | 63 +++++ Shared/SwiftData/TasksDataManager.swift | 18 +- 4 files changed, 347 insertions(+), 2 deletions(-) create mode 100644 BookPlayerTests/Services/ConcurrentSyncTests.swift create mode 100644 BookPlayerTests/Services/IntegrationHostResolverTests.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 7b07d641b..b0a3ff74f 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -21,6 +21,7 @@ 2B283D695990DA665D1661CC /* mp3_NO_chapters.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 12EDB8401F38342155CBBC91 /* mp3_NO_chapters.mp3 */; }; 2D7D5973F598D517CBCCE0ED /* PreferencesSyncService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4D25EF2A5FFF30CF12F2C21 /* PreferencesSyncService.swift */; }; 39313742614BCCA918DA7C0E /* IntegrationConnectionFlowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DA0C0229963991F8CE1E941 /* IntegrationConnectionFlowView.swift */; }; + 3F058A74415A3AF6C17DA8F4 /* IntegrationHostResolverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */; }; 3F66408A2E162ABF00356522 /* AudioMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6640892E162ABF00356522 /* AudioMetadataService.swift */; }; 3F66408B2E162ABF00356522 /* AudioMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6640892E162ABF00356522 /* AudioMetadataService.swift */; }; 3F66408D2E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 3F66408C2E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel */; }; @@ -950,6 +951,7 @@ C86098383F7FC099EED24AF7 /* IntegrationQuickConnectViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056B7A76F1A44CEC30562382 /* IntegrationQuickConnectViews.swift */; }; C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */; }; + CB3844DD8C695EAD32A4A811 /* ConcurrentSyncTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF75FEB4DEC37DBE232CD140 /* ConcurrentSyncTests.swift */; }; CCC7E1CC127610C3687B8A50 /* SortPreferencesResolving.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */; }; D080B0A77D9844C3A0737170 /* IntegrationConnectionFormViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FB91B577BC77F45EDB2AAAA /* IntegrationConnectionFormViewModel.swift */; }; D2B95B92F8F84F2FA4B41BF6 /* BookEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33D03D266EF46B5B02FBF40 /* BookEntity.swift */; }; @@ -1400,6 +1402,7 @@ 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHTTPClient.swift; sourceTree = ""; }; 53AE3D4C955A493470C8EAA9 /* QueryTimeSortSpikeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryTimeSortSpikeTests.swift; sourceTree = ""; }; 587EDC7DEA9D2985635F1161 /* IntegrationConnectionStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionStore.swift; sourceTree = ""; }; + 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHostResolverTests.swift; sourceTree = ""; }; 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SortPreferencesResolving.swift; sourceTree = ""; }; 5CBB29522163A17F00E3A9FF /* ZIPFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ZIPFoundation.framework; path = Carthage/Build/iOS/ZIPFoundation.framework; sourceTree = ""; }; 5F847DAE94054533AACF8D85 /* PlayBookIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayBookIntent.swift; sourceTree = ""; }; @@ -1961,6 +1964,7 @@ F78387C7EDD9105363712F34 /* VideoFullscreenViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoFullscreenViewController.swift; sourceTree = ""; }; FEEDBABE0000000000000001 /* SharedWidgetStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStore.swift; sourceTree = ""; }; FEEDBABE0000000000000004 /* SharedWidgetStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStoreTests.swift; sourceTree = ""; }; + FF75FEB4DEC37DBE232CD140 /* ConcurrentSyncTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConcurrentSyncTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -3339,6 +3343,8 @@ 0EA09FE5A35CEA0B87F83EF3 /* PreferencesSyncServiceTests.swift */, EC40E520F644AFA46DAD76B0 /* AudioMetadataServiceTests.swift */, A11C418B028982CF431C589F /* LibraryServiceReloadChaptersTests.swift */, + 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */, + FF75FEB4DEC37DBE232CD140 /* ConcurrentSyncTests.swift */, ); path = Services; sourceTree = ""; @@ -5235,6 +5241,8 @@ ADBA6DD206F76CF92C0765A3 /* WebAuthenticatingTests.swift in Sources */, E101E3603ACF4DB50AA0037B /* JellyfinQuickConnectTests.swift in Sources */, 5A9506FC8DAB858289E0EF89 /* IntegrationServerAddressTests.swift in Sources */, + 3F058A74415A3AF6C17DA8F4 /* IntegrationHostResolverTests.swift in Sources */, + CB3844DD8C695EAD32A4A811 /* ConcurrentSyncTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/BookPlayerTests/Services/ConcurrentSyncTests.swift b/BookPlayerTests/Services/ConcurrentSyncTests.swift new file mode 100644 index 000000000..33a25c77a --- /dev/null +++ b/BookPlayerTests/Services/ConcurrentSyncTests.swift @@ -0,0 +1,260 @@ +// +// ConcurrentSyncTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation +import SwiftData +import XCTest + +@testable import BookPlayer +@testable import BookPlayerKit + +/// First dedicated coverage for the unified concurrent-sync engine: task persistence +/// round-trips (notably `hostId`, whose omission silently discarded every persisted progress +/// push), queue ordering, the per-tier access policy, and the operation state machine. +final class ConcurrentSyncTests: XCTestCase { + private var tasksDataManager: TasksDataManager! + private var repository: ConcurrentTasksRepository! + + override func setUpWithError() throws { + let schema = Schema([ + UploadTaskModel.self, + UpdateTaskModel.self, + MoveTaskModel.self, + DeleteTaskModel.self, + DeleteBookmarkTaskModel.self, + SetBookmarkTaskModel.self, + RenameFolderTaskModel.self, + ArtworkUploadTaskModel.self, + MatchUuidsTaskModel.self, + UploadExternalResourceTaskModel.self, + ExternalResourceToDownloadTaskModel.self, + DeleteExternalResourceTaskModel.self, + ConcurrentTasksContainer.self, + ConcurrentTaskReferenceModel.self, + ExternalUpdateTaskModel.self, + ConcurrentUploadTaskModel.self, + ]) + let config = ModelConfiguration(isStoredInMemoryOnly: true, cloudKitDatabase: .none) + let container = try ModelContainer(for: schema, configurations: config) + tasksDataManager = TasksDataManager(container: container) + repository = ConcurrentTasksRepository(tasksDataManager: tasksDataManager) + } + + override func tearDown() { + repository = nil + tasksDataManager = nil + super.tearDown() + } + + private func externalUpdateParams( + id: String = UUID().uuidString, + providerId: String = "item-1", + hostId: String? = "82f33a82610b4869879615f9c6cb1ece" + ) -> [String: Any] { + var params: [String: Any] = [ + "id": id, + "jobType": SyncJobType.externalUpdate.rawValue, + "queueKey": "jellyfin", + "providerName": "jellyfin", + "providerId": providerId, + "currentTime": 123.5, + "percentCompleted": 42.0, + ] + if let hostId { + params["hostId"] = hostId + } + return params + } + + // MARK: - Persistence round-trips + + /// The whole progress-push path routes by stable host: dropping `hostId` between store and + /// reload makes the operation resolve no connection and (correctly) discard EVERY push. + func testExternalUpdateTask_roundTripsHostId() async throws { + try await repository.storeTask(parameters: externalUpdateParams()) + + // getNextTask is the accessor the WORKER uses to reload persisted tasks — the payload + // join happens there (getAllTasks is a display-level list with empty parameters). + let task = await repository.getNextTask(for: "jellyfin") + let params = try XCTUnwrap(task?.parameters) + XCTAssertEqual(params["hostId"] as? String, "82f33a82610b4869879615f9c6cb1ece") + XCTAssertEqual(params["providerId"] as? String, "item-1") + XCTAssertEqual(params["providerName"] as? String, "jellyfin") + XCTAssertEqual(params["currentTime"] as? Double, 123.5) + XCTAssertEqual(params["percentCompleted"] as? Double, 42.0) + } + + func testExternalUpdateTask_withoutHostId_roundTripsAsAbsent() async throws { + try await repository.storeTask(parameters: externalUpdateParams(hostId: nil)) + + let task = await repository.getNextTask(for: "jellyfin") + XCTAssertNotNil(task) + XCTAssertNil(task?.parameters["hostId"]) + } + + func testTasks_preserveInsertionOrder() async throws { + try await repository.storeTask(parameters: externalUpdateParams(id: "task-a", providerId: "a")) + try await repository.storeTask(parameters: externalUpdateParams(id: "task-b", providerId: "b")) + try await repository.storeTask(parameters: externalUpdateParams(id: "task-c", providerId: "c")) + + // FIFO through the worker's own next+pop cycle. + var seen = [String]() + while let task = await repository.getNextTask(for: "jellyfin") { + seen.append(task.parameters["providerId"] as? String ?? "?") + await repository.pop(task) + } + XCTAssertEqual(seen, ["a", "b", "c"]) + } + + func testGetOrderedTasks_putsActiveTasksFirst() async throws { + try await repository.storeTask(parameters: externalUpdateParams(id: "task-a", providerId: "a")) + try await repository.storeTask(parameters: externalUpdateParams(id: "task-b", providerId: "b")) + + let ordered = await repository.getOrderedTasks(activeTaskIDs: ["task-b"]) + XCTAssertEqual(ordered.first?.id, "task-b") + XCTAssertEqual(ordered.count, 2) + } + + func testPop_removesTheTask() async throws { + try await repository.storeTask(parameters: externalUpdateParams(id: "task-a")) + let tasks = await repository.getAllTasks() + let task = try XCTUnwrap(tasks.first) + + await repository.pop(task) + + let remaining = await repository.getAllTasks() + XCTAssertTrue(remaining.isEmpty) + } + + // MARK: - Access policy (per-tier gating) + + /// `externalUpdate` targets the USER'S OWN media server, so it stays available on every + /// tier (Android parity); `uploadFile` (S3) is PRO-only. + func testAccessPolicy_perTier() { + let service = ConcurrenceService(maxConcurrentTasks: 1) + + service.updateConcurrentService(.pro) + XCTAssertEqual(service.accessPolicy[.externalUpdate], true) + XCTAssertEqual(service.accessPolicy[.uploadFile], true) + + service.updateConcurrentService(.lite) + XCTAssertEqual(service.accessPolicy[.externalUpdate], true) + XCTAssertEqual(service.accessPolicy[.uploadFile], false) + + service.updateConcurrentService(.free) + XCTAssertEqual(service.accessPolicy[.externalUpdate], true) + XCTAssertEqual(service.accessPolicy[.uploadFile], false) + + service.updateConcurrentService(.plus) + XCTAssertEqual(service.accessPolicy[.externalUpdate], true) + XCTAssertEqual(service.accessPolicy[.uploadFile], false) + } + + func testScheduleMetadataUpdate_gatedByPolicy() async throws { + let service = ConcurrenceService(maxConcurrentTasks: 1) + service.taskContainer = repository + + // Denied: nothing is persisted. + service.accessPolicy = [.externalUpdate: false] + service.scheduleMetadataUpdate(params: ["providerName": "jellyfin", "providerId": "item-1"]) + try await Task.sleep(for: .milliseconds(300)) + var tasks = await repository.getAllTasks() + XCTAssertTrue(tasks.isEmpty) + + // Allowed: the task lands with the right jobType and provider queue. + service.accessPolicy = [.externalUpdate: true] + service.scheduleMetadataUpdate(params: [ + "providerName": "jellyfin", + "providerId": "item-1", + "hostId": "guid-1", + ]) + try await waitForTaskCount(1) + let stored = await repository.getNextTask(for: "jellyfin") + XCTAssertEqual(stored?.jobType, .externalUpdate) + XCTAssertEqual(stored?.queueKey, "jellyfin") + XCTAssertEqual(stored?.parameters["hostId"] as? String, "guid-1") + } + + func testScheduleFileUpload_gatedByPolicy() async throws { + let service = ConcurrenceService(maxConcurrentTasks: 1) + service.taskContainer = repository + + service.accessPolicy = [.uploadFile: false] + service.scheduleFileUpload(params: ["filePath": "/tmp/a", "remotePath": "https://s3/a", "uuid": "u1"]) + try await Task.sleep(for: .milliseconds(300)) + let denied = await repository.getAllTasks() + XCTAssertTrue(denied.isEmpty) + + service.accessPolicy = [.uploadFile: true] + service.scheduleFileUpload(params: ["filePath": "/tmp/a", "remotePath": "https://s3/a", "uuid": "u1"]) + try await waitForTaskCount(1) + let allowed = await repository.getNextTask(for: TaskQueueKey.uploadFile) + XCTAssertEqual(allowed?.jobType, .uploadFile) + XCTAssertEqual(allowed?.parameters["filePath"] as? String, "/tmp/a") + } + + // MARK: - Operation state machine + + func testAsyncOperation_finishFlipsStateFromAnotherThread() { + let operation = AsyncOperation() + XCTAssertTrue(operation.isReady) + XCTAssertFalse(operation.isExecuting) + + operation.start() + XCTAssertTrue(operation.isExecuting) + + let finished = expectation(description: "finished") + DispatchQueue.global().async { + operation.finish() + finished.fulfill() + } + wait(for: [finished], timeout: 2) + XCTAssertTrue(operation.isFinished) + XCTAssertFalse(operation.isExecuting) + } + + func testAsyncOperation_cancelledBeforeStartFinishesImmediately() { + let operation = AsyncOperation() + operation.cancel() + operation.start() + XCTAssertTrue(operation.isFinished) + } + + /// A permanently-missing source file must CONSUME the upload (didSucceed) instead of failing: + /// the queue retries failures forever on one serial key, so a poison task would hot-loop and + /// block every other upload behind it. + func testFileUploadOperation_missingSourceFile_isConsumedNotRetried() { + let operation = FileUploadOperation( + fileURL: URL(fileURLWithPath: "/nonexistent/\(UUID().uuidString).m4b"), + remoteURL: URL(string: "https://example.com/upload")!, + uuid: "task-uuid" + ) + + operation.start() + + let done = expectation(description: "operation finished") + let observer = operation.observe(\.isFinished, options: [.initial, .new]) { op, _ in + if op.isFinished { done.fulfill() } + } + wait(for: [done], timeout: 5) + observer.invalidate() + + XCTAssertTrue(operation.didSucceed, "a missing source file is permanent — the task must be consumed") + } + + // MARK: - Helpers + + private func waitForTaskCount(_ count: Int, timeout: TimeInterval = 3) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline { + let tasks = await repository.getAllTasks() + if tasks.count >= count { return } + try await Task.sleep(for: .milliseconds(50)) + } + XCTFail("timed out waiting for \(count) task(s)") + } +} diff --git a/BookPlayerTests/Services/IntegrationHostResolverTests.swift b/BookPlayerTests/Services/IntegrationHostResolverTests.swift new file mode 100644 index 000000000..4509af35e --- /dev/null +++ b/BookPlayerTests/Services/IntegrationHostResolverTests.swift @@ -0,0 +1,63 @@ +// +// IntegrationHostResolverTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import XCTest + +@testable import BookPlayerKit + +/// Pins the cross-platform stable-host resolution contract (the Android app ships the same +/// rules in its `ServerResolutionTest`): GUID match is case-insensitive, the URL fallback uses +/// the canonical dedup key, and an unknown host resolves to NOTHING — never to whichever +/// connection happens to exist. +final class IntegrationHostResolverTests: XCTestCase { + private func connection(serverId: String?, url: String, id: String = UUID().uuidString) -> JellyfinConnectionData { + JellyfinConnectionData( + id: id, + serverId: serverId, + url: URL(string: url)!, + serverName: "srv", + userID: "user-1", + userName: "name", + accessToken: "token" + ) + } + + func testMatchesByServerIdCaseInsensitively() { + // Jellyfin reports lowercase hex, ABS uppercase UUIDs — casing must never break the match. + let connections = [connection(serverId: "ABC-DEF-123", url: "https://jf.example.com")] + let hit = IntegrationHostResolver.connection(for: "abc-def-123", in: connections) + XCTAssertEqual(hit?.serverId, "ABC-DEF-123") + } + + func testFallsBackToCanonicalUrlKeyForGuidlessConnections() { + // The other device imported against this server before it reported a GUID: hostId is the + // canonical key. This device saved the same URL with default port + trailing slash. + let connections = [connection(serverId: nil, url: "https://jf.example.com:443/")] + let hit = IntegrationHostResolver.connection( + for: URL(string: "https://jf.example.com")!.canonicalDedupKey, + in: connections + ) + XCTAssertNotNil(hit) + } + + func testUnknownHostResolvesToNothing() { + // The old `?? connections.first` guess streamed the wrong file / pushed progress to the + // wrong server when provider ids collide across instances. + let connections = [connection(serverId: "real-guid", url: "https://jf.example.com")] + XCTAssertNil(IntegrationHostResolver.connection(for: "other-guid", in: connections)) + XCTAssertNil(IntegrationHostResolver.connection(for: nil, in: connections)) + XCTAssertNil(IntegrationHostResolver.connection(for: "", in: connections)) + } + + func testStableHostIdPrefersGuidOverCanonicalKey() { + let withGuid = connection(serverId: "guid-1", url: "https://jf.example.com/") + XCTAssertEqual(withGuid.stableHostId, "guid-1") + + let withoutGuid = connection(serverId: nil, url: "https://jf.example.com/") + XCTAssertEqual(withoutGuid.stableHostId, withoutGuid.url.canonicalDedupKey) + } +} diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index 3805abb50..cc6e02298 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -10,7 +10,7 @@ import Foundation import SwiftData import Combine -public final class TasksDataManager { +public final class TasksDataManager: BPLogger { public let container: ModelContainer private let tasksCountSubject = CurrentValueSubject(0) private let concurrentTasksCountSubject = CurrentValueSubject(0) @@ -38,7 +38,21 @@ public final class TasksDataManager { let storeURL = DataManager.getSyncTasksSwiftDataURL() let modelConfiguration = ModelConfiguration(url: storeURL, cloudKitDatabase: .none) - container = try! ModelContainer(for: schema, migrationPlan: MigrationPlan.self, configurations: [modelConfiguration]) + do { + container = try ModelContainer(for: schema, migrationPlan: MigrationPlan.self, configurations: [modelConfiguration]) + } catch { + // An unloadable store here is a PERMANENT launch crash-loop under try! — e.g. a store + // written by a schema revision the migration plan no longer knows (dev builds between + // schema edits hit exactly this). The task queue is recoverable state: queued work is + // re-derivable, a crashed app is not. Destroy and recreate rather than trap forever. + Self.logger.error("Sync-tasks store unloadable (\(error)); recreating: \(storeURL.path)") + let fm = FileManager.default + for suffix in ["", "-wal", "-shm"] { + try? fm.removeItem(at: URL(fileURLWithPath: storeURL.path + suffix)) + } + // A second failure on a FRESH store is a programming error — crashing is correct. + container = try! ModelContainer(for: schema, migrationPlan: MigrationPlan.self, configurations: [modelConfiguration]) + } // Initialize task count from database initializeTasksCount() From 6b2047056fefcca9f13024fa5887d52a8d798156 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 21:00:11 -0500 Subject: [PATCH 014/172] fix: address review feedback (round 9) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Logout wipes EVERY task queue again, not just the serial sync queue (develop parity): surviving uploadFile/externalUpdate tasks would run under the NEXT signed-in account, pushing the previous user's items with the new account's token. - pop()'s removal save no longer swallows failures: removal happens only there (getNextTask is a peek), so a silently-failed save re-ran the same task forever — it now retries once after a rollback and surfaces loudly. - The pro entitlement explicitly wins over lite in getAccessLevel — holding both active resolved to the LOWER tier, under-granting a paying pro user. - Documented that external_set scheduling is deliberately tier-independent (matching getDownloadState; the server validates entitlements). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/Services/Account/AccountService.swift | 4 +++- .../ConcurrentTasksRepository.swift | 21 +++++++++++++++++-- Shared/Services/Sync/SyncJobScheduler.swift | 5 ++++- Shared/Services/Sync/SyncService.swift | 3 +++ 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/Shared/Services/Account/AccountService.swift b/Shared/Services/Account/AccountService.swift index 8895c34ab..c58cd6254 100644 --- a/Shared/Services/Account/AccountService.swift +++ b/Shared/Services/Account/AccountService.swift @@ -216,7 +216,9 @@ public final class AccountService: AccountServiceProtocol { } public func getAccessLevel() -> AccessLevel { - if hasSyncEnabled() && !hasLiteEnabled() { + // The pro entitlement is checked explicitly first: a user holding BOTH pro and lite + // (e.g. mid-crossgrade) must resolve to the higher tier, not fall through to lite. + if Purchases.shared.cachedCustomerInfo?.entitlements.all["pro"]?.isActive == true { return .pro } else if hasLiteEnabled() { return .lite diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift index a1472e678..87eeb5658 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift @@ -47,7 +47,7 @@ public protocol ConcurrentTasksRepositoryProtocol: ModelActor { func clearAll() throws } -public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol { +public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLogger { nonisolated public let modelContainer: ModelContainer nonisolated public let modelExecutor: any ModelExecutor @@ -108,7 +108,24 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol { context.delete(reference) } - try? context.save() + // Removal happens ONLY here (getNextTask is a peek): a silently-failed save leaves the + // reference behind and the worker re-runs the same task forever. Retry once after a + // rollback, then surface loudly. + do { + try context.save() + } catch { + Self.logger.error("Failed to persist task removal (\(task.id)), retrying: \(error)") + context.rollback() + if let reference = tasksContainer.tasks.first(where: { $0.taskID == task.id }) { + tasksContainer.tasks.removeAll(where: { $0.id == reference.id }) + context.delete(reference) + } + do { + try context.save() + } catch { + Self.logger.error("Task removal persistently failing (\(task.id)) — the worker will re-run it: \(error)") + } + } tasksDataManager.notifyTasksChanged(context: context) } diff --git a/Shared/Services/Sync/SyncJobScheduler.swift b/Shared/Services/Sync/SyncJobScheduler.swift index 7879bb86d..f4c5d8ea2 100644 --- a/Shared/Services/Sync/SyncJobScheduler.swift +++ b/Shared/Services/Sync/SyncJobScheduler.swift @@ -313,7 +313,10 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { } public func resetAllJobs() async { - try? await tasksRepository.clearAll(in: TaskQueueKey.sync) + // Logout must wipe EVERY queue, not just the serial sync queue (develop parity): + // surviving uploadFile/externalUpdate tasks would run under the NEXT signed-in + // account, pushing the previous user's items with the new account's token. + try? await tasksRepository.clearAll() await MainActor.run { tasksProgress.removeAll() } diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index fcdcc671d..f3b7a5d49 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -920,6 +920,9 @@ extension SyncService { hostId: externalResource.hostId ) await libraryService.updateExternalResource(for: externalSyncItem) + // Deliberately NOT gated on `isActive`: external-resource sync is tier-independent by + // design (the reference lives in the DB for every tier and the server validates + // entitlements) — matching getDownloadState, which permits these downloads when !isActive. await jobManager.scheduleResourceToDownload(with: relativePath, for: snapshot.uuid, uploaded: false) } From d736db166b1c13f6090e92b6ec5459818ff51f6e Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 21:17:40 -0500 Subject: [PATCH 015/172] fix: address review feedback (round 10) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - A consumed 4xx upload no longer confirms synced:true: a new uploadCompleted flag (real 2xx only) drives the server confirmation, while didSucceed keeps meaning "stop retrying" — the compound of the earlier consume-permanent- failures and confirm-after-upload fixes had married the two. - The buffering overlay is cleared on loadChapterOperation's duration<=0 early-return (the item never attaches, nothing else flips it off). - Presigned PUT URLs are logged as .path only — the query string carries temporary AWS credentials. - The external-resource batch update saves through the DataManager facade and logs through BPLogger instead of a raw save + print. - Both ExternalResource.create overloads honor the snapshot's processedFile. - SimpleExternalResource ids use the current epoch seconds at five sites — Int(Date.timeIntervalBetween1970AndReferenceDate) is a compile-time constant, so every resource shared one id. - A progress push cancelled during its debounce sleep no longer fires against the user's server. - remotePath force-cast relaxed to as? for consistency with its optional model field. - CarPlay's empty fetchExternalResource is documented as deliberate. - CLAUDE.md's sync-entitlement invariant updated for the lite tier (per its own update-in-the-same-PR rule); AccessLevel list includes lite, pro wins when both entitlements are held. Acknowledged for the injection/snapshot refactor follow-up (not fixed here): FileUploadOperation's unsynchronized mutable state under @unchecked Sendable, and findResource(s) returning NSManagedObjects out of LibraryService. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library Screen/AudiobookShelfLibraryViewModel.swift | 2 +- .../Details/JellyfinAudiobookDetailsViewModel.swift | 2 +- .../Library Screen/JellyfinLibraryViewModel.swift | 6 +++--- BookPlayer/Player/PlayerManager.swift | 2 ++ BookPlayer/Services/CarPlayManager.swift | 2 ++ CLAUDE.md | 8 ++++++-- .../ExternalResource+CoreDataProperties.swift | 4 ++-- Shared/Network/NetworkClient.swift | 3 ++- Shared/Services/ConcurrentSync/ConcurrenceService.swift | 5 ++++- Shared/Services/ConcurrentSync/FileUploadOperation.swift | 5 +++++ Shared/Services/LibraryService.swift | 6 +++--- 11 files changed, 31 insertions(+), 14 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 74b18c286..239023721 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -275,7 +275,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, ) let externalItem = SimpleExternalResource( - id: Int(Date.timeIntervalBetween1970AndReferenceDate), + id: Int(Date().timeIntervalSince1970), providerName: ExternalResource.ProviderName.audiobookshelf.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 33047a5f9..598116242 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -115,7 +115,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { ) let externalItem = SimpleExternalResource( - id: Int(Date.timeIntervalBetween1970AndReferenceDate), + id: Int(Date().timeIntervalSince1970), providerName: ExternalResource.ProviderName.jellyfin.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index a9e33ca1f..e2cd3cdb5 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -408,7 +408,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog ) let externalItem = SimpleExternalResource( - id: Int(Date.timeIntervalBetween1970AndReferenceDate), + id: Int(Date().timeIntervalSince1970), providerName: ExternalResource.ProviderName.jellyfin.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, @@ -624,7 +624,7 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B ) let externalItem = SimpleExternalResource( - id: Int(Date.timeIntervalBetween1970AndReferenceDate), + id: Int(Date().timeIntervalSince1970), providerName: ExternalResource.ProviderName.jellyfin.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, @@ -854,7 +854,7 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, ) let externalItem = SimpleExternalResource( - id: Int(Date.timeIntervalBetween1970AndReferenceDate), + id: Int(Date().timeIntervalSince1970), providerName: ExternalResource.ProviderName.jellyfin.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index a4d6b9628..0c93fad85 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -523,6 +523,8 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { DispatchQueue.main.async { [weak self] in self?.playbackQueued = nil self?.isFetchingRemoteURL = nil + // The item was never attached, so nothing else flips the buffering overlay off. + self?.updatePlayerIsLoadingURL(false) NotificationCenter.default.post(name: .bookReady, object: nil, userInfo: ["loaded": false]) } return diff --git a/BookPlayer/Services/CarPlayManager.swift b/BookPlayer/Services/CarPlayManager.swift index 211213fe3..a1c2471d4 100644 --- a/BookPlayer/Services/CarPlayManager.swift +++ b/BookPlayer/Services/CarPlayManager.swift @@ -749,6 +749,8 @@ extension CarPlayManager: PlaybackSyncProgressDelegate { _ = await contentsFetchTask?.result } + // Deliberately empty: CarPlay playback is local/cloud-only — media-server progress + // refresh happens on the phone UI paths, not while driving. func fetchExternalResource(_ playableItem: PlayableItem) async { } diff --git a/CLAUDE.md b/CLAUDE.md index b5d59a5b2..73b18c6a4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -293,7 +293,10 @@ lines). It is the highest-risk file in the app. notifications. A `teardownTask` is **awaited** at the top of the sync-contents entry points so a fast logout→login can't let a late `resetAllJobs()` wipe freshly-scheduled jobs — preserve this ordering. Every `schedule*` method short-circuits on `guard isActive`. -- **Sync = the `pro` entitlement only** (see below). Job types (`SyncJobType`): `upload, update, move, +- **Sync = the `pro` OR `lite` entitlement** (`hasSyncEnabled()`); `lite` gets DB-backed sync only — + S3 file uploads are gated per-job via `ConcurrenceService.accessPolicy` (`.uploadFile` is pro-only, + `.externalUpdate` — progress pushes to the USER'S OWN media server — is available on every tier, + matching the Android app). Job types (`SyncJobType`): `upload, update, move, renameFolder, delete, shallowDelete, setBookmark, deleteBookmark, uploadArtwork, matchUuid`. - **Download verification:** `verifyDownloadedFile` rejects truncated files by comparing `AVURLAsset` duration to the stored duration (tolerance `max(2, expected*0.02)`); completion is broadcast only after verification. @@ -333,7 +336,8 @@ lines). It is the highest-risk file in the app. ### Subscriptions & entitlements — `Shared/Services/Account/AccountService.swift` -- RevenueCat entitlements `AccessLevel { free, plus, pro }`. `hasSyncEnabled()` = `pro` entitlement active; +- RevenueCat entitlements `AccessLevel { free, plus, lite, pro }`. `hasSyncEnabled()` = `pro` OR `lite` active + (pro wins when both are held); `hasPlusAccess()` = `plus` OR `pro` (with a local `donationMade` fallback when cached info is nil). - **These are client-side cached RevenueCat reads — UX gating only.** Never let `hasSyncEnabled()`/`isActive` become the sole gate for a server-billed resource; the server validates the entitlement. Purchases are guarded diff --git a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift index 9dba62356..ebae915a8 100644 --- a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift +++ b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift @@ -38,7 +38,7 @@ public class ExternalResource: NSManagedObject { entity.providerId = item.providerId entity.lastSyncedAt = item.lastSyncedAt entity.syncStatus = item.syncStatus - entity.processedFile = false + entity.processedFile = item.processedFile entity.hostId = item.hostId if let item = libraryItem { @@ -60,7 +60,7 @@ public class ExternalResource: NSManagedObject { entity.providerId = item.providerId entity.lastSyncedAt = item.lastSyncedAt entity.syncStatus = item.syncStatus - entity.processedFile = false + entity.processedFile = item.processedFile entity.hostId = item.hostId if let item = libraryItem { diff --git a/Shared/Network/NetworkClient.swift b/Shared/Network/NetworkClient.swift index bae840786..ffeca708b 100644 --- a/Shared/Network/NetworkClient.swift +++ b/Shared/Network/NetworkClient.swift @@ -140,7 +140,8 @@ public class NetworkClient: NetworkClientProtocol, BPLogger { request.cachePolicy = .reloadIgnoringLocalCacheData request.httpMethod = HTTPMethod.put.rawValue - Self.logger.trace("[Request] PUT \(remoteURL.absoluteString)") + // .path only: presigned URLs carry AWS credentials in the query string. + Self.logger.trace("[Request] PUT \(remoteURL.path)") let (responseData, response) = try await URLSession.shared.upload(for: request, from: data) diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 31109f2ec..401925e37 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -301,7 +301,10 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { // actually on S3 — LibraryItemSyncOperation deliberately no longer confirms when it // schedules a file upload (confirming before the PUT lies to the server if the upload // later fails permanently). - if let uploadOperation = operation as? FileUploadOperation, uploadOperation.didSucceed { + // uploadCompleted (a real 2xx), NOT didSucceed: consumed permanent failures (missing + // file, 4xx) also report didSucceed so the queue stops retrying, but no bytes reached + // the server — confirming synced:true for those lies to the backend. + if let uploadOperation = operation as? FileUploadOperation, uploadOperation.uploadCompleted { let provider = NetworkProvider(client: networkClient) // The task is popped unconditionally after this, so a transient confirmation failure // would strand the item as synced:false with its bytes already on S3 — retry a few diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index 6f5878ffe..ea2efdc20 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -10,6 +10,10 @@ import Foundation import Combine class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { + /// True ONLY when the bytes actually reached the server (2xx). `didSucceed` also goes true + /// for CONSUMED permanent failures (missing file, 4xx) so the queue stops retrying them — + /// but those must never trigger the synced:true confirmation. + private(set) var uploadCompleted = false // MARK: - Properties let fileURL: URL @@ -158,6 +162,7 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { } } } + self.uploadCompleted = true self.didSucceed = true self.finish() } diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index bf408dd0b..f88432a38 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -188,7 +188,7 @@ public protocol LibraryServiceProtocol: AnyObject { // swiftlint:disable force_cast @Observable -public final class LibraryService: LibraryServiceProtocol, @unchecked Sendable { +public final class LibraryService: LibraryServiceProtocol, BPLogger, @unchecked Sendable { var dataManager: DataManager! var audioMetadataService: AudioMetadataServiceProtocol! /// Sticky-sort preference resolver. Injected after construction to break the @@ -2908,9 +2908,9 @@ extension LibraryService { } } - try context.save() + dataManager.saveSyncContext(context) } catch { - print("Failed to batch fetch ExternalResources: \(error)") + Self.logger.error("Failed to batch fetch ExternalResources: \(error)") } } } From 07f20f36552529ecd6ad27d9ae5a43625715efd5 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 21:39:41 -0500 Subject: [PATCH 016/172] fix: address review feedback (round 11) - findResource is provider-scoped when the provider is known: provider item ids are only unique per provider, so a Jellyfin id colliding with an ABS id could resolve and mutate the other's resource. - The external-import row's remove button carries a VoiceOver label. - Documented that the pipe upload's foreground session is deliberate for now (runs inside the retrying sync operation while the app is in use, matching Android's current behavior); surviving app termination is the planned background-transfer follow-up on both platforms. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Import/ExternalSource/ExternalImportView.swift | 1 + BookPlayer/Import/ImportManager.swift | 2 +- Shared/Services/LibraryService+Sync.swift | 2 +- Shared/Services/LibraryService.swift | 12 +++++++++--- Shared/Services/Sync/LibraryItemSyncOperation.swift | 4 ++++ 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/BookPlayer/Import/ExternalSource/ExternalImportView.swift b/BookPlayer/Import/ExternalSource/ExternalImportView.swift index c4cb37582..ee3772aa6 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportView.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportView.swift @@ -79,6 +79,7 @@ struct ExternalImportView: View { } } label: { Image(systemName: "minus.circle.fill") + .accessibilityLabel("delete_button".localized) .foregroundColor(.red) .font(.system(size: 20)) } diff --git a/BookPlayer/Import/ImportManager.swift b/BookPlayer/Import/ImportManager.swift index 5b28d0672..1765bc57b 100644 --- a/BookPlayer/Import/ImportManager.swift +++ b/BookPlayer/Import/ImportManager.swift @@ -163,7 +163,7 @@ final class ImportManager: ObservableObject { return true } - if self.libraryService.findResource(for: externalResource.providerId, context: nil) != nil { + if self.libraryService.findResource(for: externalResource.providerId, providerName: externalResource.providerName, context: nil) != nil { return true } diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index ed7f93055..966b1d304 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -246,7 +246,7 @@ extension LibraryService: LibrarySyncProtocol { return await withCheckedContinuation { continuation in let context = dataManager.getBackgroundContext() context.perform { [unowned self, context] in - let externalResource = self.findResource(for: item.providerId, context: context) + let externalResource = self.findResource(for: item.providerId, providerName: item.providerName, context: context) if let externalResource { externalResource.syncStatus = item.syncStatus externalResource.processedFile = item.processedFile diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index f88432a38..a142f32cf 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -177,7 +177,7 @@ public protocol LibraryServiceProtocol: AnyObject { /// Returns the item's external resources as lightweight values. func getExternalResources(for relativePath: String) async -> [SimpleExternalResource] - func findResource(for providerId: String, context: NSManagedObjectContext?) -> ExternalResource? + func findResource(for providerId: String, providerName: String?, context: NSManagedObjectContext?) -> ExternalResource? func findResources(for uuid: String, context: NSManagedObjectContext?) -> [ExternalResource]? @@ -2857,9 +2857,15 @@ extension LibraryService { } extension LibraryService { - public func findResource(for providerId: String, context: NSManagedObjectContext? = nil) -> ExternalResource? { + public func findResource(for providerId: String, providerName: String? = nil, context: NSManagedObjectContext? = nil) -> ExternalResource? { let fetch: NSFetchRequest = ExternalResource.fetchRequest() - fetch.predicate = NSPredicate(format: "providerId == %@", providerId) + // Scope by provider when known: provider item ids are only unique per provider, and a + // Jellyfin id colliding with an ABS id must not resolve/mutate the other's resource. + if let providerName { + fetch.predicate = NSPredicate(format: "providerId == %@ AND providerName == %@", providerId, providerName) + } else { + fetch.predicate = NSPredicate(format: "providerId == %@", providerId) + } let context = context ?? self.dataManager.getContext() let result = try? context.fetch(fetch) diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 3bd9f450c..3df40cfe9 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -265,6 +265,10 @@ extension LibraryItemSyncOperation { // Streamed straight from disk — audiobooks run into the GBs and must never be // materialized as a single in-memory Data. A failed upload THROWS so the task is // retried and the server is never told the file exists when it doesn't. + // Foreground session by design (for now): this pipe upload runs inside the retrying + // sync operation while the app is in use, matching the Android app's current behavior; + // surviving app termination is the planned background-transfer follow-up on both + // platforms, which needs the BPURLSession delegate machinery, not just a session swap. try await client.upload(fileURL: fileURL, remoteURL: remoteUrl) let _: Empty = try await self.provider.request( From 3f2eef024e26cea09a0e42bfcf61825b1568afb2 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 21:56:26 -0500 Subject: [PATCH 017/172] fix: regenerate AutoMockable for the provider-scoped findResource MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Round 11's findResource protocol change broke the generated mock (red CI on ec60b77c) — the mocks are Sourcery output, never hand-edited, so this regenerates them. Two knock-ons surfaced by the regeneration: - insertItems(from: [SimpleExternalResource]) is renamed to insertItems(fromResources:) — Sourcery's mock property mangling collides with the pre-existing insertItems(from: [URL]) overload. - The `import CoreData` line the committed mock carries (needed for NSManagedObjectContext in the findResource signatures) is restored after generation; the template alone doesn't emit it. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Generated/AutoMockable.generated.swift | 136 +++++++++--------- .../Library/ItemList/LibraryRootView.swift | 2 +- Shared/Services/LibraryService.swift | 6 +- 3 files changed, 74 insertions(+), 70 deletions(-) diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index c4b9d1c63..05706c7a4 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -319,6 +319,8 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { return getSimpleItemWithReturnValue } } + //MARK: - getSimpleItem + var getSimpleItemForCallsCount = 0 var getSimpleItemForCalled: Bool { return getSimpleItemForCallsCount > 0 @@ -996,6 +998,26 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { setHardcoverBookForReceivedInvocations.append((hardcoverBook: hardcoverBook, relativePath: relativePath)) await setHardcoverBookForClosure?(hardcoverBook, relativePath) } + //MARK: - getHardcoverBook + + var getHardcoverBookForCallsCount = 0 + var getHardcoverBookForCalled: Bool { + return getHardcoverBookForCallsCount > 0 + } + var getHardcoverBookForReceivedRelativePath: String? + var getHardcoverBookForReceivedInvocations: [String] = [] + var getHardcoverBookForReturnValue: SimpleHardcoverBook? + var getHardcoverBookForClosure: ((String) async -> SimpleHardcoverBook?)? + func getHardcoverBook(for relativePath: String) async -> SimpleHardcoverBook? { + getHardcoverBookForCallsCount += 1 + getHardcoverBookForReceivedRelativePath = relativePath + getHardcoverBookForReceivedInvocations.append(relativePath) + if let getHardcoverBookForClosure = getHardcoverBookForClosure { + return await getHardcoverBookForClosure(relativePath) + } else { + return getHardcoverBookForReturnValue + } + } //MARK: - setExternalResource var setExternalResourceProviderNameProviderIdForCallsCount = 0 @@ -1044,7 +1066,7 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { } var getExternalResourcesForReceivedRelativePath: String? var getExternalResourcesForReceivedInvocations: [String] = [] - var getExternalResourcesForReturnValue: [SimpleExternalResource]! = [] + var getExternalResourcesForReturnValue: [SimpleExternalResource]! var getExternalResourcesForClosure: ((String) async -> [SimpleExternalResource])? func getExternalResources(for relativePath: String) async -> [SimpleExternalResource] { getExternalResourcesForCallsCount += 1 @@ -1056,80 +1078,58 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { return getExternalResourcesForReturnValue } } - //MARK: - getHardcoverBook - - var getHardcoverBookForCallsCount = 0 - var getHardcoverBookForCalled: Bool { - return getHardcoverBookForCallsCount > 0 - } - var getHardcoverBookForReceivedRelativePath: String? - var getHardcoverBookForReceivedInvocations: [String] = [] - var getHardcoverBookForReturnValue: SimpleHardcoverBook? - var getHardcoverBookForClosure: ((String) async -> SimpleHardcoverBook?)? - func getHardcoverBook(for relativePath: String) async -> SimpleHardcoverBook? { - getHardcoverBookForCallsCount += 1 - getHardcoverBookForReceivedRelativePath = relativePath - getHardcoverBookForReceivedInvocations.append(relativePath) - if let getHardcoverBookForClosure = getHardcoverBookForClosure { - return await getHardcoverBookForClosure(relativePath) - } else { - return getHardcoverBookForReturnValue - } - } - //MARK: - findResource - var findResourceForCallsCount = 0 - var findResourceForCalled: Bool { - return findResourceForCallsCount > 0 - } - var findResourceForReceivedArguments: (providerId: String, context: NSManagedObjectContext?)? - var findResourceForReceivedInvocations: [(providerId: String, context: NSManagedObjectContext?)] = [] - var findResourceForReturnValue: BookPlayerKit.ExternalResource? - var findResourceForClosure: ((String, NSManagedObjectContext?) -> BookPlayerKit.ExternalResource?)? - func findResource(for providerId: String, context: NSManagedObjectContext?) -> BookPlayerKit.ExternalResource? { - findResourceForCallsCount += 1 - findResourceForReceivedArguments = (providerId: providerId, context: context) - findResourceForReceivedInvocations.append((providerId: providerId, context: context)) - if let findResourceForClosure = findResourceForClosure { - return findResourceForClosure(providerId, context) + var findResourceForProviderNameContextCallsCount = 0 + var findResourceForProviderNameContextCalled: Bool { + return findResourceForProviderNameContextCallsCount > 0 + } + var findResourceForProviderNameContextReceivedArguments: (providerId: String, providerName: String?, context: NSManagedObjectContext?)? + var findResourceForProviderNameContextReceivedInvocations: [(providerId: String, providerName: String?, context: NSManagedObjectContext?)] = [] + var findResourceForProviderNameContextReturnValue: ExternalResource? + var findResourceForProviderNameContextClosure: ((String, String?, NSManagedObjectContext?) -> ExternalResource?)? + func findResource(for providerId: String, providerName: String?, context: NSManagedObjectContext?) -> ExternalResource? { + findResourceForProviderNameContextCallsCount += 1 + findResourceForProviderNameContextReceivedArguments = (providerId: providerId, providerName: providerName, context: context) + findResourceForProviderNameContextReceivedInvocations.append((providerId: providerId, providerName: providerName, context: context)) + if let findResourceForProviderNameContextClosure = findResourceForProviderNameContextClosure { + return findResourceForProviderNameContextClosure(providerId, providerName, context) } else { - return findResourceForReturnValue + return findResourceForProviderNameContextReturnValue } } - //MARK: - findResources - var findResourcesForCallsCount = 0 - var findResourcesForCalled: Bool { - return findResourcesForCallsCount > 0 - } - var findResourcesForReceivedArguments: (uuid: String, context: NSManagedObjectContext?)? - var findResourcesForReceivedInvocations: [(uuid: String, context: NSManagedObjectContext?)] = [] - var findResourcesForReturnValue: [BookPlayerKit.ExternalResource]? - var findResourcesForClosure: ((String, NSManagedObjectContext?) -> [BookPlayerKit.ExternalResource]?)? - func findResources(for uuid: String, context: NSManagedObjectContext?) -> [BookPlayerKit.ExternalResource]? { - findResourcesForCallsCount += 1 - findResourcesForReceivedArguments = (uuid: uuid, context: context) - findResourcesForReceivedInvocations.append((uuid: uuid, context: context)) - if let findResourcesForClosure = findResourcesForClosure { - return findResourcesForClosure(uuid, context) + var findResourcesForContextCallsCount = 0 + var findResourcesForContextCalled: Bool { + return findResourcesForContextCallsCount > 0 + } + var findResourcesForContextReceivedArguments: (uuid: String, context: NSManagedObjectContext?)? + var findResourcesForContextReceivedInvocations: [(uuid: String, context: NSManagedObjectContext?)] = [] + var findResourcesForContextReturnValue: [ExternalResource]? + var findResourcesForContextClosure: ((String, NSManagedObjectContext?) -> [ExternalResource]?)? + func findResources(for uuid: String, context: NSManagedObjectContext?) -> [ExternalResource]? { + findResourcesForContextCallsCount += 1 + findResourcesForContextReceivedArguments = (uuid: uuid, context: context) + findResourcesForContextReceivedInvocations.append((uuid: uuid, context: context)) + if let findResourcesForContextClosure = findResourcesForContextClosure { + return findResourcesForContextClosure(uuid, context) } else { - return findResourcesForReturnValue + return findResourcesForContextReturnValue } } - //MARK: - insertItems var insertItemsFromResourcesCallsCount = 0 var insertItemsFromResourcesCalled: Bool { return insertItemsFromResourcesCallsCount > 0 } - var insertItemsFromResourcesReceivedResources: [BookPlayerKit.SimpleExternalResource]? - var insertItemsFromResourcesReceivedInvocations: [[BookPlayerKit.SimpleExternalResource]] = [] - var insertItemsFromResourcesReturnValue: [BookPlayerKit.SimpleLibraryItem]! - var insertItemsFromResourcesClosure: (([BookPlayerKit.SimpleExternalResource]) async -> [BookPlayerKit.SimpleLibraryItem])? - func insertItems(from resources: [BookPlayerKit.SimpleExternalResource]) async -> [BookPlayerKit.SimpleLibraryItem] { + var insertItemsFromResourcesReceivedResources: [SimpleExternalResource]? + var insertItemsFromResourcesReceivedInvocations: [[SimpleExternalResource]] = [] + var insertItemsFromResourcesReturnValue: [SimpleLibraryItem]! + var insertItemsFromResourcesClosure: (([SimpleExternalResource]) async -> [SimpleLibraryItem])? + @MainActor + func insertItems(fromResources resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] { insertItemsFromResourcesCallsCount += 1 insertItemsFromResourcesReceivedResources = resources insertItemsFromResourcesReceivedInvocations.append(resources) @@ -1139,17 +1139,16 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { return insertItemsFromResourcesReturnValue } } - //MARK: - handleSyncFromExternalResouce var handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount = 0 var handleSyncFromExternalResouceRemoteItemsDictionaryCalled: Bool { return handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount > 0 } - var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedRemoteItemsDictionary: [String : BookPlayerKit.JellyfinLibraryItem]? - var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedInvocations: [[String : BookPlayerKit.JellyfinLibraryItem]] = [] - var handleSyncFromExternalResouceRemoteItemsDictionaryClosure: (([String : BookPlayerKit.JellyfinLibraryItem]) -> Void)? - func handleSyncFromExternalResouce(remoteItemsDictionary: [String : BookPlayerKit.JellyfinLibraryItem]) { + var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedRemoteItemsDictionary: [String: JellyfinLibraryItem]? + var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedInvocations: [[String: JellyfinLibraryItem]] = [] + var handleSyncFromExternalResouceRemoteItemsDictionaryClosure: (([String: JellyfinLibraryItem]) -> Void)? + func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) { handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount += 1 handleSyncFromExternalResouceRemoteItemsDictionaryReceivedRemoteItemsDictionary = remoteItemsDictionary handleSyncFromExternalResouceRemoteItemsDictionaryReceivedInvocations.append(remoteItemsDictionary) @@ -1313,9 +1312,6 @@ class PlaybackServiceProtocolMock: PlaybackServiceProtocol { } } class PlayerManagerProtocolMock: PlayerManagerProtocol { - let playerIsLoadingURL: Bool = false - var storedConnection: BookPlayerKit.JellyfinConnectionData? = nil - var currentItem: PlayableItem? var currentSpeed: Float { get { return underlyingCurrentSpeed } @@ -1327,7 +1323,13 @@ class PlayerManagerProtocolMock: PlayerManagerProtocol { set(value) { underlyingIsPlaying = value } } var underlyingIsPlaying: Bool! + var playerIsLoadingURL: Bool { + get { return underlyingPlayerIsLoadingURL } + set(value) { underlyingPlayerIsLoadingURL = value } + } + var underlyingPlayerIsLoadingURL: Bool! var syncProgressDelegate: PlaybackSyncProgressDelegate? + var storedConnection: JellyfinConnectionData? //MARK: - load var loadAutoplayCallsCount = 0 diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index 4961d3095..e1d19541a 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -215,7 +215,7 @@ struct LibraryRootView: View { case .local(let files): processedItems = await libraryService.insertItems(from: files) case .external(let externals): - processedItems = await libraryService.insertItems(from: externals) + processedItems = await libraryService.insertItems(fromResources: externals) } var itemIdentifiers = processedItems.map({ $0.relativePath }) diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index a142f32cf..63215f72a 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -181,7 +181,9 @@ public protocol LibraryServiceProtocol: AnyObject { func findResources(for uuid: String, context: NSManagedObjectContext?) -> [ExternalResource]? - @MainActor func insertItems(from resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] + // fromResources (not from:): overloading insertItems(from: [URL]) collides in the + // Sourcery-generated mock property names. + @MainActor func insertItems(fromResources resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) } @@ -1314,7 +1316,7 @@ extension LibraryService { @MainActor @discardableResult - public func insertItems(from resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] { + public func insertItems(fromResources resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] { // Phase 2: Create CoreData entities on the main thread using pre-extracted data let library = getLibraryReference() var processedFiles = [SimpleLibraryItem]() From 0e20054e824f6295f87e39fe395ad34d426239e6 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 22:10:48 -0500 Subject: [PATCH 018/172] ci: raise the reviewer turn limit to 100 The 9.6k-line external-resource PR hits error_max_turns at 50 before the reviewer finishes its pass. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .github/workflows/claude-review.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/claude-review.yml b/.github/workflows/claude-review.yml index aa14b0c88..e51dfa96e 100644 --- a/.github/workflows/claude-review.yml +++ b/.github/workflows/claude-review.yml @@ -59,6 +59,6 @@ jobs: BASE_REF: ${{ github.event.pull_request.base.ref }} RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} REVIEW_MODEL: claude-opus-4-8 - REVIEW_MAX_TURNS: '50' # agent only reads/reports (posting is done by the script), so turns go far + REVIEW_MAX_TURNS: '100' # agent only reads/reports (posting is done by the script), so turns go far IS_SANDBOX: '1' run: node .github/claude/reviewer/review.mjs From 8c50d43bdee86eb175588bc8a0b1182e3004b0ff Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 22:26:25 -0500 Subject: [PATCH 019/172] ci: repair malformed reviewer JSON with a one-shot model call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A finished review pass (325 turns on the external-resource PR) was discarded because one unescaped character broke JSON.parse. On parse failure the harness now asks the model to fix its own JSON — content preserved, syntax only — before falling back to the incomplete-review note. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .github/claude/reviewer/review.mjs | 38 +++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/.github/claude/reviewer/review.mjs b/.github/claude/reviewer/review.mjs index c3160a187..b86a3a7f2 100644 --- a/.github/claude/reviewer/review.mjs +++ b/.github/claude/reviewer/review.mjs @@ -102,6 +102,36 @@ function extractJson(text) { return JSON.parse(candidate.slice(start, end + 1)); } +/// One-shot, tool-less model call that fixes the reviewer's own malformed JSON (typically an +/// unescaped quote or raw newline inside a finding's comment). Content is preserved; only +/// syntax is repaired. Costs one cheap turn instead of discarding a completed review pass. +async function repairJsonWithModel(brokenText) { + let repaired = ''; + const iterator = query({ + prompt: + 'The following text should be exactly one valid JSON object but fails to parse. ' + + 'Reply with ONLY the corrected, valid JSON object — no code fences, no commentary. ' + + 'Preserve every property and value; fix escaping/syntax only.\n\n' + brokenText, + options: { + model: MODEL, + allowedTools: [], + permissionMode: 'bypassPermissions', + maxTurns: 1, + }, + }); + for await (const msg of iterator) { + if (msg.type === 'assistant') { + const content = msg.message?.content; + if (Array.isArray(content)) { + for (const block of content) { + if (block.type === 'text' && block.text) repaired = block.text; + } + } + } + } + return extractJson(repaired); +} + async function runAgent() { let finalText = ''; let turns = 0; @@ -210,7 +240,13 @@ async function main() { let parsed; try { if (!finalText) throw new Error('agent produced no text output'); - parsed = extractJson(finalText); + try { + parsed = extractJson(finalText); + } catch (parseError) { + // A finished review with broken JSON is worth one repair attempt before discarding. + console.warn(`Agent JSON malformed (${parseError.message}); attempting model repair…`); + parsed = await repairJsonWithModel(finalText); + } if (!parsed.verdict || !parsed.summary || !Array.isArray(parsed.findings)) { throw new Error('JSON missing verdict/summary/findings'); } From b8afc487372598de053cf88a650ebb88b81a705f Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 22:49:04 -0500 Subject: [PATCH 020/172] fix: address review feedback (round 12) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - findResource/findResources return SimpleExternalResource snapshots built inside performAndWait; the managed-object variants stay internal for the sync mutation/diff paths — closes the services-never-hand-out- NSManagedObjects invariant violation (three findings' worth). - The sync-tasks store recovery is narrowed to incompatible-store Cocoa codes (134504/134100/134110/134130): a bug thrown by the custom v2ToV3 migration stage keeps crashing instead of silently nuking a healthy store. - The upload completion sink reads the EMITTED task's HTTP response — after a cellular-toggle restart, currentUploadTask points at the replacement. - The book row's author line renders regardless of externalResources. - The provider icon mapping moved to an app-layer extension; a UI ImageResource on the Shared CoreData enum pulled the app's asset catalog into both framework targets. - The SSO presentation anchor is injected by the app at startup instead of the KVC "sharedApplication" lookup (App Store static-analysis bait). - Localized tier names for the profile pill; VoiceOver label on the buffering overlay; sync-serialization N+1 batched via the grouped fetch; dangling-reference drops notify the task counts; cancel() cleans the temp hard link; dead AppDelegate.pendingURLActions and the unused storedConnection protocol var removed (mocks regenerated); stray //check markers removed. Acknowledged, not fixed: the pipe upload's foreground session (documented rationale), the Dynamic Type + #Preview sweep for the new import UI (design pass), and externalUpdate coalescing scope. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 4 ++ BookPlayer/AppDelegate.swift | 11 +++- BookPlayer/Base.lproj/Localizable.strings | 5 ++ .../Generated/AutoMockable.generated.swift | 61 +++++++++---------- BookPlayer/Import/ImportManager.swift | 2 +- .../Library/ItemList/Views/BookView.swift | 8 ++- BookPlayer/Player/PlayerManager.swift | 1 - BookPlayer/Player/PlayerManagerProtocol.swift | 1 - .../Player/Views/DynamicWaveLoadingView.swift | 3 + .../Profile/ProfileCardSectionView.swift | 2 +- .../ExternalResourceProvider+Icon.swift | 24 ++++++++ BookPlayer/en.lproj/Localizable.strings | 5 ++ .../LocalPlayback/Player/PlayerManager.swift | 1 - .../ExternalResource+CoreDataClass.swift | 10 --- Shared/Integrations/WebAuthenticating.swift | 19 ++---- Shared/Services/Account/AccessLevel_tmp.txt | 0 Shared/Services/Account/AccountService.swift | 10 +++ .../ConcurrentTasksRepository.swift | 1 + .../ConcurrentSync/FileUploadOperation.swift | 7 ++- Shared/Services/LibraryService+Sync.swift | 11 +++- Shared/Services/LibraryService.swift | 34 +++++++++-- Shared/Services/Sync/LibraryAPI.swift | 8 +-- Shared/SwiftData/TasksDataManager.swift | 13 ++++ 23 files changed, 165 insertions(+), 76 deletions(-) create mode 100644 BookPlayer/Utils/Extensions/ExternalResourceProvider+Icon.swift create mode 100644 Shared/Services/Account/AccessLevel_tmp.txt diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index b0a3ff74f..561551a86 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 02C668174D24A70B4CD6FCB1 /* IntegrationConnectionStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BB56618B150DCAA2CA5FB /* IntegrationConnectionStoreTests.swift */; }; + 048E8DAA13C4530F4419A030 /* ExternalResourceProvider+Icon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56AC45C580EED027394A645B /* ExternalResourceProvider+Icon.swift */; }; 058C840BB5E944B2899BC769 /* ReviewPromptServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F83542FF9A240EC87E55AC8 /* ReviewPromptServiceTests.swift */; }; 07416E5AD384927D90BFB6EE /* PasskeyCreatingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C084D4BC05BF6B413C86C6F0 /* PasskeyCreatingView.swift */; }; 0CEC6B48350FC9C0A0B7D1C0 /* SyncTasksStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700DFD61111AC10253D6EBAA /* SyncTasksStorageTests.swift */; }; @@ -1401,6 +1402,7 @@ 5126F120258E9F18009965DC /* URL+BookPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URL+BookPlayer.swift"; sourceTree = ""; }; 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHTTPClient.swift; sourceTree = ""; }; 53AE3D4C955A493470C8EAA9 /* QueryTimeSortSpikeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryTimeSortSpikeTests.swift; sourceTree = ""; }; + 56AC45C580EED027394A645B /* ExternalResourceProvider+Icon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "ExternalResourceProvider+Icon.swift"; sourceTree = ""; }; 587EDC7DEA9D2985635F1161 /* IntegrationConnectionStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionStore.swift; sourceTree = ""; }; 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHostResolverTests.swift; sourceTree = ""; }; 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SortPreferencesResolving.swift; sourceTree = ""; }; @@ -3971,6 +3973,7 @@ 63E784382E2EAF79001B2E94 /* Environment+BookPlayer.swift */, 63AE5A8C2E4C59FE002531B8 /* AppHostingViewController.swift */, 63D561342E5A214400615522 /* SimpleLibraryItem+SwiftUI.swift */, + 56AC45C580EED027394A645B /* ExternalResourceProvider+Icon.swift */, ); path = Extensions; sourceTree = ""; @@ -5193,6 +5196,7 @@ 39313742614BCCA918DA7C0E /* IntegrationConnectionFlowView.swift in Sources */, BF96AEBA456420ADE446427F /* URL+BookPlayer.swift in Sources */, ED1900FB7892C8FA42A5A665 /* UUIDMigrationPolicy.swift in Sources */, + 048E8DAA13C4530F4419A030 /* ExternalResourceProvider+Icon.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/BookPlayer/AppDelegate.swift b/BookPlayer/AppDelegate.swift index c05546733..88525831e 100644 --- a/BookPlayer/AppDelegate.swift +++ b/BookPlayer/AppDelegate.swift @@ -23,7 +23,6 @@ import WatchConnectivity @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, BPLogger { static weak var shared: AppDelegate? - var pendingURLActions = [Action]() var window: UIWindow? @@ -90,6 +89,16 @@ class AppDelegate: UIResponder, UIApplicationDelegate, BPLogger { // Setup core services AppServices.shared.setupCoreServices() + // The extension-safe framework can't reach UIApplication.shared itself; the SSO flow's + // presentation anchor comes from here, the one process that owns windows. + WebAuthenticationSession.foregroundWindowProvider = { + let scenes = UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene } + guard let scene = scenes.first(where: { $0.activationState == .foregroundActive }) else { + return nil + } + return scene.keyWindow ?? scene.windows.first + } + return true } diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 9844e3c88..9b9a30cb0 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -559,3 +559,8 @@ We're working hard on providing a seamless experience, if possible, please conta "external_sync_benefit_sync_subtitle" = "Your listening progress stays perfectly synced with your server and across all your devices."; "external_sync_info_title" = "Stream & Sync"; "queued_tasks_title" = "Queued Tasks"; +"subscription_tier_free_title" = "Free"; +"subscription_tier_plus_title" = "Plus"; +"subscription_tier_lite_title" = "Lite"; +"subscription_tier_pro_title" = "Pro"; +"loading_title" = "Loading"; diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index 05706c7a4..5ef7bd1d2 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -1080,42 +1080,42 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { } //MARK: - findResource - var findResourceForProviderNameContextCallsCount = 0 - var findResourceForProviderNameContextCalled: Bool { - return findResourceForProviderNameContextCallsCount > 0 - } - var findResourceForProviderNameContextReceivedArguments: (providerId: String, providerName: String?, context: NSManagedObjectContext?)? - var findResourceForProviderNameContextReceivedInvocations: [(providerId: String, providerName: String?, context: NSManagedObjectContext?)] = [] - var findResourceForProviderNameContextReturnValue: ExternalResource? - var findResourceForProviderNameContextClosure: ((String, String?, NSManagedObjectContext?) -> ExternalResource?)? - func findResource(for providerId: String, providerName: String?, context: NSManagedObjectContext?) -> ExternalResource? { - findResourceForProviderNameContextCallsCount += 1 - findResourceForProviderNameContextReceivedArguments = (providerId: providerId, providerName: providerName, context: context) - findResourceForProviderNameContextReceivedInvocations.append((providerId: providerId, providerName: providerName, context: context)) - if let findResourceForProviderNameContextClosure = findResourceForProviderNameContextClosure { - return findResourceForProviderNameContextClosure(providerId, providerName, context) + var findResourceForProviderNameCallsCount = 0 + var findResourceForProviderNameCalled: Bool { + return findResourceForProviderNameCallsCount > 0 + } + var findResourceForProviderNameReceivedArguments: (providerId: String, providerName: String?)? + var findResourceForProviderNameReceivedInvocations: [(providerId: String, providerName: String?)] = [] + var findResourceForProviderNameReturnValue: SimpleExternalResource? + var findResourceForProviderNameClosure: ((String, String?) -> SimpleExternalResource?)? + func findResource(for providerId: String, providerName: String?) -> SimpleExternalResource? { + findResourceForProviderNameCallsCount += 1 + findResourceForProviderNameReceivedArguments = (providerId: providerId, providerName: providerName) + findResourceForProviderNameReceivedInvocations.append((providerId: providerId, providerName: providerName)) + if let findResourceForProviderNameClosure = findResourceForProviderNameClosure { + return findResourceForProviderNameClosure(providerId, providerName) } else { - return findResourceForProviderNameContextReturnValue + return findResourceForProviderNameReturnValue } } //MARK: - findResources - var findResourcesForContextCallsCount = 0 - var findResourcesForContextCalled: Bool { - return findResourcesForContextCallsCount > 0 - } - var findResourcesForContextReceivedArguments: (uuid: String, context: NSManagedObjectContext?)? - var findResourcesForContextReceivedInvocations: [(uuid: String, context: NSManagedObjectContext?)] = [] - var findResourcesForContextReturnValue: [ExternalResource]? - var findResourcesForContextClosure: ((String, NSManagedObjectContext?) -> [ExternalResource]?)? - func findResources(for uuid: String, context: NSManagedObjectContext?) -> [ExternalResource]? { - findResourcesForContextCallsCount += 1 - findResourcesForContextReceivedArguments = (uuid: uuid, context: context) - findResourcesForContextReceivedInvocations.append((uuid: uuid, context: context)) - if let findResourcesForContextClosure = findResourcesForContextClosure { - return findResourcesForContextClosure(uuid, context) + var findResourcesForCallsCount = 0 + var findResourcesForCalled: Bool { + return findResourcesForCallsCount > 0 + } + var findResourcesForReceivedUuid: String? + var findResourcesForReceivedInvocations: [String] = [] + var findResourcesForReturnValue: [SimpleExternalResource]? + var findResourcesForClosure: ((String) -> [SimpleExternalResource]?)? + func findResources(for uuid: String) -> [SimpleExternalResource]? { + findResourcesForCallsCount += 1 + findResourcesForReceivedUuid = uuid + findResourcesForReceivedInvocations.append(uuid) + if let findResourcesForClosure = findResourcesForClosure { + return findResourcesForClosure(uuid) } else { - return findResourcesForContextReturnValue + return findResourcesForReturnValue } } //MARK: - insertItems @@ -1329,7 +1329,6 @@ class PlayerManagerProtocolMock: PlayerManagerProtocol { } var underlyingPlayerIsLoadingURL: Bool! var syncProgressDelegate: PlaybackSyncProgressDelegate? - var storedConnection: JellyfinConnectionData? //MARK: - load var loadAutoplayCallsCount = 0 diff --git a/BookPlayer/Import/ImportManager.swift b/BookPlayer/Import/ImportManager.swift index 1765bc57b..59af679b3 100644 --- a/BookPlayer/Import/ImportManager.swift +++ b/BookPlayer/Import/ImportManager.swift @@ -163,7 +163,7 @@ final class ImportManager: ObservableObject { return true } - if self.libraryService.findResource(for: externalResource.providerId, providerName: externalResource.providerName, context: nil) != nil { + if self.libraryService.findResource(for: externalResource.providerId, providerName: externalResource.providerName) != nil { return true } diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index bb092e808..87db9f7a8 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -78,10 +78,12 @@ struct BookView: View { .font(.caption) } } - Text(verbatim: item.details) - .foregroundStyle(theme.secondaryColor) - .bpFont(.caption) } + // Outside the if-let: the author must render even when the item has no + // external resources (nil for locally-imported books on some construction paths). + Text(verbatim: item.details) + .foregroundStyle(theme.secondaryColor) + .bpFont(.caption) } Text(verbatim: item.durationFormatted) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 0c93fad85..a76ad5414 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -76,7 +76,6 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { @Published var currentItem: PlayableItem? @Published var currentSpeed: Float = 1.0 - var storedConnection: JellyfinConnectionData? var nowPlayingInfo = [String: Any]() private let queue = OperationQueue() diff --git a/BookPlayer/Player/PlayerManagerProtocol.swift b/BookPlayer/Player/PlayerManagerProtocol.swift index 9801bff2a..c14e93da9 100644 --- a/BookPlayer/Player/PlayerManagerProtocol.swift +++ b/BookPlayer/Player/PlayerManagerProtocol.swift @@ -20,7 +20,6 @@ public protocol PlayerManagerProtocol: AnyObject { var isPlaying: Bool { get } var playerIsLoadingURL: Bool { get } var syncProgressDelegate: PlaybackSyncProgressDelegate? { get set } - var storedConnection: JellyfinConnectionData? { get set } func load(_ item: PlayableItem, autoplay: Bool) func awaitCurrentLoad() async diff --git a/BookPlayer/Player/Views/DynamicWaveLoadingView.swift b/BookPlayer/Player/Views/DynamicWaveLoadingView.swift index f8e26110c..08f28fd8c 100644 --- a/BookPlayer/Player/Views/DynamicWaveLoadingView.swift +++ b/BookPlayer/Player/Views/DynamicWaveLoadingView.swift @@ -9,6 +9,7 @@ import SwiftUI struct DynamicWaveLoadingView: View { + // VoiceOver: announce the buffering state instead of nothing. // Controls the fade in/out of the background and wave @State private var isPulsing = false @@ -37,6 +38,8 @@ struct DynamicWaveLoadingView: View { } .opacity(isPulsing ? 1.0 : 0.0) // Fades completely out } + .accessibilityElement(children: .ignore) + .accessibilityLabel("loading_title".localized) .task { do { // This loop runs continuously as long as the view exists diff --git a/BookPlayer/Profile/Profile/ProfileCardSectionView.swift b/BookPlayer/Profile/Profile/ProfileCardSectionView.swift index f4966e41b..f46423337 100644 --- a/BookPlayer/Profile/Profile/ProfileCardSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileCardSectionView.swift @@ -18,7 +18,7 @@ struct ProfileCardSectionView: View { var body: some View { ThemedSection { Button(action: action) { - ProfileCardView(email: accountService.account.email, sub: accountService.accessLevel.rawValue, subColor: theme.secondarySystemBackgroundColor) + ProfileCardView(email: accountService.account.email, sub: accountService.accessLevel.localizedTitle, subColor: theme.secondarySystemBackgroundColor) } } } diff --git a/BookPlayer/Utils/Extensions/ExternalResourceProvider+Icon.swift b/BookPlayer/Utils/Extensions/ExternalResourceProvider+Icon.swift new file mode 100644 index 000000000..e9dc14ebf --- /dev/null +++ b/BookPlayer/Utils/Extensions/ExternalResourceProvider+Icon.swift @@ -0,0 +1,24 @@ +// +// ExternalResourceProvider+Icon.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import SwiftUI + +extension ExternalResource.ProviderName { + /// UI concern kept in the app target: putting an ImageResource on the Shared CoreData enum + /// would couple both framework targets to the app's asset catalog. + var icon: ImageResource { + switch self { + case .jellyfin: + return .jellyfinIcon + case .hardcover: + return .plusImageAppIcons + case .audiobookshelf: + return .audiobookshelfIcon + } + } +} diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index a6a945408..a86e989e6 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -558,3 +558,8 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "external_sync_benefit_sync_subtitle" = "Your listening progress stays perfectly synced with your server and across all your devices."; "external_sync_info_title" = "Stream & Sync"; "queued_tasks_title" = "Queued Tasks"; +"subscription_tier_free_title" = "Free"; +"subscription_tier_plus_title" = "Plus"; +"subscription_tier_lite_title" = "Lite"; +"subscription_tier_pro_title" = "Pro"; +"loading_title" = "Loading"; diff --git a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift index d56853bad..4cae5af95 100644 --- a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift +++ b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift @@ -64,7 +64,6 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { @Published private(set) var currentPlaybackTime: TimeInterval = 0 @Published var error: Error? - var storedConnection: JellyfinConnectionData? var nowPlayingInfo = [String: Any]() private let queue = OperationQueue() diff --git a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift index 247d09490..ec5050593 100644 --- a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift +++ b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift @@ -22,15 +22,5 @@ extension ExternalResource { case hardcover case audiobookshelf - public var icon: ImageResource { - switch self { - case .jellyfin: - return .jellyfinIcon - case .hardcover: - return .plusImageAppIcons - case .audiobookshelf: - return .audiobookshelfIcon - } - } } } diff --git a/Shared/Integrations/WebAuthenticating.swift b/Shared/Integrations/WebAuthenticating.swift index bdb39f943..44fadb960 100644 --- a/Shared/Integrations/WebAuthenticating.swift +++ b/Shared/Integrations/WebAuthenticating.swift @@ -131,20 +131,13 @@ public final class WebAuthenticationSession: NSObject, WebAuthenticating, BPLogg /// The only window we'll present from: one belonging to a foreground-active scene, which is what /// `ASWebAuthenticationSession` documents as the requirement for a valid anchor. + /// Injected by the APP at startup: `UIApplication.shared` is statically unavailable in + /// this extension-safe framework, and reaching it via KVC string lookup risks App Store + /// static-analysis rejections. SSO only ever runs in the app process, which owns windows. + public static var foregroundWindowProvider: (@MainActor () -> UIWindow?)? + private static func foregroundWindow() -> UIWindow? { - // `UIApplication.shared` is statically unavailable here: BookPlayerKit compiles - // extension-safe (it links into the widgets/share/intents extensions). This flow only ever - // runs in the app process — SSO is user-driven UI — so reach the shared application - // dynamically; in an extension the lookup simply returns nil and the caller fails the - // handshake instead of crashing. - guard let app = UIApplication.value(forKeyPath: "sharedApplication") as? UIApplication else { - return nil - } - let scenes = app.connectedScenes.compactMap { $0 as? UIWindowScene } - guard let scene = scenes.first(where: { $0.activationState == .foregroundActive }) else { - return nil - } - return scene.keyWindow ?? scene.windows.first + foregroundWindowProvider?() } } diff --git a/Shared/Services/Account/AccessLevel_tmp.txt b/Shared/Services/Account/AccessLevel_tmp.txt new file mode 100644 index 000000000..e69de29bb diff --git a/Shared/Services/Account/AccountService.swift b/Shared/Services/Account/AccountService.swift index c58cd6254..57216423f 100644 --- a/Shared/Services/Account/AccountService.swift +++ b/Shared/Services/Account/AccountService.swift @@ -31,6 +31,16 @@ public enum AccessLevel: String, CaseIterable, Identifiable { case free, plus, lite, pro public var id: String { rawValue } + + /// User-facing tier name — the raw enum value is an implementation detail and never localized. + public var localizedTitle: String { + switch self { + case .free: return "subscription_tier_free_title".localized + case .plus: return "subscription_tier_plus_title".localized + case .lite: return "subscription_tier_lite_title".localized + case .pro: return "subscription_tier_pro_title".localized + } + } } extension AccountError: LocalizedError { diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift index 87eeb5658..b29f70137 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift @@ -76,6 +76,7 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog tasksContainer.tasks.removeAll(where: { $0.id == reference.id }) modelContext.delete(reference) try? modelContext.save() + tasksDataManager.notifyTasksChanged(context: modelContext) continue } diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index ea2efdc20..b567922fd 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -137,7 +137,7 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.didSucceed = false self.finish() - } else if let http = self.currentUploadTask?.response as? HTTPURLResponse, + } else if let http = task.response as? HTTPURLResponse, !(200...299).contains(http.statusCode) { // error == nil is NOT success: the background delegate doesn't surface HTTP // failures as errors, so a rejected PUT (expired presigned URL, 403) lands here. @@ -177,6 +177,11 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { cellularDataObserver?.invalidate() progressSubscriber?.cancel() completionSubscriber?.cancel() + // A cancelled mid-flight upload leaks its temp hard link (only the success branch + // cleans up) — same temp-dir guard so the user's real file is never touched. + if fileURL.path.hasPrefix(FileManager.default.temporaryDirectory.path) { + try? FileManager.default.removeItem(at: fileURL) + } // The completion subscriber (which would have called finish()) was just torn down — // without this, an operation cancelled mid-flight stays .executing forever and its // OperationQueue slot is never reclaimed. diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index 966b1d304..5cdd1dfac 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -223,7 +223,7 @@ extension LibraryService: LibrarySyncProtocol { } } - if let allExternalItems = self.findResources(for: storedItem.uuid, context: context), + if let allExternalItems = self.findResourceEntities(for: storedItem.uuid, context: context), allExternalItems.count > storedItem.resourcesArray.count { let allSet = Set(allExternalItems) let keepSet = Set(storedItem.resourcesArray) @@ -246,7 +246,7 @@ extension LibraryService: LibrarySyncProtocol { return await withCheckedContinuation { continuation in let context = dataManager.getBackgroundContext() context.perform { [unowned self, context] in - let externalResource = self.findResource(for: item.providerId, providerName: item.providerName, context: context) + let externalResource = self.findResourceEntity(for: item.providerId, providerName: item.providerName, context: context) if let externalResource { externalResource.syncStatus = item.syncStatus externalResource.processedFile = item.processedFile @@ -404,6 +404,11 @@ extension LibraryService: LibrarySyncProtocol { } func parseSyncableItems(from results: [[String: Any]]?, context: NSManagedObjectContext) -> [SyncableItem]? { + // One grouped fetch for all rows — a per-item fetch here is an N+1 on the sync path. + let resourcesByUuid = findResourcesGrouped( + forUuids: results?.compactMap { $0["uuid"] as? String } ?? [], + context: context + ) return results?.compactMap({ dictionary -> SyncableItem? in guard let uuid = dictionary["uuid"] as? String, @@ -427,7 +432,7 @@ extension LibraryService: LibrarySyncProtocol { lastPlayDateTimestamp = lastPlayDate.timeIntervalSince1970 } - let externalResources = self.findResources(for: uuid, context: context) + let externalResources = resourcesByUuid[uuid] return SyncableItem( relativePath: relativePath, diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 63215f72a..5b4df397b 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -177,9 +177,10 @@ public protocol LibraryServiceProtocol: AnyObject { /// Returns the item's external resources as lightweight values. func getExternalResources(for relativePath: String) async -> [SimpleExternalResource] - func findResource(for providerId: String, providerName: String?, context: NSManagedObjectContext?) -> ExternalResource? + /// Snapshot, not a managed object: services never hand NSManagedObjects out (repo invariant). + func findResource(for providerId: String, providerName: String?) -> SimpleExternalResource? - func findResources(for uuid: String, context: NSManagedObjectContext?) -> [ExternalResource]? + func findResources(for uuid: String) -> [SimpleExternalResource]? // fromResources (not from:): overloading insertItems(from: [URL]) collides in the // Sourcery-generated mock property names. @@ -415,7 +416,7 @@ public final class LibraryService: LibraryServiceProtocol, BPLogger, @unchecked /// One grouped fetch for every row's external resources — a per-row fetch here is an /// N+1 on the main library list path. - private func findResourcesGrouped(forUuids uuids: [String], context: NSManagedObjectContext) -> [String: [ExternalResource]] { + func findResourcesGrouped(forUuids uuids: [String], context: NSManagedObjectContext) -> [String: [ExternalResource]] { guard !uuids.isEmpty else { return [:] } let fetch: NSFetchRequest = ExternalResource.fetchRequest() fetch.predicate = NSPredicate(format: "%K IN %@", #keyPath(ExternalResource.libraryItem.uuid), uuids) @@ -2859,7 +2860,9 @@ extension LibraryService { } extension LibraryService { - public func findResource(for providerId: String, providerName: String? = nil, context: NSManagedObjectContext? = nil) -> ExternalResource? { + /// Managed-object variant for same-module mutation/diffing paths ONLY — never exposed + /// on the protocol. + func findResourceEntity(for providerId: String, providerName: String? = nil, context: NSManagedObjectContext? = nil) -> ExternalResource? { let fetch: NSFetchRequest = ExternalResource.fetchRequest() // Scope by provider when known: provider item ids are only unique per provider, and a // Jellyfin id colliding with an ABS id must not resolve/mutate the other's resource. @@ -2875,7 +2878,7 @@ extension LibraryService { return result?.first } - public func findResources(for uuid: String, context: NSManagedObjectContext? = nil) -> [ExternalResource]? { + func findResourceEntities(for uuid: String, context: NSManagedObjectContext? = nil) -> [ExternalResource]? { let fetch: NSFetchRequest = ExternalResource.fetchRequest() fetch.predicate = NSPredicate(format: "%K == %@", #keyPath(ExternalResource.libraryItem.uuid), uuid) let context = context ?? self.dataManager.getContext() @@ -2884,6 +2887,27 @@ extension LibraryService { return result } + + public func findResource(for providerId: String, providerName: String?) -> SimpleExternalResource? { + let context = dataManager.getContext() + var snapshot: SimpleExternalResource? + context.performAndWait { + if let entity = findResourceEntity(for: providerId, providerName: providerName, context: context) { + snapshot = SimpleExternalResource(from: entity, ignoreLibraryItem: true) + } + } + return snapshot + } + + public func findResources(for uuid: String) -> [SimpleExternalResource]? { + let context = dataManager.getContext() + var snapshots: [SimpleExternalResource]? + context.performAndWait { + snapshots = findResourceEntities(for: uuid, context: context)? + .map { SimpleExternalResource(from: $0, ignoreLibraryItem: true) } + } + return snapshots + } public func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) { let remoteKeys = Array(remoteItemsDictionary.keys) diff --git a/Shared/Services/Sync/LibraryAPI.swift b/Shared/Services/Sync/LibraryAPI.swift index ad572ad6a..13775e651 100644 --- a/Shared/Services/Sync/LibraryAPI.swift +++ b/Shared/Services/Sync/LibraryAPI.swift @@ -11,17 +11,17 @@ import Foundation public enum LibraryAPI { case syncedIdentifiers case contents(path: String) - case upload(params: [String: Any]) //check + case upload(params: [String: Any]) case externalResource(params: [String: Any]) - case update(params: [String: Any]) //check + case update(params: [String: Any]) case move(origin: String, destination: String, uuid: String) case renameFolder(path: String, name: String, uuid: String) case remoteFileURL(path: String, uuid: String?) case remoteContentsURL(path: String, uuid: String?) - case delete(path: String, uuid: String) //check + case delete(path: String, uuid: String) case shallowDelete(path: String, uuid: String) case bookmarks(path: String, uuid: String?) - case setBookmark(path: String, note: String?, time: Double, isActive: Bool, uuid: String) //check + case setBookmark(path: String, note: String?, time: Double, isActive: Bool, uuid: String) case uploadArtwork(path: String, filename: String, uploaded: Bool?, uuid: String) case matchUuids(uuidsDictionary: [String: String]) case externalResourceToDownload(uuid: String, uploaded: Bool) diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index cc6e02298..d40199774 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -45,6 +45,19 @@ public final class TasksDataManager: BPLogger { // written by a schema revision the migration plan no longer knows (dev builds between // schema edits hit exactly this). The task queue is recoverable state: queued work is // re-derivable, a crashed app is not. Destroy and recreate rather than trap forever. + // ONLY for store-compatibility errors though: a bug thrown by the custom v2ToV3 + // migration stage must keep crashing (the store is healthy — nuking it would silently + // discard queued tasks a code fix could still migrate). + let cocoaCode = ((error as NSError).underlyingErrors.first as? NSError)?.code ?? (error as NSError).code + let incompatibleStoreCodes: Set = [ + 134504, // Cannot use staged migration with an unknown model version + 134100, // The model used to open the store is incompatible + 134110, // migration failed (persistent store migration) + 134130, // persistent history token / store mismatch + ] + guard incompatibleStoreCodes.contains(cocoaCode) else { + fatalError("Sync-tasks container failed to load: \(error)") + } Self.logger.error("Sync-tasks store unloadable (\(error)); recreating: \(storeURL.path)") let fm = FileManager.default for suffix in ["", "-wal", "-shm"] { From 0f3571cf4fca7601f03952dac94d76a687bfca73 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 23:11:57 -0500 Subject: [PATCH 021/172] fix: address review feedback (round 13) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Mid-load cancellation throws the repo's own cancelledTask error: Swift's CancellationError fell through to the generic catch and popped a spurious alert on the perfectly normal tap-another-book-mid-load path. - The buffering overlay is driven only by remote/streamed loads — a fresh local AVPlayerItem also emits the initial .unknown, flashing the wave over instantly-ready local playback. - PlayableItem.id falls back to relativePath for legacy placeholder uuids so old watch payloads can't collide as Identifiable ids. - Removed the unused concurrenceService injection from PlayerViewModel (property, init parameter and call site). - A cancelled OLD upload task's completion no longer invalidates the replacement attempt's cellular observer; invalidation happens in the real terminal branches (failure, rejection, success). - ExternalImportView uses the project's bpFont Dynamic Type styles instead of fixed system font sizes. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Import/ExternalSource/ExternalImportView.swift | 11 ++++++----- BookPlayer/MainView.swift | 1 - BookPlayer/Player/PlayerManager.swift | 11 +++++++++-- BookPlayer/Player/ViewModels/PlayerViewModel.swift | 5 +---- Shared/CoreData/Lightweight-Models/PlayableItem.swift | 3 +++ .../Services/ConcurrentSync/FileUploadOperation.swift | 11 +++++++---- 6 files changed, 26 insertions(+), 16 deletions(-) diff --git a/BookPlayer/Import/ExternalSource/ExternalImportView.swift b/BookPlayer/Import/ExternalSource/ExternalImportView.swift index ee3772aa6..d197d1205 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportView.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportView.swift @@ -26,7 +26,7 @@ struct ExternalImportView: View { } label: { Image(systemName: "xmark") .accessibilityLabel("cancel_button".localized) - .font(.system(size: 16, weight: .semibold)) + .bpFont(.title) .foregroundColor(theme.primaryColor) .frame(width: 44, height: 44) .background( @@ -44,7 +44,7 @@ struct ExternalImportView: View { } label: { Image(systemName: "checkmark") .accessibilityLabel("import_button".localized) - .font(.system(size: 16, weight: .semibold)) + .bpFont(.title) .foregroundColor(theme.primaryColor) .frame(width: 44, height: 44) .background( @@ -56,7 +56,8 @@ struct ExternalImportView: View { // Headers Text("import_title".localized) - .font(.system(size: 34, weight: .bold)) + .bpFont(.titleStory) + .fontWeight(.bold) .foregroundColor(theme.primaryColor) Text("import_warning_description".localized) @@ -81,7 +82,7 @@ struct ExternalImportView: View { Image(systemName: "minus.circle.fill") .accessibilityLabel("delete_button".localized) .foregroundColor(.red) - .font(.system(size: 20)) + .bpFont(.titleLarge) } // Waveform Icon @@ -91,7 +92,7 @@ struct ExternalImportView: View { // File Name Text(resource.libraryItem?.originalFileName ?? "voiceover_unknown_title".localized) .foregroundColor(theme.primaryColor) - .font(.system(size: 14)) + .bpFont(.footnote) .lineLimit(1) Spacer() diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index ec82fc507..ad2905883 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -106,7 +106,6 @@ struct MainView: View { playbackService: playbackService, playerManager: playerManager, syncService: syncService, - concurrenceService: concurrenceService ) } .presentationBackground(.clear) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index a76ad5414..d69ea7b6d 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -319,7 +319,10 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { await libraryService.loadChaptersIfNeeded(relativePath: chapter.relativePath, asset: asset) // The awaits above can outlive this load (user tapped another book) — applying the // refreshed item afterwards would clobber the newer load's state. - try Task.checkCancellation() + // The repo's own cancellation error: Swift's CancellationError would fall through + // to the GENERIC catch in loadChapterTask and pop a spurious alert on the very + // normal tap-another-book-mid-load path. + if Task.isCancelled { throw BookPlayerError.cancelledTask } if let libraryItem = libraryService.getSimpleItem(with: chapter.relativePath), let updatedItem = try? playbackService.getPlayableItem(from: libraryItem) { currentItem = updatedItem @@ -360,10 +363,14 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { return } + // Local files attach ready almost instantly but still emit the initial .unknown — + // only streamed/remote loads should drive the buffering overlay. + let isRemoteLoad = (currentItem?.currentChapter?.externalUrl != nil) + || (currentItem?.currentChapter?.remoteURL != nil) playerItemStatusSubscription?.cancel() playerItemStatusSubscription = playerItem.publisher(for: \.status) .sink { [weak self] status in - guard let self = self else { return } + guard let self = self, isRemoteLoad else { return } switch status { case .readyToPlay: diff --git a/BookPlayer/Player/ViewModels/PlayerViewModel.swift b/BookPlayer/Player/ViewModels/PlayerViewModel.swift index 5cffec92e..93cfd5313 100644 --- a/BookPlayer/Player/ViewModels/PlayerViewModel.swift +++ b/BookPlayer/Player/ViewModels/PlayerViewModel.swift @@ -48,7 +48,6 @@ final class PlayerViewModel: ObservableObject { let playbackService: PlaybackServiceProtocol let playerManager: PlayerManager let syncService: SyncServiceProtocol - let concurrenceService: ConcurrenceServiceProtocol private var chapterBeforeSliderValueChange: PlayableChapter? private var isSliderDragging = false @@ -110,14 +109,12 @@ final class PlayerViewModel: ObservableObject { libraryService: LibraryService, playbackService: PlaybackService, playerManager: PlayerManager, - syncService: SyncService, - concurrenceService: ConcurrenceService + syncService: SyncService ) { self.libraryService = libraryService self.playbackService = playbackService self.playerManager = playerManager self.syncService = syncService - self.concurrenceService = concurrenceService let sharedDefaults = UserDefaults.sharedDefaults self.prefersChapterContext = sharedDefaults.bool(forKey: Constants.UserDefaults.chapterContextEnabled) self.prefersRemainingTime = sharedDefaults.bool(forKey: Constants.UserDefaults.remainingTimeEnabled) diff --git a/Shared/CoreData/Lightweight-Models/PlayableItem.swift b/Shared/CoreData/Lightweight-Models/PlayableItem.swift index b65564c69..5f0856d85 100644 --- a/Shared/CoreData/Lightweight-Models/PlayableItem.swift +++ b/Shared/CoreData/Lightweight-Models/PlayableItem.swift @@ -11,6 +11,9 @@ import Foundation public final class PlayableItem: NSObject, Identifiable { public var id: String { + // Legacy watch payloads predating the uuid field decode to the shared placeholder — + // colliding Identifiable ids break SwiftUI lists, so fall back to the path. + if uuid == Constants.uuidPlaceholder { return relativePath } return uuid } public let title: String diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index b567922fd..b666146a1 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -122,23 +122,25 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { // CRITICAL: Ensure this completion event belongs to this specific task guard task.taskDescription == self.uuid else { return } - // We've hit a terminal state for this attempt, so clean up the KVO - self.cellularDataObserver?.invalidate() - if let nserror = error as? NSError, nserror.domain == NSURLErrorDomain, nserror.code == NSURLErrorCancelled { + // Deliberately NOT invalidating the cellular observer here: this cancelled + // completion belongs to the OLD task after a mid-flight cellular toggle — the + // replacement attempt just re-bound a fresh observer that must stay alive. // Do nothing! The cellular KVO observer cancelled this task // and is already spinning up a new one via startUploadTask(). } else if let error = error { - // Actual Failure + // Actual Failure — terminal for this operation, so the KVO can go. + self.cellularDataObserver?.invalidate() Self.logger.error("Upload failed for \(self.uuid): \(error)") self.didSucceed = false self.finish() } else if let http = task.response as? HTTPURLResponse, !(200...299).contains(http.statusCode) { + self.cellularDataObserver?.invalidate() // error == nil is NOT success: the background delegate doesn't surface HTTP // failures as errors, so a rejected PUT (expired presigned URL, 403) lands here. // A 4xx is PERMANENT for this task — its presigned URL is frozen in the persisted @@ -150,6 +152,7 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.didSucceed = (400...499).contains(http.statusCode) self.finish() } else { + self.cellularDataObserver?.invalidate() // Success! Clean up the temp hard link — and ONLY the temp hard link: when the // link was never created, fileURL falls back to the user's REAL audiobook in the // Processed folder, and deleting that is data loss. From c68a2f4e882fc8862fd818a2b177086fbce6edae Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 23:38:09 -0500 Subject: [PATCH 022/172] fix: address review feedback (round 14) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - The toolbar "download all" action outside edit mode uses the full item set: the non-lite branch pointed at the (empty) selection, so the invitation card showed a count of 0 and confirmed a no-op download. - Progress pushes against a revoked/expired media-server token are consumed instead of retrying forever — re-auth is a user action in Settings, and a failed task re-enqueues every ~5s indefinitely. - The remote-resume check task captures self weakly and clears its activeTasks entry when it finishes. - The store-recovery allowlist drops the generic migration-failure codes (134110/134130) per its own rationale: a bug in the custom v2ToV3 stage must keep crashing rather than silently nuking queued tasks. - VoiceOver label on the queued-tasks info button; CLAUDE.md's CoreServices invariant updated to the new 11-service reality. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Base.lproj/Localizable.strings | 1 + BookPlayer/Library/ItemList/ItemListViewModel.swift | 4 +++- .../Library Screen/IntegrationLibraryView.swift | 4 +++- .../Profile/Profile/ConcurrentSyncTasksView.swift | 1 + BookPlayer/en.lproj/Localizable.strings | 1 + CLAUDE.md | 3 ++- .../ExternalUpdateProgressOperation.swift | 13 ++++++++++--- Shared/SwiftData/TasksDataManager.swift | 5 +++-- 8 files changed, 24 insertions(+), 8 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 9b9a30cb0..8e97bc33b 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -564,3 +564,4 @@ We're working hard on providing a seamless experience, if possible, please conta "subscription_tier_lite_title" = "Lite"; "subscription_tier_pro_title" = "Pro"; "loading_title" = "Loading"; +"info_title" = "Info"; diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index 7d61b3998..295780a37 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -916,7 +916,9 @@ extension ItemListViewModel: PlaybackSyncProgressDelegate { func fetchExternalResource(_ playableItem: PlayableItem) async { activeTasks[playableItem.uuid]?.cancel() - activeTasks[playableItem.uuid] = Task { + activeTasks[playableItem.uuid] = Task { [weak self] in + guard let self else { return } + defer { self.activeTasks[playableItem.uuid] = nil } let lastPlayDate = playableItem.lastPlayDate ?? Date.distantPast let jellyfinService = JellyfinConnectionService() jellyfinService.setup() diff --git a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift index 95a8bc319..1e00c905d 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift @@ -135,7 +135,9 @@ struct IntegrationLibraryView< if viewModel.accountService.hasLiteEnabled() { viewModel.handleImportItems(useSelectedItems: false) } else { - viewModel.useSelectedItems = true + // This toolbar action fires OUTSIDE edit mode where the selection is empty — + // it always means "everything", same as the lite branch above. + viewModel.useSelectedItems = false withAnimation { viewModel.showingDownloadConfirmation = true } } } label: { diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift index 72592b0e9..31bf731c7 100644 --- a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift @@ -105,6 +105,7 @@ struct ConcurrentSyncTasksView: View { } label: { Image(systemName: "info.circle") } + .accessibilityLabel("info_title".localized) .foregroundStyle(theme.linkColor) } } diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index a86e989e6..9b26f6355 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -563,3 +563,4 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "subscription_tier_lite_title" = "Lite"; "subscription_tier_pro_title" = "Pro"; "loading_title" = "Loading"; +"info_title" = "Info"; diff --git a/CLAUDE.md b/CLAUDE.md index 73b18c6a4..5eaa6958c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -121,7 +121,8 @@ first. Reordering boot risks a launch crash. - `@MainActor final class AppServices` with `static let shared` + `private init()`. Owns the async `setupCoreServicesTask`, the `DatabaseInitializer`, and a shared `PlayerState`. -- `CoreServices` (`BookPlayer/Utils/CoreServices.swift`) is a struct of exactly **10 services**: `accountService`, +- `CoreServices` (`BookPlayer/Utils/CoreServices.swift`) is a struct of exactly **11 services**: `accountService`, + `concurrenceService`, `dataManager`, `hardcoverService`, `libraryService`, `playbackService`, `playerLoaderService`, `playerManager`, `preferencesService` (`PreferencesSyncService`), `syncService`, `watchService` (`PhoneWatchConnectivityService`). - **Two-step `init()` + `setup(...)` DI pattern:** services are created empty then configured, e.g. diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift index 8b8c49c1e..e4379bedc 100644 --- a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift +++ b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift @@ -54,9 +54,16 @@ class ExternalUpdateProgressOperation: AsyncOperation, BPLogger, @unchecked Send self.didSucceed = true } catch { - // If it throws, execution instantly jumps here. - Self.logger.error("External progress push failed: \(error)") - self.didSucceed = false + if (error as? IntegrationError)?.isSessionExpired == true { + // Revoked/expired media-server token: retrying can never succeed until the user + // re-authenticates in Settings, and a failed task re-enqueues forever — consume + // the push instead of hot-looping the provider queue in the background. + Self.logger.error("External progress push dropped (session expired): \(error)") + self.didSucceed = true + } else { + Self.logger.error("External progress push failed: \(error)") + self.didSucceed = false + } } } } diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index d40199774..a87631429 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -49,11 +49,12 @@ public final class TasksDataManager: BPLogger { // migration stage must keep crashing (the store is healthy — nuking it would silently // discard queued tasks a code fix could still migrate). let cocoaCode = ((error as NSError).underlyingErrors.first as? NSError)?.code ?? (error as NSError).code + // ONLY unknown/incompatible-model codes: the generic migration-failure range + // (134110 etc.) can surface a BUG in the custom v2ToV3 stage, and nuking the store + // there would silently discard queued tasks a code fix could still migrate. let incompatibleStoreCodes: Set = [ 134504, // Cannot use staged migration with an unknown model version 134100, // The model used to open the store is incompatible - 134110, // migration failed (persistent store migration) - 134130, // persistent history token / store mismatch ] guard incompatibleStoreCodes.contains(cocoaCode) else { fatalError("Sync-tasks container failed to load: \(error)") From 1bea495b89cc65da741c76a70c6d2a50d3ac0ab4 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 23 Aug 2026 23:56:59 -0500 Subject: [PATCH 023/172] fix: address review feedback (round 15) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Logout also cancels IN-FLIGHT operations: resetAllJobs wipes the persisted rows, but a running upload kept going and would confirm under the next signed-in account's token. - External books' relativePath is scoped by provider item id — the title-derived originalFileName collided as the library's primary key for two same-titled books. - handleSyncFromExternalResouce is @MainActor (it mutates viewContext objects; safety previously rested on its single caller's isolation). - The cancelled resume-check task no longer clobbers its replacement's activeTasks entry (only the live task cleans up). - Per-element unique Identifiable ids for virtual-import batches — a shared epoch-second collided every id created in the same second. - The timeControl-driven buffering overlay is gated to remote loads, matching its item-status sibling: a stalled or seeking local book must not flash the streaming overlay. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library Screen/AudiobookShelfLibraryViewModel.swift | 2 +- BookPlayer/Generated/AutoMockable.generated.swift | 1 + .../Details/JellyfinAudiobookDetailsViewModel.swift | 2 +- .../Library Screen/JellyfinLibraryViewModel.swift | 6 +++--- BookPlayer/Library/ItemList/ItemListViewModel.swift | 4 +++- BookPlayer/Player/PlayerManager.swift | 5 +++++ Shared/Services/ConcurrentSync/ConcurrenceService.swift | 5 ++++- Shared/Services/LibraryService.swift | 8 +++++--- 8 files changed, 23 insertions(+), 10 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 239023721..7a18a3267 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -275,7 +275,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, ) let externalItem = SimpleExternalResource( - id: Int(Date().timeIntervalSince1970), + id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch providerName: ExternalResource.ProviderName.audiobookshelf.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index 5ef7bd1d2..4c0eb3f15 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -1148,6 +1148,7 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedRemoteItemsDictionary: [String: JellyfinLibraryItem]? var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedInvocations: [[String: JellyfinLibraryItem]] = [] var handleSyncFromExternalResouceRemoteItemsDictionaryClosure: (([String: JellyfinLibraryItem]) -> Void)? + @MainActor func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) { handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount += 1 handleSyncFromExternalResouceRemoteItemsDictionaryReceivedRemoteItemsDictionary = remoteItemsDictionary diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 598116242..cbde93dbd 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -115,7 +115,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { ) let externalItem = SimpleExternalResource( - id: Int(Date().timeIntervalSince1970), + id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch providerName: ExternalResource.ProviderName.jellyfin.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index e2cd3cdb5..ee4f4da6d 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -408,7 +408,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog ) let externalItem = SimpleExternalResource( - id: Int(Date().timeIntervalSince1970), + id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch providerName: ExternalResource.ProviderName.jellyfin.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, @@ -624,7 +624,7 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B ) let externalItem = SimpleExternalResource( - id: Int(Date().timeIntervalSince1970), + id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch providerName: ExternalResource.ProviderName.jellyfin.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, @@ -854,7 +854,7 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, ) let externalItem = SimpleExternalResource( - id: Int(Date().timeIntervalSince1970), + id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch providerName: ExternalResource.ProviderName.jellyfin.rawValue, providerId: item.id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index 295780a37..80be8514a 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -918,7 +918,9 @@ extension ItemListViewModel: PlaybackSyncProgressDelegate { activeTasks[playableItem.uuid] = Task { [weak self] in guard let self else { return } - defer { self.activeTasks[playableItem.uuid] = nil } + // Only the LIVE task cleans its entry: the cancelled predecessor's defer runs after + // the replacement was stored and would clobber it. + defer { if !Task.isCancelled { self.activeTasks[playableItem.uuid] = nil } } let lastPlayDate = playableItem.lastPlayDate ?? Date.distantPast let jellyfinService = JellyfinConnectionService() jellyfinService.setup() diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index d69ea7b6d..e0fd199c5 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -199,6 +199,11 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { playerLoadingStateSubscription = player.publisher(for: \.timeControlStatus) .sink { [weak self, weak player] status in guard let self = self, let player = player else { return } + // Same remote-only gate as the item-status observer: a stalled/seeking LOCAL book + // must not flash the streaming buffering overlay. + let isRemoteLoad = (self.currentItem?.currentChapter?.externalUrl != nil) + || (self.currentItem?.currentChapter?.remoteURL != nil) + guard isRemoteLoad else { return } switch status { case .waitingToPlayAtSpecifiedRate: diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 401925e37..946009129 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -106,11 +106,14 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { func bindObservers() { NotificationCenter.default.publisher(for: .logout, object: nil) - .sink(receiveValue: { _ in + .sink(receiveValue: { [weak self] _ in UserDefaults.standard.set( false, forKey: Constants.UserDefaults.hasScheduledLibraryContents ) + // Persisted rows are wiped by resetAllJobs, but an IN-FLIGHT operation would keep + // running (and uploading) under the next signed-in account's token without this. + self?.operationQueue.cancelAllOperations() }) .store(in: &disposeBag) diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 5b4df397b..ff8f75b1f 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -186,7 +186,7 @@ public protocol LibraryServiceProtocol: AnyObject { // Sourcery-generated mock property names. @MainActor func insertItems(fromResources resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] - func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) + @MainActor func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) } // swiftlint:disable force_cast @@ -1813,7 +1813,9 @@ extension LibraryService { let entity = NSEntityDescription.entity(forEntityName: "Book", in: context)! let book = Book(entity: entity, insertInto: context) - book.relativePath = simpleItem.originalFileName + // relativePath is the primary key of the library — two external books sharing a title + // (originalFileName is title-derived) must not collide, so scope by provider item id. + book.relativePath = "\(externalResource.providerId)-\(simpleItem.originalFileName)" book.remoteURL = nil book.artworkURL = simpleItem.artworkURL let title = simpleItem.title @@ -2909,7 +2911,7 @@ extension LibraryService { return snapshots } - public func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) { + @MainActor public func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) { let remoteKeys = Array(remoteItemsDictionary.keys) let fetch: NSFetchRequest = ExternalResource.fetchRequest() From 9a5170888645189cbcf8e81b2487de503bcab74b Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 00:11:56 -0500 Subject: [PATCH 024/172] chore: remove stray empty scratch file Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/Services/Account/AccessLevel_tmp.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Shared/Services/Account/AccessLevel_tmp.txt diff --git a/Shared/Services/Account/AccessLevel_tmp.txt b/Shared/Services/Account/AccessLevel_tmp.txt deleted file mode 100644 index e69de29bb..000000000 From 150e6152a2cf041b8802db2f26dbbfcfea3841da Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 05:43:46 -0500 Subject: [PATCH 025/172] fix: address review feedback (round 16) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Streaming gates use hasStreamingEnabled (pro OR lite) at nine sites: the lite-only check locked PRO subscribers out of streaming from their own media servers — pro is a superset of lite. The two IntegrationLibraryView sites stay lite-vs-pro BRANCHES by design (import-references vs download-locally UX). Implemented as an AccountServiceProtocol extension. - External downloads whose media-server connection can't resolve on this device throw a localized missing-connection error instead of completing silently with zero download tasks (no spinner, no explanation). - getItemReference(with:context:) demoted back to internal — public callers never need the managed-object variant. - The second remotePath force-cast relaxed to match its optional model field. - Decorative empty-state icons use Dynamic-Type-aware sizing. - CLAUDE.md's hasPlusAccess invariant reconciled: plus OR pro OR lite. Acknowledged: the ad-hoc KeychainService construction in the two per-device resolution paths (correct behavior, documented DI deviation) and the lastSyncError read-race (debug-UI-only reader). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift | 2 +- .../AudiobookShelfLibraryViewModel.swift | 2 +- .../AudiobookShelfAudiobookDetailsViewModel.swift | 2 +- BookPlayer/Base.lproj/Localizable.strings | 1 + BookPlayer/Jellyfin/JellyfinRootView.swift | 4 ++-- .../Details/JellyfinAudiobookDetailsViewModel.swift | 2 +- .../Library Screen/JellyfinLibraryViewModel.swift | 6 +++--- .../Profile/Profile/ConcurrentSyncTasksView.swift | 3 ++- BookPlayer/Profile/Profile/QueuedSyncTasksView.swift | 3 ++- BookPlayer/en.lproj/Localizable.strings | 1 + CLAUDE.md | 2 +- Shared/Services/Account/AccountService.swift | 10 ++++++++++ Shared/Services/LibraryService+Sync.swift | 2 +- Shared/Services/Sync/SyncService.swift | 9 +++++++++ Shared/SwiftData/TasksDataManager.swift | 2 +- 15 files changed, 37 insertions(+), 14 deletions(-) diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index 25859646d..2863ae4ce 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -392,7 +392,7 @@ private struct AudiobookShelfTabRoot: View { importManager: importManager ), showSubscribeButton: !accountService.hasSyncEnabled(), - allowStream: accountService.hasLiteEnabled(), + allowStream: accountService.hasStreamingEnabled(), ) { onDismiss() } onStreamTap: { diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 7a18a3267..49ec76039 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -233,7 +233,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, } func handleImportItems(useSelectedItems: Bool) { - if accountService.hasLiteEnabled() { + if accountService.hasStreamingEnabled() { virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) } else { if useSelectedItems { diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index 3dfecfa3d..8c173c753 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -73,7 +73,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc @MainActor func handleImportAudiobook(_ item: AudiobookShelfLibraryItem) throws { - if accountService.hasLiteEnabled() { + if accountService.hasStreamingEnabled() { virtualImportAudiobook(item) } else { try beginDownloadAudiobook(item) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 8e97bc33b..16892be31 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -565,3 +565,4 @@ We're working hard on providing a seamless experience, if possible, please conta "subscription_tier_pro_title" = "Pro"; "loading_title" = "Loading"; "info_title" = "Info"; +"integration_error_missing_connection" = "This book streams from your media server. Connect it in Settings to download or play it."; diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 841de40fb..86587b2c8 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -413,7 +413,7 @@ struct JellyfinTabRoot: View { navigationTitle: item.name ), showSubscribeButton: !accountService.hasSyncEnabled(), - allowStream: accountService.hasLiteEnabled(), + allowStream: accountService.hasStreamingEnabled(), ) { onDismiss() } onStreamTap: { @@ -640,7 +640,7 @@ extension JellyfinTabRoot { navigationTitle: item.name ), showSubscribeButton: !accountService.hasSyncEnabled(), - allowStream: accountService.hasLiteEnabled(), + allowStream: accountService.hasStreamingEnabled(), ) { onDismiss() } onStreamTap: { diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index cbde93dbd..663435b2c 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -78,7 +78,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { @MainActor func handleImportAudiobook(_ item: JellyfinLibraryItem) throws { - if accountService.hasLiteEnabled() { + if accountService.hasStreamingEnabled() { virtualImportAudiobook(item) } else { try beginDownloadAudiobook(item) diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index ee4f4da6d..63ff63bf0 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -312,7 +312,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog @MainActor func handleImportItems(useSelectedItems: Bool) { - if accountService.hasLiteEnabled() { + if accountService.hasStreamingEnabled() { virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) } else { if useSelectedItems { @@ -582,7 +582,7 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B @MainActor func handleImportItems(useSelectedItems: Bool) { - if accountService.hasLiteEnabled() { + if accountService.hasStreamingEnabled() { virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) } else { if useSelectedItems { @@ -812,7 +812,7 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, @MainActor func handleImportItems(useSelectedItems: Bool) { - if accountService.hasLiteEnabled() { + if accountService.hasStreamingEnabled() { virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) } else { if useSelectedItems { diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift index 31bf731c7..6716da8b1 100644 --- a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift @@ -32,7 +32,8 @@ struct ConcurrentSyncTasksView: View { // MARK: - Empty State VStack(spacing: 12) { Image(systemName: "checkmark.icloud") - .font(.system(size: 40)) + .font(.largeTitle) + .imageScale(.large) .foregroundStyle(.secondary) Text("sync_tasks_empty_title".localized) diff --git a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift b/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift index 92980c4a8..633fdd2fd 100644 --- a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift @@ -28,7 +28,8 @@ struct QueuedSyncTasksView: View { // MARK: - Empty State VStack(spacing: 12) { Image(systemName: "checkmark.icloud") - .font(.system(size: 40)) + .font(.largeTitle) + .imageScale(.large) .foregroundStyle(.secondary) Text("sync_tasks_empty_title".localized) diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 9b26f6355..9e2cab885 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -564,3 +564,4 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "subscription_tier_pro_title" = "Pro"; "loading_title" = "Loading"; "info_title" = "Info"; +"integration_error_missing_connection" = "This book streams from your media server. Connect it in Settings to download or play it."; diff --git a/CLAUDE.md b/CLAUDE.md index 5eaa6958c..8fa4e1dcb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -339,7 +339,7 @@ lines). It is the highest-risk file in the app. - RevenueCat entitlements `AccessLevel { free, plus, lite, pro }`. `hasSyncEnabled()` = `pro` OR `lite` active (pro wins when both are held); - `hasPlusAccess()` = `plus` OR `pro` (with a local `donationMade` fallback when cached info is nil). + `hasPlusAccess()` = `plus` OR `pro` OR `lite` (all paid tiers unlock plus perks; local `donationMade` fallback when cached info is nil). - **These are client-side cached RevenueCat reads — UX gating only.** Never let `hasSyncEnabled()`/`isActive` become the sole gate for a server-billed resource; the server validates the entitlement. Purchases are guarded by `AppEnvironment.isPurchaseEnabled` (disabled on TestFlight). diff --git a/Shared/Services/Account/AccountService.swift b/Shared/Services/Account/AccountService.swift index 57216423f..f029588f3 100644 --- a/Shared/Services/Account/AccountService.swift +++ b/Shared/Services/Account/AccountService.swift @@ -578,3 +578,13 @@ public final class AccountService: AccountServiceProtocol { ) } } + + +extension AccountServiceProtocol { + /// Whether media-server STREAMING (virtual imports) is available: the lite tier's headline + /// feature, and pro is a superset of lite — a pro-only subscriber must never lose it. + /// Protocol extension (not a requirement) so the Sourcery mocks need no regeneration. + public func hasStreamingEnabled() -> Bool { + return hasSyncEnabled() + } +} diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index 5cdd1dfac..b386d8d3f 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -522,7 +522,7 @@ extension LibraryService: LibrarySyncProtocol { return snapshot } - public func getItemReference(with relativePath: String, context: NSManagedObjectContext) -> LibraryItem? { + func getItemReference(with relativePath: String, context: NSManagedObjectContext) -> LibraryItem? { let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() fetchRequest.predicate = NSPredicate(format: "%K == %@", #keyPath(LibraryItem.relativePath), relativePath) fetchRequest.fetchLimit = 1 diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index f3b7a5d49..b857697e3 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -462,8 +462,10 @@ public final class SyncService: SyncServiceProtocol, BPLogger { public func downloadRemoteFiles(for item: SimpleLibraryItem) async throws { var remoteURLs: [RemoteFileURL] = [] + var isExternalItem = false if item.type == .book, let external = item.externalResources?.first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) { + isExternalItem = true switch ExternalResource.ProviderName(rawValue: external.providerName) { case .jellyfin: let keychainService = KeychainService() @@ -526,6 +528,13 @@ public final class SyncService: SyncServiceProtocol, BPLogger { } } + // An external item that produced no URL means its media-server connection isn't + // resolvable on this device (deleted / never added) — completing silently with zero + // download tasks strands the user with no spinner and no explanation. + if isExternalItem, remoteURLs.isEmpty { + throw BookPlayerError.runtimeError("integration_error_missing_connection".localized) + } + let bookURLs = remoteURLs.filter({ $0.type == .book }) var tasks = [URLSessionTask]() diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index a87631429..dfdb25267 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -385,7 +385,7 @@ public final class TasksDataManager: BPLogger { id: parameters["id"] as! String, uuid: parameters["uuid"] as! String, filePath: parameters["filePath"] as! String, - remotePath: parameters["remotePath"] as! String + remotePath: parameters["remotePath"] as? String ) context.insert(task) } From ad72e28170997474a8dba1011ac244cac50096fd Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 06:08:36 -0500 Subject: [PATCH 026/172] fix: address review feedback (round 17) - Media-server chapters always stream from their external URL: a forced refresh (the .failed recovery path) was rerouting them to the cloud/S3 presign fetch, which cannot serve an item whose audio lives on the user's server. The fresh external URL comes from the chapter rebuild on reload. - VoiceOver label on the selection-toolbar's icon-only download button. - PlayableChapter.externalUrl is immutable like its sibling fields. - Documented the server contract behind consuming nil-url responses in the pipe upload (lite tier and already-uploaded both answer null deliberately). Rebutted (already fixed, stale re-detections): notifyTasksChanged on dangling-reference drops (round 12) and the narrowed store recovery (rounds 12/14). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library Screen/IntegrationLibraryView.swift | 1 + BookPlayer/Player/PlayerManager.swift | 10 ++++++---- .../CoreData/Lightweight-Models/PlayableChapter.swift | 2 +- Shared/Services/Sync/LibraryItemSyncOperation.swift | 3 +++ 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift index 1e00c905d..94330b510 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift @@ -191,6 +191,7 @@ struct IntegrationLibraryView< } } label: { Image(systemName: "arrow.down.to.line") + .accessibilityLabel("download_title".localized) } .disabled(viewModel.selectedItems.isEmpty) } diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index e0fd199c5..8708b3f2f 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -308,10 +308,10 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { if !FileManager.default.fileExists(atPath: fileURL.path) { - if syncService.isActive, - (forceRefreshURL || chapter.externalUrl == nil) { - asset = try await loadRemoteURLAsset(for: chapter, forceRefresh: forceRefreshURL) - } else if let externalUrl = chapter.externalUrl { + if let externalUrl = chapter.externalUrl { + // Media-server chapters ALWAYS stream from their external URL — a forced refresh + // must not reroute them to the cloud/S3 presign path (their fresh URL comes from + // the chapter rebuild during reload, resolved against the local connection). asset = AVURLAsset(url: externalUrl, options: [ AVURLAssetPreferPreciseDurationAndTimingKey: false, "AVURLAssetHTTPHeaderFieldsKey": chapter.externalHeaders @@ -337,6 +337,8 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { bindPlayableChapterSubscription(to: updatedItem, dropInitialReplay: true) } } + } else if syncService.isActive { + asset = try await loadRemoteURLAsset(for: chapter, forceRefresh: forceRefreshURL) } else { asset = AVURLAsset(url: fileURL, options: [AVURLAssetPreferPreciseDurationAndTimingKey: false]) } diff --git a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift index cda50f450..1bcaeb315 100644 --- a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift +++ b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift @@ -19,7 +19,7 @@ public struct PlayableChapter: Codable, Identifiable { public let duration: TimeInterval public let relativePath: String public let remoteURL: URL? - public var externalUrl: URL? + public let externalUrl: URL? public let index: Int16 public let chapterOffset: TimeInterval public let externalHeaders: [String: String] diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 3df40cfe9..4b5873ae9 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -259,6 +259,9 @@ extension LibraryItemSyncOperation { guard FileManager.default.fileExists(atPath: fileURL.path), let remoteUrl = response.url else { + // Consuming on nil url is the server CONTRACT, not an accident: external_set answers + // url == null when the account tier has no S3 (lite) or the object already exists — + // both permanent for this task. A missing local file likewise can't heal by retrying. return } From b36c05b050e3f3717e32544b0ab02beba60b6955 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 09:20:48 -0500 Subject: [PATCH 027/172] fix: repost uploadProgressUpdated so upload progress bars update again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The info-rated review finding was a real regression: ZERO posters remained for a notification with THREE consumers (SyncJobScheduler.tasksProgress and both profile task views) after LibraryItemSyncOperation's upload path was removed — every upload progress bar silently froze at 0. ConcurrenceService now reposts it from the operation's progress callback with the expected {uuid, relativePath, progress} payload, alongside the monitor update. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ConcurrentSync/ConcurrenceService.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 946009129..617bbeda4 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -203,6 +203,19 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { operation.onProgress = { progress in Task { @MainActor in ConcurrentTaskProgressMonitor.shared.updateProgress(for: nextTask.id, progress: progress) + // Three consumers (SyncJobScheduler, the profile task views) still listen for this + // notification with a {uuid, relativePath, progress} payload — the old poster was + // removed with LibraryItemSyncOperation's upload path, silently freezing every + // upload progress bar. + NotificationCenter.default.post( + name: .uploadProgressUpdated, + object: nil, + userInfo: [ + "uuid": nextTask.uuid, + "relativePath": nextTask.relativePath, + "progress": progress, + ] + ) } } From 30d5f632769ee51c8dabb7fd4ccf84237f82911b Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 09:34:37 -0500 Subject: [PATCH 028/172] fix: address review feedback (round 18) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - The incompatible-store recovery MOVES the sync-tasks store aside (.incompatible suffix) instead of deleting it: cocoa 134100 also fires when an OLDER build runs over a store written by a NEWER schema (TestFlight rollback), and pending deletes/bookmarks are not re-derivable from library state — the set-aside copy survives for the eventual re-upgrade. - PlayableItem.id uses Constants.isRealUuid, covering the whole placeholder triad (the legacy migration placeholder and the empty string also collided as Identifiable ids). Rebutted with evidence: the SimpleLibraryItem dictionary-path claim (the grouped fetch populates externalResources on the list path since round 12), the BookView author nesting (un-nested in round 12), and the recovery any-failure zombie (narrowed in rounds 12/14, aside-not-delete as of now). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/CoreData/Lightweight-Models/PlayableItem.swift | 7 ++++--- Shared/SwiftData/TasksDataManager.swift | 11 +++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Shared/CoreData/Lightweight-Models/PlayableItem.swift b/Shared/CoreData/Lightweight-Models/PlayableItem.swift index 5f0856d85..7c03c23b4 100644 --- a/Shared/CoreData/Lightweight-Models/PlayableItem.swift +++ b/Shared/CoreData/Lightweight-Models/PlayableItem.swift @@ -11,9 +11,10 @@ import Foundation public final class PlayableItem: NSObject, Identifiable { public var id: String { - // Legacy watch payloads predating the uuid field decode to the shared placeholder — - // colliding Identifiable ids break SwiftUI lists, so fall back to the path. - if uuid == Constants.uuidPlaceholder { return relativePath } + // Legacy watch payloads predating the uuid field decode to a placeholder (either + // generation, or empty) — colliding Identifiable ids break SwiftUI lists, so fall + // back to the path. isRealUuid covers the whole placeholder triad. + if !Constants.isRealUuid(uuid) { return relativePath } return uuid } public let title: String diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index dfdb25267..2ac14c2de 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -59,10 +59,17 @@ public final class TasksDataManager: BPLogger { guard incompatibleStoreCodes.contains(cocoaCode) else { fatalError("Sync-tasks container failed to load: \(error)") } - Self.logger.error("Sync-tasks store unloadable (\(error)); recreating: \(storeURL.path)") + Self.logger.error("Sync-tasks store unloadable (\(error)); setting aside: \(storeURL.path)") + // Move ASIDE, never delete: 134100 also fires when an OLDER build runs over a store + // written by a NEWER schema (TestFlight rollback) — pending deletes/bookmarks there + // are not re-derivable, and the set-aside copy survives for the eventual re-upgrade + // (or support recovery). Only one generation is kept. let fm = FileManager.default for suffix in ["", "-wal", "-shm"] { - try? fm.removeItem(at: URL(fileURLWithPath: storeURL.path + suffix)) + let src = URL(fileURLWithPath: storeURL.path + suffix) + let dst = URL(fileURLWithPath: storeURL.path + suffix + ".incompatible") + try? fm.removeItem(at: dst) + try? fm.moveItem(at: src, to: dst) } // A second failure on a FRESH store is a programming error — crashing is correct. container = try! ModelContainer(for: schema, migrationPlan: MigrationPlan.self, configurations: [modelConfiguration]) From fb9ff526df268f2d90162724529e2c8c4244a876 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 09:53:54 -0500 Subject: [PATCH 029/172] fix: case-insensitive Authorization dedup in external request headers (round 19) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A user-configured lowercase "authorization" custom header coexisted with the integration's canonical Authorization in the seeded Swift Dictionary — HTTP header names are case-insensitive, Dictionary keys are not, so iteration order decided which one the request carried. All four seeding sites (streaming + download, both providers) now filter custom headers with the same caseInsensitiveCompare rule JellyfinHeaderInjector uses. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/Services/PlaybackService.swift | 12 ++++++++++-- Shared/Services/Sync/SyncService.swift | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index 1de52a20f..e61a34deb 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -245,7 +245,11 @@ public final class PlaybackService: PlaybackServiceProtocol { externalUrl = URL(string: urlString) // Custom headers first (reverse-proxy gates like Cloudflare Access), then the // integration's own Authorization so it always wins on conflict. - externalHeaders = connection.customHeaders + // Case-insensitive dedup: a user-configured lowercase "authorization" must not + // fight the integration's own header (same rule as JellyfinHeaderInjector). + externalHeaders = connection.customHeaders.filter { + $0.key.caseInsensitiveCompare("Authorization") != .orderedSame + } externalHeaders["Authorization"] = "MediaBrowser Token=\"\(connection.accessToken)\"" } @@ -256,7 +260,11 @@ public final class PlaybackService: PlaybackServiceProtocol { if let connection = connection, let externalResource = externalResource { let urlString = connection.buildAudiobookshelfDownloadUrl(providerId: externalResource.providerId) externalUrl = URL(string: urlString) - externalHeaders = connection.customHeaders + // Case-insensitive dedup: a user-configured lowercase "authorization" must not + // fight the integration's own header (same rule as JellyfinHeaderInjector). + externalHeaders = connection.customHeaders.filter { + $0.key.caseInsensitiveCompare("Authorization") != .orderedSame + } externalHeaders["Authorization"] = "Bearer \(connection.apiToken)" } diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index b857697e3..6a224bb8b 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -477,7 +477,11 @@ public final class SyncService: SyncServiceProtocol, BPLogger { if let connection = connection, let downloadUrl = URL(string: connection.buildDownloadUrl(providerId: external.providerId)) { // Custom headers first (reverse-proxy gates), integration Authorization wins on conflict. - var headers = connection.customHeaders + // Case-insensitive dedup: a user-configured lowercase "authorization" must not + // fight the integration's own header (same rule as JellyfinHeaderInjector). + var headers = connection.customHeaders.filter { + $0.key.caseInsensitiveCompare("Authorization") != .orderedSame + } headers["Authorization"] = "MediaBrowser Token=\"\(connection.accessToken)\"" remoteURLs = [ RemoteFileURL( @@ -498,7 +502,11 @@ public final class SyncService: SyncServiceProtocol, BPLogger { if let connection = connection, let downloadUrl = URL(string: connection.buildAudiobookshelfDownloadUrl(providerId: external.providerId)) { - var headers = connection.customHeaders + // Case-insensitive dedup: a user-configured lowercase "authorization" must not + // fight the integration's own header (same rule as JellyfinHeaderInjector). + var headers = connection.customHeaders.filter { + $0.key.caseInsensitiveCompare("Authorization") != .orderedSame + } headers["Authorization"] = "Bearer \(connection.apiToken)" remoteURLs = [ RemoteFileURL( From 504895cbdf98cfc56ef23bde1617f9142e6152a3 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 10:20:32 -0500 Subject: [PATCH 030/172] fix: guard the already-loaded dedup on real uuids; consistent access-level mock (round 20) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - The already-loaded check matched placeholder/empty uuids, so a second tap on such an item silently no-oped as "same book" — guarded with Constants.isRealUuid, the same rule PlayableItem.id uses. - AccountServiceMock's hardcoded .plus access level contradicted its own false hasSyncEnabled()/hasPlusAccess() gates; .free keeps the mock internally consistent. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Player/PlayerLoaderService.swift | 5 ++++- BookPlayerTests/Mocks/AccountServiceMock.swift | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/BookPlayer/Player/PlayerLoaderService.swift b/BookPlayer/Player/PlayerLoaderService.swift index 7867061a6..55aa7231e 100644 --- a/BookPlayer/Player/PlayerLoaderService.swift +++ b/BookPlayer/Player/PlayerLoaderService.swift @@ -55,8 +55,11 @@ final class PlayerLoaderService: @unchecked Sendable { throw BPPlayerError.fileMissing(relativePath: libraryItem.relativePath) } - // Only load if loaded book is a different one + // Only load if loaded book is a different one. Guard on a REAL uuid: two items + // carrying a placeholder/empty uuid would otherwise match as "already loaded" and + // the second tap would silently no-op (same rule as PlayableItem.id). if playerManager.hasLoadedBook() == true, + Constants.isRealUuid(libraryItem.uuid), libraryItem.uuid == playerManager.currentItem?.uuid { if autoplay { diff --git a/BookPlayerTests/Mocks/AccountServiceMock.swift b/BookPlayerTests/Mocks/AccountServiceMock.swift index 907ab51ca..652509144 100644 --- a/BookPlayerTests/Mocks/AccountServiceMock.swift +++ b/BookPlayerTests/Mocks/AccountServiceMock.swift @@ -124,6 +124,8 @@ class AccountServiceMock: AccountServiceProtocol { func deleteAccount() async throws -> String { return "Success" } func getAccessLevel() -> BookPlayerKit.AccessLevel { - return .plus + // .free keeps this consistent with the mock's hasSyncEnabled()/hasPlusAccess() + // both returning false — a .plus level would contradict them. + return .free } } From 41c645c4cc219fc0d0fe31a07f2ee36e1c31612f Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 10:38:58 -0500 Subject: [PATCH 031/172] fix: address review feedback (round 21) - The post-PUT synced:true confirmation posted an EMPTY relativePath: the uploadFile task's params never carried it (UploadResponse had only uuid/filePath/remotePath), so the server-side update keyed on "". UploadResponse now threads the item's relativePath from the sync operation through scheduleFileUpload onto the persisted task reference. - The buffering overlay resets at every load entry: its setters are remote-gated, so a LOCAL load interrupting a buffering stream left the overlay stuck over playable content. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Player/PlayerManager.swift | 4 ++++ .../Services/ConcurrentSync/ConcurrenceService.swift | 12 +++++++++--- Shared/Services/Sync/ApiResponse.swift | 3 +++ Shared/Services/Sync/LibraryItemSyncOperation.swift | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 8708b3f2f..d86409dea 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -302,6 +302,10 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { @MainActor func loadPlayerItem(for chapter: PlayableChapter, forceRefreshURL: Bool) async throws -> PlayableChapter { + // Reset unconditionally: the flag's setters are gated on remote loads, so a LOCAL load + // that interrupts a buffering stream would otherwise leave the overlay stuck on. + await MainActor.run { updatePlayerIsLoadingURL(false) } + let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(chapter.relativePath) let asset: AVURLAsset diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 617bbeda4..a8bef3c19 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -411,11 +411,17 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { private func handleUploadResult(_ result: UploadResponse) { guard let remotePath = result.remotePath else { return } - scheduleFileUpload(params: [ + var params: [String: Any] = [ "filePath": result.filePath, "remotePath": remotePath, - "uuid": result.uuid - ]) + "uuid": result.uuid, + ] + // Persisted onto the task reference — the post-PUT synced:true confirmation posts it, + // and an empty relativePath there mismatches the server's item key. + if let relativePath = result.relativePath { + params["relativePath"] = relativePath + } + scheduleFileUpload(params: params) } public func updateConcurrentService(_ accessLevel: AccessLevel) { diff --git a/Shared/Services/Sync/ApiResponse.swift b/Shared/Services/Sync/ApiResponse.swift index 7b468107c..d26077743 100644 --- a/Shared/Services/Sync/ApiResponse.swift +++ b/Shared/Services/Sync/ApiResponse.swift @@ -39,4 +39,7 @@ public struct UploadResponse: Decodable { let uuid: String let filePath: String let remotePath: String? + /// The library key of the item being uploaded — the synced:true confirmation after the + /// file PUT needs it, and it can't be derived from the (absolute, possibly temp) filePath. + var relativePath: String? } diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 4b5873ae9..13e6e60cb 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -167,7 +167,7 @@ extension LibraryItemSyncOperation { return } - results = .uploadMetadata(UploadResponse(uuid: self.uuid, filePath: fileURL.absoluteString, remotePath: remoteURL.absoluteString)) + results = .uploadMetadata(UploadResponse(uuid: self.uuid, filePath: fileURL.absoluteString, remotePath: remoteURL.absoluteString, relativePath: self.relativePath)) // Deliberately NOT handleUploadFinished() here: a backing file still has to be PUT by the // FileUploadOperation this result schedules — confirming synced:true now lies to the server // if that upload later fails permanently. The metadata-only branch above confirms From ae1f17090c0635cd20b5f130bc429b4afa5bbceb Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 11:06:26 -0500 Subject: [PATCH 032/172] chore: delete callerless task-queue helpers (round 22) deleteReferenceModel(with:context:) and the notifyConcurrentTasksChanged pass-through wrapper lost their last callers in the queue refactor. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/SwiftData/TasksDataManager.swift | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index 2ac14c2de..c427f5f0c 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -118,9 +118,6 @@ public final class TasksDataManager: BPLogger { } } - public func notifyConcurrentTasksChanged(context: ModelContext) { - notifyTasksChanged(context: context) - } public func deleteAllTasks(with context: ModelContext) throws { // Task payload models are standalone (no relationships), so a store-level @@ -275,17 +272,6 @@ public final class TasksDataManager: BPLogger { } } - public func deleteReferenceModel( - with id: String, - context: ModelContext - ) throws { - let descriptor = FetchDescriptor( - predicate: #Predicate { task in task.taskID == id } - ) - if let task = try context.fetch(descriptor).first { - context.delete(task) - } - } // swiftlint:disable force_cast public func createTaskModel( From 450005be7be75fa2b6cb0174c0f52cea359a283b Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 11:25:10 -0500 Subject: [PATCH 033/172] fix: address review feedback (round 23) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - External-resource uploads crashed with an uncatchable NSInvalidArgumentException whenever lastSyncedAt was non-nil: a raw Date is not a valid JSONSerialization object. Epoch seconds travel instead, and nil is omitted (the server owns the authoritative timestamp). - Reconciliation no longer deletes locally-created resources whose upload task hasn't run yet — they're legitimately absent from the server payload, and deleting them lost the link before it ever synced. Only already-synced resources are reconciled away. Acknowledged: the AsyncOperation KVO/lock interleave note (benign in the effectively sequential finish flow; the atomic-unit refactor isn't worth the churn here). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/Services/LibraryService+Sync.swift | 6 +++++- Shared/SwiftData/SwiftDataModels+Extensions.swift | 14 +++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index b386d8d3f..0be2b867b 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -184,7 +184,11 @@ extension LibraryService: LibrarySyncProtocol { let idsExisting = localIds.intersection(remoteIds) for localResource in storedItem.resourcesArray { - if idsToRemove.contains(localResource.providerId) { + // Only reconcile-away resources the server has SEEN: a locally-created link whose + // upload task hasn't run yet is legitimately absent from the server payload, and + // deleting it here loses the link before it ever syncs. + if idsToRemove.contains(localResource.providerId), + localResource.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue { storedItem.removeFromExternalResources(localResource) context.delete(localResource) } diff --git a/Shared/SwiftData/SwiftDataModels+Extensions.swift b/Shared/SwiftData/SwiftDataModels+Extensions.swift index b2e1c149a..bc3f0430e 100644 --- a/Shared/SwiftData/SwiftDataModels+Extensions.swift +++ b/Shared/SwiftData/SwiftDataModels+Extensions.swift @@ -184,16 +184,24 @@ extension MatchUuidsTaskModel: DictionaryConvertible { extension UploadExternalResourceTaskModel: DictionaryConvertible { public func toDictionaryPayload() -> [String: Any] { - return [ + var dictionary: [String: Any] = [ "id": id, "uuid": uuid, "providerId": providerId, "providerName": providerName, - "lastSyncedAt": lastSyncedAt as Any, "processedFile": processedFile, "syncStatus": syncStatus, - "hostId": hostId as Any ] + // A raw Date is NOT a valid JSONSerialization object — including it crashes the upload + // with an uncatchable NSInvalidArgumentException. Epoch seconds travel instead; nil is + // simply omitted (the server owns the authoritative lastSyncedAt anyway). + if let lastSyncedAt { + dictionary["lastSyncedAt"] = lastSyncedAt.timeIntervalSince1970 + } + if let hostId { + dictionary["hostId"] = hostId + } + return dictionary } } From ff6e454ceaf13f4d9d0d96c21a6a540056c47771 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 11:44:27 -0500 Subject: [PATCH 034/172] fix: address review feedback (round 24) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AudiobookShelf progress pushes sent the 0-100 percentCompleted where the ABS API expects a 0-1 fraction — marking books complete server-side on every push. Divided by 100 at the push site; Jellyfin's playedPercentage correctly stays on the 0-100 scale. - The operation completion block weak-captures its operation, breaking the operation→completionBlock→operation cycle — with the weak refs resolved SYNCHRONOUSLY before the async Task, since the queue only guarantees the operation alive while the block itself runs and a late resolution could skip the pop and re-run the task forever. Rebutted with evidence: the v2→v3 backfill atomicity concern — the CoreData insert loop already skips existing (providerName, providerId) resources, so a rerun after a SwiftData save failure is idempotent by construction. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/Services/ConcurrentSync/ConcurrenceService.swift | 9 +++++++-- .../ConcurrentSync/ExternalUpdateProgressOperation.swift | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index a8bef3c19..104b69032 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -219,10 +219,15 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { } } - operation.completionBlock = { [weak self] in + operation.completionBlock = { [weak self, weak operation] in + // Resolve the weak refs SYNCHRONOUSLY: the queue keeps the operation alive while its + // completionBlock runs, but the async Task below executes later — resolving there + // could miss the operation and skip the pop, re-running the task forever. The weak + // capture itself breaks the operation→completionBlock→operation cycle the strong + // capture created. + guard let self, let operation else { return } // 2. Bridge back into the async world inside the synchronous completion block Task { - guard let self = self else { return } if operation.didSucceed { await self.handleFinishedOperation(operation, task: nextTask) diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift index e4379bedc..cfc006f0b 100644 --- a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift +++ b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift @@ -107,6 +107,8 @@ class ExternalUpdateProgressOperation: AsyncOperation, BPLogger, @unchecked Send } await audiobookshelfService.useConnection(targetConnection) - try await audiobookshelfService.updateProgress(for: self.providerItemId, progress: self.percentCompleted, currentTime: Double(self.positionTicks) / 10_000_000) + // percentCompleted arrives as 0-100 (LibraryService rounds (currentTime/duration)*100); + // ABS's progress field is a 0-1 FRACTION — pushing the raw value marks books complete. + try await audiobookshelfService.updateProgress(for: self.providerItemId, progress: self.percentCompleted / 100, currentTime: Double(self.positionTicks) / 10_000_000) } } From 11aac260ca45d40079408afc27101844b086c4f9 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 12:05:03 -0500 Subject: [PATCH 035/172] fix: carry externalResources through SyncableItem.copy (round 25) The synthesized memberwise default left externalResources nil in copy(uuid:), so any server content item arriving with an empty uuid (processContentsResponse mints one via copy) silently dropped its external resources before updateInfo/storeNewItems ran. The copy now preserves every field. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/Services/Sync/Model/SyncableItem.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Shared/Services/Sync/Model/SyncableItem.swift b/Shared/Services/Sync/Model/SyncableItem.swift index b540d0cdc..5345c3d54 100644 --- a/Shared/Services/Sync/Model/SyncableItem.swift +++ b/Shared/Services/Sync/Model/SyncableItem.swift @@ -127,7 +127,10 @@ extension SyncableItem { orderRank: self.orderRank, lastPlayDateTimestamp: self.lastPlayDateTimestamp, type: self.type, - uuid: uuid ?? self.uuid + uuid: uuid ?? self.uuid, + // Every field must survive a copy: the synthesized default silently dropped the + // external resources for items whose uuid gets minted in processContentsResponse. + externalResources: self.externalResources ) } } From 5bc36b4e7131ed6492545c37f7436c07cb6d71b3 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 12:23:17 -0500 Subject: [PATCH 036/172] fix: address review feedback (round 26) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ItemDetailsView: key the external-resources ForEach on providerId — the sync creation path never assigns the numeric id, so every sync-created resource snapshots to id 0 and multi-resource items collided in SwiftUI (runtime warning, only one row rendered). Matches the BookView pattern. - ConcurrenceService: log before discarding externalUpdate/uploadFile tasks with missing or malformed parameters instead of silently returning nil. - PlayerView: animate the loading-overlay opacity transition via .animation(value: isLoadingURL) — the transition never animated because the state change happens outside withAnimation. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Library/ItemDetails/ItemDetailsView.swift | 5 ++++- BookPlayer/Player/Views/PlayerView.swift | 3 +++ Shared/Services/ConcurrentSync/ConcurrenceService.swift | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift index 22ccc6cd2..66787a4e0 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift @@ -141,7 +141,10 @@ struct ItemDetailsExternalResourceSectionView: View { var body: some View { if !externalResources.isEmpty { ThemedSection { - ForEach(externalResources) { resource in + // Sync-created resources never populate the numeric id (all default to 0), + // so keying on Identifiable collides for multi-resource items; providerId + // is the stable key (same pattern as BookView). + ForEach(externalResources, id: \.providerId) { resource in VStack(alignment: .leading, spacing: Spacing.S1) { HStack { Text("provider_title".localized) diff --git a/BookPlayer/Player/Views/PlayerView.swift b/BookPlayer/Player/Views/PlayerView.swift index b0b6371b6..39d79c3b7 100644 --- a/BookPlayer/Player/Views/PlayerView.swift +++ b/BookPlayer/Player/Views/PlayerView.swift @@ -59,6 +59,9 @@ struct PlayerView: View { .transition(.opacity) } } + // The opacity transition only animates when the driving state change is + // animated; isLoadingURL is toggled outside withAnimation, so bind it here + .animation(.easeInOut(duration: 0.3), value: viewModel.isLoadingURL) .simultaneousGesture( DragGesture(minimumDistance: 15) .onChanged { gesture in diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 104b69032..73b038ce0 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -282,6 +282,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { let providerId = task.parameters["providerId"] as? String, let currentTime = task.parameters["currentTime"] as? Double, let percentCompleted = task.parameters["percentCompleted"] as? Double else { + Self.logger.error("Discarding externalUpdate task \(task.id): missing required parameters") return nil } let hostId = task.parameters["hostId"] as? String @@ -298,6 +299,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { let fileURL = URL(string: filePath), let remoteURL = URL(string: remotePath), let uuid = task.parameters["uuid"] as? String else { + Self.logger.error("Discarding uploadFile task \(task.id): missing or malformed parameters") return nil } return FileUploadOperation(fileURL: fileURL, remoteURL: remoteURL, uuid: uuid) From 3bfdebbd486e06fc67a3d959fd7d9277beba7c1e Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 12:48:45 -0500 Subject: [PATCH 037/172] fix: address review feedback (round 27) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AudiobookShelf: the fire-and-forget token revoke applied the bearer BEFORE looping custom headers, so a user-defined header named Authorization would clobber the token being revoked and leave it orphaned server-side. Custom headers first, bearer last — same precedence as applyAuthenticatedHeaders. - FileUploadOperation: publish currentUploadTask under a lock shared with cancel(). A logout-driven cancelAllOperations could run between task creation and assignment, see nil, and let the live upload survive logout; now cancel() either sees the published task or startUploadTask sees isCancelled and never resumes. - PlayerManager: the two loading-overlay KVO sinks (timeControlStatus, playerItem status) hop to main before reading currentItem/playerItem — AVFoundation delivers these callbacks on arbitrary threads. - RemoteFileURL: drop the unused externalResources field — it was never read (downloadRemoteFiles builds its own URLs) and its hard-decoding meant one malformed element failed the entire download-response decode. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Player/PlayerManager.swift | 4 ++++ .../AudiobookShelfConnectionService.swift | 4 +++- .../ConcurrentSync/FileUploadOperation.swift | 17 ++++++++++++++++- .../Sync/Model/RemoteFileURLResponse.swift | 3 +-- Shared/Services/Sync/SyncService.swift | 2 -- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index d86409dea..a5bbf458c 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -197,6 +197,9 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { // 2. Observe Buffering (AVPlayer TimeControlStatus) playerLoadingStateSubscription?.cancel() playerLoadingStateSubscription = player.publisher(for: \.timeControlStatus) + // AVFoundation delivers this KVO off-main; the sink reads currentItem, which is + // mutated on main — hop before reading, like the player's other sinks + .receive(on: DispatchQueue.main) .sink { [weak self, weak player] status in guard let self = self, let player = player else { return } // Same remote-only gate as the item-status observer: a stalled/seeking LOCAL book @@ -380,6 +383,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { || (currentItem?.currentChapter?.remoteURL != nil) playerItemStatusSubscription?.cancel() playerItemStatusSubscription = playerItem.publisher(for: \.status) + .receive(on: DispatchQueue.main) .sink { [weak self] status in guard let self = self, isRemoteLoad else { return } diff --git a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift index 3e4644b47..ee91cdbf5 100644 --- a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift +++ b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift @@ -757,10 +757,12 @@ public class AudiobookShelfConnectionService: BPLogger { Task { [urlSession] in var request = URLRequest(url: url) request.httpMethod = "POST" - request.setValue("Bearer \(apiToken)", forHTTPHeaderField: "Authorization") + // Custom headers first, bearer last — same precedence as applyAuthenticatedHeaders, + // so a user-defined header named Authorization can't clobber the token being revoked for (key, value) in headers { request.setValue(value, forHTTPHeaderField: key) } + request.setValue("Bearer \(apiToken)", forHTTPHeaderField: "Authorization") _ = try? await urlSession.data(for: request) } } diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index b666146a1..5a3579f8f 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -24,6 +24,12 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { let client: NetworkClientProtocol // State management for the background task + /// Guards the publish of `currentUploadTask` against a concurrent `cancel()`: without it, + /// a logout-driven cancel can run between task creation and assignment, see nil, and the + /// live upload survives logout. Either `cancel()` sees the published task and cancels it, + /// or `startUploadTask` sees `isCancelled` and never resumes (resume on a cancelled + /// URLSessionTask is a no-op, so the post-unlock resume can't revive it). + private let stateLock = NSLock() private var currentUploadTask: URLSessionTask? private var progressSubscriber: AnyCancellable? private var completionSubscriber: AnyCancellable? @@ -71,8 +77,15 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { taskDescription: uuid, session: session ) + stateLock.lock() + guard !isCancelled else { + // cancel() already ran (and finished the operation) — don't resume or rebind + stateLock.unlock() + return + } self.currentUploadTask = uploadTask - + stateLock.unlock() + // 3. Bind everything before resuming bindUploadObservers() bindCellularObserver() @@ -176,7 +189,9 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { // If the Orchestrator cancels the operation entirely, we must sever all ties. override func cancel() { super.cancel() + stateLock.lock() currentUploadTask?.cancel() + stateLock.unlock() cellularDataObserver?.invalidate() progressSubscriber?.cancel() completionSubscriber?.cancel() diff --git a/Shared/Services/Sync/Model/RemoteFileURLResponse.swift b/Shared/Services/Sync/Model/RemoteFileURLResponse.swift index 05afe7276..48ab6682f 100644 --- a/Shared/Services/Sync/Model/RemoteFileURLResponse.swift +++ b/Shared/Services/Sync/Model/RemoteFileURLResponse.swift @@ -12,11 +12,10 @@ public struct RemoteFileURL: Decodable { public let url: URL public let relativePath: String public let type: SimpleItemType - public let externalResources: [SyncableExternalResource]? public let headers: [String: String]? enum CodingKeys: CodingKey { - case url, relativePath, type, externalResources, headers + case url, relativePath, type, headers } } diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 6a224bb8b..2bf67c0db 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -488,7 +488,6 @@ public final class SyncService: SyncServiceProtocol, BPLogger { url: downloadUrl, relativePath: item.relativePath, type: .book, - externalResources: nil, headers: headers ) ] @@ -513,7 +512,6 @@ public final class SyncService: SyncServiceProtocol, BPLogger { url: downloadUrl, relativePath: item.relativePath, type: .book, - externalResources: nil, headers: headers ) ] From 6cfaad1dc1f99ad6f6f27e0083e7c1fb24a728d6 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 13:12:32 -0500 Subject: [PATCH 038/172] fix: address review feedback (round 28) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SyncJobScheduler: a subscription lapse (pro/lite -> free while signed in) now clears only the BookPlayer-server sync queue and the pro-gated upload queue. The provider-keyed externalUpdate queues survive — progress pushes to the user's own media server stay enabled on every tier. Logout still wipes everything via resetAllJobs(). - PlayerManager: stopPlayback() resets the buffering-overlay flag — stopping mid-buffer never reaches .readyToPlay, so the status sinks alone left the streaming overlay stuck on. - IntegrationConnectionStore: keychain save failures are logged instead of silently swallowed (a token that never persisted was undiagnosable). - LibraryItemSyncOperation: removed the dead upload subscribers (moved to FileUploadOperation) and the now-unused Combine import. - Reverted the functionally-inert regeneration of the shipped v10->v11 mapping model (version hashes byte-identical; ~333 lines of diff noise). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Player/PlayerManager.swift | 3 + .../xcmapping.xml | 666 +++++++++--------- .../IntegrationConnectionStore.swift | 8 +- .../Sync/LibraryItemSyncOperation.swift | 4 - Shared/Services/Sync/SyncJobScheduler.swift | 8 +- 5 files changed, 350 insertions(+), 339 deletions(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index a5bbf458c..00f22e8d9 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -1419,6 +1419,9 @@ extension PlayerManager { private func stopPlayback() { observeStatus = false playbackQueued = nil + // Stopping mid-buffer never reaches .readyToPlay, so the status sinks won't + // clear the streaming buffering overlay — reset it on teardown + updatePlayerIsLoadingURL(false) audioPlayer.pause() playTask?.cancel() diff --git a/Shared/CoreData/Migrations/MappingModel_v10_to_v11.xcmappingmodel/xcmapping.xml b/Shared/CoreData/Migrations/MappingModel_v10_to_v11.xcmappingmodel/xcmapping.xml index aa5903faf..e01d8dd87 100644 --- a/Shared/CoreData/Migrations/MappingModel_v10_to_v11.xcmappingmodel/xcmapping.xml +++ b/Shared/CoreData/Migrations/MappingModel_v10_to_v11.xcmappingmodel/xcmapping.xml @@ -1,18 +1,18 @@ - + 134481920 - BBCFC426-ECB1-425B-99DC-BBFEF01E5B6A + BCA5FFB8-2A43-4E0E-83E2-CB57C40EDD3B 206 NSPersistenceFrameworkVersion - 1523 + 1526 NSPersistenceMaximumFrameworkVersion - 1523 + 1526 NSStoreModelVersionChecksumKey bMpud663vz0bXQE24C6Rh4MvJ5jVnzsD2sI3njZkKbc= NSStoreModelVersionHashes @@ -51,507 +51,507 @@ - lastPlayDate - + time + - - Bookmark - Undefined - 3 - Bookmark - 1 - - - + + date + percentCompleted - + - currentTime - + originalFileName + - - Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 10.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 -cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIAgALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78D1APVA90D3gPqA/4EDQQcBCsELwQ+BE0EXARrBHoEhgSYBJkEmgSbBJwEnQSeBJ8ErgSvBL4EzQTcBN0E7AT7BQoFEgUnBSgFMAU8BVAFXwVuBX0FgQWQBZ8FrgW9BcwF2AXqBfkGCAYXBiYGNQZEBlMGWwZwBnEGeQaFBpkGqAa3BsYGygbZBugG9wcGBxUHIQczB0IHUQdgB28HiQeKB5AHnAeyB8EHxAfTB+IH5Qf0CAMIBggVCCQIKAg3CEYIUghTCFQIVQhqCGsIcwh/CJMIogixCMAIxAjTCOII8QkACQ8JGwktCTwJSwlaCWkJeAmHCZYJqwmsCbQJwAnUCeMJ8goBCgUKFAojCjIKQQpQClwKbgp9CowKmwqqCrkKyArXCuwK7Qr1CwELFQskCzMLQgtGC1ULZAtzC4ILkQudC68LvgvNC9wL6wv6DAkMGAwtDC4MNgxCDFYMZQx0DIMMhwyWDKUMtAzDDNIM3gzwDP8NDg0dDSwNRg1HDU0NWQ1vDX4NgQ2QDZENoA2jDbINwQ3EDdMN4g3mDfUOBA4+Dj8OQA5BDkIOQw5EDkUORg5HDkgOSQ5KDksOTA5NDk4OTw5QDlEOUg5TDlQOVQ5WDlcObA5tDnUOgQ6VDqQOsw7CDsYO1Q7kDvMPAg8DDxIPHg8wDz8PTg9dD2wPbQ98D4sPmg+vD7APuA/ED9gP5w/2EAUQCRAYECcQNhBFEFQQYBByEIEQkBCfEK4QvRDMENsQ8BDxEPkRBREZESgRNxFGEUoRWRFo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WJxYqFi8WMtY2ljpWO1Y/FkLWRpZKVk4WURZVlllWXRZg1mSWaFZsFm/WdRZ1VndWelZ/VoMWhtaKlouWj1aTFpbWmpaeVqFWpdaplq1WsRa01riWvFbAFsVWxZbHlsqWz5bTVtcW2tbb1t+W41bnFurW7pbxlvYW+db9lwFXBRcI1wyXEFcRFxTXGJccVx1XHZcfFyDXIRck1yiXLFctVzPXNBc1lziXPhdB10KXRldKF0rXTpdSV1MXVtdal1uXX1djF2YXZldml2bXbBdsV25XcVd2V3oXfdeBl4KXhleKF43XkZeVV5hXnNegl6RXqBer16+Xs1e3F7xXvJe+l8GXxpfKV84X0dfS19aX2lfeF+HX5Zfol+0X8Nf0l/hX/Bf/2AOYB1gMmAzYDtgR2BbYGpgeWCIYIxgm2CqYLlgyGDXYONg9WEEYRNhImExYUBhT2FeYXNhdGF8YYhhnGGrYbphyWHNYdxh62H6YgliGGIkYjZiRWJUYmNicmKBYpBin2KiYrxivWLDYs9i5WL0YvdjBmMVYxhjJ2M2YzljSGNXY1tjamN5Y3pjgmODY5hjmWOhY61jwWPQY99j7mPyZAFkEGQfZC5kPWRJZFtkamR5ZIhkl2SmZLVkxGTZZNpk4mTuZQJlEWUgZS9lM2VCZVFlYGVvZX5limWcZatlumXJZdhl52X2ZgVmCGYMZhBmFGYcZh9mI2YkVSRudWxs1gANAA4ADwAQABEAEgATABQAFQAWABcAGF8QD194ZF9yb290UGFja2FnZVYkY2xhc3NdX3hkX21vZGVsTmFtZVxfeGRfY29tbWVudHNfEBVfY29uZmlndXJhdGlvbnNCeU5hbWVfEBdfbW9kZWxWZXJzaW9uSWRlbnRpZmllcoACgQgBgACBB/6BB/+BCADeABoAGwAcAB0AHgAfACAADgAhACIAIwAkACUAJgAnACgAKQAJACcAFQAtAC4ALwAwADEAJwAnABVfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASBB/yBB/qAAYAEgACBB/uBB/0QAIAFgAOABIAEgABQU1lFU9MAOAA5AA4AOgBFAFBXTlMua2V5c1pOUy5vYmplY3RzqgA7ADwAPQA+AD8AQABBAEIAQwBEgAaAB4AIgAmACoALgAyADYAOgA+qAEYARwBIAEkASgBLAEwATQBOAE+AEIEFNoEGhYEGDIEGrYBhgQdDgQe2gNaBAUWAL1ZGb2xkZXJdSGFyZGNvdmVyQm9va1RCb29rWEJvb2ttYXJrV0NoYXB0ZXJbTGlicmFyeUl0ZW1XQWNjb3VudF5QbGF5YmFja1JlY29yZFdMaWJyYXJ5VVRoZW1l3xAQAFwAXQBeAF8AHwBgAGEAIQBiAGMADgAjAGQAZQAmAGYAZwBoACcAJwATAGwAbQAvACcAZwBwADsAZwBzAHQAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZVtfaXNBYnN0cmFjdIASgDaABIAEgAKAE4ED/4AEgBKBBAGABoASgQdCgBEIEuEnSGpXb3JkZXJlZNMAOAA5AA4AeQB7AFChAHqAFKEAfIAVgC9eWERfUFN0ZXJlb3R5cGXZAB8AIwCAAA4AJgCBACEAZgCCAEYAegBnAIYAFQAnAC8AdQCKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgBCAFIASgDWAAIAECIAW0wA4ADkADgCMAJYAUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pAJcAmACZAJoAmwCcAJ0AngCfgCCAJIAmgCiAKYArgC2AMIA0gC9fEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGVhEUE1VbmlxdWVuZXNzQ29uc3RyYWludHNfEBpYRF9QU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QGVhEX1BTS19mZXRjaFJlcXVlc3RzQXJyYXlfEBFYRF9QU0tfaXNBYnN0cmFjdF8QD1hEX1BTS191c2VySW5mb18QE1hEX1BTS19jbGFzc01hcHBpbmdfEBZYRF9QU0tfZW50aXR5Q2xhc3NOYW1l3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAtgAVAHwAdQB1AHUALwB1AL0AjQB1AHUAFQB1VV90eXBlWF9kZWZhdWx0XF9hc3NvY2lhdGlvbltfaXNSZWFkT25seVlfaXNTdGF0aWNZX2lzVW5pcXVlWl9pc0Rlcml2ZWRaX2lzT3JkZXJlZFxfaXNDb21wb3NpdGVXX2lzTGVhZoAAgCGAAIAVCAgICIAjgBcICIAACNIAOQAOAMQAxaCAItIAxwDIAMkAylokY2xhc3NuYW1lWCRjbGFzc2VzXk5TTXV0YWJsZUFycmF5owDJAMsAzFdOU0FycmF5WE5TT2JqZWN00gDHAMgAzgDPXxAQWERVTUxQcm9wZXJ0eUltcKQA0ADRANIAzF8QEFhEVU1MUHJvcGVydHlJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVANUAFQB8AHUAdQB1AC8AdQC9AI4AdQB1ABUAdYAAgCWAAIAVCAgICIAjgBgICIAACFpQbGF5bGlzdFYz3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUA5QAVAHwAdQB1AHUALwB1AL0AjwB1AHUAFQB1gACAJ4AAgBUICAgIgCOAGQgIgAAI0gA5AA4A8wDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVAHwAdQB1AHUALwB1AL0AkAB1AHUAFQB1gACAAIAAgBUICAgIgCOAGggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBBgAVAHwAdQB1AHUALwB1AL0AkQB1AHUAFQB1gACAKoAAgBUICAgIgCOAGwgIgAAI0gA5AA4BFADFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVAHwAdQB1AHUALwB1AL0AkgB1AHUAFQB1gACALIAAgBUICAgIgCOAHAgIgAAICN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVASgAFQB8AHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgC6AAIAVCAgICIAjgB0ICIAACNMAOAA5AA4BNgE3AFCgoIAv0gDHAMgBOgE7XxATTlNNdXRhYmxlRGljdGlvbmFyeaMBOgE8AMxcTlNEaWN0aW9uYXJ53xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBPwAVAHwAdQB1AHUALwB1AL0AlAB1AHUAFQB1gACAMYAAgBUICAgIgCOAHggIgAAI1gAjAA4AJgBmAB8AIQFNAU4AFQB1ABUAL4AygDOAAAiAAF8QFFhER2VuZXJpY1JlY29yZENsYXNz0gDHAMgBVAFVXVhEVU1MQ2xhc3NJbXCmAVYBVwFYAVkBWgDMXVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAOwAVAHwAdQB1AHUALwB1AL0AlQB1AHUAFQB1gACABoAAgBUICAgIgCOAHwgIgAAI0gDHAMgBawFsXxASWERVTUxTdGVyZW90eXBlSW1wpwFtAW4BbwFwAXEBcgDMXxASWERVTUxTdGVyZW90eXBlSW1wXVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w0wA4ADkADgF0AXYAUKEBdYA3oQF3gDiAL1VpdGVtc98QEgCrAKwArQF7AB8ArwCwAXwAIQCuAX0AsQAOACMAsgCzACYAtAAVABUAFQAnAEYAdQB1AYUALwB1AGcAdQGJAXUAdQB1AY0AdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgBAICIA6CIASCIDBgDcICIA5CBL74hWf0wA4ADkADgGRAZQAUKIBkgGTgDuAPKIBlQGWgD2AUoAvXxASWERfUFByb3BTdGVyZW90eXBlXxAQWERfUFJfU3RlcmVvdHlwZdkAHwAjAZsADgAmAZwAIQBmAZ0BdwGSAGcAhgAVACcALwB1AaVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAOIA7gBKANYAAgAQIgD7TADgAOQAOAacBsABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqAGxAbIBswG0AbUBtgG3AbiAR4BIgEmAS4BMgE6AT4BRgC9fEBtYRF9QUFNLX2lzU3RvcmVkSW5UcnV0aEZpbGVfEBtYRF9QUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBBYRF9QUFNLX3VzZXJJbmZvXxARWERfUFBTS19pc0luZGV4ZWRfEBJYRF9QUFNLX2lzT3B0aW9uYWxfEBpYRF9QUFNLX2lzU3BvdGxpZ2h0SW5kZXhlZF8QEVhEX1BQU0tf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gQaFgQaFgQc7gGHfEBBTI1MkUyVTJgAfUydTKAAhUylTKgAOACNTK1MsACYAZgBnUy4AJwAnABNTMgBtAC8AJwBnAHAAPQBnUzlTOgB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgBKBBpeABIAEgAKBBoeBA/+ABIASgQQBgAiAEoEHOoEGhggSbWCTy9MAOAA5AA5TPlNAAFChAHqAFKFTQYEGiIAv2QAfACNTRAAOACZTRQAhAGZTRgBIAHoAZwCGABUAJwAvAHVTTl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEGhYAUgBKANYAAgAQIgQaJ0wA4ADkADlNQU1oAUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pU1tTXFNdU15TX1NgU2FTYlNjgQaKgQaMgQaNgQaPgQaQgQaSgQaTgQaVgQaWgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFVNnABVTQQB1AHUAdQAvAHUAvQCNAHUAdQAVAHWAAIEGi4AAgQaICAgICIAjgBcICIAACNIAOQAOU3UAxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAV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AAAq1gAAKtcAACrZAAAq2gAAKuMAACrkAAAq5gAAKyUAACsnAAArKQAAKysAACstAAArLgAAKy8AACswAAArMQAAKzMAACs1AAArNgAAKzcAACs5AAArOgAAK3kAACt7AAArfQAAK38AACuBAAArggAAK4MAACuEAAArhQAAK4cAACuJAAArigAAK4sAACuNAAArjgAAK5sAACucAAArnQAAK58AACveAAAr4AAAK+IAACvkAAAr5gAAK+cAACvoAAAr6QAAK+oAACvsAAAr7gAAK+8AACvwAAAr8gAAK/MAACwyAAAsNAAALDYAACw4AAAsOgAALDsAACw8AAAsPQAALD4AACxAAAAsQgAALEMAACxEAAAsRgAALEcAACxTAAAsYAAALIkAACyLAAAsjQAALI8AACyRAAAskwAALJUAACyXAAAsmQAALJsAACydAAAsnwAALKEAACyjAAAspQAALKcAACypAAAsqwAALK0AACyvAAAs2AAALNoAACzcAAAs3gAALOEAACzkAAAs5wAALOoAACztAAAs8AAALPMAACz2AAAs+QAALPwAACz/AAAtAgAALQUAAC0IAAAtCwAALQ4AAC0QAAAtFgAALR0AAC0lAAAtLwAALTkAAC1EAAAtTwAALVcAAC1qAAAtfQAALYoAAC2WAAAtowAALakAAC2uAAAtvAAALcUAAC3QAAAt2gAALiUAAC5IAAAuaAAALogAAC6KAAAujAAALo4AAC6QAAAukgAALpMAAC6UAAAulgAALpcAAC6ZAAAumgAALpwAAC6eAAAunwAALqAAAC6iAAAuowAALqgAAC61AAAuugAALrwAAC6+AAAuwwAALsUAAC7HAAAuyQAALt4AAC8DAAAvJwAAL04AAC9yAAAvdAAAL3YAAC94AAAvegAAL3wAAC9+AAAvfwAAL4EAAC+OAAAvnwAAL6EAAC+jAAAvpQAAL6cAAC+pAAAvqwAAL60AAC+vAAAvwAAAL8IAAC/EAAAvxgAAL8gAAC/KAAAvzAAAL84AAC/QAAAv0gAAMBEAADATAAAwFQAAMBcAADAZAAAwGgAAMBsAADAcAAAwHQAAMB8AADAhAAAwIgAAMCMAADAlAAAwJgAAMGUAADBnAAAwaQAAMGsAADBtAAAwbgAAMG8AADBwAAAwcQAAMHMAADB1AAAwdgAAMHcAADB5AAAwegAAMLkAADC7AAAwvQAAML8AADDBAAAwwgAAMMMAADDEAAAwxQAAMMcAADDJAAAwygAAMMsAADDNAAAwzgAAMNsAADDcAAAw3QAAMN8AADEeAAAxIAAAMSIAADEkAAAxJgAAMScAADEoAAAxKQAAMSoAADEsAAAxLgAAMS8AADEwAAAxMgAAMTMAADFyAAAxdAAAMXYAADF4AAAxegAAMXsAADF8AAAxfQAAMX4AADGAAAAxggAAMYMAADGEAAAxhgAAMYcAADHGAAAxyAAAMcoAADHMAAAxzgAAMc8AADHQAAAx0QAAMdIAADHUAAAx1gAAMdcAADHYAAAx2gAAMdsAADIaAAAyHAAAMh4AADIgAAAyIgAAMiMAADIkAAAyJQAAMiYAADIoAAAyKgAAMisAADIsAAAyLgAAMi8AADJuAAAycAAAMnIAADJ0AAAydgAAMncAADJ4AAAyeQAAMnoAADJ8AAAyfgAAMn8AADKAAAAyggAAMoMAADKoAAAyzAAAMvMAADMXAAAzGQAAMxsAADMdAAAzHwAAMyEAADMjAAAzJAAAMyYAADMzAAAzQgAAM0QAADNGAAAzSAAAM0oAADNMAAAzTgAAM1AAADNfAAAzYQAAM2MAADNlAAAzZwAAM2kAADNrAAAzbQAAM28AADOPAAAzugAAM9QAADPtAAA0BwAANCcAADRKAAA0iQAANIsAADSNAAA0jwAANJEAADSSAAA0kwAANJQAADSVAAA0lwAANJkAADSaAAA0mwAANJ0AADSeAAA0oAAANN8AADThAAA04wAANOUAADTnAAA06AAANOkAADTqAAA06wAANO0AADTvAAA08AAANPEAADTzAAA09AAANTMAADU1AAA1NwAANTkAADU7AAA1PAAANT0AADU+AAA1PwAANUEAADVDAAA1RAAANUUAADVHAAA1SAAANYcAADWJAAA1iwAANY0AADWPAAA1kAAANZEAADWSAAA1kwAANZUAADWXAAA1mAAANZkAADWbAAA1nAAANZ8AADXeAAA14AAANeIAADXkAAA15gAANecAADXoAAA16QAANeoAADXsAAA17gAANe8AADXwAAA18gAANfMAADYyAAA2NAAANjYAADY4AAA2OgAANjsAADY8AAA2PQAANj4AADZAAAA2QgAANkMAADZEAAA2RgAANkcAADaGAAA2iAAANooAADaMAAA2jgAANo8AADaQAAA2kQAANpIAADaUAAA2lgAANpcAADaYAAA2mgAANpsAADakAAA2sgAANr8AADbNAAA22gAANu0AADcEAAA3FgAAN2EAADeEAAA3pAAAN8QAADfGAAA3yAAAN8oAADfMAAA3zgAAN88AADfQAAA30gAAN9MAADfVAAA31gAAN9gAADfaAAA32wAAN9wAADfeAAA33wAAN+QAADfxAAA39gAAN/gAADf6AAA3/wAAOAEAADgDAAA4BQAAOCoAADhOAAA4dQAAOJkAADibAAA4nQAAOJ8AADihAAA4owAAOKUAADimAAA4qAAAOLUAADjGAAA4yAAAOMoAADjMAAA4zgAAONAAADjSAAA41AAAONYAADjnAAA46QAAOOsAADjtAAA47wAAOPEAADjzAAA49QAAOPcAADj5AAA5OAAAOToAADk8AAA5PgAAOUAAADlBAAA5QgAAOUMAADlEAAA5RgAAOUgAADlJAAA5SgAAOUwAADlNAAA5jAAAOY4AADmQAAA5kgAAOZQAADmVAAA5lgAAOZcAADmYAAA5mgAAOZwAADmdAAA5ngAAOaAAADmhAAA54AAAOeIAADnkAAA55gAAOegAADnpAAA56gAAOesAADnsAAA57gAAOfAAADnxAAA58gAAOfQAADn1AAA6AgAAOgMAADoEAAA6BgAAOkUAADpHAAA6SQAAOksAADpNAAA6TgAAOk8AADpQAAA6UQAAOlMAADpVAAA6VgAAOlcAADpZAAA6WgAAOpkAADqbAAA6nQAAOp8AADqhAAA6ogAAOqMAADqkAAA6pQAAOqcAADqpAAA6qgAAOqsAADqtAAA6rgAAOu0AADrvAAA68QAAOvMAADr1AAA69gAAOvcAADr4AAA6+QAAOvsAADr9AAA6/gAAOv8AADsBAAA7AgAAO0EAADtDAAA7RQAAO0cAADtJAAA7SgAAO0sAADtMAAA7TQAAO08AADtRAAA7UgAAO1MAADtVAAA7VgAAO5UAADuXAAA7mQAAO5sAADudAAA7ngAAO58AADugAAA7oQAAO6MAADulAAA7pgAAO6cAADupAAA7qgAAO88AADvzAAA8GgAAPD4AADxAAAA8QgAAPEQAADxGAAA8SAAAPEoAADxLAAA8TQAAPFoAADxpAAA8awAAPG0AADxvAAA8cQAAPHMAADx1AAA8dwAAPIYAADyIAAA8igAAPIwAADyOAAA8kAAAPJIAADyUAAA8lgAAPNUAADzXAAA82QAAPNsAADzdAAA83gAAPN8AADzgAAA84QAAPOMAADzlAAA85gAAPOcAADzpAAA86gAAPSkAAD0rAAA9LQAAPS8AAD0xAAA9MgAAPTMAAD00AAA9NQAAPTcAAD05AAA9OgAAPTsAAD09AAA9PgAAPX0AAD1/AAA9gQAAPYMAAD2FAAA9hgAAPYcAAD2IAAA9iQAAPYsAAD2NAAA9jgAAPY8AAD2RAAA9kgAAPdEAAD3TAAA91QAAPdcAAD3ZAAA92gAAPdsAAD3cAAA93QAAPd8AAD3hAAA94gAAPeMAAD3lAAA95gAAPiUAAD4nAAA+KQAAPisAAD4tAAA+LgAAPi8AAD4wAAA+MQAAPjMAAD41AAA+NgAAPjcAAD45AAA+OgAAPnkAAD57AAA+fQAAPn8AAD6BAAA+ggAAPoMAAD6EAAA+hQAAPocAAD6JAAA+igAAPosAAD6NAAA+jgAAPs0AAD7PAAA+0QAAPtMAAD7VAAA+1gAAPtcAAD7YAAA+2QAAPtsAAD7dAAA+3gAAPt8AAD7hAAA+4gAAPusAAD7+AAA/CwAAPx4AAD8rAAA/PgAAP1UAAD9nAAA/sgAAP9UAAD/1AABAFQAAQBcAAEAZAABAGwAAQB0AAEAfAABAIAAAQCEAAEAjAABAJAAAQCYAAEAnAABAKQAAQCsAAEAsAABALQAAQC8AAEAwAABANQAAQEIAAEBHAABASQAAQEsAAEBQAABAUgAAQFQAAEBWAABAewAAQJ8AAEDGAABA6gAAQOwAAEDuAABA8AAAQPIAAED0AABA9gAAQPcAAED5AABBBgAAQRcAAEEZAABBGwAAQR0AAEEfAABBIQAAQSMAAEElAABBJwAAQTgAAEE6AABBPAAAQT4AAEFAAABBQgAAQUQAAEFGAABBSAAAQUoAAEGJAABBiwAAQY0AAEGPAABBkQAAQZIAAEGTAABBlAAAQZUAAEGXAABBmQAAQZoAAEGbAABBnQAAQZ4AAEHdAABB3wAAQeEAAEHjAABB5QAAQeYAAEHnAABB6AAAQekAAEHrAABB7QAAQe4AAEHvAABB8QAAQfIAAEIxAABCMwAAQjUAAEI3AABCOQAAQjoAAEI7AABCPAAAQj0AAEI/AABCQQAAQkIAAEJDAABCRQAAQkYAAEJTAABCVAAAQlUAAEJXAABClgAAQpgAAEKaAABCnAAAQp4AAEKfAABCoAAAQqEAAEKiAABCpAAAQqYAAEKnAABCqAAAQqoAAEKrAABC6gAAQuwAAELuAABC8AAAQvIAAELzAABC9AAAQvUAAEL2AABC+AAAQvoAAEL7AABC/AAAQv4AAEL/AABDPgAAQ0AAAENCAABDRAAAQ0YAAENHAABDSAAAQ0kAAENKAABDTAAAQ04AAENPAABDUAAAQ1IAAENTAABDkgAAQ5QAAEOWAABDmAAAQ5oAAEObAABDnAAAQ50AAEOeAABDoAAAQ6IAAEOjAABDpAAAQ6YAAEOnAABD5gAAQ+gAAEPqAABD7AAAQ+4AAEPvAABD8AAAQ/EAAEPyAABD9AAAQ/YAAEP3AABD+AAAQ/oAAEP7AABEIAAAREQAAERrAABEjwAARJEAAESTAABElQAARJcAAESZAABEmwAARJwAAESeAABEqwAARLoAAES8AABEvgAARMAAAETCAABExAAARMYAAETIAABE1wAARNkAAETbAABE3QAARN8AAETiAABE5QAAROgAAETqAABFKQAARSsAAEUtAABFLwAARTEAAEUyAABFMwAARTQAAEU1AABFNwAARTkAAEU6AABFOwAART0AAEU+AABFfQAARX8AAEWBAABFgwAARYUAAEWGAABFhwAARYgAAEWJAABFiwAARY0AAEWOAABFjwAARZEAAEWSAABF0QAARdMAAEXVAABF1wAARdkAAEXaAABF2wAARdwAAEXdAABF3wAAReEAAEXiAABF4wAAReUAAEXmAABGJQAARicAAEYpAABGKwAARi0AAEYuAABGLwAARjAAAEYxAABGMwAARjUAAEY2AABGNwAARjkAAEY6AABGfQAARqEAAEbFAABG6AAARw8AAEcvAABHVgAAR30AAEedAABHwQAAR+UAAEfnAABH6QAAR+sAAEftAABH7wAAR/EAAEf0AABH9gAAR/gAAEf7AABH/QAAR/8AAEgCAABIBAAASAUAAEgKAABIFwAASBoAAEgcAABIHwAASCEAAEgjAABISAAASGwAAEiTAABItwAASLkAAEi7AABIvQAASL8AAEjBAABIwwAASMQAAEjGAABI0wAASOYAAEjoAABI6gAASOwAAEjuAABI8AAASPIAAEj0AABI9gAASPgAAEkLAABJDQAASQ8AAEkRAABJEwAASRUAAEkXAABJGQAASRsAAEkdAABJHwAASV4AAElgAABJYgAASWQAAElmAABJZwAASWgAAElpAABJagAASWwAAEluAABJbwAASXAAAElyAABJcwAASXwAAEl9AABJfwAASb4AAEnAAABJwgAAScQAAEnGAABJxwAAScgAAEnJAABJygAAScwAAEnOAABJzwAASdAAAEnSAABJ0wAAShIAAEoUAABKFgAAShgAAEoaAABKGwAAShwAAEodAABKHgAASiAAAEoiAABKIwAASiQAAEomAABKJwAASjAAAEoxAABKMwAASnIAAEp0AABKdgAASngAAEp6AABKewAASnwAAEp9AABKfgAASoAAAEqCAABKgwAASoQAAEqGAABKhwAASsYAAErIAABKygAASswAAErOAABKzwAAStAAAErRAABK0gAAStQAAErWAABK1wAAStgAAEraAABK2wAASuQAAErlAABK5wAASyYAAEsoAABLKgAASywAAEsuAABLLwAASzAAAEsxAABLMgAASzQAAEs2AABLNwAASzgAAEs6AABLOwAAS3oAAEt8AABLfgAAS4AAAEuCAABLgwAAS4QAAEuFAABLhgAAS4gAAEuKAABLiwAAS4wAAEuOAABLjwAAS5wAAEudAABLngAAS6AAAEvfAABL4QAAS+MAAEvlAABL5wAAS+gAAEvpAABL6gAAS+sAAEvtAABL7wAAS/AAAEvxAABL8wAAS/QAAEwzAABMNQAATDcAAEw5AABMOwAATDwAAEw9AABMPgAATD8AAExBAABMQwAATEQAAExFAABMRwAATEgAAExVAABMXgAATGAAAExiAABMZAAATGYAAExvAABMcQAATHQAAEx3AABMegAATHwAAEyLAABMnQAATKoAAEz1AABNGAAATTgAAE1YAABNWgAATVwAAE1eAABNYAAATWIAAE1jAABNZAAATWYAAE1nAABNaQAATWoAAE1sAABNbgAATW8AAE1wAABNcgAATXMAAE14AABNhQAATYoAAE2MAABNjgAATZMAAE2VAABNlwAATZkAAE2+AABN4gAATgkAAE4tAABOLwAATjEAAE4zAABONQAATjcAAE45AABOOgAATjwAAE5J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AABp2AAAadoAAGnpAABp7AAAae8AAGnyAABp9QAAafgAAGn7AABp/gAAagAAAGo/AABqQQAAakMAAGpFAABqSAAAakkAAGpKAABqSwAAakwAAGpOAABqUAAAalEAAGpSAABqVAAAalUAAGqUAABqlgAAapgAAGqaAABqnQAAap4AAGqfAABqoAAAaqEAAGqjAABqpQAAaqYAAGqnAABqqQAAaqoAAGrpAABq6wAAau0AAGrvAABq8gAAavMAAGr0AABq9QAAavYAAGr4AABq+gAAavsAAGr8AABq/gAAav8AAGs+AABrQAAAa0MAAGtFAABrSAAAa0kAAGtKAABrSwAAa0wAAGtOAABrUAAAa1EAAGtSAABrVAAAa1UAAGuYAABrvAAAa+AAAGwDAABsKgAAbEoAAGxxAABsmAAAbLgAAGzcAABtAAAAbQIAAG0FAABtBwAAbQkAAG0LAABtDgAAbREAAG0TAABtFQAAbRgAAG0aAABtHAAAbR8AAG0iAABtIwAAbSgAAG01AABtOAAAbToAAG09AABtQAAAbUIAAG1nAABtiwAAbbIAAG3WAABt2QAAbdsAAG3dAABt3wAAbeEAAG3jAABt5AAAbecAAG30AABuBwAAbgkAAG4LAABuDQAAbg8AAG4RAABuEwAAbhUAAG4XAABuGQAAbiwAAG4vAABuMgAAbjUAAG44AABuOwAAbj4AAG5BAABuRAAAbkcAAG5JAABuiAAAbooAAG6NAABujwAAbpIAAG6TAABulAAAbpUAAG6WAABumAAAbpoAAG6bAABunAAAbp4AAG6fAABuqAAAbqkAAG6rAABu6gAAbuwAAG7vAABu8QAAbvQAAG71AABu9gAAbvcAAG74AABu+gAAbvwAAG79AABu/gAAbwAAAG8BAABvDwAAb04AAG9QAABvUwAAb1UAAG9YAABvWQAAb1oAAG9bAABvXAAAb14AAG9gAABvYQAAb2IAAG9kAABvZQAAb24AAG9vAABvcQAAb7AAAG+yAABvtAAAb7YAAG+5AABvugAAb7sAAG+8AABvvQAAb78AAG/BAABvwgAAb8MAAG/FAABvxgAAcAUAAHAHAABwCgAAcAwAAHAPAABwEAAAcBEAAHASAABwEwAAcBUAAHAXAABwGAAAcBkAAHAbAABwHAAAcCUAAHAmAABwKAAAcGcAAHBp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AACIaAAAiGoAAIhsAACIbgAAiHEAAIhyAACIcwAAiHQAAIh1AACIdwAAiHkAAIh6AACIewAAiH0AAIh+AACIvQAAiL8AAIjBAACIwwAAiMYAAIjHAACIyAAAiMkAAIjKAACIzAAAiM4AAIjPAACI0AAAiNIAAIjTAACJEgAAiRQAAIkWAACJGAAAiRsAAIkcAACJHQAAiR4AAIkfAACJIQAAiSMAAIkkAACJJQAAiScAAIkoAACJZwAAiWkAAIlrAACJbQAAiXAAAIlxAACJcgAAiXMAAIl0AACJdgAAiXgAAIl5AACJegAAiXwAAIl9AACJvAAAib4AAInAAACJwgAAicUAAInGAACJxwAAicgAAInJAACJywAAic0AAInOAACJzwAAidEAAInSAACJ9wAAihsAAIpCAACKZgAAimkAAIprAACKbQAAim8AAIpxAACKcwAAinQAAIp3AACKhAAAipMAAIqVAACKlwAAipkAAIqbAACKnQAAip8AAIqhAACKsAAAirMAAIq2AACKuQAAirwAAIq/AACKwgAAisUAAIrHAACLBgAAiwgAAIsKAACLDAAAiw8AAIsQAACLEQAAixIAAIsTAACLFQAAixcAAIsYAACLGQAAixsAAIscAACLWwAAi10AAItfAACLYQAAi2QAAItlAACLZgAAi2cAAItoAACLagAAi2wAAIttAACLbgAAi3AAAItxAACLsAAAi7IAAIu0AACLtgAAi7kAAIu6AACLuwAAi7wAAIu9AACLvwAAi8EAAIvCAACLwwAAi8UAAIvGAACMBQAAjAcAAIwKAACMDAAAjA8AAIwQAACMEQAAjBIAAIwTAACMFQAAjBcAAIwYAACMGQAAjBsAAIwcAACMWwAAjF0AAIxfAACMYQAAjGQAAIxlAACMZgAAjGcAAIxoAACMagAAjGwAAIxtAACMbgAAjHAAAIxxAACMsAAAjLIAAIy0AACMtgAAjLkAAIy6AACMuwAAjLwAAIy9AACMvwAAjMEAAIzCAACMwwAAjMUAAIzGAACNBQAAjQcAAI0JAACNCwAAjQ4AAI0PAACNEAAAjREAAI0SAACNFAAAjRYAAI0XAACNGAAAjRoAAI0bAACNZgAAjYkAAI2pAACNyQAAjcsAAI3NAACNzwAAjdEAAI3UAACN1QAAjdYAAI3ZAACN2gAAjdwAAI3d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AACkEQAApBIAAKQUAACkFQAApFQAAKRWAACkWAAApFoAAKRdAACkXgAApF8AAKRgAACkYQAApGMAAKRlAACkZgAApGcAAKRpAACkagAApKkAAKSrAACkrQAApK8AAKSyAACkswAApLQAAKS1AACktgAApLgAAKS6AACkuwAApLwAAKS+AACkvwAApP4AAKUAAAClAgAApQQAAKUHAAClCAAApQkAAKUKAAClCwAApQ0AAKUPAAClEAAApREAAKUTAAClFAAApV8AAKWCAAClogAApcIAAKXEAAClxgAApcgAAKXKAAClzQAApc4AAKXPAACl0gAApdMAAKXVAACl1gAApdgAAKXbAACl3AAApd0AAKXgAACl4QAApeYAAKXzAACl+AAApfoAAKX8AACmAQAApgQAAKYHAACmCQAApi4AAKZSAACmeQAApp0AAKagAACmogAApqQAAKamAACmqAAApqoAAKarAACmrgAAprsAAKbMAACmzgAAptAAAKbSAACm1AAAptYAAKbYAACm2gAAptwAAKbtAACm8AAApvMAAKb2AACm+QAApvwAAKb/AACnAgAApwUAAKcHAACnRgAAp0gAAKdKAACnTAAAp08AAKdQAACnUQAAp1IAAKdTAACnVQAAp1cAAKdYAACnWQAAp1sAAKdcAACnmwAAp50AAKefAACnoQAAp6QAAKelAACnpgAAp6cAAKeoAACnqgAAp6wAAKetAACnrgAAp7AAAKexAACn8AAAp/IAAKf1AACn9wAAp/oAAKf7AACn/AAAp/0AAKf+AACoAAAAqAIAAKgDAACoBAAAqAYAAKgHAACoFAAAqBUAAKgWAACoGAAAqFcAAKhZAACoWwAAqF0AAKhgAACoYQAAqGIAAKhjAACoZAAAqGYAAKhoAACoaQAAqGoAAKhsAACobQAAqKwAAKiuAACosAAAqLIAAKi1AACotgAAqLcAAKi4AACouQAAqLsAAKi9AACovgAAqL8AAKjBAACowgAAqQEAAKkDAACpBQAAqQcAAKkKAACpCwAAqQwAAKkNAACpDgAAqRAAAKkSAACpEwAAqRQAAKkWAACpFwAAqVYAAKlYAACpWgAAqVwAAKlfAACpYAAAqWEAAKliAACpYwAAqWUAAKlnAACpaAAAqWkAAKlrAACpbAAAqasAAKmtAACprwAAqbEAAKm0AACptQAAqbYAAKm3AACpuAAAqboAAKm8AACpvQAAqb4AAKnAAACpwQAAqeYAAKoKAACqMQAAqlUAAKpYAACqWgAAqlwAAKpeAACqYAAAqmIAAKpjAACqZgAAqnMAAKqCAACqhAAAqoYAAKqIAACqigAAqowAAKqOAACqkAAAqp8AAKqiAACqpQAAqqgAAKqrAACqrgAAqrEAAKq0AACqtgAAqvUAAKr3AACq+QAAqvsAAKr+AACq/wAAqwAAAKsBAACrAgAAqwQAAKsGAACrBwAAqwgAAKsKAACrCwAAq0oAAKtMAACrTgAAq1AAAKtTAACrVAAAq1UAAKtWAACrVwAAq1kAAKtbAACrXAAAq10AAKtfAACrYAAAq58AAKuhAACrowAAq6UAAKuoAACrqQAAq6oAAKurAACrrAAAq64AAKuwAACrsQAAq7IAAKu0AACrtQAAq/QAAKv2AACr+QAAq/sAAKv+AACr/wAArAAAAKwBAACsAgAArAQAAKwGAACsBwAArAgAAKwKAACsCwAArEoAAKxMAACsTgAArFAAAKxTAACsVAAArFUAAKxWAACsVwAArFkAAKxbAACsXAAArF0AAKxfAACsYAAArJ8AAKyhAACsowAArKUAAKyoAACsqQAArKoAAKyrAACsrAAArK4AAKywAACssQAArLIAAKy0AACstQAArPQAAKz2AACs+AAArPoAAKz9AACs/gAArP8AAK0AAACtAQAArQMAAK0FAACtBgAArQcAAK0JAACtCgAArVUAAK14AACtmAAArbgAAK26AACtvAAArb4AAK3AAACtwwAArcQAAK3FAACtyAAArckAAK3LAACtzAAArc4AAK3RAACt0gAArdMAAK3WAACt1wAArdwAAK3pAACt7gAArfAAAK3yAACt9wAArfoAAK39AACt/wAAriQAAK5IAACubwAArpMAAK6WAACumAAArpoAAK6cAACungAArqAAAK6hAACupAAArrEAAK7CAACuxAAArsYAAK7IAACuygAArswAAK7OAACu0AAArtIAAK7jAACu5gAArukAAK7sAACu7wAArvIAAK71AACu+AAArvsAAK79AACvPAAArz4AAK9AAACvQgAAr0UAAK9GAACvRwAAr0gAAK9JAACvSwAAr00AAK9OAACvTwAAr1EAAK9SAACvkQAAr5MAAK+VAACvlwAAr5oAAK+bAACvnAAAr50AAK+eAACvoAAAr6IAAK+jAACvpAAAr6YAAK+nAACv5gAAr+gAAK/rAACv7QAAr/AAAK/xAACv8gAAr/MAAK/0AACv9gAAr/gAAK/5AACv+gAAr/wAAK/9AACwCgAAsAsAALAMAACwDgAAsE0AALBPAACwUQAAsFMAALBWAACwVwAAsFgAALBZAACwWgAAsFwAALBeAACwXwAAsGAAALBiAACwYwAAsKIAALCkAACwpgAAsKgAALCrAACwrAAAsK0AALCuAACwrwAAsLEAALCzAACwtAAAsLUAALC3AACwuAAAsPcAALD5AACw+wAAsP0AALEAAACxAQAAsQIAALEDAACxBAAAsQYAALEIAACxCQAAsQoAALEMAACxDQAAsUwAALFOAACxUAAAsVIAALFVAACxVgAAsVcAALFYAACxWQAAsVsAALFdAACxXgAAsV8AALFhAACxYgAAsaEAALGjAACxpQAAsacAALGqAACxqwAAsawAALGtAACxrgAAsbAAALGyAACxswAAsbQAALG2AACxtwAAsdwAALIAAACyJwAAsksAALJOAACyUAAAslIAALJUAACyVgAAslgAALJZAACyXAAAsmkAALJ4AACyegAAsnwAALJ+AACygAAAsoIAALKEAACyhgAAspUAALKYAACymwAAsp4AALKhAACypAAAsqcAALKqAACyrAAAsusAALLtAACy7wAAsvEAALL0AACy9QAAsvYAALL3AACy+AAAsvoAALL8AACy/QAAsv4AALMAAACzAQAAs0AAALNCAACzRAAAs0YAALNJAACzSgAAs0sAALNMAACzTQAAs08AALNRAACzUgAAs1MAALNVAACzVgAAs5UAALOXAACzmQAAs5sAALOeAACznwAAs6AAALOhAACzogAAs6QAALOmAACzpwAAs6gAALOqAACzqwAAs+oAALPsAACz7wAAs/EAALP0AACz9QAAs/YAALP3AACz+AAAs/oAALP8AACz/QAAs/4AALQAAAC0AQAAtEAAALRCAAC0RAAAtEYAALRJAAC0SgAAtEsAALRMAAC0TQAAtE8AALRRAAC0UgAAtFMAALRVAAC0VgAAtJUAALSXAAC0mQAAtJsAALSeAAC0nwAAtKAAALShAAC0ogAAtKQAALSmAAC0pwAAtKgAALSq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AADQ8AAA0PEAANDyAADQ8wAA0PQAAND2AADQ+AAA0PkAAND6AADQ/AAA0P0AANE8AADRPgAA0UAAANFCAADRRQAA0UYAANFHAADRSAAA0UkAANFLAADRTQAA0U4AANFPAADRUQAA0VIAANGRAADRkwAA0ZUAANGXAADRmgAA0ZsAANGcAADRnQAA0Z4AANGgAADRogAA0aMAANGkAADRpgAA0acAANHMAADR8AAA0hcAANI7AADSPgAA0kAAANJCAADSRAAA0kYAANJIAADSSQAA0kwAANJZAADSaAAA0moAANJsAADSbgAA0nAAANJyAADSdAAA0nYAANKFAADSiAAA0osAANKOAADSkQAA0pQAANKXAADSmgAA0pwAANLbAADS3QAA0t8AANLhAADS5AAA0uUAANLmAADS5wAA0ugAANLqAADS7AAA0u0AANLuAADS8AAA0vEAANMwAADTMgAA0zQAANM2AADTOQAA0zoAANM7AADTPAAA0z0AANM/AADTQQAA00IAANNDAADTRQAA00YAANOFAADThwAA04kAANOLAADTjgAA048AANOQAADTkQAA05IAANOUAADTlgAA05cAANOYAADTmgAA05sAANPaAADT3AAA098AANPhAADT5AAA0+UAANPmAADT5wAA0+gAANPqAADT7AAA0+0AANPuAADT8AAA0/EAANQwAADUMgAA1DQAANQ2AADUOQAA1DoAANQ7AADUPAAA1D0AANQ/AADUQQAA1EIAANRDAADURQAA1EYAANSFAADUhwAA1IkAANSLAADUjgAA1I8AANSQAADUkQAA1JIAANSUAADUlgAA1JcAANSYAADUmgAA1JsAANTaAADU3AAA1N4AANTgAADU4wAA1OQAANTlAADU5gAA1OcAANTpAADU6wAA1OwAANTtAADU7wAA1PAAANU7AADVXgAA1X4AANWeAADVoAAA1aIAANWkAADVpgAA1akAANWqAADVqwAA1a4AANWvAADVsQAA1bIAANW0AADVtwAA1bgAANW5AADVvAAA1b0AANXGAADV0wAA1dgAANXaAADV3AAA1eEAANXkAADV5wAA1ekAANYOAADWMgAA1lkAANZ9AADWgAAA1oIAANaEAADWhgAA1ogAANaKAADWiwAA1o4AANabAADWrAAA1q4AANawAADWsgAA1rQAANa2AADWuAAA1roAANa8AADWzQAA1tAAANbTAADW1gAA1tkAANbcAADW3wAA1uIAANblAADW5wAA1yYAANcoAADXKgAA1ywAANcvAADXMAAA1zEAANcyAADXMwAA1zUAANc3AADXOAAA1zkAANc7AADXPAAA13sAANd9AADXfwAA14EAANeEAADXhQAA14YAANeHAADXiAAA14oAANeMAADXjQAA144AANeQAADXkQAA19AAANfSAADX1QAA19cAANfaAADX2wAA19wAANfdAADX3gAA1+AAANfiAADX4wAA1+QAANfmAADX5wAA1/QAANf1AADX9gAA1/gAANg3AADYOQAA2DsAANg9AADYQAAA2EEAANhCAADYQwAA2EQAANhGAADYSAAA2EkAANhKAADYTAAA2E0AANiMAADYjgAA2JAAANiSAADYlQAA2JYAANiXAADYmAAA2JkAANibAADYnQAA2J4AANifAADYoQAA2KIAANjhAADY4wAA2OUAANjnAADY6gAA2OsAANjsAADY7QAA2O4AANjwAADY8gAA2PMAANj0AADY9gAA2PcAANk2AADZOAAA2ToAANk8AADZPwAA2UAAANlBAADZQgAA2UMAANlFAADZRwAA2UgAANlJAADZSwAA2UwAANmLAADZjQAA2Y8AANmRAADZlAAA2ZUAANmWAADZlwAA2ZgAANmaAADZnAAA2Z0AANmeAADZoAAA2aEAANnGAADZ6gAA2hEAANo1AADaOAAA2joAANo8AADaPgAA2kAAANpCAADaQwAA2kYAANpTAADaYgAA2mQAANpmAADaaAAA2moAANpsAADabgAA2nAAANp/AADaggAA2oUAANqIAADaiwAA2o4AANqRAADalAAA2pYAANrVAADa1wAA2tkAANrbAADa3gAA2t8AANrgAADa4QAA2uIAANrkAADa5gAA2ucAANroAADa6gAA2usAANsqAADbLAAA2y4AANswAADbMwAA2zQAANs1AADbNgAA2zcAANs5AADbOwAA2zwAANs9AADbPwAA20AAANt/AADbgQAA24MAANuFAADbiAAA24kAANuKAADbiwAA24wAANuOAADbkAAA25EAANuSAADblAAA25UAANvUAADb1gAA29kAANvbAADb3gAA298AANvgAADb4QAA2+IAANvkAADb5gAA2+cAANvoAADb6gAA2+sAANwqAADcLAAA3C4AANwwAADcMwAA3DQAANw1AADcNgAA3DcAANw5AADcOwAA3DwAANw9AADcPwAA3EAAANx/AADcgQAA3IMAANyFAADciAAA3IkAANyKAADciwAA3IwAANyOAADckAAA3JEAANySAADclAAA3JUAANzUAADc1gAA3NgAANzaAADc3QAA3N4AANzfAADc4AAA3OEAANzjAADc5QAA3OYAANznAADc6QAA3OoAAN01AADdWAAA3XgAAN2YAADdmgAA3ZwAAN2eAADdoAAA3aMAAN2kAADdpQAA3agAAN2pAADdqwAA3awAAN2uAADdsAAA3bEAAN2yAADdtQAA3bYAAN27AADdyAAA3c0AAN3PAADd0QAA3dYAAN3ZAADd3AAA3d4AAN4DAADeJwAA3k4AAN5yAADedQAA3ncAAN55AADeewAA3n0AAN5/AADegAAA3oMAAN6QAADeoQAA3qMAAN6lAADepwAA3qkAAN6rAADerQAA3q8AAN6xAADewgAA3sUAAN7IAADeywAA3s4AAN7RAADe1AAA3tcAAN7aAADe3AAA3xsAAN8dAADfHwAA3yEAAN8kAADfJQAA3yYAAN8nAADfKAAA3yoAAN8sAADfLQAA3y4AAN8wAADfMQAA33AAAN9yAADfdAAA33YAAN95AADfegAA33sAAN98AADffQAA338AAN+BAADfggAA34MAAN+FAADfhgAA38UAAN/HAADfygAA38wAAN/PAADf0AAA39EAAN/SAADf0wAA39UAAN/XAADf2AAA39kAAN/bAADf3AAA3+kAAN/qAADf6wAA3+0AAOAsAADgLgAA4DAAAOAyAADgNQAA4DYAAOA3AADgOAAA4DkAAOA7AADgPQAA4D4AAOA/AADgQQAA4EIAAOCBAADggwAA4IUAAOCHAADgigAA4IsAAOCMAADgjQAA4I4AAOCQAADgkgAA4JMAAOCUAADglgAA4JcAAODWAADg2AAA4NoAAODcAADg3wAA4OAAAODhAADg4gAA4OMAAODlAADg5wAA4OgAAODpAADg6wAA4OwAAOErAADhLQAA4S8AAOExAADhNAAA4TUAAOE2AADhNwAA4TgAAOE6AADhPAAA4T0AAOE+AADhQAAA4UEAAOGAAADhggAA4YQAAOGGAADhiQAA4YoAAOGLAADhjAAA4Y0AAOGPAADhkQAA4ZIAAOGTAADhlQAA4ZYAAOG7AADh3wAA4gYAAOIqAADiLQAA4i8AAOIxAADiMwAA4jUAAOI3AADiOAAA4jsAAOJIAADiVwAA4lkAAOJbAADiXQAA4l8AAOJhAADiYwAA4mUAAOJ0AADidwAA4noAAOJ9AADigAAA4oMAAOKGAADiiQAA4osAAOLKAADizAAA4s4AAOLQAADi0wAA4tQAAOLVAADi1gAA4tcAAOLZAADi2wAA4twAAOLdAADi3wAA4uAAAOMfAADjIQAA4yMAAOMlAADjKAAA4ykAAOMqAADjKwAA4ywAAOMuAADjMAAA4zEAAOMyAADjNAAA4zUAAON0AADjdgAA43gAAON6AADjfQAA434AAON/AADjgAAA44EAAOODAADjhQAA44YAAOOHAADjiQAA44oAAOPJAADjywAA484AAOPQAADj0wAA49QAAOPVAADj1gAA49cAAOPZAADj2wAA49wAAOPdAADj3wAA4+AAAOQfAADkIQAA5CMAAOQlAADkKAAA5CkAAOQqAADkKwAA5CwAAOQuAADkMAAA5DEAAOQyAADkNAAA5DUAAOR0AADkdgAA5HgAAOR6AADkfQAA5H4AAOR/AADkgAAA5IEAAOSDAADkhQAA5IYAAOSHAADkiQAA5IoAAOTJAADkywAA5M0AAOTPAADk0gAA5NMAAOTUAADk1QAA5NYAAOTYAADk2gAA5NsAAOTcAADk3gAA5N8AAOUqAADlTQAA5W0AAOWNAADljwAA5ZEAAOWTAADllQAA5ZgAAOWZAADlmgAA5Z0AAOWeAADloAAA5aEAAOWjAADlpgAA5acAAOWoAADlqwAA5awAAOWxAADlvgAA5cMAAOXFAADlxwAA5cwAAOXPAADl0gAA5dQAAOX5AADmHQAA5kQAAOZoAADmawAA5m0AAOZvAADmcQAA5nMAAOZ1AADmdgAA5nkAAOaGAADmlwAA5pkAAOabAADmnQAA5p8AAOahAADmowAA5qUAAOanAADmuAAA5rsAAOa+AADmwQAA5sQAAObHAADmygAA5s0AAObQAADm0gAA5xEAAOcTAADnFQAA5xcAAOcaAADnGwAA5xwAAOcdAADnHgAA5yAAAOciAADnIwAA5yQAAOcmAADnJwAA52YAAOdoAADnagAA52wAAOdvAADncAAA53EAAOdyAADncwAA53UAAOd3AADneAAA53kAAOd7AADnfAAA57sAAOe9AADnwAAA58IAAOfFAADnxgAA58cAAOfIAADnyQAA58sAAOfNAADnzgAA588AAOfRAADn0gAA598AAOfgAADn4QAA5+MAAOgiAADoJAAA6CYAAOgoAADoKwAA6CwAAOgtAADoLgAA6C8AAOgxAADoMwAA6DQAAOg1AADoNwAA6DgAAOh3AADoeQAA6HsAAOh9AADogAAA6IEAAOiCAADogwAA6IQAAOiGAADoiAAA6IkAAOiKAADojAAA6I0AAOjMAADozgAA6NAAAOjSAADo1QAA6NYAAOjXAADo2AAA6NkAAOjbAADo3QAA6N4AAOjfAADo4QAA6OIAAOkhAADpIwAA6SYAAOkoAADpKwAA6SwAAOktAADpLgAA6S8AAOkxAADpMwAA6TQAAOk1AADpNwAA6TgAAOlLAADpigAA6YwAAOmOAADpkAAA6ZMAAOmUAADplQAA6ZYAAOmXAADpmQAA6ZsAAOmcAADpnQAA6Z8AAOmgAADpxQAA6ekAAOoQAADqNAAA6jcAAOo5AADqOwAA6j0AAOo/AADqQQAA6kIAAOpFAADqUgAA6mEAAOpjAADqZQAA6mcAAOppAADqawAA6m0AAOpvAADqfgAA6oEAAOqEAADqhwAA6ooAAOqNAADqkAAA6pMAAOqVAADq1AAA6tYAAOrYAADq2gAA6t0AAOreAADq3wAA6uAAAOrhAADq4wAA6uUAAOrmAADq5wAA6ukAAOrqAADrKQAA6ysAAOstAADrLwAA6zIAAOszAADrNAAA6zUAAOs2AADrOAAA6zoAAOs7AADrPAAA6z4AAOs/AADrfgAA64AAAOuCAADrhAAA64cAAOuIAADriQAA64oAAOuLAADrjQAA648AAOuQAADrkQAA65MAAOuUAADr0wAA69UAAOvYAADr2gAA690AAOveAADr3wAA6+AAAOvhAADr4wAA6+UAAOvmAADr5wAA6+kAAOvqAADsKQAA7CsAAOwtAADsLwAA7DIAAOwzAADsNAAA7DUAAOw2AADsOAAA7DoAAOw7AADsPAAA7D4AAOw/AADsfgAA7IAAAOyCAADshAAA7IcAAOyIAADsiQAA7IoAAOyLAADsjQAA7I8AAOyQAADskQAA7JMAAOyU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AAEDHQABAx8AAQMgAAEDXwABA2EAAQNjAAEDZQABA2gAAQNpAAEDagABA2sAAQNsAAEDbgABA3AAAQNxAAEDcgABA3QAAQN1AAEDtAABA7YAAQO5AAEDuwABA74AAQO/AAEDwAABA8EAAQPCAAEDxAABA8YAAQPHAAEDyAABA8oAAQPLAAEECgABBAwAAQQOAAEEEAABBBMAAQQUAAEEFQABBBYAAQQXAAEEGQABBBsAAQQcAAEEHQABBB8AAQQgAAEEXwABBGEAAQRjAAEEZQABBGgAAQRpAAEEagABBGsAAQRsAAEEbgABBHAAAQRxAAEEcgABBHQAAQR1AAEEtAABBLYAAQS4AAEEugABBL0AAQS+AAEEvwABBMAAAQTBAAEEwwABBMUAAQTGAAEExwABBMkAAQTKAAEFFQABBTgAAQVYAAEFeAABBXoAAQV8AAEFfgABBYAAAQWDAAEFhAABBYUAAQWIAAEFiQABBYsAAQWMAAEFjgABBZEAAQWSAAEFkwABBZYAAQWXAAEFnAABBakAAQWuAAEFsAABBbIAAQW3AAEFugABBb0AAQW/AAEF5AABBggAAQYvAAEGUwABBlYAAQZYAAEGWgABBlwAAQZeAAEGYAABBmEAAQZkAAEGcQABBoIAAQaEAAEGhgABBogAAQaKAAEGjAABBo4AAQaQAAEGkgABBqMAAQamAAEGqQABBqwAAQavAAEGsgABBrUAAQa4AAEGuwABBr0AAQb8AAEG/gABBwAAAQcCAAEHBQABBwYAAQcHAAEHCAABBwkAAQcLAAEHDQABBw4AAQcPAAEHEQABBxIAAQdRAAEHUwABB1UAAQdXAAEHWgABB1sAAQdcAAEHXQABB14AAQdgAAEHYgABB2MAAQdkAAEHZgABB2cAAQemAAEHqAABB6sAAQetAAEHsAABB7EAAQeyAAEHswABB7QAAQe2AAEHuAABB7kAAQe6AAEHvAABB70AAQfKAAEHywABB8wAAQfOAAEIDQABCA8AAQgRAAEIEwABCBYAAQgXAAEIGAABCBkAAQgaAAEIHAABCB4AAQgfAAEIIAABCCIAAQgjAAEIYgABCGQAAQhmAAEIaAABCGsAAQhsAAEIbQABCG4AAQhvAAEIcQABCHMAAQh0AAEIdQABCHcAAQh4AAEItwABCLkAAQi7AAEIvQABCMAAAQjBAAEIwgABCMMAAQjEAAEIxgABCMgAAQjJAAEIygABCMwAAQjNAAEJDAABCQ4AAQkRAAEJEwABCRYAAQkXAAEJGAABCRkAAQkaAAEJHAABCR4AAQkfAAEJIAABCSIAAQkjAAEJNwABCXYAAQl4AAEJegABCXwAAQl/AAEJgAABCYEAAQmCAAEJgwABCYUAAQmHAAEJiAABCYkAAQmLAAEJjAABCbEAAQnVAAEJ/AABCiAAAQojAAEKJQABCicAAQopAAEKKwABCi0AAQouAAEKMQABCj4AAQpNAAEKTwABClEAAQpTAAEKVQABClcAAQpZAAEKWwABCmoAAQptAAEKcAABCnMAAQp2AAEKeQABCnwAAQp/AAEKgQABCsAAAQrCAAEKxAABCsYAAQrJAAEKygABCssAAQrMAAEKzQABCs8AAQrRAAEK0gABCtMAAQrVAAEK1gABCxUAAQsXAAELGQABCxsAAQseAAELHwABCyAAAQshAAELIgABCyQAAQsmAAELJwABCygAAQsqAAELKwABC2oAAQtsAAELbgABC3AAAQtzAAELdAABC3UAAQt2AAELdwABC3kAAQt7AAELfAABC30AAQt/AAELgAABC78AAQvBAAELxAABC8YAAQvJAAELygABC8sAAQvMAAELzQABC88AAQvRAAEL0gABC9MAAQvVAAEL1gABDBUAAQwXAAEMGQABDBsAAQweAAEMHwABDCAAAQwhAAEMIgABDCQAAQwmAAEMJwABDCgAAQwqAAEMKwABDGoAAQxsAAEMbgABDHAAAQxzAAEMdAABDHUAAQx2AAEMdwABDHkAAQx7AAEMfAABDH0AAQx/AAEMgAABDL8AAQzBAAEMwwABDMUAAQzIAAEMyQABDMoAAQzLAAEMzAABDM4AAQzQAAEM0QABDNIAAQzUAAEM1QABDSAAAQ1DAAENYwABDYMAAQ2FAAENhwABDYkAAQ2LAAENjgABDY8AAQ2QAAENkwABDZQAAQ2WAAENlwABDZkAAQ2cAAENnQABDZ4AAQ2hAAENogABDasAAQ24AAENvQABDb8AAQ3BAAENxgABDckAAQ3MAAENzgABDfMAAQ4XAAEOPgABDmIAAQ5lAAEOZwABDmkAAQ5rAAEObQABDm8AAQ5wAAEOcwABDoAAAQ6RAAEOkwABDpUAAQ6XAAEOmQABDpsAAQ6dAAEOnwABDqEAAQ6yAAEOtQABDrgAAQ67AAEOvgABDsEAAQ7EAAEOxwABDsoAAQ7MAAEPCwABDw0AAQ8PAAEPEQABDxQAAQ8VAAEPFgABDxcAAQ8YAAEPGgABDxwAAQ8dAAEPHgABDyAAAQ8hAAEPYAABD2IAAQ9kAAEPZgABD2kAAQ9qAAEPawABD2wAAQ9tAAEPbwABD3EAAQ9yAAEPcwABD3UAAQ92AAEPtQABD7cAAQ+6AAEPvAABD78AAQ/AAAEPwQABD8IAAQ/DAAEPxQABD8cAAQ/IAAEPyQABD8sAAQ/MAAEP2QABD9oAAQ/bAAEP3QABEBwAARAeAAEQIAABECIAARAlAAEQJgABECcAARAoAAEQKQABECsAARAtAAEQLgABEC8AARAxAAEQMgABEHEAARBzAAEQdQABEHcAARB6AAEQewABEHwAARB9AAEQfgABEIAAARCCAAEQgwABEIQAARCGAAEQhwABEMYAARDIAAEQygABEMwAARDPAAEQ0AABENEAARDSAAEQ0wABENUAARDXAAEQ2AABENkAARDbAAEQ3AABERsAAREdAAERIAABESIAARElAAERJgABEScAAREoAAERKQABESsAAREtAAERLgABES8AARExAAERMgABEUEAARGAAAERggABEYQAARGGAAERiQABEYoAARGLAAERjAABEY0AARGPAAERkQABEZIAARGTAAERlQABEZYAARG7AAER3wABEgYAARIqAAESLQABEi8AARIxAAESMwABEjUAARI3AAESOAABEjsAARJIAAESVwABElkAARJbAAESXQABEl8AARJhAAESYwABEmUAARJ0AAESdwABEnoAARJ9AAESgAABEoMAARKGAAESiQABEosAARLKAAESzAABEs4AARLQAAES0wABEtQAARLVAAES1gABEtcAARLZAAES2wABEtwAARLdAAES3wABEuAAARMfAAETIQABEyMAARMlAAETKAABEykAARMqAAETKwABEywAARMuAAETMAABEzEAARMyAAETNAABEzUAARN0AAETdgABE3gAARN6AAETfQABE34AARN/AAETgAABE4EAARODAAEThQABE4YAAROHAAETiQABE4oAARPJAAETywABE84AARPQAAET0wABE9QAARPVAAET1gABE9cAARPZAAET2wABE9wAARPdAAET3wABE+AAARQfAAEUIQABFCMAARQlAAEUKAABFCkAARQqAAEUKwABFCwAARQuAAEUMAABFDEAARQyAAEUNAABFDUAARR0AAEUdgABFHgAARR6AAEUfQABFH4AARR/AAEUgAABFIEAARSDAAEUhQABFIYAARSHAAEUiQABFIoAARTJAAEUywABFM0AARTPAAEU0gABFNMAARTUAAEU1QABFNYAARTYAAEU2gABFNsAARTcAAEU3gABFN8AARUqAAEVTQABFW0AARWNAAEVjwABFZEAARWTAAEVlQABFZgAARWZAAEVmgABFZ0AARWeAAEVoAABFaEAARWjAAEVpgABFacAARWoAAEVqwABFawAARWxAAEVvgABFcMAARXFAAEVxwABFcwAARXPAAEV0gABFdQAARX5AAEWHQABFkQAARZoAAEWawABFm0AARZvAAEWcQABFnMAARZ1AAEWdgABFnkAARaGAAEWlwABFpkAARabAAEWnQABFp8AARahAAEWowABFqUAARanAAEWuAABFrsAARa+AAEWwQABFsQAARbHAAEWygABFs0AARbQAAEW0gABFxEAARcTAAEXFQABFxcAARcaAAEXGwABFxwAARcdAAEXHgABFyAAARciAAEXIwABFyQAARcmAAEXJwABF2YAARdoAAEXagABF2wAARdvAAEXcAABF3EAARdyAAEXcwABF3UAARd3AAEXeAABF3kAARd7AAEXfAABF7sAARe9AAEXwAABF8IAARfFAAEXxgABF8cAARfIAAEXyQABF8sAARfNAAEXzgABF88AARfRAAEX0gABF98AARfgAAEX4QABF+MAARgiAAEYJAABGCYAARgoAAEYKwABGCwAARgtAAEYLgABGC8AARgxAAEYMwABGDQAARg1AAEYNwABGDgAARh3AAEYeQABGHsAARh9AAEYgAABGIEAARiCAAEYgwABGIQAARiGAAEYiAABGIkAARiKAAEYjAABGI0AARjMAAEYzgABGNAAARjSAAEY1QABGNYAARjXAAEY2AABGNkAARjbAAEY3QABGN4AARjfAAEY4QABGOIAARkhAAEZIwABGSYAARkoAAEZKwABGSwAARktAAEZLgABGS8AARkxAAEZMwABGTQAARk1AAEZNwABGTgAARlMAAEZiwABGY0AARmPAAEZkQABGZQAARmVAAEZlgABGZcAARmYAAEZmgABGZwAARmdAAEZngABGaAAARmhAAEZxgABGeoAARoRAAEaNQABGjgAARo6AAEaPAABGj4AARpAAAEaQgABGkMAARpGAAEaUwABGmIAARpkAAEaZgABGmgAARpqAAEabAABGm4AARpwAAEafwABGoIAARqFAAEaiAABGosAARqOAAEakQABGpQAARqWAAEa1QABGtcAARrZAAEa2wABGt4AARrfAAEa4AABGuEAARriAAEa5AABGuYAARrnAAEa6AABGuoAARrrAAEbKgABGywAARsuAAEbMAABGzMAARs0AAEbNQABGzYAARs3AAEbOQABGzsAARs8AAEbPQABGz8AARtAAAEbfwABG4EAARuDAAEbhQABG4gAARuJAAEbigABG4sAARuMAAEbjgABG5AAARuRAAEbkgABG5QAARuVAAEb1AABG9YAARvZAAEb2wABG94AARvfAAEb4AABG+EAARviAAEb5AABG+YAARvnAAEb6AABG+oAARvrAAEcKgABHCwAARwuAAEcMAABHDMAARw0AAEcNQABHDYAARw3AAEcOQABHDsAARw8AAEcPQABHD8AARxAAAEcfwABHIEAARyDAAEchQABHIgAARyJAAEcigABHIsAARyMAAEcjgABHJAAARyRAAEckgABHJQAARyVAAEc1AABHNYAARzYAAEc2gABHN0AARzeAAEc3wABHOAAARzhAAEc4wABHOUAARzmAAEc5wABHOkAARzqAAEdNQABHVgAAR14AAEdmAABHZoAAR2cAAEdngABHaAAAR2jAAEdpAABHaUAAR2oAAEdqQABHasAAR2sAAEdrgABHbEAAR2yAAEdswABHbYAAR23AAEdvAABHckAAR3OAAEd0AABHdIAAR3XAAEd2gABHd0AAR3fAAEeBAABHigAAR5PAAEecwABHnYAAR54AAEeegABHnwAAR5+AAEegAABHoEAAR6EAAEekQABHqIAAR6kAAEepgABHqgAAR6qAAEerAABHq4AAR6wAAEesgABHsMAAR7GAAEeyQABHswAAR7PAAEe0gABHtUAAR7YAAEe2wABHt0AAR8cAAEfHgABHyAAAR8iAAEfJQABHyYAAR8nAAEfKAABHykAAR8rAAEfLQABHy4AAR8vAAEfMQABHzIAAR9xAAEfcwABH3UAAR93AAEfegABH3sAAR98AAEffQABH34AAR+AAAEfggABH4MAAR+EAAEfhgABH4cAAR/GAAEfyAABH8sAAR/NAAEf0AABH9EAAR/SAAEf0wABH9QAAR/WAAEf2AABH9kAAR/aAAEf3AABH90AAR/qAAEf6wABH+wAAR/uAAEgLQABIC8AASAxAAEgMwABIDYAASA3AAEgOAABIDkAASA6AAEgPAABID4AASA/AAEgQAABIEIAASBDAAEgggABIIQAASCGAAEgiAABIIsAASCMAAEgjQABII4AASCPAAEgkQABIJMAASCUAAEglQABIJcAASCYAAEg1wABINkAASDbAAEg3QABIOAAASDhAAEg4gABIOMAASDkAAEg5gABIOgAASDpAAEg6gABIOwAASDtAAEhLAABIS4AASEwAAEhMgABITUAASE2AAEhNwABITgAASE5AAEhOwABIT0AASE+AAEhPwABIUEAASFCAAEhgQABIYMAASGFAAEhhwABIYoAASGLAAEhjAABIY0AASGOAAEhkAABIZIAASGTAAEhlAABIZYAASGXAAEhvAABIeAAASIHAAEiKwABIi4AASIwAAEiMgABIjQAASI2AAEiOAABIjkAASI8AAEiSQABIlgAASJaAAEiXAABIl4AASJgAAEiYgABImQAASJmAAEidQABIngAASJ7AAEifgABIoEAASKEAAEihwABIooAASKMAAEiywABIs0AASLPAAEi0QABItQAASLVAAEi1gABItcAASLYAAEi2gABItwAASLdAAEi3gABIuAAASLhAAEjIAABIyIAASMkAAEjJgABIykAASMqAAEjKwABIywAASMtAAEjLwABIzEAASMyAAEjMwABIzUAASM2AAEjdQABI3cAASN5AAEjewABI34AASN/AAEjgAABI4EAASOCAAEjhAABI4YAASOHAAEjiAABI4oAASOLAAEjygABI8wAASPPAAEj0QABI9QAASPVAAEj1gABI9cAASPYAAEj2gABI9wAASPdAAEj3gABI+AAASPhAAEkIAABJCIAASQkAAEkJgABJCkAASQqAAEkKwABJCwAASQtAAEkLwABJDEAASQyAAEkMwABJDUAASQ2AAEkdQABJHcAASR5AAEkewABJH4AASR/AAEkgAABJIEAASSCAAEkhAABJIYAASSHAAEkiAABJIoAASSLAAEkygABJMwAASTOAAEk0AABJNMAASTUAAEk1QABJNYAASTXAAEk2QABJNsAASTcAAEk3QABJN8AASTgAAElKwABJU4AASVuAAEljgABJZAAASWSAAEllAABJZYAASWZAAElmgABJZsAASWeAAElnwABJaEAASWiAAElpAABJacAASWoAAElqQABJawAASWtAAElsgABJb8AASXEAAElxgABJcgAASXNAAEl0AABJdMAASXVAAEl+gABJh4AASZFAAEmaQABJmwAASZuAAEmcAABJnIAASZ0AAEmdgABJncAASZ6AAEmhwABJpgAASaaAAEmnAABJp4AASagAAEmogABJqQAASamAAEmqAABJrkAASa8AAEmvwABJsIAASbFAAEmyAABJssAASbOAAEm0QABJtMAAScSAAEnFAABJxYAAScYAAEnGwABJxwAAScdAAEnHgABJx8AASchAAEnIwABJyQAASclAAEnJwABJygAASdnAAEnaQABJ2sAASdtAAEncAABJ3EAASdyAAEncwABJ3QAASd2AAEneAABJ3kAASd6AAEnfAABJ30AASe8AAEnvgABJ8EAASfDAAEnxgABJ8cAASfIAAEnyQABJ8oAASfMAAEnzgABJ88AASfQAAEn0gABJ9MAASfgAAEn4QABJ+IAASfkAAEoIwABKCUAASgnAAEoKQABKCwAASgtAAEoLgABKC8AASgwAAEoMgABKDQAASg1AAEoNgABKDgAASg5AAEoeAABKHoAASh8AAEofgABKIEAASiCAAEogwABKIQAASiFAAEohwABKIkAASiKAAEoiwABKI0AASiOAAEozQABKM8AASjRAAEo0wABKNYAASjXAAEo2AABKNkAASjaAAEo3AABKN4AASjfAAEo4AABKOIAASjjAAEpIgABKSQAASkmAAEpKAABKSsAASksAAEpLQABKS4AASkvAAEpMQABKTMAASk0AAEpNQABKTcAASk4AAEpdwABKXkAASl7AAEpfQABKYAAASmBAAEpggABKYMAASmEAAEphgABKYgAASmJAAEpigABKYwAASmNAAEpsgABKdYAASn9AAEqIQABKiQAASomAAEqKAABKioAASosAAEqLgABKi8AASoyAAEqPwABKk4AASpQAAEqUgABKlQAASpWAAEqWAABKloAASpcAAEqawABKm4AASpxAAEqdAABKncAASp6AAEqfQABKoAAASqCAAEqwQABKsMAASrFAAEqxwABKsoAASrLAAEqzAABKs0AASrOAAEq0AABKtIAASrTAAEq1AABKtYAASrXAAErFgABKxgAASsaAAErHAABKx8AASsgAAErIQABKyIAASsjAAErJQABKycAASsoAAErKQABKysAASssAAErawABK20AAStvAAErcQABK3QAASt1AAErdgABK3cAASt4AAEregABK3wAASt9AAErfgABK4AAASuBAAErwAABK8IAASvFAAErxwABK8oAASvLAAErzAABK80AASvOAAEr0AABK9IAASvTAAEr1AABK9YAASvXAAEsFgABLBgAASwaAAEsHAABLB8AASwgAAEsIQABLCIAASwjAAEsJQABLCcAASwoAAEsKQABLCsAASwsAAEsawABLG0AASxvAAEscQABLHQAASx1AAEsdgABLHcAASx4AAEsegABLHwAASx9AAEsfgABLIAAASyBAAEswAABLMIAASzEAAEsxgABLMkAASzKAAEsywABLMwAASzNAAEszwABLNEAASzSAAEs0wABLNUAASzWAAEtIQABLUQAAS1kAAEthAABLYYAAS2IAAEtigABLYwAAS2PAAEtkAABLZEAAS2UAAEtlQABLZcAAS2YAAEtmgABLZ0AAS2eAAEtnwABLaIAAS2jAAEtqAABLbUAAS26AAEtvAABLb4AAS3DAAEtxgABLckAAS3LAAEt8AABLhQAAS47AAEuXwABLmIAAS5kAAEuZgABLmgAAS5qAAEubAABLm0AAS5wAAEufQABLo4AAS6QAAEukgABLpQAAS6WAAEumAABLpoAAS6cAAEungABLq8AAS6yAAEutQABLrgAAS67AAEuvgABLsEAAS7EAAEuxwABLskAAS8IAAEvCgABLwwAAS8OAAEvEQABLxIAAS8TAAEvFAABLxUAAS8XAAEvGQABLxoAAS8bAAEvHQABLx4AAS9dAAEvXwABL2EAAS9jAAEvZgABL2cAAS9oAAEvaQABL2oAAS9sAAEvbgABL28AAS9wAAEvcgABL3MAAS+yAAEvtAABL7cAAS+5AAEvvAABL70AAS++AAEvvwABL8AAAS/CAAEvxAABL8UAAS/GAAEvyAABL8kAAS/WAAEv1wABL9gAAS/aAAEwGQABMBsAATAdAAEwHwABMCIAATAjAAEwJAABMCUAATAmAAEwKAABMCoAATArAAEwLAABMC4AATAvAAEwbgABMHAAATByAAEwdAABMHcAATB4AAEweQABMHoAATB7AAEwfQABMH8AATCAAAEwgQABMIMAATCEAAEwwwABMMUAATDHAAEwyQABMMwAATDNAAEwzgABMM8AATDQAAEw0gABMNQAATDVAAEw1gABMNgAATDZAAExGAABMRoAATEcAAExHgABMSEAATEiAAExIwABMSQAATElAAExJwABMSkAATEqAAExKwABMS0AATEuAAExbQABMW8AATFxAAExcwABMXYAATF3AAExeAABMXkAATF6AAExfAABMX4AATF/AAExgAABMYIAATGDAAExqAABMcwAATHzAAEyFwABMhoAATIcAAEyHgABMiAAATIiAAEyJAABMiUAATIoAAEyNQABMkQAATJGAAEySAABMkoAATJMAAEyTgABMlAAATJSAAEyYQABMmQAATJnAAEyagABMm0AATJwAAEycwABMnYAATJ4AAEytwABMrkAATK7AAEyvQABMsAAATLBAAEywgABMsMAATLEAAEyxgABMsgAATLJAAEyygABMswAATLNAAEzDAABMw4AATMQAAEzEgABMxUAATMWAAEzFwABMxgAATMZAAEzGwABMx0AATMeAAEzHwABMyEAATMiAAEzYQABM2MAATNlAAEzZwABM2oAATNrAAEzbAABM20AATNuAAEzcAABM3IAATNzAAEzdAABM3YAATN3AAEztgABM7gAATO6AAEzvAABM78AATPAAAEzwQABM8IAATPDAAEzxQABM8cAATPIAAEzyQABM8sAATPMAAE0CwABNA0AATQPAAE0EQABNBQAATQVAAE0FgABNBcAATQYAAE0GgABNBwAATQdAAE0HgABNCAAATQhAAE0YAABNGIAATRkAAE0ZgABNGkAATRqAAE0awABNGwAATRtAAE0bwABNHEAATRyAAE0cwABNHUAATR2AAE0tQABNLcAATS6AAE0vAABNL8AATTAAAE0wQABNMIAATTDAAE0xQABNMcAATTIAAE0yQABNMsAATTMAAE1FwABNToAATVaAAE1egABNXwAATV+AAE1gAABNYIAATWEAAE1hQABNYYAATWJAAE1igABNYwAATWNAAE1jwABNZEAATWSAAE1kwABNZYAATWXAAE1nAABNakAATWuAAE1sAABNbIAATW3AAE1ugABNb0AATW/AAE15AABNggAATYvAAE2UwABNlYAATZYAAE2WgABNlwAATZeAAE2YAABNmEAATZkAAE2cQABNoIAATaEAAE2hgABNogAATaKAAE2jAABNo4AATaQAAE2kgABNqMAATamAAE2qQABNqwAATavAAE2sgABNrUAATa4AAE2uwABNr0AATb8AAE2/gABNwAAATcCAAE3BQABNwYAATcHAAE3CAABNwkAATcLAAE3DQABNw4AATcPAAE3EQABNxIAATdRAAE3UwABN1UAATdXAAE3WgABN1sAATdcAAE3XQABN14AATdgAAE3YgABN2MAATdkAAE3ZgABN2cAATemAAE3qAABN6sAATetAAE3sAABN7EAATeyAAE3swABN7QAATe2AAE3uAABN7kAATe6AAE3vAABN70AATfKAAE3ywABN8wAATfOAAE4DQABOA8AATgRAAE4EwABOBYAATgXAAE4GAABOBkAATgaAAE4HAABOB4AATgfAAE4IAABOCIAATgjAAE4YgABOGQAAThmAAE4aAABOGsAAThsAAE4bQABOG4AAThvAAE4cQABOHMAATh0AAE4dQABOHcAATh4AAE4twABOLkAATi7AAE4vQABOMAAATjBAAE4wgABOMMAATjEAAE4xgABOMgAATjJAAE4ygABOMwAATjNAAE5DAABOQ4AATkQAAE5EgABORUAATkWAAE5FwABORgAATkZAAE5GwABOR0AATkeAAE5HwABOSEAATkiAAE5YQABOWMAATllAAE5ZwABOWoAATlrAAE5bAABOW0AATluAAE5cAABOXIAATlzAAE5dAABOXYAATl3AAE5nAABOcAAATnnAAE6CwABOg4AAToQAAE6EgABOhQAAToWAAE6GAABOhkAATocAAE6KQABOjgAATo6AAE6PAABOj4AATpAAAE6QgABOkQAATpGAAE6VQABOlgAATpbAAE6XgABOmEAATpkAAE6ZwABOmoAATpsAAE6qwABOq0AATqvAAE6sQABOrQAATq1AAE6tgABOrcAATq4AAE6ugABOrwAATq9AAE6vgABOsAAATrBAAE7AAABOwIAATsEAAE7BgABOwkAATsKAAE7CwABOwwAATsNAAE7DwABOxEAATsSAAE7EwABOxUAATsWAAE7VQABO1cAATtZAAE7WwABO14AATtfAAE7YAABO2EAATtiAAE7ZAABO2YAATtnAAE7aAABO2oAATtrAAE7qgABO6wAATuvAAE7sQABO7QAATu1AAE7tgABO7cAATu4AAE7ugABO7wAATu9AAE7vgABO8AAATvBAAE8AAABPAIAATwEAAE8BgABPAkAATwKAAE8CwABPAwAATwNAAE8DwABPBEAATwSAAE8EwABPBUAATwWAAE8VQABPFcAATxZAAE8WwABPF4AATxfAAE8YAABPGEAATxiAAE8ZAABPGYAATxnAAE8aAABPGoAATxrAAE8qgABPKwAATyvAAE8sQABPLQAATy1AAE8tgABPLcAATy4AAE8ugABPLwAATy9AAE8vgABPMAAATzBAAE9DAABPS8AAT1PAAE9bwABPXEAAT1zAAE9dQABPXcAAT16AAE9ewABPXwAAT1/AAE9gAABPYIAAT2DAAE9hQABPYgAAT2JAAE9igABPY0AAT2OAAE9kwABPaAAAT2lAAE9pwABPakAAT2uAAE9sQABPbQAAT22AAE92wABPf8AAT4mAAE+SgABPk0AAT5PAAE+UQABPlMAAT5VAAE+VwABPlgAAT5bAAE+aAABPnkAAT57AAE+fQABPn8AAT6BAAE+gwABPoUAAT6HAAE+iQABPpoAAT6dAAE+oAABPqMAAT6mAAE+qQABPqwAAT6vAAE+sgABPrQAAT7zAAE+9QABPvcAAT75AAE+/AABPv0AAT7+AAE+/wABPwAAAT8CAAE/BAABPwUAAT8GAAE/CAABPwkAAT9IAAE/SgABP0wAAT9OAAE/UQABP1IAAT9TAAE/VAABP1UAAT9XAAE/WQABP1oAAT9bAAE/XQABP14AAT+dAAE/nwABP6IAAT+kAAE/pwABP6gAAT+pAAE/qgABP6sAAT+tAAE/rwABP7AAAT+xAAE/swABP7QAAT/BAAE/wgABP8MAAT/FAAFABAABQAYAAUAIAAFACgABQA0AAUAOAAFADwABQBAAAUARAAFAEwABQBUAAUAWAAFAFwABQBkAAUAaAAFAWQABQFsAAUBdAAFAXwABQGIAAUBjAAFAZAABQGUAAUBmAAFAaAABQGoAAUBrAAFAbAABQG4AAUBvAAFArgABQLAAAUCyAAFAtAABQLcAAUC4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AAF43QABeN8AAXjgAAF44wABePAAAXkBAAF5AwABeQUAAXkHAAF5CQABeQsAAXkNAAF5DwABeREAAXkiAAF5JQABeSgAAXkrAAF5LgABeTEAAXk0AAF5NwABeToAAXk8AAF5ewABeX0AAXl/AAF5gQABeYQAAXmFAAF5hgABeYcAAXmIAAF5igABeYwAAXmNAAF5jgABeZAAAXmRAAF50AABedIAAXnUAAF51gABedkAAXnaAAF52wABedwAAXndAAF53wABeeEAAXniAAF54wABeeUAAXnmAAF6JQABeicAAXoqAAF6LAABei8AAXowAAF6MQABejIAAXozAAF6NQABejcAAXo4AAF6OQABejsAAXo8AAF6SQABekoAAXpLAAF6TQABeowAAXqOAAF6kAABepIAAXqVAAF6lgABepcAAXqYAAF6mQABepsAAXqdAAF6ngABep8AAXqhAAF6ogABeuEAAXrjAAF65QABeucAAXrqAAF66wABeuwAAXrtAAF67gABevAAAXryAAF68wABevQAAXr2AAF69wABezYAAXs4AAF7OgABezwAAXs/AAF7QAABe0EAAXtCAAF7QwABe0UAAXtHAAF7SAABe0kAAXtLAAF7TAABe4sAAXuNAAF7jwABe5EAAXuUAAF7lQABe5YAAXuXAAF7mAABe5oAAXucAAF7nQABe54AAXugAAF7oQABe+AAAXviAAF75AABe+YAAXvpAAF76gABe+sAAXvsAAF77QABe+8AAXvxAAF78gABe/MAAXv1AAF79gABfBsAAXw/AAF8ZgABfIoAAXyNAAF8jwABfJEAAXyTAAF8lQABfJcAAXyYAAF8mwABfKgAAXy3AAF8uQABfLsAAXy9AAF8vwABfMEAAXzDAAF8xQABfNQAAXzXAAF82gABfN0AAXzgAAF84wABfOYAAXzpAAF86wABfSoAAX0sAAF9LgABfTAAAX0zAAF9NAABfTUAAX02AAF9NwABfTkAAX07AAF9PAABfT0AAX0/AAF9QAABfX8AAX2BAAF9gwABfYUAAX2IAAF9iQABfYoAAX2LAAF9jAABfY4AAX2QAAF9kQABfZIAAX2UAAF9lQABfdQAAX3WAAF92AABfdoAAX3dAAF93gABfd8AAX3gAAF94QABfeMAAX3lAAF95gABfecAAX3pAAF96gABfikAAX4rAAF+LgABfjAAAX4zAAF+NAABfjUAAX42AAF+NwABfjkAAX47AAF+PAABfj0AAX4/AAF+QAABfn8AAX6BAAF+gwABfoUAAX6IAAF+iQABfooAAX6LAAF+jAABfo4AAX6QAAF+kQABfpIAAX6UAAF+lQABftQAAX7WAAF+2AABftoAAX7dAAF+3gABft8AAX7gAAF+4QABfuMAAX7lAAF+5gABfucAAX7pAAF+6gABfykAAX8rAAF/LQABfy8AAX8yAAF/MwABfzQAAX81AAF/NgABfzgAAX86AAF/OwABfzwAAX8+AAF/PwABf4oAAX+tAAF/zQABf+0AAX/vAAF/8QABf/MAAX/1AAF/9wABf/gAAX/5AAF//AABf/0AAX//AAGAAAABgAIAAYAEAAGABQABgAYAAYAJAAGACgABgA8AAYAcAAGAIQABgCMAAYAlAAGAKgABgC0AAYAwAAGAMgABgFcAAYB7AAGAogABgMYAAYDJAAGAywABgM0AAYDPAAGA0QABgNMAAYDUAAGA1wABgOQAAYD1AAGA9wABgPkAAYD7AAGA/QABgP8AAYEBAAGBAwABgQUAAYEWAAGBGQABgRwAAYEfAAGBIgABgSUAAYEoAAGBKwABgS4AAYEwAAGBbwABgXEAAYFzAAGBdQABgXgAAYF5AAGBegABgXsAAYF8AAGBfgABgYAAAYGBAAGBggABgYQAAYGFAAGBxAABgcYAAYHIAAGBygABgc0AAYHOAAGBzwABgdAAAYHRAAGB0wABgdUAAYHWAAGB1wABgdkAAYHaAAGCGQABghsAAYIeAAGCIAABgiMAAYIkAAGCJQABgiYAAYInAAGCKQABgisAAYIsAAGCLQABgi8AAYIwAAGCPQABgj4AAYI/AAGCQQABgoAAAYKCAAGChAABgoYAAYKJAAGCigABgosAAYKMAAGCjQABgo8AAYKRAAGCkgABgpMAAYKVAAGClgABgtUAAYLXAAGC2QABgtsAAYLeAAGC3wABguAAAYLhAAGC4gABguQAAYLmAAGC5wABgugAAYLqAAGC6wABgyoAAYMsAAGDLgABgzAAAYMzAAGDNAABgzUAAYM2AAGDNwABgzkAAYM7AAGDPAABgz0AAYM/AAGDQAABg38AAYOBAAGDgwABg4UAAYOIAAGDiQABg4oAAYOLAAGDjAABg44AAYOQAAGDkQABg5IAAYOUAAGDlQABg9QAAYPWAAGD2AABg9oAAYPdAAGD3gABg98AAYPgAAGD4QABg+MAAYPlAAGD5gABg+cAAYPpAAGD6gABhA8AAYQzAAGEWgABhH4AAYSBAAGEgwABhIUAAYSHAAGEiQABhIsAAYSMAAGEjwABhJwAAYSrAAGErQABhK8AAYSxAAGEswABhLUAAYS3AAGEuQABhMgAAYTLAAGEzgABhNEAAYTUAAGE1wABhNoAAYTdAAGE3wABhR4AAYUgAAGFIwABhSUAAYUoAAGFKQABhSoAAYUrAAGFLAABhS4AAYUwAAGFMQABhTIAAYU0AAGFNQABhTkAAYV4AAGFegABhXwAAYV+AAGFgQABhYIAAYWDAAGFhAABhYUAAYWHAAGFiQABhYoAAYWLAAGFjQABhY4AAYXNAAGFzwABhdEAAYXTAAGF1gABhdcAAYXYAAGF2QABhdoAAYXcAAGF3gABhd8AAYXgAAGF4gABheMAAYYiAAGGJAABhicAAYYpAAGGLAABhi0AAYYuAAGGLwABhjAAAYYyAAGGNAABhjUAAYY2AAGGOAABhjkAAYY8AAGGewABhn0AAYZ/AAGGgQABhoQAAYaFAAGGhgABhocAAYaIAAGGigABhowAAYaNAAGGjgABhpAAAYaRAAGG0AABhtIAAYbUAAGG1gABhtkAAYbaAAGG2wABhtwAAYbdAAGG3wABhuEAAYbiAAGG4wABhuUAAYbmAAGHJQABhycAAYcpAAGHKwABhy4AAYcvAAGHMAABhzEAAYcyAAGHNAABhzYAAYc3AAGHOAABhzoAAYc7AAGHhgABh6kAAYfJAAGH6QABh+sAAYftAAGH7wABh/EAAYfzAAGH9AABh/UAAYf4AAGH+QABh/sAAYf8AAGH/gABiAAAAYgBAAGIAgABiAUAAYgGAAGICwABiBgAAYgdAAGIHwABiCEAAYgmAAGIKQABiCwAAYguAAGIUwABiHcAAYieAAGIwgABiMUAAYjHAAGIyQABiMsAAYjNAAGIzwABiNAAAYjTAAGI4AABiPEAAYjzAAGI9QABiPcAAYj5AAGI+wABiP0AAYj/AAGJAQABiRIAAYkVAAGJGAABiRsAAYkeAAGJIQABiSQAAYknAAGJKgABiSwAAYlrAAGJbQABiW8AAYlxAAGJdAABiXUAAYl2AAGJdwABiXgAAYl6AAGJfAABiX0AAYl+AAGJgAABiYEAAYnAAAGJwgABicQAAYnGAAGJyQABicoAAYnLAAGJzAABic0AAYnPAAGJ0QABidIAAYnTAAGJ1QABidYAAYoVAAGKFwABihoAAYocAAGKHwABiiAAAYohAAGKIgABiiMAAYolAAGKJwABiigAAYopAAGKKwABiiwAAYo5AAGKOgABijsAAYo9AAGKfAABin4AAYqAAAGKggABioUAAYqGAAGKhwABiogAAYqJAAGKiwABio0AAYqOAAGKjwABipEAAYqSAAGK0QABitMAAYrVAAGK1wABitoAAYrbAAGK3AABit0AAYreAAGK4AABiuIAAYrjAAGK5AABiuYAAYrnAAGLJgABiygAAYsqAAGLLAABiy8AAYswAAGLMQABizIAAYszAAGLNQABizcAAYs4AAGLOQABizsAAYs8AAGLewABi30AAYt/AAGLgQABi4QAAYuFAAGLhgABi4cAAYuIAAGLigABi4wAAYuNAAGLjgABi5AAAYuRAAGL0AABi9IAAYvUAAGL1gABi9kAAYvaAAGL2wABi9wAAYvdAAGL3wABi+EAAYviAAGL4wABi+UAAYvmAAGMCwABjC8AAYxWAAGMegABjH0AAYx/AAGMgQABjIMAAYyFAAGMhwABjIgAAYyLAAGMmAABjKcAAYypAAGMqwABjK0AAYyvAAGMsQABjLMAAYy1AAGMxAABjMcAAYzKAAGMzQABjNAAAYzTAAGM1gABjNkAAYzbAAGNGgABjRwAAY0eAAGNIAABjSMAAY0kAAGNJQABjSYAAY0nAAGNKQABjSsAAY0sAAGNLQABjS8AAY0wAAGNbwABjXEAAY1zAAGNdQABjXgAAY15AAGNegABjXsAAY18AAGNfgABjYAAAY2BAAGNggABjYQAAY2FAAGNxAABjcYAAY3IAAGNygABjc0AAY3OAAGNzwABjdAAAY3RAAGN0wABjdUAAY3WAAGN1wABjdkAAY3aAAGOGQABjhsAAY4eAAGOIAABjiMAAY4kAAGOJQABjiYAAY4nAAGOKQABjisAAY4sAAGOLQABji8AAY4wAAGObwABjnEAAY5zAAGOdQABjngAAY55AAGOegABjnsAAY58AAGOfgABjoAAAY6BAAGOggABjoQAAY6FAAGOxAABjsYAAY7I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AAGlTAABpU4AAaVQAAGlUgABpVUAAaVWAAGlVwABpVgAAaVZAAGlWwABpV0AAaVeAAGlXwABpWEAAaViAAGloQABpaMAAaWlAAGlpwABpaoAAaWrAAGlrAABpa0AAaWuAAGlsAABpbIAAaWzAAGltAABpbYAAaW3AAGl9gABpfgAAaX7AAGl/QABpgAAAaYBAAGmAgABpgMAAaYEAAGmBgABpggAAaYJAAGmCgABpgwAAaYNAAGmEAABpk8AAaZRAAGmUwABplUAAaZYAAGmWQABploAAaZbAAGmXAABpl4AAaZgAAGmYQABpmIAAaZkAAGmZQABpqQAAaamAAGmqAABpqoAAaatAAGmrgABpq8AAaawAAGmsQABprMAAaa1AAGmtgABprcAAaa5AAGmugABpvkAAab7AAGm/QABpv8AAacCAAGnAwABpwQAAacFAAGnBgABpwgAAacKAAGnCwABpwwAAacOAAGnDwABp1oAAad9AAGnnQABp70AAae/AAGnwQABp8MAAafFAAGnxwABp8gAAafJAAGnzAABp80AAafPAAGn0AABp9IAAafUAAGn1QABp9YAAafZAAGn2gABp98AAafsAAGn8QABp/MAAaf1AAGn+gABp/0AAagAAAGoAgABqCcAAahLAAGocgABqJYAAaiZAAGomwABqJ0AAaifAAGooQABqKMAAaikAAGopwABqLQAAajFAAGoxwABqMkAAajLAAGozQABqM8AAajRAAGo0wABqNUAAajmAAGo6QABqOwAAajvAAGo8gABqPUAAaj4AAGo+wABqP4AAakAAAGpPwABqUEAAalDAAGpRQABqUgAAalJAAGpSgABqUsAAalMAAGpTgABqVAAAalRAAGpUgABqVQAAalVAAGplAABqZYAAamYAAGpmgABqZ0AAameAAGpnwABqaAAAamhAAGpowABqaUAAammAAGppwABqakAAamqAAGp6QABqesAAanuAAGp8AABqfMAAan0AAGp9QABqfYAAan3AAGp+QABqfsAAan8AAGp/QABqf8AAaoAAAGqDQABqg4AAaoPAAGqEQABqlAAAapSAAGqVAABqlYAAapZAAGqWgABqlsAAapcAAGqXQABql8AAaphAAGqYgABqmMAAaplAAGqZgABqqUAAaqnAAGqqQABqqsAAaquAAGqrwABqrAAAaqxAAGqsgABqrQAAaq2AAGqtwABqrgAAaq6AAGquwABqvoAAar8AAGq/gABqwAAAasDAAGrBAABqwUAAasGAAGrBwABqwkAAasLAAGrDAABqw0AAasPAAGrEAABq08AAatRAAGrUwABq1UAAatYAAGrWQABq1oAAatbAAGrXAABq14AAatgAAGrYQABq2IAAatkAAGrZQABq6QAAaumAAGrqAABq6oAAautAAGrrgABq68AAauwAAGrsQABq7MAAau1AAGrtgABq7cAAau5AAGrugABq98AAawDAAGsKgABrE4AAaxRAAGsUwABrFUAAaxXAAGsWQABrFsAAaxcAAGsXwABrGwAAax7AAGsfQABrH8AAayBAAGsgwABrIUAAayHAAGsiQABrJgAAaybAAGsngABrKEAAaykAAGspwABrKoAAaytAAGsrwABrO4AAazwAAGs8gABrPQAAaz3AAGs+AABrPkAAaz6AAGs+wABrP0AAaz/AAGtAAABrQEAAa0DAAGtBAABrUMAAa1FAAGtRwABrUkAAa1MAAGtTQABrU4AAa1PAAGtUAABrVIAAa1UAAGtVQABrVYAAa1YAAGtWQABrZgAAa2aAAGtnAABrZ4AAa2hAAGtogABraMAAa2kAAGtpQABracAAa2pAAGtqgABrasAAa2tAAGtrgABre0AAa3vAAGt8gABrfQAAa33AAGt+AABrfkAAa36AAGt+wABrf0AAa3/AAGuAAABrgEAAa4DAAGuBAABrkMAAa5FAAGuRwABrkkAAa5MAAGuTQABrk4AAa5PAAGuUAABrlIAAa5UAAGuVQABrlYAAa5YAAGuWQABrpgAAa6aAAGunAABrp4AAa6hAAGuogABrqMAAa6kAAGupQABrqcAAa6pAAGuqgABrqsAAa6tAAGurgABru0AAa7vAAGu8QABrvMAAa72AAGu9wABrvgAAa75AAGu+gABrvwAAa7+AAGu/wABrwAAAa8CAAGvAwABr04AAa9xAAGvkQABr7EAAa+zAAGvtQABr7cAAa+5AAGvuwABr7wAAa+9AAGvwAABr8EAAa/DAAGvxAABr8YAAa/IAAGvyQABr8oAAa/NAAGvzgABr9MAAa/gAAGv5QABr+cAAa/pAAGv7gABr/EAAa/0AAGv9gABsBsAAbA/AAGwZgABsIoAAbCNAAGwjwABsJEAAbCTAAGwlQABsJcAAbCYAAGwmwABsKgAAbC5AAGwuwABsL0AAbC/AAGwwQABsMMAAbDFAAGwxwABsMkAAbDaAAGw3QABsOAAAbDjAAGw5gABsOkAAbDsAAGw7wABsPIAAbD0AAGxMwABsTUAAbE3AAGxOQABsTwAAbE9AAGxPgABsT8AAbFAAAGxQgABsUQAAbFFAAGxRgABsUgAAbFJAAGxiAABsYoAAbGMAAGxjgABsZEAAbGSAAGxkwABsZQAAbGVAAGxlwABsZkAAbGaAAGxmwABsZ0AAbGeAAGx3QABsd8AAbHiAAGx5AABsecAAbHoAAGx6QABseoAAbHrAAGx7QABse8AAbHwAAGx8QABsfMAAbH0AAGyAQABsgIAAbIDAAGyBQABskQAAbJGAAGySAABskoAAbJNAAGyTgABsk8AAbJQAAGyUQABslMAAbJVAAGyVgABslcAAbJZAAGyWgABspkAAbKbAAGynQABsp8AAbKiAAGyowABsqQAAbKlAAGypgABsqgAAbKqAAGyqwABsqwAAbKuAAGyrwABsu4AAbLwAAGy8gABsvQAAbL3AAGy+AABsvkAAbL6AAGy+wABsv0AAbL/AAGzAAABswEAAbMDAAGzBAABs0MAAbNFAAGzRwABs0kAAbNMAAGzTQABs04AAbNPAAGzUAABs1IAAbNUAAGzVQABs1YAAbNYAAGzWQABs5gAAbOaAAGznAABs54AAbOhAAGzogABs6MAAbOkAAGzpQABs6cAAbOpAAGzqgABs6sAAbOtAAGzrgABs9MAAbP3AAG0HgABtEIAAbRFAAG0RwABtEkAAbRLAAG0TQABtE8AAbRQAAG0UwABtGAAAbRvAAG0cQABtHMAAbR1AAG0dwABtHkAAbR7AAG0fQABtIwAAbSPAAG0kgABtJUAAbSYAAG0mwABtJ4AAbShAAG0owABtOIAAbTkAAG05wABtOkAAbTsAAG07QABtO4AAbTvAAG08AABtPIAAbT0AAG09QABtPYAAbT4AAG0+QABtTgAAbU6AAG1PAABtT4AAbVBAAG1QgABtUMAAbVEAAG1RQABtUcAAbVJAAG1SgABtUsAAbVNAAG1TgABtY0AAbWPAAG1kQABtZMAAbWWAAG1lwABtZgAAbWZAAG1mgABtZwAAbWeAAG1nwABtaAAAbWiAAG1owABteIAAbXkAAG15wABtekAAbXsAAG17QABte4AAbXvAAG18AABtfIAAbX0AAG19QABtfYAAbX4AAG1+QABtjgAAbY6AAG2PAABtj4AAbZBAAG2QgABtkMAAbZEAAG2RQABtkcAAbZJAAG2SgABtksAAbZNAAG2TgABto0AAbaPAAG2kQABtpMAAbaWAAG2lwABtpgAAbaZAAG2mgABtpwAAbaeAAG2nwABtqAAAbaiAAG2owABtuIAAbbkAAG25gABtugAAbbrAAG27AABtu0AAbbuAAG27wABtvEAAbbzAAG29AABtvUAAbb3AAG2+AABt0MAAbdmAAG3hgABt6YAAbeoAAG3qgABt6wAAbeuAAG3sAABt7EAAbeyAAG3tQABt7YAAbe4AAG3uQABt7sAAbe9AAG3vgABt78AAbfCAAG3wwABt8gAAbfVAAG32gABt9wAAbfeAAG34wABt+YAAbfpAAG36wABuBAAAbg0AAG4WwABuH8AAbiCAAG4hAABuIYAAbiIAAG4igABuIwAAbiNAAG4kAABuJ0AAbiuAAG4sAABuLIAAbi0AAG4tgABuLgAAbi6AAG4vAABuL4AAbjPAAG40gABuNUAAbjYAAG42wABuN4AAbjhAAG45AABuOcAAbjpAAG5KAABuSoAAbksAAG5LgABuTEAAbkyAAG5MwABuTQAAbk1AAG5NwABuTkAAbk6AAG5OwABuT0AAbk+AAG5fQABuX8AAbmBAAG5gwABuYYAAbmHAAG5iAABuYkAAbmKAAG5jAABuY4AAbmPAAG5kAABuZIAAbmTAAG50gABudQAAbnXAAG52QABudwAAbndAAG53gABud8AAbngAAG54gABueQAAbnlAAG55gABuegAAbnpAAG59gABufcAAbn4AAG5+gABujkAAbo7AAG6PQABuj8AAbpCAAG6QwABukQAAbpFAAG6RgABukgAAbpKAAG6SwABukwAAbpOAAG6TwABuo4AAbqQAAG6kgABupQAAbqXAAG6mAABupkAAbqaAAG6mwABup0AAbqfAAG6oAABuqEAAbqjAAG6pAABuuMAAbrlAAG65wABuukAAbrsAAG67QABuu4AAbrvAAG68AABuvIAAbr0AAG69QABuvYAAbr4AAG6+QABuzgAAbs6AAG7PAABuz4AAbtBAAG7QgABu0MAAbtEAAG7RQABu0cAAbtJ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AAHHjwABx5AAAceRAAHHkwABx5QAAcfTAAHH1QABx9cAAcfZAAHH3AABx90AAcfeAAHH3wABx+AAAcfiAAHH5AABx+UAAcfmAAHH6AABx+kAAcgoAAHIKgAByCwAAcguAAHIMQAByDIAAcgzAAHINAAByDUAAcg3AAHIOQAByDoAAcg7AAHIPQAByD4AAchjAAHIhwAByK4AAcjSAAHI1QAByNcAAcjZAAHI2wAByN0AAcjfAAHI4AAByOMAAcjwAAHI/wAByQEAAckDAAHJBQAByQcAAckJAAHJCwAByQ0AAckcAAHJHwABySIAAcklAAHJKAABySsAAckuAAHJMQAByTMAAclyAAHJdAAByXcAAcl5AAHJfAAByX0AAcl+AAHJfwAByYAAAcmCAAHJhAAByYUAAcmGAAHJiAAByYkAAcnIAAHJygABycwAAcnOAAHJ0QABydIAAcnTAAHJ1AABydUAAcnXAAHJ2QABydoAAcnbAAHJ3QAByd4AAcodAAHKHwAByiEAAcojAAHKJgAByicAAcooAAHKKQAByioAAcosAAHKLgAByi8AAcowAAHKMgAByjMAAcpyAAHKdAAByncAAcp5AAHKfAAByn0AAcp+AAHKfwAByoAAAcqCAAHKhAAByoUAAcqGAAHKiAAByokAAcrIAAHKygAByswAAcrOAAHK0QABytIAAcrTAAHK1AABytUAAcrXAAHK2QABytoAAcrbAAHK3QAByt4AAcsdAAHLHwAByyEAAcsjAAHLJgAByycAAcsoAAHLKQAByyoAAcssAAHLLgAByy8AAcswAAHLMgAByzMAActyAAHLdAABy3YAAct4AAHLewABy3wAAct9AAHLfgABy38AAcuBAAHLgwABy4QAAcuFAAHLhwABy4gAAcvTAAHL9gABzBYAAcw2AAHMOAABzDoAAcw8AAHMPgABzEEAAcxCAAHMQwABzEYAAcxHAAHMSQABzEoAAcxMAAHMTwABzFAAAcxRAAHMVAABzFUAAcxaAAHMZwABzGwAAcxuAAHMcAABzHUAAcx4AAHMewABzH0AAcyiAAHMxgABzO0AAc0RAAHNFAABzRYAAc0YAAHNGgABzRwAAc0eAAHNHwABzSIAAc0vAAHNQAABzUIAAc1EAAHNRgABzUgAAc1KAAHNTAABzU4AAc1QAAHNYQABzWQAAc1nAAHNagABzW0AAc1wAAHNcwABzXYAAc15AAHNewABzboAAc28AAHNvgABzcAAAc3DAAHNxAABzcUAAc3GAAHNxwABzckAAc3LAAHNzAABzc0AAc3PAAHN0AABzg8AAc4RAAHOEwABzhUAAc4YAAHOGQABzhoAAc4bAAHOHAABzh4AAc4gAAHOIQABziIAAc4kAAHOJQABzmQAAc5mAAHOaQABzmsAAc5uAAHObwABznAAAc5xAAHOcgABznQAAc52AAHOdwABzngAAc56AAHOewABzogAAc6JAAHOigABzowAAc7LAAHOzQABzs8AAc7RAAHO1AABztUAAc7WAAHO1wABztgAAc7aAAHO3AABzt0AAc7eAAHO4AABzuEAAc8gAAHPIgABzyQAAc8mAAHPKQABzyoAAc8rAAHPLAABzy0AAc8vAAHPMQABzzIAAc8zAAHPNQABzzYAAc91AAHPdwABz3kAAc97AAHPfgABz38AAc+AAAHPgQABz4IAAc+EAAHPhgABz4cAAc+IAAHPigABz4sAAc/KAAHPzAABz84AAc/QAAHP0wABz9QAAc/VAAHP1gABz9cAAc/ZAAHP2wABz9wAAc/dAAHP3wABz+AAAdAfAAHQIQAB0CMAAdAlAAHQKAAB0CkAAdAqAAHQKwAB0CwAAdAuAAHQMAAB0DEAAdAyAAHQNAAB0DUAAdBaAAHQfgAB0KUAAdDJAAHQzAAB0M4AAdDQAAHQ0gAB0NQAAdDWAAHQ1wAB0NoAAdDnAAHQ9gAB0PgAAdD6AAHQ/AAB0P4AAdEAAAHRAgAB0QQAAdETAAHRFgAB0RkAAdEcAAHRHwAB0SIAAdElAAHRKAAB0SoAAdFpAAHRawAB0W0AAdFvAAHRcgAB0XMAAdF0AAHRdQAB0XYAAdF4AAHRegAB0XsAAdF8AAHRfgAB0X8AAdG+AAHRwAAB0cIAAdHEAAHRxwAB0cgAAdHJAAHRygAB0csAAdHNAAHRzwAB0dAAAdHRAAHR0wAB0dQAAdITAAHSFQAB0hcAAdIZAAHSHAAB0h0AAdIeAAHSHwAB0iAAAdIiAAHSJAAB0iUAAdImAAHSKAAB0ikAAdJoAAHSagAB0m0AAdJvAAHScgAB0nMAAdJ0AAHSdQAB0nYAAdJ4AAHSegAB0nsAAdJ8AAHSfgAB0n8AAdK+AAHSwAAB0sIAAdLEAAHSxwAB0sgAAdLJAAHSygAB0ssAAdLNAAHSzwAB0tAAAdLRAAHS0wAB0tQAAdMTAAHTFQAB0xcAAdMZAAHTHAAB0x0AAdMeAAHTHwAB0yAAAdMiAAHTJAAB0yUAAdMmAAHTKAAB0ykAAdNoAAHTagAB02wAAdNuAAHTcQAB03IAAdNzAAHTdAAB03UAAdN3AAHTeQAB03oAAdN7AAHTfQAB034AAdPJAAHT7AAB1AwAAdQsAAHULgAB1DAAAdQyAAHUNAAB1DcAAdQ4AAHUOQAB1DwAAdQ9AAHUPwAB1EAAAdRCAAHURQAB1EYAAdRHAAHUSgAB1EsAAdRQAAHUXQAB1GIAAdRkAAHUZgAB1GsAAdRuAAHUcQAB1HMAAdSYAAHUvAAB1OMAAdUHAAHVCgAB1QwAAdUOAAHVEAAB1RIAAdUUAAHVFQAB1RgAAdUlAAHVNgAB1TgAAdU6AAHVPAAB1T4AAdVAAAHVQgAB1UQAAdVGAAHVVwAB1VoAAdVdAAHVYAAB1WMAAdVmAAHVaQAB1WwAAdVvAAHVcQAB1bAAAdWyAAHVtAAB1bYAAdW5AAHVugAB1bsAAdW8AAHVvQAB1b8AAdXBAAHVwgAB1cMAAdXFAAHVxgAB1gUAAdYHAAHWCQAB1gsAAdYOAAHWDwAB1hAAAdYRAAHWEgAB1hQAAdYWAAHWFwAB1hgAAdYaAAHWGwAB1loAAdZcAAHWXwAB1mEAAdZkAAHWZQAB1mYAAdZnAAHWaAAB1moAAdZsAAHWbQAB1m4AAdZwAAHWcQAB1n4AAdZ/AAHWgAAB1oIAAdbBAAHWwwAB1sUAAdbHAAHWygAB1ssAAdbMAAHWzQAB1s4AAdbQAAHW0gAB1tMAAdbUAAHW1gAB1tcAAdcWAAHXGAAB1xoAAdccAAHXHwAB1yAAAdchAAHXIgAB1yMAAdclAAHXJwAB1ygAAdcpAAHXKwAB1ywAAddrAAHXbQAB128AAddxAAHXdAAB13UAAdd2AAHXdwAB13gAAdd6AAHXfAAB130AAdd+AAHXgAAB14EAAdfAAAHXwgAB18QAAdfGAAHXyQAB18oAAdfLAAHXzAAB180AAdfPAAHX0QAB19IAAdfTAAHX1QAB19YAAdgVAAHYFwAB2BkAAdgbAAHYHgAB2B8AAdggAAHYIQAB2CIAAdgkAAHYJgAB2CcAAdgoAAHYKgAB2CsAAdhQAAHYdAAB2JsAAdi/AAHYwgAB2MQAAdjGAAHYyAAB2MoAAdjMAAHYzQAB2NAAAdjdAAHY7AAB2O4AAdjwAAHY8gAB2PQAAdj2AAHY+AAB2PoAAdkJAAHZDAAB2Q8AAdkSAAHZFQAB2RgAAdkbAAHZHgAB2SAAAdlfAAHZYQAB2WMAAdllAAHZaAAB2WkAAdlqAAHZawAB2WwAAdluAAHZcAAB2XEAAdlyAAHZdAAB2XUAAdm0AAHZtgAB2bgAAdm6AAHZvQAB2b4AAdm/AAHZwAAB2cEAAdnDAAHZxQAB2cYAAdnHAAHZyQAB2coAAdoJAAHaCwAB2g0AAdoPAAHaEgAB2hMAAdoUAAHaFQAB2hYAAdoYAAHaGgAB2hsAAdocAAHaHgAB2h8AAdpeAAHaYAAB2mMAAdplAAHaaAAB2mkAAdpqAAHaawAB2mwAAdpuAAHacAAB2nEAAdpyAAHadAAB2nUAAdq0AAHatgAB2rgAAdq6AAHavQAB2r4AAdq/AAHawAAB2sEAAdrDAAHaxQAB2sYAAdrHAAHayQAB2soAAdsJAAHbCwAB2w0AAdsPAAHbEgAB2xMAAdsUAAHbFQAB2xYAAdsYAAHbGgAB2xsAAdscAAHbHgAB2x8AAdteAAHbYAAB22IAAdtkAAHbZwAB22gAAdtpAAHbagAB22sAAdttAAHbbwAB23AAAdtxAAHbcwAB23QAAdu/AAHb4gAB3AIAAdwiAAHcJAAB3CYAAdwoAAHcKgAB3C0AAdwuAAHcLwAB3DIAAdwzAAHcNQAB3DYAAdw4AAHcOwAB3DwAAdw9AAHcQAAB3EEAAdxKAAHcVwAB3FwAAdxeAAHcYAAB3GUAAdxoAAHcawAB3G0AAdySAAHctgAB3N0AAd0BAAHdBAAB3QYAAd0IAAHdCgAB3QwAAd0OAAHdDwAB3RIAAd0fAAHdMAAB3TIAAd00AAHdNgAB3TgAAd06AAHdPAAB3T4AAd1AAAHdUQAB3VQAAd1XAAHdWgAB3V0AAd1gAAHdYwAB3WYAAd1pAAHdawAB3aoAAd2sAAHdrgAB3bAAAd2zAAHdtAAB3bUAAd22AAHdtwAB3bkAAd27AAHdvAAB3b0AAd2/AAHdwAAB3f8AAd4BAAHeAwAB3gUAAd4IAAHeCQAB3goAAd4LAAHeDAAB3g4AAd4QAAHeEQAB3hIAAd4UAAHeFQAB3lQAAd5WAAHeWQAB3lsAAd5eAAHeXwAB3mAAAd5hAAHeYgAB3mQAAd5mAAHeZwAB3mgAAd5qAAHeawAB3ngAAd55AAHeegAB3nwAAd67AAHevQAB3r8AAd7BAAHexAAB3sUAAd7GAAHexwAB3sgAAd7KAAHezAAB3s0AAd7OAAHe0AAB3tEAAd8QAAHfEgAB3xQAAd8WAAHfGQAB3xoAAd8bAAHfHAAB3x0AAd8fAAHfIQAB3yIAAd8jAAHfJQAB3yYAAd9lAAHfZwAB32kAAd9rAAHfbgAB328AAd9wAAHfcQAB33IAAd90AAHfdgAB33cAAd94AAHfegAB33sAAd+6AAHfvAAB374AAd/AAAHfwwAB38QAAd/FAAHfxgAB38cAAd/JAAHfywAB38wAAd/NAAHfzwAB39AAAeAPAAHgEQAB4BMAAeAVAAHgGAAB4BkAAeAaAAHgGwAB4BwAAeAeAAHgIAAB4CEAAeAiAAHgJAAB4CUAAeBKAAHgbgAB4JUAAeC5AAHgvAAB4L4AAeDAAAHgwgAB4MQAAeDGAAHgxwAB4MoAAeDXAAHg5gAB4OgAAeDqAAHg7AAB4O4AAeDwAAHg8gAB4PQAAeEDAAHhBgAB4QkAAeEMAAHhDwAB4RIAAeEVAAHhGAAB4RoAAeFZAAHhWwAB4V4AAeFgAAHhYwAB4WQAAeFlAAHhZgAB4WcAAeFpAAHhawAB4WwAAeFtAAHhbwAB4XAAAeGvAAHhsQAB4bMAAeG1AAHhuAAB4bkAAeG6AAHhuwAB4bwAAeG+AAHhwAAB4cEAAeHCAAHhxAAB4cUAAeIEAAHiBgAB4ggAAeIKAAHiDQAB4g4AAeIPAAHiEAAB4hEAAeITAAHiFQAB4hYAAeIXAAHiGQAB4hoAAeJZAAHiWwAB4l4AAeJgAAHiYwAB4mQAAeJlAAHiZgAB4mcAAeJpAAHiawAB4mwAAeJtAAHibwAB4nAAAeJyAAHisQAB4rMAAeK1AAHitwAB4roAAeK7AAHivAAB4r0AAeK+AAHiwAAB4sIAAeLDAAHixAAB4sYAAeLHAAHjBgAB4wgAAeMKAAHjDAAB4w8AAeMQAAHjEQAB4xIAAeMTAAHjFQAB4xcAAeMYAAHjGQAB4xsAAeMcAAHjWwAB410AAeNfAAHjYQAB42QAAeNlAAHjZgAB42cAAeNoAAHjagAB42wAAeNtAAHjbgAB43AAAeNxAAHjvAAB498AAeP/AAHkHwAB5CEAAeQjAAHkJQAB5CcAAeQqAAHkKwAB5CwAAeQvAAHkMAAB5DIAAeQzAAHkNQAB5DcAAeQ4AAHkOQAB5DwAAeQ9AAHkRgAB5FMAAeRYAAHkWgAB5FwAAeRhAAHkZAAB5GcAAeRpAAHkjgAB5LIAAeTZAAHk/QAB5QAAAeUCAAHlBAAB5QYAAeUIAAHlCgAB5QsAAeUOAAHlGwAB5SwAAeUuAAHlMAAB5TIAAeU0AAHlNgAB5TgAAeU6AAHlPAAB5U0AAeVQAAHlUwAB5VYAAeVZAAHlXAAB5V8AAeViAAHlZQAB5WcAAeWmAAHlqAAB5aoAAeWsAAHlrwAB5bAAAeWxAAHlsgAB5bMAAeW1AAHltwAB5bgAAeW5AAHluwAB5bwAAeX7AAHl/QAB5f8AAeYBAAHmBAAB5gUAAeYGAAHmBwAB5ggAAeYKAAHmDAAB5g0AAeYOAAHmEAAB5hEAAeZQAAHmUgAB5lUAAeZXAAHmWgAB5lsAAeZcAAHmXQAB5l4AAeZgAAHmYgAB5mMAAeZkAAHmZgAB5mcAAeZ0AAHmdQAB5nYAAeZ4AAHmtwAB5rkAAea7AAHmvQAB5sAAAebBAAHmwgAB5sMAAebEAAHmxgAB5sgAAebJAAHmygAB5swAAebNAAHnDAAB5w4AAecQAAHnEgAB5xUAAecWAAHnFwAB5xgAAecZAAHnGwAB5x0AAeceAAHnHwAB5yEAAeciAAHnYQAB52MAAedlAAHnZwAB52oAAedrAAHnbAAB520AAeduAAHncAAB53IAAedzAAHndAAB53YAAed3AAHntgAB57gAAee6AAHnvAAB578AAefAAAHnwQAB58IAAefDAAHnxQAB58cAAefIAAHnyQAB58sAAefMAAHoCwAB6A0AAegPAAHoEQAB6BQAAegVAAHoFgAB6BcAAegYAAHoGgAB6BwAAegdAAHoHgAB6CAAAeghAAHoRgAB6GoAAeiRAAHotQAB6LgAAei6AAHovAAB6L4AAejAAAHowgAB6MMAAejGAAHo0wAB6OIAAejkAAHo5gAB6OgAAejqAAHo7AAB6O4AAejwAAHo/wAB6QIAAekFAAHpCAAB6QsAAekOAAHpEQAB6RQAAekWAAHpVQAB6VcAAelZAAHpWwAB6V4AAelfAAHpYAAB6WEAAeliAAHpZAAB6WYAAelnAAHpaAAB6WoAAelrAAHpqgAB6awAAemuAAHpsAAB6bMAAem0AAHptQAB6bYAAem3AAHpuQAB6bsAAem8AAHpvQAB6b8AAenAAAHp/wAB6gEAAeoDAAHqBQAB6ggAAeoJAAHqCgAB6gsAAeoMAAHqDgAB6hAAAeoRAAHqEgAB6hQAAeoVAAHqVAAB6lYAAepZAAHqWwAB6l4AAepfAAHqYAAB6mEAAepiAAHqZAAB6mYAAepnAAHqaAAB6moAAeprAAHqqgAB6qwAAequAAHqsAAB6rMAAeq0AAHqtQAB6rYAAeq3AAHquQAB6rsAAeq8AAHqvQAB6r8AAerAAAHq/wAB6wEAAesDAAHrBQAB6wgAAesJAAHrCgAB6wsAAesMAAHrDgAB6xAAAesRAAHrEgAB6xQAAesVAAHrVAAB61YAAetYAAHrWgAB610AAeteAAHrXwAB62AAAethAAHrYwAB62UAAetmAAHrZwAB62kAAetqAAHrtQAB69gAAev4AAHsGAAB7BoAAewcAAHsHgAB7CAAAewjAAHsJAAB7CUAAewoAAHsKQAB7CsAAewsAAHsLgAB7DEAAewyAAHsMwAB7DYAAew3AAHsPAAB7EkAAexOAAHsUAAB7FIAAexXAAHsWgAB7F0AAexfAAHshAAB7KgAAezPAAHs8wAB7PYAAez4AAHs+gAB7PwAAez+AAHtAAAB7QEAAe0EAAHtEQAB7SIAAe0kAAHtJgAB7SgAAe0qAAHtLAAB7S4AAe0wAAHtMgAB7UMAAe1GAAHtSQAB7UwAAe1PAAHtUgAB7VUAAe1YAAHtWwAB7V0AAe2cAAHtngAB7aAAAe2iAAHtpQAB7aYAAe2nAAHtqAAB7akAAe2rAAHtrQAB7a4AAe2vAAHtsQAB7bIAAe3xAAHt8wAB7fUAAe33AAHt+gAB7fsAAe38AAHt/QAB7f4AAe4AAAHuAgAB7gMAAe4EAAHuBgAB7gcAAe5GAAHuSAAB7ksAAe5NAAHuUAAB7lEAAe5SAAHuUwAB7lQAAe5WAAHuWAAB7lkAAe5aAAHuXAAB7l0AAe5qAAHuawAB7mwAAe5uAAHurQAB7q8AAe6xAAHuswAB7rYAAe63AAHuuAAB7rkAAe66AAHuvAAB7r4AAe6/AAHuwAAB7sIAAe7DAAHvAgAB7wQAAe8GAAHvCAAB7wsAAe8MAAHvDQAB7w4AAe8PAAHvEQAB7xMAAe8UAAHvFQAB7xcAAe8YAAHvVwAB71kAAe9bAAHvXQAB72AAAe9hAAHvYgAB72MAAe9kAAHvZgAB72gAAe9pAAHvagAB72wAAe9tAAHvrAAB764AAe+wAAHvsgAB77UAAe+2AAHvtwAB77gAAe+5AAHvuwAB770AAe++AAHvvwAB78EAAe/CAAHwAQAB8AMAAfAFAAHwBwAB8AoAAfALAAHwDAAB8A0AAfAOAAHwEAAB8BIAAfATAAHwFAAB8BYAAfAXAAHwPAAB8GAAAfCHAAHwqwAB8K4AAfCwAAHwsgAB8LQAAfC2AAHwuAAB8LkAAfC8AAHwyQAB8NgAAfDaAAHw3AAB8N4AAfDgAAHw4gAB8OQAAfDmAAHw9QAB8PgAAfD7AAHw/gAB8QEAAfEEAAHxBwAB8QoAAfEMAAHxSwAB8U0AAfFQAAHxUgAB8VUAAfFWAAHxVwAB8VgAAfFZAAHxWwAB8V0AAfFeAAHxXwAB8WEAAfFiAAHxoQAB8aMAAfGlAAHxpwAB8aoAAfGrAAHxrAAB8a0AAfGuAAHxsAAB8bIAAfGzAAHxtAAB8bYAAfG3AAHx9gAB8fgAAfH6AAHx/AAB8f8AAfIAAAHyAQAB8gIAAfIDAAHyBQAB8gcAAfIIAAHyCQAB8gsAAfIMAAHySwAB8k0AAfJQAAHyUgAB8lUAAfJWAAHyVwAB8lgAAfJZAAHyWwAB8l0AAfJeAAHyXwAB8mEAAfJiAAHyoQAB8qMAAfKlAAHypwAB8qoAAfKrAAHyrAAB8q0AAfKuAAHysAAB8rIAAfKzAAHytAAB8rYAAfK3AAHy9gAB8vgAAfL6AAHy/AAB8v8AAfMAAAHzAQAB8wIAAfMDAAHzBQAB8wcAAfMIAAHzCQAB8wsAAfMMAAHzSwAB800AAfNPAAHzUQAB81QAAfNVAAHzVgAB81cAAfNYAAHzWgAB81wAAfNdAAHzXgAB82AAAfNhAAHzagAB82sAAfNtAAHzrAAB864AAfOwAAHzsgAB87UAAfO2AAHztwAB87gAAfO5AAHzuwAB870AAfO+AAHzvwAB88EAAfPCAAH0AQAB9AMAAfQFAAH0BwAB9AoAAfQLAAH0DAAB9A0AAfQOAAH0EAAB9BIAAfQTAAH0FAAB9BYAAfQXAAH0VgAB9FgAAfRbAAH0XQAB9GAAAfRhAAH0YgAB9GMAAfRkAAH0ZgAB9GgAAfRpAAH0agAB9GwAAfRtAAH0bwAB9K4AAfSwAAH0sgAB9LQAAfS3AAH0uAAB9LkAAfS6AAH0uwAB9L0AAfS/AAH0wAAB9MEAAfTDAAH0xAAB9QMAAfUFAAH1BwAB9QkAAfUMAAH1DQAB9Q4AAfUPAAH1EAAB9RIAAfUUAAH1FQAB9RYAAfUYAAH1GQAB9WQAAfWHAAH1pwAB9ccAAfXJAAH1ywAB9c0AAfXPAAH10QAB9dIAAfXTAAH11gAB9dcAAfXZAAH12gAB9dwAAfXeAAH13wAB9eAAAfXjAAH15AAB9ekAAfX2AAH1+wAB9f0AAfX/AAH2BAAB9gcAAfYKAAH2DAAB9jEAAfZVAAH2fAAB9qAAAfajAAH2pQAB9qcAAfapAAH2qwAB9q0AAfauAAH2sQAB9r4AAfbPAAH20QAB9tMAAfbVAAH21wAB9tkAAfbbAAH23QAB9t8AAfbwAAH28wAB9vYAAfb5AAH2/AAB9v8AAfcCAAH3BQAB9wgAAfcKAAH3SQAB90sAAfdNAAH3TwAB91IAAfdTAAH3VAAB91UAAfdWAAH3WAAB91oAAfdbAAH3XAAB914AAfdfAAH3ngAB96AAAfeiAAH3pAAB96cAAfeoAAH3qQAB96oAAferAAH3rQAB968AAfewAAH3sQAB97MAAfe0AAH38wAB9/UAAff4AAH3+gAB9/0AAff+AAH3/wAB+AAAAfgBAAH4AwAB+AUAAfgGAAH4BwAB+AkAAfgKAAH4FwAB+BgAAfgZAAH4GwAB+FoAAfhcAAH4XgAB+GAAAfhjAAH4ZAAB+GUAAfhmAAH4ZwAB+GkAAfhrAAH4bAAB+G0AAfhvAAH4cAAB+K8AAfixAAH4swAB+LUAAfi4AAH4uQAB+LoAAfi7AAH4vAAB+L4AAfjAAAH4wQAB+MIAAfjEAAH4xQAB+QQAAfkGAAH5CAAB+QoAAfkNAAH5DgAB+Q8AAfkQAAH5EQAB+RMAAfkVAAH5FgAB+RcAAfkZAAH5GgAB+VkAAflbAAH5XQAB+V8AAfliAAH5YwAB+WQAAfllAAH5ZgAB+WgAAflqAAH5awAB+WwAAfluAAH5bwAB+a4AAfmwAAH5sgAB+bQAAfm3AAH5uAAB+bkAAfm6AAH5uwAB+b0AAfm/AAH5wAAB+cEAAfnDAAH5xAAB+ekAAfoNAAH6NAAB+lgAAfpbAAH6XQAB+l8AAfphAAH6YwAB+mUAAfpmAAH6aQAB+nYAAfqFAAH6hwAB+okAAfqLAAH6jQAB+o8AAfqRAAH6kwAB+qIAAfqlAAH6qAAB+qsAAfquAAH6sQAB+rQAAfq3AAH6uQAB+vgAAfr6AAH6/QAB+v8AAfsCAAH7AwAB+wQAAfsFAAH7BgAB+wgAAfsKAAH7CwAB+wwAAfsOAAH7DwAB+04AAftQAAH7UgAB+1QAAftXAAH7WAAB+1kAAftaAAH7WwAB+10AAftfAAH7YAAB+2EAAftjAAH7ZAAB+6MAAfulAAH7pwAB+6kAAfusAAH7rQAB+64AAfuvAAH7sAAB+7IAAfu0AAH7tQAB+7YAAfu4AAH7uQAB+/gAAfv6AAH7/QAB+/8AAfwCAAH8AwAB/AQAAfwFAAH8BgAB/AgAAfwKAAH8CwAB/AwAAfwOAAH8DwAB/E4AAfxQAAH8UgAB/FQAAfxXAAH8WAAB/FkAAfxaAAH8WwAB/F0AAfxfAAH8YAAB/GEAAfxjAAH8ZAAB/KMAAfylAAH8pwAB/KkAAfysAAH8rQAB/K4AAfyvAAH8sAAB/LIAAfy0AAH8tQAB/LYAAfy4AAH8uQAB/PgAAfz6AAH8/AAB/P4AAf0BAAH9AgAB/QMAAf0EAAH9BQAB/QcAAf0JAAH9CgAB/QsAAf0NAAH9DgAB/VkAAf18AAH9nAAB/bwAAf2+AAH9wAAB/cIAAf3EAAH9xgAB/ccAAf3IAAH9ywAB/cwAAf3OAAH9zwAB/dEAAf3TAAH91AAB/dUAAf3YAAH92QAB/d4AAf3rAAH98AAB/fIAAf30AAH9+QAB/fwAAf3/AAH+AQAB/iYAAf5KAAH+cQAB/pUAAf6YAAH+mgAB/pwAAf6eAAH+oAAB/qIAAf6jAAH+pgAB/rMAAf7EAAH+xgAB/sgAAf7KAAH+zAAB/s4AAf7QAAH+0gAB/tQAAf7lAAH+6AAB/usAAf7uAAH+8QAB/vQAAf73AAH++gAB/v0AAf7/AAH/PgAB/0AAAf9CAAH/RAAB/0cAAf9IAAH/SQAB/0oAAf9LAAH/TQAB/08AAf9QAAH/UQAB/1MAAf9UAAH/kwAB/5UAAf+XAAH/mQAB/5wAAf+dAAH/ngAB/58AAf+gAAH/ogAB/6QAAf+lAAH/pgAB/6gAAf+pAAH/6AAB/+oAAf/tAAH/7wAB//IAAf/zAAH/9AAB//UAAf/2AAH/+AAB//oAAf/7AAH//AAB//4AAf//AAIADAACAA0AAgAOAAIAEAACAE8AAgBRAAIAUwACAFUAAgBYAAIAWQACAFoAAgBbAAIAXAACAF4AAgBgAAIAYQACAGIAAgBkAAIAZQACAKQAAgCmAAIAqAACAKoAAgCtAAIArgACAK8AAgCwAAIAsQACALMAAgC1AAIAtgACALcAAgC5AAIAugACAPkAAgD7AAIA/QACAP8AAgECAAIBAwACAQQAAgEFAAIBBgACAQgAAgEKAAIBCwACAQwAAgEOAAIBDwACAU4AAgFQAAIBUgACAVQAAgFXAAIBWAACAVkAAgFaAAIBWwACAV0AAgFfAAIBYAACAWEAAgFjAAIBZAACAaMAAgGlAAIBpwACAakAAgGsAAIBrQACAa4AAgGvAAIBsAACAbIAAgG0AAIBtQACAbYAAgG4AAIBuQACAd4AAgICAAICKQACAk0AAgJQAAICUgACAlQAAgJWAAICWAACAloAAgJbAAICXgACAmsAAgJ6AAICfAACAn4AAgKAAAICggACAoQAAgKGAAICiAACApcAAgKaAAICnQACAqAAAgKjAAICpgACAqkAAgKsAAICrgACAu0AAgLvAAIC8QACAvMAAgL2AAIC9wACAvgAAgL5AAIC+gACAvwAAgL+AAIC/wACAwAAAgMCAAIDAwACA0IAAgNEAAIDRwACA0kAAgNMAAIDTQACA04AAgNPAAIDUAACA1IAAgNUAAIDVQACA1YAAgNYAAIDWQACA5gAAgOaAAIDnAACA54AAgOhAAIDogACA6MAAgOkAAIDpQACA6cAAgOpAAIDqgACA6sAAgOtAAIDrgACA+0AAgPvAAID8gACA/QAAgP3AAID+AACA/kAAgP6AAID+wACA/0AAgP/AAIEAAACBAEAAgQDAAIEBAACBEcAAgRrAAIEjwACBLIAAgTZAAIE+QACBSAAAgVHAAIFZwACBYsAAgWvAAIFsQACBbQAAgW2AAIFuAACBboAAgW9AAIFwAACBcIAAgXEAAIFxwACBckAAgXLAAIFzgACBdEAAgXSAAIF1wACBeQAAgXnAAIF6QACBewAAgXvAAIF8QACBhYAAgY6AAIGYQACBoUAAgaIAAIGigACBowAAgaOAAIGkAACBpIAAgaTAAIGlgACBqMAAga2AAIGuAACBroAAga8AAIGvgACBsAAAgbCAAIGxAACBsYAAgbIAAIG2wACBt4AAgbhAAIG5AACBucAAgbqAAIG7QACBvAAAgbzAAIG9gACBvgAAgc3AAIHOQACBzwAAgc+AAIHQQACB0IAAgdDAAIHRAACB0UAAgdHAAIHSQACB0oAAgdLAAIHTQACB04AAgdXAAIHWAACB1oAAgeZAAIHmwACB50AAgefAAIHogACB6MAAgekAAIHpQACB6YAAgeoAAIHqgACB6sAAgesAAIHrgACB68AAgfuAAIH8AACB/MAAgf1AAIH+AACB/kAAgf6AAIH+wACB/wAAgf+AAIIAAACCAEAAggCAAIIBAACCAUAAggOAAIIDwACCBEAAghQAAIIUgACCFQAAghWAAIIWQACCFoAAghbAAIIXAACCF0AAghfAAIIYQACCGIAAghjAAIIZQACCGYAAgilAAIIpwACCKoAAgisAAIIrwACCLAAAgixAAIIsgACCLMAAgi1AAIItwACCLgAAgi5AAIIuwACCLwAAgjFAAIIxgACCMgAAgkHAAIJCQACCQsAAgkNAAIJEAACCREAAgkSAAIJEwACCRQAAgkWAAIJGAACCRkAAgkaAAIJHAACCR0AAglcAAIJXgACCWEAAgljAAIJZgACCWcAAgloAAIJaQACCWoAAglsAAIJbgACCW8AAglwAAIJcgACCXMAAgmAAAIJgQACCYIAAgmEAAIJwwACCcUAAgnHAAIJyQACCcwAAgnNAAIJzgACCc8AAgnQAAIJ0gACCdQAAgnVAAIJ1gACCdgAAgnZAAIKGAACChoAAgocAAIKHgACCiEAAgoiAAIKIwACCiQAAgolAAIKJwACCikAAgoqAAIKKwACCi0AAgouAAIKOwACCkQAAgpHAAIKSQACCkwAAgpPAAIKWAACClsAAgpeAAIKYQACCmQAAgpmAAIKawACCnAAAgp1AAIKwAACCuMAAgsDAAILIwACCyUAAgsnAAILKQACCysAAgsuAAILLwACCzAAAgszAAILNAACCzYAAgs3AAILOQACCzwAAgs9AAILPgACC0EAAgtCAAILRwACC1QAAgtZAAILWwACC10AAgtiAAILZQACC2gAAgtqAAILjwACC7MAAgvaAAIL/gACDAEAAgwDAAIMBQACDAcAAgwJAAIMCwACDAwAAgwPAAIMHAACDC0AAgwvAAIMMQACDDMAAgw1AAIMNwACDDkAAgw7AAIMPQACDE4AAgxRAAIMVAACDFcAAgxaAAIMXQACDGAAAgxjAAIMZgACDGgAAgynAAIMqQACDKsAAgytAAIMsAACDLEAAgyyAAIMswACDLQAAgy2AAIMuAACDLkAAgy6AAIMvAACDL0AAgz8AAIM/gACDQAAAg0CAAINBQACDQYAAg0HAAINCAACDQkAAg0LAAINDQACDQ4AAg0PAAINEQACDRIAAg1RAAINUwACDVYAAg1YAAINWwACDVwAAg1dAAINXgACDV8AAg1hAAINYwACDWQAAg1lAAINZwACDWgAAg11AAINdgACDXcAAg15AAINuAACDboAAg28AAINvgACDcEAAg3CAAINwwACDcQAAg3FAAINxwACDckAAg3KAAINywACDc0AAg3OAAIODQACDg8AAg4RAAIOEwACDhYAAg4XAAIOGAACDhkAAg4aAAIOHAACDh4AAg4fAAIOIAACDiIAAg4jAAIOYgACDmQAAg5mAAIOaAACDmsAAg5sAAIObQACDm4AAg5vAAIOcQACDnMAAg50AAIOdQACDncAAg54AAIOtwACDrkAAg67AAIOvQACDsAAAg7BAAIOwgACDsMAAg7EAAIOxgACDsgAAg7JAAIOygACDswAAg7NAAIPDAACDw4AAg8QAAIPEgACDxUAAg8WAAIPFwACDxgAAg8ZAAIPGwACDx0AAg8eAAIPHwACDyEAAg8iAAIPRwACD2sAAg+SAAIPtgACD7kAAg+7AAIPvQACD78AAg/BAAIPwwACD8QAAg/HAAIP1AACD+MAAg/lAAIP5wACD+kAAg/rAAIP7QACD+8AAg/xAAIQAAACEAMAAhAGAAIQCQACEAwAAhAPAAIQEgACEBUAAhAXAAIQVgACEFgAAhBaAAIQXAACEF8AAhBgAAIQYQACEGIAAhBjAAIQZQACEGcAAhBoAAIQaQACEGsAAhBsAAIQqwACEK0AAhCvAAIQsQACELQAAhC1AAIQtgACELcAAhC4AAIQugACELwAAhC9AAIQvgACEMAAAhDBAAIRAAACEQIAAhEEAAIRBgACEQkAAhEKAAIRCwACEQwAAhENAAIRDwACEREAAhESAAIREwACERUAAhEWAAIRVQACEVcAAhFZAAIRWwACEV4AAhFfAAIRYAACEWEAAhFiAAIRZAACEWYAAhFnAAIRaAACEWoAAhFrAAIRqgACEawAAhGuAAIRsAACEbMAAhG0AAIRtQACEbYAAhG3AAIRuQACEbsAAhG8AAIRvQACEb8AAhHAAAIR/wACEgEAAhIDAAISBQACEggAAhIJAAISCgACEgsAAhIMAAISDgACEhAAAhIRAAISEgACEhQAAhIVAAISVAACElYAAhJZAAISWwACEl4AAhJfAAISYAACEmEAAhJiAAISZAACEmYAAhJnAAISaAACEmoAAhJrAAIStgACEtkAAhL5AAITGQACExsAAhMdAAITHwACEyEAAhMkAAITJQACEyYAAhMpAAITKgACEywAAhMtAAITLwACEzEAAhMyAAITMwACEzYAAhM3AAITPAACE0kAAhNOAAITUAACE1IAAhNXAAITWgACE10AAhNfAAIThAACE6gAAhPPAAIT8wACE/YAAhP4AAIT+gACE/wAAhP+AAIUAAACFAEAAhQEAAIUEQACFCIAAhQkAAIUJgACFCgAAhQqAAIULAACFC4AAhQwAAIUMgACFEMAAhRGAAIUSQACFEwAAhRPAAIUUgACFFUAAhRYAAIUWwACFF0AAhScAAIUngACFKAAAhSiAAIUpQACFKYAAhSnAAIUqAACFKkAAhSrAAIUrQACFK4AAhSvAAIUsQACFLIAAhTxAAIU8wACFPUAAhT3AAIU+gACFPsAAhT8AAIU/QACFP4AAhUAAAIVAgACFQMAAhUEAAIVBgACFQcAAhVGAAIVSAACFUsAAhVNAAIVUAACFVEAAhVSAAIVUwACFVQAAhVWAAIVWAACFVkAAhVaAAIVXAACFV0AAhVqAAIVawACFWwAAhVuAAIVrQACFa8AAhWxAAIVswACFbYAAhW3AAIVuAACFbkAAhW6AAIVvAACFb4AAhW/AAIVwAACFcIAAhXDAAIWAgACFgQAAhYGAAIWCAACFgsAAhYMAAIWDQACFg4AAhYPAAIWEQACFhMAAhYUAAIWFQACFhcAAhYYAAIWVwACFlkAAhZbAAIWXQACFmAAAhZh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AAIm/gACJwAAAicBAAInAgACJwQAAicFAAInKgACJ04AAid1AAInmQACJ5wAAieeAAInoAACJ6IAAiekAAInpgACJ6cAAieqAAIntwACJ8YAAifIAAInygACJ8wAAifOAAIn0AACJ9IAAifUAAIn4wACJ+YAAifpAAIn7AACJ+8AAifyAAIn9QACJ/gAAif6AAIoOQACKDsAAig9AAIoPwACKEIAAihDAAIoRAACKEUAAihGAAIoSAACKEoAAihLAAIoTAACKE4AAihPAAIojgACKJAAAiiSAAIolAACKJcAAiiYAAIomQACKJoAAiibAAIonQACKJ8AAiigAAIooQACKKMAAiikAAIo4wACKOUAAijnAAIo6QACKOwAAijtAAIo7gACKO8AAijwAAIo8gACKPQAAij1AAIo9gACKPgAAij5AAIpOAACKToAAik9AAIpPwACKUIAAilDAAIpRAACKUUAAilGAAIpSAACKUoAAilLAAIpTAACKU4AAilPAAIpjgACKZAAAimSAAIplAACKZcAAimYAAIpmQACKZoAAimbAAIpnQACKZ8AAimgAAIpoQACKaMAAimkAAIp4wACKeUAAinnAAIp6QACKewAAintAAIp7gACKe8AAinwAAIp8gACKfQAAin1AAIp9gACKfgAAin5AAIqOAACKjoAAio8AAIqPgACKkEAAipCAAIqQwACKkQAAipFAAIqRwACKkkAAipKAAIqSwACKk0AAipOAAIqVwACKlgAAipaAAIqmQACKpsAAiqdAAIqnwACKqIAAiqjAAIqpAACKqUAAiqmAAIqqAACKqoAAiqrAAIqrAACKq4AAiqvAAIq7gACKvAAAiryAAIq9AACKvcAAir4AAIq+QACKvoAAir7AAIq/QACKv8AAisAAAIrAQACKwMAAisEAAIrQwACK0UAAitIAAIrSgACK00AAitOAAIrTwACK1AAAitRAAIrUwACK1UAAitWAAIrVwACK1kAAitaAAIrYwACK2QAAitmAAIrbwACK3QAAit3AAIregACK3wAAiuZAAIrowACK6wAAiuvAAIrsQACK7QAAiu3AAIrugACK7wAAiv/AAIsIwACLEcAAixqAAIskQACLLEAAizYAAIs/wACLR8AAi1DAAItZwACLWkAAi1sAAItbgACLXAAAi1yAAItdQACLXgAAi16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AAJVVgACVVcAAlVYAAJVWgACVVwAAlVdAAJVXgACVWAAAlVhAAJVoAACVaIAAlWkAAJVpgACVakAAlWqAAJVqwACVawAAlWtAAJVrwACVbEAAlWyAAJVswACVbUAAlW2AAJV9QACVfcAAlX5AAJV+wACVf4AAlX/AAJWAAACVgEAAlYCAAJWBAACVgYAAlYHAAJWCAACVgoAAlYLAAJWSgACVkwAAlZPAAJWUQACVlQAAlZVAAJWVgACVlcAAlZYAAJWWgACVlwAAlZdAAJWXgACVmAAAlZhAAJWoAACVqIAAlakAAJWpgACVqkAAlaqAAJWqwACVqwAAlatAAJWrwACVrEAAlayAAJWswACVrUAAla2AAJW9QACVvcAAlb5AAJW+wACVv4AAlb/AAJXAAACVwEAAlcCAAJXBAACVwYAAlcHAAJXCAACVwoAAlcLAAJXSgACV0wAAldOAAJXUAACV1MAAldUAAJXVQACV1YAAldXAAJXWQACV1sAAldcAAJXXQACV18AAldgAAJXqwACV84AAlfuAAJYDgACWBAAAlgSAAJYFAACWBYAAlgZAAJYGgACWBsAAlgeAAJYHwACWCEAAlgiAAJYJAACWCcAAlgoAAJYKQACWCwAAlgtAAJYMgACWD8AAlhEAAJYRgACWEgAAlhNAAJYUAACWFMAAlhVAAJYegACWJ4AAljFAAJY6QACWOwAAljuAAJY8AACWPIAAlj0AAJY9gACWPcAAlj6AAJZBwACWRgAAlkaAAJZHAACWR4AAlkgAAJZIgACWSQAAlkmAAJZKAACWTkAAlk8AAJZPwACWUIAAllFAAJZSAACWUsAAllOAAJZUQACWVMAAlmSAAJZlAACWZYAAlmYAAJZmwACWZwAAlmdAAJZngACWZ8AAlmhAAJZowACWaQAAlmlAAJZpwACWagAAlnnAAJZ6QACWesAAlntAAJZ8AACWfEAAlnyAAJZ8wACWfQAAln2AAJZ+AACWfkAAln6AAJZ/AACWf0AAlo8AAJaPgACWkEAAlpDAAJaRgACWkcAAlpIAAJaSQACWkoAAlpMAAJaTgACWk8AAlpQAAJaUgACWlMAAlpgAAJaYQACWmIAAlpkAAJaowACWqUAAlqnAAJaqQACWqwAAlqtAAJargACWq8AAlqwAAJasgACWrQAAlq1AAJatgACWrgAAlq5AAJa+AACWvoAAlr8AAJa/gACWwEAAlsCAAJbAwACWwQAAlsFAAJbBwACWwkAAlsKAAJbCwACWw0AAlsOAAJbTQACW08AAltRAAJbUwACW1YAAltXAAJbWAACW1kAAltaAAJbXAACW14AAltfAAJbYAACW2IAAltjAAJbogACW6QAAlumAAJbqAACW6sAAlusAAJbrQACW64AAluvAAJbsQACW7MAAlu0AAJbtQACW7cAAlu4AAJb9wACW/kAAlv7AAJb/QACXAAAAlwBAAJcAgACXAMAAlwEAAJcBgACXAgAAlwJAAJcCgACXAwAAlwNAAJcMgACXFYAAlx9AAJcoQACXKQAAlymAAJcqAACXKoAAlysAAJcrgACXK8AAlyyAAJcvwACXM4AAlzQAAJc0gACXNQAAlzWAAJc2AACXNoAAlzcAAJc6wACXO4AAlzxAAJc9AACXPcAAlz6AAJc/QACXQAAAl0CAAJdQQACXUMAAl1FAAJdRwACXUoAAl1LAAJdTAACXU0AAl1OAAJdUAACXVIAAl1TAAJdVAACXVYAAl1XAAJdlgACXZgAAl2aAAJdnAACXZ8AAl2gAAJdoQACXaIAAl2jAAJdpQACXacAAl2oAAJdqQACXasAAl2sAAJd6wACXe0AAl3vAAJd8QACXfQAAl31AAJd9gACXfcAAl34AAJd+gACXfwAAl39AAJd/gACXgAAAl4BAAJeQAACXkIAAl5FAAJeRwACXkoAAl5LAAJeTAACXk0AAl5OAAJeUAACXlIAAl5TAAJeVAACXlYAAl5XAAJelgACXpgAAl6aAAJenAACXp8AAl6gAAJeoQACXqIAAl6jAAJepQACXqcAAl6oAAJeqQACXqsAAl6sAAJe6wACXu0AAl7vAAJe8QACXvQAAl71AAJe9gACXvcAAl74AAJe+gACXvwAAl79AAJe/gACXwAAAl8BAAJfQAACX0IAAl9FAAJfRwACX0oAAl9LAAJfTAACX00AAl9OAAJfUAACX1IAAl9TAAJfVAACX1YAAl9XAAJfogACX8UAAl/lAAJgBQACYAcAAmAJAAJgCwACYA0AAmAQAAJgEQACYBIAAmAVAAJgFgACYBgAAmAZAAJgGwACYB4AAmAfAAJgIAACYCMAAmAkAAJgKQACYDYAAmA7AAJgPQACYD8AAmBEAAJgRwACYEoAAmBMAAJgcQACYJUAAmC8AAJg4AACYOMAAmDlAAJg5wACYOkAAmDrAAJg7QACYO4AAmDxAAJg/gACYQ8AAmERAAJhEwACYRUAAmEXAAJhGQACYRsAAmEdAAJhHwACYTAAAmEzAAJhNgACYTkAAmE8AAJhPwACYUIAAmFFAAJhSAACYUoAAmGJAAJhiwACYY0AAmGPAAJhkgACYZMAAmGUAAJhlQACYZYAAmGYAAJhmgACYZsAAmGcAAJhngACYZ8AAmHeAAJh4AACYeIAAmHkAAJh5wACYegAAmHpAAJh6gACYesAAmHtAAJh7wACYfAAAmHxAAJh8wACYfQAAmIzAAJiNQACYjgAAmI6AAJiPQACYj4AAmI/AAJiQAACYkEAAmJDAAJiRQACYkYAAmJHAAJiSQACYkoAAmJXAAJiWAACYlkAAmJbAAJimgACYpwAAmKeAAJioAACYqMAAmKkAAJipQACYqYAAmKnAAJiqQACYqsAAmKsAAJirQACYq8AAmKwAAJi7wACYvEAAmLzAAJi9QACYvgAAmL5AAJi+gACYvsAAmL8AAJi/gACYwAAAmMBAAJjAgACYwQAAmMFAAJjRAACY0YAAmNIAAJjSgACY00AAmNOAAJjTwACY1AAAmNRAAJjUwACY1UAAmNWAAJjVwACY1kAAmNaAAJjmQACY5sAAmOdAAJjnwACY6IAAmOjAAJjpAACY6UAAmOmAAJjqAACY6oAAmOrAAJjrAACY64AAmOvAAJj7gACY/AAAmPyAAJj9AACY/cAAmP4AAJj+QACY/oAAmP7AAJj/QACY/8AAmQAAAJkAQACZAMAAmQEAAJkKQACZE0AAmR0AAJkmAACZJsAAmSdAAJknwACZKEAAmSjAAJkpQACZKYAAmSpAAJktgACZMUAAmTHAAJkyQACZMsAAmTNAAJkzwACZNEAAmTTAAJk4gACZOUAAmToAAJk6wACZO4AAmTxAAJk9AACZPcAAmT5AAJlOAACZToAAmU9AAJlPwACZUIAAmVDAAJlRAACZUUAAmVGAAJlSAACZUoAAmVLAAJlTAACZU4AAmVPAAJljgACZZAAAmWSAAJllAACZZcAAmWYAAJlmQACZZoAAmWbAAJlnQACZZ8AAmWgAAJloQACZaMAAmWkAAJl4wACZeUAAmXnAAJl6QACZewAAmXtAAJl7gACZe8AAmXwAAJl8gACZfQAAmX1AAJl9gACZfgAAmX5AAJmOAACZjoAAmY9AAJmPwACZkIAAmZDAAJmRAACZkUAAmZGAAJmSAACZkoAAmZLAAJmTAACZk4AAmZPAAJmjgACZpAAAmaSAAJmlAACZpcAAmaYAAJmmQACZpoAAmabAAJmnQACZp8AAmagAAJmoQACZqMAAmakAAJm4wACZuUAAmbnAAJm6QACZuwAAmbtAAJm7gACZu8AAmbwAAJm8gACZvQAAmb1AAJm9gACZvgAAmb5AAJnOAACZzoAAmc8AAJnPgACZ0EAAmdCAAJnQwACZ0QAAmdFAAJnRwACZ0kAAmdKAAJnSwACZ00AAmdOAAJnVwACZ1gAAmdaAAJnmQACZ5sAAmedAAJnnwACZ6IAAmejAAJnpAACZ6UAAmemAAJnqAACZ6oAAmerAAJnrAACZ64AAmevAAJn7gACZ/AAAmfyAAJn9AACZ/cAAmf4AAJn+QACZ/oAAmf7AAJn/QACZ/8AAmgAAAJoAQACaAMAAmgEAAJoQwACaEUAAmhIAAJoSgACaE0AAmhOAAJoTwACaFAAAmhRAAJoUwACaFUAAmhWAAJoVwACaFkAAmhaAAJoYwACaGYAAmhpAAJoawACaHAAAmh5AAJokgACaJsAAmi0AAJoywACaN0AAmj6AAJo/QACaP8AAmkBAAJpAwACaQYAAmkIAAJpDQACaUwAAmlOAAJpUAACaVIAAmlUAAJpVQACaVYAAmlXAAJpWAACaVoAAmlcAAJpXQACaV4AAmlgAAJpYQACaaAAAmmiAAJppAACaaYAAmmoAAJpqQACaaoAAmmrAAJprAACaa4AAmmwAAJpsQACabIAAmm0AAJptQACafQAAmn2AAJp+AACafoAAmn8AAJp/QACaf4AAmn/AAJqAAACagIAAmoEAAJqBQACagYAAmoIAAJqCQACahIAAmoVAAJqGAACahoAAmpdAAJqgQACaqUAAmrIAAJq7wACaw8AAms2AAJrXQACa30AAmuhAAJrxQACa8cAAmvKAAJrzAACa84AAmvQAAJr0wACa9YAAmvYAAJr2gACa90AAmvfAAJr4QACa+QAAmvnAAJr6AACa+0AAmv6AAJr/QACa/8AAmwCAAJsBQACbAcAAmwsAAJsUAACbHcAAmybAAJsngACbKAAAmyiAAJspAACbKYAAmyoAAJsqQACbKwAAmy5AAJszAACbM4AAmzQAAJs0gACbNQAAmzWAAJs2AACbNoAAmzcAAJs3gACbPEAAmz0AAJs9wACbPoAAmz9AAJtAAACbQMAAm0GAAJtCQACbQwAAm0OAAJtTQACbU8AAm1SAAJtVAACbVcAAm1YAAJtWQACbVoAAm1bAAJtXQACbV8AAm1gAAJtYQACbWMAAm1kAAJtbQACbW4AAm1wAAJtrwACbbEAAm2zAAJttQACbbgAAm25AAJtugACbbsAAm28AAJtvgACbcAAAm3BAAJtwgACbcQAAm3FAAJuBAACbgYAAm4JAAJuCwACbg4AAm4PAAJuEAACbhEAAm4SAAJuFAACbhYAAm4XAAJuGAACbhoAAm4bAAJuJAACbiUAAm4nAAJuZgACbmgAAm5qAAJubAACbm8AAm5wAAJucQACbnIAAm5zAAJudQACbncAAm54AAJueQACbnsAAm58AAJuuwACbr0AAm7AAAJuwgACbsUAAm7GAAJuxwACbsgAAm7JAAJuywACbs0AAm7OAAJuzwACbtEAAm7SAAJu2wACbtwAAm7eAAJvHQACbx8AAm8hAAJvIwACbyYAAm8nAAJvKAACbykAAm8qAAJvLAACby4AAm8vAAJvMAACbzIAAm8zAAJvcgACb3QAAm93AAJveQACb3wAAm99AAJvfgACb38AAm+AAAJvggACb4QAAm+FAAJvhgACb4gAAm+JAAJvlgACb5cAAm+YAAJvmgACb9kAAm/bAAJv3QACb98AAm/iAAJv4wACb+QAAm/lAAJv5gACb+gAAm/qAAJv6wACb+wAAm/uAAJv7wACcC4AAnAwAAJwMgACcDQAAnA3AAJwOAACcDkAAnA6AAJwOwACcD0AAnA/AAJwQAACcEEAAnBDAAJwRAACcFEAAnBaAAJwXQACcGAAAnBjAAJwZgACcG8AAnByAAJwdQACcHgAAnB7AAJwfQACcIMAAnCVAAJwogACcO0AAnEQAAJxMAACcVAAAnFSAAJxVAACcVYAAnFYAAJxWwACcVwAAnFdAAJxYAACcWEAAnFjAAJxZAACcWYAAnFpAAJxagACcWsAAnFuAAJxbwACcXQAAnGBAAJxhgACcYgAAnGKAAJxjwACcZIAAnGVAAJxlwACcbwAAnHgAAJyBwACcisAAnIuAAJyMAACcjIAAnI0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AAKIJwACiCgAAogpAAKIKgACiCwAAoguAAKILwACiDAAAogyAAKIMwACiHIAAoh0AAKIdgACiHgAAoh7AAKIfAACiH0AAoh+AAKIfwACiIEAAoiDAAKIhAACiIUAAoiHAAKIiAACiNMAAoj2AAKJFgACiTYAAok4AAKJOgACiTwAAok+AAKJQQACiUIAAolDAAKJRgACiUcAAolJAAKJSgACiUwAAolPAAKJUAACiVEAAolUAAKJVQACiVoAAolnAAKJbAACiW4AAolwAAKJdQACiXgAAol7AAKJfQACiaIAAonGAAKJ7QACihEAAooUAAKKFgACihgAAooaAAKKHAACih4AAoofAAKKIgACii8AAopAAAKKQgACikQAAopGAAKKSAACikoAAopMAAKKTgACilAAAophAAKKZAACimcAAopqAAKKbQACinAAAopzAAKKdgACinkAAop7AAKKugACirwAAoq+AAKKwAACisMAAorEAAKKxQACisYAAorHAAKKyQACissAAorMAAKKzQACis8AAorQAAKLDwACixEAAosTAAKLFQACixgAAosZAAKLGgACixsAAoscAAKLHgACiyAAAoshAAKLIgACiyQAAoslAAKLZAACi2YAAotpAAKLawACi24AAotvAAKLcAACi3EAAotyAAKLdAACi3YAAot3AAKLeAACi3oAAot7AAKLiAACi4kAAouKAAKLjAACi8sAAovNAAKLzwACi9EAAovUAAKL1QACi9YAAovXAAKL2AACi9oAAovcAAKL3QACi94AAovgAAKL4QACjCAAAowiAAKMJAACjCYAAowpAAKMKgACjCsAAowsAAKMLQACjC8AAowxAAKMMgACjDMAAow1AAKMNgACjHUAAox3AAKMeQACjHsAAox+AAKMfwACjIAAAoyBAAKMggACjIQAAoyGAAKMhwACjIgAAoyKAAKMiwACjMoAAozMAAKMzgACjNAAAozTAAKM1AACjNUAAozWAAKM1wACjNkAAozbAAKM3AACjN0AAozfAAKM4AACjR8AAo0hAAKNIwACjSUAAo0oAAKNKQACjSoAAo0rAAKNLAACjS4AAo0wAAKNMQACjTIAAo00AAKNNQACjVoAAo1+AAKNpQACjckAAo3MAAKNzgACjdAAAo3SAAKN1AACjdYAAo3XAAKN2gACjecAAo32AAKN+AACjfoAAo38AAKN/gACjgAAAo4CAAKOBAACjhMAAo4WAAKOGQACjhwAAo4fAAKOIgACjiUAAo4oAAKOKgACjmkAAo5rAAKObQACjm8AAo5yAAKOcwACjnQAAo51AAKOdgACjngAAo56AAKOewACjnwAAo5+AAKOfwACjr4AAo7AAAKOwgACjsQAAo7HAAKOyAACjskAAo7KAAKOywACjs0AAo7PAAKO0AACjtEAAo7TAAKO1AACjxMAAo8VAAKPFwACjxkAAo8cAAKPHQACjx4AAo8fAAKPIAACjyIAAo8kAAKPJQACjyYAAo8oAAKPKQACj2gAAo9qAAKPbQACj28AAo9yAAKPcwACj3QAAo91AAKPdgACj3gAAo96AAKPewACj3wAAo9+AAKPfwACj74AAo/AAAKPwgACj8QAAo/HAAKPyAACj8kAAo/KAAKPywACj80AAo/PAAKP0AACj9EAAo/TAAKP1AACkBMAApAVAAKQFwACkBkAApAcAAKQHQACkB4AApAfAAKQIAACkCIAApAkAAKQJQACkCYAApAoAAKQKQACkGgAApBqAAKQbAACkG4AApBxAAKQcgACkHMAApB0AAKQdQACkHcAApB5AAKQegACkHsAApB9AAKQfgACkIcAApCIAAKQigACkM0AApDxAAKRFQACkTgAApFfAAKRfwACkaYAApHNAAKR7QACkhEAApI1AAKSNwACkjoAApI8AAKSPgACkkAAApJDAAKSRgACkkgAApJKAAKSTQACkk8AApJRAAKSVAACklcAApJYAAKSXQACkmoAApJtAAKSbwACknIAApJ1AAKSdwACkpwAApLAAAKS5wACkwsAApMOAAKTEAACkxIAApMUAAKTFgACkxgAApMZAAKTHAACkykAApM8AAKTPgACk0AAApNCAAKTRAACk0YAApNIAAKTSgACk0wAApNOAAKTYQACk2QAApNnAAKTagACk20AApNwAAKTcwACk3YAApN5AAKTfAACk34AApO9AAKTvwACk8IAApPEAAKTxwACk8gAApPJAAKTygACk8sAApPNAAKTzwACk9AAApPRAAKT0wACk9QAApPdAAKT3gACk+AAApQfAAKUIQAClCMAApQlAAKUKAAClCkAApQqAAKUKwAClCwAApQuAAKUMAAClDEAApQyAAKUNAAClDUAApR0AAKUdgAClHkAApR7AAKUfgAClH8AApSAAAKUgQAClIIAApSEAAKUhgAClIcAApSIAAKUigAClIsAApSUAAKUlQAClJcAApTWAAKU2AAClNoAApTcAAKU3wAClOAAApThAAKU4gAClOMAApTlAAKU5wAClOgAApTpAAKU6wAClOwAApUrAAKVLQAClTAAApUyAAKVNQAClTYAApU3AAKVOAAClTkAApU7AAKVPQAClT4AApU/AAKVQQAClUIAApVLAAKVTAAClU4AApWNAAKVjwAClZEAApWTAAKVlgAClZcAApWYAAKVmQAClZoAApWcAAKVngAClZ8AApWgAAKVogAClaMAApXiAAKV5AAClecAApXpAAKV7AACle0AApXuAAKV7wAClfAAApXyAAKV9AAClfUAApX2AAKV+AAClfkAApYGAAKWBwAClggAApYKAAKWSQAClksAApZNAAKWTwACllIAApZTAAKWVAACllUAApZWAAKWWAAClloAApZbAAKWXAACll4AApZfAAKWngAClqAAApajAAKWpQAClqgAApapAAKWqgAClqsAApasAAKWrgAClrAAApaxAAKWsgAClrQAApa1AAKWxAACltEAApbWAAKW2QACltwAApbhAAKW5AAClucAApbpAAKW7gAClzkAApdcAAKXfAACl5wAApeeAAKXoAACl6IAApekAAKXpwACl6gAApepAAKXrAACl60AApevAAKXsAACl7IAApe1AAKXtgACl7cAApe6AAKXuwACl8AAApfNAAKX0gACl9QAApfWAAKX2wACl94AApfhAAKX4wACmAgAApgsAAKYUwACmHcAAph6AAKYfAACmH4AApiAAAKYggACmIQAApiFAAKYiAACmJUAApimAAKYqAACmKoAApisAAKYrgACmLAAApiyAAKYtAACmLYAApjHAAKYygACmM0AApjQAAKY0wACmNYAApjZAAKY3AACmN8AApjhAAKZIAACmSIAApkkAAKZJgACmSkAApkqAAKZKwACmSwAApktAAKZLwACmTEAApkyAAKZMwACmTUAApk2AAKZdQACmXcAApl5AAKZewACmX4AApl/AAKZgAACmYEAApmCAAKZhAACmYYAApmHAAKZiAACmYoAApmLAAKZygACmcwAApnPAAKZ0QACmdQAApnVAAKZ1gACmdcAApnYAAKZ2gACmdwAApndAAKZ3gACmeAAApnhAAKZ7gACme8AApnwAAKZ8gACmjEAApozAAKaNQACmjcAApo6AAKaOwACmjwAApo9AAKaPgACmkAAAppCAAKaQwACmkQAAppGAAKaRwACmoYAApqIAAKaigACmowAApqPAAKakAACmpEAApqSAAKakwACmpUAApqXAAKamAACmpkAApqbAAKanAACmtsAAprdAAKa3wACmuEAAprkAAKa5QACmuYAAprnAAKa6AACmuoAAprsAAKa7QACmu4AAprwAAKa8QACmzAAApsyAAKbNAACmzYAAps5AAKbOgACmzsAAps8AAKbPQACmz8AAptBAAKbQgACm0MAAptFAAKbRgACm4UAApuHAAKbiQACm4sAApuOAAKbjwACm5AAApuRAAKbkgACm5QAApuWAAKblwACm5gAApuaAAKbmwACm8AAApvkAAKcCwACnC8AApwyAAKcNAACnDYAApw4AAKcOgACnDwAApw9AAKcQAACnE0AApxcAAKcXgACnGAAApxiAAKcZAACnGYAApxoAAKcagACnHkAApx8AAKcfwACnIIAApyFAAKciAACnIsAApyOAAKckAACnM8AApzRAAKc0wACnNUAApzYAAKc2QACnNoAApzbAAKc3AACnN4AApzgAAKc4QACnOIAApzkAAKc5QACnSQAAp0mAAKdKAACnSoAAp0tAAKdLgACnS8AAp0wAAKdMQACnTMAAp01AAKdNgACnTcAAp05AAKdOgACnXkAAp17AAKdfQACnX8AAp2CAAKdgwACnYQAAp2FAAKdhgACnYgAAp2KAAKdiwACnYwAAp2OAAKdjwACnc4AAp3QAAKd0wACndUAAp3YAAKd2QACndoAAp3bAAKd3AACnd4AAp3gAAKd4QACneIAAp3kAAKd5QACniQAAp4mAAKeKAACnioAAp4tAAKeLgACni8AAp4wAAKeMQACnjMAAp41AAKeNgACnjcAAp45AAKeOgACnnkAAp57AAKefQACnn8AAp6CAAKegwACnoQAAp6FAAKehgACnogAAp6KAAKeiwACnowAAp6OAAKejwACns4AAp7QAAKe0gACntQAAp7XAAKe2AACntkAAp7aAAKe2wACnt0AAp7fAAKe4AACnuEAAp7jAAKe5AACny8AAp9SAAKfcgACn5IAAp+UAAKflgACn5gAAp+aAAKfnQACn54AAp+fAAKfogACn6MAAp+lAAKfpgACn6gAAp+rAAKfrAACn60AAp+wAAKfsQACn7oAAp/HAAKfzAACn84AAp/QAAKf1QACn9gAAp/bAAKf3QACoAIAAqAmAAKgTQACoHEAAqB0AAKgdgACoHgAAqB6AAKgfAACoH4AAqB/AAKgggACoI8AAqCgAAKgogACoKQAAqCmAAKgqAACoKoAAqCsAAKgrgACoLAAAqDBAAKgxAACoMcAAqDKAAKgzQACoNAAAqDTAAKg1gACoNkAAqDbAAKhGgACoRwAAqEeAAKhIAACoSMAAqEkAAKhJQACoSYAAqEnAAKhKQACoSsAAqEsAAKhLQACoS8AAqEwAAKhbwACoXEAAqFzAAKhdQACoXgAAqF5AAKhegACoXsAAqF8AAKhfgACoYAAAqGBAAKhggACoYQAAqGFAAKhxAACocYAAqHJAAKhywACoc4AAqHPAAKh0AACodEAAqHSAAKh1AACodYAAqHXAAKh2AACodoAAqHbAAKh6AACoekAAqHqAAKh7AACoisAAqItAAKiLwACojEAAqI0AAKiNQACojYAAqI3AAKiOAACojoAAqI8AAKiPQACoj4AAqJAAAKiQQACooAAAqKCAAKihAACooYAAqKJAAKiigACoosAAqKMAAKijQACoo8AAqKRAAKikgACopMAAqKVAAKilgACotUAAqLXAAKi2QACotsAAqLeAAKi3wACouAAAqLhAAKi4gACouQAAqLmAAKi5wACougAAqLqAAKi6wACoyoAAqMsAAKjLgACozAAAqMzAAKjNAACozUAAqM2AAKjNwACozkAAqM7AAKjPAACoz0AAqM/AAKjQAACo38AAqOBAAKjgwACo4UAAqOIAAKjiQACo4oAAqOLAAKjjAACo44AAqOQAAKjkQACo5IAAqOUAAKjlQACo7oAAqPeAAKkBQACpCkAAqQsAAKkLgACpDAAAqQyAAKkNAACpDYAAqQ3AAKkOgACpEcAAqRWAAKkWAACpFoAAqRcAAKkXgACpGAAAqRiAAKkZAACpHMAAqR2AAKkeQACpHwAAqR/AAKkggACpIUAAqSIAAKkigACpMkAAqTLAAKkzgACpNAAAqTTAAKk1AACpNUAAqTWAAKk1wACpNkAAqTbAAKk3AACpN0AAqTfAAKk4AACpR8AAqUhAAKlIwACpSUAAqUoAAKlKQACpSoAAqUrAAKlLAACpS4AAqUwAAKlMQACpTIAAqU0AAKlNQACpXQAAqV2AAKleAACpXoAAqV9AAKlfgACpX8AAqWAAAKlgQACpYMAAqWFAAKlhgACpYcAAqWJAAKligACpckAAqXLAAKlzgACpdAAAqXTAAKl1AACpdUAAqXWAAKl1wACpdkAAqXbAAKl3AACpd0AAqXfAAKl4AACph8AAqYhAAKmIwACpiUAAqYoAAKmKQACpioAAqYrAAKmLAACpi4AAqYwAAKmMQACpjIAAqY0AAKmNQACpnQAAqZ2AAKmeAACpnoAAqZ9AAKmfgACpn8AAqaAAAKmgQACpoMAAqaFAAKmhgACpocAAqaJAAKmigACpskAAqbLAAKmzQACps8AAqbSAAKm0wACptQAAqbVAAKm1gACptgAAqbaAAKm2wACptwAAqbeAAKm3wACpugAAqbpAAKm6wACpvgAAqb5AAKm+gACpvwAAqcJAAKnCgACpwsAAqcNAAKnGgACpxsAAqccAAKnHgACpycAAqc2AAKnQwACp1IAAqdkAAKneAACp48AAqehAAKnqgACp6sAAqetAAKnugACp7sAAqe8AAKnvgACp78AAqfIAAKn0gACp9kAAAAAAAAEAgAAAAAAAGYoAAAAAAAAAAAAAAAAAAKn4Q== - - Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 11.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 -cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIMwALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPXA9gD4APsBAAEDwQeBC0EMQRABE8EXgRtBHwEiASaBKkEuATHBNYE5QT0BQMFCwUgBSEFKQUqBTYFSgVZBWgFdwV7BYoFmQWoBbcFxgXSBeQF5QXmBecF6AXpBeoF6wX6BgkGGAYnBigGNwZGBlUGXQZyBnMGewaHBpsGqga5BsgGzAbbBuoG+QcIBxcHIwc1B0QHUwdUB2MHcgeMB40HkwefB7UHxAfHB9YH5QfoB/cIBggJCBgIJwgrCDoISQhKCFwIXQheCF8IYAhhCGIIdwh4CIAIjAigCK8IvgjNCNEI4AjvCP4JDQkcCSgJOglJCUoJWQloCXcJeAmHCZYJpQm6CbsJwwnPCeMJ8goBChAKFAojCjIKQQpQCl8Kawp9CowKmwqqCrkKyArXCuYK+wr8CwQLEAskCzMLQgtRC1ULZAtzC4ILkQugC6wLvgvNC9wL6wv6C/sMCgwZDCgMPQw+DEYMUgxmDHUMhAyTDJcMpgy1DMQM0wziDO4NAA0PDR4NLQ08DUsNWg1pDX4Nfw2HDZMNpw22DcUN1A3YDecN9g4FDhQOIw4vDkEOUA5fDm4OfQ6MDpsOqg6/DsAOyA7UDugO9w8GDxUPGQ8oDzcPRg9VD2QPcA+CD5EPoA+vD74Pvw/OD90P7BABEAIQChAWECoQORBIEFcQWxBqEHkQiBCXEKYQshDEENMQ4hDxEQARDxEeES0RLhExEToRSRFYEWcRfBF9EYURkRGlEbQRwxHSEdYR5RH0EgMSEhIhEi0SPxJOEk8SXhJtEnwSfRKMEpsSqhK/EsASyBLUEugS9xMGExUTGRMoEzcTRhNVE2QTcBOCE5EToBOvE74TzRPcE+sUABQBFAkUFRQpFDgURxRWFFoUaRR4FIcUlhSlFLEUwxTSFOEU8BT/FQ4VHRUsFUEVQhVKFVYVahV5FYgVlxWbFaoVuRXIFdcV5hXyFgQWExYUFiMWMhZBFkIWURZgFm8WhBaFFo0WmRatFrwWyxbaFt4W7Rb8FwsXGhcpFzUXRxdWF2UXdBeDF5IXoRewF8UXxhfOF9oX7hf9GAwYGxgfGC4YPRhMGFsYahh2GIgYlximGLUYxBjTGOIY8RkGGQcZDxkbGS8ZPhlNGVwZYBlvGX4ZjRmcGasZtxnJGdgZ5xn2GgUaBhoVGiQaMxpIGkkaURpdGnEagBqPGp4aohqxGsAazxreGu0a+RsLGxobKRs4G0cbYRtiG2gbdBuKG5kbnBurG7obvRvMG9sb3hvtG/wcABwPHB4cKhwrHCwcLRxCHEMcSxxXHGscehyJHJgcnByrHLocyRzYHOcc8x0FHRQdIx0yHUEdUB1fHW4dgx2EHYwdmB2sHbsdyh3ZHd0d7B37HgoeGR4oHjQeRh5VHmQecx6CHpEeoB6vHsQexR7NHtke7R78HwsfGh8eHy0fPB9LH1ofaR91H4cflh+lH7Qfwx/SH+Ef8CAFIAYgDiAaIC4gPSBMIFsgXyBuIH0gjCCbIKogtiDIINcg5iD1IQQhHiEfISUhMSFHIVYhWSFoIWkheCF7IYohmSGcIashuiG+Ic0h3CIWIhciGCIZIhoiGyIcIh0iHiIfIiAiISIiIiMiJCIlIiYiJyIoIikiKiIrIiwiLSIuIi8iRCJFIk0iWSJtInwiiyKaIp4irSK8Issi2iLbIuoi9iMIIxcjJiM1I0QjUyNiI3EjhiOHI48jmyOvI74jzSPcI+Aj7yP+JA0kHCQrJDckSSRYJGckdiSFJJQkoySyJMckyCTQJNwk8CT/JQ4lHSUhJTAlPyVOJV0lbCV4JYolmSWoJbclxiXVJeQl8yYIJgkmESYdJjEmQCZPJl4mYiZxJoAmjyaeJp8mria6Jswm2ybqJvknCCcXJyYnNSdKJ0snUydfJ3MngieRJ6AnpCezJ8In0SfgJ+8n+ygNKBwoKyg6KEkoWChnKHYoiyiMKJQooCi0KMMo0ijh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WJVYqlirWLNYv1jTWOJY8VkAWQRZE1kiWTFZQFlPWVtZbVl8WYtZmlmpWbhZx1nWWetZ7Fn0WgBaFFojWjJaQVpFWlRaY1pyWoFakFqcWq5avVrMWtta6lr5WwhbF1ssWy1bNVtBW1VbZFtzW4JbhluVW6Rbs1vCW9Fb3VvvW/5cDVwcXCtcOlxJXFhcbVxuXHZcglyWXKVctFzDXMdc1lzlXPRdA10SXR5dMF0/XU5dXV1sXXtdil2ZXa5dr123XcNd113mXfVeBF4IXhdeJl41XkReU15fXnFegF6PXp5erV68Xste2l7dXuxe+18KXw5fD18VXxxfHV8sXztfSl9OX2hfaV9vX3tfkV+gX6Nfsl/BX8Rf01/iX+Vf9GADYAdgFmAlYDFgMmAzYDRgSWBKYFJgXmByYIFgkGCfYKNgsmDBYNBg32DuYPphDGEbYSphOWFIYVdhZmF1YYphi2GTYZ9hs2HCYdFh4GHkYfNiAmIRYiBiL2I7Yk1iXGJrYnpiiWKYYqditmLLYsxi1GLgYvRjA2MSYyFjJWM0Y0NjUmNhY3BjfGOOY51jrGO7Y8pj2WPoY/dkDGQNZBVkIWQ1ZERkU2RiZGZkdWSEZJNkomSxZL1kz2TeZO1k/GULZRplKWU4ZTtlVWVWZVxlaGV+ZY1lkGWfZa5lsWXAZc9l0mXhZfBl9GYDZhJmE2YbZhxmMWYyZjpmRmZaZmlmeGaHZotmmmapZrhmx2bWZuJm9GcDZxJnIWcwZz9nTmddZ3Jnc2d7Z4dnm2eqZ7lnyGfMZ9tn6mf5aAhoF2gjaDVoRGhTaGJocWiAaI9onmihaKVoqWitaLVouGi8aL1VJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCDKAAIEIL4EIMIEIMd4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEILYEIK4ABgASAAIEILIEILhAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEUAUFdOUy5rZXlzWk5TLm9iamVjdHOqADsAPAA9AD4APwBAAEEAQgBDAESABoAHgAiACYAKgAuADIANgA6AD6oARgBHAEgASQBKAEsATABNAE4AT4AQgNeBBraBBg+BBt6AYYEHdIEH54ECVoECxYAvVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbVdBY2NvdW50XlBsYXliYWNrUmVjb3JkV0xpYnJhcnlVVGhlbWXfEBAAXABdAF4AXwAfAGAAYQAhAGIAYwAOACMAZABlACYAZgBnAGgAJwAnABMAbABtAC8AJwBnAHAAOwBnAHMAdAB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gBKANoAEgASAAoATgQGWgASAEoEBmIAGgBKBB3OAEQgS4Vx/9VdvcmRlcmVk0wA4ADkADgB5AHsAUKEAeoAUoQB8gBWAL15YRF9QU3RlcmVvdHlwZdkAHwAjAIAADgAmAIEAIQBmAIIARgB6AGcAhgAVACcALwB1AIpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAEIAUgBKANYAAgAQIgBbTADgAOQAOAIwAlgBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6kAlwCYAJkAmgCbAJwAnQCeAJ+AIIAkgCaAKIApgCuALYAwgDSAL18QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAZWERfUFNLX2ZldGNoUmVxdWVzdHNBcnJheV8QEVhEX1BTS19pc0Fic3RyYWN0XxAPWERfUFNLX3VzZXJJbmZvXxATWERfUFNLX2NsYXNzTWFwcGluZ18QFlhEX1BTS19lbnRpdHlDbGFzc05hbWXfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQC2ABUAfAB1AHUAdQAvAHUAvQCNAHUAdQAVAHVVX3R5cGVYX2RlZmF1bHRcX2Fzc29jaWF0aW9uW19pc1JlYWRPbmx5WV9pc1N0YXRpY1lfaXNVbmlxdWVaX2lzRGVyaXZlZFpfaXNPcmRlcmVkXF9pc0NvbXBvc2l0ZVdfaXNMZWFmgACAIYAAgBUICAgIgCOAFwgIgAAI0gA5AA4AxADFoIAi0gDHAMgAyQDKWiRjbGFzc25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjAMkAywDMV05TQXJyYXlYTlNPYmplY3TSAMcAyADOAM9fEBBYRFVNTFByb3BlcnR5SW1wpADQANEA0gDMXxAQWERVTUxQcm9wZXJ0eUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUA1QAVAHwAdQB1AHUALwB1AL0AjgB1AHUAFQB1gACAJYAAgBUICAgIgCOAGAgIgAAIWlBsYXlsaXN0VjPfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQDlABUAfAB1AHUAdQAvAHUAvQCPAHUAdQAVAHWAAIAngACAFQgICAiAI4AZCAiAAAjSADkADgDzAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUAfAB1AHUAdQAvAHUAvQCQAHUAdQAVAHWAAIAAgACAFQgICAiAI4AaCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEGABUAfAB1AHUAdQAvAHUAvQCRAHUAdQAVAHWAAIAqgACAFQgICAiAI4AbCAiAAAjSADkADgEUAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUAfAB1AHUAdQAvAHUAvQCSAHUAdQAVAHWAAIAsgACAFQgICAiAI4AcCAiAAAgI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBKAAVAHwAdQB1AHUALwB1AL0AkwB1AHUAFQB1gACALoAAgBUICAgIgCOAHQgIgAAI0wA4ADkADgE2ATcAUKCggC/SAMcAyAE6ATtfEBNOU011dGFibGVEaWN0aW9uYXJ5owE6ATwAzFxOU0RpY3Rpb25hcnnfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQE/ABUAfAB1AHUAdQAvAHUAvQCUAHUAdQAVAHWAAIAxgACAFQgICAiAI4AeCAiAAAjWACMADgAmAGYAHwAhAU0BTgAVAHUAFQAvgDKAM4AACIAAXxAUWERHZW5lcmljUmVjb3JkQ2xhc3PSAMcAyAFUAVVdWERVTUxDbGFzc0ltcKYBVgFXAVgBWQFaAMxdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQA7ABUAfAB1AHUAdQAvAHUAvQCVAHUAdQAVAHWAAIAGgACAFQgICAiAI4AfCAiAAAjSAMcAyAFrAWxfEBJYRFVNTFN0ZXJlb3R5cGVJbXCnAW0BbgFvAXABcQFyAMxfEBJYRFVNTFN0ZXJlb3R5cGVJbXBdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDTADgAOQAOAXQBdgBQoQF1gDehAXeAOIAvVWl0ZW1z3xASAKsArACtAXsAHwCvALABfAAhAK4BfQCxAA4AIwCyALMAJgC0ABUAFQAVACcARgB1AHUBhQAvAHUAZwB1AYkBdQB1AHUBjQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAEAgIgDoIgBIIgKCANwgIgDkIEo2znYXTADgAOQAOAZEBlABQogGSAZOAO4A8ogGVAZaAPYBSgC9fEBJYRF9QUHJvcFN0ZXJlb3R5cGVfEBBYRF9QUl9TdGVyZW90eXBl2QAfACMBmwAOACYBnAAhAGYBnQF3AZIAZwCGABUAJwAvAHUBpV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYA4gDuAEoA1gACABAiAPtMAOAA5AA4BpwGwAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoAbEBsgGzAbQBtQG2AbcBuIBHgEiASYBLgEyAToBPgFGAL18QG1hEX1BQU0tfaXNTdG9yZWRJblRydXRoRmlsZV8QG1hEX1BQU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8Q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bmRIZXhfEB5kYXJrU3lzdGVtR3JvdXBlZEJhY2tncm91bmRIZXhfECBkYXJrU2Vjb25kYXJ5U3lzdGVtQmFja2dyb3VuZEhleF8QGGxpZ2h0U3lzdGVtQmFja2dyb3VuZEhleF8QEGRhcmtTZXBhcmF0b3JIZXhfEBFkYXJrU3lzdGVtRmlsbEhleF8QGmxpZ2h0VGVydGlhcnlTeXN0ZW1GaWxsSGV4XmxpZ2h0QWNjZW50SGV4XxARbGlnaHRTZXBhcmF0b3JIZXhfEBJsaWdodFN5c3RlbUZpbGxIZXhfEA9saWdodFByaW1hcnlIZXheZGFya1ByaW1hcnlIZXhfEBdkYXJrU3lzdGVtQmFja2dyb3VuZEhleF8QGWRhcmtUZXJ0aWFyeVN5c3RlbUZpbGxIZXhfEBtsaWdodFNlY29uZGFyeVN5c3RlbUZpbGxIZXhYc2VsZWN0ZWRdZGFya0FjY2VudEhleF8QIGxpZ2h0VGVydGlhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAfbGlnaHRTeXN0ZW1Hcm91cGVkQmFja2dyb3VuZEhleN8QEgCrAKwArSIwAB8ArwCwIjEAIQCuIjIAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1IjoALwB1AGcAdQUaId4AdQB1IkIAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBAvQIgBIIgMGBAtkICIEC8wgSUCiUntMAOAA5AA4iRiJJAFCiAZIFJIA7gKSiIkoiS4EC9YEDAYAv2QAfACMiTgAOACYiTwAhAGYiUCH6AZIAZwCGABUAJwAvAHUiWF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEC8oA7gBKANYAAgAQIgQL20wA4ADkADiJaImMAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgiZCJlImYiZyJo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ACcAZwBwAD4AZ00lTSYAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgQYhgASABIACgQYRgQGWgASAEoEBmIAJgBKBBoGBBhAIEqxQdq/TADgAOQAOTSpNLABQoQB6gBShTS2BBhKAL9kAHwAjTTAADgAmTTEAIQBmTTIASQB6AGcAhgAVACcALwB1TTpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBg+AFIASgDWAAIAECIEGE9MAOAA5AA5NPE1GAFCpAI0AjgCPAJAAkQCSAJMAlACVgBeAGIAZgBqAG4AcgB2AHoAfqU1HTUhNSU1KTUtNTE1NTU5NT4EGFIEGFoEGF4EGGYEGGoEGHIEGHYEGH4EGIIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVNUwAVTS0AdQB1AHUALwB1AL0AjQB1AHUAFQB1gACBBhWAAIEGEggICAiAI4AXCAiAAAjSADkADk1hAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVNLQB1AHUAdQAvAHUAvQCOAHUAdQAVAHWAAIAAgACBBhIICAgIgCOAGAgIgAAI3xAPAKsArACtAB8A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ADkADmi2AMWggCLTADgAOQAOaLlougBQoKCAL1DSAMcAyGi+aL9ZWERQTU1vZGVso2i+aMAAzFdYRE1vZGVsAAAACAAAABkAAAAiAAAALAAAADEAAAA6AAAAPwAAAFEAAABWAAAAWwAAAF0AABDHAAAQzQAAEOYAABD4AAAQ/wAAEQ0AABEaAAARMgAAEUwAABFOAAARUQAAEVMAABFWAAARWQAAEVwAABGVAAARtAAAEdEAABHwAAASAgAAEiIAABIpAAASRwAAElMAABJvAAASdQAAEpcAABK4AAASywAAEs0AABLQAAAS0wAAEtUAABLXAAAS2QAAEtwAABLfAAAS4QAAEuMAABLlAAAS5wAAEukAABLrAAAS7AAAEvAAABL9AAATBQAAExAAABMlAAATJwAAEykAABMrAAATLQAAEy8AABMxAAATMwAAEzUAABM3AAATOQAAE04AABNQAAATUgAAE1UAABNYAAATWwAAE10AABNgAAATYwAAE2YAABNpAAATawAAE3IAABOAAAAThQAAE44AABOWAAATogAAE6oAABO5AAATwQAAE8cAABQKAAAULgAAFFIAABR1AAAUnAAAFLwAABTjAAAVCgAAFSoAABVOAAAVcgAAFX4AABWAAAAVggAAFYQAABWGAAAViAAAFYoAABWNAAAVjwAAFZEAABWUAAAVlgAAFZgAABWbAAAVnQAAFZ4AABWjAAAVqwAAFbgAABW7AAAVvQAAFcAAABXCAAAVxAAAFdMAABX4AAAWHAAAFkMAABZnAAAWaQAAFmsAABZtAAAWbwAAFnEAABZzAAAWdAAAFnYAABaDAAAWlgAAFpgAABaaAAAWnAAAFp4AABagAAAWogAAFqQAABamAAAWqAAAFrsAABa9AAAWvwAAFsEAABbDAAAWxQAAFscAABbJAAAWywAAFs0AABbPAAAW5QAAFvgAABcUAAAXMQAAF00AABdhAAAXcwAAF4kAABeiAAAX4QAAF+cAABfwAAAX/QAAGAkAABgTAAAYHQAAGCgAABgzAAAYQAAAGEgAABhKAAAYTAAAGE4AABhQAAAYUQAAGFIAABhTAAAYVAAAGFYAABhYAAAYWQAAGFoAABhcAAAYXQAAGGYAABhnAAAYaQAAGHIAABh9AAAYhgAAGJUAABicAAAYpAAAGK0AABi2AAAYyQAAGNIAABjlAAAY/AAAGQ4AABlNAAAZTwAAGVEAABlTAAAZVQAAGVYAABlXAAAZWAAAGVkAABlbAAAZXQAAGV4AABlfAAAZYQAAGWIAABltAAAZrAAAGa4AABmwAAAZsgAAGbQAABm1AAAZtgAAGbcAABm4AAAZugAAGbwAABm9AAAZvgAAGcAAABnBAAAZygAAGcsAABnNAAAaDAAAGg4AABoQAAAaEgAAGhQAABoVAAAaFgAAGhcAABoYAAAaGgAAGhwAABodAAAaHgAAGiAAABohAAAaYAAAGmIAABpkAAAaZgAAGmgAABppAAAaagAAGmsAABpsAAAabgAAGnAAABpxAAAacgAAGnQAABp1AAAafgAAGn8AABqBAAAawAAAGsIAABrEAAAaxgAAGsgAABrJAAAaygAAGssAABrMAAAazgAAGtAAABrRAAAa0gAAGtQAABrVAAAa1gAAGxUAABsXAAAbGQAAGxsAABsdAAAbHgAAGx8AABsgAAAbIQAAGyMAABslAAAbJgAAGycAABspAAAbKgAAGzcAABs4AAAbOQAAGzsAABtEAAAbWgAAG2EAABtuAAAbrQAAG68AABuxAAAbswAAG7UAABu2AAAbtwAAG7gAABu5AAAbuwAAG70AABu+AAAbvwAAG8EAABvCAAAb2wAAG90AABvfAAAb4QAAG+IAABvkAAAb+wAAHAQAABwSAAAcHwAAHC0AABxCAAAcVgAAHG0AABx/AAAcvgAAHMAAABzCAAAcxAAAHMYAABzHAAAcyAAAHMkAABzKAAAczAAAHM4AABzPAAAc0AAAHNIAABzTAAAc3AAAHPEAAB0AAAAdFQAAHSMAAB04AAAdTAAAHWMAAB11AAAdggAAHYUAAB2HAAAdigAAHYwAAB2OAAAdlAAAHd8AAB4CAAAeIgAAHkIAAB5EAAAeRgAAHkgAAB5KAAAeTAAAHk0AAB5OAAAeUAAAHlEAAB5TAAAeVAAAHlYAAB5YAAAeWQAAHloAAB5cAAAeXQAAHmIAAB5vAAAedAAAHnYAAB54AAAefQAAHn8AAB6BAAAegwAAHpgAAB6rAAAe0AAAHvQAAB8bAAAfPwAAH0EAAB9DAAAfRQAAH0cAAB9JAAAfSwAAH0wAAB9OAAAfWwAAH2wAAB9uAAAfcAAAH3IAAB90AAAfdgAAH3gAAB96AAAffAAAH40AAB+PAAAfkQAAH5MAAB+VAAAflwAAH5kAAB+bAAAfnQAAH58AAB+9AAAf2wAAH+4AACACAAAgFwAAIDQAACBIAAAgXgAAIJ0AACCfAAAgoQAAIKMAACClAAAgpgAAIKcAACCoAAAgqQAAIKsAACCtAAAgrgAAIK8AACCxAAAgsgAAIPEAACDzAAAg9QAAIPcAACD5AAAg+gAAIPsAACD8AAAg/QAAIP8AACEBAAAhAgAAIQMAACEFAAAhBgAAIUUAACFHAAAhSQAAIUsAACFNAAAhTgAAIU8AACFQAAAhUQAAIVMAACFVAAAhVgAAIVcAACFZAAAhWgAAIWcAACFoAAAhaQAAIWsAACGqAAAhrAAAIa4AACGwAAAhsgAAIbMAACG0AAAhtQAAIbYAACG4AAAhugAAIbsAACG8AAAhvgAAIb8AACH+AAAiAAAAIgIAACIEAAAiBgAAIgcAACIIAAAiCQAAIgoAACIMAAAiDgAAIg8AACIQAAAiEgAAIhMAACIUAAAiUwAAIlUAACJXAAAiWQAAIlsAACJcAAAiXQAAIl4AACJfAAAiYQAAImMAACJkAAAiZQAAImcAACJoAAAipwAAIqkAACKrAAAirQAAIq8AACKwAAAisQAAIrIAACKzAAAitQAAIrcAACK4AAAiuQAAIrsAACK8AAAiywAAIwoAACMMAAAjDgAAIxAAACMSAAAjEwAAIxQAACMVAAAjFgAAIxgAACMaAAAjGwAAIxwAACMeAAAjHwAAI0QAACNoAAAjjwAAI7MAACO1AAAjtwAAI7kAACO7AAAjvQAAI78AACPAAAAjwgAAI88AACPeAAAj4AAAI+IAACPkAAAj5gAAI+gAACPqAAAj7AAAI/sAACP9AAAj/wAAJAEAACQDAAAkBgAAJAkAACQMAAAkDgAAJCAAACQ0AAAkRgAAJFsAACRtAAAkfAAAJJkAACTYAAAk2gAAJNwAACTeAAAk4AAAJOEAACTiAAAk4wAAJOQAACTmAAAk6AAAJOkAACTqAAAk7AAAJO0AACUsAAAlLgAAJTAAACUyAAAlNAAAJTUAACU2AAAlNwAAJTgAACU6AAAlPAAAJT0AACU+AAAlQAAAJUEAACVDAAAlggAAJYQAACWGAAAliAAAJYoAACWLAAAljAAAJY0AACWOAAAlkAAAJZIAACWTAAAllAAAJZYAACWXAAAl1gAAJdgAACXaAAAl3AAAJd4AACXfAAAl4AAAJeEAACXiAAAl5AAAJeYAACXnAAAl6AAAJeoAACXrAAAmPgAAJmIAACaGAAAmpgAAJs0AACb0AAAnFAAAJzsAACdfAAAnggAAJ6kAACfNAAAn8QAAKBUAACg8AAAoPQAAKD8AAChBAAAoQwAAKEUAAChIAAAoSgAAKEwAAChPAAAoUQAAKFMAAChWAAAoWAAAKFoAAChcAAAoXgAAKGAAAChjAAAoZgAAKG8AACh8AAAofwAAKIEAACiEAAAohgAAKIgAACitAAAo0QAAKPgAACkcAAApHgAAKSAAACkiAAApJAAAKSYAACkoAAApKQAAKSsAACk4AAApSwAAKU0AAClPAAApUQAAKVMAAClVAAApVwAAKVkAAClbAAApXQAAKXAAAClyAAApdAAAKXYAACl4AAApegAAKXwAACl+AAApgAAAKYIAACmEAAApwwAAKcUAACnHAAApyQAAKcsAACnMAAApzQAAKc4AACnPAAAp0QAAKdMAACnUAAAp1QAAKdcAACnYAAAp4QAAKeIAACnkAAAqIwAAKiUAAConAAAqKQAAKisAACosAAAqLQAAKi4AACovAAAqMQAAKjMAACo0AAAqNQAAKjcAACo4AAAqdwAAKnkAACp7AAAqfQAAKn8AACqAAAAqgQAAKoIAACqDAAAqhQAAKocAACqIAAAqiQAAKosAACqMAAAqlQAAKpYAACqYAAAq1wAAKtkAACrbAAAq3QAAKt8AACrgAAAq4QAAKuIAACrjAAAq5QAAKucAACroAAAq6QAAKusAACrsAAArKwAAKy0AACsvAAArMQAAKzMAACs0AAArNQAAKzYAACs3AAArOQAAKzsAACs8AAArPQAAKz8AACtAAAArSQAAK0oAACtMAAAriwAAK40AACuPAAArkQAAK5MAACuUAAArlQAAK5YAACuXAAArmQAAK5sAACucAAArnQAAK58AACugAAAr3wAAK+EAACvjAAAr5QAAK+cAACvoAAAr6QAAK+oAACvrAAAr7QAAK+8AACvwAAAr8QAAK/MAACv0AAAsAQAALAIAACwDAAAsBQAALEQAACxGAAAsSAAALEoAACxMAAAsTQAALE4AACxPAAAsUAAALFIAACxUAAAsVQAALFYAACxYAAAsWQAALJgAACyaAAAsnAAALJ4AACygAAAsoQAALKIAACyjAAAspAAALKYAACyoAAAsqQAALKoAACysAAAsrQAALLkAACzGAAAs8QAALPMAACz1AAAs9wAALPkAACz7AAAs/QAALP8AAC0BAAAtAwAALQUAAC0HAAAtCQAALQsAAC0NAAAtDwAALREAAC0TAAAtFQAALRcAAC0ZAAAtRAAALUYAAC1IAAAtSgAALU0AAC1QAAAtUwAALVYAAC1ZAAAtXAAALV8AAC1iAAAtZQAALWgAAC1rAAAtbgAALXEAAC10AAAtdwAALXoAAC19AAAtfwAALYYAAC2MAAAtmgAALaMAAC2vAAAtwgAALcgAAC3SAAAt1wAALeQAAC3vAAAt+gAALf8AAC4HAAAuDwAALhkAAC4kAAAuLgAALkEAAC5OAAAumQAALrwAAC7cAAAu/AAALv4AAC8AAAAvAgAALwQAAC8GAAAvBwAALwgAAC8KAAAvCwAALw0AAC8OAAAvEAAALxIAAC8TAAAvFAAALxYAAC8XAAAvHAAALykAAC8uAAAvMAAALzIAAC83AAAvOQAALzsAAC89AAAvYgAAL4YAAC+tAAAv0QAAL9MAAC/VAAAv1wAAL9kAAC/bAAAv3QAAL94AAC/gAAAv7QAAL/4AADAAAAAwAgAAMAQAADAGAAAwCAAAMAoAADAMAAAwDgAAMB8AADAhAAAwIwAAMCUAADAnAAAwKQAAMCsAADAtAAAwLwAAMDEAADBwAAAwcgAAMHQAADB2AAAweAAAMHkAADB6AAAwewAAMHwAADB+AAAwgAAAMIEAADCCAAAwhAAAMIUAADDEAAAwxgAAMMgAADDKAAAwzAAAMM0AADDOAAAwzwAAMNAAADDSAAAw1AAAMNUAADDWAAAw2AAAMNkAADEYAAAxGgAAMRwAADEeAAAxIAAAMSEAADEiAAAxIwAAMSQAADEmAAAxKAAAMSkAADEqAAAxLAAAMS0AADE6AAAxOwAAMTwAADE+AAAxfQAAMX8AADGBAAAxgwAAMYUAADGGAAAxhwAAMYgAADGJAAAxiwAAMY0AADGOAAAxjwAAMZEAADGSAAAx0QAAMdMAADHVAAAx1wAAMdkAADHaAAAx2wAAMdwAADHdAAAx3wAAMeEAADHiAAAx4wAAMeUAADHmAAAyJQAAMicAADIpAAAyKwAAMi0AADIuAAAyLwAAMjAAADIxAAAyMwAAMjUAADI2AAAyNwAAMjkAADI6AAAyeQAAMnsAADJ9AAAyfwAAMoEAADKCAAAygwAAMoQAADKFAAAyhwAAMokAADKKAAAyiwAAMo0AADKOAAAyzQAAMs8AADLRAAAy0wAAMtUAADLWAAAy1wAAMtgAADLZAAAy2wAAMt0AADLeAAAy3wAAMuEAADLiAAAzBwAAMysAADNSAAAzdgAAM3gAADN6AAAzfAAAM34AADOAAAAzggAAM4MAADOFAAAzkgAAM6EAADOjAAAzpQAAM6cAADOpAAAzqwAAM60AADOvAAAzvgAAM8AAADPCAAAzxAAAM8YAADPIAAAzygAAM8wAADPOAAA0DQAANA8AADQRAAA0EwAANBUAADQWAAA0FwAANBgAADQZAAA0GwAANB0AADQeAAA0HwAANCEAADQiAAA0YQAANGMAADRlAAA0ZwAANGkAADRqAAA0awAANGwAADRtAAA0bwAANHEAADRyAAA0cwAANHUAADR2AAA0tQAANLcAADS5AAA0uwAANL0AADS+AAA0vwAANMAAADTBAAA0wwAANMUAADTGAAA0xwAANMkAADTKAAA1CQAANQsAADUNAAA1DwAANREAADUSAAA1EwAANRQAADUVAAA1FwAANRkAADUaAAA1GwAANR0AADUeAAA1XQAANV8AADVhAAA1YwAANWUAADVmAAA1ZwAANWgAADVpAAA1awAANW0AADVuAAA1bwAANXEAADVyAAA1sQAANbMAADW1AAA1twAANbkAADW6AAA1uwAANbwAADW9AAA1vwAANcEAADXCAAA1wwAANcUAADXGAAA2BQAANgcAADYJAAA2CwAANg0AADYOAAA2DwAANhAAADYRAAA2EwAANhUAADYWAAA2FwAANhkAADYaAAA2IwAANjYAADZDAAA2VgAANmMAADZ2AAA2jQAANp8AADbqAAA3DQAANy0AADdNAAA3TwAAN1EAADdTAAA3VQAAN1cAADdYAAA3WQAAN1sAADdcAAA3XgAAN18AADdhAAA3YwAAN2QAADdlAAA3ZwAAN2gAADdtAAA3egAAN38AADeBAAA3gwAAN4gAADeKAAA3jAAAN44AADejAAA3yAAAN+wAADgTAAA4NwAAODkAADg7AAA4PQAAOD8AADhBAAA4QwAAOEQA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AEPEAABDxQAARAQAAEQGAABECAAARAoAAEQMAABEDQAARA4AAEQPAABEEAAARBIAAEQUAABEFQAARBYAAEQYAABEGQAARFgAAERaAABEXAAARF4AAERgAABEYQAARGIAAERjAABEZAAARGYAAERoAABEaQAARGoAAERsAABEbQAARJIAAES2AABE3QAARQEAAEUDAABFBQAARQcAAEUJAABFCwAARQ0AAEUOAABFEAAARR0AAEUsAABFLgAARTAAAEUyAABFNAAARTYAAEU4AABFOgAARUkAAEVLAABFTQAARU8AAEVRAABFVAAARVcAAEVaAABFXAAARZsAAEWdAABFnwAARaEAAEWjAABFpAAARaUAAEWmAABFpwAARakAAEWrAABFrAAARa0AAEWvAABFsAAARe8AAEXxAABF8wAARfUAAEX3AABF+AAARfkAAEX6AABF+wAARf0AAEX/AABGAAAARgEAAEYDAABGBAAARgYAAEZFAABGRwAARkkAAEZLAABGTQAARk4AAEZPAABGUAAARlEAAEZTAABGVQAARlYAAEZXAABGWQAARloAAEaZAABGmwAARp0AAEafAABGoQAARqIAAEajAABGpAAARqUAAEanAABGqQAARqoAAEarAABGrQAARq4AAEbxAABHFQAARzkAAEdcAABHgwAAR6MAAEfKAABH8QAASBEAAEg1AABIWQAASFsAAEhdAABIXwAASGEAAEhjAABIZQAASGgAAEhqAABIbAAASG8AAEhxAABIcwAASHYAAEh4AABIeQAASIIAAEiPAABIkgAASJQAAEiXAABImQAASJsAAEjAAABI5AAASQsAAEkvAABJMQAASTMAAEk1AABJNwAASTkAAEk7AABJPAAAST4AAElLAABJXgAASWAAAEliAABJZAAASWYAAEloAABJagAASWwAAEluAABJcAAASYMAAEmFAABJhwAASYkAAEmLAABJjQAASY8AAEmRAABJkwAASZUAAEmXAABJ1gAASdgAAEnaAABJ3AAASd4AAEnfAABJ4AAASeEAAEniAABJ5AAASeYAAEnnAABJ6AAASeoAAEnrAABJ9AAASfUAAEn3AABKNgAASjgAAEo6AABKPAAASj4AAEo/AABKQAAASkEAAEpCAABKRAAASkYAAEpHAABKSAAASkoAAEpLAABKigAASowAAEqOAABKkAAASpIAAEqTAABKlAAASpUAAEqWAABKmAAASpoAAEqbAABKnAAASp4AAEqfAABKqAAASqkAAEqrAABK6gAASuwAAEruAABK8AAASvIAAErzAABK9AAASvUAAEr2AABK+AAASvoAAEr7AABK/AAASv4AAEr/AABLPgAAS0AAAEtCAABLRAAAS0YAAEtHAABLSAAAS0kAAEtKAABLTAAAS04AAEtPAABLUAAAS1IAAEtTAABLXAAAS10AAEtfAABLngAAS6AAAEuiAABLpAAAS6YAAEunAABLqAAAS6kAAEuqAABLrAAAS64AAEuvAABLsAAAS7IAAEuzAABL8gAAS/QAAEv2AABL+AAAS/oAAEv7AABL/AAAS/0AAEv+AABMAAAATAIAAEwDAABMBAAATAYAAEwHAABMFAAATBUAAEwWAABMGAAATFcAAExZAABMWwAATF0AAExfAABMYAAATGEAAExiAABMYwAATGUAAExnAABMaAAATGkAAExrAABMbAAATKsAAEytAABMrwAATLEAAEyzAABMtAAATLUAAEy2AABMtwAATLkAAEy7AABMvAAATL0AAEy/AABMwAAATM4AAEzbAABM6gAATOwAAEzuAABM8AAATPIAAEz0AABM9gAATPgAAE0HAABNCQAATQwAAE0PAABNEgAATRUAAE0YAABNGwAATR0AAE0kAABNKwAATS4AAE05AABNRAAATVAAAE2bAABNvgAATd4AAE3+AABOAAAATgIAAE4EAABOBgAATggAAE4JAABOCgAATgwAAE4NAABODwAAThAAAE4SAABOFAAAThUAAE4WAABOGAAAThkAAE4eAABOKwAATjAAAE4yAABONAAATjkAAE47AABOPQAATj8AAE5kAABOiAAATq8AAE7TAABO1QAATtcAAE7ZAABO2wAATt0AAE7fAABO4AAATuIAAE7vAABPAAAATwIAAE8EAABPBgAATwgAAE8KAABPDAAATw4AAE8QAABPIQAATyMAAE8lAABPJwAATykAAE8rAABPLQAATy8AAE8xAABPMwAAT3IAAE90AABPdgAAT3gAAE96AABPewAAT3wAAE99AABPfgAAT4AAAE+CAABPgwAAT4QAAE+GAABPhwAAT8YAAE/IAABPygAAT8wAAE/OAABPzwAAT9AAAE/RAABP0gAAT9QAAE/WAABP1wAAT9gAAE/aAABP2wAAUBoAAFAcAABQHgAAUCAAAFAiAABQIwAAUCQAAFAlAABQJgAAUCgAAFAqAABQKwAAUCwAAFAuAABQLwAAUDwAAFA9AABQPgAAUEAAAFB/AABQgQAAUIMAAFCFAABQhwAAUIgAAFCJAABQigAAUIsAAFCNAABQjwAAUJAAAFCRAABQkwAAUJQAAFDTAABQ1QAAUNcAAFDZAABQ2wAAUNwAAFDdAABQ3gAAUN8AAFDhAABQ4wAAUOQAAFDlAABQ5wAAUOgAAFEnAABRKQAAUSsAAFEtAABRLwAAUTAAAFExAABRMgAAUTMAAFE1AABRNwAAUTgAAFE5AABROwAAUTwAAFF7AABRfQAAUX8AAFGBAABRgwAAUYQAAFGFAABRhgAAUYcAAFGJAABRiwAAUYwAAFGNAABRjwAAUZAAAFHPAABR0QAAUdMAAFHVAABR1wAAUdgAAFHZAABR2gAAUdsAAFHdAABR3wAAUeAAAFHhAABR4wAAUeQAAFIJAABSLQAAUlQAAFJ4AABSegAAUnwAAFJ+AABSgAAAUoIAAFKEAABShQAAUogAAFKVAABSpAAAUqYAAFKoAABSqgAAUqwAAFKuAABSsAAAUrIAAFLBAABSxAAAUscAAFLKAABSzQAAUtAAAFLTAABS1gAAUtgAAFMXAABTGQAAUxwAAFMeAABTIAAAUyEAAFMiAABTIwAAUyQAAFMmAABTKAAAUykAAFMqAABTLAAAUy0AAFMvAABTbgAAU3AAAFNyAABTdAAAU3YAAFN3AABTeAAAU3kAAFN6AABTfAAAU34AAFN/AABTgAAAU4IAAFODAABTwgAAU8QAAFPGAABTyAAAU8oAAFPLAABTzAAAU80AAFPOAABT0AAAU9IAAFPTAABT1AAAU9YAAFPXAABUFgAAVBgAAFQbAABUHQAAVB8AAFQgAABUIQAAVCIAAFQjAABUJQAAVCcAAFQoAABUKQAAVCsAAFQsAABULgAAVG0AAFRvAABUcQAAVHMAAFR1AABUdgAAVHcAAFR4AABUeQAAVHsAAFR9AABUfgAAVH8AAFSBAABUggAAVMEAAFTDAABUxQAAVMcAAFTJAABUygAAVMsAAFTMAABUzQAAVM8AAFTRAABU0gAAVNMAAFTVAABU1gAAVRUAAFUXAABVGQAAVRsAAFUdAABVHgAAVR8AAFUgAABVIQAAVSMAAFUlAABVJgAAVScAAFUpAABVKgAAVXUAAFWYAABVuAAAVdgAAFXaAABV3AAAVd4AAFXgAABV4gAAVeMAAFXkAABV5wAAVegAAFXqAABV6wAAVe0AAFXvAABV8AAAVfEAAFX0AABV9QAAVf4AAFYLAABWEAAAVhIAAFYUAABWGQAAVhwAAFYfAABWIQAAVkYAAFZqAABWkQAAVrUAAFa4AABWugAAVrwAAFa+AABWwAAAVsIAAFbDAABWxgAAVtMAAFbkAABW5gAAVugAAFbqAABW7AAAVu4AAFbwAABW8gAAVvQAAFcFAABXCAAAVwsAAFcOAABXEQAAVxQAAFcXAABXGgAAVx0AAFcfAABXXgAAV2AAAFdiAABXZAAAV2cAAFdoAABXaQAAV2oAAFdrAABXbQAAV28AAFdwAABXcQAAV3MAAFd0AABXswAAV7UAAFe3AABXuQAAV7wAAFe9AABXvgAAV78AAFfAAABXwgAAV8QAAFfFAABXxgAAV8gAAFfJAABYCAAAWAoAAFgNAABYDwAAWBIAAFgTAABYFAAAWBUAAFgWAABYGAAAWBoAAFgbAABYHAAAWB4AAFgfAABYLAAAWC0AAFguAABYMAAAWG8AAFhxAABYcwAAWHUAAFh4AABYeQAAWHoAAFh7AABYfAAAWH4AAFiAAABYgQAAWIIAAFiEAABYhQAAWMQAAFjGAABYyAAAWMoAAFjNAABYzgAAWM8AAFjQAABY0QAAWNMAAFjVAABY1gAAWNcAAFjZAABY2gAAWRkAAFkbAABZHQAAWR8AAFkiAABZIwAAWSQAAFklAABZJgAAWSgAAFkqAABZKwAAWSwAAFkuAABZLwAAWW4AAFlwAABZcgAAWXQAAFl3AABZeAAAWXkAAFl6AABZewAAWX0AAFl/AABZgAAAWYEAAFmDAABZhAAAWcMAAFnFAABZxwAAWckAAFnMAABZzQAAWc4AAFnPAABZ0AAAWdIAAFnUAABZ1QAAWdYAAFnYAABZ2QAAWf4AAFoiAABaSQAAWm0AAFpwAABacgAAWnQAAFp2AABaeAAAWnoAAFp7AABafgAAWosAAFqaAABanAAAWp4AAFqgAABaogAAWqQAAFqmAABaqAAAWrcAAFq6AABavQAAWsAAAFrDAABaxgAAWskAAFrMAABazgAAWw0AAFsPAABbEQAAWxMAAFsWAABbFwAAWxgAAFsZAABbGgAAWxwAAFseAABbHwAAWyAAAFsiAABbIwAAW2IAAFtkAABbZgAAW2gAAFtrAABbbAAAW20AAFtuAABbbwAAW3EAAFtzAABbdAAAW3UAAFt3AABbeAAAW7cAAFu5AABbuwAAW70AAFvAAABbwQAAW8IAAFvDAABbxAAAW8YAAFvIAABbyQAAW8oAAFvMAABbzQAAXAwAAFwOAABcEAAAXBIAAFwVAABcFgAAXBcAAFwYAABcGQAAXBsAAFwdAABcHgAAXB8AAFwhAABcIgAAXGEAAFxjAABcZQAAXGcAAFxqAABcawAAXGwAAFxtAABcbgAAXHAAAFxyAABccwAAXHQAAFx2AABcdwAAXLYAAFy4AABcugAAXLwAAFy/AABcwAAAXMEAAFzCAABcwwAAXMUAAFzHAABcyAAAXMkAAFzLAABczAAAXQsAAF0NAABdDwAAXREAAF0UAABdFQAAXRYAAF0XAABdGAAAXRoAAF0cAABdHQAAXR4AAF0gAABdIQAAXWwAAF2PAABdrwAAXc8AAF3RAABd0wAAXdUAAF3XAABd2QAAXdoAAF3bAABd3gAAXd8AAF3hAABd4gAAXeQAAF3mAABd5wAAXegAAF3rAABd7AAAXfEAAF3+AABeAwAAXgUAAF4HAABeDAAAXg8AAF4SAABeFAAAXjkAAF5dAABehAAAXqgAAF6rAABerQAAXq8AAF6xAABeswAAXrUAAF62AABeuQAAXsYAAF7XAABe2QAAXtsAAF7dAABe3wAAXuEAAF7jAABe5QAAXucAAF74AABe+wAAXv4AAF8BAABfBAAAXwcAAF8KAABfDQAAXxAAAF8SAABfUQAAX1MAAF9VAABfVwAAX1oAAF9bAABfXAAAX10AAF9eAABfYAAAX2IAAF9jAABfZAAAX2YAAF9nAABfpgAAX6gAAF+qAABfrAAAX68AAF+wAABfsQAAX7IAAF+zAABftQAAX7cAAF+4AABfuQAAX7sAAF+8AABf+wAAX/0AAGAAAABgAgAAYAUAAGAGAABgBwAAYAgAAGAJAABgCwAAYA0AAGAOAABgDwAAYBEAAGASAABgHwAAYCAAAGAhAABgIwAAYGIAAGBkAABgZgAAYGgAAGBrAABgbAAAYG0AAGBuAABgbwAAYHEAAGBzAABgdAAAYHUAAGB3AABgeAAAYLcAAGC5AABguwAAYL0AAGDAAABgwQAAYMIAAGDDAABgxAAAYMYAAGDIAABgyQAAYMoAAGDMAABgzQAAYQwAAGEOAABhEAAAYRIAAGEVAABhFgAAYRcAAGEYAABhGQAAYRsAAGEdAABhHgAAYR8AAGEhAABhIgAAYWEAAGFjAABhZQAAYWcAAGFqAABhawAAYWwAAGFtAABhbgAAYXAAAGFyAABhcwAAYXQAAGF2AABhdwAAYbYAAGG4AABhugAAYbwAAGG/AABhwAAAYcEAAGHCAABhwwAAYcUAAGHHAABhyAAAYckAAGHLAABhzAAAYfEAAGIVAABiPAAAYmAAAGJjAABiZQAAYmcAAGJpAABiawAAYm0AAGJuAABicQAAYn4AAGKNAABijwAAYpEAAGKTAABilQAAYpcAAGKZAABimwAAYqoAAGKtAABisAAAYrMAAGK2AABiuQAAYrwAAGK/AABiwQAAYwAAAGMCAABjBQAAYwcAAGMKAABjCwAAYwwAAGMNAABjDgAAYxAAAGMSAABjEwAAYxQAAGMWAABjFwAAY1YAAGNYAABjWgAAY1wAAGNfAABjYAAAY2EAAGNiAABjYwAAY2UAAGNnAABjaAAAY2kAAGNrAABjbAAAY6sAAGOtAABjrwAAY7EAAGO0AABjtQAAY7YAAGO3AABjuAAAY7oAAGO8AABjvQAAY74AAGPAAABjwQAAZAAAAGQCAABkBQAAZAcAAGQKAABkCwAAZAwAAGQNAABkDgAAZBAAAGQSAABkEwAAZBQAAGQWAABkFwAAZBkAAGRYAABkWgAAZFwAAGReAABkYQAAZGIAAGRjAABkZAAAZGUAAGRnAABkaQAAZGoAAGRrAABkbQAAZG4AAGStAABkrwAAZLEAAGSzAABktgAAZLcAAGS4AABkuQAAZLoAAGS8AABkvgAAZL8AAGTAAABkwgAAZMMAAGUCAABlBAAAZQYAAGUIAABlCwAAZQwAAGUNAABlDgAAZQ8AAGURAABlEwAAZRQAAGUVAABlFwAAZRgAAGVjAABlhgAAZaYAAGXGAABlyAAAZcoAAGXMAABlzgAAZdAAAGXRAABl0gAAZdUAAGXWAABl2AAAZdkAAGXbAABl3QAAZd4AAGXfAABl4gAAZeMAAGXoAABl9QAAZfoAAGX8AABl/gAAZgMAAGYGAABmCQAAZgsAAGYwAABmVAAAZnsAAGafAABmogAAZqQAAGamAABmqAAAZqoAAGasAABmrQAAZrAAAGa9AABmzgAAZtAAAGbSAABm1AAAZtYAAGbYAABm2gAAZtwAAGbeAABm7wAAZvIAAGb1AABm+AAAZvsAAGb+AABnAQAAZwQAAGcHAABnCQAAZ0gAAGdKAABnTAAAZ04AAGdRAABnUgAAZ1MAAGdUAABnVQAAZ1cAAGdZAABnWgAAZ1sAAGddAABnXgAAZ50AAGefAABnoQAAZ6MAAGemAABnpwAAZ6gAAGepAABnqgAAZ6wAAGeuAABnrwAAZ7AAAGeyAABnswAAZ/IAAGf0AABn9wAAZ/kAAGf8AABn/QAAZ/4AAGf/AABoAAAAaAIAAGgEAABoBQAAaAYAAGgIAABoCQAAaBYAAGgXAABoGAAAaBoAAGhZAABoWwAAaF0AAGhfAABoYgAAaGMAAGhkAABoZQAAaGYAAGhoAABoagAAaGsAAGhsAABobgAAaG8AAGiuAABosAAAaLIAAGi0AABotwAAaLgAAGi5AABougAAaLsAAGi9AABovwAAaMAAAGjBAABowwAAaMQAAGkDAABpBQAAaQcAAGkJAABpDAAAaQ0AAGkOAABpDwAAaRAAAGkSAABpFAAAaRUAAGkWAABpGAAAaRkAAGlYAABpWgAAaVwAAGleAABpYQAAaWIAAGljAABpZAAAaWUAAGlnAABpaQAAaWoAAGlrAABpbQAAaW4AAGmtAABprwAAabEAAGmzAABptgAAabcAAGm4AABpuQAAaboAAGm8AABpvgAAab8AAGnAAABpwgAAacMAAGnoAABqDAAAajMAAGpXAABqWgAAalwAAGpeAABqYAAAamIAAGpkAABqZQAAamgAAGp1AABqhAAAaoYAAGqIAABqigAAaowAAGqOAABqkAAAapIAAGqhAABqpAAAaqcAAGqqAABqrQAAarAAAGqzAABqtgAAargAAGr3AABq+QAAavsAAGr9AABrAAAAawEAAGsCAABrAwAAawQAAGsGAABrCAAAawkAAGsKAABrDAAAaw0AAGtMAABrTgAAa1AAAGtSAABrVQAAa1YAAGtXAABrWAAAa1kAAGtbAABrXQAAa14AAGtfAABrYQAAa2IAAGuhAABrowAAa6UAAGunAABrqgAAa6sAAGusAABrrQAAa64AAGuwAABrsgAAa7MAAGu0AABrtgAAa7cAAGv2AABr+AAAa/oAAGv8AABr/wAAbAAAAGwBAABsAgAAbAMAAGwFAABsBwAAbAgAAGwJAABsCwAAbAwAAGxLAABsTQAAbE8AAGxRAABsVAAAbFUAAGxWAABsVwAAbFgAAGxaAABsXAAAbF0AAGxeAABsYAAAbGEAAGygAABsogAAbKQAAGymAABsqQAAbKoAAGyrAABsrAAAbK0AAGyvAABssQAAbLIAAGyzAABstQAAbLYAAGz1AABs9wAAbPkAAGz7AABs/gAAbP8AAG0AAABtAQAAbQIAAG0EAABtBgAAbQcAAG0IAABtCgAAbQsAAG1WAABteQAAbZkAAG25AABtuwAAbb0AAG2/AABtwQAAbcMAAG3EAABtxQAAbcgAAG3JAABtywAAbcwAAG3OAABt0AAAbdEAAG3SAABt1QAAbdYAAG3bAABt6AAAbe0AAG3vAABt8QAAbfYAAG35AABt/AAAbf4AAG4jAABuRwAAbm4AAG6SAABulQAAbpcAAG6ZAABumwAAbp0AAG6fAABuoAAAbqMAAG6wAABuwQAAbsMAAG7FAABuxwAAbskAAG7LAABuzQAAbs8AAG7RAABu4gAAbuUAAG7oAABu6wAAbu4AAG7xAABu9AAAbvcAAG76AABu/AAAbzsAAG89AABvPwAAb0EAAG9EAABvRQAAb0YAAG9HAABvSAAAb0oAAG9MAABvTQAAb04AAG9QAABvUQAAb5AAAG+SAABvlAAAb5YAAG+ZAABvmgAAb5sAAG+cAABvnQAAb58AAG+hAABvogAAb6MAAG+lAABvpgAAb+UAAG/nAABv6gAAb+wAAG/vAABv8AAAb/EAAG/yAABv8wAAb/UAAG/3AABv+AAAb/kAAG/7AABv/AAAcAkAAHAKAABwCwAAcA0AAHBMAABwTgAAcFAAAHBSAABwVQAAcFYAAHBXAABwWAAAcFkAAHBbAABwXQAAcF4AAHBfAABwYQAAcGIAAHChAABwowAAcKUAAHCnAABwqgAAcKsAAHCsAABwrQAAcK4AAHCwAABwsgAAcLMAAHC0AABwtgAAcLcAAHD2AABw+AAAcPoAAHD8AABw/wAAcQAAAHEBAABxAgAAcQMAAHEFAABxBwAAcQgAAHEJAABxCwAAcQwAAHFLAABxTQAAcU8AAHFRAABxVAAAcVUAAHFWAABxVwAAcVgAAHFaAABxXAAAcV0AAHFeAABxYAAAcWEAAHGgAABxogAAcaQAAHGmAABxqQAAcaoAAHGrAABxrAAAca0AAHGvAABxsQAAcbIAAHGzAABxtQAAcbYAAHHbAABx/wAAciYAAHJKAAByTQAAck8AAHJRAAByUwAAclUAAHJXAAByWAAAclsAAHJoAABydwAAcnkAAHJ7AAByfQAAcn8AAHKBAABygwAAcoUAAHKUAABylwAAcpoAAHKdAAByoAAAcqMAAHKmAAByqQAAcqsAAHLqAABy7AAAcu8AAHLxAABy9AAAcvUAAHL2AABy9wAAcvgAAHL6AABy/AAAcv0AAHL+AABzAAAAcwEAAHNAAABzQgAAc0QAAHNGAABzSQAAc0oAAHNLAABzTAAAc00AAHNPAABzUQAAc1IAAHNTAABzVQAAc1YAAHOVAABzlwAAc5kAAHObAABzngAAc58AAHOgAABzoQAAc6IAAHOkAABzpgAAc6cAAHOoAABzqgAAc6sAAHPqAABz7AAAc+8AAHPxAABz9AAAc/UAAHP2AABz9wAAc/gAAHP6AABz/AAAc/0AAHP+AAB0AAAAdAEAAHRAAAB0QgAAdEQAAHRGAAB0SQAAdEoAAHRLAAB0TAAAdE0AAHRPAAB0UQAAdFIAAHRTAAB0VQAAdFYAAHSVAAB0lwAAdJkAAHSbAAB0ngAAdJ8AAHSgAAB0oQAAdKIAAHSkAAB0pgAAdKcAAHSoAAB0qgAAdKsAAHTqAAB07AAAdO4AAHTwAAB08wAAdPQAAHT1AAB09gAAdPcAAHT5AAB0+wAAdPwAAHT9AAB0/wAAdQAAAHVLAAB1bgAAdY4AAHWuAAB1sAAAdbIAAHW0AAB1tgAAdbgAAHW5AAB1ugAAdb0AAHW+AAB1wAAAdcEAAHXDAAB1xQAAdcYAAHXHAAB1ygAAdcsAAHXUAAB14QAAdeYAAHXoAAB16gAAde8AAHXyAAB19QAAdfcAAHYcAAB2QAAAdmcAAHaLAAB2jgAAdpAAAHaSAAB2lAAAdpYAAHaYAAB2mQAAdpwAAHapAAB2ugAAdrwAAHa+AAB2wAAAdsIAAHbEAAB2xgAAdsgAAHbKAAB22wAAdt4AAHbhAAB25AAAducAAHbqAAB27QAAdvAAAHbzAAB29QAAdzQAAHc2AAB3OAAAdzoAAHc9AAB3PgAAdz8AAHdAAAB3QQAAd0MAAHdFAAB3RgAAd0cAAHdJAAB3SgAAd4kAAHeLAAB3jQAAd48AAHeSAAB3kwAAd5QAAHeVAAB3lgAAd5gAAHeaAAB3mwAAd5wAAHeeAAB3nwAAd94AAHfgAAB34wAAd+UAAHfoAAB36QAAd+oAAHfrAAB37AAAd+4AAHfwAAB38QAAd/IAAHf0AAB39QAAeAIAAHgDAAB4BAAAeAYAAHhFAAB4RwAAeEkAAHhLAAB4TgAAeE8AAHhQAAB4UQAAeFIAAHhUAAB4VgAAeFcAAHhYAAB4WgAAeFsAAHiaAAB4nAAAeJ4AAHigAAB4owAAeKQAAHilAAB4pgAAeKcAAHipAAB4qwAAeKwAAHitAAB4rwAAeLAAAHjvAAB48QAAePMAAHj1AAB4+AAAePkAAHj6AAB4+wAAePwAAHj+AAB5AAAAeQEAAHkCAAB5BAAAeQUAAHlEAAB5RgAAeUgAAHlKAAB5TQAAeU4AAHlPAAB5UAAAeVEAAHlTAAB5VQAAeVYAAHlXAAB5WQAAeVoAAHmZAAB5mwAAeZ0AAHmfAAB5ogAAeaMAAHmkAAB5pQAAeaYAAHmoAAB5qgAAeasAAHmsAAB5rgAAea8AAHnUAAB5+AAAeh8AAHpDAAB6RgAAekgAAHpKAAB6TAAAek4AAHpQAAB6UQAAelQAAHphAAB6cAAAenIAAHp0AAB6dgAAengAAHp6AAB6fAAAen4AAHqNAAB6kAAAepMAAHqWAAB6mQAAepwAAHqfAAB6ogAAeqQAAHrjAAB65QAAeucAAHrpAAB67AAAeu0AAHruAAB67wAAevAAAHryAAB69AAAevUAAHr2AAB6+AAAevkAAHs4AAB7OgAAezwAAHs+AAB7QQAAe0IAAHtDAAB7RAAAe0UAAHtHAAB7SQAAe0oAAHtLAAB7TQAAe04AAHuNAAB7jwAAe5EAAHuTAAB7lgAAe5cAAHuYAAB7mQAAe5oAAHucAAB7ngAAe58AAHugAAB7ogAAe6MAAHviAAB75AAAe+cAAHvpAAB77AAAe+0AAHvuAAB77wAAe/AAAHvyAAB79AAAe/UAAHv2AAB7+AAAe/kAAHv8AAB8OwAAfD0AAHw/AAB8QQAAfEQAAHxFAAB8RgAAfEcAAHxIAAB8SgAAfEwAAHxNAAB8TgAAfFAAAHxRAAB8kAAAfJIAAHyUAAB8lgAAfJkAAHyaAAB8mwAAfJwAAHydAAB8nwAAfKEAAHyiAAB8owAAfKUAAHymAAB85QAAfOcAAHzpAAB86wAAfO4AAHzvAAB88AAAfPEAAHzyAAB89AAAfPYAAHz3AAB8+AAAfPoAAHz7AAB9RgAAfWkAAH2JAAB9qQAAfasAAH2tAAB9rwAAfbEAAH2zAAB9tAAAfbUAAH24AAB9uQAAfbsAAH28AAB9vgAAfcAAAH3BAAB9wgAAfcUAAH3GAAB9ywAAfdgAAH3dAAB93wAAfeEAAH3mAAB96QAAfewAAH3uAAB+EwAAfjcAAH5eAAB+ggAAfoUAAH6HAAB+iQAAfosAAH6NAAB+jwAAfpAAAH6TAAB+oAAAfrEAAH6zAAB+tQAAfrcAAH65AAB+uwAAfr0AAH6/AAB+wQAAftIAAH7VAAB+2AAAftsAAH7eAAB+4QAAfuQAAH7nAAB+6gAAfuwAAH8rAAB/LQAAfy8AAH8xAAB/NAAAfzUAAH82AAB/NwAAfzgAAH86AAB/PAAAfz0AAH8+AAB/QAAAf0EAAH+AAAB/ggAAf4QAAH+GAAB/iQAAf4oAAH+LAAB/jAAAf40AAH+PAAB/kQAAf5IAAH+TAAB/lQAAf5YAAH/VAAB/1wAAf9oAAH/cAAB/3wAAf+AAAH/hAAB/4gAAf+MAAH/lAAB/5wAAf+gAAH/pAAB/6wAAf+wAAH/5AAB/+gAAf/sAAH/9AACAPAAAgD4AAIBAAACAQgAAgEUAAIBGAACARwAAgEgAAIBJAACASwAAgE0AAIBOAACATwAAgFEAAIBSAACAkQAAgJMAAICVAACAlwAAgJoAAICbAACAnAAAgJ0AAICeAACAoAAAgKIAAICjAACApAAAgKYAAICnAACA5gAAgOgAAIDqAACA7AAAgO8AAIDwAACA8QAAgPIAAIDzAACA9QAAgPcAAID4AACA+QAAgPsAAID8AACBOwAAgT0AAIE/AACBQQAAgUQAAIFFAACBRgAAgUcAAIFIAACBSgAAgUwAAIFNAACBTgAAgVAAAIFRAACBkAAAgZIAAIGUAACBlgAAgZkAAIGaAACBmwAAgZwAAIGdAACBnwAAgaEAAIGiAACBowAAgaUAAIGmAACBywAAge8AAIIWAACCOgAAgj0AAII/AACCQQAAgkMAAIJFAACCRwAAgkgAAIJLAACCWAAAgmcAAIJpAACCawAAgm0AAIJvAACCcQAAgnMAAIJ1AACChAAAgocAAIKKAACCjQAAgpAAAIKTAACClgAAgpkAAIKbAACC2gAAgtwAAILeAACC4AAAguMAAILkAACC5QAAguYAAILnAACC6QAAgusAAILsAACC7QAAgu8AAILwAACDLwAAgzEAAIMzAACDNQAAgzgAAIM5AACDOgAAgzsAAIM8AACDPgAAg0AAAINBAACDQgAAg0QAAINFAACDhAAAg4YAAIOIAACDigAAg40AAIOOAACDjwAAg5AAAIORAACDkwAAg5UAAIOWAACDlwAAg5kAAIOaAACD2QAAg9sAAIPdAACD3wAAg+IAAIPjAACD5AAAg+UAAIPmAACD6AAAg+oAAIPrAACD7AAAg+4AAIPvAACELgAAhDAAAIQyAACENAAAhDcAAIQ4AACEOQAAhDoAAIQ7AACEPQAAhD8AAIRAAACEQQAAhEMAAIREAACEgwAAhIUAAISHAACEiQAAhIwAAISNAACEjgAAhI8AAISQAACEkgAAhJQAAISVAACElgAAhJgAAISZAACE2AAAhNoAAITcAACE3gAAhOEAAITiAACE4wAAhOQAAITlAACE5wAAhOkAAITqAACE6wAAhO0AAITuAACE+QAAhQIAAIUDAACFBQAAhQ4AAIUZAACFKAAAhTMAAIVBAACFVgAAhWoAAIWBAACFkwAAhdIAAIXUAACF1gAAhdgAAIXaAACF2wAAhdwAAIXdAACF3gAAheAAAIXiAACF4wAAheQAAIXmAACF5wAAhiYAAIYoAACGKgAAhiwAAIYuAACGLwAAhjAAAIYxAACGMgAAhjQAAIY2AACGNwAAhjgAAIY6AACGOwAAhnoAAIZ8AACGfwAAhoEAAIaDAACGhAAAhoUAAIaGAACGhwAAhokAAIaLAACGjAAAho0AAIaPAACGkAAAhtsAAIb+AACHHgAAhz4AAIdAAACHQgAAh0QAAIdGAACHSAAAh0kAAIdKAACHTQAAh04AAIdQAACHUQAAh1MAAIdVAACHVgAAh1cAAIdaAACHWwAAh2QAAIdxAACHdgAAh3gAAId6AACHfwAAh4IAAIeFAACHhwAAh6wAAIfQAACH9wAAiBsAAIgeAACIIAAAiCIAAIgkAACIJgAAiCgAAIgpAACILAAAiDkAAIhKAACITAAAiE4AAIhQAACIUgAAiFQAAIhWAACIWAAAiFoAAIhrAACIbgAAiHEAAIh0AACIdwAAiHoAAIh9AACIgAAAiIMAAIiFAACIxAAAiMYAAIjIAACIygAAiM0AAIjOAACIzwAAiNAAAIjRAACI0wAAiNUAAIjWAACI1wAAiNkAAIjaAACJGQAAiRsAAIkdAACJHwAAiSIAAIkjAACJJAAAiSUAAIkmAACJKAAAiSoAAIkrAACJLAAAiS4AAIkvAACJbgAAiXAAAIlzAACJdQAAiXgAAIl5AACJegAAiXsAAIl8AACJfgAAiYAAAImBAACJggAAiYQAAImFAACJkgAAiZMAAImUAACJlgAAidUAAInXAACJ2QAAidsAAIneAACJ3wAAieAAAInhAACJ4gAAieQAAInmAACJ5wAAiegAAInqAACJ6wAAiioAAIosAACKLgAAijAAAIozAACKNAAAijUAAIo2AACKNwAAijkAAIo7AACKPAAAij0AAIo/AACKQAAAin8AAIqBAACKgwAAioUAAIqIAACKiQAAiooAAIqLAACKjAAAio4AAIqQAACKkQAAipIAAIqUAACKlQAAitQAAIrWAACK2AAAitoAAIrdAACK3gAAit8AAIrgAACK4QAAiuMAAIrlAACK5gAAiucAAIrpAACK6gAAiykAAIsrAACLLQAAiy8AAIsyAACLMwAAizQAAIs1AACLNgAAizgAAIs6AACLOwAAizwAAIs+AACLPwAAi2QAAIuIAACLrwAAi9MAAIvWAACL2AAAi9oAAIvcAACL3gAAi+AAAIvhAACL5AAAi/EAAIwAAACMAgAAjAQAAIwGAACMCAAAjAoAAIwMAACMDgAAjB0AAIwgAACMIwAAjCYAAIwpAACMLAAAjC8AAIwyAACMNAAAjHMAAIx1AACMeAAAjHoAAIx9AACMfgAAjH8AAIyAAACMgQAAjIMAAIyFAACMhgAAjIcAAIyJAACMigAAjI4AAIzNAACMzwAAjNEAAIzTAACM1gAAjNcAAIzYAACM2QAAjNoAAIzcAACM3gAAjN8AAIzgAACM4gAAjOMAAI0iAACNJAAAjSYAAI0oAACNKwAAjSwAAI0tAACNLgAAjS8AAI0xAACNMwAAjTQAAI01AACNNwAAjTgAAI13AACNeQAAjXwAAI1+AACNgQAAjYIAAI2DAACNhAAAjYUAAI2HAACNiQAAjYoAAI2LAACNjQAAjY4AAI2RAACN0AAAjdIAAI3UAACN1gAAjdkAAI3aAACN2wAAjdwAAI3dAACN3wAAjeEAAI3iAACN4wAAjeUAAI3mAACOJQAAjicAAI4pAACOKwAAji4AAI4vAACOMAAAjjEAAI4yAACONAAAjjYAAI43AACOOAAAjjoAAI47AACOegAAjnwAAI5+AACOgAAAjoMAAI6EAACOhQAAjoYAAI6HAACOiQAAjosAAI6MAACOjQAAjo8AAI6QAACO2wAAjv4AAI8eAACPPgAAj0AAAI9CAACPRAAAj0YAAI9IAACPSQAAj0oAAI9NAACPTgAAj1AAAI9RAACPUwAAj1UAAI9WAACPVwAAj1oAAI9bAACPYAAAj20AAI9yAACPdAAAj3YAAI97AACPfgAAj4EAAI+DAACPqAAAj8wAAI/zAACQFwAAkBoAAJAcAACQHgAAkCAAAJAiAACQJAAAkCUAAJAoAACQNQAAkEYAAJBIAACQSgAAkEwAAJBOAACQUAAAkFIAAJBUAACQVgAAkGcAAJBqAACQbQAAkHAAAJBzAACQdgAAkHkAAJB8AACQfwAAkIEAAJDAAACQwgAAkMQAAJDGAACQyQAAkMoAAJDLAACQzAAAkM0AAJDPAACQ0QAAkNIAAJDTAACQ1QAAkNYAAJEVAACRFwAAkRkAAJEbAACRHgAAkR8AAJEgAACRIQAAkSIAAJEkAACRJgAAkScAAJEoAACRKgAAkSsAAJFqAACRbAAAkW8AAJFxAACRdAAAkXUAAJF2AACRdwAAkXgAAJF6AACRfAAAkX0AAJF+AACRgAAAkYEAAJGOAACRjwAAkZAAAJGSAACR0QAAkdMAAJHVAACR1wAAkdoAAJHbAACR3AAAkd0AAJHeAACR4AAAkeIAAJHjAACR5AAAkeYAAJHnAACSJgAAkigAAJIqAACSLAAAki8AAJIwAACSMQAAkjIAAJIzAACSNQAAkjcAAJI4AACSOQAAkjsAAJI8AACSewAAkn0AAJJ/AACSgQAAkoQAAJKFAACShgAAkocAAJKIAACSigAAkowAAJKNAACSjgAAkpAAAJKRAACS0AAAktIAAJLUAACS1gAAktkAAJLaAACS2wAAktwAAJLdAACS3wAAkuEAAJLiAACS4wAAkuUAAJLmAACTJQAAkycAAJMpAACTKwAAky4AAJMvAACTMAAAkzEAAJMyAACTNAAAkzYAAJM3AACTOAAAkzoAAJM7AACTYAAAk4QAAJOrAACTzwAAk9IAAJPUAACT1gAAk9gAAJPaAACT3AAAk90AAJPgAACT7QAAk/wAAJP+AACUAAAAlAIAAJQEAACUBgAAlAgAAJQKAACUGQAAlBwAAJQfAACUIgAAlCUAAJQoAACUKwAAlC4AAJQwAACUbwAAlHEAAJR0AACUdgAAlHkAAJR6AACUewAAlHwAAJR9AACUfwAAlIEAAJSCAACUgwAAlIUAAJSGAACUxQAAlMcAAJTJAACUywAAlM4AAJTPAACU0AAAlNEAAJTSAACU1AAAlNYAAJTXAACU2AAAlNoAAJTbAACVGgAAlRwAAJUeAACVIAAAlSMAAJUkAACVJQAAlSYAAJUnAACVKQAAlSsAAJUsAACVLQAAlS8AAJUwAACVbwAAlXEAAJV0AACVdgAAlXkAAJV6AACVewAAlXwAAJV9AACVfwAAlYEAAJWCAACVgwAAlYUAAJWGAACVxQAAlccAAJXJAACVywAAlc4AAJXPAACV0AAAldEAAJXSAACV1AAAldYAAJXXAACV2AAAldoAAJXbAACWGgAAlhwAAJYeAACWIAAAliMAAJYkAACWJQAAliYAAJYnAACWKQAAlisAAJYsAACWLQAAli8AAJYwAACWbwAAlnEAAJZzAACWdQAAlngAAJZ5AACWegAAlnsAAJZ8AACWfgAAloAAAJaBAACWggAAloQAAJaFAACW0AAAlvMAAJcTAACXMwAAlzUAAJc3AACXOQAAlzsAAJc9AACXPgAAlz8AAJdCAACXQwAAl0UAAJdGAACXSAAAl0oAAJdLAACXTAAAl08AAJdQAACXWQAAl2YAAJdrAACXbQAAl28AAJd0AACXdwAAl3oAAJd8AACXoQAAl8UAAJfsAACYEAAAmBMAAJgVAACYFwAAmBkAAJgbAACYHQAAmB4AAJghAACYLgAAmD8AAJhBAACYQwAAmEUAAJhHAACYSQAAmEsAAJhNAACYTwAAmGAAAJhjAACYZgAAmGkAAJhsAACYbwAAmHIAAJh1AACYeAAAmHoAAJi5AACYuwAAmL0AAJi/AACYwgAAmMMAAJjEAACYxQAAmMYAAJjIAACYygAAmMsAAJjMAACYzgAAmM8AAJkOAACZEAAAmRIAAJkUAACZFwAAmRgAAJkZAACZGgAAmRsAAJkdAACZHwAAmSAAAJkhAACZIwAAmSQAAJljAACZZQAAmWgAAJlqAACZbQAAmW4AAJlvAACZcAAAmXEAAJlzAACZdQAAmXYAAJl3AACZeQAAmXoAAJmHAACZiAAAmYkAAJmLAACZygAAmcwAAJnOAACZ0AAAmdMAAJnUAACZ1QAAmdYAAJnXAACZ2QAAmdsAAJncAACZ3QAAmd8AAJngAACaHwAAmiEAAJojAACaJQAAmigAAJopAACaKgAAmisAAJosAACaLgAAmjAAAJoxAACaMgAAmjQAAJo1AACadAAAmnYAAJp4AACaegAAmn0AAJp+AACafwAAmoAAAJqBAACagwAAmoUAAJqGAACahwAAmokAAJqKAACayQAAmssAAJrNAACazwAAmtIAAJrTAACa1AAAmtUAAJrWAACa2AAAmtoAAJrbAACa3AAAmt4AAJrfAACbHgAAmyAAAJsiAACbJAAAmycAAJsoAACbKQAAmyoAAJsrAACbLQAAmy8AAJswAACbMQAAmzMAAJs0AACbWQAAm30AAJukAACbyAAAm8sAAJvNAACbzwAAm9EAAJvTAACb1QAAm9YAAJvZAACb5gAAm/UAAJv3AACb+QAAm/sAAJv9AACb/wAAnAEAAJwDAACcEgAAnBUAAJwYAACcGwAAnB4AAJwhAACcJAAAnCcAAJwpAACcaAAAnGoAAJxsAACcbgAAnHEAAJxyAACccwAAnHQAAJx1AACcdwAAnHkAAJx6AACcewAAnH0AAJx+AACcvQAAnL8AAJzBAACcwwAAnMYAAJzHAACcyAAAnMkAAJzKAACczAAAnM4AAJzPAACc0AAAnNIAAJzTAACdEgAAnRQAAJ0WAACdGAAAnRsAAJ0cAACdHQAAnR4AAJ0fAACdIQAAnSMAAJ0kAACdJQAAnScAAJ0oAACdZwAAnWkAAJ1rAACdbQAAnXAAAJ1xAACdcgAAnXMAAJ10AACddgAAnXgAAJ15AACdegAAnXwAAJ19AACdvAAAnb4AAJ3AAACdwgAAncUAAJ3GAACdxwAAncgAAJ3JAACdywAAnc0AAJ3OAACdzwAAndEAAJ3SAACeEQAAnhMAAJ4VAACeFwAAnhoAAJ4bAACeHAAAnh0AAJ4eAACeIAAAniIAAJ4jAACeJAAAniYAAJ4nAACeZgAAnmgAAJ5qAACebAAAnm8AAJ5wAACecQAAnnIAAJ5zAACedQAAnncAAJ54AACeeQAAnnsAAJ58AACexwAAnuoAAJ8KAACfKgAAnywAAJ8uAACfMAAAnzIAAJ80AACfNQAAnzYAAJ85AACfOgAAnzwAAJ89AACfPwAAn0EAAJ9CAACfQwAAn0YAAJ9HAACfTAAAn1kAAJ9eAACfYAAAn2IAAJ9nAACfagAAn20AAJ9vAACflAAAn7gAAJ/fAACgAwAAoAYAAKAIAACgCgAAoAwAAKAOAACgEAAAoBEAAKAUAACgIQAAoDIAAKA0AACgNgAAoDgAAKA6AACgPAAAoD4AAKBAAACgQgAAoFMAAKBWAACgWQAAoFwAAKBfAACgYgAAoGUAAKBoAACgawAAoG0AAKCsAACgrgAAoLAAAKCyAACgtQAAoLYAAKC3AACguAAAoLkAAKC7AACgvQAAoL4AAKC/AACgwQAAoMIAAKEBAAChAwAAoQUAAKEHAAChCgAAoQsAAKEMAAChDQAAoQ4AAKEQAAChEgAAoRMAAKEUAAChFgAAoRcAAKFWAAChWAAAoVsAAKFdAAChYAAAoWEAAKFiAAChYwAAoWQAAKFmAAChaAAAoWkAAKFqAAChbAAAoW0AAKF6AAChewAAoXwAAKF+AAChvQAAob8AAKHBAAChwwAAocYAAKHHAAChyAAAockAAKHKAAChzAAAoc4AAKHPAACh0AAAodIAAKHTAACiEgAAohQAAKIWAACiGAAAohsAAKIcAACiHQAAoh4AAKIfAACiIQAAoiMAAKIkAACiJQAAoicAAKIoAACiZwAAomkAAKJrAACibQAAonAAAKJxAACicgAAonMAAKJ0AACidgAAongAAKJ5AACiegAAonwAAKJ9AACivAAAor4AAKLAAACiwgAAosUAAKLGAACixwAAosgAAKLJAACiywAAos0AAKLOAACizwAAotEAAKLSAACjEQAAoxMAAKMVAACjFwAAoxoAAKMbAACjHAAAox0AAKMeAACjIAAAoyIAAKMjAACjJAAAoyYAAKMnAACjTAAAo3AAAKOXAACjuwAAo74AAKPAAACjwgAAo8QAAKPGAACjyAAAo8kAAKPMAACj2QAAo+gAAKPqAACj7AAAo+4AAKPwAACj8gAAo/QAAKP2AACkBQAApAgAAKQLAACkDgAApBEAAKQUAACkFwAApBoAAKQcAACkWwAApF0AAKRgAACkYgAApGUAAKRmAACkZwAApGgAAKRpAACkawAApG0AAKRuAACkbwAApHEAAKRyAACkdAAApLMAAKS1AACktwAApLkAAKS8AACkvQAApL4AAKS/AACkwAAApMIAAKTEAACkxQAApMYAAKTIAACkyQAApQgAAKUKAAClDAAApQ4AAKURAAClEgAApRMAAKUUAAClFQAApRcAAKUZAAClGgAApRsAAKUdAAClHgAApV0AAKVfAAClYgAApWQAAKVnAAClaAAApWkAAKVqAAClawAApW0AAKVvAAClcAAApXEAAKVzAACldAAApXcAAKW2AACluAAApboAAKW8AAClvwAApcAAAKXBAAClwgAApcMAAKXFAAClxwAApcgAAKXJAAClywAApcwAAKYLAACmDQAApg8AAKYRAACmFAAAphUAAKYWAACmFwAAphgAAKYaAACmHAAAph0AAKYeAACmIAAApiEAAKZgAACmYgAApmQAAKZmAACmaQAApmoAAKZrAACmbAAApm0AAKZvAACmcQAApnIAAKZzAACmdQAApnYAAKbBAACm5AAApwQAAKckAACnJgAApygAAKcqAACnLAAApy4AAKcvAACnMAAApzMAAKc0AACnNgAApzcAAKc5AACnOwAApzwAAKc9AACnQAAAp0EAAKdGAACnUwAAp1gAAKdaAACnXAAAp2EAAKdkAACnZwAAp2kAAKeOAACnsgAAp9kAAKf9AACoAAAAqAIAAKgEAACoBgAAqAgAAKgKAACoCwAAqA4AAKgbAACoLAAAqC4AAKgwAACoMgAAqDQAAKg2AACoOAAAqDoAAKg8AACoTQAAqFAAAKhTAACoVgAAqFkAAKhcAACoXwAAqGIAAKhlAACoZwAAqKYAAKioAACoqgAAqKwAAKivAACosAAAqLEAAKiyAACoswAAqLUAAKi3AACouAAAqLkAAKi7AACovAAAqPsAAKj9AACo/wAAqQEAAKkEAACpBQAAqQYAAKkHAACpCAAAqQoAAKkMAACpDQAAqQ4AAKkQAACpEQAAqVAAAKlSAACpVQAAqVcAAKlaAACpWwAAqVwAAKldAACpXgAAqWAAAKliAACpYwAAqWQAAKlmAACpZwAAqXQAAKl1AACpdgAAqXgAAKm3AACpuQAAqbsAAKm9AACpwAAAqcEAAKnCAACpwwAAqcQAAKnGAACpyAAAqckAAKnKAACpzAAAqc0AAKoMAACqDgAAqhAAAKoSAACqFQAAqhYAAKoXAACqGAAAqhkAAKobAACqHQAAqh4AAKofAACqIQAAqiIAAKphAACqYwAAqmUAAKpnAACqagAAqmsAAKpsAACqbQAAqm4AAKpwAACqcgAAqnMAAKp0AACqdgAAqncAAKq2AACquAAAqroAAKq8AACqvwAAqsAAAKrBAACqwgAAqsMAAKrFAACqxwAAqsgAAKrJAACqywAAqswAAKsLAACrDQAAqw8AAKsRAACrFAAAqxUAAKsWAACrFwAAqxgAAKsaAACrHAAAqx0AAKseAACrIAAAqyEAAKtGAACragAAq5EAAKu1AACruAAAq7oAAKu8AACrvgAAq8AAAKvCAACrwwAAq8YAAKvTAACr4gAAq+QAAKvmAACr6AAAq+oAAKvsAACr7gAAq/AAAKv/AACsAgAArAUAAKwIAACsCwAArA4AAKwRAACsFAAArBYAAKxVAACsVwAArFoAAKxcAACsXwAArGAAAKxhAACsYgAArGMAAKxlAACsZwAArGgAAKxpAACsawAArGwAAKyrAACsrQAArK8AAKyxAACstAAArLUAAKy2AACstwAArLgAAKy6AACsvAAArL0AAKy+AACswAAArMEAAK0AAACtAgAArQQAAK0GAACtCQAArQoAAK0LAACtDAAArQ0AAK0PAACtEQAArRIAAK0TAACtFQAArRYAAK1VAACtVwAArVoAAK1cAACtXwAArWAAAK1hAACtYgAArWMAAK1lAACtZwAArWgAAK1pAACtawAArWwAAK2rAACtrQAAra8AAK2xAACttAAArbUAAK22AACttwAArbgAAK26AACtvAAArb0AAK2+AACtwAAArcEAAK4AAACuAgAArgQAAK4GAACuCQAArgoAAK4LAACuDAAArg0AAK4PAACuEQAArhIAAK4TAACuFQAArhYAAK5VAACuVwAArlkAAK5bAACuXgAArl8AAK5gAACuYQAArmIAAK5kAACuZgAArmcAAK5oAACuagAArmsAAK62AACu2QAArvkAAK8ZAACvGwAArx0AAK8fAACvIQAAryMAAK8kAACvJQAArygAAK8pAACvKwAArywAAK8uAACvMAAArzEAAK8yAACvNQAArzYAAK87AACvSAAAr00AAK9PAACvUQAAr1YAAK9ZAACvXAAAr14AAK+DAACvpwAAr84AAK/yAACv9QAAr/cAAK/5AACv+wAAr/0AAK//AACwAAAAsAMAALAQAACwIQAAsCMAALAlAACwJwAAsCkAALArAACwLQAAsC8AALAxAACwQgAAsEUAALBIAACwSwAAsE4AALBRAACwVAAAsFcAALBaAACwXAAAsJsAALCdAACwnwAAsKEAALCkAACwpQAAsKYAALCnAACwqAAAsKoAALCsAACwrQAAsK4AALCwAACwsQAAsPAAALDyAACw9AAAsPYAALD5AACw+gAAsPsAALD8AACw/QAAsP8AALEBAACxAgAAsQMAALEFAACxBgAAsUUAALFHAACxSgAAsUwAALFPAACxUAAAsVEAALFSAACxUwAAsVUAALFXAACxWAAAsVkAALFbAACxXAAAsWkAALFqAACxawAAsW0AALGsAACxrgAAsbAAALGyAACxtQAAsbYAALG3AACxuAAAsbkAALG7AACxvQAAsb4AALG/AACxwQAAscIAALIBAACyAwAAsgUAALIHAACyCgAAsgsAALIMAACyDQAAsg4AALIQAACyEgAAshMAALIUAACyFgAAshcAALJWAACyWAAAsloAALJcAACyXwAAsmAAALJhAACyYgAAsmMAALJlAACyZwAAsmgAALJpAACyawAAsmwAALKrAACyrQAAsq8AALKxAACytAAAsrUAALK2AACytwAAsrgAALK6AACyvAAAsr0AALK+AACywAAAssEAALMAAACzAgAAswQAALMGAACzCQAAswoAALMLAACzDAAAsw0AALMPAACzEQAAsxIAALMTAACzFQAAsxYAALM7AACzXwAAs4YAALOqAACzrQAAs68AALOxAACzswAAs7UAALO3AACzuAAAs7sAALPIAACz1wAAs9kAALPbAACz3QAAs98AALPhAACz4wAAs+UAALP0AACz9wAAs/oAALP9AAC0AAAAtAMAALQGAAC0CQAAtAsAALRKAAC0TAAAtE4AALRQAAC0UwAAtFQAALRVAAC0VgAAtFcAALRZAAC0WwAAtFwAALRdAAC0XwAAtGAAALSfAAC0oQAAtKMAALSlAAC0qAAAtKkAALSqAAC0qwAAtKwAALSuAAC0sAAAtLEAALSyAAC0tAAAtLUAALT0AAC09gAAtPgAALT6AAC0/QAAtP4AALT/AAC1AAAAtQEAALUDAAC1BQAAtQYAALUHAAC1CQAAtQoAALVJAAC1SwAAtU0AALVPAAC1UgAAtVMAALVUAAC1VQAAtVYAALVYAAC1WgAAtVsAALVcAAC1XgAAtV8AALWeAAC1oAAAtaIAALWkAAC1pwAAtagAALWpAAC1qgAAtasAALWtAAC1rwAAtbAAALWxAAC1swAAtbQAALXzAAC19QAAtfcAALX5AAC1/AAAtf0AALX+AAC1/wAAtgAAALYCAAC2BAAAtgUAALYGAAC2CAAAtgkAALZIAAC2SgAAtkwAALZOAAC2UQAAtlIAALZTAAC2VAAAtlUAALZXAAC2WQAAtloAALZbAAC2XQAAtl4AALapAAC2zAAAtuwAALcMAAC3DgAAtxAAALcSAAC3FAAAtxYAALcXAAC3GAAAtxsAALccAAC3HgAAtx8AALchAAC3IwAAtyQAALclAAC3KAAAtykAALcuAAC3OwAAt0AAALdCAAC3RAAAt0kAALdMAAC3TwAAt1EAALd2AAC3mgAAt8EAALflAAC36AAAt+oAALfsAAC37gAAt/AAALfyAAC38wAAt/YAALgDAAC4FAAAuBYAALgYAAC4GgAAuBwAALgeAAC4IAAAuCIAALgkAAC4NQAAuDgAALg7AAC4PgAAuEEAALhEAAC4RwAAuEoAALhNAAC4TwAAuI4AALiQAAC4kgAAuJQAALiXAAC4mAAAuJkAALiaAAC4mwAAuJ0AALifAAC4oAAAuKEAALijAAC4pAAAuOMAALjlAAC45wAAuOkAALjsAAC47QAAuO4AALjvAAC48AAAuPIAALj0AAC49QAAuPYAALj4AAC4+QAAuTgAALk6AAC5PQAAuT8AALlCAAC5QwAAuUQAALlFAAC5RgAAuUgAALlKAAC5SwAAuUwAALlOAAC5TwAAuVwAALldAAC5XgAAuWAAALmfAAC5oQAAuaMAALmlAAC5qAAAuakAALmqAAC5qwAAuawAALmuAAC5sAAAubEAALmyAAC5tAAAubUAALn0AAC59gAAufgAALn6AAC5/QAAuf4AALn/AAC6AAAAugEAALoDAAC6BQAAugYAALoHAAC6CQAAugoAALpJAAC6SwAAuk0AALpPAAC6UgAAulMAALpUAAC6VQAAulYAALpYAAC6WgAAulsAALpcAAC6XgAAul8AALqeAAC6oAAAuqIAALqkAAC6pwAAuqgAALqpAAC6qgAAuqsAALqtAAC6rwAAurAAALqxAAC6swAAurQAALrzAAC69QAAuvcAALr5AAC6/AAAuv0AALr+AAC6/wAAuwAAALsCAAC7BAAAuwUAALsGAAC7CAAAuwkAALsuAAC7UgAAu3kAALudAAC7oAAAu6IAALukAAC7pgAAu6gAALuqAAC7qwAAu64AALu7AAC7ygAAu8wAALvOAAC70AAAu9IAALvUAAC71gAAu9gAALvnAAC76gAAu+0AALvwAAC78wAAu/YAALv5AAC7/AAAu/4AALw9AAC8PwAAvEEAALxDAAC8RgAAvEcAALxIAAC8SQAAvEoAALxMAAC8TgAAvE8AALxQAAC8UgAAvFMAALySAAC8lAAAvJYAALyYAAC8mwAAvJwAALydAAC8ngAAvJ8AALyhAAC8owAAvKQAALylAAC8pwAAvKgAALznAAC86QAAvOsAALztAAC88AAAvPEAALzyAAC88wAAvPQAALz2AAC8+AAAvPkAALz6AAC8/AAAvP0AAL08AAC9PgAAvUEAAL1DAAC9RgAAvUcAAL1IAAC9SQAAvUoAAL1MAAC9TgAAvU8AAL1QAAC9UgAAvVMAAL1WAAC9lQAAvZcAAL2ZAAC9mwAAvZ4AAL2fAAC9oAAAvaEAAL2iAAC9pAAAvaYAAL2nAAC9qAAAvaoAAL2rAAC96gAAvewAAL3uAAC98AAAvfMAAL30AAC99QAAvfYAAL33AAC9+QAAvfsAAL38AAC9/QAAvf8AAL4AAAC+PwAAvkEAAL5DAAC+RQAAvkgAAL5JAAC+SgAAvksAAL5MAAC+TgAAvlAAAL5RAAC+UgAAvlQAAL5VAAC+oAAAvsMAAL7jAAC/AwAAvwUAAL8HAAC/CQAAvwsAAL8NAAC/DgAAvw8AAL8SAAC/EwAAvxUAAL8WAAC/GAAAvxoAAL8bAAC/HAAAvx8AAL8gAAC/JQAAvzIAAL83AAC/OQAAvzsAAL9AAAC/QwAAv0YAAL9IAAC/bQAAv5EAAL+4AAC/3AAAv98AAL/hAAC/4wAAv+UAAL/nAAC/6QAAv+oAAL/tAAC/+gAAwAsAAMANAADADwAAwBEAAMATAADAFQAAwBcAAMAZAADAGwAAwCwAAMAvAADAMgAAwDUAAMA4AADAOwAAwD4AAMBBAADARAAAwEYAAMCFAADAhwAAwIkAAMCLAADAjgAAwI8AAMCQAADAkQAAwJIAAMCUAADAlgAAwJcAAMCYAADAmgAAwJsAAMDaAADA3AAAwN4AAMDgAADA4wAAwOQAAMDlAADA5gAAwOcAAMDpAADA6wAAwOwAAMDtAADA7wAAwPAAAMEvAADBMQAAwTQAAME2AADBOQAAwToAAME7AADBPAAAwT0AAME/AADBQQAAwUIAAMFDAADBRQAAwUYAAMFTAADBVAAAwVUAAMFXAADBlgAAwZgAAMGaAADBnAAAwZ8AAMGgAADBoQAAwaIAAMGjAADBpQAAwacAAMGoAADBqQAAwasAAMGsAADB6wAAwe0AAMHvAADB8QAAwfQAAMH1AADB9gAAwfcAAMH4AADB+gAAwfwAAMH9AADB/gAAwgAAAMIBAADCQAAAwkIAAMJEAADCRgAAwkkAAMJKAADCSwAAwkwAAMJNAADCTwAAwlEAAMJSAADCUwAAwlUAAMJWAADClQAAwpcAAMKZAADCmwAAwp4AAMKfAADCoAAAwqEAAMKiAADCpAAAwqYAAMKnAADCqAAAwqoAAMKrAADC6gAAwuwAAMLuAADC8AAAwvMAAML0AADC9QAAwvYAAML3AADC+QAAwvsAAML8AADC/QAAwv8AAMMAAADDJQAAw0kAAMNwAADDlAAAw5cAAMOZAADDmwAAw50AAMOfAADDoQAAw6IAAMOlAADDsgAAw8EAAMPDAADDxQAAw8cAAMPJAADDywAAw80AAMPPAADD3gAAw+EAAMPkAADD5wAAw+oAAMPtAADD8AAAw/MAAMP1AADENAAAxDYAAMQ4AADEOgAAxD0AAMQ+AADEPwAAxEAAAMRBAADEQwAAxEUAAMRGAADERwAAxEkAAMRKAADEiQAAxIsAAMSNAADEjwAAxJIAAMSTAADElAAAxJUAAMSWAADEmAAAxJoAAMSbAADEnAAAxJ4AAMSfAADE3gAAxOAAAMTiAADE5AAAxOcAAMToAADE6QAAxOoAAMTrAADE7QAAxO8AAMTwAADE8QAAxPMAAMT0AADFMwAAxTUAAMU4AADFOgAAxT0AAMU+AADFPwAAxUAAAMVBAADFQwAAxUUAAMVGAADFRwAAxUkAAMVKAADFjQAAxbEAAMXVAADF+AAAxh8AAMY/AADGZgAAxo0AAMatAADG0QAAxvUAAMb3AADG+gAAxvwAAMb+AADHAAAAxwMAAMcGAADHCAAAxwoAAMcNAADHDwAAxxEAAMcUAADHFwAAxxgAAMcdAADHKgAAxy0AAMcvAADHMgAAxzUAAMc3AADHXAAAx4AAAMenAADHywAAx84AAMfQAADH0gAAx9QAAMfWAADH2AAAx9kAAMfcAADH6QAAx/wAAMf+AADIAAAAyAIAAMgEAADIBgAAyAgAAMgKAADIDAAAyA4AAMghAADIJAAAyCcAAMgqAADILQAAyDAAAMgzAADINgAAyDkAAMg8AADIPgAAyH0AAMh/AADIggAAyIQAAMiHAADIiAAAyIkAAMiKAADIiwAAyI0AAMiPAADIkAAAyJEAAMiTAADIlAAAyJ0AAMieAADIoAAAyN8AAMjhAADI4wAAyOUAAMjoAADI6QAAyOoAAMjrAADI7AAAyO4AAMjwAADI8QAAyPIAAMj0AADI9QAAyTQAAMk2AADJOQAAyTsAAMk+AADJPwAAyUAAAMlBAADJQgAAyUQAAMlGAADJRwAAyUgAAMlKAADJSwAAyVQAAMlVAADJVwAAyZYAAMmYAADJmgAAyZwAAMmfAADJoAAAyaEAAMmiAADJowAAyaUAAMmnAADJqAAAyakAAMmrAADJrAAAyesAAMntAADJ8AAAyfIAAMn1AADJ9gAAyfcAAMn4AADJ+QAAyfsAAMn9AADJ/gAAyf8AAMoBAADKAgAAygsAAMoMAADKDgAAyk0AAMpPAADKUQAAylMAAMpWAADKVwAAylgAAMpZAADKWgAAylwAAMpeAADKXwAAymAAAMpiAADKYwAAyqIAAMqkAADKpwAAyqkAAMqsAADKrQAAyq4AAMqvAADKsAAAyrIAAMq0AADKtQAAyrYAAMq4AADKuQAAysYAAMrHAADKyAAAysoAAMsJAADLCwAAyw0AAMsPAADLEgAAyxMAAMsUAADLFQAAyxYAAMsYAADLGgAAyxsAAMscAADLHgAAyx8AAMteAADLYAAAy2IAAMtkAADLZwAAy2gAAMtpAADLagAAy2sAAMttAADLbwAAy3AAAMtxAADLcwAAy3QAAMuBAADLigAAy40AAMuPAADLkgAAy5UAAMueAADLoQAAy6QAAMunAADLqgAAy6wAAMu7AADLzQAAy9oAAMwlAADMSAAAzGgAAMyIAADMigAAzIwAAMyOAADMkAAAzJMAAMyUAADMlQAAzJgAAMyZAADMmwAAzJwAAMyeAADMoQAAzKIAAMyjAADMpgAAzKcAAMysAADMuQAAzL4AAMzAAADMwgAAzMcAAMzKAADMzQAAzM8AAMz0AADNGAAAzT8AAM1jAADNZgAAzWgAAM1qAADNbAAAzW4AAM1wAADNcQAAzXQAAM2BAADNkgAAzZQAAM2WAADNmAAAzZoAAM2cAADNngAAzaAAAM2iAADNswAAzbYAAM25AADNvAAAzb8AAM3CAADNxQAAzcgAAM3LAADNzQAAzgwAAM4OAADOEAAAzhIAAM4VAADOFgAAzhcAAM4YAADOGQAAzhsAAM4dAADOHgAAzh8AAM4hAADOIgAAzmEAAM5jAADOZQAAzmcAAM5qAADOawAAzmwAAM5tAADObgAAznAAAM5yAADOcwAAznQAAM52AADOdwAAzrYAAM64AADOuwAAzr0AAM7AAADOwQAAzsIAAM7DAADOxAAAzsYAAM7IAADOyQAAzsoAAM7MAADOzQAAztoAAM7bAADO3AAAzt4AAM8dAADPHwAAzyEAAM8jAADPJgAAzycAAM8oAADPKQAAzyoAAM8sAADPLgAAzy8AAM8wAADPMgAAzzMAAM9yAADPdAAAz3YAAM94AADPewAAz3wAAM99AADPfgAAz38AAM+BAADPgwAAz4QAAM+FAADPhwAAz4gAAM/HAADPyQAAz8sAAM/NAADP0AAAz9EAAM/SAADP0wAAz9QAAM/WAADP2AAAz9kAAM/aAADP3AAAz90AANAcAADQHgAA0CAAANAiAADQJQAA0CYAANAnAADQKAAA0CkAANArAADQLQAA0C4AANAvAADQMQAA0DIAANBxAADQcwAA0HUAANB3AADQegAA0HsAANB8AADQfQAA0H4AANCAAADQggAA0IMAANCEAADQhgAA0IcAANCsAADQ0AAA0PcAANEbAADRHgAA0SAAANEiAADRJAAA0SYAANEoAADRKQAA0SwAANE5AADRSAAA0UoAANFMAADRTgAA0VAAANFSAADRVAAA0VYAANFlAADRaAAA0WsAANFuAADRcQAA0XQAANF3AADRegAA0XwAANG7AADRvQAA0b8AANHBAADRxAAA0cUAANHGAADRxwAA0cgAANHKAADRzAAA0c0AANHOAADR0AAA0dEAANIQAADSEgAA0hQAANIWAADSGQAA0hoAANIbAADSHAAA0h0AANIfAADSIQAA0iIAANIjAADSJQAA0iYAANJlAADSZwAA0mkAANJrAADSbgAA0m8AANJwAADScQAA0nIAANJ0AADSdgAA0ncAANJ4AADSegAA0nsAANK6AADSvAAA0r4AANLAAADSwwAA0sQAANLFAADSxgAA0scAANLJAADSywAA0swAANLNAADSzwAA0tAAANMPAADTEQAA0xMAANMVAADTGAAA0xkAANMaAADTGwAA0xwAANMeAADTIAAA0yEAANMiAADTJAAA0yUAANNkAADTZgAA02gAANNqAADTbQAA024AANNvAADTcAAA03EAANNzAADTdQAA03YAANN3AADTeQAA03oAANO5AADTuwAA074AANPAAADTwwAA08QAANPFAADTxgAA08cAANPJAADTywAA08wAANPNAADTzwAA09AAANQbAADUPgAA1F4AANR+AADUgAAA1IIAANSEAADUhgAA1IkAANSKAADUiwAA1I4AANSPAADUkQAA1JIAANSUAADUlgAA1JcAANSYAADUmwAA1JwAANShAADUrgAA1LMAANS1AADUtwAA1LwAANS/AADUwgAA1MQAANTpAADVDQAA1TQAANVYAADVWwAA1V0AANVfAADVYQAA1WMAANVlAADVZgAA1WkAANV2AADVhwAA1YkAANWLAADVjQAA1Y8AANWRAADVkwAA1ZUAANWXAADVqAAA1asAANWuAADVsQAA1bQAANW3AADVugAA1b0AANXAAADVwgAA1gEAANYDAADWBQAA1gcAANYKAADWCwAA1gwAANYNAADWDgAA1hAAANYSAADWEwAA1hQAANYWAADWFwAA1lYAANZYAADWWgAA1lwAANZfAADWYAAA1mEAANZiAADWYwAA1mUAANZnAADWaAAA1mkAANZrAADWbAAA1qsAANatAADWsAAA1rIAANa1AADWtgAA1rcAANa4AADWuQAA1rsAANa9AADWvgAA1r8AANbBAADWwgAA1s8AANbQAADW0QAA1tMAANcSAADXFAAA1xYAANcYAADXGwAA1xwAANcdAADXHgAA1x8AANchAADXIwAA1yQAANclAADXJwAA1ygAANdnAADXaQAA12sAANdtAADXcAAA13EAANdyAADXcwAA13QAANd2AADXeAAA13kAANd6AADXfAAA130AANe8AADXvgAA18AAANfCAADXxQAA18YAANfHAADXyAAA18kAANfLAADXzQAA184AANfPAADX0QAA19IAANgRAADYEwAA2BUAANgXAADYGgAA2BsAANgcAADYHQAA2B4AANggAADYIgAA2CMAANgkAADYJgAA2CcAANhmAADYaAAA2GoAANhsAADYbwAA2HAAANhxAADYcgAA2HMAANh1AADYdwAA2HgAANh5AADYewAA2HwAANihAADYxQAA2OwAANkQAADZEwAA2RUAANkXAADZGQAA2RsAANkdAADZHgAA2SEAANkuAADZPQAA2T8AANlBAADZQwAA2UUAANlHAADZSQAA2UsAANlaAADZXQAA2WAAANljAADZZgAA2WkAANlsAADZbwAA2XEAANmwAADZsgAA2bQAANm2AADZuQAA2boAANm7AADZvAAA2b0AANm/AADZwQAA2cIAANnDAADZxQAA2cYAANoFAADaBwAA2gkAANoLAADaDgAA2g8AANoQAADaEQAA2hIAANoUAADaFgAA2hcAANoYAADaGgAA2hsAANpaAADaXAAA2l4AANpgAADaYwAA2mQAANplAADaZgAA2mcAANppAADaawAA2mwAANptAADabwAA2nAAANqvAADasQAA2rMAANq1AADauAAA2rkAANq6AADauwAA2rwAANq+AADawAAA2sEAANrCAADaxAAA2sUAANsEAADbBgAA2wgAANsKAADbDQAA2w4AANsPAADbEAAA2xEAANsTAADbFQAA2xYAANsXAADbGQAA2xoAANtZAADbWwAA210AANtfAADbYgAA22MAANtkAADbZQAA22YAANtoAADbagAA22sAANtsAADbbgAA228AANuuAADbsAAA27MAANu1AADbuAAA27kAANu6AADbuwAA27wAANu+AADbwAAA28EAANvCAADbxAAA28UAANwQAADcMwAA3FMAANxzAADcdQAA3HcAANx5AADcewAA3H0AANx+AADcfwAA3IIAANyDAADchQAA3IYAANyIAADcigAA3IsAANyMAADcjwAA3JAAANyVAADcogAA3KcAANypAADcqwAA3LAAANyzAADctgAA3LgAANzdAADdAQAA3SgAAN1MAADdTwAA3VEAAN1TAADdVQAA3VcAAN1ZAADdWgAA3V0AAN1qAADdewAA3X0AAN1/AADdgQAA3YMAAN2FAADdhwAA3YkAAN2LAADdnAAA3Z8AAN2iAADdpQAA3agAAN2rAADdrgAA3bEAAN20AADdtgAA3fUAAN33AADd+QAA3fsAAN3+AADd/wAA3gAAAN4BAADeAgAA3gQAAN4GAADeBwAA3ggAAN4KAADeCwAA3koAAN5MAADeTgAA3lAAAN5TAADeVAAA3lUAAN5WAADeVwAA3lkAAN5bAADeXAAA3l0AAN5fAADeYAAA3p8AAN6hAADepAAA3qYAAN6pAADeqgAA3qsAAN6sAADerQAA3q8AAN6xAADesgAA3rMAAN61AADetgAA3sMAAN7EAADexQAA3scAAN8GAADfCAAA3woAAN8MAADfDwAA3xAAAN8RAADfEgAA3xMAAN8VAADfFwAA3xgAAN8ZAADfGwAA3xwAAN9bAADfXQAA318AAN9hAADfZAAA32UAAN9mAADfZwAA32gAAN9qAADfbAAA320AAN9uAADfcAAA33EAAN+wAADfsgAA37QAAN+2AADfuQAA37oAAN+7AADfvAAA370AAN+/AADfwQAA38IAAN/DAADfxQAA38YAAOAFAADgBwAA4AkAAOALAADgDgAA4A8AAOAQAADgEQAA4BIAAOAUAADgFgAA4BcAAOAYAADgGgAA4BsAAOBaAADgXAAA4F4AAOBgAADgYwAA4GQAAOBlAADgZgAA4GcAAOBpAADgawAA4GwAAOBtAADgbwAA4HAAAOCVAADguQAA4OAAAOEEAADhBwAA4QkAAOELAADhDQAA4Q8AAOERAADhEgAA4RUAAOEiAADhMQAA4TMAAOE1AADhNwAA4TkAAOE7AADhPQAA4T8AAOFOAADhUQAA4VQAAOFXAADhWgAA4V0AAOFgAADhYwAA4WUAAOGkAADhpgAA4agAAOGqAADhrQAA4a4AAOGvAADhsAAA4bEAAOGzAADhtQAA4bYAAOG3AADhuQAA4boAAOH5AADh+wAA4f0AAOH/AADiAgAA4gMAAOIEAADiBQAA4gYAAOIIAADiCgAA4gsAAOIMAADiDgAA4g8AAOJOAADiUAAA4lIAAOJUAADiVwAA4lgAAOJZAADiWgAA4lsAAOJdAADiXwAA4mAAAOJhAADiYwAA4mQAAOKjAADipQAA4qgAAOKqAADirQAA4q4AAOKvAADisAAA4rEAAOKzAADitQAA4rYAAOK3AADiuQAA4roAAOL5AADi+wAA4v0AAOL/AADjAgAA4wMAAOMEAADjBQAA4wYAAOMIAADjCgAA4wsAAOMMAADjDgAA4w8AAONOAADjUAAA41IAAONUAADjVwAA41gAAONZAADjWgAA41sAAONdAADjXwAA42AAAONhAADjYwAA42QAAOOjAADjpQAA46gAAOOqAADjrQAA464AAOOvAADjsAAA47EAAOOzAADjtQAA47YAAOO3AADjuQAA47oAAOQFAADkKAAA5EgAAORoAADkagAA5GwAAORuAADkcAAA5HMAAOR0AADkdQAA5HgAAOR5AADkewAA5HwAAOR+AADkgQAA5IIAAOSDAADkhgAA5IcAAOSMAADkmQAA5J4AAOSgAADkogAA5KcAAOSqAADkrQAA5K8AAOTUAADk+AAA5R8AAOVDAADlRgAA5UgAAOVKAADlTAAA5U4AAOVQAADlUQAA5VQAAOVhAADlcgAA5XQAAOV2AADleAAA5XoAAOV8AADlfgAA5YAAAOWCAADlkwAA5ZYAAOWZAADlnAAA5Z8AAOWiAADlpQAA5agAAOWrAADlrQAA5ewAAOXuAADl8AAA5fIAAOX1AADl9gAA5fcAAOX4AADl+QAA5fsAAOX9AADl/gAA5f8AAOYBAADmAgAA5kEAAOZDAADmRQAA5kcAAOZKAADmSwAA5kwAAOZNAADmTgAA5lAAAOZSAADmUwAA5lQAAOZWAADmVwAA5pYAAOaYAADmmwAA5p0AAOagAADmoQAA5qIAAOajAADmpAAA5qYAAOaoAADmqQAA5qoAAOasAADmrQAA5roAAOa7AADmvAAA5r4AAOb9AADm/wAA5wEAAOcDAADnBgAA5wcAAOcIAADnCQAA5woAAOcMAADnDgAA5w8AAOcQAADnEgAA5xMAAOdSAADnVAAA51YAAOdYAADnWwAA51wAAOddAADnXgAA518AAOdhAADnYwAA52QAAOdlAADnZwAA52gAAOenAADnqQAA56sAAOetAADnsAAA57EAAOeyAADnswAA57QAAOe2AADnuAAA57kAAOe6AADnvAAA570AAOf8AADn/gAA6AAAAOgCAADoBQAA6AYAAOgHAADoCAAA6AkAAOgLAADoDQAA6A4AAOgPAADoEQAA6BIAAOhRAADoUwAA6FUAAOhXAADoWgAA6FsAAOhcAADoXQAA6F4AAOhgAADoYgAA6GMAAOhkAADoZgAA6GcAAOiMAADosAAA6NcAAOj7AADo/gAA6QAAAOkCAADpBAAA6QYAAOkIAADpCQAA6QwAAOkZAADpKAAA6SoAAOksAADpLgAA6TAAAOkyAADpNAAA6TYAAOlFAADpSAAA6UsAAOlOAADpUQAA6VQAAOlXAADpWgAA6VwAAOmbAADpnQAA6Z8AAOmhAADppAAA6aUAAOmmAADppwAA6agAAOmqAADprAAA6a0AAOmuAADpsAAA6bEAAOnwAADp8gAA6fQAAOn2AADp+QAA6foAAOn7AADp/AAA6f0AAOn/AADqAQAA6gIAAOoDAADqBQAA6gYAAOpFAADqRwAA6kkAAOpLAADqTgAA6k8AAOpQAADqUQAA6lIAAOpUAADqVgAA6lcAAOpYAADqWgAA6lsAAOqaAADqnAAA6p8AAOqhAADqpAAA6qUAAOqmAADqpwAA6qgAAOqqAADqrAAA6q0AAOquAADqsAAA6rEAAOr0AADrGAAA6zwAAOtfAADrhgAA66YAAOvNAADr9AAA7BQAAOw4AADsXAAA7F4AAOxhAADsYwAA7GUAAOxnAADsagAA7G0AAOxvAADscQAA7HQAAOx2AADseAAA7HsAAOx+AADsfwAA7IQAAOyRAADslAAA7JYAAOyZAADsnAAA7J4AAOzDAADs5wAA7Q4AAO0yAADtNQAA7TcAAO05AADtOwAA7T0AAO0/AADtQAAA7UMAAO1QAADtYwAA7WUAAO1nAADtaQAA7WsAAO1tAADtbwAA7XEAAO1zAADtdQAA7YgAAO2LAADtjgAA7ZEAAO2UAADtlwAA7ZoAAO2dAADtoAAA7aMAAO2lAADt5AAA7eYAAO3pAADt6wAA7e4AAO3vAADt8AAA7fEAAO3yAADt9AAA7fYAAO33AADt+AAA7foAAO37AADuBAAA7gUAAO4HAADuRgAA7kgAAO5LAADuTQAA7lAAAO5RAADuUgAA7lMAAO5UAADuVgAA7lgAAO5ZAADuWgAA7lwAAO5dAADuawAA7qoAAO6sAADurwAA7rEAAO60AADutQAA7rYAAO63AADuuAAA7roAAO68AADuvQAA7r4AAO7AAADuwQAA7soAAO7LAADuzQAA7wwAAO8OAADvEAAA7xIAAO8VAADvFgAA7xcAAO8YAADvGQAA7xsAAO8dAADvHgAA7x8AAO8hAADvIgAA72EAAO9jAADvZgAA72gAAO9rAADvbAAA720AAO9uAADvbwAA73EAAO9zAADvdAAA73UAAO93AADveAAA74EAAO+CAADvhAAA78MAAO/FAADvxwAA78kAAO/MAADvzQAA784AAO/PAADv0AAA79IAAO/UAADv1QAA79YAAO/YAADv2QAA8BgAAPAaAADwHQAA8B8AAPAiAADwIwAA8CQAAPAlAADwJgAA8CgAAPAqAADwKwAA8CwAAPAuAADwLwAA8DwAAPA9AADwPgAA8EAAAPB/AADwgQAA8IMAAPCFAADwiAAA8IkAAPCKAADwiwAA8IwAAPCOAADwkAAA8JEAAPCSAADwlAAA8JUAAPDUAADw1gAA8NgAAPDaAADw3QAA8N4AAPDfAADw4AAA8OEAAPDjAADw5QAA8OYAAPDnAADw6QAA8OoAAPD3AADxMAAA8TMAAPE2AADxOQAA8TwAAPE/AADxQgAA8UUAAPFIAADxSwAA8U4AAPFRAADxVAAA8VcAAPFZAADxXAAA8V8AAPFhAADxZAAA8WcAAPFqAADxbQAA8XAAAPFzAADxdgAA8XkAAPF8AADxfwAA8bgAAPG7AADxvgAA8cEAAPHEAADxxwAA8coAAPHNAADx0AAA8dMAAPHWAADx2QAA8dwAAPHfAADx4gAA8eUAAPHoAADx6wAA8e4AAPHxAADx9AAA8fcAAPH6AADx/QAA8gAAAPIDAADyBgAA8gkAAPILAADyHgAA8kAAAPJfAADycwAA8pEAAPKuAADy0gAA8vMAAPMWAADzMQAA80QAAPNYAADzdQAA84QAAPOYAADzrQAA878AAPPOAADz6AAA9AQAAPQiAAD0KwAA9DkAAPRcAAD0fgAA9MkAAPTsAAD1DAAA9SwAAPUuAAD1MAAA9TIA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AQAuAAEAMAABADEAAQAyAAEANAABADUAAQB0AAEAdgABAHgAAQB6AAEAfQABAH4AAQB/AAEAgAABAIEAAQCDAAEAhQABAIYAAQCHAAEAiQABAIoAAQDJAAEAywABAM0AAQDPAAEA0gABANMAAQDUAAEA1QABANYAAQDYAAEA2gABANsAAQDcAAEA3gABAN8AAQEeAAEBIAABASIAAQEkAAEBJwABASgAAQEpAAEBKgABASsAAQEtAAEBLwABATAAAQExAAEBMwABATQAAQFZAAEBfQABAaQAAQHIAAEBywABAc0AAQHPAAEB0QABAdMAAQHVAAEB1gABAdkAAQHmAAEB9QABAfcAAQH5AAEB+wABAf0AAQH/AAECAQABAgMAAQISAAECFQABAhgAAQIbAAECHgABAiEAAQIkAAECJwABAikAAQJoAAECagABAmwAAQJuAAECcQABAnIAAQJzAAECdAABAnUAAQJ3AAECeQABAnoAAQJ7AAECfQABAn4AAQK9AAECvwABAsEAAQLDAAECxgABAscAAQLIAAECyQABAsoAAQLMAAECzgABAs8AAQLQAAEC0gABAtMAAQMSAAEDFAABAxYAAQMYAAEDGwABAxwAAQMdAAEDHgABAx8AAQMhAAEDIwABAyQAAQMlAAEDJwABAygAAQNnAAEDaQABA2sAAQNtAAEDcAABA3EAAQNyAAEDcwABA3QAAQN2AAEDeAABA3kAAQN6AAEDfAABA30AAQO8AAEDvgABA8AAAQPCAAEDxQABA8YAAQPHAAEDyAABA8kAAQPLAAEDzQABA84AAQPPAAED0QABA9IAAQQRAAEEEwABBBUAAQQXAAEEGgABBBsAAQQcAAEEHQABBB4AAQQgAAEEIgABBCMAAQQkAAEEJgABBCcAAQRmAAEEaAABBGoAAQRsAAEEbwABBHAAAQRxAAEEcgABBHMAAQR1AAEEdwABBHgAAQR5AAEEewABBHwAAQTHAAEE6gABBQoAAQUqAAEFLAABBS4AAQUwAAEFMgABBTUAAQU2AAEFNwABBToAAQU7AAEFPQABBT4AAQVAAAEFQwABBUQAAQVFAAEFSAABBUkAAQVOAAEFWwABBWAAAQViAAEFZAABBWkAAQVsAAEFbwABBXEAAQWWAAEFugABBeEAAQYFAAEGCAABBgoAAQYMAAEGDgABBhAA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ARDHAAEQyQABEMoAARDgAAERHwABESEAAREjAAERJQABESgAAREpAAERKgABESsAAREsAAERLgABETAAARExAAERMgABETQAARE1AAERWgABEX4AARGlAAERyQABEcwAARHOAAER0AABEdIAARHUAAER1gABEdcAARHaAAER5wABEfYAARH4AAER+gABEfwAARH+AAESAAABEgIAARIEAAESEwABEhYAARIZAAESHAABEh8AARIiAAESJQABEigAARIqAAESaQABEmsAARJtAAESbwABEnIAARJzAAESdAABEnUAARJ2AAESeAABEnoAARJ7AAESfAABEn4AARJ/AAESvgABEsAAARLCAAESxAABEscAARLIAAESyQABEsoAARLLAAESzQABEs8AARLQAAES0QABEtMAARLUAAETEwABExUAARMXAAETGQABExwAARMdAAETHgABEx8AARMgAAETIgABEyQAARMlAAETJgABEygAARMpAAETaAABE2oAARNsAAETbgABE3EAARNyAAETcwABE3QAARN1AAETdwABE3kAARN6AAETewABE30AARN+AAETvQABE78AARPBAAETwwABE8YAARPHAAETyAABE8kAARPKAAETzAABE84AARPPAAET0AABE9IAARPTAAEUEgABFBQAARQWAAEUGAABFBsAARQcAAEUHQABFB4AARQfAAEUIQABFCMAARQkAAEUJQABFCcAARQoAAEUZwABFGkAARRrAAEUbQABFHAAARRxAAEUcgABFHMAARR0AAEUdgABFHgAARR5AAEUegABFHwAARR9AAEUyAABFOsAARULAAEVKwABFS0AARUvAAEVMQABFTMAARU2AAEVNwABFTgAARU7AAEVPAABFT4AARU/AAEVQQABFUQAARVFAAEVRgABFUkAARVKAAEVTwABFVwAARVhAAEVYwABFWUAARVqAAEVbQABFXAAARVyAAEVlwABFbsAARXiAAEWBgABFgkAARYLAAEWDQABFg8AARYRAAEWEwABFhQAARYXAAEWJAABFjUAARY3AAEWOQABFjsAARY9AAEWPwABFkEAARZDAAEWRQABFlYAARZZAAEWXAABFl8AARZiAAEWZQABFmgAARZrAAEWbgABFnAAARavAAEWsQABFrMAARa1AAEWuAABFrkAARa6AAEWuwABFrwAARa+AAEWwAABFsEAARbCAAEWxAABFsUAARcEAAEXBgABFwgAARcKAAEXDQABFw4AARcPAAEXEAABFxEAARcTAAEXFQABFxYAARcXAAEXGQABFxoAARdZAAEXWwABF14AARdgAAEXYwABF2QAARdlAAEXZgABF2cAARdpAAEXawABF2wAARdtAAEXbwABF3AAARd9AAEXfgABF38AAReBAAEXwAABF8IAARfEAAEXxgABF8kAARfKAAEXywABF8wAARfNAAEXzwABF9EAARfSAAEX0wABF9UAARfWAAEYFQABGBcAARgZAAEYGwABGB4AARgfAAEYIAABGCEAARgiAAEYJAABGCYAARgnAAEYKAABGCoAARgrAAEYagABGGwAARhuAAEYcAABGHMAARh0AAEYdQABGHYAARh3AAEYeQABGHsAARh8AAEYfQABGH8AARiAAAEYvwABGMEAARjDAAEYxQABGMgAARjJAAEYygABGMsAARjMAAEYzgABGNAAARjRAAEY0gABGNQAARjVAAEZFAABGRYAARkYAAEZGgABGR0AARkeAAEZHwABGSAAARkhAAEZIwABGSUAARkmAAEZJwABGSkAARkqAAEZTwABGXMAARmaAAEZvgABGcEAARnDAAEZxQABGccAARnJAAEZywABGcwAARnPAAEZ3AABGesAARntAAEZ7wABGfEAARnzAAEZ9QABGfcAARn5AAEaCAABGgsAARoOAAEaEQABGhQAARoXAAEaGgABGh0AARofAAEaXgABGmAAARpiAAEaZAABGmcAARpoAAEaaQABGmoAARprAAEabQABGm8AARpwAAEacQABGnMAARp0AAEaswABGrUAARq3AAEauQABGrwAARq9AAEavgABGr8AARrAAAEawgABGsQAARrFAAEaxgABGsgAARrJAAEbCAABGwoAARsMAAEbDgABGxEAARsSAAEbEwABGxQAARsVAAEbFwABGxkAARsaAAEbGwABGx0AARseAAEbXQABG18AARthAAEbYwABG2YAARtnAAEbaAABG2kAARtqAAEbbAABG24AARtvAAEbcAABG3IAARtzAAEbsgABG7QAARu2AAEbuAABG7sAARu8AAEbvQABG74AARu/AAEbwQABG8MAARvEAAEbxQABG8cAARvIAAEcBwABHAkAARwLAAEcDQABHBAAARwRAAEcEgABHBMAARwUAAEcFgABHBgAARwZAAEcGgABHBwAARwdAAEcXAABHF4AARxgAAEcYgABHGUAARxmAAEcZwABHGgAARxpAAEcawABHG0AARxuAAEcbwABHHEAARxyAAEcvQABHOAAAR0AAAEdIAABHSIAAR0kAAEdJgABHSgAAR0rAAEdLAABHS0AAR0wAAEdMQABHTMAAR00AAEdNgABHTkAAR06AAEdOwABHT4AAR0/AAEdSAABHVUAAR1aAAEdXAABHV4AAR1jAAEdZgABHWkAAR1rAAEdkAABHbQAAR3bAAEd/wABHgIAAR4EAAEeBgABHggAAR4KAAEeDAABHg0AAR4QAAEeHQABHi4AAR4wAAEeMgABHjQAAR42AAEeOAABHjoAAR48AAEePgABHk8AAR5SAAEeVQABHlgAAR5bAAEeXgABHmEAAR5kAAEeZwABHmkAAR6oAAEeqgABHqwAAR6uAAEesQABHrIAAR6zAAEetAABHrUAAR63AAEeuQABHroAAR67AAEevQABHr4AAR79AAEe/wABHwEAAR8DAAEfBgABHwcAAR8IAAEfCQABHwoAAR8MAAEfDgABHw8AAR8QAAEfEgABHxMAAR9SAAEfVAABH1cAAR9ZAAEfXAABH10AAR9eAAEfXwABH2AAAR9iAAEfZAABH2UAAR9mAAEfaAABH2kAAR92AAEfdwABH3gAAR96AAEfuQABH7sAAR+9AAEfvwABH8IAAR/DAAEfxAABH8UAAR/GAAEfyAABH8oAAR/LAAEfzAABH84AAR/PAAEgDgABIBAAASASAAEgFAABIBcAASAYAAEgGQABIBoAASAbAAEgHQABIB8AASAgAAEgIQABICMAASAkAAEgYwABIGUAASBnAAEgaQABIGwAASBtAAEgbgABIG8AASBwAAEgcgABIHQAASB1AAEgdgABIHgAASB5AAEguAABILoAASC8AAEgvgABIMEAASDCAAEgwwABIMQAASDFAAEgxwABIMkAASDKAAEgywABIM0AASDOAAEhDQABIQ8AASERAAEhEwABIRYAASEXAAEhGAABIRkAASEaAAEhHAABIR4AASEfAAEhIAABISIAASEjAAEhSAABIWwAASGTAAEhtwABIboAASG8AAEhvgABIcAAASHCAAEhxAABIcUAASHIAAEh1QABIeQAASHmAAEh6AABIeoAASHsAAEh7gABIfAAASHyAAEiAQABIgQAASIHAAEiCgABIg0AASIQAAEiEwABIhYAASIYAAEiVwABIlkAASJbAAEiXQABImAAASJhAAEiYgABImMAASJkAAEiZgABImgAASJpAAEiagABImwAASJtAAEirAABIq4AASKwAAEisgABIrUAASK2AAEitwABIrgAASK5AAEiuwABIr0AASK+AAEivwABIsEAASLCAAEjAQABIwMAASMFAAEjBwABIwoAASMLAAEjDAABIw0AASMOAAEjEAABIxIAASMTAAEjFAABIxYAASMXAAEjVgABI1gAASNaAAEjXAABI18AASNgAAEjYQABI2IAASNjAAEjZQABI2cAASNoAAEjaQABI2sAASNsAAEjqwABI60AASOvAAEjsQABI7QAASO1AAEjtgABI7cAASO4AAEjugABI7wAASO9AAEjvgABI8AAASPBAAEkAAABJAIAASQEAAEkBgABJAkAASQKAAEkCwABJAwAASQNAAEkDwABJBEAASQSAAEkEwABJBUAASQWAAEkVQABJFcAASRZAAEkWwABJF4AASRfAAEkYAABJGEAASRiAAEkZAABJGYAASRnAAEkaAABJGoAASRrAAEktgABJNkAAST5AAElGQABJRsAASUdAAElHwABJSEAASUkAAElJQABJSYAASUpAAElKgABJSwAASUtAAElLwABJTIAASUzAAElNAABJTcAASU4AAElPQABJUoAASVPAAElUQABJVMAASVYAAElWwABJV4AASVgAAElhQABJakAASXQAAEl9AABJfcAASX5AAEl+wABJf0AASX/AAEmAQABJgIAASYFAAEmEgABJiMAASYlAAEmJwABJikAASYrAAEmLQABJi8AASYxAAEmMwABJkQAASZHAAEmSgABJk0AASZQAAEmUwABJlYAASZZAAEmXAABJl4AASadAAEmnwABJqEAASajAAEmpgABJqcAASaoAAEmqQABJqoAASasAAEmrgABJq8AASawAAEmsgABJrMAASbyAAEm9AABJvYAASb4AAEm+wABJvwAASb9AAEm/gABJv8AAScBAAEnAwABJwQAAScFAAEnBwABJwgAASdHAAEnSQABJ0wAASdOAAEnUQABJ1IAASdTAAEnVAABJ1UAASdXAAEnWQABJ1oAASdbAAEnXQABJ14AASdrAAEnbAABJ20AASdvAAEnrgABJ7AAASeyAAEntAABJ7cAASe4AAEnuQABJ7oAASe7AAEnvQABJ78AASfAAAEnwQABJ8MAASfEAAEoAwABKAUAASgHAAEoCQABKAwAASgNAAEoDgABKA8AASgQAAEoEgABKBQAASgVAAEoFgABKBgAASgZAAEoWAABKFoAAShcAAEoXgABKGEAAShiAAEoYwABKGQAAShlAAEoZwABKGkAAShqAAEoawABKG0AAShuAAEorQABKK8AASixAAEoswABKLYAASi3AAEouAABKLkAASi6AAEovAABKL4AASi/AAEowAABKMIAASjDAAEpAgABKQQAASkGAAEpCAABKQsAASkMAAEpDQABKQ4AASkPAAEpEQABKRMAASkUAAEpFQABKRcAASkYAAEpPQABKWEAASmIAAEprAABKa8AASmxAAEpswABKbUAASm3AAEpuQABKboAASm9AAEpygABKdkAASnbAAEp3QABKd8AASnhAAEp4wABKeUAASnnAAEp9gABKfkAASn8AAEp/wABKgIAASoFAAEqCAABKgsAASoNAAEqTAABKk4AASpQAAEqUgABKlUAASpWAAEqVwABKlgAASpZAAEqWwABKl0AASpeAAEqXwABKmEAASpiAAEqoQABKqMAASqlAAEqpwABKqoAASqrAAEqrAABKq0AASquAAEqsAABKrIAASqzAAEqtAABKrYAASq3AAEq9gABKvgAASr6AAEq/AABKv8AASsAAAErAQABKwIAASsDAAErBQABKwcAASsIAAErCQABKwsAASsMAAErSwABK00AAStPAAErUQABK1QAAStVAAErVgABK1cAAStYAAErWgABK1wAAStdAAErXgABK2AAASthAAEroAABK6IAASukAAErpgABK6kAASuqAAErqwABK6wAASutAAErrwABK7EAASuyAAErswABK7UAASu2AAEr9QABK/cAASv5AAEr+wABK/4AASv/AAEsAAABLAEAASwCAAEsBAABLAYAASwHAAEsCAABLAoAASwLAAEsSgABLEwAASxOAAEsUAABLFMAASxUAAEsVQABLFYAASxXAAEsWQABLFsAASxcAAEsXQABLF8AASxgAAEsqwABLM4AASzuAAEtDgABLRAAAS0SAAEtFAABLRYAAS0ZAAEtGgABLRsAAS0eAAEtHwABLSEAAS0iAAEtJAABLScAAS0oAAEtKQABLSwAAS0tAAEtMgABLT8AAS1EAAEtRgABLUgAAS1NAAEtUAABLVMAAS1VAAEtegABLZ4AAS3FAAEt6QABLewAAS3uAAEt8AABLfIAAS30AAEt9gABLfcAAS36AAEuBwABLhgAAS4aAAEuHAABLh4AAS4gAAEuIgABLiQAAS4mAAEuKAABLjkAAS48AAEuPwABLkIAAS5FAAEuSAABLksAAS5OAAEuUQABLlMAAS6SAAEulAABLpYAAS6YAAEumwABLpwAAS6dAAEungABLp8AAS6hAAEuowABLqQAAS6lAAEupwABLqgAAS7nAAEu6QABLusAAS7tAAEu8AABLvEAAS7yAAEu8wABLvQAAS72AAEu+AABLvkAAS76AAEu/AABLv0AAS88AAEvPgABL0EAAS9DAAEvRgABL0cAAS9IAAEvSQABL0oAAS9MAAEvTgABL08AAS9QAAEvUgABL1MAAS9gAAEvYQABL2IAAS9kAAEvowABL6UAAS+nAAEvqQABL6wAAS+tAAEvrgABL68AAS+wAAEvsgABL7QAAS+1AAEvtgABL7gAAS+5AAEv+AABL/oAAS/8AAEv/gABMAEAATACAAEwAwABMAQAATAFAAEwBwABMAkAATAKAAEwCwABMA0AATAOAAEwTQABME8AATBRAAEwUwABMFYAATBXAAEwWAABMFkAATBaAAEwXAABMF4AATBfAAEwYAABMGIAATBjAAEwogABMKQAATCmAAEwqAABMKsAATCsAAEwrQABMK4AATCvAAEwsQABMLMAATC0AAEwtQABMLcAATC4AAEw9wABMPkAATD7AAEw/QABMQAAATEBAAExAgABMQMAATEEAAExBgABMQgAATEJAAExCgABMQwAATENAAExMgABMVYAATF9AAExoQABMaQAATGmAAExqAABMaoAATGsAAExrgABMa8AATGyAAExvwABMc4AATHQAAEx0gABMdQAATHWAAEx2AABMdoAATHcAAEx6wABMe4AATHxAAEx9AABMfcAATH6AAEx/QABMgAAATICAAEyQQABMkMAATJFAAEyRwABMkoAATJLAAEyTAABMk0AATJOAAEyUAABMlIAATJTAAEyVAABMlYAATJXAAEylgABMpgAATKaAAEynAABMp8AATKgAAEyoQABMqIAATKjAAEypQABMqcAATKoAAEyqQABMqsAATKsAAEy6wABMu0AATLvAAEy8QABMvQAATL1AAEy9gABMvcAATL4AAEy+gABMvwAATL9AAEy/gABMwAAATMBAAEzQAABM0IAATNEAAEzRgABM0kAATNKAAEzSwABM0wAATNNAAEzTwABM1EAATNSAAEzUwABM1UAATNWAAEzlQABM5cAATOZAAEzmwABM54AATOfAAEzoAABM6EAATOiAAEzpAABM6YAATOnAAEzqAABM6oAATOrAAEz6gABM+wAATPuAAEz8AABM/MAATP0AAEz9QABM/YAATP3AAEz+QABM/sAATP8AAEz/QABM/8AATQAAAE0PwABNEEAATRDAAE0RQABNEgAATRJAAE0SgABNEsAATRMAAE0TgABNFAAATRRAAE0UgABNFQAATRVAAE0oAABNMMAATTjAAE1AwABNQUAATUHAAE1CQABNQsAATUOAAE1DwABNRAAATUTAAE1FAABNRYAATUXAAE1GQABNRwAATUdAAE1HgABNSEAATUiAAE1JwABNTQAATU5AAE1OwABNT0AATVCAAE1RQABNUgAATVKAAE1bwABNZMAATW6AAE13gABNeEAATXjAAE15QABNecAATXpAAE16wABNewAATXvAAE1/AABNg0AATYPAAE2EQABNhMAATYVAAE2FwABNhkAATYbAAE2HQABNi4AATYxAAE2NAABNjcAATY6AAE2PQABNkAAATZDAAE2RgABNkgAATaHAAE2iQABNosAATaNAAE2kAABNpEAATaSAAE2kwABNpQAATaWAAE2mAABNpkAATaaAAE2nAABNp0AATbcAAE23gABNuAAATbiAAE25QABNuYAATbnAAE26AABNukAATbrAAE27QABNu4AATbvAAE28QABNvIAATcxAAE3MwABNzYAATc4AAE3OwABNzwAATc9AAE3PgABNz8AATdBAAE3QwABN0QAATdFAAE3RwABN0gAATdVAAE3VgABN1cAATdZAAE3mAABN5oAATecAAE3ngABN6EAATeiAAE3owABN6QAATelAAE3pwABN6kAATeqAAE3qwABN60AATeuAAE37QABN+8AATfxAAE38wABN/YAATf3AAE3+AABN/kAATf6AAE3/AABN/4AATf/AAE4AAABOAIAATgDAAE4QgABOEQAAThGAAE4SAABOEsAAThMAAE4TQABOE4AAThPAAE4UQABOFMAAThUAAE4VQABOFcAAThYAAE4lwABOJkAATibAAE4nQABOKAAATihAAE4ogABOKMAATikAAE4pgABOKgAATipAAE4qgABOKwAATitAAE47AABOO4AATjwAAE48gABOPUAATj2AAE49wABOPgAATj5AAE4+wABOP0AATj+AAE4/wABOQEAATkCAAE5JwABOUsAATlyAAE5lgABOZkAATmbAAE5nQABOZ8AATmhAAE5owABOaQAATmnAAE5tAABOcMAATnFAAE5xwABOckAATnLAAE5zQABOc8AATnRAAE54AABOeMAATnmAAE56QABOewAATnvAAE58gABOfUAATn3AAE6NgABOjgAATo6AAE6PAABOj8AATpAAAE6QQABOkIAATpDAAE6RQABOkcAATpIAAE6SQABOksAATpMAAE6iwABOo0AATqPAAE6kQABOpQAATqVAAE6lgABOpcAATqYAAE6mgABOpwAATqdAAE6ngABOqAAATqhAAE64AABOuIAATrkAAE65gABOukAATrqAAE66wABOuwAATrtAAE67wABOvEAATryAAE68wABOvUAATr2AAE7NQABOzcAATs5AAE7OwABOz4AATs/AAE7QAABO0EAATtCAAE7RAABO0YAATtHAAE7SAABO0oAATtLAAE7igABO4wAATuOAAE7kAABO5MAATuUAAE7lQABO5YAATuXAAE7mQABO5sAATucAAE7nQABO58AATugAAE73wABO+EAATvjAAE75QABO+gAATvpAAE76gABO+sAATvsAAE77gABO/AAATvxAAE78gABO/QAATv1AAE8NAABPDYAATw4AAE8OgABPD0AATw+AAE8PwABPEAAATxBAAE8QwABPEUAATxGAAE8RwABPEkAATxKAAE8lQABPLgAATzYAAE8+AABPPoAATz8AAE8/gABPQAAAT0DAAE9BAABPQUAAT0IAAE9CQABPQsAAT0MAAE9DgABPREAAT0SAAE9EwABPRYAAT0XAAE9HAABPSkAAT0uAAE9MAABPTIAAT03AAE9OgABPT0AAT0/AAE9ZAABPYgAAT2vAAE90wABPdYAAT3YAAE92gABPdwAAT3eAAE94AABPeEA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AU6QAAFOkQABTpMAAU6UAAFO0wABTtUAAU7XAAFO2QABTtwAAU7dAAFO3gABTt8AAU7gAAFO4gABTuQAAU7lAAFO5gABTugAAU7pAAFPKAABTyoAAU8tAAFPLwABTzIAAU8zAAFPNAABTzUAAU82AAFPOAABTzoAAU87AAFPPAABTz4AAU8/AAFPTAABT00AAU9OAAFPUAABT48AAU+RAAFPkwABT5UAAU+YAAFPmQABT5oAAU+bAAFPnAABT54AAU+gAAFPoQABT6IAAU+kAAFPpQABT+QAAU/mAAFP6AABT+oAAU/tAAFP7gABT+8AAU/wAAFP8QABT/MAAU/1AAFP9gABT/cAAU/5AAFP+gABUDkAAVA7AAFQPQABUD8AAVBCAAFQQwABUEQAAVBFAAFQRgABUEgAAVBKAAFQSwABUEwAAVBOAAFQTwABUI4AAVCQAAFQkgABUJQAAVCXAAFQmAABUJkAAVCaAAFQmwABUJ0AAVCfAAFQoAABUKEAAVCjAAFQpAABUOMAAVDlAAFQ5wABUOkAAVDsAAFQ7QABUO4AAVDvAAFQ8AABUPIAAVD0AAFQ9QABUPYAAVD4AAFQ+QABUR4AAVFCAAFRaQABUY0AAVGQAAFRkgABUZQAAVGWAAFRmAABUZoAAVGbAAFRngABUasAAVG6AAFRvAABUb4AAVHAAAFRwgABUcQAAVHGAAFRyAABUdcAAVHaAAFR3QABUeAAAVHjAAFR5gABUekAAVHsAAFR7gABUi0AAVIvAAFSMQABUjMAAVI2AAFSNwABUjgAAVI5AAFSOgABUjwAAVI+AAFSPwABUkAAAVJCAAFSQwABUoIAAVKEAAFShgABUogAAVKLAAFSjAABUo0AAVKOAAFSjwABUpEAAVKTAAFSlAABUpUAAVKXAAFSmAABUtcAAVLZAAFS2wABUt0AAVLgAAFS4QABUuIAAVLjAAFS5AABUuYAAVLoAAFS6QABUuoAAVLsAAFS7QABUywAAVMuAAFTMAABUzIAAVM1AAFTNgABUzcAAVM4AAFTOQABUzsAAVM9AAFTPgABUz8AAVNBAAFTQgABU4EAAVODAAFThQABU4cAAVOKAAFTiwABU4wAAVONAAFTjgABU5AAAVOSAAFTkwABU5QAAVOWAAFTlwABU9YAAVPYAAFT2gABU9wAAVPfAAFT4AABU+EAAVPiAAFT4wABU+UAAVPnAAFT6AABU+kAAVPrAAFT7AABVCsAAVQtAAFULwABVDEAAVQ0AAFUNQABVDYAAVQ3AAFUOAABVDoAAVQ8AAFUPQABVD4AAVRAAAFUQQABVIwAAVSvAAFUzwABVO8AAVTxAAFU8wABVPUAAVT3AAFU+gABVPsAAVT8AAFU/wABVQAAAVUCAAFVAwABVQUAAVUIAAFVCQABVQoAAVUNAAFVDgABVRMAAVUgAAFVJQABVScAAVUpAAFVLgABVTEAAVU0AAFVNgABVVsAAVV/AAFVpgABVcoAAVXNAAFVzwABVdEAAVXTAAFV1QABVdcAAVXYAAFV2wABVegAAVX5AAFV+wABVf0AAVX/AAFWAQABVgMAAVYFAAFWBwABVgkAAVYaAAFWHQABViAAAVYjAAFWJgABVikAAVYsAAFWLwABVjIAAVY0AAFWcwABVnUAAVZ3AAFWeQABVnwAAVZ9AAFWfgABVn8AAVaAAAFWggABVoQAAVaFAAFWhgABVogAAVaJAAFWyAABVsoAAVbMAAFWzgABVtEAAVbSAAFW0wABVtQAAVbVAAFW1wABVtkAAVbaAAFW2wABVt0AAVbeAAFXHQABVx8AAVciAAFXJAABVycAAVcoAAFXKQABVyoAAVcrAAFXLQABVy8AAVcwAAFXMQABVzMAAVc0AAFXQQABV0IAAVdDAAFXRQABV4QAAVeGAAFXiAABV4oAAVeNAAFXjgABV48AAVeQAAFXkQABV5MAAVeVAAFXlgABV5cAAVeZAAFXmgABV9kAAVfbAAFX3QABV98AAVfiAAFX4wABV+QAAVflAAFX5gABV+gAAVfqAAFX6wABV+wAAVfuAAFX7wABWC4AAVgwAAFYMgABWDQAAVg3AAFYOAABWDkAAVg6AAFYOwABWD0AAVg/AAFYQAABWEEAAVhDAAFYRAABWIMAAViFAAFYhwABWIkAAViMAAFYjQABWI4AAViPAAFYkAABWJIAAViUAAFYlQABWJYAAViYAAFYmQABWNgAAVjaAAFY3AABWN4AAVjhAAFY4gABWOMAAVjkAAFY5QABWOcAAVjpAAFY6gABWOsAAVjtAAFY7gABWRMAAVk3AAFZXgABWYIAAVmFAAFZhwABWYkAAVmLAAFZjQABWY8AAVmQAAFZkwABWaAAAVmvAAFZsQABWbMAAVm1AAFZtwABWbkAAVm7AAFZvQABWcwAAVnPAAFZ0gABWdUAAVnYAAFZ2wABWd4AAVnhAAFZ4wABWiIAAVokAAFaJgABWigAAVorAAFaLAABWi0AAVouAAFaLwABWjEAAVozAAFaNAABWjUAAVo3AAFaOAABWncAAVp5AAFaewABWn0AAVqAAAFagQABWoIAAVqDAAFahAABWoYAAVqIAAFaiQABWooAAVqMAAFajQABWswAAVrOAAFa0AABWtIAAVrVAAFa1gABWtcAAVrYAAFa2QABWtsAAVrdAAFa3gABWt8AAVrhAAFa4gABWyEAAVsjAAFbJQABWycAAVsqAAFbKwABWywAAVstAAFbLgABWzAAAVsyAAFbMwABWzQAAVs2AAFbNwABW3YAAVt4AAFbegABW3wAAVt/AAFbgAABW4EAAVuCAAFbgwABW4UAAVuHAAFbiAABW4kAAVuLAAFbjAABW8sAAVvNAAFbzwABW9EAAVvUAAFb1QABW9YAAVvXAAFb2AABW9oAAVvcAAFb3QABW94AAVvgAAFb4QABXCAAAVwiAAFcJAABXCYAAVwpAAFcKgABXCsAAVwsAAFcLQABXC8AAVwxAAFcMgABXDMAAVw1AAFcNgABXIEAAVykAAFcxAABXOQAAVzmAAFc6AABXOoAAVzsAAFc7wABXPAAAVzxAAFc9AABXPUAAVz3AAFc+AABXPoAAVz8AAFc/QABXP4AAV0BAAFdAgABXQcAAV0UAAFdGQABXRsAAV0dAAFdIgABXSUAAV0oAAFdKgABXU8AAV1zAAFdmgABXb4AAV3BAAFdwwABXcUAAV3HAAFdyQABXcsAAV3MAAFdzwABXdwAAV3tAAFd7wABXfEAAV3zAAFd9QABXfcAAV35AAFd+wABXf0AAV4OAAFeEQABXhQAAV4XAAFeGgABXh0AAV4gAAFeIwABXiYAAV4oAAFeZwABXmkAAV5rAAFebQABXnAAAV5xAAFecgABXnMAAV50AAFedgABXngAAV55AAFeegABXnwAAV59AAFevAABXr4AAV7AAAFewgABXsUAAV7GAAFexwABXsgAAV7JAAFeywABXs0AAV7OAAFezwABXtEAAV7SAAFfEQABXxMAAV8WAAFfGAABXxsAAV8cAAFfHQABXx4AAV8fAAFfIQABXyMAAV8kAAFfJQABXycAAV8oAAFfNQABXzYAAV83AAFfOQABX3gAAV96AAFffAABX34AAV+BAAFfggABX4MAAV+EAAFfhQABX4cAAV+JAAFfigABX4sAAV+NAAFfjgABX80AAV/PAAFf0QABX9MAAV/WAAFf1wABX9gAAV/ZAAFf2gABX9wAAV/eAAFf3wABX+AAAV/iAAFf4wABYCIAAWAkAAFgJgABYCgAAWArAAFgLAABYC0AAWAuAAFgLwABYDEAAWAzAAFgNAABYDUAAWA3AAFgOAABYHcAAWB5AAFgewABYH0AAWCAAAFggQABYIIAAWCDAAFghAABYIYAAWCIAAFgiQABYIoAAWCMAAFgjQABYMwAAWDOAAFg0AABYNIAAWDVAAFg1gABYNcAAWDYAAFg2QABYNsAAWDdAAFg3gABYN8AAWDhAAFg4gABYQcAAWErAAFhUgABYXYAAWF5AAFhewABYX0AAWF/AAFhgQABYYMAAWGEAAFhhwABYZQAAWGjAAFhpQABYacAAWGpAAFhqwABYa0AAWGvAAFhsQABYcAAAWHDAAFhxgABYckAAWHMAAFhzwABYdIAAWHVAAFh1wABYhYAAWIYAAFiGgABYhwAAWIfAAFiIAABYiEAAWIiAAFiIwABYiUAAWInAAFiKAABYikAAWIrAAFiLAABYmsAAWJtAAFibwABYnEAAWJ0AAFidQABYnYAAWJ3AAFieAABYnoAAWJ8AAFifQABYn4AAWKAAAFigQABYsAAAWLCAAFixAABYsYAAWLJAAFiygABYssAAWLMAAFizQABYs8AAWLRAAFi0gABYtMAAWLVAAFi1gABYxUAAWMXAAFjGQABYxsAAWMeAAFjHwABYyAAAWMhAAFjIgABYyQAAWMmAAFjJwABYygAAWMqAAFjKwABY2oAAWNsAAFjbgABY3AAAWNzAAFjdAABY3UAAWN2AAFjdwABY3kAAWN7AAFjfAABY30AAWN/AAFjgAABY78AAWPBAAFjwwABY8UAAWPIAAFjyQABY8oAAWPLAAFjzAABY84AAWPQAAFj0QABY9IAAWPUAAFj1QABZBQAAWQWAAFkGAABZBoAAWQdAAFkHgABZB8AAWQgAAFkIQABZCMAAWQlAAFkJgABZCcAAWQpAAFkKgABZHUAAWSYAAFkuAABZNgAAWTaAAFk3AABZN4AAWTgAAFk4wABZOQAAWTlAAFk6AABZOkAAWTrAAFk7AABZO4AAWTxAAFk8gABZPMAAWT2AAFk9wABZPwAAWUJAAFlDgABZRAAAWUSAAFlFwABZRoAAWUdAAFlHwABZUQAAWVoAAFljwABZbMAAWW2AAFluAABZboAAWW8AAFlvgABZcAAAWXBAAFlxAABZdEAAWXiAAFl5AABZeYAAWXoAAFl6gABZewAAWXuAAFl8AABZfIAAWYDAAFmBgABZgkAAWYMAAFmDwABZhIAAWYVAAFmGAABZhsAAWYdAAFmXAABZl4AAWZgAAFmYgABZmUAAWZmAAFmZwABZmgAAWZpAAFmawABZm0AAWZuAAFmbwABZnEAAWZyAAFmsQABZrMAAWa1AAFmtwABZroAAWa7AAFmvAABZr0AAWa+AAFmwAABZsIAAWbDAAFmxAABZsYAAWbHAAFnBgABZwgAAWcLAAFnDQABZxAAAWcRAAFnEgABZxMAAWcUAAFnFgABZxgAAWcZAAFnGgABZxwAAWcdAAFnKgABZysAAWcsAAFnLgABZ20AAWdvAAFncQABZ3MAAWd2AAFndwABZ3gAAWd5AAFnegABZ3wAAWd+AAFnfwABZ4AAAWeCAAFngwABZ8IAAWfEAAFnxgABZ8gAAWfLAAFnzAABZ80AAWfOAAFnzwABZ9EAAWfTAAFn1AABZ9UAAWfXAAFn2AABaBcAAWgZAAFoGwABaB0AAWggAAFoIQABaCIAAWgjAAFoJAABaCYAAWgoAAFoKQABaCoAAWgsAAFoLQABaGwAAWhuAAFocQABaHMAAWh2AAFodwABaHgAAWh5AAFoegABaHwAAWh+AAFofwABaIAAAWiCAAFogwABaJYAAWjVAAFo1wABaNkAAWjbAAFo3gABaN8AAWjgAAFo4QABaOIAAWjkAAFo5gABaOcAAWjoAAFo6gABaOsAAWkQAAFpNAABaVsAAWl/AAFpggABaYQAAWmGAAFpiAABaYoAAWmMAAFpjQABaZAAAWmdAAFprAABaa4AAWmwAAFpsgABabQAAWm2AAFpuAABaboAAWnJAAFpzAABac8AAWnSAAFp1QABadgAAWnbAAFp3gABaeAAAWofAAFqIQABaiMAAWolAAFqKAABaikAAWoqAAFqKwABaiwAAWouAAFqMAABajEAAWoyAAFqNAABajUAAWp0AAFqdgABangAAWp6AAFqfQABan4AAWp/AAFqgAABaoEAAWqDAAFqhQABaoYAAWqHAAFqiQABaooAAWrJAAFqywABas0AAWrPAAFq0gABatMAAWrUAAFq1QABatYAAWrYAAFq2gABatsAAWrcAAFq3gABat8AAWseAAFrIAABayIAAWskAAFrJwABaygAAWspAAFrKgABaysAAWstAAFrLwABazAAAWsxAAFrMwABazQAAWtzAAFrdQABa3cAAWt5AAFrfAABa30AAWt+AAFrfwABa4AAAWuCAAFrhAABa4UAAWuGAAFriAABa4kAAWvIAAFrygABa8wAAWvOAAFr0QABa9IAAWvTAAFr1AABa9UAAWvXAAFr2QABa9oAAWvbAAFr3QABa94AAWwdAAFsHwABbCEAAWwjAAFsJgABbCcAAWwoAAFsKQABbCoAAWwsAAFsLgABbC8AAWwwAAFsMgABbDMAAWx+AAFsoQABbMEAAWzhAAFs4wABbOUAAWznAAFs6QABbOwAAWztAAFs7gABbPEAAWzyAAFs9AABbPUAAWz3AAFs+gABbPsAAWz8AAFs/wABbQAAAW0FAAFtEgABbRcAAW0ZAAFtGwABbSAAAW0jAAFtJgABbSgAAW1NAAFtcQABbZgAAW28AAFtvwABbcEAAW3DAAFtxQABbccAAW3JAAFtygABbc0AAW3aAAFt6wABbe0AAW3vAAFt8QABbfMAAW31AAFt9wABbfkAAW37AAFuDAABbg8AAW4SAAFuFQABbhgAAW4bAAFuHgABbiEAAW4kAAFuJgABbmUAAW5nAAFuaQABbmsAAW5uAAFubwABbnAAAW5xAAFucgABbnQAAW52AAFudwABbngAAW56AAFuewABbroAAW68AAFuvgABbsAAAW7DAAFuxAABbsUAAW7GAAFuxwABbskAAW7LAAFuzAABbs0AAW7PAAFu0AABbw8AAW8RAAFvFAABbxYAAW8ZAAFvGgABbxsAAW8cAAFvHQABbx8AAW8hAAFvIgABbyMAAW8lAAFvJgABbzMAAW80AAFvNQABbzcAAW92AAFveAABb3oAAW98AAFvfwABb4AAAW+BAAFvggABb4MAAW+FAAFvhwABb4gAAW+JAAFviwABb4wAAW/LAAFvzQABb88AAW/RAAFv1AABb9UAAW/WAAFv1wABb9gAAW/aAAFv3AABb90AAW/eAAFv4AABb+EAAXAgAAFwIgABcCQAAXAmAAFwKQABcCoAAXArAAFwLAABcC0AAXAvAAFwMQABcDIAAXAzAAFwNQABcDYAAXB1AAFwdwABcHkAAXB7AAFwfgABcH8AAXCAAAFwgQABcIIAAXCEAAFwhgABcIcAAXCIAAFwigABcIsAAXDKAAFwzAABcM4AAXDQAAFw0wABcNQAAXDVAAFw1gABcNcAAXDZAAFw2wABcNwAAXDdAAFw3wABcOAAAXEFAAFxKQABcVAAAXF0AAFxdwABcXkAAXF7AAFxfQABcX8AAXGBAAFxggABcYUAAXGSAAFxoQABcaMAAXGlAAFxpwABcakAAXGrAAFxrQABca8AAXG+AAFxwQABccQAAXHHAAFxygABcc0AAXHQAAFx0wABcdUAAXIUAAFyFgABchgAAXIaAAFyHQABch4AAXIfAAFyIAABciEAAXIjAAFyJQABciYAAXInAAFyKQABcioAAXJpAAFyawABcm0AAXJvAAFycgABcnMAAXJ0AAFydQABcnYAAXJ4AAFyegABcnsAAXJ8AAFyfgABcn8AAXK+AAFywAABcsIAAXLEAAFyxwABcsgAAXLJAAFyygABcssAAXLNAAFyzwABctAAAXLRAAFy0wABctQAAXMTAAFzFQABcxcAAXMZAAFzHAABcx0AAXMeAAFzHwABcyAAAXMiAAFzJAABcyUAAXMmAAFzKAABcykAAXNoAAFzagABc2wAAXNuAAFzcQABc3IAAXNzAAFzdAABc3UAAXN3AAFzeQABc3oAAXN7AAFzfQABc34AAXO9AAFzvwABc8EAAXPDAAFzxgABc8cAAXPIAAFzyQABc8oAAXPMAAFzzgABc88AAXPQAAFz0gABc9MAAXQSAAF0FAABdBYAAXQYAAF0GwABdBwAAXQdAAF0HgABdB8AAXQhAAF0IwABdCQAAXQlAAF0JwABdCgAAXRzAAF0lgABdLYAAXTWAAF02AABdNoAAXTcAAF03gABdOEAAXTiAAF04wABdOYAAXTnAAF06QABdOoAAXTsAAF07gABdO8AAXTwAAF08wABdPQAAXT5AAF1BgABdQsAAXUNAAF1DwABdRQAAXUXAAF1GgABdRwAAXVBAAF1ZQABdYwAAXWwAAF1swABdbUAAXW3AAF1uQABdbsAAXW9AAF1vgABdcEA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AYC1AAGAtwABgLkAAYC7AAGAvgABgL8AAYDAAAGAwQABgMIAAYDEAAGAxgABgMcAAYDIAAGAygABgMsAAYDwAAGBFAABgTsAAYFfAAGBYgABgWQAAYFmAAGBaAABgWoAAYFsAAGBbQABgXAAAYF9AAGBjAABgY4AAYGQAAGBkgABgZQAAYGWAAGBmAABgZoAAYGpAAGBrAABga8AAYGyAAGBtQABgbgAAYG7AAGBvgABgcAAAYH/AAGCAQABggMAAYIFAAGCCAABggkAAYIKAAGCCwABggwAAYIOAAGCEAABghEAAYISAAGCFAABghUAAYJUAAGCVgABglgAAYJaAAGCXQABgl4AAYJfAAGCYAABgmEAAYJjAAGCZQABgmYAAYJnAAGCaQABgmoAAYKpAAGCqwABgq0AAYKvAAGCsgABgrMAAYK0AAGCtQABgrYAAYK4AAGCugABgrsAAYK8AAGCvgABgr8AAYL+AAGDAAABgwIAAYMEAAGDBwABgwgAAYMJAAGDCgABgwsAAYMNAAGDDwABgxAAAYMRAAGDEwABgxQAAYNTAAGDVQABg1cAAYNZAAGDXAABg10AAYNeAAGDXwABg2AAAYNiAAGDZAABg2UAAYNmAAGDaAABg2kAAYOoAAGDqgABg6wAAYOuAAGDsQABg7IAAYOzAAGDtAABg7UAAYO3AAGDuQABg7oAAYO7AAGDvQABg74AAYP9AAGD/wABhAEAAYQDAAGEBgABhAcAAYQIAAGECQABhAoAAYQMAAGEDgABhA8AAYQQAAGEEgABhBMAAYReAAGEgQABhKEAAYTBAAGEwwABhMUAAYTHAAGEyQABhMwAAYTNAAGEzgABhNEAAYTSAAGE1AABhNUAAYTXAAGE2gABhNsAAYTcAAGE3wABhOAAAYTpAAGE9gABhPsAAYT9AAGE/wABhQQAAYUHAAGFCgABhQwAAYUxAAGFVQABhXwAAYWgAAGFowABhaUAAYWnAAGFqQABhasAAYWtAAGFrgABhbEAAYW+AAGFzwABhdEAAYXTAAGF1QABhdcAAYXZAAGF2wABhd0AAYXfAAGF8AABhfMAAYX2AAGF+QABhfwAAYX/AAGGAgABhgUAAYYIAAGGCgABhkkAAYZLAAGGTQABhk8AAYZSAAGGUwABhlQAAYZVAAGGVgABhlgAAYZaAAGGWwABhlwAAYZeAAGGXwABhp4AAYagAAGGogABhqQAAYanAAGGqAABhqkAAYaqAAGGqwABhq0AAYavAAGGsAABhrEAAYazAAGGtAABhvMAAYb1AAGG+AABhvoAAYb9AAGG/gABhv8AAYcAAAGHAQABhwMAAYcFAAGHBgABhwcAAYcJAAGHCgABhxcAAYcYAAGHGQABhxsAAYdaAAGHXAABh14AAYdgAAGHYwABh2QAAYdlAAGHZgABh2cAAYdpAAGHawABh2wAAYdtAAGHbwABh3AAAYevAAGHsQABh7MAAYe1AAGHuAABh7kAAYe6AAGHuwABh7wAAYe+AAGHwAABh8EAAYfCAAGHxAABh8UAAYgEAAGIBgABiAgAAYgKAAGIDQABiA4AAYgPAAGIEAABiBEAAYgTAAGIFQABiBYAAYgXAAGIGQABiBoAAYhZAAGIWwABiF4AAYhgAAGIYwABiGQAAYhlAAGIZgABiGcAAYhpAAGIawABiGwAAYhtAAGIbwABiHAAAYiEAAGIwwABiMUAAYjHAAGIyQABiMwAAYjNAAGIzgABiM8AAYjQAAGI0gABiNQAAYjVAAGI1gABiNgAAYjZAAGI/gABiSIAAYlJAAGJbQABiXAAAYlyAAGJdAABiXYAAYl4AAGJegABiXsAAYl+AAGJiwABiZoAAYmcAAGJngABiaAAAYmiAAGJpAABiaYAAYmoAAGJtwABiboAAYm9AAGJwAABicMAAYnGAAGJyQABicwAAYnOAAGKDQABig8AAYoRAAGKEwABihYAAYoXAAGKGAABihkAAYoaAAGKHAABih4AAYofAAGKIAABiiIAAYojAAGKYgABimQAAYpmAAGKaAABimsAAYpsAAGKbQABim4AAYpvAAGKcQABinMAAYp0AAGKdQABincAAYp4AAGKtwABirkAAYq7AAGKvQABisAAAYrBAAGKwgABisMAAYrEAAGKxgABisgAAYrJAAGKygABiswAAYrNAAGLDAABiw4AAYsQAAGLEgABixUAAYsWAAGLFwABixgAAYsZAAGLGwABix0AAYseAAGLHwABiyEAAYsiAAGLYQABi2MAAYtlAAGLZwABi2oAAYtrAAGLbAABi20AAYtuAAGLcAABi3IAAYtzAAGLdAABi3YAAYt3AAGLtgABi7gAAYu6AAGLvAABi78AAYvAAAGLwQABi8IA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AZcZAAGXJgABlycAAZcoAAGXKgABl2kAAZdrAAGXbQABl28AAZdyAAGXcwABl3QAAZd1AAGXdgABl3gAAZd6AAGXewABl3wAAZd+AAGXfwABl74AAZfAAAGXwgABl8QAAZfHAAGXyAABl8kAAZfKAAGXywABl80AAZfPAAGX0AABl9EAAZfTAAGX1AABmBMAAZgVAAGYFwABmBkAAZgcAAGYHQABmB4AAZgfAAGYIAABmCIAAZgkAAGYJQABmCYAAZgoAAGYKQABmGgAAZhqAAGYbQABmG8AAZhyAAGYcwABmHQAAZh1AAGYdgABmHgAAZh6AAGYewABmHwAAZh+AAGYfwABmJMAAZjSAAGY1AABmNYAAZjYAAGY2wABmNwAAZjdAAGY3gABmN8AAZjhAAGY4wABmOQAAZjlAAGY5wABmOgAAZkNAAGZMQABmVgAAZl8AAGZfwABmYEAAZmDAAGZhQABmYcAAZmJAAGZigABmY0AAZmaAAGZqQABmasAAZmtAAGZrwABmbEAAZmzAAGZtQABmbcAAZnGAAGZyQABmcwAAZnPAAGZ0gABmdUAAZnYAAGZ2wABmd0AAZocAAGaHgABmiAAAZoiAAGaJQABmiYAAZonAAGaKAABmikAAZorAAGaLQABmi4AAZovAAGaMQABmjIAAZpxAAGacwABmnUAAZp3AAGaegABmnsAAZp8AAGafQABmn4AAZqAAAGaggABmoMAAZqEAAGahgABmocAAZrGAAGayAABmsoAAZrMAAGazwABmtAAAZrRAAGa0gABmtMAAZrVAAGa1wABmtgAAZrZAAGa2wABmtwAAZsbAAGbHQABmx8AAZshAAGbJAABmyUAAZsmAAGbJwABmygAAZsqAAGbLAABmy0AAZsuAAGbMAABmzEAAZtwAAGbcgABm3QAAZt2AAGbeQABm3oAAZt7AAGbfAABm30AAZt/AAGbgQABm4IAAZuDAAGbhQABm4YAAZvFAAGbxwABm8kAAZvLAAGbzgABm88AAZvQAAGb0QABm9IAAZvUAAGb1gABm9cAAZvYAAGb2gABm9sAAZwaAAGcHAABnB4AAZwgAAGcIwABnCQAAZwlAAGcJgABnCcAAZwpAAGcKwABnCwAAZwtAAGcLwABnDAAAZx7AAGcngABnL4AAZzeAAGc4AABnOIAAZzkAAGc5gABnOkAAZzqAAGc6wABnO4AAZzvAAGc8QABnPIAAZz0AAGc9wABnPgAAZz5AAGc/AABnP0AAZ0CAAGdDwABnRQAAZ0WAAGdGAABnR0AAZ0gAAGdIwABnSUAAZ1KAAGdbgABnZUAAZ25AAGdvAABnb4AAZ3AAAGdwgABncQAAZ3GAAGdxwABncoAAZ3XAAGd6AABneoAAZ3sAAGd7gABnfAAAZ3yAAGd9AABnfYAAZ34AAGeCQABngwAAZ4PAAGeEgABnhUAAZ4YAAGeGwABnh4AAZ4hAAGeIwABnmIAAZ5kAAGeZgABnmgAAZ5rAAGebAABnm0AAZ5uAAGebwABnnEAAZ5zAAGedAABnnUAAZ53AAGeeAABnrcAAZ65AAGeuwABnr0AAZ7AAAGewQABnsIAAZ7DAAGexAABnsYAAZ7IAAGeyQABnsoAAZ7MAAGezQABnwwAAZ8OAAGfEQABnxMAAZ8WAAGfFwABnxgAAZ8ZAAGfGgABnxwAAZ8eAAGfHwABnyAAAZ8iAAGfIwABnzAAAZ8xAAGfMgABnzQAAZ9zAAGfdQABn3cAAZ95AAGffAABn30AAZ9+AAGffwABn4AAAZ+CAAGfhAABn4UAAZ+GAAGfiAABn4kAAZ/IAAGfygABn8wAAZ/OAAGf0QABn9IAAZ/TAAGf1AABn9UAAZ/XAAGf2QABn9oAAZ/bAAGf3QABn94AAaAdAAGgHwABoCEAAaAjAAGgJgABoCcAAaAoAAGgKQABoCoAAaAsAAGgLgABoC8AAaAwAAGgMgABoDMAAaByAAGgdAABoHYAAaB4AAGgewABoHwAAaB9AAGgfgABoH8AAaCBAAGggwABoIQAAaCFAAGghwABoIgAAaDHAAGgyQABoMsAAaDNAAGg0AABoNEAAaDSAAGg0wABoNQAAaDWAAGg2AABoNkAAaDaAAGg3AABoN0AAaECAAGhJgABoU0AAaFxAAGhdAABoXYAAaF4AAGhegABoXwAAaF+AAGhfwABoYIAAaGPAAGhngABoaAAAaGiAAGhpAABoaYAAaGoAAGhqgABoawAAaG7AAGhvgABocEAAaHEAAGhxwABocoAAaHNAAGh0AABodIAAaIRAAGiEwABohUAAaIXAAGiGgABohsAAaIcAAGiHQABoh4AAaIgAAGiIgABoiMAAaIkAAGiJgABoicAAaJmAAGiaAABomoAAaJsAAGibwABonAAAaJxAAGicgABonMAAaJ1AAGidwABongAAaJ5AAGiewABonwAAaK7AAGivQABor8AAaLBAAGixAABosUAAaLGAAGixwABosgAAaLKAAGizAABos0AAaLOAAGi0AABotEAAaMQAAGjEgABoxQAAaMWAAGjGQABoxoAAaMbAAGjHAABox0AAaMfAAGjIQABoyIAAaMjAAGjJQABoyYAAaNlAAGjZwABo2kAAaNrAAGjbgABo28AAaNwAAGjcQABo3IAAaN0AAGjdgABo3cAAaN4AAGjegABo3sAAaO6AAGjvAABo74AAaPAAAGjwwABo8QAAaPFAAGjxgABo8cAAaPJAAGjywABo8wAAaPNAAGjzwABo9AAAaQPAAGkEQABpBMAAaQVAAGkGAABpBkAAaQaAAGkGwABpBwAAaQeAAGkIAABpCEAAaQiAAGkJAABpCUAAaRwAAGkkwABpLMAAaTTAAGk1QABpNcAAaTZAAGk2wABpN4AAaTfAAGk4AABpOMAAaTkAAGk5gABpOcAAaTpAAGk7AABpO0AAaTuAAGk8QABpPIAAaT3AAGlBAABpQkAAaULAAGlDQABpRIAAaUVAAGlGAABpRoAAaU/AAGlYwABpYoAAaWuAAGlsQABpbMAAaW1AAGltwABpbkAAaW7AAGlvAABpb8AAaXMAAGl3QABpd8AAaXhAAGl4wABpeUAAaXnAAGl6QABpesAAaXtAAGl/gABpgEAAaYEAAGmBwABpgoAAaYNAAGmEAABphMAAaYWAAGmGAABplcAAaZZAAGmWwABpl0AAaZgAAGmYQABpmIAAaZjAAGmZAABpmYAAaZoAAGmaQABpmoAAaZsAAGmbQABpqwAAaauAAGmsAABprIAAaa1AAGmtgABprcAAaa4AAGmuQABprsAAaa9AAGmvgABpr8AAabBAAGmwgABpwEAAacDAAGnBgABpwgAAacLAAGnDAABpw0AAacOAAGnDwABpxEAAacTAAGnFAABpxUAAacXAAGnGAABpyUAAacmAAGnJwABpykAAadoAAGnagABp2wAAaduAAGncQABp3IAAadzAAGndAABp3UAAad3AAGneQABp3oAAad7AAGnfQABp34AAae9AAGnvwABp8EAAafDAAGnxgABp8cAAafIAAGnyQABp8oAAafMAAGnzgABp88AAafQAAGn0gABp9MAAagSAAGoFAABqBYAAagYAAGoGwABqBwAAagdAAGoHgABqB8AAaghAAGoIwABqCQAAaglAAGoJwABqCgAAahnAAGoaQABqGsAAahtAAGocAABqHEAAahyAAGocwABqHQAAah2AAGoeAABqHkAAah6AAGofAABqH0AAai8AAGovgABqMAAAajCAAGoxQABqMYAAajHAAGoyAABqMkAAajLAAGozQABqM4AAajPAAGo0QABqNIAAaj3AAGpGwABqUIAAalmAAGpaQABqWsAAaltAAGpbwABqXEAAalzAAGpdAABqXcAAamEAAGpkwABqZUAAamXAAGpmQABqZsAAamdAAGpnwABqaEAAamwAAGpswABqbYAAam5AAGpvAABqb8AAanCAAGpxQABqccAAaoGAAGqCAABqgoAAaoMAAGqDwABqhAAAaoRAAGqEgABqhMAAaoVAAGqFwABqhgAAaoZAAGqGwABqhwAAapbAAGqXQABql8AAaphAAGqZAABqmUAAapmAAGqZwABqmgAAapqAAGqbAABqm0AAapuAAGqcAABqnEAAaqwAAGqsgABqrQAAaq2AAGquQABqroAAaq7AAGqvAABqr0AAaq/AAGqwQABqsIAAarDAAGqxQABqsYAAasFAAGrBwABqwkAAasLAAGrDgABqw8AAasQAAGrEQABqxIAAasUAAGrFgABqxcAAasYAAGrGgABqxsAAataAAGrXAABq14AAatgAAGrYwABq2QAAatlAAGrZgABq2cAAatpAAGrawABq2wAAattAAGrbwABq3AAAauvAAGrsQABq7MAAau1AAGruAABq7kAAau6AAGruwABq7wAAau+AAGrwAABq8EAAavCAAGrxAABq8UAAawEAAGsBgABrAgAAawKAAGsDQABrA4AAawPAAGsEAABrBEAAawTAAGsFQABrBYAAawXAAGsGQABrBoAAaxlAAGsiAABrKgAAazIAAGsygABrMwAAazOAAGs0AABrNMAAazUAAGs1QABrNgAAazZAAGs2wABrNwAAazeAAGs4QABrOIAAazjAAGs5gABrOcAAazsAAGs+QABrP4AAa0AAAGtAgABrQcAAa0KAAGtDQABrQ8AAa00AAGtWAABrX8AAa2jAAGtpgABragAAa2qAAGtrAABra4AAa2wAAGtsQABrbQAAa3BAAGt0gABrdQAAa3WAAGt2AABrdoAAa3cAAGt3gABreAAAa3iAAGt8wABrfYAAa35AAGt/AABrf8AAa4CAAGuBQABrggAAa4LAAGuDQABrkwAAa5OAAGuUAABrlIAAa5VAAGuVgABrlcAAa5YAAGuWQABrlsAAa5dAAGuXgABrl8AAa5hAAGuYgABrqEAAa6jAAGupQABrqcAAa6qAAGuqwABrqwAAa6tAAGurgABrrAAAa6yAAGuswABrrQAAa62AAGutwABrvYAAa74AAGu+wABrv0AAa8AAAGvAQABrwIAAa8DAAGvBAABrwYAAa8IAAGvCQABrwoAAa8MAAGvDQABrxoAAa8bAAGvHAABrx4AAa9dAAGvXwABr2EAAa9jAAGvZgABr2cAAa9oAAGvaQABr2oAAa9sAAGvbgABr28AAa9wAAGvcgABr3MAAa+yAAGvtAABr7YAAa+4AAGvuwABr7wAAa+9AAGvvgABr78AAa/BAAGvwwABr8QAAa/FAAGvxwABr8gAAbAHAAGwCQABsAsAAbANAAGwEAABsBEAAbASAAGwEwABsBQAAbAWAAGwGAABsBkAAbAaAAGwHAABsB0AAbBcAAGwXgABsGAAAbBiAAGwZQABsGYAAbBnAAGwaAABsGkAAbBrAAGwbQABsG4AAbBvAAGwcQABsHIAAbCxAAGwswABsLUAAbC3AAGwugABsLsAAbC8AAGwvQABsL4AAbDAAAGwwgABsMMAAbDEAAGwxgABsMcAAbDsAAGxEAABsTcAAbFbAAGxXgABsWAAAbFiAAGxZAABsWYAAbFoAAGxaQABsWwAAbF5AAGxiAABsYoAAbGMAAGxjgABsZAAAbGSAAGxlAABsZYAAbGlAAGxqAABsasAAbGuAAGxsQABsbQAAbG3AAGxugABsbwAAbH7AAGx/QABsf8AAbIBAAGyBAABsgUAAbIGAAGyBwABsggAAbIKAAGyDAABsg0AAbIOAAGyEAABshEAAbJQAAGyUgABslQAAbJWAAGyWQABsloAAbJbAAGyXAABsl0AAbJfAAGyYQABsmIAAbJjAAGyZQABsmYAAbKlAAGypwABsqkAAbKrAAGyrgABsq8AAbKwAAGysQABsrIAAbK0AAGytgABsrcAAbK4AAGyugABsrsAAbL6AAGy/AABsv8AAbMBAAGzBAABswUAAbMGAAGzBwABswgAAbMKAAGzDAABsw0AAbMOAAGzEAABsxEAAbNQAAGzUgABs1QAAbNWAAGzWQABs1oAAbNbAAGzXAABs10AAbNfAAGzYQABs2IAAbNjAAGzZQABs2YAAbOlAAGzpwABs6kAAbOrAAGzrgABs68AAbOwAAGzsQABs7IAAbO0AAGztgABs7cAAbO4AAGzugABs7sAAbP6AAGz/AABs/8AAbQBAAG0BAABtAUAAbQGAAG0BwABtAgAAbQKAAG0DAABtA0AAbQOAAG0EAABtBEAAbRcAAG0fwABtJ8AAbS/AAG0wQABtMMAAbTFAAG0xwABtMoAAbTLAAG0zAABtM8AAbTQAAG00gABtNMAAbTVAAG02AABtNkAAbTaAAG03QABtN4AAbTjAAG08AABtPUAAbT3AAG0+QABtP4AAbUBAAG1BAABtQYAAbUrAAG1TwABtXYAAbWaAAG1nQABtZ8AAbWhAAG1owABtaUAAbWnAAG1qAABtasAAbW4AAG1yQABtcsAAbXNAAG1zwABtdEAAbXTAAG11QABtdcAAbXZAAG16gABte0AAbXwAAG18wABtfYAAbX5AAG1/AABtf8AAbYCAAG2BAABtkMAAbZFAAG2RwABtkkAAbZMAAG2TQABtk4AAbZPAAG2UAABtlIAAbZUAAG2VQABtlYAAbZYAAG2WQABtpgAAbaaAAG2nAABtp4AAbahAAG2ogABtqMAAbakAAG2pQABtqcAAbapAAG2qgABtqsAAbatAAG2rgABtu0AAbbvAAG28gABtvQAAbb3AAG2+AABtvkAAbb6AAG2+wABtv0AAbb/AAG3AAABtwEAAbcDAAG3BAABtxEAAbcSAAG3EwABtxUAAbdUAAG3VgABt1gAAbdaAAG3XQABt14AAbdfAAG3YAABt2EAAbdjAAG3ZQABt2YAAbdnAAG3aQABt2oAAbepAAG3qwABt60AAbevAAG3sgABt7MAAbe0AAG3tQABt7YAAbe4AAG3ugABt7sAAbe8AAG3vgABt78AAbf+AAG4AAABuAIAAbgEAAG4BwABuAgAAbgJAAG4CgABuAsAAbgNAAG4DwABuBAAAbgRAAG4EwABuBQAAbhTAAG4VQABuFcAAbhZAAG4XAABuF0AAbheAAG4XwABuGAAAbhiAAG4ZAABuGUAAbhmAAG4aAABuGkAAbioAAG4qgABuKwAAbiuAAG4sQABuLIAAbizAAG4tAABuLUAAbi3AAG4uQABuLoAAbi7AAG4vQABuL4AAbjjAAG5BwABuS4AAblSAAG5VQABuVcAAblZAAG5WwABuV0AAblfAAG5YAABuWMAAblwAAG5fwABuYEAAbmDAAG5hQABuYcAAbmJAAG5iwABuY0AAbmcAAG5nwABuaIAAbmlAAG5qAABuasAAbmuAAG5sQABubMAAbnyAAG59AABufYAAbn4AAG5+wABufwAAbn9AAG5/gABuf8AAboBAAG6AwABugQAAboFAAG6BwABuggAAbpHAAG6SQABuksAAbpNAAG6UAABulEAAbpSAAG6UwABulQAAbpWAAG6WAABulkAAbpaAAG6XAABul0AAbqcAAG6ngABuqAAAbqiAAG6pQABuqYAAbqnAAG6qAABuqkAAbqrAAG6rQABuq4AAbqvAAG6sQABurIAAbrxAAG68wABuvYAAbr4AAG6+wABuvwAAbr9AAG6/gABuv8AAbsBAAG7AwABuwQAAbsFAAG7BwABuwgAAbtHAAG7SQABu0sAAbtNAAG7UAABu1EAAbtSAAG7UwABu1QAAbtWAAG7WAABu1kAAbtaAAG7XAABu10AAbucAAG7ngABu6AAAbuiAAG7pQABu6YAAbunAAG7qAABu6kAAburAAG7rQABu64AAbuvAAG7sQABu7IAAbvxAAG78wABu/YAAbv4AAG7+wABu/wAAbv9AAG7/gABu/8AAbwBAAG8AwABvAQAAbwFAAG8BwABvAgAAbxTAAG8dgABvJYAAby2AAG8uAABvLoAAby8AAG8vgABvMEAAbzCAAG8wwABvMYAAbzHAAG8yQABvMoAAbzMAAG8zwABvNAAAbzRAAG81AABvNUAAbzaAAG85wABvOwAAbzuAAG88AABvPUAAbz4AAG8+wABvP0AAb0iAAG9RgABvW0AAb2RAAG9lAABvZYAAb2YAAG9mgABvZwAAb2eAAG9nwABvaIAAb2vAAG9wAABvcIAAb3EAAG9xgABvcgAAb3KAAG9zAABvc4AAb3QAAG94QABveQAAb3nAAG96gABve0AAb3wAAG98wABvfYAAb35AAG9+wABvjoAAb48AAG+PgABvkAAAb5DAAG+RAABvkUAAb5GAAG+RwABvkkAAb5LAAG+TAABvk0AAb5PAAG+UAABvo8AAb6RAAG+kwABvpUAAb6YAAG+mQABvpoAAb6bAAG+nAABvp4AAb6gAAG+oQABvqIAAb6kAAG+pQABvuQAAb7mAAG+6QABvusAAb7uAAG+7wABvvAAAb7xAAG+8gABvvQAAb72AAG+9wABvvgAAb76AAG++wABvwgAAb8JAAG/CgABvwwAAb9LAAG/TQABv08AAb9RAAG/VAABv1UAAb9WAAG/VwABv1gAAb9aAAG/XAABv10AAb9eAAG/YAABv2EAAb+gAAG/ogABv6QAAb+mAAG/qQABv6oAAb+rAAG/rAABv60AAb+vAAG/sQABv7IAAb+zAAG/tQABv7YAAb/1AAG/9wABv/kAAb/7AAG//gABv/8AAcAAAAHAAQABwAIAAcAEAAHABgABwAcAAcAIAAHACgABwAsAAcBKAAHATAABwE8AAcBRAAHAVAABwFUAAcBWAAHAVwABwFgAAcBaAAHAXAABwF0AAcBeAAHAYAABwGEAAcBvAAHArgABwLAAAcCyAAHAtAABwLcAAcC4AAHAuQABwLoAAcC7AAHAvQABwL8AAcDAAAHAwQABwMMAAcDEAAHA6QABwQ0AAcE0AAHBWAABwVsAAcFdAAHBXwABwWEAAcFjAAHBZQABwWYAAcFpAAHBdgABwYUAAcGHAAHBiQABwYsAAcGNAAHBjwABwZEAAcGTAAHBogABwaUAAcGoAAHBqwABwa4AAcGxAAHBtAABwbcAAcG5AAHB+AABwfoAAcH8AAHB/gABwgEAAcICAAHCAwABwgQAAcIFAAHCBwABwgkAAcIKAAHCCwABwg0AAcIOAAHCTQABwk8AAcJRAAHCUwABwlYAAcJXAAHCWAABwlkAAcJaAAHCXAABwl4AAcJfAAHCYAABwmIAAcJjAAHCogABwqQAAcKmAAHCqAABwqsAAcKsAAHCrQABwq4AAcKvAAHCsQABwrMAAcK0AAHCtQABwrcAAcK4AAHC9wABwvkAAcL7AAHC/QABwwAAAcMBAAHDAgABwwMAAcMEAAHDBgABwwgAAcMJAAHDCgABwwwAAcMNAAHDTAABw04AAcNQAAHDUgABw1UAAcNWAAHDVwABw1gAAcNZAAHDWwABw10AAcNeAAHDXwABw2EAAcNiAAHDoQABw6MAAcOlAAHDpwABw6oAAcOrAAHDrAABw60AAcOuAAHDsAABw7IAAcOzAAHDtAABw7YAAcO3AAHD9gABw/gAAcP6AAHD/AABw/8AAcQAAAHEAQABxAIAAcQDAAHEBQABxAcAAcQIAAHECQABxAsAAcQMAAHEVwABxHoAAcSaAAHEugABxLwAAcS+AAHEwAABxMIAAcTFAAHExgABxMcAAcTKAAHEywABxM0AAcTOAAHE0AABxNMAAcTUAAHE1QABxNgAAcTZAAHE3gABxOsAAcTwAAHE8gABxPQAAcT5AAHE/AABxP8AAcUBAAHFJgABxUoAAcVxAAHFlQABxZgAAcWaAAHFnAABxZ4AAcWgAAHFogABxaMAAcWmAAHFswABxcQAAcXGAAHFyAABxcoAAcXMAAHFzgABxdAAAcXSAAHF1AABxeUAAcXoAAHF6wABxe4AAcXxAAHF9AABxfcAAcX6AAHF/QABxf8AAcY+AAHGQAABxkIAAcZEAAHGRwABxkgAAcZJAAHGSgABxksAAcZNAAHGTwABxlAAAcZRAAHGUwABxlQAAcaTAAHGlQABxpcAAcaZAAHGnAABxp0AAcaeAAHGnwABxqAAAcaiAAHGpAABxqUAAcamAAHGqAABxqkAAcboAAHG6gABxu0AAcbvAAHG8gABxvMAAcb0AAHG9QABxvYAAcb4AAHG+gABxvsAAcb8AAHG/gABxv8AAccMAAHHDQABxw4AAccQAAHHTwABx1EAAcdTAAHHVQABx1gAAcdZAAHHWgABx1sAAcdcAAHHXgABx2AAAcdhAAHHYgABx2QAAcdlAAHHpAABx6YAAceoAAHHqgABx60AAceuAAHHrwABx7AAAcexAAHHswABx7UAAce2AAHHtwABx7kAAce6AAHH+QABx/sAAcf9AAHH/wAByAIAAcgDAAHIBAAByAUAAcgGAAHICAAByAoAAcgLAAHIDAAByA4AAcgPAAHITgAByFAAAchSAAHIVAAByFcAAchYAAHIWQAByFoAAchbAAHIXQAByF8AAchgAAHIYQAByGMAAchkAAHIowAByKUAAcinAAHIqQAByKwAAcitAAHIrgAByK8AAciwAAHIsgAByLQAAci1AAHItgAByLgAAci5AAHI3gAByQIAAckpAAHJTQAByVAAAclSAAHJVAAByVYAAclYAAHJWgAByVsAAcleAAHJawAByXoAAcl8AAHJfgAByYAAAcmCAAHJhAAByYYAAcmIAAHJlwAByZoAAcmdAAHJoAAByaMAAcmmAAHJqQAByawAAcmuAAHJ7QABye8AAcnxAAHJ8wAByfYAAcn3AAHJ+AAByfkAAcn6AAHJ/AAByf4AAcn/AAHKAAABygIAAcoDAAHKQgABykQAAcpGAAHKSAAByksAAcpMAAHKTQAByk4AAcpPAAHKUQABylMAAcpUAAHKVQABylcAAcpYAAHKlwABypkAAcqbAAHKnQAByqAAAcqhAAHKogAByqMAAcqkAAHKpgAByqgAAcqpAAHKqgAByqwAAcqtAAHK7AAByu4AAcrwAAHK8gAByvUAAcr2AAHK9wAByvgAAcr5AAHK+wAByv0AAcr+AAHK/wABywEAAcsCAAHLQQABy0MAActFAAHLRwABy0oAActLAAHLTAABy00AActOAAHLUAABy1IAActTAAHLVAABy1YAActXAAHLlgABy5gAAcuaAAHLnAABy58AAcugAAHLoQABy6IAAcujAAHLpQABy6cAAcuoAAHLqQABy6sAAcusAAHL6wABy+0AAcvvAAHL8QABy/QAAcv1AAHL9gABy/cAAcv4AAHL+gABy/wAAcv9AAHL/gABzAAAAcwBAAHMTAABzG8AAcyPAAHMrwABzLEAAcyzAAHMtQABzLcAAcy6AAHMuwABzLwAAcy/AAHMwAABzMIAAczDAAHMxQABzMgAAczJAAHMygABzM0AAczOAAHM0wABzOAAAczlAAHM5wABzOkAAczuAAHM8QABzPQAAcz2AAHNGwABzT8AAc1mAAHNigABzY0AAc2PAAHNkQABzZMAAc2VAAHNlwABzZgAAc2bAAHNqAABzbkAAc27AAHNvQABzb8AAc3BAAHNwwABzcUAAc3HAAHNyQABzdoAAc3dAAHN4AABzeMAAc3mAAHN6QABzewAAc3vAAHN8gABzfQAAc4zAAHONQABzjcAAc45AAHOPAABzj0AAc4+AAHOPwABzkAAAc5CAAHORAABzkUAAc5GAAHOSAABzkkAAc6IAAHOigABzowAAc6OAAHOkQABzpIAAc6TAAHOlAABzpUAAc6XAAHOmQABzpoAAc6bAAHOnQABzp4AAc7dAAHO3wABzuIAAc7kAAHO5wABzugAAc7pAAHO6gABzusAAc7tAAHO7wABzvAAAc7xAAHO8wABzvQAAc8BAAHPAgABzwMAAc8FAAHPRAABz0YAAc9IAAHPSgABz00AAc9OAAHPTwABz1AAAc9RAAHPUwABz1UAAc9WAAHPVwABz1kAAc9aAAHPmQABz5sAAc+dAAHPnwABz6IAAc+jAAHPpAABz6UAAc+mAAHPqAABz6oAAc+rAAHPrAABz64AAc+vAAHP7gABz/AAAc/yAAHP9AABz/cAAc/4AAHP+QABz/oAAc/7AAHP/QABz/8AAdAAAAHQAQAB0AMAAdAEAAHQQwAB0EUAAdBHAAHQSQAB0EwAAdBNAAHQTgAB0E8AAdBQAAHQUgAB0FQAAdBVAAHQVgAB0FgAAdBZAAHQmAAB0JoAAdCcAAHQngAB0KEAAdCiAAHQowAB0KQAAdClAAHQpwAB0KkAAdCqAAHQqwAB0K0AAdCuAAHQ0wAB0PcAAdEeAAHRQgAB0UUAAdFHAAHRSQAB0UsAAdFNAAHRTwAB0VAAAdFTAAHRYAAB0W8AAdFxAAHRcwAB0XUAAdF3AAHReQAB0XsAAdF9AAHRjAAB0Y8AAdGSAAHRlQAB0ZgAAdGbAAHRngAB0aEAAdGjAAHR4gAB0eQAAdHmAAHR6AAB0esAAdHsAAHR7QAB0e4AAdHvAAHR8QAB0fMAAdH0AAHR9QAB0fcAAdH4AAHSNwAB0jkAAdI7AAHSPQAB0kAAAdJBAAHSQgAB0kMAAdJEAAHSRgAB0kgAAdJJAAHSSgAB0kwAAdJNAAHSjAAB0o4AAdKQAAHSkgAB0pUAAdKWAAHSlwAB0pgAAdKZAAHSmwAB0p0AAdKeAAHSnwAB0qEAAdKiAAHS4QAB0uMAAdLlAAHS5wAB0uoAAdLrAAHS7AAB0u0AAdLuAAHS8AAB0vIAAdLzAAHS9AAB0vYAAdL3AAHTNgAB0zgAAdM6AAHTPAAB0z8AAdNAAAHTQQAB00IAAdNDAAHTRQAB00cAAdNIAAHTSQAB00sAAdNMAAHTiwAB040AAdOPAAHTkQAB05QAAdOVAAHTlgAB05cAAdOYAAHTmgAB05wAAdOdAAHTngAB06AAAdOhAAHT4AAB0+IAAdPkAAHT5gAB0+kAAdPqAAHT6wAB0+wAAdPtAAHT7wAB0/EAAdPyAAHT8wAB0/UAAdP2AAHT/wAB1AAAAdQCAAHUQQAB1EMAAdRFAAHURwAB1EoAAdRLAAHUTAAB1E0AAdROAAHUUAAB1FIAAdRTAAHUVAAB1FYAAdRXAAHUlgAB1JgAAdSaAAHUnAAB1J8AAdSgAAHUoQAB1KIAAdSjAAHUpQAB1KcAAdSoAAHUqQAB1KsAAdSsAAHU6wAB1O0AAdTwAAHU8gAB1PUAAdT2AAHU9wAB1PgAAdT5AAHU+wAB1P0AAdT+AAHU/wAB1QEAAdUCAAHVCwAB1QwAAdUOAAHVTQAB1U8AAdVRAAHVUwAB1VYAAdVXAAHVWAAB1VkAAdVaAAHVXAAB1V4AAdVfAAHVYAAB1WIAAdVjAAHVogAB1aQAAdWmAAHVqAAB1asAAdWsAAHVrQAB1a4AAdWvAAHVsQAB1bMAAdW0AAHVtQAB1bcAAdW4AAHV9wAB1fkAAdX8AAHV/gAB1gEAAdYCAAHWAwAB1gQAAdYFAAHWBwAB1gkAAdYKAAHWCwAB1g0AAdYOAAHWWQAB1nwAAdacAAHWvAAB1r4AAdbAAAHWwgAB1sQAAdbGAAHWxwAB1sgAAdbLAAHWzAAB1s4AAdbPAAHW0QAB1tMAAdbUAAHW1QAB1tgAAdbZAAHW3gAB1usAAdbwAAHW8gAB1vQAAdb5AAHW/AAB1v8AAdcBAAHXJgAB10oAAddxAAHXlQAB15gAAdeaAAHXnAAB154AAdegAAHXogAB16MAAdemAAHXswAB18QAAdfGAAHXyAAB18oAAdfMAAHXzgAB19AAAdfSAAHX1AAB1+UAAdfoAAHX6wAB1+4AAdfxAAHX9AAB1/cAAdf6AAHX/QAB1/8AAdg+AAHYQAAB2EIAAdhEAAHYRwAB2EgAAdhJAAHYSgAB2EsAAdhNAAHYTwAB2FAAAdhRAAHYUwAB2FQAAdiTAAHYlQAB2JcAAdiZAAHYnAAB2J0AAdieAAHYnwAB2KAAAdiiAAHYpAAB2KUAAdimAAHYqAAB2KkAAdjoAAHY6gAB2O0AAdjvAAHY8gAB2PMAAdj0AAHY9QAB2PYAAdj4AAHY+gAB2PsAAdj8AAHY/gAB2P8AAdkMAAHZDQAB2Q4AAdkQAAHZTwAB2VEAAdlTAAHZVQAB2VgAAdlZAAHZWgAB2VsAAdlcAAHZXgAB2WAAAdlhAAHZYgAB2WQAAdllAAHZpAAB2aYAAdmoAAHZqgAB2a0AAdmuAAHZrwAB2bAAAdmxAAHZswAB2bUAAdm2AAHZtwAB2bkAAdm6AAHZ+QAB2fsAAdn9AAHZ/wAB2gIAAdoDAAHaBAAB2gUAAdoGAAHaCAAB2goAAdoLAAHaDAAB2g4AAdoPAAHaTgAB2lAAAdpSAAHaVAAB2lcAAdpYAAHaWQAB2loAAdpbAAHaXQAB2l8AAdpgAAHaYQAB2mMAAdpkAAHaowAB2qUAAdqnAAHaqQAB2qwAAdqtAAHargAB2q8AAdqwAAHasgAB2rQAAdq1AAHatgAB2rgAAdq5AAHa3gAB2wIAAdspAAHbTQAB21AAAdtSAAHbVAAB21YAAdtYAAHbWgAB21sAAdteAAHbawAB23oAAdt8AAHbfgAB24AAAduCAAHbhAAB24YAAduIAAHblwAB25oAAdudAAHboAAB26MAAdumAAHbqQAB26wAAduuAAHb7QAB2+8AAdvxAAHb8wAB2/YAAdv3AAHb+AAB2/kAAdv6AAHb/AAB2/4AAdv/AAHcAAAB3AIAAdwDAAHcQgAB3EQAAdxGAAHcSAAB3EsAAdxMAAHcTQAB3E4AAdxPAAHcUQAB3FMAAdxUAAHcVQAB3FcAAdxYAAHclwAB3JkAAdybAAHcnQAB3KAAAdyhAAHcogAB3KMAAdykAAHcpgAB3KgAAdypAAHcqgAB3KwAAdytAAHc7AAB3O4AAdzxAAHc8wAB3PYAAdz3AAHc+AAB3PkAAdz6AAHc/AAB3P4AAdz/AAHdAAAB3QIAAd0DAAHdQgAB3UQAAd1GAAHdSAAB3UsAAd1MAAHdTQAB3U4AAd1PAAHdUQAB3VMAAd1UAAHdVQAB3VcAAd1YAAHdlwAB3ZkAAd2bAAHdnQAB3aAAAd2hAAHdogAB3aMAAd2kAAHdpgAB3agAAd2pAAHdqgAB3awAAd2tAAHd7AAB3e4AAd3wAAHd8gAB3fUAAd32AAHd9wAB3fgAAd35AAHd+wAB3f0AAd3+AAHd/wAB3gEAAd4CAAHeTQAB3nAAAd6QAAHesAAB3rIAAd60AAHetgAB3rgAAd66AAHeuwAB3rwAAd6/AAHewAAB3sIAAd7DAAHexQAB3scAAd7IAAHeyQAB3swAAd7NAAHe0gAB3t8AAd7kAAHe5gAB3ugAAd7tAAHe8AAB3vMAAd71AAHfGgAB3z4AAd9lAAHfiQAB34wAAd+OAAHfkAAB35IAAd+UAAHflgAB35cAAd+aAAHfpwAB37gAAd+6AAHfvAAB374AAd/AAAHfwgAB38QAAd/GAAHfyAAB39kAAd/cAAHf3wAB3+IAAd/lAAHf6AAB3+sAAd/uAAHf8QAB3/MAAeAyAAHgNAAB4DYAAeA4AAHgOwAB4DwAAeA9AAHgPgAB4D8AAeBBAAHgQwAB4EQAAeBFAAHgRwAB4EgAAeCHAAHgiQAB4IsAAeCNAAHgkAAB4JEAAeCSAAHgkwAB4JQAAeCWAAHgmAAB4JkAAeCaAAHgnAAB4J0AAeDcAAHg3gAB4OEAAeDjAAHg5gAB4OcAAeDoAAHg6QAB4OoAAeDsAAHg7gAB4O8AAeDwAAHg8gAB4PMAAeEAAAHhAQAB4QIAAeEEAAHhQwAB4UUAAeFHAAHhSQAB4UwAAeFNAAHhTgAB4U8AAeFQAAHhUgAB4VQAAeFVAAHhVgAB4VgAAeFZAAHhmAAB4ZoAAeGcAAHhngAB4aEAAeGiAAHhowAB4aQAAeGlAAHhpwAB4akAAeGqAAHhqwAB4a0AAeGuAAHh7QAB4e8AAeHxAAHh8wAB4fYAAeH3AAHh+AAB4fkAAeH6AAHh/AAB4f4AAeH/AAHiAAAB4gIAAeIDAAHiQgAB4kQAAeJGAAHiSAAB4ksAAeJMAAHiTQAB4k4AAeJPAAHiUQAB4lMAAeJUAAHiVQAB4lcAAeJYAAHilwAB4pkAAeKbAAHinQAB4qAAAeKhAAHiogAB4qMAAeKkAAHipgAB4qgAAeKpAAHiqgAB4qwAAeKtAAHi0gAB4vYAAeMdAAHjQQAB40QAAeNGAAHjSAAB40oAAeNMAAHjTgAB408AAeNSAAHjXwAB424AAeNwAAHjcgAB43QAAeN2AAHjeAAB43oAAeN8AAHjiwAB444AAeORAAHjlAAB45cAAeOaAAHjnQAB46AAAeOiAAHj4QAB4+MAAePmAAHj6AAB4+sAAePsAAHj7QAB4+4AAePvAAHj8QAB4/MAAeP0AAHj9QAB4/cAAeP4AAHkNwAB5DkAAeQ7AAHkPQAB5EAAAeRBAAHkQgAB5EMAAeREAAHkRgAB5EgAAeRJAAHkSgAB5EwAAeRNAAHkjAAB5I4AAeSQAAHkkgAB5JUAAeSWAAHklwAB5JgAAeSZAAHkmwAB5J0AAeSeAAHknwAB5KEAAeSiAAHk4QAB5OMAAeTmAAHk6AAB5OsAAeTsAAHk7QAB5O4AAeTvAAHk8QAB5PMAAeT0AAHk9QAB5PcAAeT4AAHlNwAB5TkAAeU7AAHlPQAB5UAAAeVBAAHlQgAB5UMAAeVEAAHlRgAB5UgAAeVJAAHlSgAB5UwAAeVNAAHljAAB5Y4AAeWQAAHlkgAB5ZUAAeWWAAHllwAB5ZgAAeWZAAHlmwAB5Z0AAeWeAAHlnwAB5aEAAeWiAAHl4QAB5eMAAeXlAAHl5wAB5eoAAeXrAAHl7AAB5e0AAeXuAAHl8AAB5fIAAeXzAAHl9AAB5fYAAeX3AAHmQgAB5mUAAeaFAAHmpQAB5qcAAeapAAHmqwAB5q0AAeavAAHmsAAB5rEAAea0AAHmtQAB5rcAAea4AAHmugAB5rwAAea9AAHmvgAB5sEAAebCAAHmxwAB5tQAAebZAAHm2wAB5t0AAebiAAHm5QAB5ugAAebqAAHnDwAB5zMAAedaAAHnfgAB54EAAeeDAAHnhQAB54cAAeeJAAHniwAB54wAAeePAAHnnAAB560AAeevAAHnsQAB57MAAee1AAHntwAB57kAAee7AAHnvQAB584AAefRAAHn1AAB59cAAefaAAHn3QAB5+AAAefjAAHn5gAB5+gAAegnAAHoKQAB6CsAAegtAAHoMAAB6DEAAegyAAHoMwAB6DQAAeg2AAHoOAAB6DkAAeg6AAHoPAAB6D0AAeh8AAHofgAB6IAAAeiCAAHohQAB6IYAAeiHAAHoiAAB6IkAAeiLAAHojQAB6I4AAeiPAAHokQAB6JIAAejRAAHo0wAB6NYAAejYAAHo2wAB6NwAAejdAAHo3gAB6N8AAejhAAHo4wAB6OQAAejlAAHo5wAB6OgAAej1AAHo9gAB6PcAAej5AAHpOAAB6ToAAek8AAHpPgAB6UEAAelCAAHpQwAB6UQAAelFAAHpRwAB6UkAAelKAAHpSwAB6U0AAelOAAHpjQAB6Y8AAemRAAHpkwAB6ZYAAemXAAHpmAAB6ZkAAemaAAHpnAAB6Z4AAemfAAHpoAAB6aIAAemjAAHp4gAB6eQAAenmAAHp6AAB6esAAensAAHp7QAB6e4AAenvAAHp8QAB6fMAAen0AAHp9QAB6fcAAen4AAHqNwAB6jkAAeo7AAHqPQAB6kAAAepBAAHqQgAB6kMAAepEAAHqRgAB6kgAAepJAAHqSgAB6kwAAepNAAHqjAAB6o4AAeqQAAHqkgAB6pUAAeqWAAHqlwAB6pgAAeqZAAHqmwAB6p0AAeqeAAHqnwAB6qEAAeqiAAHqxwAB6usAAesSAAHrNgAB6zkAAes7AAHrPQAB6z8AAetBAAHrQwAB60QAAetHAAHrVAAB62MAAetlAAHrZwAB62kAAetrAAHrbQAB628AAetxAAHrgAAB64MAAeuGAAHriQAB64wAAeuPAAHrkgAB65UAAeuXAAHr1gAB69gAAevaAAHr3AAB698AAevgAAHr4QAB6+IAAevjAAHr5QAB6+cAAevoAAHr6QAB6+sAAevsAAHsKwAB7C0AAewvAAHsMQAB7DQAAew1AAHsNgAB7DcAAew4AAHsOgAB7DwAAew9AAHsPgAB7EAAAexBAAHsgAAB7IIAAeyEAAHshgAB7IkAAeyKAAHsiwAB7IwAAeyNAAHsjwAB7JEAAeySAAHskwAB7JUAAeyWAAHs1QAB7NcAAezZAAHs2wAB7N4AAezfAAHs4AAB7OEAAeziAAHs5AAB7OYAAeznAAHs6AAB7OoAAezrAAHtKgAB7SwAAe0uAAHtMAAB7TMAAe00AAHtNQAB7TYAAe03AAHtOQAB7TsAAe08AAHtPQAB7T8AAe1AAAHtfwAB7YEAAe2DAAHthQAB7YgAAe2JAAHtigAB7YsAAe2MAAHtjgAB7ZAAAe2RAAHtkgAB7ZQAAe2VAAHt1AAB7dYAAe3YAAHt2gAB7d0AAe3eAAHt3wAB7eAAAe3hAAHt4wAB7eUAAe3mAAHt5wAB7ekAAe3qAAHuNQAB7lgAAe54AAHumAAB7poAAe6cAAHungAB7qAAAe6iAAHuowAB7qQAAe6nAAHuqAAB7qoAAe6rAAHurQAB7q8AAe6wAAHusQAB7rQAAe61AAHuvgAB7ssAAe7QAAHu0gAB7tQAAe7ZAAHu3AAB7t8AAe7hAAHvBgAB7yoAAe9RAAHvdQAB73gAAe96AAHvfAAB734AAe+AAAHvggAB74MAAe+GAAHvkwAB76QAAe+mAAHvqAAB76oAAe+sAAHvrgAB77AAAe+yAAHvtAAB78UAAe/IAAHvywAB784AAe/RAAHv1AAB79cAAe/aAAHv3QAB798AAfAeAAHwIAAB8CIAAfAkAAHwJwAB8CgAAfApAAHwKgAB8CsAAfAtAAHwLwAB8DAAAfAxAAHwMwAB8DQAAfBzAAHwdQAB8HcAAfB5AAHwfAAB8H0AAfB+AAHwfwAB8IAAAfCCAAHwhAAB8IUAAfCGAAHwiAAB8IkAAfDIAAHwygAB8M0AAfDPAAHw0gAB8NMAAfDUAAHw1QAB8NYAAfDYAAHw2gAB8NsAAfDcAAHw3gAB8N8AAfDsAAHw7QAB8O4AAfDwAAHxLwAB8TEAAfEzAAHxNQAB8TgAAfE5AAHxOgAB8TsAAfE8AAHxPgAB8UAAAfFBAAHxQgAB8UQAAfFFAAHxhAAB8YYAAfGIAAHxigAB8Y0AAfGOAAHxjwAB8ZAAAfGRAAHxkwAB8ZUAAfGWAAHxlwAB8ZkAAfGaAAHx2QAB8dsAAfHdAAHx3wAB8eIAAfHjAAHx5AAB8eUAAfHmAAHx6AAB8eoAAfHrAAHx7AAB8e4AAfHvAAHyLgAB8jAAAfIyAAHyNAAB8jcAAfI4AAHyOQAB8joAAfI7AAHyPQAB8j8AAfJAAAHyQQAB8kMAAfJEAAHygwAB8oUAAfKHAAHyiQAB8owAAfKNAAHyjgAB8o8AAfKQAAHykgAB8pQAAfKVAAHylgAB8pgAAfKZAAHyvgAB8uIAAfMJAAHzLQAB8zAAAfMyAAHzNAAB8zYAAfM4AAHzOgAB8zsAAfM+AAHzSwAB81oAAfNcAAHzXgAB82AAAfNiAAHzZAAB82YAAfNoAAHzdwAB83oAAfN9AAHzgAAB84MAAfOGAAHziQAB84wAAfOOAAHzzQAB888AAfPRAAHz0wAB89YAAfPXAAHz2AAB89kAAfPaAAHz3AAB894AAfPfAAHz4AAB8+IAAfPjAAH0IgAB9CQAAfQmAAH0KAAB9CsAAfQsAAH0LQAB9C4AAfQvAAH0MQAB9DMAAfQ0AAH0NQAB9DcAAfQ4AAH0dwAB9HkAAfR7AAH0fQAB9IAAAfSBAAH0ggAB9IMAAfSEAAH0hgAB9IgAAfSJAAH0igAB9IwAAfSNAAH0zAAB9M4AAfTRAAH00wAB9NYAAfTXAAH02AAB9NkAAfTaAAH03AAB9N4AAfTfAAH04AAB9OIAAfTjAAH1IgAB9SQAAfUmAAH1KAAB9SsAAfUsAAH1LQAB9S4AAfUvAAH1MQAB9TMAAfU0AAH1NQAB9TcAAfU4AAH1dwAB9XkAAfV7AAH1fQAB9YAAAfWBAAH1ggAB9YMAAfWEAAH1hgAB9YgAAfWJAAH1igAB9YwAAfWNAAH1zAAB9c4AAfXQAAH10gAB9dUAAfXWAAH11wAB9dgAAfXZAAH12wAB9d0AAfXeAAH13wAB9eEAAfXiAAH2LQAB9lAAAfZwAAH2kAAB9pIAAfaUAAH2lgAB9pgAAfaaAAH2mwAB9pwAAfafAAH2oAAB9qIAAfajAAH2pQAB9qcAAfaoAAH2qQAB9qwAAfatAAH2sgAB9r8AAfbEAAH2xgAB9sgAAfbNAAH20AAB9tMAAfbVAAH2+gAB9x4AAfdFAAH3aQAB92wAAfduAAH3cAAB93IAAfd0AAH3dgAB93cAAfd6AAH3hwAB95gAAfeaAAH3nAAB954AAfegAAH3ogAB96QAAfemAAH3qAAB97kAAfe8AAH3vwAB98IAAffFAAH3yAAB98sAAffOAAH30QAB99MAAfgSAAH4FAAB+BYAAfgYAAH4GwAB+BwAAfgdAAH4HgAB+B8AAfghAAH4IwAB+CQAAfglAAH4JwAB+CgAAfhnAAH4aQAB+GsAAfhtAAH4cAAB+HEAAfhyAAH4cwAB+HQAAfh2AAH4eAAB+HkAAfh6AAH4fAAB+H0AAfi8AAH4vgAB+MEAAfjDAAH4xgAB+McAAfjIAAH4yQAB+MoAAfjMAAH4zgAB+M8AAfjQAAH40gAB+NMAAfjgAAH44QAB+OIAAfjkAAH5IwAB+SUAAfknAAH5KQAB+SwAAfktAAH5LgAB+S8AAfkwAAH5MgAB+TQAAfk1AAH5NgAB+TgAAfk5AAH5eAAB+XoAAfl8AAH5fgAB+YEAAfmCAAH5gwAB+YQAAfmFAAH5hwAB+YkAAfmKAAH5iwAB+Y0AAfmOAAH5zQAB+c8AAfnRAAH50wAB+dYAAfnXAAH52AAB+dkAAfnaAAH53AAB+d4AAfnfAAH54AAB+eIAAfnjAAH6IgAB+iQAAfomAAH6KAAB+isAAfosAAH6LQAB+i4AAfovAAH6MQAB+jMAAfo0AAH6NQAB+jcAAfo4AAH6dwAB+nkAAfp7AAH6fQAB+oAAAfqBAAH6ggAB+oMAAfqEAAH6hgAB+ogAAfqJAAH6igAB+owAAfqNAAH6sgAB+tYAAfr9AAH7IQAB+yQAAfsmAAH7KAAB+yoAAfssAAH7LgAB+y8AAfsyAAH7PwAB+04AAftQAAH7UgAB+1QAAftWAAH7WAAB+1oAAftcAAH7awAB+24AAftxAAH7dAAB+3cAAft6AAH7fQAB+4AAAfuCAAH7wQAB+8MAAfvGAAH7yAAB+8sAAfvMAAH7zQAB+84AAfvPAAH70QAB+9MAAfvUAAH71QAB+9cAAfvYAAH72wAB/BoAAfwcAAH8HgAB/CAAAfwjAAH8JAAB/CUAAfwmAAH8JwAB/CkAAfwrAAH8LAAB/C0AAfwvAAH8MAAB/G8AAfxxAAH8cwAB/HUAAfx4AAH8eQAB/HoAAfx7AAH8fAAB/H4AAfyAAAH8gQAB/IIAAfyEAAH8hQAB/MQAAfzGAAH8yQAB/MsAAfzOAAH8zwAB/NAAAfzRAAH80gAB/NQAAfzWAAH81wAB/NgAAfzaAAH82wAB/N4AAf0dAAH9HwAB/SEAAf0jAAH9JgAB/ScAAf0oAAH9KQAB/SoAAf0sAAH9LgAB/S8AAf0wAAH9MgAB/TMAAf1yAAH9dAAB/XYAAf14AAH9ewAB/XwAAf19AAH9fgAB/X8AAf2BAAH9gwAB/YQAAf2FAAH9hwAB/YgAAf3HAAH9yQAB/csAAf3NAAH90AAB/dEAAf3SAAH90wAB/dQAAf3WAAH92AAB/dkAAf3aAAH93AAB/d0AAf4oAAH+SwAB/msAAf6LAAH+jQAB/o8AAf6RAAH+kwAB/pUAAf6WAAH+lwAB/poAAf6bAAH+nQAB/p4AAf6gAAH+ogAB/qMAAf6kAAH+pwAB/qgAAf6tAAH+ugAB/r8AAf7BAAH+wwAB/sgAAf7LAAH+zgAB/tAAAf71AAH/GQAB/0AAAf9kAAH/ZwAB/2kAAf9rAAH/bQAB/28AAf9xAAH/cgAB/3UAAf+CAAH/kwAB/5UAAf+XAAH/mQAB/5sAAf+dAAH/nwAB/6EAAf+jAAH/tAAB/7cAAf+6AAH/vQAB/8AAAf/DAAH/xgAB/8kAAf/MAAH/zgACAA0AAgAPAAIAEQACABMAAgAWAAIAFwACABgAAgAZAAIAGgACABwAAgAeAAIAHwACACAAAgAiAAIAIwACAGIAAgBkAAIAZgACAGgAAgBrAAIAbAACAG0AAgBuAAIAbwACAHEAAgBzAAIAdAACAHUAAgB3AAIAeAACALcAAgC5AAIAvAACAL4AAgDBAAIAwgACAMMAAgDEAAIAxQACAMcAAgDJAAIAygACAMsAAgDNAAIAzgACANsAAgDcAAIA3QACAN8AAgEeAAIBIAACASIAAgEkAAIBJwACASgAAgEpAAIBKgACASsAAgEtAAIBLwACATAAAgExAAIBMwACATQAAgFzAAIBdQACAXcAAgF5AAIBfAACAX0AAgF+AAIBfwACAYAAAgGCAAIBhAACAYUAAgGGAAIBiAACAYkAAgHIAAIBygACAcwAAgHOAAIB0QACAdIAAgHTAAIB1AACAdUAAgHXAAIB2QACAdoAAgHbAAIB3QACAd4AAgIdAAICHwACAiEAAgIjAAICJgACAicAAgIoAAICKQACAioAAgIsAAICLgACAi8AAgIwAAICMgACAjMAAgJyAAICdAACAnYAAgJ4AAICewACAnwAAgJ9AAICfgACAn8AAgKBAAICgwACAoQAAgKFAAIChwACAogAAgKtAAIC0QACAvgAAgMcAAIDHwACAyEAAgMjAAIDJQACAycAAgMpAAIDKgACAy0AAgM6AAIDSQACA0sAAgNNAAIDTwACA1EAAgNTAAIDVQACA1cAAgNmAAIDaQACA2wAAgNvAAIDcgACA3UAAgN4AAIDewACA30AAgO8AAIDvgACA8AAAgPCAAIDxQACA8YAAgPHAAIDyAACA8kAAgPLAAIDzQACA84AAgPPAAID0QACA9IAAgQRAAIEEwACBBUAAgQXAAIEGgACBBsAAgQcAAIEHQACBB4AAgQgAAIEIgACBCMAAgQkAAIEJgACBCcAAgRmAAIEaAACBGoAAgRsAAIEbwACBHAAAgRxAAIEcgACBHMAAgR1AAIEdwACBHgAAgR5AAIEewACBHwAAgS7AAIEvQACBMAAAgTCAAIExQACBMYAAgTHAAIEyAACBMkAAgTLAAIEzQACBM4AAgTPAAIE0QACBNIAAgUVAAIFOQACBV0AAgWAAAIFpwACBccAAgXuAAIGFQACBjUAAgZZAAIGfQACBn8AAgaCAAIGhAACBoYAAgaIAAIGiwACBo4AAgaQAAIGkgACBpUAAgaXAAIGmQACBpwAAgafAAIGoAACBqUAAgayAAIGtQACBrcAAga6AAIGvQACBr8AAgbkAAIHCAACBy8AAgdTAAIHVgACB1gAAgdaAAIHXAACB14AAgdgAAIHYQACB2QAAgdxAAIHhAACB4YAAgeIAAIHigACB4wAAgeOAAIHkAACB5IAAgeUAAIHlgACB6kAAgesAAIHrwACB7IAAge1AAIHuAACB7sAAge+AAIHwQACB8QAAgfGAAIIBQACCAcAAggKAAIIDAACCA8AAggQAAIIEQACCBIAAggTAAIIFQACCBcAAggYAAIIGQACCBsAAggcAAIIJQACCCYAAggoAAIIZwACCGkAAghrAAIIbQACCHAAAghxAAIIcgACCHMAAgh0AAIIdgACCHgAAgh5AAIIegACCHwAAgh9AAIIvAACCL4AAgjBAAIIwwACCMYAAgjHAAIIyAACCMkAAgjKAAIIzAACCM4AAgjPAAII0AACCNIAAgjTAAII3AACCN0AAgjfAAIJHgACCSAAAgkiAAIJJAACCScAAgkoAAIJKQACCSoAAgkrAAIJLQACCS8AAgkwAAIJMQACCTMAAgk0AAIJcwACCXUAAgl4AAIJegACCX0AAgl+AAIJfwACCYAAAgmBAAIJgwACCYUAAgmGAAIJhwACCYkAAgmKAAIJkwACCZQAAgmWAAIJ1QACCdcAAgnZAAIJ2wACCd4AAgnfAAIJ4AACCeEAAgniAAIJ5AACCeYAAgnnAAIJ6AACCeoAAgnrAAIKKgACCiwAAgovAAIKMQACCjQAAgo1AAIKNgACCjcAAgo4AAIKOgACCjwAAgo9AAIKPgACCkAAAgpBAAIKTgACCk8AAgpQAAIKUgACCpEAAgqTAAIKlQACCpcAAgqaAAIKmwACCpwAAgqdAAIKngACCqAAAgqiAAIKowACCqQAAgqmAAIKpwACCuYAAgroAAIK6gACCuwAAgrvAAIK8AACCvEAAgryAAIK8wACCvUAAgr3AAIK+AACCvkAAgr7AAIK/AACCwkAAgsSAAILFQACCxcAAgsaAAILHQACCyYAAgspAAILLAACCy8AAgsyAAILNAACCzkAAgs+AAILQwACC44AAguxAAIL0QACC/EAAgvzAAIL9QACC/cAAgv5AAIL/AACC/0AAgv+AAIMAQACDAIAAgwEAAIMBQACDAcAAgwKAAIMCwACDAwAAgwPAAIMEAACDBUAAgwiAAIMJwACDCkAAgwrAAIMMAACDDMAAgw2AAIMOAACDF0AAgyBAAIMqAACDMwAAgzPAAIM0QACDNMAAgzVAAIM1wACDNkAAgzaAAIM3QACDOoAAgz7AAIM/QACDP8AAg0BAAINAwACDQUAAg0HAAINCQACDQsA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AhfgAAIX4QACF+IAAhfkAAIX5QACGAoAAhguAAIYVQACGHkAAhh8AAIYfgACGIAAAhiCAAIYhAACGIYAAhiHAAIYigACGJcAAhimAAIYqAACGKoAAhisAAIYrgACGLAAAhiyAAIYtAACGMMAAhjGAAIYyQACGMwAAhjPAAIY0gACGNUAAhjYAAIY2gACGRkAAhkbAAIZHgACGSAAAhkjAAIZJAACGSUAAhkmAAIZJwACGSkAAhkrAAIZLAACGS0AAhkvAAIZMAACGW8AAhlxAAIZcwACGXUAAhl4AAIZeQACGXoAAhl7AAIZfAACGX4AAhmAAAIZgQACGYIAAhmEAAIZhQACGcQAAhnGAAIZyAACGcoAAhnNAAIZzgACGc8AAhnQAAIZ0QACGdMAAhnVAAIZ1gACGdcAAhnZAAIZ2gACGhkAAhobAAIaHgACGiAAAhojAAIaJAACGiUAAhomAAIaJwACGikAAhorAAIaLAACGi0AAhovAAIaMAACGm8AAhpxAAIacwACGnUAAhp4AAIaeQACGnoAAhp7AAIafAACGn4AAhqAAAIagQACGoIAAhqEAAIahQACGsQAAhrGAAIayAACGsoAAhrNAAIazgACGs8AAhrQAAIa0QACGtMAAhrVAAIa1gACGtcAAhrZAAIa2gACGxkAAhsbAAIbHQACGx8AAhsiAAIbIwACGyQAAhslAAIbJgACGygAAhsqAAIbKwACGywAAhsuAAIbLwACG3oAAhudAAIbvQACG90AAhvfAAIb4QACG+MAAhvlAAIb6AACG+kAAhvqAAIb7QACG+4AAhvwAAIb8QACG/MAAhv2AAIb9wACG/gAAhv7AAIb/AACHAEAAhwOAAIcEwACHBUAAhwXAAIcHAACHB8AAhwiAAIcJAACHEkAAhxtAAIclAACHLgAAhy7AAIcvQACHL8AAhzBAAIcwwACHMUAAhzGAAIcyQACHNYAAhznAAIc6QACHOsAAhztAAIc7wACHPEAAhzzAAIc9QACHPcAAh0IAAIdCwACHQ4AAh0RAAIdFAACHRcAAh0aAAIdHQACHSAAAh0iAAIdYQACHWMAAh1lAAIdZwACHWoAAh1rAAIdbAACHW0AAh1uAAIdcAACHXIAAh1zAAIddAACHXYAAh13AAIdtgACHbgAAh26AAIdvAACHb8AAh3AAAIdwQACHcIAAh3DAAIdxQACHccAAh3IAAIdyQACHcsAAh3MAAIeCwACHg0AAh4QAAIeEgACHhUAAh4WAAIeFwACHhgAAh4ZAAIeGwACHh0AAh4eAAIeHwACHiEAAh4iAAIeLwACHjAAAh4xAAIeMwACHnIAAh50AAIedgACHngAAh57AAIefAACHn0AAh5+AAIefwACHoEAAh6DAAIehAACHoUAAh6HAAIeiAACHscAAh7JAAIeywACHs0AAh7QAAIe0QACHtIAAh7TAAIe1AACHtYAAh7YAAIe2QACHtoAAh7cAAIe3QACHxwAAh8eAAIfIAACHyIAAh8lAAIfJgACHycAAh8oAAIfKQACHysAAh8tAAIfLgACHy8AAh8xAAIfMgACH3EAAh9zAAIfdQACH3cAAh96AAIfewACH3wAAh99AAIffgACH4AAAh+CAAIfgwACH4QAAh+GAAIfhwACH8YAAh/IAAIfygACH8wAAh/PAAIf0AACH9EAAh/SAAIf0wACH9UAAh/XAAIf2AACH9kAAh/bAAIf3AACIAEAAiAlAAIgTAACIHAAAiBzAAIgdQACIHcAAiB5AAIgewACIH0AAiB+AAIggQACII4AAiCdAAIgnwACIKEAAiCjAAIgpQACIKcAAiCpAAIgqwACILoAAiC9AAIgwAACIMMAAiDGAAIgyQACIMwAAiDPAAIg0QACIRAAAiESAAIhFQACIRcAAiEaAAIhGwACIRwAAiEdAAIhHgACISAAAiEiAAIhIwACISQAAiEmAAIhJwACIWYAAiFoAAIhagACIWwAAiFvAAIhcAACIXEAAiFyAAIhcwACIXUAAiF3AAIheAACIXkAAiF7AAIhfAACIbsAAiG9AAIhvwACIcEAAiHEAAIhxQACIcYAAiHHAAIhyAACIcoAAiHMAAIhzQACIc4AAiHQAAIh0QACIhAAAiISAAIiFQACIhcAAiIaAAIiGwACIhwAAiIdAAIiHgACIiAAAiIiAAIiIwACIiQAAiImAAIiJwACImYAAiJoAAIiagACImwAAiJvAAIicAACInEAAiJyAAIicwACInUAAiJ3AAIieAACInkAAiJ7AAIifAACIrsAAiK9AAIivwACIsEAAiLEAAIixQACIsYAAiLHAAIiyAACIsoAAiLMAAIizQACIs4AAiLQAAIi0QACIxAAAiMSAAIjFAACIxYAAiMZAAIjGgACIxsAAiMcAAIjHQACIx8AAiMhAAIjIgACIyMAAiMlAAIjJgACI3EAAiOUAAIjtAACI9QAAiPWAAIj2AACI9oAAiPcAAIj3wACI+AAAiPhAAIj5AACI+UAAiPnAAIj6AACI+oAAiPtAAIj7gACI+8AAiPyAAIj8wACI/wAAiQJAAIkDgACJBAAAiQSAAIkFwACJBoAAiQdAAIkHwACJEQAAiRoAAIkjwACJLMAAiS2AAIkuAACJLoAAiS8AAIkvgACJMAAAiTBAAIkxAACJNEAAiTiAAIk5AACJOYAAiToAAIk6gACJOwAAiTuAAIk8AACJPIAAiUDAAIlBgACJQkAAiUMAAIlDwACJRIAAiUVAAIlGAACJRsAAiUdAAIlXAACJV4AAiVgAAIlYgACJWUAAiVmAAIlZwACJWgAAiVpAAIlawACJW0AAiVuAAIlbwACJXEAAiVyAAIlsQACJbMAAiW1AAIltwACJboAAiW7AAIlvAACJb0AAiW+AAIlwAACJcIAAiXDAAIlxAACJcYAAiXHAAImBgACJggAAiYLAAImDQACJhAAAiYRAAImEgACJhMAAiYUAAImFgACJhgAAiYZAAImGgACJhwAAiYdAAImKgACJisAAiYsAAImLgACJm0AAiZvAAImcQACJnMAAiZ2AAImdwACJngAAiZ5AAImegACJnwAAiZ+AAImfwACJoAAAiaCAAImgwACJsIAAibEAAImxgACJsgAAibLAAImzAACJs0AAibOAAImzwACJtEAAibTAAIm1AACJtUAAibXAAIm2AACJxcAAicZAAInGwACJx0AAicgAAInIQACJyIAAicjAAInJAACJyYAAicoAAInKQACJyoAAicsAAInLQACJ2wAAiduAAIncAACJ3IAAid1AAIndgACJ3cAAid4AAIneQACJ3sAAid9AAInfgACJ38AAieBAAInggACJ8EAAifDAAInxQACJ8cAAifKAAInywACJ8wAAifNAAInzgACJ9AAAifSAAIn0wACJ9QAAifWAAIn1wACJ/wAAiggAAIoRwACKGsAAihuAAIocAACKHIAAih0AAIodgACKHgAAih5AAIofAACKIkAAiiYAAIomgACKJwAAiieAAIooAACKKIAAiikAAIopgACKLUAAii4AAIouwACKL4AAijBAAIoxAACKMcAAijKAAIozAACKQsAAikNAAIpDwACKREAAikUAAIpFQACKRYAAikXAAIpGAACKRoAAikcAAIpHQACKR4AAikgAAIpIQACKWAAAiliAAIpZAACKWYAAilpAAIpagACKWsAAilsAAIpbQACKW8AAilxAAIpcgACKXMAAil1AAIpdgACKbUAAim3AAIpuQACKbsAAim+AAIpvwACKcAAAinBAAIpwgACKcQAAinGAAIpxwACKcgAAinKAAIpywACKgoAAioMAAIqDgACKhAAAioTAAIqFAACKhUAAioWAAIqFwACKhkAAiobAAIqHAACKh0AAiofAAIqIAACKl8AAiphAAIqYwACKmUAAipoAAIqaQACKmoAAiprAAIqbAACKm4AAipwAAIqcQACKnIAAip0AAIqdQACKrQAAiq2AAIquAACKroAAiq9AAIqvgACKr8AAirAAAIqwQACKsMAAirFAAIqxgACKscAAirJAAIqygACKwkAAisLAAIrDQACKw8AAisSAAIrEwACKxQAAisVAAIrFgACKxgAAisaAAIrGwACKxwAAiseAAIrHwACKygAAispAAIrKwACK2oAAitsAAIrbgACK3AAAitzAAIrdAACK3UAAit2AAIrdwACK3kAAit7AAIrfAACK30AAit/AAIrgAACK78AAivBAAIrwwACK8UAAivIAAIryQACK8oAAivLAAIrzAACK84AAivQAAIr0QACK9IAAivUAAIr1QACLBQAAiwWAAIsGQACLBsAAiweAAIsHwACLCAAAiwhAAIsIgACLCQAAiwmAAIsJwACLCgAAiwqAAIsKwACLHYAAiyZAAIsuQACLNkAAizbAAIs3QACLN8AAizhAAIs4wACLOQAAizlAAIs6AACLOkAAizrAAIs7AACLO4AAizwAAIs8QACLPIAAiz1AAIs9gACLPsAAi0IAAItDQACLQ8AAi0RAAItFgACLRkAAi0cAAItHgACLUMAAi1nAAItjgACLbIAAi21AAIttwACLbkAAi27AAItvQACLb8AAi3AAAItwwACLdAAAi3hAAIt4wACLeUAAi3nAAIt6QACLesAAi3tAAIt7wACLfEAAi4CAAIuBQACLggAAi4LAAIuDgACLhEAAi4UAAIuFwACLhoAAi4cAAIuWwACLl0AAi5fAAIuYQACLmQAAi5lAAIuZgACLmcAAi5oAAIuagACLmwAAi5tAAIubgACLnAAAi5xAAIusAACLrIAAi60AAIutgACLrkAAi66AAIuuwACLrwAAi69AAIuvwACLsEAAi7CAAIuwwACLsUAAi7GAAIvBQACLwcAAi8KAAIvDAACLw8AAi8QAAIvEQACLxIAAi8TAAIvFQACLxcAAi8YAAIvGQACLxsAAi8cAAIvKQACLyoAAi8rAAIvLQACL2wAAi9uAAIvcAACL3IAAi91AAIvdgACL3cAAi94AAIveQACL3sAAi99AAIvfgACL38AAi+BAAIvggACL8EAAi/DAAIvxQACL8cAAi/KAAIvywACL8wAAi/NAAIvzgACL9AAAi/SAAIv0wACL9QAAi/WAAIv1wACMBYAAjAYAAIwGgACMBwAAjAfAAIwIAACMCEAAjAiAAIwIwACMCUAAjAnAAIwKAACMCkAAjArAAIwLAACMGsAAjBtAAIwbwACMHEAAjB0AAIwdQACMHYAAjB3AAIweAACMHoAAjB8AAIwfQACMH4AAjCAAAIwgQACMMAAAjDCAAIwxAACMMYAAjDJAAIwygACMMsAAjDMAAIwzQACMM8AAjDRAAIw0gACMNMAAjDVAAIw1gACMPsAAjEfAAIxRgACMWoAAjFtAAIxbwACMXEAAjFzAAIxdQACMXcAAjF4AAIxewACMYgAAjGXAAIxmQACMZsAAjGdAAIxnwACMaEAAjGjAAIxpQACMbQAAjG3AAIxugACMb0AAjHAAAIxwwACMcYAAjHJAAIxywACMgoAAjIMAAIyDwACMhEAAjIUAAIyFQACMhYAAjIXAAIyGAACMhoAAjIcAAIyHQACMh4AAjIgAAIyIQACMmAAAjJiAAIyZAACMmYAAjJpAAIyagACMmsAAjJsAAIybQACMm8AAjJxAAIycgACMnMAAjJ1AAIydgACMrUAAjK3AAIyuQACMrsAAjK+AAIyvwACMsAAAjLBAAIywgACMsQAAjLGAAIyxwACMsgAAjLKAAIyywACMwoAAjMMAAIzDwACMxEAAjMUAAIzFQACMxYAAjMXAAIzGAACMxoAAjMcAAIzHQACMx4AAjMgAAIzIQACM2AAAjNiAAIzZAACM2YAAjNpAAIzagACM2sAAjNsAAIzbQACM28AAjNxAAIzcgACM3MAAjN1AAIzdgACM7UAAjO3AAIzuQACM7sAAjO+AAIzvwACM8AAAjPBAAIzwgACM8QAAjPGAAIzxwACM8gAAjPKAAIzywACNAoAAjQMAAI0DgACNBAAAjQTAAI0FAACNBUAAjQWAAI0FwACNBkAAjQbAAI0HAACNB0AAjQfAAI0IAACNGsAAjSOAAI0rgACNM4AAjTQAAI00gACNNQAAjTWAAI02AACNNkAAjTaAAI03QACNN4AAjTgAAI04QACNOMAAjTlAAI05gACNOcAAjTqAAI06wACNPAAAjT9AAI1AgACNQQAAjUGAAI1CwACNQ4AAjURAAI1EwACNTgAAjVcAAI1gwACNacAAjWqAAI1rAACNa4AAjWwAAI1sgACNbQAAjW1AAI1uAACNcUAAjXWAAI12AACNdoAAjXcAAI13gACNeAAAjXiAAI15AACNeYAAjX3AAI1+gACNf0AAjYAAAI2AwACNgYAAjYJAAI2DAACNg8AAjYRAAI2UAACNlIAAjZUAAI2VgACNlkAAjZaAAI2WwACNlwAAjZdAAI2XwACNmEAAjZiAAI2YwACNmUAAjZmAAI2pQACNqcAAjapAAI2qwACNq4AAjavAAI2sAACNrEAAjayAAI2tAACNrYAAja3AAI2uAACNroAAja7AAI2+gACNvwAAjb/AAI3AQACNwQAAjcFAAI3BgACNwcAAjcIAAI3CgACNwwAAjcNAAI3DgACNxAAAjcRAAI3HgACNx8AAjcgAAI3IgACN2EAAjdjAAI3ZQACN2cAAjdqAAI3awACN2wAAjdtAAI3bgACN3AAAjdyAAI3cwACN3QAAjd2AAI3dwACN7YAAje4AAI3ugACN7wAAje/AAI3wAACN8EAAjfCAAI3wwACN8UAAjfHAAI3yAACN8kAAjfLAAI3zAACOAsAAjgNAAI4DwACOBEAAjgUAAI4FQACOBYAAjgXAAI4GAACOBoAAjgcAAI4HQACOB4AAjggAAI4IQACOGAAAjhiAAI4ZAACOGYAAjhpAAI4agACOGsAAjhsAAI4bQACOG8AAjhxAAI4cgACOHMAAjh1AAI4dgACOLUAAji3AAI4uQACOLsAAji+AAI4vwACOMAAAjjBAAI4wgACOMQAAjjGAAI4xwACOMgAAjjKAAI4ywACOPAAAjkUAAI5OwACOV8AAjliAAI5ZAACOWYAAjloAAI5agACOWwAAjltAAI5cAACOX0A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AkVdAAJFXwACRWAAAkWfAAJFoQACRaQAAkWmAAJFqQACRaoAAkWrAAJFrAACRa0AAkWvAAJFsQACRbIAAkWzAAJFtQACRbYAAkXDAAJFxAACRcUAAkXHAAJGBgACRggAAkYKAAJGDAACRg8AAkYQAAJGEQACRhIAAkYTAAJGFQACRhcAAkYYAAJGGQACRhsAAkYcAAJGWwACRl0AAkZfAAJGYQACRmQAAkZlAAJGZgACRmcAAkZoAAJGagACRmwAAkZtAAJGbgACRnAAAkZxAAJGsAACRrIAAka0AAJGtgACRrkAAka6AAJGuwACRrwAAka9AAJGvwACRsEAAkbCAAJGwwACRsUAAkbGAAJHBQACRwcAAkcJAAJHCwACRw4AAkcPAAJHEAACRxEAAkcSAAJHFAACRxYAAkcXAAJHGAACRxoAAkcbAAJHWgACR1wAAkdeAAJHYAACR2MAAkdkAAJHZQACR2YAAkdnAAJHaQACR2sAAkdsAAJHbQACR28AAkdwAAJHlQACR7kAAkfgAAJIBAACSAcAAkgJAAJICwACSA0AAkgPAAJIEQACSBIAAkgVAAJIIgACSDEAAkgzAAJINQACSDcAAkg5AAJIOwACSD0AAkg/AAJITgACSFEAAkhUAAJIVwACSFoAAkhdAAJIYAACSGMAAkhlAAJIpAACSKYAAkioAAJIqgACSK0AAkiuAAJIrwACSLAAAkixAAJIswACSLUAAki2AAJItwACSLkAAki6AAJI+QACSPsAAkj9AAJI/wACSQIAAkkDAAJJBAACSQUAAkkGAAJJCAACSQoAAkkLAAJJDAACSQ4AAkkPAAJJTgACSVAAAklSAAJJVAACSVcAAklYAAJJWQACSVoAAklbAAJJXQACSV8AAklgAAJJYQACSWMAAklkAAJJowACSaUAAkmoAAJJqgACSa0AAkmuAAJJrwACSbAAAkmxAAJJswACSbUAAkm2AAJJtwACSbkAAkm6AAJJ/QACSiEAAkpFAAJKaAACSo8AAkqvAAJK1gACSv0AAksdAAJLQQACS2UAAktnAAJLagACS2wAAktuAAJLcAACS3MAAkt2AAJLeAACS3oAAkt9AAJLfwACS4EAAkuEAAJLhwACS4gAAkuRAAJLngACS6EAAkujAAJLpgACS6kAAkurAAJL0AACS/QAAkwbAAJMPwACTEIAAkxEAAJMRgACTEgAAkxKAAJMTAACTE0AAkxQAAJMXQACTHAAAkxyAAJMdAACTHYAAkx4AAJMegACTHwAAkx+AAJMgAACTIIAAkyVAAJMmAACTJsAAkyeAAJMoQACTKQAAkynAAJMqgACTK0AAkywAAJMsgACTPEAAkzzAAJM9gACTPgAAkz7AAJM/AACTP0AAkz+AAJM/wACTQEAAk0DAAJNBAACTQUAAk0HAAJNCAACTREAAk0SAAJNFAACTVMAAk1VAAJNVwACTVkAAk1cAAJNXQACTV4AAk1fAAJNYAACTWIAAk1kAAJNZQACTWYAAk1oAAJNaQACTagAAk2qAAJNrQACTa8AAk2yAAJNswACTbQAAk21AAJNtgACTbgAAk26AAJNuwACTbwAAk2+AAJNvwACTcgAAk3JAAJNywACTgoAAk4MAAJODgACThAAAk4TAAJOFAACThUAAk4WAAJOFwACThkAAk4bAAJOHAACTh0AAk4fAAJOIAACTl8AAk5hAAJOZAACTmYAAk5pAAJOagACTmsAAk5sAAJObQACTm8AAk5xAAJOcgACTnMAAk51AAJOdgACTn8AAk6AAAJOggACTsEAAk7DAAJOxQACTscAAk7KAAJOywACTswAAk7NAAJOzgACTtAAAk7SAAJO0wACTtQAAk7WAAJO1wACTxYAAk8YAAJPGwACTx0AAk8gAAJPIQACTyIAAk8jAAJPJAACTyYAAk8oAAJPKQACTyoAAk8sAAJPLQACTzoAAk87AAJPPAACTz4AAk99AAJPfwACT4EAAk+DAAJPhgACT4cAAk+IAAJPiQACT4oAAk+MAAJPjgACT48AAk+QAAJPkgACT5MAAk/SAAJP1AACT9YAAk/YAAJP2wACT9wAAk/dAAJP3gACT98AAk/hAAJP4wACT+QAAk/lAAJP5wACT+gAAk/1AAJQAAACUAIAAlAFAAJQBwACUAoAAlANAAJQGAACUBsAAlAeAAJQIQACUCQAAlAnAAJQKQACUC8AAlA0AAJQOgACUIUAAlCoAAJQyAACUOgAAlDqAAJQ7AACUO4AAlDwAAJQ8wACUPQAAlD1AAJQ+AACUPkAAlD7AAJQ/AACUP4AAlEAAAJRAQACUQIAAlEFAAJRBgACUQsAAlEYAAJRHQACUR8AAlEhAAJRJgACUSkAAlEsAAJRLgACUVMAAlF3AAJRngACUcIAAlHFAAJRxwACUckAAlHLAAJRzQACUc8AAlHQAAJR0wACUeAAAlHxAAJR8wACUfUAAlH3AAJR+QACUfsAAlH9AAJR/wACUgEAAlISAAJSFQACUhgAAlIbAAJSHgACUiEAAlIkAAJSJwACUioAAlIsAAJSawACUm0AAlJvAAJScQACUnQAAlJ1AAJSdgACUncAAlJ4AAJSegACUnwAAlJ9AAJSfgACUoAAAlKBAAJSwAACUsIAAlLEAAJSxgACUskAAlLKAAJSywACUswAAlLNAAJSzwACUtEAAlLSAAJS0wACUtUAAlLWAAJTFQACUxcAAlMaAAJTHAACUx8AAlMgAAJTIQACUyIAAlMjAAJTJQACUycAAlMoAAJTKQACUysAAlMsAAJTOQACUzoAAlM7AAJTPQACU3wAAlN+AAJTgAACU4IAAlOFAAJThgACU4cAAlOIAAJTiQACU4sAAlONAAJTjgACU48AAlORAAJTkgACU9EAAlPTAAJT1QACU9cAAlPaAAJT2wACU9wAAlPdAAJT3gACU+AAAlPiAAJT4wACU+QAAlPmAAJT5wACVCYAAlQoAAJUKgACVCwAAlQvAAJUMAACVDEAAlQyAAJUMwACVDUAAlQ3AAJUOAACVDkAAlQ7AAJUPAACVHsAAlR9AAJUfwACVIEAAlSEAAJUhQACVIYAAlSHAAJUiAACVIoAAlSMAAJUjQACVI4AAlSQAAJUkQACVNAAAlTSAAJU1AACVNYAAlTZAAJU2gACVNsAAlTcAAJU3QACVN8AAlThAAJU4gACVOMAAlTlAAJU5gACVQsAAlUvAAJVVgACVXoAAlV9AAJVfwACVYEAAlWDAAJVhQACVYcAAlWIAAJViwACVZgAAlWnAAJVqQACVasAAlWtAAJVrwACVbEAAlWzAAJVtQACVcQAAlXHAAJVygACVc0AAlXQAAJV0wACVdYAAlXZAAJV2wACVhoAAlYcAAJWHwACViEAAlYkAAJWJQACViYAAlYnAAJWKAACVioAAlYsAAJWLQACVi4AAlYwAAJWMQACVnAAAlZyAAJWdAACVnYAAlZ5AAJWegACVnsAAlZ8AAJWfQACVn8AAlaBAAJWggACVoMAAlaFAAJWhgACVsUAAlbHAAJWyQACVssAAlbOAAJWzwACVtAAAlbRAAJW0gACVtQAAlbWAAJW1wACVtgAAlbaAAJW2wACVxoAAlccAAJXHwACVyEAAlckAAJXJQACVyYAAlcnAAJXKAACVyoAAlcsAAJXLQACVy4AAlcwAAJXMQACV3AAAldyAAJXdAACV3YAAld5AAJXegACV3sAAld8AAJXfQACV38AAleBAAJXggACV4MAAleFAAJXhgACV8UAAlfHAAJXyQACV8sAAlfOAAJXzwACV9AAAlfRAAJX0gACV9QAAlfWAAJX1wACV9gAAlfaAAJX2wACWBoAAlgcAAJYHgACWCAAAlgjAAJYJAACWCUAAlgmAAJYJwACWCkAAlgrAAJYLAACWC0AAlgvAAJYMAACWHsAAlieAAJYvgACWN4AAljgAAJY4gACWOQAAljmAAJY6QACWOoAAljrAAJY7gACWO8AAljxAAJY8gACWPQAAlj3AAJY+AACWPkAAlj8AAJY/QACWQIAAlkPAAJZFAACWRYAAlkYAAJZHQACWSAAAlkjAAJZJQACWUoAAlluAAJZlQACWbkAAlm8AAJZvgACWcAAAlnCAAJZxAACWcYAAlnHAAJZygACWdcAAlnoAAJZ6gACWewAAlnuAAJZ8AACWfIAAln0AAJZ9gACWfgAAloJAAJaDAACWg8AAloSAAJaFQACWhgAAlobAAJaHgACWiEAAlojAAJaYgACWmQAAlpmAAJaaAACWmsAAlpsAAJabQACWm4AAlpvAAJacQACWnMAAlp0AAJadQACWncAAlp4AAJatwACWrkAAlq7AAJavQACWsAAAlrBAAJawgACWsMAAlrEAAJaxgACWsgAAlrJAAJaygACWswAAlrNAAJbDAACWw4AAlsRAAJbEwACWxYAAlsXAAJbGAACWxkAAlsaAAJbHAACWx4AAlsfAAJbIAACWyIAAlsjAAJbMAACWzEAAlsyAAJbNAACW3MAAlt1AAJbdwACW3kAAlt8AAJbfQACW34AAlt/AAJbgAACW4IAAluEAAJbhQACW4YAAluIAAJbiQACW8gAAlvKAAJbzAACW84AAlvRAAJb0gACW9MAAlvUAAJb1QACW9cAAlvZAAJb2gACW9sAAlvdAAJb3gACXB0AAlwfAAJcIQACXCMAAlwmAAJcJwACXCgAAlwpAAJcKgACXCwAAlwuAAJcLwACXDAAAlwyAAJcMwACXHIAAlx0AAJcdgACXHgAAlx7AAJcfAACXH0AAlx+AAJcfwACXIEAAlyDAAJchAACXIUAAlyHAAJciAACXMcAAlzJAAJcywACXM0AAlzQAAJc0QACXNIAAlzTAAJc1AACXNYAAlzYAAJc2QACXNoAAlzcAAJc3QACXQIAAl0mAAJdTQACXXEAAl10AAJddgACXXgAAl16AAJdfAACXX4AAl1/AAJdggACXY8AAl2eAAJdoAACXaIAAl2kAAJdpgACXagAAl2qAAJdrAACXbsAAl2+AAJdwQACXcQAAl3HAAJdygACXc0AAl3QAAJd0gACXhEAAl4TAAJeFgACXhgAAl4bAAJeHAACXh0AAl4eAAJeHwACXiEAAl4jAAJeJAACXiUAAl4nAAJeKAACXmcAAl5pAAJeawACXm0AAl5wAAJecQACXnIAAl5zAAJedAACXnYAAl54AAJeeQACXnoAAl58AAJefQACXrwAAl6+AAJewAACXsIAAl7FAAJexgACXscAAl7IAAJeyQACXssAAl7NAAJezgACXs8AAl7RAAJe0gACXxEAAl8TAAJfFgACXxgAAl8bAAJfHAACXx0AAl8eAAJfHwACXyEAAl8jAAJfJAACXyUAAl8nAAJfKAACX2cAAl9pAAJfawACX20AAl9wAAJfcQACX3IAAl9zAAJfdAACX3YAAl94AAJfeQACX3oAAl98AAJffQACX7wAAl++AAJfwAACX8IAAl/FAAJfxgACX8cAAl/IAAJfyQACX8sAAl/NAAJfzgACX88AAl/RAAJf0gACYBEAAmATAAJgFQACYBcAAmAaAAJgGwACYBwAAmAdAAJgHgACYCAAAmAiAAJgIwACYCQAAmAmAAJgJwACYHIAAmCVAAJgtQACYNUAAmDXAAJg2QACYNsAAmDdAAJg4AACYOEAAmDiAAJg5QACYOYAAmDoAAJg6QACYOsAAmDtAAJg7gACYO8AAmDyAAJg8wACYPgAAmEFAAJhCgACYQwAAmEOAAJhEwACYRYAAmEZAAJhGwACYUAAAmFkAAJhiwACYa8AAmGyAAJhtAACYbYAAmG4AAJhugACYbwAAmG9AAJhwAACYc0AAmHeAAJh4AACYeIAAmHkAAJh5gACYegAAmHqAAJh7AACYe4AAmH/AAJiAgACYgUAAmIIAAJiCwACYg4AAmIRAAJiFAACYhcAAmIZAAJiWAACYloAAmJcAAJiXgACYmEAAmJiAAJiYwACYmQAAmJlAAJiZwACYmkAAmJqAAJiawACYm0AAmJuAAJirQACYq8AAmKxAAJiswACYrYAAmK3AAJiuAACYrkAAmK6AAJivAACYr4AAmK/AAJiwAACYsIAAmLDAAJjAgACYwQAAmMHAAJjCQACYwwAAmMNAAJjDgACYw8AAmMQAAJjEgACYxQAAmMVAAJjFgACYxgAAmMZAAJjJgACYycAAmMoAAJjKgACY2kAAmNrAAJjbQACY28AAmNyAAJjcwACY3QAAmN1AAJjdgACY3gAAmN6AAJjewACY3wAAmN+AAJjfwACY74AAmPAAAJjwgACY8QAAmPHAAJjyAACY8kAAmPKAAJjywACY80AAmPPAAJj0AACY9EAAmPTAAJj1AACZBMAAmQVAAJkFwACZBkAAmQcAAJkHQACZB4AAmQfAAJkIAACZCIAAmQkAAJkJQACZCYAAmQoAAJkKQACZGgAAmRqAAJkbAACZG4AAmRxAAJkcgACZHMAAmR0AAJkdQACZHcAAmR5AAJkegACZHsAAmR9AAJkfgACZL0AAmS/AAJkwQACZMMAAmTGAAJkxwACZMgAAmTJAAJkygACZMwAAmTOAAJkzwACZNAAAmTSAAJk0wACZPgAAmUcAAJlQwACZWcAAmVqAAJlbAACZW4AAmVwAAJlcgACZXQAAmV1AAJleAACZYUAAmWUAAJllgACZZgAAmWaAAJlnAACZZ4AAmWgAAJlogACZbEAAmW0AAJltwACZboAAmW9AAJlwAACZcMAAmXGAAJlyAACZgcAAmYJAAJmCwACZg0AAmYQAAJmEQACZhIAAmYTAAJmFAACZhYAAmYYAAJmGQACZhoAAmYcAAJmHQACZlwAAmZeAAJmYAACZmIAAmZlAAJmZgACZmcAAmZoAAJmaQACZmsAAmZtAAJmbgACZm8AAmZxAAJmcgACZrEAAmazAAJmtQACZrcAAma6AAJmuwACZrwAAma9AAJmvgACZsAAAmbCAAJmwwACZsQAAmbGAAJmxwACZwYAAmcIAAJnCgACZwwAAmcPAAJnEAACZxEAAmcSAAJnEwACZxUAAmcXAAJnGAACZxkAAmcbAAJnHAACZ1sAAmddAAJnXwACZ2EAAmdkAAJnZQACZ2YAAmdnAAJnaAACZ2oAAmdsAAJnbQACZ24AAmdwAAJncQACZ7AAAmeyAAJntAACZ7YAAme5AAJnugACZ7sAAme8AAJnvQACZ78AAmfBAAJnwgACZ8MAAmfFAAJnxgACaAUAAmgHAAJoCQACaAsAAmgOAAJoDwACaBAAAmgRAAJoEgACaBQAAmgWAAJoFwACaBgAAmgaAAJoGwACaGYAAmiJAAJoqQACaMkAAmjLAAJozQACaM8AAmjRAAJo1AACaNUAAmjWAAJo2QACaNoAAmjcAAJo3QACaN8AAmjiAAJo4wACaOQAAmjnAAJo6AACaO0AAmj6AAJo/wACaQEAAmkDAAJpCAACaQsAAmkOAAJpEAACaTUAAmlZAAJpgAACaaQAAmmnAAJpqQACaasAAmmtAAJprwACabEAAmmyAAJptQACacIAAmnTAAJp1QACadcAAmnZAAJp2wACad0AAmnfAAJp4QACaeMAAmn0AAJp9wACafoAAmn9AAJqAAACagMAAmoGAAJqCQACagwAAmoOAAJqTQACak8AAmpRAAJqUwACalYAAmpXAAJqWAACalkAAmpaAAJqXAACal4AAmpfAAJqYAACamIAAmpjAAJqogACaqQAAmqmAAJqqAACaqsAAmqsAAJqrQACaq4AAmqvAAJqsQACarMAAmq0AAJqtQACarcAAmq4AAJq9wACavkAAmr8AAJq/gACawEAAmsCAAJrAwACawQAAmsFAAJrBwACawkAAmsKAAJrCwACaw0AAmsOAAJrGwACaxwAAmsdAAJrHwACa14AAmtgAAJrYgACa2QAAmtnAAJraAACa2kAAmtqAAJrawACa20AAmtvAAJrcAACa3EAAmtzAAJrdAACa7MAAmu1AAJrtwACa7kAAmu8AAJrvQACa74AAmu/AAJrwAACa8IAAmvEAAJrxQACa8YAAmvIAAJryQACbAgAAmwKAAJsDAACbA4AAmwRAAJsEgACbBMAAmwUAAJsFQACbBcAAmwZAAJsGgACbBsAAmwdAAJsHgACbF0AAmxfAAJsYQACbGMAAmxmAAJsZwACbGgAAmxpAAJsagACbGwAAmxuAAJsbwACbHAAAmxyAAJscwACbLIAAmy0AAJstgACbLgAAmy7AAJsvAACbL0AAmy+AAJsvwACbMEAAmzDAAJsxAACbMUAAmzHAAJsyAACbO0AAm0RAAJtOAACbVwAAm1fAAJtYQACbWMAAm1lAAJtZwACbWkAAm1qAAJtbQACbXoAAm2JAAJtiwACbY0AAm2PAAJtkQACbZMAAm2VAAJtlwACbaYAAm2pAAJtrAACba8AAm2yAAJttQACbbgAAm27AAJtvQACbfwAAm3+AAJuAAACbgIAAm4FAAJuBgACbgcAAm4IAAJuCQACbgsAAm4NAAJuDgACbg8AAm4RAAJuEgACblEAAm5TAAJuVQACblcAAm5aAAJuWwACblwAAm5dAAJuXgACbmAAAm5iAAJuYwACbmQAAm5mAAJuZwACbqYAAm6oAAJuqgACbqwAAm6vAAJusAACbrEAAm6yAAJuswACbrUAAm63AAJuuAACbrkAAm67AAJuvAACbvsAAm79AAJvAAACbwIAAm8FAAJvBgACbwcAAm8IAAJvCQACbwsAAm8NAAJvDgACbw8AAm8RAAJvEgACb1EAAm9TAAJvVQACb1cAAm9aAAJvWwACb1wAAm9dAAJvXgACb2AAAm9iAAJvYwACb2QAAm9mAAJvZwACb6YAAm+oAAJvqgACb6wAAm+vAAJvsAACb7EAAm+yAAJvswACb7UAAm+3AAJvuAACb7kAAm+7AAJvvAACb/sAAm/9AAJwAAACcAIAAnAFAAJwBgACcAcAAnAIAAJwCQACcAsAAnANAAJwDgACcA8AAnARAAJwEgACcF0AAnCAAAJwoAACcMAAAnDCAAJwxAACcMYAAnDIAAJwywACcMwAAnDNAAJw0AACcNEAAnDTAAJw1AACcNYAAnDZAAJw2gACcNsAAnDeAAJw3wACcOQAAnDxAAJw9gACcPgAAnD6AAJw/wACcQIAAnEFAAJxBwACcSwAAnFQAAJxdwACcZsAAnGeAAJxoAACcaIAAnGkAAJxpgACcagAAnGpAAJxrAACcbkAAnHKAAJxzAACcc4AAnHQAAJx0gACcdQAAnHWAAJx2AACcdoAAnHrAAJx7gACcfEAAnH0AAJx9wACcfoAAnH9AAJyAAACcgMAAnIFAAJyRAACckYAAnJIAAJySgACck0AAnJOAAJyTwACclAAAnJRAAJyUwACclUAAnJWAAJyVwACclkAAnJaAAJymQACcpsAAnKdAAJynwACcqIAAnKjAAJypAACcqUAAnKmAAJyqAACcqoAAnKrAAJyrAACcq4AAnKvAAJy7gACcvAAAnLzAAJy9QACcvgAAnL5AAJy+gACcvsAAnL8AAJy/gACcwAAAnMBAAJzAgACcwQAAnMFAAJzEgACcxMAAnMUAAJzFgACc1UAAnNXAAJzWQACc1sAAnNeAAJzXwACc2AAAnNhAAJzYgACc2QAAnNmAAJzZwACc2gAAnNqAAJzawACc6oAAnOsAAJzrgACc7AAAnOzAAJztAACc7UAAnO2AAJztwACc7kAAnO7AAJzvAACc70AAnO/AAJzwAACc/8AAnQBAAJ0AwACdAUAAnQIAAJ0CQACdAoAAnQLAAJ0DAACdA4AAnQQAAJ0EQACdBIAAnQUAAJ0FQACdFQAAnRWAAJ0WAACdFoAAnRdAAJ0XgACdF8AAnRgAAJ0YQACdGMAAnRlAAJ0ZgACdGcAAnRpAAJ0agACdKkAAnSrAAJ0rQACdK8AAnSyAAJ0swACdLQAAnS1AAJ0tgACdLgAAnS6AAJ0uwACdLwAAnS+AAJ0vwACdOQAAnUIAAJ1LwACdVMAAnVWAAJ1WAACdVoAAnVcAAJ1XgACdWAAAnVhAAJ1ZAACdXEAAnWAAAJ1ggACdYQAAnWGAAJ1iAACdYoAAnWMAAJ1jgACdZ0AAnWgAAJ1owACdaYAAnWpAAJ1rAACda8AAnWyAAJ1tAACdfMAAnX1AAJ1+AACdfoAAnX9AAJ1/gACdf8AAnYAAAJ2AQACdgMAAnYFAAJ2BgACdgcAAnYJAAJ2CgACdkkAAnZLAAJ2TQACdk8AAnZSAAJ2UwACdlQAAnZVAAJ2VgACdlgAAnZaAAJ2WwACdlwAAnZeAAJ2XwACdp4AAnagAAJ2ogACdqQAAnanAAJ2qAACdqkAAnaqAAJ2qwACdq0AAnavAAJ2sAACdrEAAnazAAJ2tAACdvMAAnb1AAJ2+AACdvoAAnb9AAJ2/gACdv8AAncAAAJ3AQACdwMAAncFAAJ3BgACdwcAAncJAAJ3CgACd0kAAndLAAJ3TQACd08AAndSAAJ3UwACd1QAAndVAAJ3VgACd1gAAndaAAJ3WwACd1wAAndeAAJ3XwACd54AAnegAAJ3ogACd6QAAnenAAJ3qAACd6kAAneqAAJ3qwACd60AAnevAAJ3sAACd7EAAnezAAJ3tAACd/MAAnf1AAJ39wACd/kAAnf8AAJ3/QACd/4AAnf/AAJ4AAACeAIAAngEAAJ4BQACeAYAAngIAAJ4CQACeBIAAngTAAJ4FQACeFQAAnhWAAJ4WAACeFoAAnhdAAJ4XgACeF8AAnhgAAJ4YQACeGMAAnhlAAJ4ZgACeGcAAnhpAAJ4agACeKkAAnirAAJ4rQACeK8AAniyAAJ4swACeLQAAni1AAJ4tgACeLgAAni6AAJ4uwACeLwAAni+AAJ4vwACeP4AAnkAAAJ5AwACeQUAAnkIAAJ5CQACeQoAAnkLAAJ5DAACeQ4AAnkQAAJ5EQACeRIAAnkUAAJ5FQACeR4AAnkhAAJ5JAACeSYAAnkrAAJ5NAACeU0AAnlWAAJ5bwACeYYAAnmYAAJ5tQACebgAAnm6AAJ5vAACeb4AAnnBAAJ5wwACecgAAnoHAAJ6CQACegsAAnoNAAJ6DwACehAAAnoRAAJ6EgACehMAAnoVAAJ6FwACehgAAnoZAAJ6GwACehwAAnpbAAJ6XQACel8AAnphAAJ6YwACemQAAnplAAJ6ZgACemcAAnppAAJ6awACemwAAnptAAJ6bwACenAAAnqvAAJ6sQACerMAAnq1AAJ6twACergAAnq5AAJ6ugACersAAnq9AAJ6vwACesAAAnrBAAJ6wwACesQAAnrNAAJ60AACetMAAnrVAAJ7GAACezwAAntgAAJ7gwACe6oAAnvKAAJ78QACfBgAAnw4AAJ8XAACfIAAAnyCAAJ8hQACfIcAAnyJAAJ8iwACfI4AAnyRAAJ8kwACfJUAAnyYAAJ8mgACfJwAAnyfAAJ8ogACfKMAAnyoAAJ8tQACfLgAAny6AAJ8vQACfMAAAnzCAAJ85wACfQsAAn0yAAJ9VgACfVkAAn1bAAJ9XQACfV8AAn1hAAJ9YwACfWQAAn1nAAJ9dAACfYcAAn2JAAJ9iwACfY0AAn2PAAJ9kQACfZMAAn2VAAJ9lwACfZkAAn2sAAJ9rwACfbIAAn21AAJ9uAACfbsAAn2+AAJ9wQACfcQAAn3HAAJ9yQACfggAAn4KAAJ+DQACfg8AAn4SAAJ+EwACfhQAAn4VAAJ+FgACfhgAAn4aAAJ+GwACfhwAAn4eAAJ+HwACfigAAn4pAAJ+KwACfmoAAn5sAAJ+bgACfnAAAn5zAAJ+dAACfnUAAn52AAJ+dwACfnkAAn57AAJ+fAACfn0AAn5/AAJ+gAACfr8AAn7BAAJ+xAACfsYAAn7JAAJ+ygACfssAAn7MAAJ+zQACfs8AAn7RAAJ+0gACftMAAn7VAAJ+1gACft8AAn7gAAJ+4gACfyEAAn8jAAJ/JQACfycAAn8qAAJ/KwACfywAAn8tAAJ/LgACfzAAAn8yAAJ/MwACfzQAAn82AAJ/NwACf3YAAn94AAJ/ewACf30AAn+AAAJ/gQACf4IAAn+DAAJ/hAACf4YAAn+IAAJ/iQACf4oAAn+MAAJ/jQACf5YAAn+XAAJ/mQACf9gAAn/aAAJ/3AACf94AAn/hAAJ/4gACf+MAAn/kAAJ/5QACf+cAAn/pAAJ/6gACf+sAAn/tAAJ/7gACgC0AAoAvAAKAMgACgDQAAoA3AAKAOAACgDkAAoA6AAKAOwACgD0AAoA/AAKAQAACgEEAAoBDAAKARAACgFEAAoBSAAKAUwACgFUAAoCUAAKAlgACgJgAAoCaAAKAnQACgJ4AAoCfAAKAoAACgKEAAoCjAAKApQACgKYAAoCnAAKAqQACgKoAAoDpAAKA6wACgO0AAoDvAAKA8gACgPMAAoD0AAKA9QACgPYAAoD4AAKA+gACgPsAAoD8AAKA/gACgP8AAoEMAAKBFQACgRgAAoEbAAKBHQACgSAAAoEpAAKBLAACgS8AAoEyAAKBNQACgTcAAoE9AAKBTwACgVwAAoGnAAKBygACgeoAAoIKAAKCDAACgg4AAoIQAAKCEgACghUAAoIWAAKCFwACghoAAoIbAAKCHQACgh4AAoIgAAKCIwACgiQAAoIlAAKCKAACgikAAoIuAAKCOwACgkAAAoJCAAKCRAACgkkAAoJMAAKCTwACglEAAoJ2AAKCmgACgsEAAoLlAAKC6AACguoAAoLsAAKC7gACgvAAAoLyAAKC8wACgvYAAoMDAAKDFAACgxYAAoMYAAKDGgACgxwAAoMeAAKDIAACgyIAAoMkAAKDNQACgzgAAoM7AAKDPgACg0EAAoNEAAKDRwACg0oAAoNNAAKDTwACg44AAoOQAAKDkgACg5QAAoOXAAKDmAACg5kAAoOaAAKDmwACg50AAoOfAAKDoAACg6EAAoOjAAKDpAACg+MAAoPlAAKD5wACg+kAAoPsAAKD7QACg+4AAoPvAAKD8AACg/IAAoP0AAKD9QACg/YAAoP4AAKD+QAChDgAAoQ6AAKEPQAChD8AAoRCAAKEQwAChEQAAoRFAAKERgAChEgAAoRKAAKESwAChEwAAoROAAKETwAChFwAAoRdAAKEXgAChGAAAoSfAAKEoQAChKMAAoSlAAKEqAAChKkAAoSqAAKEqwAChKwAAoSuAAKEsAAChLEAAoSyAAKEtAAChLUAAoT0AAKE9gAChPgAAoT6AAKE/QAChP4AAoT/AAKFAAAChQEAAoUDAAKFBQAChQYAAoUHAAKFCQAChQoAAoVJAAKFSwAChU0AAoVPAAKFUgAChVMAAoVUAAKFVQAChVYAAoVYAAKFWgAChVsAAoVcAAKFXgAChV8AAoWeAAKFoAAChaIAAoWkAAKFpwAChagAAoWpAAKFqgAChasAAoWtAAKFrwAChbAAAoWxAAKFswAChbQAAoXzAAKF9QAChfcAAoX5AAKF/AAChf0AAoX+AAKF/wAChgAAAoYCAAKGBAAChgUAAoYGAAKGCAAChgkAAoYuAAKGUgAChnkAAoadAAKGoAAChqIAAoakAAKGpgAChqgAAoaqAAKGqwAChq4AAoa7AAKGygAChswAAobOAAKG0AAChtIAAobUAAKG1gAChtgAAobnAAKG6gAChu0AAobwAAKG8wAChvYAAob5AAKG/AAChv4AAoc9AAKHPwACh0EAAodDAAKHRgACh0cAAodIAAKHSQACh0oAAodMAAKHTgACh08AAodQAAKHUgACh1MAAoeSAAKHlAACh5YAAoeYAAKHmwACh5wAAoedAAKHngACh58AAoehAAKHowACh6QAAoelAAKHpwACh6gAAofnAAKH6QACh+sAAoftAAKH8AACh/EAAofyAAKH8wACh/QAAof2AAKH+AACh/kAAof6AAKH/AACh/0AAog8AAKIPgACiEAAAohCAAKIRQACiEYAAohHAAKISAACiEkAAohLAAKITQACiE4AAohPAAKIUQACiFIAAoiRAAKIkwACiJUAAoiXAAKImgACiJsAAoicAAKInQACiJ4AAoigAAKIogACiKMAAoikAAKIpgACiKcAAojmAAKI6AACiOoAAojsAAKI7wACiPAAAojxAAKI8gACiPMAAoj1AAKI9wACiPgAAoj5AAKI+wACiPwAAok7AAKJPQACiT8AAolBAAKJRAACiUUAAolGAAKJRwACiUgAAolKAAKJTAACiU0AAolOAAKJUAACiVEAAomcAAKJvwACid8AAon/AAKKAQACigMAAooFAAKKBwACigoAAooLAAKKDAACig8AAooQAAKKEgACihMAAooVAAKKGAACihkAAooaAAKKHQACih4AAoojAAKKMAACijUAAoo3AAKKOQACij4AAopBAAKKRAACikYAAoprAAKKjwACirYAAoraAAKK3QACit8AAorhAAKK4wACiuUAAornAAKK6AACiusAAor4AAKLCQACiwsAAosNAAKLDwACixEAAosTAAKLFQACixcAAosZAAKLKgACiy0AAoswAAKLMwACizYAAos5AAKLPAACiz8AAotCAAKLRAACi4MAAouFAAKLhwACi4kAAouMAAKLjQACi44AAouPAAKLkAACi5IAAouUAAKLlQACi5YAAouYAAKLmQACi9gAAovaAAKL3AACi94AAovhAAKL4gACi+MAAovkAAKL5QACi+cAAovpAAKL6gACi+sAAovtAAKL7gACjC0AAowvAAKMMgACjDQAAow3AAKMOAACjDkAAow6AAKMOwACjD0AAow/AAKMQAACjEEAAoxDAAKMRAACjFEAAoxSAAKMUwACjFUAAoyUAAKMlgACjJgAAoyaAAKMnQACjJ4AAoyfAAKMoAACjKEAAoyjAAKMpQACjKYAAoynAAKMqQACjKoAAozpAAKM6wACjO0AAozvAAKM8gACjPMAAoz0AAKM9QACjPYAAoz4AAKM+gACjPsAAoz8AAKM/gACjP8AAo0+AAKNQAACjUIAAo1EAAKNRwACjUgAAo1JAAKNSgACjUsAAo1NAAKNTwACjVAAAo1RAAKNUwACjVQAAo2TAAKNlQACjZcAAo2ZAAKNnAACjZ0AAo2eAAKNnwACjaAAAo2iAAKNpAACjaUAAo2mAAKNqAACjakAAo3oAAKN6gACjewAAo3uAAKN8QACjfIAAo3zAAKN9AACjfUAAo33AAKN+QACjfoAAo37AAKN/QACjf4AAo4jAAKORwACjm4AAo6SAAKOlQACjpcAAo6ZAAKOmwACjp0AAo6fAAKOoAACjqMAAo6wAAKOvwACjsEAAo7DAAKOxQACjscAAo7JAAKOywACjs0AAo7cAAKO3wACjuIAAo7lAAKO6AACjusAAo7uAAKO8QACjvMAAo8yAAKPNAACjzYAAo84AAKPOwACjzwAAo89AAKPPgACjz8AAo9BAAKPQwACj0QAAo9FAAKPRwACj0gAAo+HAAKPiQACj4sAAo+NAAKPkAACj5EAAo+SAAKPkwACj5QAAo+WAAKPmAACj5kAAo+aAAKPnAACj50AAo/cAAKP3gACj+AAAo/iAAKP5QACj+YAAo/nAAKP6AACj+kAAo/rAAKP7QACj+4AAo/vAAKP8QACj/IAApAxAAKQMwACkDYAApA4AAKQOwACkDwAApA9AAKQPgACkD8AApBBAAKQQwACkEQAApBFAAKQRwACkEgAApCHAAKQiQACkIsAApCNAAKQkAACkJEAApCSAAKQkwACkJQAApCWAAKQmAACkJkAApCaAAKQnAACkJ0AApDcAAKQ3gACkOAAApDiAAKQ5QACkOYAApDnAAKQ6AACkOkAApDrAAKQ7QACkO4AApDvAAKQ8QACkPIAApExAAKRMwACkTUAApE3AAKROgACkTsAApE8AAKRPQACkT4AApFAAAKRQgACkUMAApFEAAKRRgACkUcAApGSAAKRtQACkdUAApH1AAKR9wACkfkAApH7AAKR/QACkgAAApIBAAKSAgACkgUAApIGAAKSCAACkgkAApILAAKSDQACkg4AApIPAAKSEgACkhMAApIYAAKSJQACkioAApIsAAKSLgACkjMAApI2AAKSOQACkjsAApJgAAKShAACkqsAApLPAAKS0gACktQAApLWAAKS2AACktoAApLcAAKS3QACkuAAApLtAAKS/gACkwAAApMCAAKTBAACkwYAApMIAAKTCgACkwwAApMOAAKTHwACkyIAApMlAAKTKAACkysAApMuAAKTMQACkzQAApM3AAKTOQACk3gAApN6AAKTfAACk34AApOBAAKTggACk4MAApOEAAKThQACk4cAApOJAAKTigACk4sAApONAAKTjgACk80AApPPAAKT0QACk9MAApPWAAKT1wACk9gAApPZAAKT2gACk9wAApPeAAKT3wACk+AAApPiAAKT4wAClCIAApQkAAKUJwAClCkAApQsAAKULQAClC4AApQvAAKUMAAClDIAApQ0AAKUNQAClDYAApQ4AAKUOQAClEYAApRHAAKUSAAClEoAApSJAAKUiwAClI0AApSPAAKUkgAClJMAApSUAAKUlQAClJYAApSYAAKUmgAClJsAApScAAKUngAClJ8AApTeAAKU4AAClOIAApTkAAKU5wAClOgAApTpAAKU6gAClOsAApTtAAKU7wAClPAAApTxAAKU8wAClPQAApUzAAKVNQAClTcAApU5AAKVPAAClT0AApU+AAKVPwAClUAAApVCAAKVRAAClUUAApVGAAKVSAAClUkAApWIAAKVigAClYwAApWOAAKVkQAClZIAApWTAAKVlAAClZUAApWXAAKVmQAClZoAApWbAAKVnQAClZ4AApXdAAKV3wACleEAApXjAAKV5gAClecAApXoAAKV6QACleoAApXsAAKV7gACle8AApXwAAKV8gAClfMAApYYAAKWPAAClmMAApaHAAKWigAClowAApaOAAKWkAAClpIAApaUAAKWlQAClpgAApalAAKWtAAClrYAApa4AAKWugAClrwAApa+AAKWwAAClsIAApbRAAKW1AACltcAApbaAAKW3QACluAAApbjAAKW5gAClugAApcnAAKXKQAClysAApctAAKXMAAClzEAApcyAAKXMwAClzQAApc2AAKXOAAClzkAApc6AAKXPAAClz0AApd8AAKXfgACl4AAApeCAAKXhQACl4YAApeHAAKXiAACl4kAApeLAAKXjQACl44AApePAAKXkQACl5IAApfRAAKX0wACl9UAApfXAAKX2gACl9sAApfcAAKX3QACl94AApfgAAKX4gACl+MAApfkAAKX5gACl+cAApgmAAKYKAACmCoAApgsAAKYLwACmDAAApgxAAKYMgACmDMAApg1AAKYNwACmDgAApg5AAKYOwACmDwAAph7AAKYfQACmH8AApiBAAKYhAACmIUAApiGAAKYhwACmIgAApiKAAKYjAACmI0AApiOAAKYkAACmJEAApjQAAKY0gACmNQAApjWAAKY2QACmNoAApjbAAKY3AACmN0AApjfAAKY4QACmOIAApjjAAKY5QACmOYAApklAAKZJwACmSkAApkrAAKZLgACmS8AApkwAAKZMQACmTIAApk0AAKZNgACmTcAApk4AAKZOgACmTsAApmGAAKZqQACmckAApnpAAKZ6wACme0AApnvAAKZ8QACmfQAApn1AAKZ9gACmfkAApn6AAKZ/AACmf0AApn/AAKaAgACmgMAApoEAAKaBwACmggAApoNAAKaGgACmh8AApohAAKaIwACmigAAporAAKaLgACmjAAAppVAAKaeQACmqAAAprEAAKaxwACmskAAprLAAKazQACms8AAprRAAKa0gACmtUAApriAAKa8wACmvUAApr3AAKa+QACmvsAApr9AAKa/wACmwEAApsDAAKbFAACmxcAApsaAAKbHQACmyAAApsjAAKbJgACmykAApssAAKbLgACm20AAptvAAKbcQACm3MAApt2AAKbdwACm3gAApt5AAKbegACm3wAApt+AAKbfwACm4AAApuCAAKbgwACm8IAApvEAAKbxgACm8gAApvLAAKbzAACm80AApvOAAKbzwACm9EAApvTAAKb1AACm9UAApvXAAKb2AACnBcAApwZAAKcHAACnB4AApwhAAKcIgACnCMAApwkAAKcJQACnCcAApwpAAKcKgACnCsAApwtAAKcLgACnDsAApw8AAKcPQACnD8AApx+AAKcgAACnIIAApyEAAKchwACnIgAApyJAAKcigACnIsAApyNAAKcjwACnJAAApyRAAKckwACnJQAApzTAAKc1QACnNcAApzZAAKc3AACnN0AApzeAAKc3wACnOAAApziAAKc5AACnOUAApzmAAKc6AACnOkAAp0oAAKdKgACnSwAAp0uAAKdMQACnTIAAp0zAAKdNAACnTUAAp03AAKdOQACnToAAp07AAKdPQACnT4AAp19AAKdfwACnYEAAp2DAAKdhgACnYcAAp2IAAKdiQACnYoAAp2MAAKdjgACnY8AAp2QAAKdkgACnZMAAp3SAAKd1AACndYAAp3YAAKd2wACndwAAp3dAAKd3gACnd8AAp3hAAKd4wACneQAAp3lAAKd5wACnegAAp4NAAKeMQACnlgAAp58AAKefwACnoEAAp6DAAKehQACnocAAp6JAAKeigACno0AAp6aAAKeqQACnqsAAp6tAAKerwACnrEAAp6zAAKetQACnrcAAp7GAAKeyQACnswAAp7PAAKe0gACntUAAp7YAAKe2wACnt0AAp8cAAKfHgACnyAAAp8iAAKfJQACnyYAAp8nAAKfKAACnykAAp8rAAKfLQACny4AAp8vAAKfMQACnzIAAp9xAAKfcwACn3UAAp93AAKfegACn3sAAp98AAKffQACn34AAp+AAAKfggACn4MAAp+EAAKfhgACn4cAAp/GAAKfyAACn8oAAp/MAAKfzwACn9AAAp/RAAKf0gACn9MAAp/VAAKf1wACn9gAAp/ZAAKf2wACn9wAAqAbAAKgHQACoCAAAqAiAAKgJQACoCYAAqAnAAKgKAACoCkAAqArAAKgLQACoC4AAqAvAAKgMQACoDIAAqBxAAKgcwACoHUAAqB3AAKgegACoHsAAqB8AAKgfQACoH4AAqCAAAKgggACoIMAAqCEAAKghgACoIcAAqDGAAKgyAACoMoAAqDMAAKgzwACoNAAAqDRAAKg0gACoNMAAqDVAAKg1wACoNgAAqDZAAKg2wACoNwAAqEbAAKhHQACoR8AAqEhAAKhJAACoSUAAqEmAAKhJwACoSgAAqEqAAKhLAACoS0AAqEuAAKhMAACoTEAAqE6AAKhOwACoT0AAqGAAAKhpAACocgAAqHrAAKiEgACojIAAqJZAAKigAACoqAAAqLEAAKi6AACouoAAqLtAAKi7wACovEAAqLzAAKi9gACovkAAqL7AAKi/QACowAAAqMCAAKjBAACowcAAqMKAAKjCwACoxAAAqMdAAKjIAACoyIAAqMlAAKjKAACoyoAAqNPAAKjcwACo5oAAqO+AAKjwQACo8MAAqPFAAKjxwACo8kAAqPLAAKjzAACo88AAqPcAAKj7wACo/EAAqPzAAKj9QACo/cAAqP5AAKj+wACo/0AAqP/AAKkAQACpBQAAqQXAAKkGgACpB0AAqQgAAKkIwACpCYAAqQpAAKkLAACpC8AAqQxAAKkcAACpHIAAqR1AAKkdwACpHoAAqR7AAKkfAACpH0AAqR+AAKkgAACpIIAAqSDAAKkhAACpIYAAqSHAAKkkAACpJEAAqSTAAKk0gACpNQAAqTWAAKk2AACpNsAAqTcAAKk3QACpN4AAqTfAAKk4QACpOMAAqTkAAKk5QACpOcAAqToAAKlJwACpSkAAqUsAAKlLgACpTEAAqUyAAKlMwACpTQAAqU1AAKlNwACpTkAAqU6AAKlOwACpT0AAqU+AAKlRwACpUgAAqVKAAKliQACpYsAAqWNAAKljwACpZIAAqWTAAKllAACpZUAAqWWAAKlmAACpZoAAqWbAAKlnAACpZ4AAqWfAAKl3gACpeAAAqXjAAKl5QACpegAAqXpAAKl6gACpesAAqXsAAKl7gACpfAAAqXxAAKl8gACpfQAAqX1AAKl/gACpf8AAqYBAAKmQAACpkIAAqZEAAKmRgACpkkAAqZKAAKmSwACpkwAAqZNAAKmTwACplEAAqZSAAKmUwACplUAAqZWAAKmlQACppcAAqaaAAKmnAACpp8AAqagAAKmoQACpqIAAqajAAKmpQACpqcAAqaoAAKmqQACpqsAAqasAAKmuQACproAAqa7AAKmvQACpvwAAqb+AAKnAAACpwIAAqcFAAKnBgACpwcAAqcIAAKnCQACpwsAAqcNAAKnDgACpw8AAqcRAAKnEgACp1EAAqdTAAKnVgACp1gAAqdbAAKnXAACp10AAqdeAAKnXwACp2EAAqdjAAKnZAACp2UAAqdnAAKnaAACp3cAAqeEAAKniQACp4wAAqePAAKnlAACp5cAAqeaAAKnnAACp6EAAqfsAAKoDwACqC8AAqhPAAKoUQACqFMAAqhVAAKoVwACqFoAAqhbAAKoXAACqF8AAqhgAAKoYgACqGMAAqhlAAKoaAACqGkAAqhqAAKobQACqG4AAqhzAAKogAACqIUAAqiHAAKoiQACqI4AAqiRAAKolAACqJYAAqi7AAKo3wACqQYAAqkqAAKpLQACqS8AAqkxAAKpMwACqTUAAqk3AAKpOAACqTsAAqlIAAKpWQACqVsAAqldAAKpXwACqWEAAqljAAKpZQACqWcAAqlpAAKpegACqX0AAqmAAAKpgwACqYYAAqmJAAKpjAACqY8AAqmSAAKplAACqdMAAqnVAAKp1wACqdkAAqncAAKp3QACqd4AAqnfAAKp4AACqeIAAqnkAAKp5QACqeYAAqnoAAKp6QACqigAAqoqAAKqLAACqi4AAqoxAAKqMgACqjMAAqo0AAKqNQACqjcAAqo5AAKqOgACqjsAAqo9AAKqPgACqn0AAqp/AAKqggACqoQAAqqHAAKqiAACqokAAqqKAAKqiwACqo0AAqqPAAKqkAACqpEAAqqTAAKqlAACqqEAAqqiAAKqowACqqUAAqrkAAKq5gACqugAAqrqAAKq7QACqu4AAqrvAAKq8AACqvEAAqrzAAKq9QACqvYAAqr3AAKq+QACqvoAAqs5AAKrOwACqz0AAqs/AAKrQgACq0MAAqtEAAKrRQACq0YAAqtIAAKrSgACq0sAAqtMAAKrTgACq08AAquOAAKrkAACq5IAAquUAAKrlwACq5gAAquZAAKrmgACq5sAAqudAAKrnwACq6AAAquhAAKrowACq6QAAqvjAAKr5QACq+cAAqvpAAKr7AACq+0AAqvuAAKr7wACq/AAAqvyAAKr9AACq/UAAqv2AAKr+AACq/kAAqw4AAKsOgACrDwAAqw+AAKsQQACrEIAAqxDAAKsRAACrEUAAqxHAAKsSQACrEoAAqxLAAKsTQACrE4AAqxzAAKslwACrL4AAqziAAKs5QACrOcAAqzpAAKs6wACrO0AAqzvAAKs8AACrPMAAq0AAAKtDwACrREAAq0TAAKtFQACrRcAAq0ZAAKtGwACrR0AAq0sAAKtLwACrTIAAq01AAKtOAACrTsAAq0+AAKtQQACrUMAAq2CAAKthAACrYYAAq2IAAKtiwACrYwAAq2NAAKtjgACrY8AAq2RAAKtkwACrZQAAq2VAAKtlwACrZgAAq3XAAKt2QACrdsAAq3dAAKt4AACreEAAq3iAAKt4wACreQAAq3mAAKt6AACrekAAq3qAAKt7AACre0AAq4sAAKuLgACrjAAAq4yAAKuNQACrjYAAq43AAKuOAACrjkAAq47AAKuPQACrj4AAq4/AAKuQQACrkIAAq6BAAKugwACroYAAq6IAAKuiwACrowAAq6NAAKujgACro8AAq6RAAKukwACrpQAAq6VAAKulwACrpgAAq7XAAKu2QACrtsAAq7dAAKu4AACruEAAq7iAAKu4wACruQAAq7mAAKu6AACrukAAq7qAAKu7AACru0AAq8sAAKvLgACrzAAAq8yAAKvNQACrzYAAq83AAKvOAACrzkAAq87AAKvPQACrz4AAq8/AAKvQQACr0IAAq+BAAKvgwACr4UAAq+HAAKvigACr4sAAq+MAAKvjQACr44AAq+QAAKvkgACr5MAAq+UAAKvlgACr5cAAq/iAAKwBQACsCUAArBFAAKwRwACsEkAArBLAAKwTQACsFAAArBRAAKwUgACsFUAArBWAAKwWAACsFkAArBbAAKwXgACsF8AArBgAAKwYwACsGQAArBpAAKwdgACsHsAArB9AAKwfwACsIQAArCHAAKwigACsIwAArCxAAKw1QACsPwAArEgAAKxIwACsSUAArEnAAKxKQACsSsAArEtAAKxLgACsTEAArE+AAKxTwACsVEAArFTAAKxVQACsVcAArFZAAKxWwACsV0AArFfAAKxcAACsXMAArF2AAKxeQACsXwAArF/AAKxggACsYUAArGIAAKxigACsckAArHLAAKxzQACsc8AArHSAAKx0wACsdQAArHVAAKx1gACsdgAArHaAAKx2wACsdwAArHeAAKx3wACsh4AArIgAAKyIgACsiQAArInAAKyKAACsikAArIqAAKyKwACsi0AArIvAAKyMAACsjEAArIzAAKyNAACsnMAArJ1AAKyeAACsnoAArJ9AAKyfgACsn8AArKAAAKygQACsoMAArKFAAKyhgACsocAArKJAAKyigACspcAArKYAAKymQACspsAArLaAAKy3AACst4AArLgAAKy4wACsuQAArLlAAKy5gACsucAArLpAAKy6wACsuwAArLtAAKy7wACsvAAArMvAAKzMQACszMAArM1AAKzOAACszkAArM6AAKzOwACszwAArM+AAKzQAACs0EAArNCAAKzRAACs0UAArOEAAKzhgACs4gAArOKAAKzjQACs44AArOPAAKzkAACs5EAArOTAAKzlQACs5YAArOXAAKzmQACs5oAArPZAAKz2wACs90AArPfAAKz4gACs+MAArPkAAKz5QACs+YAArPoAAKz6gACs+sAArPsAAKz7gACs+8AArQuAAK0MAACtDIAArQ0AAK0NwACtDgAArQ5AAK0OgACtDsAArQ9AAK0PwACtEAAArRBAAK0QwACtEQAArRpAAK0jQACtLQAArTYAAK02wACtN0AArTfAAK04QACtOMAArTlAAK05gACtOkAArT2AAK1BQACtQcAArUJAAK1CwACtQ0AArUPAAK1EQACtRMAArUiAAK1JQACtSgAArUrAAK1LgACtTEAArU0AAK1NwACtTkAArV4AAK1egACtX0AArV/AAK1ggACtYMAArWEAAK1hQACtYYAArWIAAK1igACtYsAArWMAAK1jgACtY8AArXOAAK10AACtdIAArXUAAK11wACtdgAArXZAAK12gACtdsAArXdAAK13wACteAAArXhAAK14wACteQAArYjAAK2JQACticAArYpAAK2LAACti0AArYuAAK2LwACtjAAArYyAAK2NAACtjUAArY2AAK2OAACtjkAArZ4AAK2egACtn0AArZ/AAK2ggACtoMAAraEAAK2hQACtoYAAraIAAK2igACtosAAraMAAK2jgACto8AArbOAAK20AACttIAArbUAAK21wACttgAArbZAAK22gACttsAArbdAAK23wACtuAAArbhAAK24wACtuQAArcjAAK3JQACtycAArcpAAK3LAACty0AArcuAAK3LwACtzAAArcyAAK3NAACtzUAArc2AAK3OAACtzkAArd4AAK3egACt3wAArd+AAK3gQACt4IAAreDAAK3hAACt4UAAreHAAK3iQACt4oAAreLAAK3jQACt44AAreXAAK3mAACt5oAArenAAK3qAACt6kAArerAAK3uAACt7kAAre6AAK3vAACt8kAArfKAAK3ywACt80AArfWAAK35QACt/IAArgBAAK4EwACuCcAArg+AAK4UAACuFkAArhaAAK4XAACuGkAArhqAAK4awACuG0AArhuAAK4dwACuIEAAriIAAAAAAAABAIAAAAAAABowQAAAAAAAAAAAAAAAAACuJA= - - + + lightPrimaryHex + - - 1 - lastPlayed - + + title + - hasSubscription - + speed + - - 1 - lastPlayedItem - + + duration + - - 1 - hardcoverBook - + + isFinished + - email - + lightSystemBackgroundHex + - - donationMade - + + 1 + lastPlayedItem + 1 items - + - - 1 - libraryItem - + + type + - lastPlayDate - + darkTertiarySystemBackgroundHex + - - isFinished - + + 1 + library + - - artworkURL - + + 1 + extractedThemes + currentTime - + - userBookID - + darkSecondarySystemBackgroundHex + title - + - id - - - - artworkURL - + currentTime + - + 1 - item - + currentTheme + + + + darkAccentHex + - time - + lightSystemGroupedBackgroundHex + - title - + artworkURL + - lightTertiarySystemBackgroundHex - + lightSecondaryHex + - lightSystemFillHex - + darkSecondarySystemFillHex + - - lightSeparatorHex - + + 1 + folder + - lightSecondarySystemFillHex - - - - uuid - + start + - + 1 - lastPlayed - + hardcoverBook + + + + Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 10.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 +cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIAgALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78D1APVA90D3gPqA/4EDQQcBCsELwQ+BE0EXARrBHoEhgSYBJkEmgSbBJwEnQSeBJ8ErgSvBL4EzQTcBN0E7AT7BQoFEgUnBSgFMAU8BVAFXwVuBX0FgQWQBZ8FrgW9BcwF2AXqBfkGCAYXBiYGNQZEBlMGWwZwBnEGeQaFBpkGqAa3BsYGygbZBugG9wcGBxUHIQczB0IHUQdgB28HiQeKB5AHnAeyB8EHxAfTB+IH5Qf0CAMIBggVCCQIKAg3CEYIUghTCFQIVQhqCGsIcwh/CJMIogixCMAIxAjTCOII8QkACQ8JGwktCTwJSwlaCWkJeAmHCZYJqwmsCbQJwAnUCeMJ8goBCgUKFAojCjIKQQpQClwKbgp9CowKmwqqCrkKyArXCuwK7Qr1CwELFQskCzMLQgtGC1ULZAtzC4ILkQudC68LvgvNC9wL6wv6DAkMGAwtDC4MNgxCDFYMZQx0DIMMhwyWDKUMtAzDDNIM3gzwDP8NDg0dDSwNRg1HDU0NWQ1vDX4NgQ2QDZENoA2jDbINwQ3EDdMN4g3mDfUOBA4+Dj8OQA5BDkIOQw5EDkUORg5HDkgOSQ5KDksOTA5NDk4OTw5QDlEOUg5TDlQOVQ5WDlcObA5tDnUOgQ6VDqQOsw7CDsYO1Q7kDvMPAg8DDxIPHg8wDz8PTg9dD2wPbQ98D4sPmg+vD7APuA/ED9gP5w/2EAUQCRAYECcQNhBFEFQQYBByEIEQkBCfEK4QvRDMENsQ8BDxEPkRBREZESgRNxFGEUoRWRF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UWJxYqFi8WMtY2ljpWO1Y/FkLWRpZKVk4WURZVlllWXRZg1mSWaFZsFm/WdRZ1VndWelZ/VoMWhtaKlouWj1aTFpbWmpaeVqFWpdaplq1WsRa01riWvFbAFsVWxZbHlsqWz5bTVtcW2tbb1t+W41bnFurW7pbxlvYW+db9lwFXBRcI1wyXEFcRFxTXGJccVx1XHZcfFyDXIRck1yiXLFctVzPXNBc1lziXPhdB10KXRldKF0rXTpdSV1MXVtdal1uXX1djF2YXZldml2bXbBdsV25XcVd2V3oXfdeBl4KXhleKF43XkZeVV5hXnNegl6RXqBer16+Xs1e3F7xXvJe+l8GXxpfKV84X0dfS19aX2lfeF+HX5Zfol+0X8Nf0l/hX/Bf/2AOYB1gMmAzYDtgR2BbYGpgeWCIYIxgm2CqYLlgyGDXYONg9WEEYRNhImExYUBhT2FeYXNhdGF8YYhhnGGrYbphyWHNYdxh62H6YgliGGIkYjZiRWJUYmNicmKBYpBin2KiYrxivWLDYs9i5WL0YvdjBmMVYxhjJ2M2YzljSGNXY1tjamN5Y3pjgmODY5hjmWOhY61jwWPQY99j7mPyZAFkEGQfZC5kPWRJZFtkamR5ZIhkl2SmZLVkxGTZZNpk4mTuZQJlEWUgZS9lM2VCZVFlYGVvZX5limWcZatlumXJZdhl52X2ZgVmCGYMZhBmFGYcZh9mI2YkVSRudWxs1gANAA4ADwAQABEAEgATABQAFQAWABcAGF8QD194ZF9yb290UGFja2FnZVYkY2xhc3NdX3hkX21vZGVsTmFtZVxfeGRfY29tbWVudHNfEBVfY29uZmlndXJhdGlvbnNCeU5hbWVfEBdfbW9kZWxWZXJzaW9uSWRlbnRpZmllcoACgQgBgACBB/6BB/+BCADeABoAGwAcAB0AHgAfACAADgAhACIAIwAkACUAJgAnACgAKQAJACcAFQAtAC4ALwAwADEAJwAnABVfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASBB/yBB/qAAYAEgACBB/uBB/0QAIAFgAOABIAEgABQU1lFU9MAOAA5AA4AOgBFAFBXTlMua2V5c1pOUy5vYmplY3RzqgA7ADwAPQA+AD8AQABBAEIAQwBEgAaAB4AIgAmACoALgAyADYAOgA+qAEYARwBIAEkASgBLAEwATQBOAE+AEIEFNoEGhYEGDIEGrYBhgQdDgQe2gNaBAUWAL1ZGb2xkZXJdSGFyZGNvdmVyQm9va1RCb29rWEJvb2ttYXJrV0NoYXB0ZXJbTGlicmFyeUl0ZW1XQWNjb3VudF5QbGF5YmFja1JlY29yZFdMaWJyYXJ5VVRoZW1l3xAQAFwAXQBeAF8AHwBgAGEAIQBiAGMADgAjAGQAZQAmAGYAZwBoACcAJwATAGwAbQAvACcAZwBwADsAZwBzAHQAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZVtfaXNBYnN0cmFjdIASgDaABIAEgAKAE4ED/4AEgBKBBAGABoASgQdCgBEIEjkWQghXb3JkZXJlZNMAOAA5AA4AeQB7AFChAHqAFKEAfIAVgC9eWERfUFN0ZXJlb3R5cGXZAB8AIwCAAA4AJgCBACEAZgCCAEYAegBnAIYAFQAnAC8AdQCKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgBCAFIASgDWAAIAECIAW0wA4ADkADgCMAJYAUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pAJcAmACZAJoAmwCcAJ0AngCfgCCAJIAmgCiAKYArgC2AMIA0gC9fEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGVhEUE1VbmlxdWVuZXNzQ29uc3RyYWludHNfEBpYRF9QU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QGVhEX1BTS19mZXRjaFJlcXVlc3RzQXJyYXlfEBFYRF9QU0tfaXNBYnN0cmFjdF8QD1hEX1BTS191c2VySW5mb18QE1hEX1BTS19jbGFzc01hcHBpbmdfEBZYRF9QU0tfZW50aXR5Q2xhc3NOYW1l3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAtgAVAHwAdQB1AHUALwB1AL0AjQB1AHUAFQB1VV90eXBlWF9kZWZhdWx0XF9hc3NvY2lhdGlvbltfaXNSZWFkT25seVlfaXNTdGF0aWNZX2lzVW5pcXVlWl9pc0Rlcml2ZWRaX2lzT3JkZXJlZFxfaXNDb21wb3NpdGVXX2lzTGVhZoAAgCGAAIAVCAgICIAjgBcICIAACNIAOQAOAMQAxaCAItIAxwDIAMkAylokY2xhc3NuYW1lWCRjbGFzc2VzXk5TTXV0YWJsZUFycmF5owDJAMsAzFdOU0FycmF5WE5TT2JqZWN00gDHAMgAzgDPXxAQWERVTUxQcm9wZXJ0eUltcKQA0ADRANIAzF8QEFhEVU1MUHJvcGVydHlJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVANUAFQB8AHUAdQB1AC8AdQC9AI4AdQB1ABUAdYAAgCWAAIAVCAgICIAjgBgICIAACFpQbGF5bGlzdFYz3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUA5QAVAHwAdQB1AHUALwB1AL0AjwB1AHUAFQB1gACAJ4AAgBUICAgIgCOAGQgIgAAI0gA5AA4A8wDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVAHwAdQB1AHUALwB1AL0AkAB1AHUAFQB1gACAAIAAgBUICAgIgCOAGggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBBgAVAHwAdQB1AHUALwB1AL0AkQB1AHUAFQB1gACAKoAAgBUICAgIgCOAGwgIgAAI0gA5AA4BFADFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVAHwAdQB1AHUALwB1AL0AkgB1AHUAFQB1gACALIAAgBUICAgIgCOAHAgIgAAICN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVASgAFQB8AHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgC6AAIAVCAgICIAjgB0ICIAACNMAOAA5AA4BNgE3AFCgoIAv0gDHAMgBOgE7XxATTlNNdXRhYmxlRGljdGlvbmFyeaMBOgE8AMxcTlNEaWN0aW9uYXJ53xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBPwAVAHwAdQB1AHUALwB1AL0AlAB1AHUAFQB1gACAMYAAgBUICAgIgCOAHggIgAAI1gAjAA4AJgBmAB8AIQFNAU4AFQB1ABUAL4AygDOAAAiAAF8QFFhER2VuZXJpY1JlY29yZENsYXNz0gDHAMgBVAFVXVhEVU1MQ2xhc3NJbXCmAVYBVwFYAVkBWgDMXVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAOwAVAHwAdQB1AHUALwB1AL0AlQB1AHUAFQB1gACABoAAgBUICAgIgCOAHwgIgAAI0gDHAMgBawFsXxASWERVTUxTdGVyZW90eXBlSW1wpwFtAW4BbwFwAXEBcgDMXxASWERVTUxTdGVyZW90eXBlSW1wXVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w0wA4ADkADgF0AXYAUKEBdYA3oQF3gDiAL1VpdGVtc98QEgCrAKwArQF7AB8ArwCwAXwAIQCuAX0AsQAOACMAsgCzACYAtAAVABUAFQAnAEYAdQB1AYUALwB1AGcAdQGJAXUAdQB1AY0AdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgBAICIA6CIASCIDBgDcICIA5CBJvKqLA0wA4ADkADgGRAZQAUKIBkgGTgDuAPKIBlQGWgD2AUoAvXxASWERfUFByb3BTdGVyZW90eXBlXxAQWERfUFJfU3RlcmVvdHlwZdkAHwAjAZsADgAmAZwAIQBmAZ0BdwGSAGcAhgAVACcALwB1AaVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAOIA7gBKANYAAgAQIgD7TADgAOQAOAacBsABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqAGxAbIBswG0AbUBtgG3AbiAR4BIgEmAS4BMgE6AT4BRgC9fEBtYRF9QUFNLX2lzU3RvcmVkSW5UcnV0aEZpbGVfEBtYRF9QUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBBYRF9QUFNLX3VzZXJJbmZvXxARWERfUFBTS19pc0luZGV4ZWRfEBJYRF9QUFNLX2lzT3B0aW9uYWxfEBpYRF9QUFNLX2lzU3BvdGxpZ2h0SW5kZXhlZF8QEVhEX1BQU0t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gAEsAL1lfc3BlY2lmaWNYX2dlbmVyYWyBBzyAAIEGhYEGhYEHO4Bh3xAQUyNTJFMlUyYAH1MnUygAIVMpUyoADgAjUytTLAAmAGYAZ1MuACcAJwATUzIAbQAvACcAZwBwAD0AZ1M5UzoAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgQaXgASABIACgQaHgQP/gASAEoEEAYAIgBKBBzqBBoYIErLnBaTTADgAOQAOUz5TQABQoQB6gBShU0GBBoiAL9kAHwAjU0QADgAmU0UAIQBmU0YASAB6AGcAhgAVACcALwB1U05fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBoWAFIASgDWAAIAECIEGidMAOAA5AA5TUFNaAFCpAI0AjgCPAJAAkQCSAJMAlACVgBeAGIAZgBqAG4AcgB2AHoAfqVNbU1xTXVNeU19TYFNhU2JTY4EGioEGjIEGjYEGj4EGkIEGkoEGk4EGlYEGloAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVTZwAVU0EAdQB1AHUALwB1AL0AjQB1AHUAFQB1gACBBouAAIEGiAgICAiAI4AXCAiAAAjSADkADlN1AMWggCLfEA8AqwC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4AAAWOgAAFjwAABY+AAAWQAAAFkIAABZEAAAWRgAAFlkAABZbAAAWXQAAFl8AABZhAAAWYwAAFmUAABZnAAAWaQAAFmsAABZtAAAWgwAAFpYAABayAAAWzwAAFusAABb/AAAXEQAAFycAABdAAAAXfwAAF4UAABeOAAAXmwAAF6cAABexAAAXuwAAF8YAABfRAAAX3gAAF+YAABfoAAAX6gAAF+wAABfuAAAX7wAAF/AAABfxAAAX8gAAF/QAABf2AAAX9wAAF/gAABf6AAAX+wAAGAQAABgFAAAYBwAAGBAAABgbAAAYJAAAGDMAABg6AAAYQgAAGEsAABhUAAAYZwAAGHAAABiDAAAYmgAAGKwAABjrAAAY7QAAGO8AABjxAAAY8wAAGPQAABj1AAAY9gAAGPcAABj5AAAY+wAAGPwAABj9AAAY/wAAGQAAABkLAAAZSgAAGUwAABlOAAAZUAAAGVIAABlTAAAZVAAAGVUAABlWAAAZWAAAGVoAABlbAAAZXAAAGV4AABlfAAAZaAAAGWkAABlrAAAZqgAAGawAABmuAAAZsAAAGbIAABmzAAAZtAAAGbUAABm2AAAZuAAAGboAABm7AAAZvAAAGb4AABm/AAAZ/gAAGgAAABoCAAAaBAAAGgYAABoHAAAaCAAAGgkAABoKAAAaDAAAGg4AABoPAAAaEAAAGhIAABoTAAAaHAAAGh0AABofAAAaXgAAGmAAABpiAAAaZAAAGmYAABpnAAAaaAAAGmkAABpqAAAabAAAGm4AABpvAAAacAAAGnIAABpzAAAadAAAGrMAABq1AAAatwAAGrkAABq7AAAavAAAGr0AABq+AAAavwAAGsEAABrDAAAaxAAAGsUAABrHAAAayAAAGtUAABrWAAAa1wAAGtkAABriAAAa+AAAGv8AABsMAAAbSwAAG00AABtPAAAbUQAAG1MAABtUAAAbVQAAG1YAABtXAAAbWQAAG1sAABtcAAAbXQAAG18AABtgAAAbeQAAG3sAABt9AAAbfwAAG4AAABuCAAAbmQAAG6IAABuwAAAbvQAAG8sAABvgAAAb9AAAHAsAABwdAAAcXAAAHF4AABxgAAAcYgAAHGQAABxlAAAcZgAAHGcAABxoAAAcagAAHGwAABxtAAAcbgAAHHAAABxxAAAcegAAHI8AAByeAAAcswAAHMEAABzWAAAc6gAAHQEAAB0TAAAdIAAAHSMAAB0lAAAdKAAAHSoAAB0sAAAdMgAAHX0AAB2gAAAdwAAAHeAAAB3iAAAd5AAAHeYAAB3oAAAd6gAAHesAAB3sAAAd7gAAHe8AAB3xAAAd8gAAHfQAAB32AAAd9wAAHfgAAB36AAAd+wAAHgAAAB4NAAAeEgAAHhQAAB4WAAAeGwAAHh0AAB4fAAAeIQAAHjYAAB5JAAAebgAAHpIAAB65AAAe3QAAHt8AAB7hAAAe4wAAHuUAAB7nAAAe6QAAHuoAAB7sAAAe+QAAHwoAAB8MAAAfDgAAHxAAAB8SAAAfFAAAHxYAAB8YAAAfGgAAHysAAB8tAAAfLwAAHzEAAB8zAAAfNQAAHzcAAB85AAAfOwAAHz0AAB9bAAAfeQAAH4wAAB+gAAAftQAAH9IAAB/mAAAf/AAAIDsAACA9AAAgPwAAIEEAACBDAAAgRAAAIEUAACBGAAAgRwAAIEkAACBLAAAgTAAAIE0AACBPAAAgUAAAII8AACCRAAAgkwAAIJUAACCXAAAgmAAAIJkAACCaAAAgmwAAIJ0AACCfAAAgoAAAIKEAACCjAAAgpAAAIOMAACDlAAAg5wAAIOkAACDrAAAg7AAAIO0AACDuAAAg7wAAIPEAACDzAAAg9AAAIPUAACD3AAAg+AAAIQUAACEGAAAhBwAAIQkAACFIAAAhSgAAIUwAACFOAAAhUAAAIVEAACFSAAAhUwAAIVQAACFWAAAhWAAAIVkAACFaAAAhXAAAIV0AACGcAAAhngAAIaAAACGiAAAhpAAAIaUAACGmAAAhpwAAIagAACGqAAAhrAAAIa0AACGuAAAhsAAAIbEAACGyAAAh8QAAIfMAACH1AAAh9wAAIfkAACH6AAAh+wAAIfwAACH9AAAh/wAAIgEAACICAAAiAwAAIgUAACIGAAAiRQAAIkcAACJJAAAiSwAAIk0AACJOAAAiTwAAIlAAACJRAAAiUwAAIlUAACJWAAAiVwAAIlkAACJaAAAiaQAAIqgAACKqAAAirAAAIq4AACKwAAAisQAAIrIAACKzAAAitAAAIrYAACK4AAAiuQAAIroAACK8AAAivQAAIuIAACMGAAAjLQAAI1EAACNTAAAjVQAAI1cAACNZAAAjWwAAI10AACNeAAAjYAAAI20AACN8AAAjfgAAI4AAACOCAAAjhAAAI4YAACOIAAAjigAAI5kAACObAAAjnQAAI58AACOhAAAjpAAAI6cAACOqAAAjrAAAI74AACPSAAAj5AAAI/kAACQLAAAkGgAAJDcAACR2AAAkeAAAJHoAACR8AAAkfgAAJH8AACSAAAAkgQAAJIIAACSEAAAkhgAAJIcAACSIAAAkigAAJIsAACTKAAAkzAAAJM4AACTQAAAk0gAAJNMAACTUAAAk1QAAJNYAACTYAAAk2gAAJNsAACTcAAAk3gAAJN8AACThAAAlIAAAJSIAACUkAAAlJgAAJSgAACUpAAAlKgAAJSsAACUsAAAlLgAAJTAAACUxAAAlMgAAJTQAACU1AAAldAAAJXYAACV4AAAlegAAJXwAACV9AAAlfgAAJX8AACWAAAAlggAAJYQAACWFAAAlhgAAJYgAACWJAAAl3AAAJgAAACYkAAAmRAAAJmsAACaSAAAmsgAAJtkAACb9AAAnIAAAJ0cAACdrAAAnjwAAJ7MAACfaAAAn2wAAJ90AACffAAAn4QAAJ+MAACfmAAAn6AAAJ+oAACftAAAn7wAAJ/EAACf0AAAn9gAAJ/gAACf6AAAn/AAAJ/4AACgBAAAoBAAAKA0AACgaAAAoHQAAKB8AACgiAAAoJAAAKCYAAChLAAAobwAAKJYAACi6AAAovAAAKL4AACjAAAAowgAAKMQAACjGAAAoxwAAKMkAACjWAAAo6QAAKOsAACjtAAAo7wAAKPEAACjzAAAo9QAAKPcAACj5AAAo+wAAKQ4AACkQAAApEgAAKRQAACkWAAApGAAAKRoAACkcAAApHgAAKSAAACkiAAApYQAAKWMAACllAAApZwAAKWkAAClqAAApawAAKWwAACltAAApbwAAKXEAAClyAAApcwAAKXUAACl2AAApfwAAKYAAACmCAAApwQAAKcMAACnFAAApxwAAKckAACnKAAApywAAKcwAACnNAAApzwAAKdEAACnSAAAp0wAAKdUAACnWAAAqFQAAKhcAACoZAAAqGwAAKh0AACoeAAAqHwAAKiAAACohAAAqIwAAKiUAAComAAAqJwAAKikAACoqAAAqMwAAKjQAACo2AAAqdQAAKncAACp5AAAqewAAKn0AACp+AAAqfwAAKoAAACqBAAAqgwAAKoUAACqGAAAqhwAAKokAACqKAAAqyQAAKssAACrNAAAqzwAAKtEAACrSAAAq0wAAKtQAACrVAAAq1wAAKtkAACraAAAq2wAAKt0AACreAAAq5wAAKugAACrqAAArKQAAKysAACstAAArLwAAKzEAACsyAAArMwAAKzQAACs1AAArNwAAKzkAACs6AAArOwAAKz0AACs+AAArfQAAK38AACuBAAArgwAAK4UAACuGAAArhwAAK4gAACuJAAAriwAAK40AACuOAAArjwAAK5EAACuSAAArnwAAK6AAACuhAAArowAAK+IAACvkAAAr5gAAK+gAACvqAAAr6wAAK+wAACvtAAAr7gAAK/AAACvyAAAr8wAAK/QAACv2AAAr9wAALDYAACw4AAAsOgAALDwAACw+AAAsPwAALEAAACxBAAAsQgAALEQAACxGAAAsRwAALEgAACxKAAAsSwAALFcAACxkAAAsjQAALI8AACyRAAAskwAALJUAACyXAAAsmQAALJsAACydAAAsnwAALKEAACyjAAAspQAALKcAACypAAAsqwAALK0AACyvAAAssQAALLMAACzcAAAs3gAALOAAACziAAAs5QAALOgAACzrAAAs7gAALPEAACz0AAAs9wAALPoAACz9AAAtAAAALQMAAC0GAAAtCQAALQwAAC0PAAAtEgAALRQAAC0aAAAtIQAALSkAAC0zAAAtPQAALUgAAC1TAAAtWwAALW4AAC2BAAAtjgAALZoAAC2nAAAtrQAALbIAAC3AAAAtyQAALdQAAC3eAAAuKQAALkwAAC5sAAAujAAALo4AAC6QAAAukgAALpQAAC6WAAAulwAALpgAAC6aAAAumwAALp0AAC6eAAAuoAAALqIAAC6jAAAupAAALqYAAC6nAAAurAAALrkAAC6+AAAuwAAALsIAAC7HAAAuyQAALssAAC7NAAAu4gAALwcAAC8rAAAvUgAAL3YAAC94AAAvegAAL3wAAC9+AAAvgAAAL4IAAC+DAAAvhQAAL5IAAC+jAAAvpQAAL6cAAC+pAAAvqwAAL60AAC+vAAAvsQAAL7MAAC/EAAAvxgAAL8gAAC/KAAAvzAAAL84AAC/QAAAv0gAAL9QAAC/WAAAwFQAAMBcAADAZAAAwGwAAMB0AADAeAAAwHwAAMCAAADAhAAAwIwAAMCUAADAmAAAwJwAAMCkAADAqAAAwaQAAMGsAADBtAAAwbwAAMHEAADByAAAwcwAAMHQAADB1AAAwdwAAMHkAADB6AAAwewAAMH0AADB+AAAwvQAAML8AADDBAAAwwwAAMMUAADDGAAAwxwAAMMgAADDJAAAwywAAMM0AADDOAAAwzwAAMNEAADDSAAAw3wAAMOAAADDhAAAw4wAAMSIAADEkAAAxJgAAMSgAADEqAAAxKwAAMSwAADEtAAAxLgAAMTAAADEyAAAxMwAAMTQAADE2AAAxNwAAMXYAADF4AAAxegAAMXwAADF+AAAxfwAAMYAAADGBAAAxggAAMYQAADGGAAAxhwAAMYgAADGKAAAxiwAAMcoAADHMAAAxzgAAMdAAADHSAAAx0wAAMdQAADHVAAAx1gAAMdgAADHaAAAx2wAAMdwAADHeAAAx3wAAMh4AADIgAAAyIgAAMiQAADImAAAyJwAAMigAADIpAAAyKgAAMiwAADIuAAAyLwAAMjAAADIyAAAyMwAAMnIAADJ0AAAydgAAMngAADJ6AAAyewAAMnwAADJ9AAAyfgAAMoAAADKCAAAygwAAMoQAADKGAAAyhwAAMqwAADLQAAAy9wAAMxsAADMdAAAzHwAAMyEAADMjAAAzJQAAMycAADMoAAAzKgAAMzcAADNGAAAzSAAAM0oAADNMAAAzTgAAM1AAADNSAAAzVAAAM2MAADNlAAAzZwAAM2kAADNrAAAzbQAAM28AADNxAAAzcwAAM5MAADO+AAAz2AAAM/EAADQLAAA0KwAANE4AADSNAAA0jwAANJEAADSTAAA0lQAANJYAADSXAAA0mAAANJkAADSbAAA0nQAANJ4AADSfAAA0oQAANKIAADSkAAA04wAANOUAADTnAAA06QAANOsAADTsAAA07QAANO4AADTvAAA08QAANPMAADT0AAA09QAANPcAADT4AAA1NwAANTkAADU7AAA1PQAANT8AADVAAAA1QQAANUIAADVDAAA1RQAANUcAADVIAAA1SQAANUsAADVMAAA1iwAANY0AADWPAAA1kQAANZMAADWUAAA1lQAANZYAADWXAAA1mQAANZsAADWcAAA1nQAANZ8AADWgAAA1owAANeIAADXkAAA15gAANegAADXqAAA16wAANewAADXtAAA17gAANfAAADXyAAA18wAANfQAADX2AAA19wAANjYAADY4AAA2OgAANjwAADY+AAA2PwAANkAAADZBAAA2QgAANkQAADZGAAA2RwAANkgAADZKAAA2SwAANooAADaMAAA2jgAANpAAADaSAAA2kwAANpQAADaVAAA2lgAANpgAADaaAAA2mwAANpwAADaeAAA2nwAANqgAADa2AAA2wwAANtEAADbeAAA28QAANwgAADcaAAA3ZQAAN4gAADeoAAA3yAAAN8oAADfMAAA3zgAAN9AAADfSAAA30wAAN9QAADfWAAA31wAAN9kAADfaAAA33AAAN94AADffAAA34AAAN+IAADfjAAA36AAAN/UAADf6AAA3/AAAN/4AADgDAAA4BQAAOAcAADgJAAA4LgAAOFIAADh5AAA4nQAAOJ8AADihAAA4owAAOKUAADinAAA4qQAAOKoAADisAAA4uQAAOMoAADjMAAA4zgAAONAAADjSAAA41AAAONYAADjYAAA42gAAOOsAADjtAAA47wAAOPEAADjzAAA49QAAOPcAADj5AAA4+wAAOP0AADk8AAA5PgAAOUAAADlCAAA5RAAAOUUAADlGAAA5RwAAOUgAADlKAAA5TAAAOU0AADlOAAA5UAAAOVEAADmQAAA5kgAAOZQAADmWAAA5mAAAOZkAADmaAAA5mwAAOZwAADmeAAA5oAAAOaEAADmiAAA5pAAAOaUAADnkAAA55gAAOegAADnqAAA57AAAOe0AADnuAAA57wAAOfAAADnyAAA59AAAOfUAADn2AAA5+AAAOfkAADoGAAA6BwAAOggAADoKAAA6SQAAOksAADpNAAA6TwAAOlEAADpSAAA6UwAAOlQAADpVAAA6VwAAOlkAADpaAAA6WwAAOl0AADpeAAA6nQAAOp8AADqhAAA6owAAOqUAADqmAAA6pwAAOqgAADqpAAA6qwAAOq0AADquAAA6rwAAOrEAADqyAAA68QAAOvMAADr1AAA69wAAOvkAADr6AAA6+wAAOvwAADr9AAA6/wAAOwEAADsCAAA7AwAAOwUAADsGAAA7RQAAO0cAADtJAAA7SwAAO00AADtOAAA7TwAAO1AAADtRAAA7UwAAO1UAADtWAAA7VwAAO1kAADtaAAA7mQAAO5sAADudAAA7nwAAO6EAADuiAAA7owAAO6QAADulAAA7pwAAO6kAADuqAAA7qwAAO60AADuuAAA70wAAO/cAADweAAA8QgAAPEQAADxGAAA8SAAAPEoAADxMAAA8TgAAPE8AADxRAAA8XgAAPG0AADxvAAA8cQAAPHMAADx1AAA8dwAAPHkAADx7AAA8igAAPIwAADyOAAA8kAAAPJIAADyUAAA8lgAAPJgAADyaAAA82QAAPNsAADzdAAA83wAAPOEAADziAAA84wAAPOQAADzlAAA85wAAPOkAADzqAAA86wAAPO0AADzuAAA9LQAAPS8AAD0xAAA9MwAAPTUAAD02AAA9NwAAPTgAAD05AAA9OwAAPT0AAD0+AAA9PwAAPUEAAD1CAAA9gQAAPYMAAD2FAAA9hwAAPYkAAD2KAAA9iwAAPYwAAD2NAAA9jwAAPZEAAD2SAAA9kwAAPZUAAD2WAAA91QAAPdcAAD3ZAAA92wAAPd0AAD3eAAA93wAAPeAAAD3hAAA94wAAPeUAAD3mAAA95wAAPekAAD3qAAA+KQAAPisAAD4tAAA+LwAAPjEAAD4yAAA+MwAAPjQAAD41AAA+NwAAPjkAAD46AAA+OwAAPj0AAD4+AAA+fQAAPn8AAD6BAAA+gwAAPoUAAD6GAAA+hwAAPogAAD6JAAA+iwAAPo0AAD6OAAA+jwAAPpEAAD6SAAA+0QAAPtMAAD7VAAA+1wAAPtkAAD7aAAA+2wAAPtwAAD7dAAA+3wAAPuEAAD7iAAA+4wAAPuUAAD7mAAA+7wAAPwIAAD8PAAA/IgAAPy8AAD9CAAA/WQAAP2sAAD+2AAA/2QAAP/kAAEAZAABAGwAAQB0AAEAfAABAIQAAQCMAAEAkAABAJQAAQCcAAEAoAABAKgAAQCsAAEAtAABALwAAQDAAAEAxAABAMwAAQDQAAEA5AABARgAAQEsAAEBNAABATwAAQFQAAEBWAABAWAAAQFoAAEB/AABAowAAQMoAAEDuAABA8AAAQPIAAED0AABA9gAAQPgAAED6AABA+wAAQP0AAEEKAABBGwAAQR0AAEEfAABBIQAAQSMAAEElAABBJwAAQSkAAEErAABBPAAAQT4AAEFAAABBQgAAQUQAAEFGAABBSAAAQUoAAEFMAABBTgAAQY0AAEGPAABBkQAAQZMAAEGVAABBlgAAQZcAAEGYAABBmQAAQZsAAEGdAABBngAAQZ8AAEGhAABBogAAQeEAAEHjAABB5QAAQecAAEHpAABB6gAAQesAAEHsAABB7QAAQe8AAEHxAABB8gAAQfMAAEH1AABB9gAAQjUAAEI3AABCOQAAQjsAAEI9AABCPgAAQj8AAEJAAABCQQAAQkMAAEJFAABCRgAAQkcAAEJJAABCSgAAQlcAAEJYAABCWQAAQlsAAEKaAABCnAAAQp4AAEKgAABCogAAQqMAAEKkAABCpQAAQqYAAEKoAABCqgAAQqsAAEKsAABCrgAAQq8AAELuAABC8AAAQvIAAEL0AABC9gAAQvcAAEL4AABC+QAAQvoAAEL8AABC/gAAQv8AAEMAAABDAgAAQwMAAENCAABDRAAAQ0YAAENIAABDSgAAQ0sAAENMAABDTQAAQ04AAENQAABDUgAAQ1MAAENUAABDVgAAQ1cAAEOWAABDmAAAQ5oAAEOcAABDngAAQ58AAEOgAABDoQAAQ6IAAEOkAABDpgAAQ6cAAEOoAABDqgAAQ6sAAEPqAABD7AAAQ+4AAEPwAABD8gAAQ/MAAEP0AABD9QAAQ/YAAEP4AABD+gAAQ/sAAEP8AABD/gAAQ/8AAEQkAABESAAARG8AAESTAABElQAARJcAAESZAABEmwAARJ0AAESfAABEoAAARKIAAESvAABEvgAARMAAAETCAABExAAARMYAAETIAABEygAARMwAAETbAABE3QAARN8AAEThAABE4wAAROYAAETpAABE7AAARO4AAEUtAABFLwAARTEAAEUzAABFNQAARTYAAEU3AABFOAAARTkAAEU7AABFPQAART4AAEU/AABFQQAARUIAAEWBAABFgwAARYUAAEWHAABFiQAARYoAAEWLAABFjAAARY0AAEWPAABFkQAARZIAAEWTAABFlQAARZYAAEXVAABF1wAARdkAAEXbAABF3QAARd4AAEXfAABF4AAAReEAAEXjAABF5QAAReYAAEXnAABF6QAAReoAAEYpAABGKwAARi0AAEYvAABGMQAARjIAAEYzAABGNAAARjUAAEY3AABGOQAARjoAAEY7AABGPQAARj4AAEaBAABGpQAARskAAEbsAABHEwAARzMAAEdaAABHgQAAR6EAAEfFAABH6QAAR+sAAEftAABH7wAAR/EAAEfzAABH9QAAR/gAAEf6AABH/AAAR/8AAEgBAABIAwAASAYAAEgIAABICQAASA4AAEgbAABIHgAASCAAAEgjAABIJQAASCcAAEhMAABIcAAASJcAAEi7AABIvQAASL8AAEjBAABIwwAASMUAAEjHAABIyAAASMoAAEjXAABI6gAASOwAAEjuAABI8AAASPIAAEj0AABI9gAASPgAAEj6AABI/AAASQ8AAEkRAABJEwAASRUAAEkXAABJGQAASRsAAEkdAABJHwAASSEAAEkjAABJYgAASWQAAElmAABJaAAASWoAAElrAABJbAAASW0AAEluAABJcAAASXIAAElzAABJdAAASXYAAEl3AABJgAAASYEAAEmDAABJwgAAScQAAEnGAABJyAAAScoAAEnLAABJzAAASc0AAEnOAABJ0AAASdIAAEnTAABJ1AAASdYAAEnXAABKFgAAShgAAEoaAABKHAAASh4AAEofAABKIAAASiEAAEoiAABKJAAASiYAAEonAABKKAAASioAAEorAABKNAAASjUAAEo3AABKdgAASngAAEp6AABKfAAASn4AAEp/AABKgAAASoEAAEqCAABKhAAASoYAAEqHAABKiAAASooAAEqLAABKygAASswAAErOAABK0AAAStIAAErTAABK1AAAStUAAErWAABK2AAAStoAAErbAABK3AAASt4AAErfAABK6AAASukAAErrAABLKgAASywAAEsuAABLMAAASzIAAEszAABLNAAASzUAAEs2AABLOAAASzoAAEs7AABLPAAASz4AAEs/AABLfgAAS4AAAEuCAABLhAAAS4YAAEuHAABLiAAAS4kAAEuKAABLjAAAS44AAEuPAABLkAAAS5IAAEuTAABLoAAAS6EAAEuiAABLpAAAS+MAAEvlAABL5wAAS+kAAEvrAABL7AAAS+0AAEvuAABL7wAAS/EAAEvzAABL9AAAS/UAAEv3AABL+AAATDcAAEw5AABMOwAATD0AAEw/AABMQAAATEEAAExCAABMQwAATEUAAExHAABMSAAATEkAAExLAABMTAAATFkAAExiAABMZAAATGYAAExoAABMagAATHMAAEx1AABMeAAATHsAAEx+AABMgAAATI8AAEyhAABMrgAATPkAAE0cAABNPAAATVwAAE1eAABNYAAATWIAAE1kAABNZgAATWcAAE1oAABNagAATWsAAE1tAABNbgAATXAAAE1yAABNcwAATXQAAE12AABNdwAATYAAAE2NAABNkgAATZQAAE2WAABNmwAATZ0AAE2fAABNoQAATcYAAE3qAABOEQAATjUAAE4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OAABYzwAAWNEAAFjTAABY1AAAWNUAAFjXAABY2AAAWRcAAFkZAABZGwAAWR0AAFkgAABZIQAAWSIAAFkjAABZJAAAWSYAAFkoAABZKQAAWSoAAFksAABZLQAAWVIAAFl2AABZnQAAWcEAAFnEAABZxgAAWcgAAFnKAABZzAAAWc4AAFnPAABZ0gAAWd8AAFnuAABZ8AAAWfIAAFn0AABZ9gAAWfgAAFn6AABZ/AAAWgsAAFoOAABaEQAAWhQAAFoXAABaGgAAWh0AAFogAABaIgAAWmEAAFpjAABaZQAAWmcAAFpqAABaawAAWmwAAFptAABabgAAWnAAAFpyAABacwAAWnQAAFp2AABadwAAWrYAAFq4AABaugAAWrwAAFq/AABawAAAWsEAAFrCAABawwAAWsUAAFrHAABayAAAWskAAFrLAABazAAAWwsAAFsNAABbDwAAWxEAAFsUAABbFQAAWxYAAFsXAABbGAAAWxoAAFscAABbHQAAWx4AAFsgAABbIQAAW2AAAFtiAABbZAAAW2YAAFtpAABbagAAW2sAAFtsAABbbQAAW28AAFtxAABbcgAAW3MAAFt1AABbdgAAW7UAAFu3AABbuQAAW7sAAFu+AABbvwAAW8AAAFvBAABbwgAAW8QAAFvGAABbxwAAW8gAAFvKAABbywAAXAoAAFwMAABcDgAAXBAAAFwTAABcFAAAXBUAAFwWAABcFwAAXBkAAFwbAABcHAAAXB0AAFwfAABcIAAAXF8AAFxhAABcYwAAXGUAAFxoAABcaQAAXGoAAFxrAABcbAAAXG4AAFxwAABccQAAXHIAAFx0AABcdQAAXMAAAFzjAABdAwAAXSMAAF0lAABdJwAAXSkAAF0rAABdLQAAXS4AAF0vAABdMgAAXTMAAF01AABdNgAAXTgAAF06AABdOwAAXTwAAF0/AABdQAAAXUkAAF1WAABdWwAAXV0AAF1fAABdZAAAXWcAAF1qAABdbAAAXZEAAF21AABd3AAAXgAAAF4DAABeBQAAXgcAAF4JAABeCwAAXg0AAF4OAABeEQAAXh4AAF4vAABeMQAAXjMAAF41AABeNwAAXjkAAF47AABePQAAXj8AAF5QAABeUwAAXlYAAF5ZAABeXAAAXl8AAF5iAABeZQAAXmgAAF5qAABeqQAAXqsAAF6tAABerwAAXrIAAF6zAABetAAAXrUAAF62AABeuAAAXroAAF67AABevAAAXr4AAF6/AABe/gAAXwAAAF8CAABfBAAAXwcAAF8IAABfCQAAXwoAAF8LAABfDQAAXw8AAF8QAABfEQAAXxMAAF8UAABfUwAAX1UAAF9YAABfWgAAX10AAF9eAABfXwAAX2AAAF9hAABfYwAAX2UAAF9mAABfZwAAX2kAAF9qAABfdwAAX3gAAF95AABfewAAX7oAAF+8AABfvgAAX8AAAF/DAABfxAAAX8UAAF/GAABfxwAAX8kAAF/LAABfzAAAX80AAF/PAABf0AAAYA8AAGARAABgEwAAYBUAAGAYAABgGQAAYBoAAGAbAABgHAAAYB4AAGAgAABgIQAAYCIAAGAkAABgJQAAYGQAAGBmAABgaAAAYGoAAGBtAABgbgAAYG8AAGBwAABgcQAAYHMAAGB1AABgdgAAYHcAAGB5AABgegAAYLkAAGC7AABgvQAAYL8AAGDCAABgwwAAYMQAAGDFAABgxgAAYMgAAGDKAABgywAAYMwAAGDOAABgzwAAYQ4AAGEQAABhEgAAYRQAAGEXAABhGAAAYRkAAGEaAABhGwAAYR0AAGEfAABhIAAAYSEAAGEjAABhJAAAYUkAAGFtAABhlAAAYbgAAGG7AABhvQAAYb8AAGHBAABhwwAAYcUAAGHGAABhyQAAYdYAAGHlAABh5wAAYekAAGHrAABh7QAAYe8AAGHxAABh8wAAYgIAAGIFAABiCAAAYgsAAGIOAABiEQAAYhQAAGIXAABiGQAAYlgAAGJaAABiXAAAYl4AAGJhAABiYgAAYmMAAGJkAABiZQAAYmcAAGJpAABiagAAYmsAAGJtAABibgAAYq0AAGKvAABisQAAYrMAAGK2AABitwAAYrgAAGK5AABiugAAYrwAAGK+AABivwAAYsAAAGLCAABiwwAAYwIAAGMEAABjBgAAYwgAAGMLAABjDAAAYw0AAGMOAABjDwAAYxEAAGMTAABjFAAAYxUAAGMXAABjGAAAY1cAAGNZAABjWwAAY10AAGNgAABjYQAAY2IAAGNjAABjZAAAY2YAAGNoAABjaQAAY2oAAGNsAABjbQAAY6wAAGOuAABjsAAAY7IAAGO1AABjtgAAY7cAAGO4AABjuQAAY7sAAGO9AABjvgAAY78AAGPBAABjwgAAZAEAAGQDAABkBQAAZAcAAGQKAABkCwAAZAwAAGQNAABkDgAAZBAAAGQSAABkEwAAZBQAAGQWAABkFwAAZFYAAGRYAABkWgAAZFwAAGRfAABkYAAAZGEAAGRiAABkYwAAZGUAAGRnAABkaAAAZGkAAGRrAABkbAAAZLcAAGTaAABk+gAAZRoAAGUcAABlHgAAZSAAAGUiAABlJAAAZSUAAGUmAABlKQAAZSoAAGUsAABlLQAAZS8AAGUxAABlMgAAZTMAAGU2AABlNwAAZUAAAGVNAABlUgAAZVQAAGVWAABlWwAAZV4AAGVhAABlYwAAZYgAAGWsAABl0wAAZfcAAGX6AABl/AAAZf4AAGYAAABmAgAAZgQAAGYFAABmCAAAZhUAAGYmAABmKAAAZioAAGYsAABmLgAAZjAAAGYyAABmNAAAZjYAAGZHAABmSgAAZk0AAGZQAABmUwAAZlYAAGZZAABmXAAAZl8AAGZhAABmoAAAZqIAAGakAABmpgAAZqkAAGaqAABmqwAAZqwAAGatAABmrwAAZrEAAGayAABmswAAZrUAAGa2AABm9QAAZvcAAGb5AABm+wAAZv4AAGb/AABnAAAAZwEAAGcCAABnBAAAZwYAAGcHAABnCAAAZwoAAGcLAABnSgAAZ0wAAGdPAABnUQAAZ1QAAGdVAABnVgAAZ1cAAGdYAABnWgAAZ1wAAGddAABnXgAAZ2AAAGdhAABnbgAAZ28AAGdwAABncgAAZ7EAAGezAABntQAAZ7cAAGe6AABnuwAAZ7wAAGe9AABnvgAAZ8AAAGfCAABnwwAAZ8QAAGfGAABnxwAAaAYAAGgIAABoCgAAaAwAAGgPAABoEAAAaBEAAGgSAABoEwAAaBUAAGgXAABoGAAAaBkAAGgbAABoHAAAaFsAAGhdAABoXwAAaGEAAGhkAABoZQAAaGYAAGhnAABoaAAAaGoAAGhsAABobQAAaG4AAGhwAABocQAAaLAAAGiyAABotAAAaLYAAGi5AABougAAaLsAAGi8AABovQAAaL8AAGjBAABowgAAaMMAAGjFAABoxgAAaQUAAGkHAABpCQAAaQsAAGkOAABpDwAAaRAAAGkRAABpEgAAaRQAAGkWAABpFwAAaRgAAGkaAABpGwAAaUAAAGlkAABpiwAAaa8AAGmyAABptAAAabYAAGm4AABpugAAabwAAGm9AABpwAAAac0AAGncAABp3gAAaeAAAGniAABp5AAAaeYAAGnoAABp6gAAafkAAGn8AABp/wAAagIAAGoFAABqCAAAagsAAGoOAABqEAAAak8AAGpRAABqUwAAalUAAGpYAABqWQAAaloAAGpbAABqXAAAal4AAGpgAABqYQAAamIAAGpkAABqZQAAaqQAAGqmAABqqAAAaqoAAGqtAABqrgAAaq8AAGqwAABqsQAAarMAAGq1AABqtgAAarcAAGq5AABqugAAavkAAGr7AABq/QAAav8AAGsCAABrAwAAawQAAGsFAABrBgAAawgAAGsKAABrCwAAawwAAGsOAABrDwAAa04AAGtQAABrUwAAa1UAAGtYAABrWQAAa1oAAGtbAABrXAAAa14AAGtgAABrYQAAa2IAAGtkAABrZQAAa6gAAGvMAABr8AAAbBMAAGw6AABsWgAAbIEAAGyoAABsyAAAbOwAAG0QAABtEgAAbRUAAG0XAABtGQAAbRsAAG0eAABtIQAAbSMAAG0lAABtKAAAbSoAAG0sAABtLwAAbTIAAG0zAABtPAAAbUkAAG1MAABtTgAAbVEAAG1UAABtVgAAbXsAAG2fAABtxgAAbeoAAG3tAABt7wAAbfEAAG3zAABt9QAAbfcAAG34AABt+wAAbggAAG4bAABuHQAAbh8AAG4hAABuIwAAbiUAAG4nAABuKQAAbisAAG4tAABuQAAAbkMAAG5GAABuSQAAbkwAAG5PAABuUgAAblUAAG5YAABuWwAAbl0AAG6cAABungAAbqEAAG6jAABupgAAbqcAAG6oAABuqQAAbqoAAG6sAABurgAAbq8AAG6wAABusgAAbrMAAG68AABuvQAAbr8AAG7+AABvAAAAbwMAAG8FAABvCAAAbwkAAG8KAABvCwAAbwwAAG8OAABvEAAAbxEAAG8SAABvFAAAbxUAAG8jAABvYgAAb2QAAG9nAABvaQAAb2wAAG9tAABvbgAAb28AAG9wAABvcgAAb3QAAG91AABvdgAAb3gAAG95AABvggAAb4MAAG+FAABvxAAAb8YAAG/IAABvygAAb80AAG/OAABvzwAAb9AAAG/RAABv0wAAb9UAAG/WAABv1wAAb9kAAG/aAABwGQAAcBsAAHAeAABwIAAAcCMAAHAkAABwJQAAcCYAAHAnAABwKQAAcCsAAHA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rAACILAAAiC0AAIgvAACIMAAAiD0AAIg+AACIPwAAiEEAAIiAAACIggAAiIQAAIiGAACIiQAAiIoAAIiLAACIjAAAiI0AAIiPAACIkQAAiJIAAIiTAACIlQAAiJYAAIjVAACI1wAAiNkAAIjbAACI3gAAiN8AAIjgAACI4QAAiOIAAIjkAACI5gAAiOcAAIjoAACI6gAAiOsAAIkqAACJLAAAiS4AAIkwAACJMwAAiTQAAIk1AACJNgAAiTcAAIk5AACJOwAAiTwAAIk9AACJPwAAiUAAAIl/AACJgQAAiYMAAImFAACJiAAAiYkAAImKAACJiwAAiYwAAImOAACJkAAAiZEAAImSAACJlAAAiZUAAInUAACJ1gAAidgAAInaAACJ3QAAid4AAInfAACJ4AAAieEAAInjAACJ5QAAieYAAInnAACJ6QAAieoAAIoPAACKMwAAiloAAIp+AACKgQAAioMAAIqFAACKhwAAiokAAIqLAACKjAAAio8AAIqcAACKqwAAiq0AAIqvAACKsQAAirMAAIq1AACKtwAAirkAAIrIAACKywAAis4AAIrRAACK1AAAitcAAIraAACK3QAAit8AAIseAACLIAAAiyIAAIskAACLJwAAiygAAIspAACLKgAAiysAAIstAACLLwAAizAAAIsxAACLMwAAizQAAItzAACLdQAAi3cAAIt5AACLfAAAi30AAIt+AACLfwAAi4AAAIuCAACLhAAAi4UAAIuGAACLiAAAi4kAAIvIAACLygAAi8wAAIvOAACL0QAAi9IAAIvTAACL1AAAi9UAAIvXAACL2QAAi9oAAIvbAACL3QAAi94AAIwdAACMHwAAjCIAAIwkAACMJwAAjCgAAIwpAACMKgAAjCsAAIwtAACMLwAAjDAAAIwxAACMMwAAjDQAAIxzAACMdQAAjHcAAIx5AACMfAAAjH0AAIx+AACMfwAAjIAAAIyCAACMhAAAjIUAAIyGAACMiAAAjIkAAIzIAACMygAAjMwAAIzOAACM0QAAjNIAAIzTAACM1AAAjNUAAIzXAACM2QAAjNoAAIzbAACM3QAAjN4AAI0dAACNHwAAjSEAAI0jAACNJgAAjScAAI0oAACNKQAAjSoAAI0sAACNLgAAjS8AAI0wAACNMgAAjTMAAI1+AACNoQAAjcEAAI3hAACN4wAAjeUAAI3nAACN6QAAjewAAI3tAACN7gAAjfEAAI3yAACN9AAAjfUAAI33AACN+gAAjfsAAI38AACN/wAAjgAAAI4FAACOEgAAjhcAAI4ZAACOGwAAjiAAAI4jAACOJgAAjigAAI5NAACOcQAAjpgAAI68AACOvwAAjsEAAI7DAACOxQAAjscAAI7JAACOygAAjs0AAI7aAACO6wAAju0AAI7vAACO8QAAjvMAAI71AACO9wAAjvkAAI77AACPDAAAjw8AAI8SAACPFQAAjxgAAI8bAACPHgAAjyEAAI8kAACPJgAAj2UAAI9nAACPaQAAj2sAAI9uAACPbwAAj3AAAI9xAACPcgAAj3QAAI92AACPdwAAj3gAAI96AACPewAAj7oAAI+8AACPvgAAj8AAAI/DAACPxAAAj8UAAI/GAACPxwAAj8kAAI/LAACPzAAAj80AAI/PAACP0AAAkA8AAJARAACQFAAAkBYAAJAZAACQGgAAkBsAAJAcAACQHQAAkB8AAJAhAACQIgAAkCMAAJAlAACQJgAAkDMAAJA0AACQNQAAkDcAAJB2AACQeAAAkHoAAJB8AACQfwAAkIAAAJCBAACQggAAkIMAAJCFAACQhwAAkIgAAJCJAACQiwAAkIwAAJDLAACQzQAAkM8AAJDRAACQ1AAAkNUAAJDWAACQ1wAAkNgAAJDaAACQ3AAAkN0AAJDeAACQ4AAAkOEAAJEgAACRIgAAkSQAAJEmAACRKQAAkSoAAJErAACRLAAAkS0AAJEvAACRMQAAkTIAAJEzAACRNQAAkTYAAJF1AACRdwAAkXoAAJF8AACRfwAAkYAAAJGBAACRggAAkYMAAJGFAACRhwAAkYgAAJGJAACRiwAAkYwAAJGiAACR4QAAkeMAAJHlAACR5wAAkeoAAJHrAACR7AAAke0AAJHuAACR8AAAkfIAAJHzAACR9AAAkfYAAJH3AACSHAAAkkAAAJJnAACSiwAAko4AAJKQAACSkgAAkpQAAJKWAACSmAAAkpkAAJKcAACSqQAAkrgAAJK6AACSvAAAkr4AAJLAAACSwgAAksQAAJLGAACS1QAAktgAAJLbAACS3gAAkuEAAJLkAACS5wAAkuoAAJLsAACTKwAAky0AAJMvAACTMQAAkzQAAJM1AACTNgAAkzcAAJM4AACTOgAAkzwAAJM9AACTPgAAk0AAAJNBAACTgAAAk4IAAJOEAACThgAAk4kAAJOKAACTiwAAk4wAAJONAACTjwAAk5EAAJOSAACTkwAAk5UAAJOWAACT1QAAk9cAAJPZAACT2wAAk94AAJPfAACT4AAAk+EAAJPiAACT5AAAk+YAAJPnAACT6AAAk+oAAJPrAACUKgAAlCwAAJQvAACUMQAAlDQAAJQ1AACUNgAAlDcAAJQ4AACUOgAAlDwAAJQ9AACUPgAAlEAAAJRBAACUgAAAlIIAAJSEAACUhgAAlIkAAJSKAACUiwAAlIwAAJSNAACUjwAAlJEAAJSSAACUkwAAlJUAAJSWAACU1QAAlNcAAJTZAACU2wAAlN4AAJTfAACU4AAAlOEAAJTiAACU5AAAlOYAAJTnAACU6AAAlOoAAJTrAACVKgAAlSwAAJUuAACVMAAAlTMAAJU0AACVNQAAlTYAAJU3AACVOQAAlTsAAJU8AACVPQAAlT8AAJVAAACViwAAla4AAJXOAACV7gAAlfAAAJXyAACV9AAAlfYAAJX5AACV+gAAlfsAAJX+AACV/wAAlgEAAJYCAACWBAAAlgcAAJYIAACWCQAAlgwAAJYNAACWEgAAlh8AAJYkAACWJgAAligAAJYtAACWMAAAljMAAJY1AACWWgAAln4AAJalAACWyQAAlswAAJbOAACW0AAAltIAAJbUAACW1gAAltcAAJbaAACW5wAAlvgAAJb6AACW/AAAlv4AAJcAAACXAgAAlwQAAJcGAACXCAAAlxkAAJccAACXHwAAlyIAAJclAACXKAAAlysAAJcuAACXMQAAlzMAAJdyAACXdAAAl3YAAJd4AACXewAAl3wAAJd9AACXfgAAl38AAJeBAACXgwAAl4QAAJeFAACXhwAAl4gAAJfHAACXyQAAl8sAAJfNAACX0AAAl9EAAJfSAACX0wAAl9QAAJfWAACX2AAAl9kAAJfaAACX3AAAl90AAJgcAACYHgAAmCEAAJgjAACYJgAAmCcAAJgoAACYKQAAmCoAAJgsAACYLgAAmC8AAJgwAACYMgAAmDMAAJhAAACYQQAAmEIAAJhEAACYgwAAmIUAAJiHAACYiQAAmIwAAJiNAACYjgAAmI8AAJiQAACYkgAAmJQAAJiVAACYlgAAmJgAAJiZAACY2AAAmNoAAJjcAACY3gAAmOEAAJjiAACY4wAAmOQAAJjlAACY5wAAmOkAAJjqAACY6wAAmO0AAJjuAACZLQAAmS8AAJkxAACZMwAAmTYAAJk3AACZOAAAmTkAAJk6AACZPAAAmT4AAJk/AACZQAAAmUIAAJlDAACZggAAmYQAAJmGAACZiAAAmYsAAJmMAACZjQAAmY4AAJmPAACZkQAAmZMAAJmUAACZlQAAmZcAAJmYAACZ1wAAmdkAAJnbAACZ3QAAmeAAAJnhAACZ4gAAmeMAAJnkAACZ5gAAmegAAJnpAACZ6gAAmewAAJntAACaEgAAmjYAAJpdAACagQAAmoQAAJqGAACaiAAAmooAAJqMAACajgAAmo8AAJqSAACanwAAmq4AAJqwAACasgAAmrQAAJq2AACauAAAmroAAJq8AACaywAAms4AAJrRAACa1AAAmtcAAJraAACa3QAAmuAAAJriAACbIQAAmyMAAJslAACbJwAAmyoAAJsrAACbLAAAmy0AAJsuAACbMAAAmzIAAJszAACbNAAAmzYAAJs3AACbdgAAm3gAAJt6AACbfAAAm38AAJuAAACbgQAAm4IAAJuDAACbhQAAm4cAAJuIAACbiQAAm4sAAJuMAACbywAAm80AAJvPAACb0QAAm9QAAJvVAACb1gAAm9cAAJvYAACb2gAAm9wAAJvdAACb3gAAm+AAAJvhAACcIAAAnCIAAJwlAACcJwAAnCoAAJwrAACcLAAAnC0AAJwuAACcMAAAnDIAAJwzAACcNAAAnDYAAJw3AACcdgAAnHgAAJx6AACcfAAAnH8AAJyAAACcgQAAnIIAAJyDAACchQAAnIcAAJyIAACciQAAnIsAAJyMAACcywAAnM0AAJzPAACc0QAAnNQAAJzVAACc1gAAnNcAAJzYAACc2gAAnNwAAJzdAACc3gAAnOAAAJzhAACdIAAAnSIAAJ0kAACdJgAAnSkAAJ0qAACdKwAAnSwAAJ0tAACdLwAAnTEAAJ0yAACdMwAAnTUAAJ02AACdgQAAnaQAAJ3EAACd5AAAneYAAJ3oAACd6gAAnewAAJ3vAACd8AAAnfEAAJ30AACd9QAAnfcAAJ34AACd+gAAnf0AAJ3+AACd/wAAngIAAJ4DAACeCAAAnhUAAJ4aAACeHAAAnh4AAJ4jAACeJgAAnikAAJ4rAACeUAAAnnQAAJ6bAACevwAAnsIAAJ7EAACexgAAnsgAAJ7KAACezAAAns0AAJ7QAACe3QAAnu4AAJ7wAACe8gAAnvQAAJ72AACe+AAAnvoAAJ78AACe/gAAnw8AAJ8SAACfFQAAnxgAAJ8bAACfHgAAnyEAAJ8kAACfJwAAnykAAJ9oAACfagAAn2wAAJ9uAACfcQAAn3IAAJ9zAACfdAAAn3UAAJ93AACfeQAAn3oAAJ97AACffQAAn34AAJ+9AACfvwAAn8EAAJ/DAACfxgAAn8cAAJ/IAACfyQAAn8oAAJ/MAACfzgAAn88AAJ/QAACf0gAAn9MAAKASAACgFAAAoBcAAKAZAACgHAAAoB0AAKAeAACgHwAAoCAAAKAiAACgJAAAoCUAAKAmAACgKAAAoCkAAKA2AACgNwAAoDgAAKA6AACgeQAAoHsAAKB9AACgfwAAoIIAAKCDAACghAAAoIUAAKCGAACgiAAAoIoAAKCLAACgjAAAoI4AAKCPAACgzgAAoNAAAKDSAACg1AAAoNcAAKDYAACg2QAAoNoAAKDbAACg3QAAoN8AAKDgAACg4QAAoOMAAKDkAAChIwAAoSUAAKEnAAChKQAAoSwAAKEtAAChLgAAoS8AAKEwAAChMgAAoTQAAKE1AAChNgAAoTgAAKE5AACheAAAoXoAAKF8AAChfgAAoYEAAKGCAAChgwAAoYQAAKGFAAChhwAAoYkAAKGKAAChiwAAoY0AAKGOAAChzQAAoc8AAKHRAACh0wAAodYAAKHXAACh2AAAodkAAKHaAACh3AAAod4AAKHfAACh4AAAoeIAAKHjAACiCAAAoiwAAKJTAACidwAAonoAAKJ8AACifgAAooAAAKKCAACihAAAooUAAKKIAACilQAAoqQAAKKmAACiqAAAoqoAAKKsAACirgAAorAAAKKyAACiwQAAosQAAKLHAACiygAAos0AAKLQAACi0wAAotYAAKLYAACjFwAAoxkAAKMbAACjHQAAoyAAAKMhAACjIgAAoyMAAKMkAACjJgAAoygAAKMpAACjKgAAoywAAKMtAACjbAAAo24AAKNwAACjcgAAo3UAAKN2AACjdwAAo3gAAKN5AACjewAAo30AAKN+AACjfwAAo4EAAKOCAACjwQAAo8MAAKPFAACjxwAAo8oAAKPLAACjzAAAo80AAKPOAACj0AAAo9IAAKPTAACj1AAAo9YAAKPXAACkFgAApBgAAKQbAACkHQAApCAAAKQhAACkIgAApCMAAKQkAACkJgAApCgAAKQpAACkKgAApCwAAKQtAACkbAAApG4AAKRwAACkcgAApHUAAKR2AACkdwAApHgAAKR5AACkewAApH0AAKR+AACkfwAApIEAAKSCAACkwQAApMMAAKTFAACkxwAApMoAAKTLAACkzAAApM0AAKTOAACk0AAApNIAAKTTAACk1AAApNYAAKTXAAClFgAApRgAAKUaAAClHAAApR8AAKUgAAClIQAApSIAAKUjAAClJQAApScAAKUoAAClKQAApSsAAKUsAACldwAApZoAAKW6AACl2gAApdwAAKXeAACl4AAApeIAAKXlAACl5gAApecAAKXqAACl6wAApe0AAKXuAACl8AAApfMAAKX0AACl9QAApfgAAKX5AACmAgAApg8AAKYUAACmFgAAphgAAKYdAACmIAAApiMAAKYlAACmSgAApm4AAKaVAACmuQAAprwAAKa+AACmwAAApsIAAKbEAACmxgAApscAAKbKAACm1wAApugAAKbqAACm7AAApu4AAKbwAACm8gAApvQAAKb2AACm+AAApwkAAKcMAACnDwAApxIAAKcVAACnGAAApxsAAKceAACnIQAApyMAAKdiAACnZAAAp2YAAKdoAACnawAAp2wAAKdtAACnbgAAp28AAKdxAACncwAAp3QAAKd1AACndwAAp3gAAKe3AACnuQAAp7sAAKe9AACnwAAAp8EAAKfCAACnwwAAp8QAAKfGAACnyAAAp8kAAKfKAACnzAAAp80AAKgMAACoDgAAqBEAAKgTAACoFgAAqBcAAKgYAACoGQAAqBoAAKgcAACoHgAAqB8AAKggAACoIgAAqCMAAKgwAACoMQAAqDIAAKg0AACocwAAqHUAAKh3AACoeQAAqHwAAKh9AACofgAAqH8AAKiAAACoggAAqIQAAKiFAACohgAAqIgAAKiJAACoyAAAqMoAAKjMAACozgAAqNEAAKjSAACo0wAAqNQAAKjVAACo1wAAqNkAAKjaAACo2wAAqN0AAKjeAACpHQAAqR8AAKkhAACpIwAAqSYAAKknAACpKAAAqSkAAKkqAACpLAAAqS4AAKkvAACpMAAAqTIAAKkzAACpcgAAqXQAAKl2AACpeAAAqXsAAKl8AACpfQAAqX4AAKl/AACpgQAAqYMAAKmEAACphQAAqYcAAKmIAACpxwAAqckAAKnLAACpzQAAqdAAAKnRAACp0gAAqdMAAKnUAACp1gAAqdgAAKnZAACp2gAAqdwAAKndAACqAgAAqiYAAKpNAACqcQAAqnQAAKp2AACqeAAAqnoAAKp8AACqfgAAqn8AAKqCAACqjwAAqp4AAKqgAACqogAAqqQAAKqmAACqqAAAqqoAAKqsAACquwAAqr4AAKrBAACqxAAAqscAAKrKAACqzQAAqtAAAKrSAACrEQAAqxMAAKsVAACrFwAAqxoAAKsbAACrHAAAqx0AAKseAACrIAAAqyIAAKsjAACrJAAAqyYAAKsnAACrZgAAq2gAAKtqAACrbAAAq28AAKtwAACrcQAAq3IAAKtzAACrdQAAq3cAAKt4AACreQAAq3sAAKt8AACruwAAq70AAKu/AACrwQAAq8QAAKvFAACrxgAAq8cAAKvIAACrygAAq8wAAKvNAACrzgAAq9AAAKvRAACsEAAArBIAAKwVAACsFwAArBoAAKwbAACsHAAArB0AAKweAACsIAAArCIAAKwjAACsJAAArCYAAKwnAACsZgAArGgAAKxqAACsbAAArG8AAKxwAACscQAArHIAAKxzAACsdQAArHcAAKx4AACseQAArHsAAKx8AACsuwAArL0AAKy/AACswQAArMQAAKzFAACsxgAArMcAAKzIAACsygAArMwAAKzNAACszgAArNAAAKzRAACtEAAArRIAAK0UAACtFgAArRkAAK0aAACtGwAArRwAAK0dAACtHwAArSEAAK0iAACtIwAArSUAAK0mAACtcQAArZQAAK20AACt1AAArdYAAK3YAACt2gAArdwAAK3fAACt4AAAreEAAK3kAACt5QAArecAAK3oAACt6gAAre0AAK3uAACt7wAArfIAAK3zAACt+AAArgUAAK4KAACuDAAArg4AAK4TAACuFgAArhkAAK4bAACuQAAArmQAAK6LAACurwAArrIAAK60AACutgAArrgAAK66AACuvAAArr0AAK7AAACuzQAArt4AAK7gAACu4gAAruQAAK7mAACu6AAAruoAAK7sAACu7gAArv8AAK8CAACvBQAArwgAAK8LAACvDgAArxEAAK8UAACvFwAArxkAAK9YAACvWgAAr1wAAK9eAACvYQAAr2IAAK9jAACvZAAAr2UAAK9nAACvaQAAr2oAAK9rAACvbQAAr24AAK+tAACvrwAAr7EAAK+zAACvtgAAr7cAAK+4AACvuQAAr7oAAK+8AACvvgAAr78AAK/AAACvwgAAr8MAALACAACwBAAAsAcAALAJAACwDAAAsA0AALAOAACwDwAAsBAAALASAACwFAAAsBUAALAWAACwGAAAsBkAALAmAACwJwAAsCgAALAqAACwaQAAsGsAALBtAACwbwAAsHIAALBzAACwdAAAsHUAALB2AACweAAAsHoAALB7AACwfAAAsH4AALB/AACwvgAAsMAAALDCAACwxAAAsMcAALDIAACwyQAAsMoAALDLAACwzQAAsM8AALDQAACw0QAAsNMAALDUAACxEwAAsRUAALEXAACxGQAAsRwAALEdAACxHgAAsR8AALEgAACxIgAAsSQAALElAACxJgAAsSgAALEpAACxaAAAsWoAALFsAACxbgAAsXEAALFyAACxcwAAsXQAALF1AACxdwAAsXkAALF6AACxewAAsX0AALF+AACxvQAAsb8AALHBAACxwwAAscYAALHHAACxyAAAsckAALHKAACxzAAAsc4AALHPAACx0AAAsdIAALHTAACx+AAAshwAALJDAACyZwAAsmoAALJsAACybgAAsnAAALJyAACydAAAsnUAALJ4AACyhQAAspQAALKWAACymAAAspoAALKcAACyngAAsqAAALKiAACysQAAsrQAALK3AACyugAAsr0AALLAAACywwAAssYAALLIAACzBwAAswkAALMLAACzDQAAsxAAALMRAACzEgAAsxMAALMUAACzFgAAsxgAALMZAACzGgAAsxwAALMdAACzXAAAs14AALNgAACzYgAAs2UAALNmAACzZwAAs2gAALNpAACzawAAs20AALNuAACzbwAAs3EAALNyAACzsQAAs7MAALO1AACztwAAs7oAALO7AACzvAAAs70AALO+AACzwAAAs8IAALPDAACzxAAAs8YAALPHAAC0BgAAtAgAALQLAAC0DQAAtBAAALQRAAC0EgAAtBMAALQUAAC0FgAAtBgAALQZAAC0GgAAtBwAALQdAAC0XAAAtF4AALRgAAC0YgAAtGUAALRmAAC0ZwAAtGgAALRpAAC0awAAtG0AALRuAAC0bwAAtHEAALRyAAC0sQAAtLMAALS1AAC0twAAtLoAALS7AAC0vAAAtL0AALS+AAC0wAAAtMIAALTDAAC0xAAAtMYAALTHAAC1BgAAtQgAALUKAAC1DAAAtQ8AALUQAAC1EQAAtRIAALUTAAC1FQAAtRcAALUYAAC1GQAAtRsAALUcAAC1ZwAAtYoAALWqAAC1ygAAtcwAALXOAAC10AAAtdIAALXVAAC11gAAtdcAALXaAAC12wAAtd0AALXeAAC14AAAteMAALXkAAC15QAAtegAALXpAAC17gAAtfsAALYAAAC2AgAAtgQAALYJAAC2DAAAtg8AALYRAAC2NgAAtloAALaBAAC2pQAAtqgAALaqAAC2rAAAtq4AALawAAC2sgAAtrMAALa2AAC2wwAAttQAALbWAAC22AAAttoAALbcAAC23gAAtuAAALbiAAC25AAAtvUAALb4AAC2+wAAtv4AALcBAAC3BAAAtwcAALcKAAC3DQAAtw8AALdOAAC3UAAAt1IAALdUAAC3VwAAt1gAALdZAAC3WgAAt1sAALddAAC3XwAAt2AAALdhAAC3YwAAt2QAALejAAC3pQAAt6cAALepAAC3rAAAt60AALeuAAC3rwAAt7AAALeyAAC3tAAAt7UAALe2AAC3uAAAt7kAALf4AAC3+gAAt/0AALf/AAC4AgAAuAMAALgEAAC4BQAAuAYAALgIAAC4CgAAuAsAALgMAAC4DgAAuA8AALgcAAC4HQAAuB4AALggAAC4XwAAuGEAALhjAAC4ZQAAuGgAALhpAAC4agAAuGsAALhsAAC4bgAAuHAAALhxAAC4cgAAuHQAALh1AAC4tAAAuLYAALi4AAC4ugAAuL0AALi+AAC4vwAAuMAAALjBAAC4wwAAuMUAALjGAAC4xwAAuMkAALjKAAC5CQAAuQsAALkNAAC5DwAAuRIAALkTAAC5FAAAuRUAALkWAAC5GAAAuRoAALkbAAC5HAAAuR4AALkfAAC5XgAAuWAAALliAAC5ZAAAuWcAALloAAC5aQAAuWoAALlrAAC5bQAAuW8AALlwAAC5cQAAuXMAALl0AAC5swAAubUAALm3AAC5uQAAubwAALm9AAC5vgAAub8AALnAAAC5wgAAucQAALnFAAC5xgAAucgAALnJAAC57gAAuhIAALo5AAC6XQAAumAAALpiAAC6ZAAAumYAALpoAAC6agAAumsAALpuAAC6ewAAuooAALqMAAC6jgAAupAAALqSAAC6lAAAupYAALqYAAC6pwAAuqoAALqtAAC6sAAAurMAALq2AAC6uQAAurwAALq+AAC6/QAAuv8AALsBAAC7AwAAuwYAALsHAAC7CAAAuwkAALsKAAC7DAAAuw4AALsPAAC7EAAAuxIAALsTAAC7UgAAu1QAALtWAAC7WAAAu1sAALtcAAC7XQAAu14AALtfAAC7YQAAu2MAALtkAAC7ZQAAu2cAALtoAAC7pwAAu6kAALurAAC7rQAAu7AAALuxAAC7sgAAu7MAALu0AAC7tgAAu7gAALu5AAC7ugAAu7wAALu9AAC7/AAAu/4AALwBAAC8AwAAvAYAALwHAAC8CAAAvAkAALwKAAC8DAAAvA4AALwPAAC8EAAAvBIAALwTAAC8UgAAvFQAALxWAAC8WAAAvFsAALxcAAC8XQAAvF4AALxfAAC8YQAAvGMAALxkAAC8ZQAAvGcAALxoAAC8pwAAvKkAALyrAAC8rQAAvLAAALyxAAC8sgAAvLMAALy0AAC8tgAAvLgAALy5AAC8ugAAvLwAALy9AAC8/AAAvP4AAL0AAAC9AgAAvQUAAL0GAAC9BwAAvQgAAL0JAAC9CwAAvQ0AAL0OAAC9DwAAvREAAL0SAAC9XQAAvYAAAL2gAAC9wAAAvcIAAL3EAAC9xgAAvcgAAL3LAAC9zAAAvc0AAL3QAAC90QAAvdMAAL3UAAC91gAAvdkAAL3aAAC92wAAvd4AAL3fAAC95AAAvfEAAL32AAC9+AAAvfoAAL3/AAC+AgAAvgUAAL4HAAC+LAAAvlAAAL53AAC+mwAAvp4AAL6gAAC+ogAAvqQAAL6mAAC+qAAAvqkAAL6sAAC+uQAAvsoAAL7MAAC+zgAAvtAAAL7SAAC+1AAAvtYAAL7YAAC+2gAAvusAAL7uAAC+8QAAvvQAAL73AAC++gAAvv0AAL8AAAC/AwAAvwUAAL9EAAC/RgAAv0gAAL9KAAC/TQAAv04AAL9PAAC/UAAAv1EAAL9TAAC/VQAAv1YAAL9XAAC/WQAAv1oAAL+ZAAC/mwAAv50AAL+fAAC/ogAAv6MAAL+kAAC/pQAAv6YAAL+oAAC/qgAAv6sAAL+sAAC/rgAAv68AAL/uAAC/8AAAv/MAAL/1AAC/+AAAv/kAAL/6AAC/+wAAv/wAAL/+AADAAAAAwAEAAMACAADABAAAwAUAAMASAADAEwAAwBQAAMAWAADAVQAAwFcAAMBZAADAWwAAwF4AAMBfAADAYAAAwGEAAMBiAADAZAAAwGYAAMBnAADAaAAAwGoAAMBrAADAqgAAwKwAAMCuAADAsAAAwLMAAMC0AADAtQAAwLYAAMC3AADAuQAAwLsAAMC8AADAvQAAwL8AAMDAAADA/wAAwQEAAMEDAADBBQAAwQgAAMEJAADBCgAAwQsAAMEMAADBDgAAwRAAAMERAADBEgAAwRQAAMEVAADBVAAAwVYAAMFZAADBWwAAwV4AAMFfAADBYAAAwWEAAMFiAADBZAAAwWYAAMFnAADBaAAAwWoAAMFrAADBggAAwcEAAMHDAADBxQAAwccAAMHKAADBywAAwcwAAMHNAADBzgAAwdAAAMHSAADB0wAAwdQAAMHWAADB1wAAwfwAAMIgAADCRwAAwmsAAMJuAADCcAAAwnIAAMJ0AADCdgAAwngAAMJ5AADCfAAAwokAAMKYAADCmgAAwpwAAMKeAADCoAAAwqIAAMKkAADCpgAAwrUAAMK4AADCuwAAwr4AAMLBAADCxAAAwscAAMLKAADCzAAAwwsAAMMNAADDDwAAwxEAAMMUAADDFQAAwxYAAMMXAADDGAAAwxoAAMMcAADDHQAAwx4AAMMgAADDIQAAw2AAAMNiAADDZAAAw2YAAMNpAADDagAAw2sAAMNsAADDbQAAw28AAMNxAADDcgAAw3MAAMN1AADDdgAAw7UAAMO3AADDuQAAw7sAAMO+AADDvwAAw8AAAMPBAADDwgAAw8QAAMPGAADDxwAAw8gAAMPKAADDywAAxAoAAMQMAADEDwAAxBEAAMQUAADEFQAAxBYAAMQXAADEGAAAxBoAAMQcAADEHQAAxB4AAMQgAADEIQAAxGAAAMRiAADEZAAAxGYAAMRpAADEagAAxGsAAMRsAADEbQAAxG8AAMRxAADEcgAAxHMAAMR1AADEdgAAxLUAAMS3AADEuQAAxLsAAMS+AADEvwAAxMAAAMTBAADEwgAAxMQAAMTGAADExwAAxMgAAMTKAADEywAAxQoAAMUMAADFDgAAxRAAAMUTAADFFAAAxRUAAMUWAADFFwAAxRkAAMUbAADFHAAAxR0AAMUfAADFIAAAxWsAAMWOAADFrgAAxc4AAMXQAADF0gAAxdQAAMXWAADF2QAAxdoAAMXbAADF3gAAxd8AAMXhAADF4gAAxeQAAMXnAADF6AAAxekAAMXsAADF7QAAxfIAAMX/AADGBAAAxgYAAMYIAADGDQAAxhAAAMYTAADGFQAAxjoAAMZeAADGhQAAxqkAAMasAADGrgAAxrAAAMayAADGtAAAxrYAAMa3AADGugAAxscAAMbYAADG2gAAxtwAAMbeAADG4AAAxuIAAMbkAADG5gAAxugAAMb5AADG/AAAxv8AAMcCAADHBQAAxwgAAMcLAADHDgAAxxEAAMcTAADHUgAAx1QAAMdWAADHWAAAx1sAAMdcAADHXQAAx14AAMdfAADHYQAAx2MAAMdkAADHZQAAx2cAAMdoAADHpwAAx6kAAMerAADHrQAAx7AAAMexAADHsgAAx7MAAMe0AADHtgAAx7gAAMe5AADHugAAx7wAAMe9AADH/AAAx/4AAMgBAADIAwAAyAYAAMgHAADICAAAyAkAAMgKAADIDAAAyA4AAMgPAADIEAAAyBIAAMgTAADIIAAAyCEAAMgiAADIJAAAyGMAAMhlAADIZwAAyGkAAMhsAADIbQAAyG4AAMhvAADIcAAAyHIAAMh0AADIdQAAyHYAAMh4AADIeQAAyLgAAMi6AADIvAAAyL4AAMjBAADIwgAAyMMAAMjEAADIxQAAyMcAAMjJAADIygAAyMsAAMjNAADIzgAAyQ0AAMkPAADJEQAAyRMAAMkWAADJFwAAyRgAAMkZAADJGgAAyRwAAMkeAADJHwAAySAAAMkiAADJIwAAyWIAAMlkAADJZgAAyWgAAMlrAADJbAAAyW0AAMluAADJbwAAyXEAAMlzAADJdAAAyXUAAMl3AADJeAAAybcAAMm5AADJuwAAyb0AAMnAAADJwQAAycIAAMnDAADJxAAAycYAAMnIAADJyQAAycoAAMnMAADJzQAAyfIAAMoWAADKPQAAymEAAMpkAADKZgAAymgAAMpqAADKbAAAym4AAMpvAADKcgAAyn8AAMqOAADKkAAAypIAAMqUAADKlgAAypgAAMqaAADKnAAAyqsAAMquAADKsQAAyrQAAMq3AADKugAAyr0AAMrAAADKwgAAywEAAMsDAADLBQAAywcAAMsKAADLCwAAywwAAMsNAADLDgAAyxAAAMsSAADLEwAAyxQAAMsWAADLFwAAy1YAAMtYAADLWgAAy1wAAMtfAADLYAAAy2EAAMtiAADLYwAAy2UAAMtnAADLaAAAy2kAAMtrAADLbAAAy6sAAMutAADLrwAAy7EAAMu0AADLtQAAy7YAAMu3AADLuAAAy7oAAMu8AADLvQAAy74AAMvAAADLwQAAzAAAAMwCAADMBQAAzAcAAMwKAADMCwAAzAwAAMwNAADMDgAAzBAAAMwSAADMEwAAzBQAAMwWAADMFwAAzFYAAMxYAADMWgAAzFwAAMxfAADMYAAAzGEAAMxiAADMYwAAzGUAAMxnAADMaAAAzGkAAMxrAADMbAAAzKsAAMytAADMrwAAzLEAAMy0AADMtQAAzLYAAMy3AADMuAAAzLoAAMy8AADMvQAAzL4AAMzAAADMwQAAzQAAAM0CAADNBAAAzQYAAM0JAADNCgAAzQsAAM0MAADNDQAAzQ8AAM0RAADNEgAAzRMAAM0VAADNFgAAzWEAAM2EAADNpAAAzcQAAM3GAADNyAAAzcoAAM3MAADNzwAAzdAAAM3RAADN1AAAzdUAAM3XAADN2AAAzdoAAM3dAADN3gAAzd8AAM3iAADN4wAAzegAAM31AADN+gAAzfwAAM3+AADOAwAAzgYAAM4JAADOCwAAzjAAAM5UAADOewAAzp8AAM6iAADOpAAAzqYAAM6oAADOqgAAzqwAAM6tAADOsAAAzr0AAM7OAADO0AAAztIAAM7UAADO1gAAztgAAM7aAADO3AAAzt4AAM7vAADO8gAAzvUAAM74AADO+wAAzv4AAM8BAADPBAAAzwcAAM8JAADPSAAAz0oAAM9MAADPTgAAz1EAAM9SAADPUwAAz1QAAM9VAADPVwAAz1kAAM9aAADPWwAAz10AAM9eAADPnQAAz58AAM+hAADPowAAz6YAAM+nAADPqAAAz6kAAM+qAADPrAAAz64AAM+vAADPsAAAz7IAAM+zAADP8gAAz/QAAM/3AADP+QAAz/wAAM/9AADP/gAAz/8AANAAAADQAgAA0AQAANAFAADQBgAA0AgAANAJAADQFgAA0BcAANAYAADQGgAA0FkAANBbAADQXQAA0F8AANBiAADQYwAA0GQAANBlAADQZgAA0GgAANBqAADQawAA0GwAANBuAADQbwAA0K4AANCwAADQsgAA0LQAANC3AADQuAAA0LkAANC6AADQuwAA0L0AANC/AADQwAAA0MEAANDDAADQxAAA0QMAANEFAADRBwAA0QkAANEMAADRDQAA0Q4AANEPAADREAAA0RIAANEUAADRFQAA0RYAANEYAADRGQAA0VgAANFaAADRXAAA0V4AANFhAADRYgAA0WMAANFkAADRZQAA0WcAANFpAADRagAA0WsAANFtAADRbgAA0a0AANGvAADRsQAA0bMAANG2AADRtwAA0bgAANG5AADRugAA0bwAANG+AADRvwAA0cAAANHCAADRwwAA0egAANIMAADSMwAA0lcAANJaAADSXAAA0l4AANJgAADSYgAA0mQAANJlAADSaAAA0nUAANKEAADShgAA0ogAANKKAADSjAAA0o4AANKQAADSkgAA0qEAANKkAADSpwAA0qoAANKtAADSsAAA0rMAANK2AADSuAAA0vcAANL5AADS+wAA0v0AANMAAADTAQAA0wIAANMDAADTBAAA0wYAANMIAADTCQAA0woAANMMAADTDQAA00wAANNOAADTUAAA01IAANNVAADTVgAA01cAANNYAADTWQAA01sAANNdAADTXgAA018AANNhAADTYgAA06EAANOjAADTpQAA06cAANOqAADTqwAA06wAANOtAADTrgAA07AAANOyAADTswAA07QAANO2AADTtwAA0/YAANP4AADT+wAA0/0AANQAAADUAQAA1AIAANQDAADUBAAA1AYAANQIAADUCQAA1AoAANQMAADUDQAA1EwAANROAADUUAAA1FIAANRVAADUVgAA1FcAANRYAADUWQAA1FsAANRdAADUXgAA1F8AANRhAADUYgAA1KEAANSjAADUpQAA1KcAANSqAADUqwAA1KwAANStAADUrgAA1LAAANSyAADUswAA1LQAANS2AADUtwAA1PYAANT4AADU+gAA1PwAANT/AADVAAAA1QEAANUCAADVAwAA1QUAANUHAADVCAAA1QkAANULAADVDAAA1VcAANV6AADVmgAA1boAANW8AADVvgAA1cAAANXCAADVxQAA1cYAANXHAADVygAA1csAANXNAADVzgAA1dAAANXTAADV1AAA1dUAANXYAADV2QAA1d4AANXrAADV8AAA1fIAANX0AADV+QAA1fwAANX/AADWAQAA1iYAANZKAADWcQAA1pUAANaYAADWmgAA1pwAANaeAADWoAAA1qIAANajAADWpgAA1rMAANbEAADWxgAA1sgAANbKAADWzAAA1s4AANbQAADW0gAA1tQAANblAADW6AAA1usAANbuAADW8QAA1vQAANb3AADW+gAA1v0AANb/AADXPgAA10AAANdCAADXRAAA10cAANdIAADXSQAA10oAANdLAADXTQAA108AANdQAADXUQAA11MAANdUAADXkwAA15UAANeXAADXmQAA15wAANedAADXngAA158AANegAADXogAA16QAANelAADXpgAA16gAANepAADX6AAA1+oAANftAADX7wAA1/IAANfzAADX9AAA1/UAANf2AADX+AAA1/oAANf7AADX/AAA1/4AANf/AADYDAAA2A0AANgOAADYEAAA2E8AANhRAADYUwAA2FUAANhYAADYWQAA2FoAANhbAADYXAAA2F4AANhgAADYYQAA2GIAANhkAADYZQAA2KQAANimAADYqAAA2KoAANitAADYrgAA2K8AANiwAADYsQAA2LMAANi1AADYtgAA2LcAANi5AADYugAA2PkAANj7AADY/QAA2P8AANkCAADZAwAA2QQAANkFAADZBgAA2QgAANkKAADZCwAA2QwAANkOAADZDwAA2U4AANlQAADZUgAA2VQAANlXAADZWAAA2VkAANlaAADZWwAA2V0AANlfAADZYAAA2WEAANljAADZZAAA2aMAANmlAADZpwAA2akAANmsAADZrQAA2a4AANmvAADZsAAA2bIAANm0AADZtQAA2bYAANm4AADZuQAA2d4AANoCAADaKQAA2k0AANpQAADaUgAA2lQAANpWAADaWAAA2loAANpbAADaXgAA2msAANp6AADafAAA2n4AANqAAADaggAA2oQAANqGAADaiAAA2pcAANqaAADanQAA2qAAANqjAADapgAA2qkAANqsAADargAA2u0AANrvAADa8QAA2vMAANr2AADa9wAA2vgAANr5AADa+gAA2vwAANr+AADa/wAA2wAAANsCAADbAwAA20IAANtEAADbRgAA20gAANtLAADbTAAA200AANtOAADbTwAA21EAANtTAADbVAAA21UAANtXAADbWAAA25cAANuZAADbmwAA250AANugAADboQAA26IAANujAADbpAAA26YAANuoAADbqQAA26oAANusAADbrQAA2+wAANvuAADb8QAA2/MAANv2AADb9wAA2/gAANv5AADb+gAA2/wAANv+AADb/wAA3AAAANwCAADcAwAA3EIAANxEAADcRgAA3EgAANxLAADcTAAA3E0AANxOAADcTwAA3FEAANxTAADcVAAA3FUAANxXAADcWAAA3JcAANyZAADcmwAA3J0AANygAADcoQAA3KIAANyjAADcpAAA3KYAANyoAADcqQAA3KoAANysAADcrQAA3OwAANzuAADc8AAA3PIAANz1AADc9gAA3PcAANz4AADc+QAA3PsAANz9AADc/gAA3P8AAN0BAADdAgAA3U0AAN1wAADdkAAA3bAAAN2yAADdtAAA3bYAAN24AADduwAA3bwAAN29AADdwAAA3cEAAN3DAADdxAAA3cYAAN3IAADdyQAA3coAAN3NAADdzgAA3dMAAN3gAADd5QAA3ecAAN3pAADd7gAA3fEAAN30AADd9gAA3hsAAN4/AADeZgAA3ooAAN6NAADejwAA3pEAAN6TAADelQAA3pcAAN6YAADemwAA3qgAAN65AADeuwAA3r0AAN6/AADewQAA3sMAAN7FAADexwAA3skAAN7aAADe3QAA3uAAAN7jAADe5gAA3ukAAN7sAADe7wAA3vIAAN70AADfMwAA3zUAAN83AADfOQAA3zwAAN89AADfPgAA3z8AAN9AAADfQgAA30QAAN9FAADfRgAA30gAAN9JAADfiAAA34oAAN+MAADfjgAA35EAAN+SAADfkwAA35QAAN+VAADflwAA35kAAN+aAADfmwAA350AAN+eAADf3QAA398AAN/iAADf5AAA3+cAAN/oAADf6QAA3+oAAN/rAADf7QAA3+8AAN/wAADf8QAA3/MAAN/0AADgAQAA4AIAAOADAADgBQAA4EQAAOBGAADgSAAA4EoAAOBNAADgTgAA4E8AAOBQAADgUQAA4FMAAOBVAADgVgAA4FcAAOBZAADgWgAA4JkAAOCbAADgnQAA4J8AAOCiAADgowAA4KQAAOClAADgpgAA4KgAAOCqAADgqwAA4KwAAOCuAADgrwAA4O4AAODwAADg8gAA4PQAAOD3AADg+AAA4PkAAOD6AADg+wAA4P0AAOD/AADhAAAA4QEAAOEDAADhBAAA4UMAAOFFAADhRwAA4UkAAOFMAADhTQAA4U4AAOFPAADhUAAA4VIAAOFUAADhVQAA4VYAAOFYAADhWQAA4ZgAAOGaAADhnAAA4Z4AAOGhAADhogAA4aMAAOGkAADhpQAA4acAAOGpAADhqgAA4asAAOGtAADhrgAA4dMAAOH3AADiHgAA4kIAAOJFAADiRwAA4kkAAOJLAADiTQAA4k8AAOJQAADiUwAA4mAAAOJvAADicQAA4nMAAOJ1AADidwAA4nkAAOJ7AADifQAA4owAAOKPAADikgAA4pUAAOKYAADimwAA4p4AAOKhAADiowAA4uIAAOLkAADi5gAA4ugAAOLrAADi7AAA4u0AAOLuAADi7wAA4vEAAOLzAADi9AAA4vUAAOL3AADi+AAA4zcAAOM5AADjOwAA4z0AAONAAADjQQAA40IAAONDAADjRAAA40YAAONIAADjSQAA40oAAONMAADjTQAA44wAAOOOAADjkAAA45IAAOOVAADjlgAA45cAAOOYAADjmQAA45sAAOOdAADjngAA458AAOOhAADjogAA4+EAAOPjAADj5gAA4+gAAOPrAADj7AAA4+0AAOPuAADj7wAA4/EAAOPzAADj9AAA4/UAAOP3AADj+AAA5DcAAOQ5AADkOwAA5D0AAORAAADkQQAA5EIAAORDAADkRAAA5EYAAORIAADkSQAA5EoAAORMAADkTQAA5IwAAOSOAADkkAAA5JIAAOSVAADklgAA5JcAAOSYAADkmQAA5JsAAOSdAADkngAA5J8AAOShAADkogAA5OEAAOTjAADk5QAA5OcAAOTqAADk6wAA5OwAAOTtAADk7gAA5PAAAOTyAADk8wAA5PQAAOT2AADk9wAA5UIAAOVlAADlhQAA5aUAAOWnAADlqQAA5asAAOWtAADlsAAA5bEAAOWyAADltQAA5bYAAOW4AADluQAA5bsAAOW+AADlvwAA5cAAAOXDAADlxAAA5ckAAOXWAADl2wAA5d0AAOXfAADl5AAA5ecAAOXqAADl7AAA5hEAAOY1AADmXAAA5oAAAOaDAADmhQAA5ocAAOaJAADmiwAA5o0AAOaOAADmkQAA5p4AAOavAADmsQAA5rMAAOa1AADmtwAA5rkAAOa7AADmvQAA5r8AAObQAADm0wAA5tYAAObZAADm3AAA5t8AAObiAADm5QAA5ugAAObqAADnKQAA5ysAAOctAADnLwAA5zIAAOczAADnNAAA5zUAAOc2AADnOAAA5zoAAOc7AADnPAAA5z4AAOc/AADnfgAA54AAAOeCAADnhAAA54cAAOeIAADniQAA54oAAOeLAADnjQAA548AAOeQAADnkQAA55MAAOeUAADn0wAA59UAAOfYAADn2gAA590AAOfeAADn3wAA5+AAAOfhAADn4wAA5+UAAOfmAADn5wAA5+kAAOfqAADn9wAA5/gAAOf5AADn+wAA6DoAAOg8AADoPgAA6EAAAOhDAADoRAAA6EUAAOhGAADoRwAA6EkAAOhLAADoTAAA6E0AAOhPAADoUAAA6I8AAOiRAADokwAA6JUAAOiYAADomQAA6JoAAOibAADonAAA6J4AAOigAADooQAA6KIAAOikAADopQAA6OQAAOjmAADo6AAA6OoAAOjtAADo7gAA6O8AAOjwAADo8QAA6PMAAOj1AADo9gAA6PcAAOj5AADo+gAA6TkAAOk7AADpPgAA6UAAAOlDAADpRAAA6UUAAOlGAADpRwAA6UkAAOlLAADpTAAA6U0AAOlPAADpUAAA6WMAAOmiAADppAAA6aYAAOmoAADpqwAA6awAAOmtAADprgAA6a8AAOmxAADpswAA6bQAAOm1AADptwAA6bgAAOndAADqAQAA6igAAOpMAADqTwAA6lEAAOpTAADqVQAA6lcAAOpZAADqWgAA6l0AAOpqAADqeQAA6nsAAOp9AADqfwAA6oEAAOqDAADqhQAA6ocAAOqWAADqmQAA6pwAAOqfAADqogAA6qUAAOqoAADqqwAA6q0AAOrsAADq7gAA6vAAAOryAADq9QAA6vYAAOr3AADq+AAA6vkAAOr7AADq/QAA6v4AAOr/AADrAQAA6wIAAOtBAADrQwAA60UAAOtHAADrSgAA60sAAOtMAADrTQAA604AAOtQAADrUgAA61MAAOtUAADrVgAA61cAAOuWAADrmAAA65oAAOucAADrnwAA66AAAOuhAADrogAA66MAAOulAADrpwAA66gAAOupAADrqwAA66wAAOvrAADr7QAA6/AAAOvyAADr9QAA6/YAAOv3AADr+AAA6/kAAOv7AADr/QAA6/4AAOv/AADsAQAA7AIAAOxBAADsQwAA7EUAAOxHAADsSgAA7EsAAOxMAADsTQAA7E4AAOxQAADsUgAA7FMAAOxUAADsVgAA7FcAAOyWAADsmAAA7JoAAOycAADsnwAA7KAAAOyhAADsogAA7KMAAOylAADspwAA7KgAAOypAADsqwAA7KwAAOzrAADs7QAA7O8AAOzxAADs9AAA7PUAAOz2AADs9wAA7PgAAOz6AADs/AAA7P0AAOz+AADtAAAA7QEAAO1MAADtbwAA7Y8AAO2vAADtsQAA7bMAAO21AADttwAA7boAAO27AADtvAAA7b8AAO3AAADtwgAA7cMAAO3FAADtyAAA7ckAAO3KAADtzQAA7c4AAO3TAADt4AAA7eUAAO3nAADt6QAA7e4AAO3xAADt9AAA7fYAAO4bAADuPwAA7mYAAO6KAADujQAA7o8AAO6RAADukwAA7pUAAO6XAADumAAA7psAAO6oAADuuQAA7rsAAO69AADuvwAA7sEAAO7DAADuxQAA7scAAO7JAADu2gAA7t0AAO7gAADu4wAA7uYAAO7pAADu7AAA7u8AAO7yAADu9AAA7zMAAO81AADvNwAA7zkAAO88AADvPQAA7z4AAO8/AADvQAAA70IAAO9EAADvRQAA70YAAO9IAADvSQAA74gAAO+KAADvjAAA744AAO+RAADvkgAA75MAAO+UAADvlQAA75cAAO+ZAADvmgAA75sAAO+dAADvngAA790AAO/fAADv4gAA7+QAAO/nAADv6AAA7+kAAO/qAADv6wAA7+0AAO/vAADv8AAA7/EAAO/zAADv9AAA8AEAAPACAADwAwAA8AUAAPBEAADwRgAA8EgAAPBKAADwTQAA8E4AAPBPAADwUAAA8FEAAPBTAADwVQAA8FYAAPBXAADwWQAA8FoAAPCZAADwmwAA8J0AAPCfAADwogAA8KMAAPCkAADwpQAA8KYAAPCoAADwqgAA8KsAAPCsAADwrgAA8K8AAPDuAADw8AAA8PIAAPD0AADw9wAA8PgAAPD5AADw+gAA8PsAAPD9AADw/wAA8QAAAPEBAADxAwAA8QQAAPFDAADxRQAA8UcAAPFJAADxTAAA8U0AAPFOAADxTwAA8VAAAPFSAADxVAAA8VUAAPFWAADxWAAA8VkAAPGYAADxmgAA8ZwAAPGeAADxoQAA8aIAAPGjAADxpAAA8aUAAPGnAADxqQAA8aoAAPGrAADxrQAA8a4AAPHTAADx9wAA8h4AAPJCAADyRQAA8kcAAPJJAADySwAA8k0AAPJPAADyUAAA8lMAAPJgAADybwAA8nEAAPJzAADydQAA8ncAAPJ5AADyewAA8n0AAPKMAADyjwAA8pIAAPKVAADymAAA8psAAPKeAADyoQAA8qMAAPLiAADy5AAA8uYAAPLoAADy6wAA8uwAAPLtAADy7gAA8u8AAPLxAADy8wAA8vQAAPL1AADy9wAA8vgAAPM3AADzOQAA8zsAAPM9AADzQAAA80EAAPNCAADzQwAA80QAAPNGAADzSAAA80kAAPNKAADzTAAA800AAPOMAADzjgAA85AAAPOSAADzlQAA85YAAPOXAADzmAAA85kAAPObAADznQAA854AAPOfAADzoQAA86IAAPPhAADz4wAA8+YAAPPoAADz6wAA8+wAAPPtAADz7gAA8+8AAPPxAADz8wAA8/QAAPP1AADz9wAA8/gAAPQ3AAD0OQAA9DsAAPQ9AAD0QAAA9EEAAPRCAAD0QwAA9EQAAPRGAAD0SAAA9EkAAPRKAAD0TAAA9E0AAPSMAAD0jgAA9JAAAPSSAAD0lQAA9JYAAPSXAAD0mAAA9JkAAPSbAAD0nQAA9J4AAPSfAAD0oQAA9KIAAPThAAD04wAA9OUAAPTnAAD06gAA9OsAAPTsAAD07QAA9O4AAPTwAAD08gAA9PMAAPT0AAD09gAA9PcAAPVCAAD1ZQAA9YUAAPWlAAD1pwAA9akAAPWrAAD1rQAA9bAAAPWxAAD1sgAA9bUAAPW2AAD1uAAA9bkAAPW7AAD1vQAA9b4AAPW/AAD1wgAA9cMAAPXIAAD11QAA9doAAPXcAAD13gAA9eMAAPXmAAD16QAA9esAAPYQAAD2NAAA9lsAAPZ/AAD2ggAA9oQAAPaGAAD2iAAA9ooAAPaMAAD2jQAA9pAAAPadAAD2rgAA9rAAAPayAAD2tAAA9rYAAPa4AAD2ugAA9rwAAPa+AAD2zwAA9tIAAPbVAAD22AAA9tsAAPbeAAD24QAA9uQAAPbnAAD26QAA9ygAAPcqAAD3LAAA9y4AAPcxAAD3MgAA9zMAAPc0AAD3NQAA9zcAAPc5AAD3OgAA9zsAAPc9AAD3PgAA930AAPd/AAD3gQAA94MAAPeGAAD3hwAA94gAAPeJAAD3igAA94wAAPeOAAD3jwAA95AAAPeSAAD3kwAA99IAAPfUAAD31wAA99kAAPfcAAD33QAA994AAPffAAD34AAA9+IAAPfkAAD35QAA9+YAAPfoAAD36QAA9/YAAPf3AAD3+AAA9/oAAPg5AAD4OwAA+D0AAPg/AAD4QgAA+EMAAPhEAAD4RQAA+EYAAPhIAAD4SgAA+EsAAPhMAAD4TgAA+E8AAPiOAAD4kAAA+JIAAPiUAAD4lwAA+JgAAPiZAAD4mgAA+JsAAPidAAD4nwAA+KAAAPihAAD4owAA+KQAAPjjAAD45QAA+OcAAPjpAAD47AAA+O0AAPjuAAD47wAA+PAAAPjyAAD49AAA+PUAAPj2AAD4+AAA+PkAAPk4AAD5OgAA+TwAAPk+AAD5QQAA+UIAAPlDAAD5RAAA+UUAAPlHAAD5SQAA+UoAAPlLAAD5TQAA+U4AAPmNAAD5jwAA+ZEAAPmTAAD5lgAA+ZcAAPmYAAD5mQAA+ZoAAPmcAAD5ngAA+Z8AAPmgAAD5ogAA+aMAAPnIAAD57AAA+hMAAPo3AAD6OgAA+jwAAPo+AAD6QAAA+kIAAPpEAAD6RQAA+kgAAPpVAAD6ZAAA+mYAAPpoAAD6agAA+mwAAPpuAAD6cAAA+nIAAPqBAAD6hAAA+ocAAPqKAAD6jQAA+pAAAPqTAAD6lgAA+pgAAPrXAAD62QAA+tsAAPrdAAD64AAA+uEAAPriAAD64wAA+uQAAPrmAAD66AAA+ukAAPrqAAD67AAA+u0AAPssAAD7LgAA+zAAAPsyAAD7NQAA+zYAAPs3AAD7OAAA+zkAAPs7AAD7PQAA+z4AAPs/AAD7QQAA+0IAAPuBAAD7gwAA+4UAAPuHAAD7igAA+4sAAPuMAAD7jQAA+44AAPuQAAD7kgAA+5MAAPuUAAD7lgAA+5cAAPvWAAD72AAA+9oAAPvcAAD73wAA++AAAPvhAAD74gAA++MAAPvlAAD75wAA++gAAPvpAAD76wAA++wAAPwrAAD8LQAA/C8AAPwxAAD8NAAA/DUAAPw2AAD8NwAA/DgAAPw6AAD8PAAA/D0AAPw+AAD8QAAA/EEAAPyAAAD8ggAA/IQAAPyGAAD8iQAA/IoAAPyLAAD8jAAA/I0AAPyPAAD8kQAA/JIAAPyTAAD8lQAA/JYAAPzVAAD81wAA/NoAAPzcAAD83wAA/OAAAPzhAAD84gAA/OMAAPzlAAD85wAA/OgAAPzpAAD86wAA/OwAAP03AAD9WgAA/XoAAP2aAAD9nAAA/Z4AAP2gAAD9ogAA/aUAAP2mAAD9pwAA/aoAAP2rAAD9rQAA/a4AAP2wAAD9swAA/bQAAP21AAD9uAAA/bkAAP2+AAD9ywAA/dAAAP3SAAD91AAA/dkAAP3cAAD93wAA/eEAAP4GAAD+KgAA/lEAAP51AAD+eAAA/noAAP58AAD+fgAA/oAAAP6CAAD+gwAA/oYAAP6TAAD+pAAA/qYAAP6oAAD+qgAA/qwAAP6uAAD+sAAA/rIAAP60AAD+xQAA/sgAAP7LAAD+zgAA/tEAAP7UAAD+1wAA/toAAP7dAAD+3wAA/x4AAP8gAAD/IgAA/yQAAP8nAAD/KAAA/ykAAP8qAAD/KwAA/y0AAP8vAAD/MAAA/zEAAP8zAAD/NAAA/3MAAP91AAD/dwAA/3kAAP98AAD/fQAA/34AAP9/AAD/gAAA/4IAAP+EAAD/hQAA/4YAAP+IAAD/iQAA/8gAAP/KAAD/zQAA/88AAP/SAAD/0wAA/9QAAP/VAAD/1gAA/9gAAP/aAAD/2wAA/9wAAP/eAAD/3wAA/+wAAP/tAAD/7gAA//AAAQAvAAEAMQABADMAAQA1AAEAOAABADkAAQA6AAEAOwABADwAAQA+AAEAQAABAEEAAQBCAAEARAABAEUAAQCEAAEAhgABAIgAAQCKAAEAjQABAI4AAQCPAAEAkAABAJEAAQCTAAEAlQABAJYAAQCXAAEAmQABAJoAAQDZAAEA2wABAN0AAQDfAAEA4gABAOMAAQDkAAEA5QABAOYAAQDoAAEA6gABAOsAAQDsAAEA7gABAO8AAQEuAAEBMAABATIAAQE0AAEBNwABATgAAQE5AAEBOgABATsAAQE9AAEBPwABAUAAAQFBAAEBQwABAUQAAQGDAAEBhQABAYcAAQGJAAEBjAABAY0AAQGOAAEBjwABAZAAAQGSAAEBlAABAZUAAQGWAAEBmAABAZkAAQG+AAEB4gABAgkAAQItAAECMAABAjIAAQI0AAECNgABAjgAAQI6AAECOwABAj4AAQJLAAECWgABAlwAAQJeAAECYAABAmIAAQJkAAECZgABAmgAAQJ3AAECegABAn0AAQKAAAECgwABAoYAAQKJAAECjAABAo4AAQLNAAECzwABAtEAAQLTAAEC1gABAtcAAQLYAAEC2QABAtoAAQLcAAEC3gABAt8AAQLgAAEC4gABAuMAAQMiAAEDJAABAyYAAQMoAAEDKwABAywAAQMtAAEDLgABAy8AAQMxAAEDMwABAzQAAQM1AAEDNwABAzgAAQN3AAEDeQABA3sAAQN9AAEDgAABA4EAAQOCAAEDgwABA4QAAQOGAAEDiAABA4kAAQOKAAEDjAABA40AAQPMAAEDzgABA9EAAQPTAAED1gABA9cAAQPYAAED2QABA9oAAQPcAAED3gABA98AAQPgAAED4gABA+MAAQQiAAEEJAABBCYAAQQoAAEEKwABBCwAAQQtAAEELgABBC8AAQQxAAEEMwABBDQAAQQ1AAEENwABBDgAAQR3AAEEeQABBHsAAQR9AAEEgAABBIEAAQSCAAEEgwABBIQAAQSGAAEEiAABBIkAAQSKAAEEjAABBI0AAQTMAAEEzgABBNAAAQTSAAEE1QABBNYAAQTXAAEE2AABBNkAAQTbAAEE3QABBN4AAQTfAAEE4QABBOIAAQUtAAEFUAABBXAAAQWQAAEFkgABBZQAAQWWAAEFmAABBZsAAQWcAAEFnQABBaAAAQWhAAEFowABBaQAAQWmAAEFqQABBaoAAQWrAAEFrgABBa8AAQW0AAEFwQABBcYAAQXIAAEFygABBc8AAQXSAAEF1QABBdcAAQX8AAEGIAABBkcAAQZrAAEGbgABBnAAAQZyAAEGdAABBnYAAQZ4AAEGeQABBnwAAQaJAAEGmgABBpwAAQaeAAEGoAABBqIAAQakAAEGpgABBqgAAQaqAAEGuwABBr4AAQbBAAEGxAABBscAAQbKAAEGzQABBtAAAQbTAAEG1QABBxQAAQcWAAEHGAABBxoAAQcdAAEHHgABBx8AAQcgAAEHIQABByMAAQclAAEHJgABBycAAQcpAAEHKgABB2kAAQdrAAEHbQABB28AAQdyAAEHcwABB3QAAQd1AAEHdgABB3gAAQd6AAEHewABB3wAAQd+AAEHfwABB74AAQfAAAEHwwABB8UAAQfIAAEHyQABB8oAAQfLAAEHzAABB84AAQfQAAEH0QABB9IAAQfUAAEH1QABB+IAAQfjAAEH5AABB+YAAQglAAEIJwABCCkAAQgrAAEILgABCC8AAQgwAAEIMQABCDIAAQg0AAEINgABCDcAAQg4AAEIOgABCDsAAQh6AAEIfAABCH4AAQiAAAEIgwABCIQAAQiFAAEIhgABCIcAAQiJAAEIiwABCIwAAQiNAAEIjwABCJAAAQjPAAEI0QABCNMAAQjVAAEI2AABCNkAAQjaAAEI2wABCNwAAQjeAAEI4AABCOEAAQjiAAEI5AABCOUAAQkkAAEJJgABCSkAAQkrAAEJLgABCS8AAQkwAAEJMQABCTIAAQk0AAEJNgABCTcAAQk4AAEJOgABCTsAAQlPAAEJjgABCZAAAQmSAAEJlAABCZcAAQmYAAEJmQABCZoAAQmbAAEJnQABCZ8AAQmgAAEJoQABCaMAAQmkAAEJyQABCe0AAQoUAAEKOAABCjsAAQo9AAEKPwABCkEAAQpDAAEKRQABCkYAAQpJAAEKVgABCmUAAQpnAAEKaQABCmsAAQptAAEKbwABCnEAAQpzAAEKggABCoUAAQqIAAEKiwABCo4AAQqRAAEKlAABCpcAAQqZAAEK2AABCtoAAQrcAAEK3gABCuEAAQriAAEK4wABCuQAAQrlAAEK5wABCukAAQrqAAEK6wABCu0AAQruAAELLQABCy8AAQsxAAELMwABCzYAAQs3AAELOAABCzkAAQs6AAELPAABCz4AAQs/AAELQAABC0IAAQtDAAELggABC4QAAQuGAAELiAABC4sAAQuMAAELjQABC44AAQuPAAELkQABC5MAAQuUAAELlQABC5cAAQuYAAEL1wABC9kAAQvcAAEL3gABC+EAAQviAAEL4wABC+QAAQvlAAEL5wABC+kAAQvqAAEL6wABC+0AAQvuAAEMLQABDC8AAQwxAAEMMwABDDYAAQw3AAEMOAABDDkAAQw6AAEMPAABDD4AAQw/AAEMQAABDEIAAQxDAAEMggABDIQAAQyGAAEMiAABDIsAAQyMAAEMjQABDI4AAQyPAAEMkQABDJMAAQyUAAEMlQABDJcAAQyYAAEM1wABDNkAAQzbAAEM3QABDOAAAQzhAAEM4gABDOMAAQzkAAEM5gABDOgAAQzpAAEM6gABDOwAAQztAAENOAABDVsAAQ17AAENmwABDZ0AAQ2fAAENoQABDaMAAQ2mAAENpwABDagAAQ2rAAENrAABDa4AAQ2vAAENsQABDbQAAQ21AAENtgABDbkAAQ26AAENvwABDcwAAQ3RAAEN0wABDdUAAQ3aAAEN3QABDeAAAQ3iAAEOBwABDisAAQ5SAAEOdgABDnkAAQ57AAEOfQABDn8AAQ6BAAEOgwABDoQAAQ6HAAEOlAABDqUAAQ6nAAEOqQABDqsAAQ6tAAEOrwABDrEAAQ6zAAEOtQABDsYAAQ7JAAEOzAABDs8AAQ7SAAEO1QABDtgAAQ7bAAEO3gABDuAAAQ8fAAEPIQABDyMAAQ8lAAEPKAABDykAAQ8qAAEPKwABDywAAQ8uAAEPMAABDzEAAQ8yAAEPNAABDzUAAQ90AAEPdgABD3gAAQ96AAEPfQABD34AAQ9/AAEPgAABD4EAAQ+DAAEPhQABD4YAAQ+HAAEPiQABD4oAAQ/JAAEPywABD84AAQ/QAAEP0wABD9QAAQ/VAAEP1gABD9cAAQ/ZAAEP2wABD9wAAQ/dAAEP3wABD+AAAQ/tAAEP7gABD+8AAQ/xAAEQMAABEDIAARA0AAEQNgABEDkAARA6AAEQOwABEDwAARA9AAEQPwABEEEAARBCAAEQQwABEEUAARBGAAEQhQABEIcAARCJAAEQiwABEI4AARCPAAEQkAABEJEAARCSAAEQlAABEJYAARCXAAEQmAABEJoAARCbAAEQ2gABENwAARDeAAEQ4AABEOMAARDkAAEQ5QABEOYAARDnAAEQ6QABEOsAARDsAAEQ7QABEO8AARDwAAERLwABETEAARE0AAERNgABETkAARE6AAEROwABETwAARE9AAERPwABEUEAARFCAAERQwABEUUAARFGAAERVQABEZQAARGWAAERmAABEZoAARGdAAERngABEZ8AARGgAAERoQABEaMAARGlAAERpgABEacAARGpAAERqgABEc8AARHzAAESGgABEj4AARJBAAESQwABEkUAARJHAAESSQABEksAARJMAAESTwABElwAARJrAAESbQABEm8AARJxAAEScwABEnUAARJ3AAESeQABEogAARKLAAESjgABEpEAARKUAAESlwABEpoAARKdAAESnwABEt4AARLgAAES4gABEuQAARLnAAES6AABEukAARLqAAES6wABEu0AARLvAAES8AABEvEAARLzAAES9AABEzMAARM1AAETNwABEzkAARM8AAETPQABEz4AARM/AAETQAABE0IAARNEAAETRQABE0YAARNIAAETSQABE4gAAROKAAETjAABE44AARORAAETkgABE5MAAROUAAETlQABE5cAAROZAAETmgABE5sAAROdAAETngABE90AARPfAAET4gABE+QAARPnAAET6AABE+kAARPqAAET6wABE+0AARPvAAET8AABE/EAARPzAAET9AABFDMAARQ1AAEUNwABFDkAARQ8AAEUPQABFD4AARQ/AAEUQAABFEIAARREAAEURQABFEYAARRIAAEUSQABFIgAARSKAAEUjAABFI4AARSRAAEUkgABFJMAARSUAAEUlQABFJcAARSZAAEUmgABFJsAARSdAAEUngABFN0AARTfAAEU4QABFOMAARTmAAEU5wABFOgAARTpAAEU6gABFOwAARTuAAEU7wABFPAAARTyAAEU8wABFT4AARVhAAEVgQABFaEAARWjAAEVpQABFacAARWpAAEVrAABFa0AARWuAAEVsQABFbIAARW0AAEVtQABFbcAARW6AAEVuwABFbwAARW/AAEVwAABFcUAARXSAAEV1wABFdkAARXbAAEV4AABFeMAARXmAAEV6AABFg0AARYxAAEWWAABFnwAARZ/AAEWgQABFoMAARaFAAEWhwABFokAARaKAAEWjQABFpoAARarAAEWrQABFq8AARaxAAEWswABFrUAARa3AAEWuQABFrsAARbMAAEWzwABFtIAARbVAAEW2AABFtsAARbeAAEW4QABFuQAARbmAAEXJQABFycAARcpAAEXKwABFy4AARcvAAEXMAABFzEAARcyAAEXNAABFzYAARc3AAEXOAABFzoAARc7AAEXegABF3wAARd+AAEXgAABF4MAAReEAAEXhQABF4YAAReHAAEXiQABF4sAAReMAAEXjQABF48AAReQAAEXzwABF9EAARfUAAEX1gABF9kAARfaAAEX2wABF9wAARfdAAEX3wABF+EAARfiAAEX4wABF+UAARfmAAEX8wABF/QAARf1AAEX9wABGDYAARg4AAEYOgABGDwAARg/AAEYQAABGEEAARhCAAEYQwABGEUAARhHAAEYSAABGEkAARhLAAEYTAABGIsAARiNAAEYjwABGJEAARiUAAEYlQABGJYAARiXAAEYmAABGJoAARicAAEYnQABGJ4AARigAAEYoQABGOAAARjiAAEY5AABGOYAARjpAAEY6gABGOsAARjsAAEY7QABGO8AARjxAAEY8gABGPMAARj1AAEY9gABGTUAARk3AAEZOgABGTwAARk/AAEZQAABGUEAARlCAAEZQwABGUUAARlHAAEZSAABGUkAARlLAAEZTAABGWAAARmfAAEZoQABGaMAARmlAAEZqAABGakAARmqAAEZqwABGawAARmuAAEZsAABGbEAARmyAAEZtAABGbUAARnaAAEZ/gABGiUAARpJAAEaTAABGk4AARpQAAEaUgABGlQAARpWAAEaVwABGloAARpnAAEadgABGngAARp6AAEafAABGn4AARqAAAEaggABGoQAARqTAAEalgABGpkAARqcAAEanwABGqIAARqlAAEaqAABGqoAARrpAAEa6wABGu0AARrvAAEa8gABGvMAARr0AAEa9QABGvYAARr4AAEa+gABGvsAARr8AAEa/gABGv8AARs+AAEbQAABG0IAARtEAAEbRwABG0gAARtJAAEbSgABG0sAARtNAAEbTwABG1AAARtRAAEbUwABG1QAARuTAAEblQABG5cAARuZAAEbnAABG50AARueAAEbnwABG6AAARuiAAEbpAABG6UAARumAAEbqAABG6kAARvoAAEb6gABG+0AARvvAAEb8gABG/MAARv0AAEb9QABG/YAARv4AAEb+gABG/sAARv8AAEb/gABG/8AARw+AAEcQAABHEIAARxEAAEcRwABHEgAARxJAAEcSgABHEsAARxNAAEcTwABHFAAARxRAAEcUwABHFQAARyTAAEclQABHJcAARyZAAEcnAABHJ0AARyeAAEcnwABHKAAARyiAAEcpAABHKUAARymAAEcqAABHKkAARzoAAEc6gABHOwAARzuAAEc8QABHPIAARzzAAEc9AABHPUAARz3AAEc+QABHPoAARz7AAEc/QABHP4AAR1JAAEdbAABHYwAAR2sAAEdrgABHbAAAR2yAAEdtAABHbcAAR24AAEduQABHbwAAR29AAEdvwABHcAAAR3CAAEdxQABHcYAAR3HAAEdygABHcsAAR3QAAEd3QABHeIAAR3kAAEd5gABHesAAR3uAAEd8QABHfMAAR4YAAEePAABHmMAAR6HAAEeigABHowAAR6OAAEekAABHpIAAR6UAAEelQABHpgAAR6lAAEetgABHrgAAR66AAEevAABHr4AAR7AAAEewgABHsQAAR7GAAEe1wABHtoAAR7dAAEe4AABHuMAAR7mAAEe6QABHuwAAR7vAAEe8QABHzAAAR8yAAEfNAABHzYAAR85AAEfOgABHzsAAR88AAEfPQABHz8AAR9BAAEfQgABH0MAAR9FAAEfRgABH4UAAR+HAAEfiQABH4sAAR+OAAEfjwABH5AAAR+RAAEfkgABH5QAAR+WAAEflwABH5gAAR+aAAEfmwABH9oAAR/cAAEf3wABH+EAAR/kAAEf5QABH+YAAR/nAAEf6AABH+oAAR/sAAEf7QABH+4AAR/wAAEf8QABH/4AAR//AAEgAAABIAIAASBBAAEgQwABIEUAASBHAAEgSgABIEsAASBMAAEgTQABIE4AASBQAAEgUgABIFMAASBUAAEgVgABIFcAASCWAAEgmAABIJoAASCcAAEgnwABIKAAASChAAEgogABIKMAASClAAEgpwABIKgAASCpAAEgqwABIKwAASDrAAEg7QABIO8AASDxAAEg9AABIPUAASD2AAEg9wABIPgAASD6AAEg/AABIP0AASD+AAEhAAABIQEAASFAAAEhQgABIUQAASFGAAEhSQABIUoAASFLAAEhTAABIU0AASFPAAEhUQABIVIAASFTAAEhVQABIVYAASGVAAEhlwABIZkAASGbAAEhngABIZ8AASGgAAEhoQABIaIAASGkAAEhpgABIacAASGoAAEhqgABIasAASHQAAEh9AABIhsAASI/AAEiQgABIkQAASJGAAEiSAABIkoAASJMAAEiTQABIlAAASJdAAEibAABIm4AASJwAAEicgABInQAASJ2AAEieAABInoAASKJAAEijAABIo8AASKSAAEilQABIpgAASKbAAEingABIqAAASLfAAEi4QABIuMAASLlAAEi6AABIukAASLqAAEi6wABIuwAASLuAAEi8AABIvEAASLyAAEi9AABIvUAASM0AAEjNgABIzgAASM6AAEjPQABIz4AASM/AAEjQAABI0EAASNDAAEjRQABI0YAASNHAAEjSQABI0oAASOJAAEjiwABI40AASOPAAEjkgABI5MAASOUAAEjlQABI5YAASOYAAEjmgABI5sAASOcAAEjngABI58AASPeAAEj4AABI+MAASPlAAEj6AABI+kAASPqAAEj6wABI+wAASPuAAEj8AABI/EAASPyAAEj9AABI/UAASQ0AAEkNgABJDgAASQ6AAEkPQABJD4AASQ/AAEkQAABJEEAASRDAAEkRQABJEYAASRHAAEkSQABJEoAASSJAAEkiwABJI0AASSPAAEkkgABJJMAASSUAAEklQABJJYAASSYAAEkmgABJJsAASScAAEkngABJJ8AASTeAAEk4AABJOIAASTkAAEk5wABJOgAASTpAAEk6gABJOsAASTtAAEk7wABJPAAASTxAAEk8wABJPQAASU/AAElYgABJYIAASWiAAElpAABJaYAASWoAAElqgABJa0AASWuAAElrwABJbIAASWzAAEltQABJbYAASW4AAEluwABJbwAASW9AAElwAABJcEAASXKAAEl1wABJdwAASXeAAEl4AABJeUAASXoAAEl6wABJe0AASYSAAEmNgABJl0AASaBAAEmhAABJoYAASaIAAEmigABJowAASaOAAEmjwABJpIAASafAAEmsAABJrIAASa0AAEmtgABJrgAASa6AAEmvAABJr4AASbAAAEm0QABJtQAASbXAAEm2gABJt0AASbgAAEm4wABJuYAASbpAAEm6wABJyoAAScsAAEnLgABJzAAASczAAEnNAABJzUAASc2AAEnNwABJzkAASc7AAEnPAABJz0AASc/AAEnQAABJ38AASeBAAEngwABJ4UAASeIAAEniQABJ4oAASeLAAEnjAABJ44AASeQAAEnkQABJ5IAASeUAAEnlQABJ9QAASfWAAEn2QABJ9sAASfeAAEn3wABJ+AAASfhAAEn4gABJ+QAASfmAAEn5wABJ+gAASfqAAEn6wABJ/gAASf5AAEn+gABJ/wAASg7AAEoPQABKD8AAShBAAEoRAABKEUAAShGAAEoRwABKEgAAShKAAEoTAABKE0AAShOAAEoUAABKFEAASiQAAEokgABKJQAASiWAAEomQABKJoAASibAAEonAABKJ0AASifAAEooQABKKIAASijAAEopQABKKYAASjlAAEo5wABKOkAASjrAAEo7gABKO8AASjwAAEo8QABKPIAASj0AAEo9gABKPcAASj4AAEo+gABKPsAASk6AAEpPAABKT4AASlAAAEpQwABKUQAASlFAAEpRgABKUcAASlJAAEpSwABKUwAASlNAAEpTwABKVAAASmPAAEpkQABKZMAASmVAAEpmAABKZkAASmaAAEpmwABKZwAASmeAAEpoAABKaEAASmiAAEppAABKaUAASnKAAEp7gABKhUAASo5AAEqPAABKj4AASpAAAEqQgABKkQAASpGAAEqRwABKkoAASpXAAEqZgABKmgAASpqAAEqbAABKm4AASpwAAEqcgABKnQAASqDAAEqhgABKokAASqMAAEqjwABKpIAASqVAAEqmAABKpoAASrZAAEq2wABKt0AASrfAAEq4gABKuMAASrkAAEq5QABKuYAASroAAEq6gABKusAASrsAAEq7gABKu8AASsuAAErMAABKzIAASs0AAErNwABKzgAASs5AAErOgABKzsAASs9AAErPwABK0AAAStBAAErQwABK0QAASuDAAErhQABK4cAASuJAAErjAABK40AASuOAAErjwABK5AAASuSAAErlAABK5UAASuWAAErmAABK5kAASvYAAEr2gABK90AASvfAAEr4gABK+MAASvkAAEr5QABK+YAASvoAAEr6gABK+sAASvsAAEr7gABK+8AASwuAAEsMAABLDIAASw0AAEsNwABLDgAASw5AAEsOgABLDsAASw9AAEsPwABLEAAASxBAAEsQwABLEQAASyDAAEshQABLIcAASyJAAEsjAABLI0AASyOAAEsjwABLJAAASySAAEslAABLJUAASyWAAEsmAABLJkAASzYAAEs2gABLNwAASzeAAEs4QABLOIAASzjAAEs5AABLOUAASznAAEs6QABLOoAASzrAAEs7QABLO4AAS05AAEtXAABLXwAAS2cAAEtngABLaAAAS2iAAEtpAABLacAAS2oAAEtqQABLawAAS2tAAEtrwABLbAAAS2yAAEttQABLbYAAS23AAEtugABLbsAAS3AAAEtzQABLdIAAS3UAAEt1gABLdsAAS3eAAEt4QABLeMAAS4IAAEuLAABLlMAAS53AAEuegABLnwAAS5+AAEugAABLoIAAS6EAAEuhQABLogAAS6VAAEupgABLqgAAS6qAAEurAABLq4AAS6wAAEusgABLrQAAS62AAEuxwABLsoAAS7NAAEu0AABLtMAAS7WAAEu2QABLtwAAS7fAAEu4QABLyAAAS8iAAEvJAABLyYAAS8pAAEvKgABLysAAS8sAAEvLQABLy8AAS8xAAEvMgABLzMAAS81AAEvNgABL3UAAS93AAEveQABL3sAAS9+AAEvfwABL4AAAS+BAAEvggABL4QAAS+GAAEvhwABL4gAAS+KAAEviwABL8oAAS/MAAEvzwABL9EAAS/UAAEv1QABL9YAAS/XAAEv2AABL9oAAS/cAAEv3QABL94AAS/gAAEv4QABL+4AAS/vAAEv8AABL/IAATAxAAEwMwABMDUAATA3AAEwOgABMDsAATA8AAEwPQABMD4AATBAAAEwQgABMEMAATBEAAEwRgABMEcAATCGAAEwiAABMIoAATCMAAEwjwABMJAAATCRAAEwkgABMJMAATCVAAEwlwABMJgAATCZAAEwmwABMJwAATDbAAEw3QABMN8AATDhAAEw5AABMOUAATDmAAEw5wABMOgAATDqAAEw7AABMO0AATDuAAEw8AABMPEAATEwAAExMgABMTQAATE2AAExOQABMToAATE7AAExPAABMT0AATE/AAExQQABMUIAATFDAAExRQABMUYAATGFAAExhwABMYkAATGLAAExjgABMY8AATGQAAExkQABMZIAATGUAAExlgABMZcAATGYAAExmgABMZsAATHAAAEx5AABMgsAATIvAAEyMgABMjQAATI2AAEyOAABMjoAATI8AAEyPQABMkAAATJNAAEyXAABMl4AATJgAAEyYgABMmQAATJmAAEyaAABMmoAATJ5AAEyfAABMn8AATKCAAEyhQABMogAATKLAAEyjgABMpAAATLPAAEy0QABMtMAATLVAAEy2AABMtkAATLaAAEy2wABMtwAATLeAAEy4AABMuEAATLiAAEy5AABMuUAATMkAAEzJgABMygAATMqAAEzLQABMy4AATMvAAEzMAABMzEAATMzAAEzNQABMzYAATM3AAEzOQABMzoAATN5AAEzewABM30AATN/AAEzggABM4MAATOEAAEzhQABM4YAATOIAAEzigABM4sAATOMAAEzjgABM48AATPOAAEz0AABM9IAATPUAAEz1wABM9gAATPZAAEz2gABM9sAATPdAAEz3wABM+AAATPhAAEz4wABM+QAATQjAAE0JQABNCcAATQpAAE0LAABNC0AATQuAAE0LwABNDAAATQyAAE0NAABNDUAATQ2AAE0OAABNDkAATR4AAE0egABNHwAATR+AAE0gQABNIIAATSDAAE0hAABNIUAATSHAAE0iQABNIoAATSLAAE0jQABNI4AATTNAAE0zwABNNIAATTUAAE01wABNNgAATTZAAE02gABNNsAATTdAAE03wABNOAAATThAAE04wABNOQAATUvAAE1UgABNXIAATWSAAE1lAABNZYAATWYAAE1mgABNZwAATWdAAE1ngABNaEAATWiAAE1pAABNaUAATWnAAE1qQABNaoAATWrAAE1rgABNa8AATW0AAE1wQABNcYAATXIAAE1ygABNc8AATXSAAE11QABNdcAATX8AAE2IAABNkcAATZrAAE2bgABNnAAATZyAAE2dAABNnYAATZ4AAE2eQABNnwAATaJAAE2mgABNpwAATaeAAE2oAABNqIAATakAAE2pgABNqgAATaqAAE2uwABNr4AATbBAAE2xAABNscAATbKAAE2zQABNtAAATbTAAE21QABNxQAATcWAAE3GAABNxoAATcdAAE3HgABNx8AATcgAAE3IQABNyMAATclAAE3JgABNycAATcpAAE3KgABN2kAATdrAAE3bQABN28AATdyAAE3cwABN3QAATd1AAE3dgABN3gAATd6AAE3ewABN3wAATd+AAE3fwABN74AATfAAAE3wwABN8UAATfIAAE3yQABN8oAATfLAAE3zAABN84AATfQAAE30QABN9IAATfUAAE31QABN+IAATfjAAE35AABN+YAATglAAE4JwABOCkAATgrAAE4LgABOC8AATgwAAE4MQABODIAATg0AAE4NgABODcAATg4AAE4OgABODsAATh6AAE4fAABOH4AATiAAAE4gwABOIQAATiFAAE4hgABOIcAATiJAAE4iwABOIwAATiNAAE4jwABOJAAATjPAAE40QABONMAATjVAAE42AABONkAATjaAAE42wABONwAATjeAAE44AABOOEAATjiAAE45AABOOUAATkkAAE5JgABOSgAATkqAAE5LQABOS4AATkvAAE5MAABOTEAATkzAAE5NQABOTYAATk3AAE5OQABOToAATl5AAE5ewABOX0AATl/AAE5ggABOYMAATmEAAE5hQABOYYAATmIAAE5igABOYsAATmMAAE5jgABOY8AATm0AAE52AABOf8AATojAAE6JgABOigAAToqAAE6LAABOi4AATowAAE6MQABOjQAATpBAAE6UAABOlIAATpUAAE6VgABOlgAATpaAAE6XAABOl4AATptAAE6cAABOnMAATp2AAE6eQABOnwAATp/AAE6ggABOoQAATrDAAE6xQABOscAATrJAAE6zAABOs0AATrOAAE6zwABOtAAATrSAAE61AABOtUAATrWAAE62AABOtkAATsYAAE7GgABOxwAATseAAE7IQABOyIAATsjAAE7JAABOyUAATsnAAE7KQABOyoAATsrAAE7LQABOy4AATttAAE7bwABO3EAATtzAAE7dgABO3cAATt4AAE7eQABO3oAATt8AAE7fgABO38AATuAAAE7ggABO4MAATvCAAE7xAABO8cAATvJAAE7zAABO80AATvOAAE7zwABO9AAATvSAAE71AABO9UAATvWAAE72AABO9kAATwYAAE8GgABPBwAATweAAE8IQABPCIAATwjAAE8JAABPCUAATwnAAE8KQABPCoAATwrAAE8LQABPC4AATxtAAE8bwABPHEAATxzAAE8dgABPHcAATx4AAE8eQABPHoAATx8AAE8fgABPH8AATyAAAE8ggABPIMAATzCAAE8xAABPMcAATzJAAE8zAABPM0AATzOAAE8zwABPNAAATzSAAE81AABPNUAATzWAAE82AABPNkAAT0kAAE9RwABPWcAAT2HAAE9iQABPYsAAT2NAAE9jwABPZIAAT2TAAE9lAABPZcAAT2YAAE9mgABPZsAAT2dAAE9oAABPaEAAT2iAAE9pQABPaYAAT2rAAE9uAABPb0AAT2/AAE9wQABPcYAAT3JAAE9zAABPc4AAT3zAAE+FwABPj4AAT5iAAE+ZQABPmcAAT5pAAE+awABPm0AAT5vAAE+cAABPnMAAT6AAAE+kQABPpMAAT6VAAE+lwABPpkAAT6bAAE+nQABPp8AAT6hAAE+sgABPrUAAT64AAE+uwABPr4AAT7BAAE+xAABPscAAT7KAAE+zAABPwsAAT8NAAE/DwABPxEAAT8UAAE/FQABPxYAAT8XAAE/GAABPxoAAT8cAAE/HQABPx4AAT8gAAE/IQABP2AAAT9iAAE/ZAABP2YAAT9pAAE/agABP2sAAT9sAAE/bQABP28AAT9xAAE/cgABP3MAAT91AAE/dgABP7UAAT+3AAE/ugABP7wAAT+/AAE/wAABP8EAAT/CAAE/wwABP8UAAT/HAAE/yAABP8kAAT/LAAE/zAABP9kAAT/aAAE/2wABP90AAUAcAAFAHgABQCAAAUAiAAFAJQABQCYAAUAnAAFAKAABQCkAAUArAAFALQABQC4AAUAvAAFAMQABQDIAAUBxAAFAcwABQHUAAUB3AAFAegABQHsAAUB8AAFAfQABQH4AAUCAAAFAggABQIMAAUC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OAAFWzwABVw4AAVcQAAFXEgABVxQAAVcWAAFXFwABVxgAAVcZAAFXGgABVxwAAVceAAFXHwABVyAAAVciAAFXIwABV2IAAVdkAAFXZwABV2kAAVdrAAFXbAABV20AAVduAAFXbwABV3EAAVdzAAFXdAABV3UAAVd3AAFXeAABV8MAAVfmAAFYBgABWCYAAVgoAAFYKgABWCwAAVguAAFYMAABWDEAAVgyAAFYNQABWDYAAVg4AAFYOQABWDsAAVg9AAFYPgABWD8AAVhCAAFYQwABWEgAAVhVAAFYWgABWFwAAVheAAFYYwABWGYAAVhpAAFYawABWJAAAVi0AAFY2wABWP8AAVkCAAFZBAABWQYAAVkIAAFZCgABWQwAAVkNAAFZEAABWR0AAVkuAAFZMAABWTIAAVk0AAFZNgABWTgAAVk6AAFZPAABWT4AAVlPAAFZUgABWVUAAVlYAAFZWwABWV4AAVlhAAFZZAABWWcAAVlpAAFZqAABWaoAAVmsAAFZrgABWbEAAVmyAAFZswABWbQAAVm1AAFZtwABWbkAAVm6AAFZuwABWb0AAVm+AAFZ/QABWf8AAVoBAAFaAwABWgYAAVoHAAFaCAABWgkAAVoKAAFaDAABWg4AAVoPAAFaEAABWhIAAVoTAAFaUgABWlQAAVpXAAFaWQABWlwAAVpdAAFaXgABWl8AAVpgAAFaYgABWmQAAVplAAFaZgABWmgAAVppAAFadgABWncAAVp4AAFaegABWrkAAVq7AAFavQABWr8AAVrCAAFawwABWsQAAVrFAAFaxgABWsgAAVrKAAFaywABWswAAVrOAAFazwABWw4AAVsQAAFbEgABWxQAAVsXAAFbGAABWxkAAVsaAAFbGwABWx0AAVsfAAFbIAABWyEAAVsjAAFbJAABW2MAAVtlAAFbZwABW2kAAVtsAAFbbQABW24AAVtvAAFbcAABW3IAAVt0AAFbdQABW3YAAVt4AAFbeQABW7gAAVu6AAFbvAABW74AAVvBAAFbwgABW8MAAVvEAAFbxQABW8cAAVvJAAFbygABW8sAAVvNAAFbzgABXA0AAVwPAAFcEQABXBMAAVwWAAFcFwABXBgAAVwZAAFcGgABXBwAAVweAAFcHwABXCAAAVwiAAFcIwABXEgAAVxsAAFckwABXLcAAVy6AAFcvAABXL4AAVzAAAFcwgABXMQAAVzFAAFcyAABXNUAAVzkAAFc5gABXOgAAVzqAAFc7AABXO4AAVzwAAFc8gABXQEAAV0EAAFdBwABXQoAAV0NAAFdEAABXRMAAV0WAAFdGAABXVcAAV1ZAAFdWwABXV0AAV1gAAFdYQABXWIAAV1jAAFdZAABXWYAAV1oAAFdaQABXWoAAV1sAAFdbQABXawAAV2uAAFdsAABXbIAAV21AAFdtgABXbcAAV24AAFduQABXbsAAV29AAFdvgABXb8AAV3BAAFdwgABXgEAAV4DAAFeBQABXgcAAV4KAAFeCwABXgwAAV4NAAFeDgABXhAAAV4SAAFeEwABXhQAAV4WAAFeFwABXlYAAV5YAAFeWwABXl0AAV5gAAFeYQABXmIAAV5jAAFeZAABXmYAAV5oAAFeaQABXmoAAV5sAAFebQABXnAAAV6vAAFesQABXrMAAV61AAFeuAABXrkAAV66AAFeuwABXrwAAV6+AAFewAABXsEAAV7CAAFexAABXsUAAV8EAAFfBgABXwgAAV8KAAFfDQABXw4AAV8PAAFfEAABXxEAAV8TAAFfFQABXxYAAV8XAAFfGQABXxoAAV9ZAAFfWwABX10AAV9fAAFfYgABX2MAAV9kAAFfZQABX2YAAV9oAAFfagABX2sAAV9sAAFfbgABX28AAV+6AAFf3QABX/0AAWAdAAFgHwABYCEAAWAjAAFgJQABYCcAAWAoAAFgKQABYCwAAWAtAAFgLwABYDAAAWAyAAFgNAABYDUAAWA2AAFgOQABYDoAAWA/AAFgTAABYFEAAWBTAAFgVQABYFoAAWBdAAFgYAABYGIAAWCHAAFgqwABYNIAAWD2AAFg+QABYPsAAWD9AAFg/wABYQEAAWEDAAFhBAABYQcAAWEUAAFhJQABYScAAWEpAAFhKwABYS0AAWEvAAFhMQABYTMAAWE1AAFhRgABYUkAAWFMAAFhTwABYVIAAWFVAAFhWAABYVsAAWFeAAFhYAABYZ8AAWGhAAFhowABYaUAAWGoAAFhqQABYaoAAWGrAAFhrAABYa4AAWGwAAFhsQABYbIAAWG0AAFhtQABYfQAAWH2AAFh+AABYfoAAWH9AAFh/gABYf8AAWIAAAFiAQABYgMAAWIFAAFiBgABYgcAAWIJAAFiCgABYkkAAWJLAAFiTgABYlAAAWJTAAFiVAABYlUAAWJWAAFiVwABYlkAAWJbAAFiXAABYl0AAWJfAAFiYAABYm0AAWJuAAFibwABYnEAAWKwAAFisgABYrQAAWK2AAFiuQABYroAAWK7AAFivAABYr0AAWK/AAFiwQABYsIAAWLDAAFixQABYsYAAWMFAAFjBwABYwkAAWMLAAFjDgABYw8AAWMQAAFjEQABYxIAAWMUAAFjFgABYxcAAWMYAAFjGgABYxsAAWNaAAFjXAABY14AAWNgAAFjYwABY2QAAWNlAAFjZgABY2cAAWNpAAFjawABY2wAAWNtAAFjbwABY3AAAWOvAAFjsQABY7MAAWO1AAFjuAABY7kAAWO6AAFjuwABY7wAAWO+AAFjwAABY8EAAWPCAAFjxAABY8UAAWQEAAFkBgABZAgAAWQKAAFkDQABZA4AAWQPAAFkEAABZBEAAWQTAAFkFQABZBYAAWQXAAFkGQABZBoAAWQ/AAFkYwABZIoAAWSuAAFksQABZLMAAWS1AAFktwABZLkAAWS7AAFkvAABZL8AAWTMAAFk2wABZN0AAWTfAAFk4QABZOMAAWTlAAFk5wABZOkAAWT4AAFk+wABZP4AAWUBAAFlBAABZQcAAWUKAAFlDQABZQ8AAWVOAAFlUAABZVMAAWVVAAFlWAABZVkAAWVaAAFlWwABZVwAAWVeAAFlYAABZWEAAWViAAFlZAABZWUAAWVnAAFlpgABZagAAWWqAAFlrAABZa8AAWWwAAFlsQABZbIAAWWzAAFltQABZbcAAWW4AAFluQABZbsAAWW8AAFl+wABZf0AAWX/AAFmAQABZgQAAWYFAAFmBgABZgcAAWYIAAFmCgABZgwAAWYNAAFmDgABZhAAAWYRAAFmUAABZlIAAWZVAAFmVwABZloAAWZbAAFmXAABZl0AAWZeAAFmYAABZmIAAWZjAAFmZAABZmYAAWZnAAFmaQABZqgAAWaqAAFmrAABZq4AAWaxAAFmsgABZrMAAWa0AAFmtQABZrcAAWa5AAFmugABZrsAAWa9AAFmvgABZv0AAWb/AAFnAQABZwMAAWcGAAFnBwABZwgAAWcJAAFnCgABZwwAAWcOAAFnDwABZxAAAWcSAAFnEwABZ1IAAWdUAAFnVgABZ1gAAWdbAAFnXAABZ10AAWdeAAFnXwABZ2EAAWdjAAFnZAABZ2UAAWdnAAFnaAABZ7MAAWfWAAFn9gABaBYAAWgYAAFoGgABaBwAAWgeAAFoIAABaCEAAWgiAAFoJQABaCYAAWgoAAFoKQABaCsAAWgtAAFoLgABaC8AAWgyAAFoMwABaDgAAWhFAAFoSgABaEwAAWhOAAFoUwABaFYAAWhZAAFoWwABaIAAAWikAAFoywABaO8AAWjyAAFo9AABaPYAAWj4AAFo+gABaPwAAWj9AAFpAAABaQ0AAWkeAAFpIAABaSIAAWkkAAFpJgABaSgAAWkqAAFpLAABaS4AAWk/AAFpQgABaUUAAWlIAAFpSwABaU4AAWlRAAFpVAABaVcAAWlZAAFpmAABaZoAAWmcAAFpngABaaEAAWmiAAFpowABaaQAAWmlAAFppwABaakAAWmqAAFpqwABaa0AAWmuAAFp7QABae8AAWnxAAFp8wABafYAAWn3AAFp+AABafkAAWn6AAFp/AABaf4AAWn/AAFqAAABagIAAWoDAAFqQgABakQAAWpHAAFqSQABakwAAWpNAAFqTgABak8AAWpQAAFqUgABalQAAWpVAAFqVgABalgAAWpZAAFqZgABamcAAWpoAAFqagABaqkAAWqrAAFqrQABaq8AAWqyAAFqswABarQAAWq1AAFqtgABargAAWq6AAFquwABarwAAWq+AAFqvwABav4AAWsAAAFrAgABawQAAWsHAAFrCAABawkAAWsKAAFrCwABaw0AAWsPAAFrEAABaxEAAWsTAAFrFAABa1MAAWtVAAFrVwABa1kAAWtcAAFrXQABa14AAWtfAAFrYAABa2IAAWtkAAFrZQABa2YAAWtoAAFraQABa6gAAWuqAAFrrAABa64AAWuxAAFrsgABa7MAAWu0AAFrtQABa7cAAWu5AAFrugABa7sAAWu9AAFrvgABa/0AAWv/AAFsAQABbAMAAWwGAAFsBwABbAgAAWwJAAFsCgABbAwAAWwOAAFsDwABbBAAAWwSAAFsEwABbDgAAWxcAAFsgwABbKcAAWyqAAFsrAABbK4AAWywAAFssgABbLQAAWy1AAFsuAABbMUAAWzUAAFs1gABbNgAAWzaAAFs3AABbN4AAWzgAAFs4gABbPEAAWz0AAFs9wABbPoAAWz9AAFtAAABbQMAAW0GAAFtCAABbUcAAW1JAAFtTAABbU4AAW1RAAFtUgABbVMAAW1UAAFtVQABbVcAAW1ZAAFtWgABbVsAAW1dAAFtXgABbWEAAW2gAAFtogABbaQAAW2mAAFtqQABbaoAAW2rAAFtrAABba0AAW2vAAFtsQABbbIAAW2zAAFttQABbbYAAW31AAFt9wABbfkAAW37AAFt/gABbf8AAW4AAAFuAQABbgIAAW4EAAFuBgABbgcAAW4IAAFuCgABbgsAAW5KAAFuTAABbk8AAW5RAAFuVAABblUAAW5WAAFuVwABblgAAW5aAAFuXAABbl0AAW5eAAFuYAABbmEAAW5kAAFuowABbqUAAW6nAAFuqQABbqwAAW6tAAFurgABbq8AAW6wAAFusgABbrQAAW61AAFutgABbrgAAW65AAFu+AABbvoAAW78AAFu/gABbwEAAW8CAAFvAwABbwQAAW8FAAFvBwABbwkAAW8KAAFvCwABbw0AAW8OAAFvTQABb08AAW9RAAFvUwABb1YAAW9XAAFvWAABb1kAAW9aAAFvXAABb14AAW9fAAFvYAABb2IAAW9jAAFvrgABb9EAAW/xAAFwEQABcBMAAXAVAAFwFwABcBkAAXAbAAFwHAABcB0AAXAgAAFwIQABcCMAAXAkAAFwJgABcCgAAXApAAFwKgABcC0AAXAuAAFwMwABcEAAAXBFAAFwRwABcEkAAXBOAAFwUQABcFQAAXBWAAFwewABcJ8AAXDGAAFw6gABcO0AAXDvAAFw8QABcPMAAXD1AAFw9wABcPgAAXD7AAFxCAABcRkAAXEbAAFxHQABcR8AAXEhAAFxIwABcSUAAXEnAAFxKQABcToAAXE9AAFxQAABcUMAAXFGAAFxSQABcUwAAXFPAAFxUgABcVQAAXGTAAFxlQABcZcAAXGZAAFxnAABcZ0AAXGeAAFxnwABcaAAAXGiAAFxpAABcaUAAXGmAAFxqAABcakAAXHoAAFx6gABcewAAXHuAAFx8QABcfIAAXHzAAFx9AABcfUAAXH3AAFx+QABcfoAAXH7AAFx/QABcf4AAXI9AAFyPwABckIAAXJEAAFyRwABckgAAXJJAAFySgABcksAAXJNAAFyTwABclAAAXJRAAFyUwABclQAAXJhAAFyYgABcmMAAXJlAAFypAABcqYAAXKoAAFyqgABcq0AAXKuAAFyrwABcrAAAXKxAAFyswABcrUAAXK2AAFytwABcrkAAXK6AAFy+QABcvsAAXL9AAFy/wABcwIAAXMDAAFzBAABcwUAAXMGAAFzCAABcwoAAXMLAAFzDAABcw4AAXMPAAFzTgABc1AAAXNSAAFzVAABc1cAAXNYAAFzWQABc1oAAXNbAAFzXQABc18AAXNgAAFzYQABc2MAAXNkAAFzowABc6UAAXOnAAFzqQABc6wAAXOtAAFzrgABc68AAXOwAAFzsgABc7QAAXO1AAFztgABc7gAAXO5AAFz+AABc/oAAXP8AAFz/gABdAEAAXQCAAF0AwABdAQAAXQFAAF0BwABdAkAAXQKAAF0CwABdA0AAXQOAAF0MwABdFcAAXR+AAF0ogABdKUAAXSnAAF0qQABdKsAAXStAAF0rwABdLAAAXSzAAF0wAABdM8AAXTRAAF00wABdNUAAXTXAAF02QABdNsAAXTdAAF07AABdO8AAXTyAAF09QABdPgAAXT7AAF0/gABdQEAAXUDAAF1QgABdUQAAXVGAAF1SAABdUsAAXVMAAF1TQABdU4AAXVPAAF1UQABdVMAAXVUAAF1VQABdVcAAXVYAAF1lwABdZkAAXWbAAF1nQABdaAAAXWhAAF1ogABdaMAAXWkAAF1pgABdagAAXWpAAF1qgABdawAAXWtAAF17AABde4AAXXwAAF18gABdfUAAXX2AAF19wABdfgAAXX5AAF1+wABdf0AAXX+AAF1/wABdgEAAXYCAAF2QQABdkMAAXZGAAF2SAABdksAAXZMAAF2TQABdk4AAXZPAAF2UQABdlMAAXZUAAF2VQABdlcAAXZYAAF2lwABdpkAAXabAAF2nQABdqAAAXahAAF2ogABdqMAAXakAAF2pgABdqgAAXapAAF2qgABdqwAAXatAAF27AABdu4AAXbwAAF28gABdvUAAXb2AAF29wABdvgAAXb5AAF2+wABdv0AAXb+AAF2/wABdwEAAXcCAAF3QQABd0MAAXdFAAF3RwABd0oAAXdLAAF3TAABd00AAXdOAAF3UAABd1IAAXdTAAF3VAABd1YAAXdXAAF3ogABd8UAAXflAAF4BQABeAcAAXgJAAF4CwABeA0AAXgPAAF4EAABeBEAAXgUAAF4FQABeBcAAXgYAAF4GgABeBwAAXgdAAF4HgABeCEAAXgiAAF4KwABeDgAAXg9AAF4PwABeEEAAXhGAAF4SQABeEwAAXhOAAF4cwABeJcAAXi+AAF44gABeOUAAXjnAAF46QABeOsAAXjtAAF47wABePAAAXjzAAF5AAABeREAAXkTAAF5FQABeRcAAXkZAAF5GwABeR0AAXkfAAF5IQABeTIAAXk1AAF5OAABeTsAAXk+AAF5QQABeUQAAXlHAAF5SgABeUwAAXmLAAF5jQABeY8AAXmRAAF5lAABeZUAAXmWAAF5lwABeZgAAXmaAAF5nAABeZ0AAXmeAAF5oAABeaEAAXngAAF54gABeeQAAXnmAAF56QABeeoAAXnrAAF57AABee0AAXnvAAF58QABefIAAXnzAAF59QABefYAAXo1AAF6NwABejoAAXo8AAF6PwABekAAAXpBAAF6QgABekMAAXpFAAF6RwABekgAAXpJAAF6SwABekwAAXpZAAF6WgABelsAAXpdAAF6nAABep4AAXqgAAF6ogABeqUAAXqmAAF6pwABeqgAAXqpAAF6qwABeq0AAXquAAF6rwABerEAAXqyAAF68QABevMAAXr1AAF69wABevoAAXr7AAF6/AABev0AAXr+AAF7AAABewIAAXsDAAF7BAABewYAAXsHAAF7RgABe0gAAXtKAAF7TAABe08AAXtQAAF7UQABe1IAAXtTAAF7VQABe1cAAXtYAAF7WQABe1sAAXtcAAF7mwABe50AAXufAAF7oQABe6QAAXulAAF7pgABe6cAAXuoAAF7qgABe6wAAXutAAF7rgABe7AAAXuxAAF78AABe/IAAXv0AAF79gABe/kAAXv6AAF7+wABe/wAAXv9AAF7/wABfAEAAXwCAAF8AwABfAUAAXwGAAF8KwABfE8AAXx2AAF8mgABfJ0AAXyfAAF8oQABfKMAAXylAAF8pwABfKgAAXyrAAF8uAABfMcAAXzJAAF8ywABfM0AAXzPAAF80QABfNMAAXzVAAF85AABfOcAAXzqAAF87QABfPAAAXzzAAF89gABfPkAAXz7AAF9OgABfTwAAX0+AAF9QAABfUMAAX1EAAF9RQABfUYAAX1HAAF9SQABfUsAAX1MAAF9TQABfU8AAX1QAAF9jwABfZEAAX2TAAF9lQABfZgAAX2ZAAF9mgABfZsAAX2cAAF9ngABfaAAAX2hAAF9ogABfaQAAX2lAAF95AABfeYAAX3oAAF96gABfe0AAX3uAAF97wABffAAAX3xAAF98wABffUAAX32AAF99wABffkAAX36AAF+OQABfjsAAX4+AAF+QAABfkMAAX5EAAF+RQABfkYAAX5HAAF+SQABfksAAX5MAAF+TQABfk8AAX5QAAF+jwABfpEAAX6TAAF+lQABfpgAAX6ZAAF+mgABfpsAAX6cAAF+ngABfqAAAX6hAAF+ogABfqQAAX6lAAF+5AABfuYAAX7oAAF+6gABfu0AAX7uAAF+7wABfvAAAX7xAAF+8wABfvUAAX72AAF+9wABfvkAAX76AAF/OQABfzsAAX89AAF/PwABf0IAAX9DAAF/RAABf0UAAX9GAAF/SAABf0oAAX9LAAF/TAABf04AAX9PAAF/mgABf70AAX/dAAF//QABf/8AAYABAAGAAwABgAUAAYAHAAGACAABgAkAAYAMAAGADQABgA8AAYAQAAGAEgABgBQAAYAVAAGAFgABgBkAAYAaAAGAHwABgCwAAYAxAAGAMwABgDUAAYA6AAGAPQABgEAAAYBCAAGAZwABgIsAAYCyAAGA1gABgNkAAYDbAAGA3QABgN8AAYDhAAGA4wABgOQAAYDnAAGA9AABgQUAAYEHAAGBCQABgQsAAYENAAGBDwABgREAAYETAAGBFQABgSYAAYEpAAGBLAABgS8AAYEyAAGBNQABgTgAAYE7AAGBPgABgUAAAYF/AAGBgQABgYMAAYGFAAGBiAABgYkAAYGKAAGBiwABgYwAAYGOAAGBkAABgZEAAYGSAAGBlAABgZUAAYHUAAGB1gABgdgAAYHaAAGB3QABgd4AAYHfAAGB4AABgeEAAYHjAAGB5QABgeYAAYHnAAGB6QABgeoAAYIpAAGCKwABgi4AAYIwAAGCMwABgjQAAYI1AAGCNgABgjcAAYI5AAGCOwABgjwAAYI9AAGCPwABgkAAAYJNAAGCTgABgk8AAYJRAAGCkAABgpIAAYKUAAGClgABgpkAAYKaAAGCmwABgpwAAYKdAAGCnwABgqEAAYKiAAGCowABgqUAAYKmAAGC5QABgucAAYLpAAGC6wABgu4AAYLvAAGC8AABgvEAAYLyAAGC9AABgvYAAYL3AAGC+AABgvoAAYL7AAGDOgABgzwAAYM+AAGDQAABg0MAAYNEAAGDRQABg0YAAYNHAAGDSQABg0sAAYNMAAGDTQABg08AAYNQAAGDjwABg5EAAYOTAAGDlQABg5gAAYOZAAGDmgABg5sAAYOcAAGDngABg6AAAYOhAAGDogABg6QAAYOlAAGD5AABg+YAAYPoAAGD6gABg+0AAYPuAAGD7wABg/AAAYPxAAGD8wABg/UAAYP2AAGD9wABg/kAAYP6AAGEHwABhEMAAYRqAAGEjgABhJEAAYSTAAGElQABhJcAAYSZAAGEmwABhJwAAYSfAAGErAABhLsAAYS9AAGEvwABhMEAAYTDAAGExQABhMcAAYTJAAGE2AABhNsAAYTeAAGE4QABhOQAAYTnAAGE6gABhO0AAYTvAAGFLgABhTAAAYUzAAGFNQABhTgAAYU5AAGFOgABhTsAAYU8AAGFPgABhUAAAYVBAAGFQgABhUQAAYVFAAGFSQABhYgAAYWKAAGFjAABhY4AAYWRAAGFkgABhZMAAYWUAAGFlQABhZcAAYWZAAGFmgABhZsAAYWdAAGFngABhd0AAYXfAAGF4QABheMAAYXmAAGF5wABhegAAYXpAAGF6gABhewAAYXuAAGF7wABhfAAAYXyAAGF8wABhjIAAYY0AAGGNwABhjkAAYY8AAGGPQABhj4AAYY/AAGGQAABhkIAAYZEAAGGRQABhkYAAYZIAAGGSQABhkwAAYaLAAGGjQABho8AAYaRAAGGlAABhpUAAYaWAAGGlwABhpgAAYaaAAGGnAABhp0AAYaeAAGGoAABhqEAAYbgAAGG4gABhuQAAYbmAAGG6QABhuoAAYbrAAGG7AABhu0AAYbvAAGG8QABhvIAAYbzAAGG9QABhvYAAYc1AAGHNwABhzkAAYc7AAGHPgABhz8AAYdAAAGHQQABh0IAAYdEAAGHRgABh0cAAYdIAAGHSgABh0sAAYeWAAGHuQABh9kAAYf5AAGH+wABh/0AAYf/AAGIAQABiAMAAYgEAAGIBQABiAgAAYgJAAGICwABiAwAAYgOAAGIEAABiBEAAYgSAAGIFQABiBYAAYgbAAGIKAABiC0AAYgvAAGIMQABiDYAAYg5AAGIPAABiD4AAYhjAAGIhwABiK4AAYjSAAGI1QABiNcAAYjZAAGI2wABiN0AAYjfAAGI4AABiOMAAYjwAAGJAQABiQMAAYkFAAGJBwABiQkAAYkLAAGJDQABiQ8AAYkRAAGJIgABiSUAAYkoAAGJKwABiS4AAYkxAAGJNAABiTcAAYk6AAGJPAABiXsAAYl9AAGJfwABiYEAAYmEAAGJhQABiYYAAYmHAAGJiAABiYoAAYmMAAGJjQABiY4AAYmQAAGJkQABidAAAYnSAAGJ1AABidYAAYnZAAGJ2gABidsAAYncAAGJ3QABid8AAYnhAAGJ4gABieMAAYnlAAGJ5gABiiUAAYonAAGKKgABiiwAAYovAAGKMAABijEAAYoyAAGKMwABijUAAYo3AAGKOAABijkAAYo7AAGKPAABikkAAYpKAAGKSwABik0AAYqMAAGKjgABipAAAYqSAAGKlQABipYAAYqXAAGKmAABipkAAYqbAAGKnQABip4AAYqfAAGKoQABiqIAAYrhAAGK4wABiuUAAYrnAAGK6gABiusAAYrsAAGK7QABiu4AAYrwAAGK8gABivMAAYr0AAGK9gABivcAAYs2AAGLOAABizoAAYs8AAGLPwABi0AAAYtBAAGLQgABi0MAAYtFAAGLRwABi0gAAYtJAAGLSwABi0wAAYuLAAGLjQABi48AAYuRAAGLlAABi5UAAYuWAAGLlwABi5gAAYuaAAGLnAABi50AAYueAAGLoAABi6EAAYvgAAGL4gABi+QAAYvmAAGL6QABi+oAAYvrAAGL7AABi+0AAYvvAAGL8QABi/IAAYvzAAGL9QABi/YAAYwbAAGMPwABjGYAAYyKAAGMjQABjI8AAYyRAAGMkwABjJUAAYyXAAGMmAABjJsAAYyoAAGMtwABjLkAAYy7AAGMvQABjL8AAYzBAAGMwwABjMUAAYzUAAGM1wABjNoAAYzdAAGM4AABjOMAAYzmAAGM6QABjOsAAY0qAAGNLAABjS4AAY0wAAGNMwABjTQAAY01AAGNNgABjTcAAY05AAGNOwABjTwAAY09AAGNPwABjUAAAY1/AAGNgQABjYMAAY2FAAGNiAABjYkAAY2KAAGNiwABjYwAAY2OAAGNkAABjZEAAY2SAAGNlAABjZUAAY3UAAGN1gABjdgAAY3aAAGN3QABjd4AAY3fAAGN4AABjeEAAY3jAAGN5QABjeYAAY3nAAGN6QABjeoAAY4pAAGOKwABji4AAY4wAAGOMwABjjQAAY41AAGONgABjjcAAY45AAGOOwABjjwAAY49AAGOPwABjkAAAY5/AAGOgQABjoMAAY6FAAGOiAABjokAAY6KAAGOiwABjowAAY6OAAGOkAABjpEAAY6SAAGOlAABjpUAAY7UAAGO1gABjtgAAY7aAAGO3QABjt4AAY7fAAGO4AABjuEAAY7jAAGO5QABjuYAAY7nAAGO6QABjuoAAY8pAAGPKwABjy0AAY8vAAGPMgABjzMAAY80AAGPNQABjzYAAY84AAGPOgABjzsAAY88AAGPPgABjz8AAY+KAAGPrQABj80AAY/tAAGP7wABj/EAAY/zAAGP9QABj/cAAY/4AAGP+QABj/wAAY/9AAGP/wABkAAAAZACAAGQBAABkAUAAZAGAAGQCQABkAoAAZAPAAGQHAABkCEAAZAjAAGQJQABkCoAAZAtAAGQMAABkDIAAZBXAAGQewABkKIAAZDGAAGQyQABkMsAAZDNAAGQzwABkNEAAZDTAAGQ1AABkNcAAZDkAAGQ9QABkPcAAZD5AAGQ+wABkP0AAZD/AAGRAQABkQMAAZEFAAGRFgABkRkAAZEcAAGRHwABkSIAAZElAAGRKAABkSsAAZEuAAGRMAABkW8AAZFxAAGRcwABkXUAAZF4AAGReQABkXoAAZF7AAGRfAABkX4AAZGAAAGRgQABkYIAAZGEAAGRhQABkcQAAZHGAAGRyAABkcoAAZHNAAGRzgABkc8AAZHQAAGR0QABkdMAAZHVAAGR1gABkdcAAZHZAAGR2gABkhkAAZIbAAGSHgABkiAAAZIjAAGSJAABkiUAAZImAAGSJwABkikAAZIrAAGSLAABki0AAZIvAAGSMAABkj0AAZI+AAGSPwABkkEAAZKAAAGSggABkoQAAZKGAAGSiQABkooAAZKLAAGSjAABko0AAZKPAAGSkQABkpIAAZKTAAGSlQABkpYAAZLVAAGS1wABktkAAZLbAAGS3gABkt8AAZLgAAGS4QABkuIAAZLkAAGS5gABkucAAZLoAAGS6gABkusAAZMqAAGTLAABky4AAZMwAAGTMwABkzQAAZM1AAGTNgABkzcAAZM5AAGTOwABkzwAAZM9AAGTPwABk0AAAZN/AAGTgQABk4MAAZOFAAGTiAABk4kAAZOKAAGTiwABk4wAAZOOAAGTkAABk5EAAZOSAAGTlAABk5UAAZPUAAGT1gABk9gAAZPaAAGT3QABk94AAZPfAAGT4AABk+EAAZPjAAGT5QABk+YAAZPnAAGT6QABk+oAAZQPAAGUMwABlFoAAZR+AAGUgQABlIMAAZSFAAGUhwABlIkAAZSLAAGUjAABlI8AAZScAAGUqwABlK0AAZSvAAGUsQABlLMAAZS1AAGUtwABlLkAAZTIAAGUywABlM4AAZTRAAGU1AABlNcAAZTaAAGU3QABlN8AAZUeAAGVIAABlSIAAZUkAAGVJwABlSgAAZUpAAGVKgABlSsAAZUtAAGVLwABlTAAAZUxAAGVMwABlTQAAZVzAAGVdQABlXcAAZV5AAGVfAABlX0AAZV+AAGVfwABlYAAAZWCAAGVhAABlYUAAZWGAAGViAABlYkAAZXIAAGVygABlcwAAZXOAAGV0QABldIAAZXTAAGV1AABldUAAZXXAAGV2QABldoAAZXbAAGV3QABld4AAZYdAAGWHwABliIAAZYkAAGWJwABligAAZYpAAGWKgABlisAAZYtAAGWLwABljAAAZYxAAGWMwABljQAAZZzAAGWdQABlncAAZZ5AAGWfAABln0AAZZ+AAGWfwABloAAAZaCAAGWhAABloUAAZaGAAGWiAABlokAAZbIAAGWygABlswAAZbOAAGW0QABltIAAZbTAAGW1AABltUAAZbXAAGW2QABltoAAZbbAAGW3QABlt4AAZcdAAGXHwABlyEAAZcjAAGXJgABlycAAZcoAAGXKQABlyoAAZcsAAGXLgABly8AAZcwAAGXMgABlzMAAZd+AAGXoQABl8EAAZfhAAGX4wABl+UAAZfnAAGX6QABl+sAAZfsAAGX7QABl/AAAZfxAAGX8wABl/QAAZf2AAGX+AABl/kAAZf6AAGX/QABl/4AAZgDAAGYEAABmBUAAZgXAAGYGQABmB4AAZghAAGYJAABmCYAAZhLAAGYbwABmJYAAZi6AAGYvQABmL8AAZjBAAGYwwABmMUAAZjHAAGYyAABmMsAAZjYAAGY6QABmOsAAZjtAAGY7wABmPEAAZjzAAGY9QABmPcAAZj5AAGZCgABmQ0AAZkQAAGZEwABmRYAAZkZAAGZHAABmR8AAZkiAAGZJAABmWMAAZllAAGZZwABmWkAAZlsAAGZbQABmW4AAZlvAAGZcAABmXIAAZl0AAGZdQABmXYAAZl4AAGZeQABmbgAAZm6AAGZvAABmb4AAZnBAAGZwgABmcMAAZnEAAGZxQABmccAAZnJAAGZygABmcsAAZnNAAGZzgABmg0AAZoPAAGaEgABmhQAAZoXAAGaGAABmhkAAZoaAAGaGwABmh0AAZofAAGaIAABmiEAAZojAAGaJAABmjEAAZoyAAGaMwABmjUAAZp0AAGadgABmngAAZp6AAGafQABmn4AAZp/AAGagAABmoEAAZqDAAGahQABmoYAAZqHAAGaiQABmooAAZrJAAGaywABms0AAZrPAAGa0gABmtMAAZrUAAGa1QABmtYAAZrYAAGa2gABmtsAAZrcAAGa3gABmt8AAZseAAGbIAABmyIAAZskAAGbJwABmygAAZspAAGbKgABmysAAZstAAGbLwABmzAAAZsxAAGbMwABmzQAAZtzAAGbdQABm3cAAZt5AAGbfAABm30AAZt+AAGbfwABm4AAAZuCAAGbhAABm4UAAZuGAAGbiAABm4kAAZvIAAGbygABm8wAAZvOAAGb0QABm9IAAZvTAAGb1AABm9UAAZvXAAGb2QABm9oAAZvbAAGb3QABm94AAZwDAAGcJwABnE4AAZxyAAGcdQABnHcAAZx5AAGcewABnH0AAZx/AAGcgAABnIMAAZyQAAGcnwABnKEAAZyjAAGcpQABnKcAAZypAAGcqwABnK0AAZy8AAGcvwABnMIAAZzFAAGcyAABnMsAAZzOAAGc0QABnNMAAZ0SAAGdFAABnRcAAZ0ZAAGdHAABnR0AAZ0eAAGdHwABnSAAAZ0iAAGdJAABnSUAAZ0mAAGdKAABnSkAAZ1oAAGdagABnWwAAZ1uAAGdcQABnXIAAZ1zAAGddAABnXUAAZ13AAGdeQABnXoAAZ17AAGdfQABnX4AAZ29AAGdvwABncEAAZ3DAAGdxgABnccAAZ3IAAGdyQABncoAAZ3MAAGdzgABnc8AAZ3QAAGd0gABndMAAZ4SAAGeFAABnhcAAZ4ZAAGeHAABnh0AAZ4eAAGeHwABniAAAZ4iAAGeJAABniUAAZ4mAAGeKAABnikAAZ5oAAGeagABnmwAAZ5uAAGecQABnnIAAZ5zAAGedAABnnUAAZ53AAGeeQABnnoAAZ57AAGefQABnn4AAZ69AAGevwABnsEAAZ7DAAGexgABnscAAZ7IAAGeyQABnsoAAZ7MAAGezgABns8AAZ7QAAGe0gABntMAAZ8SAAGfFAABnxYAAZ8YAAGfGwABnxwAAZ8dAAGfHgABnx8AAZ8hAAGfIwABnyQAAZ8lAAGfJwABnygAAZ9zAAGflgABn7YAAZ/WAAGf2AABn9oAAZ/cAAGf3gABn+AAAZ/hAAGf4gABn+UAAZ/mAAGf6AABn+kAAZ/rAAGf7QABn+4AAZ/vAAGf8gABn/MAAZ/4AAGgBQABoAoAAaAMAAGgDgABoBMAAaAWAAGgGQABoBsAAaBAAAGgZAABoIsAAaCvAAGgsgABoLQAAaC2AAGguAABoLoAAaC8AAGgvQABoMAAAaDNAAGg3gABoOAAAaDiAAGg5AABoOYAAaDoAAGg6gABoOwAAaDuAAGg/wABoQIAAaEFAAGhCAABoQsAAaEOAAGhEQABoRQAAaEXAAGhGQABoVgAAaFaAAGhXAABoV4AAaFhAAGhYgABoWMAAaFkAAGhZQABoWcAAaFpAAGhagABoWsAAaFtAAGhbgABoa0AAaGvAAGhsQABobMAAaG2AAGhtwABobgAAaG5AAGhugABobwAAaG+AAGhvwABocAAAaHCAAGhwwABogIAAaIEAAGiBwABogkAAaIMAAGiDQABog4AAaIPAAGiEAABohIAAaIUAAGiFQABohYAAaIYAAGiGQABoiYAAaInAAGiKAABoioAAaJpAAGiawABom0AAaJvAAGicgABonMAAaJ0AAGidQABonYAAaJ4AAGiegABonsAAaJ8AAGifgABon8AAaK+AAGiwAABosIAAaLEAAGixwABosgAAaLJAAGiygABossAAaLNAAGizwABotAAAaLRAAGi0wABotQAAaMTAAGjFQABoxcAAaMZAAGjHAABox0AAaMeAAGjHwABoyAAAaMiAAGjJAABoyUAAaMmAAGjKAABoykAAaNoAAGjagABo2wAAaNuAAGjcQABo3IAAaNzAAGjdAABo3UAAaN3AAGjeQABo3oAAaN7AAGjfQABo34AAaO9AAGjvwABo8EAAaPDAAGjxgABo8cAAaPIAAGjyQABo8oAAaPMAAGjzgABo88AAaPQAAGj0gABo9MAAaP4AAGkHAABpEMAAaRnAAGkagABpGwAAaRuAAGkcAABpHIAAaR0AAGkdQABpHgAAaSFAAGklAABpJYAAaSYAAGkmgABpJwAAaSeAAGkoAABpKIAAaSxAAGktAABpLcAAaS6AAGkvQABpMAAAaTDAAGkxgABpMgAAaUHAAGlCQABpQsAAaUNAAGlEAABpREAAaUSAAGlEwABpRQAAaUWAAGlGAABpRkAAaUaAAGlHAABpR0AAaVcAAGlXgABpWAAAaViAAGlZQABpWYAAaVnAAGlaAABpWkAAaVrAAGlbQABpW4AAaVvAAGlcQABpXIAAaWxAAGlswABpbUAAaW3AAGlugABpbsAAaW8AAGlvQABpb4AAaXAAAGlwgABpcMAAaXEAAGlxgABpccAAaYGAAGmCAABpgsAAaYNAAGmEAABphEAAaYSAAGmEwABphQAAaYWAAGmGAABphkAAaYaAAGmHAABph0AAaYgAAGmXwABpmEAAaZjAAGmZQABpmgAAaZpAAGmagABpmsAAaZsAAGmbgABpnAAAaZxAAGmcgABpnQAAaZ1AAGmtAABprYAAaa4AAGmugABpr0AAaa+AAGmvwABpsAAAabBAAGmwwABpsUAAabGAAGmxwABpskAAabKAAGnCQABpwsAAacNAAGnDwABpxIAAacTAAGnFAABpxUAAacWAAGnGAABpxoAAacbAAGnHAABpx4AAacfAAGnagABp40AAaetAAGnzQABp88AAafRAAGn0wABp9UAAafXAAGn2AABp9kAAafcAAGn3QABp98AAafgAAGn4gABp+QAAaflAAGn5gABp+kAAafqAAGn7wABp/wAAagBAAGoAwABqAUAAagKAAGoDQABqBAAAagSAAGoNwABqFsAAaiCAAGopgABqKkAAairAAGorQABqK8AAaixAAGoswABqLQAAai3AAGoxAABqNUAAajXAAGo2QABqNsAAajdAAGo3wABqOEAAajjAAGo5QABqPYAAaj5AAGo/AABqP8AAakCAAGpBQABqQgAAakLAAGpDgABqRAAAalPAAGpUQABqVMAAalVAAGpWAABqVkAAalaAAGpWwABqVwAAaleAAGpYAABqWEAAaliAAGpZAABqWUAAamkAAGppgABqagAAamqAAGprQABqa4AAamvAAGpsAABqbEAAamzAAGptQABqbYAAam3AAGpuQABqboAAan5AAGp+wABqf4AAaoAAAGqAwABqgQAAaoFAAGqBgABqgcAAaoJAAGqCwABqgwAAaoNAAGqDwABqhAAAaodAAGqHgABqh8AAaohAAGqYAABqmIAAapkAAGqZgABqmkAAapqAAGqawABqmwAAaptAAGqbwABqnEAAapyAAGqcwABqnUAAap2AAGqtQABqrcAAaq5AAGquwABqr4AAaq/AAGqwAABqsEAAarCAAGqxAABqsYAAarHAAGqyAABqsoAAarLAAGrCgABqwwAAasOAAGrEAABqxMAAasUAAGrFQABqxYAAasXAAGrGQABqxsAAascAAGrHQABqx8AAasgAAGrXwABq2EAAatjAAGrZQABq2gAAatpAAGragABq2sAAatsAAGrbgABq3AAAatxAAGrcgABq3QAAat1AAGrtAABq7YAAau4AAGrugABq70AAau+AAGrvwABq8AAAavBAAGrwwABq8UAAavGAAGrxwABq8kAAavKAAGr7wABrBMAAaw6AAGsXgABrGEAAaxjAAGsZQABrGcAAaxpAAGsawABrGwAAaxvAAGsfAABrIsAAayNAAGsjwABrJEAAayTAAGslQABrJcAAayZAAGsqAABrKsAAayuAAGssQABrLQAAay3AAGsugABrL0AAay/AAGs/gABrQAAAa0CAAGtBAABrQcAAa0IAAGtCQABrQoAAa0LAAGtDQABrQ8AAa0QAAGtEQABrRMAAa0UAAGtUwABrVUAAa1XAAGtWQABrVwAAa1dAAGtXgABrV8AAa1gAAGtYgABrWQAAa1lAAGtZgABrWgAAa1pAAGtqAABraoAAa2sAAGtrgABrbEAAa2yAAGtswABrbQAAa21AAGttwABrbkAAa26AAGtuwABrb0AAa2+AAGt/QABrf8AAa4CAAGuBAABrgcAAa4IAAGuCQABrgoAAa4LAAGuDQABrg8AAa4QAAGuEQABrhMAAa4UAAGuUwABrlUAAa5XAAGuWQABrlwAAa5dAAGuXgABrl8AAa5gAAGuYgABrmQAAa5lAAGuZgABrmgAAa5pAAGuqAABrqoAAa6sAAGurgABrrEAAa6yAAGuswABrrQAAa61AAGutwABrrkAAa66AAGuuwABrr0AAa6+AAGu/QABrv8AAa8BAAGvAwABrwYAAa8HAAGvCAABrwkAAa8KAAGvDAABrw4AAa8PAAGvEAABrxIAAa8TAAGvXgABr4EAAa+hAAGvwQABr8MAAa/FAAGvxwABr8kAAa/LAAGvzAABr80AAa/QAAGv0QABr9MAAa/UAAGv1gABr9gAAa/ZAAGv2gABr90AAa/eAAGv4wABr/AAAa/1AAGv9wABr/kAAa/+AAGwAQABsAQAAbAGAAGwKwABsE8AAbB2AAGwmgABsJ0AAbCfAAGwoQABsKMAAbClAAGwpwABsKgAAbCrAAGwuAABsMkAAbDLAAGwzQABsM8AAbDRAAGw0wABsNUAAbDXAAGw2QABsOoAAbDtAAGw8AABsPMAAbD2AAGw+QABsPwAAbD/AAGxAgABsQQAAbFDAAGxRQABsUcAAbFJAAGxTAABsU0AAbFOAAGxTwABsVAAAbFSAAGxVAABsVUAAbFWAAGxWAABsVkAAbGYAAGxmgABsZwAAbGeAAGxoQABsaIAAbGjAAGxpAABsaUAAbGnAAGxqQABsaoAAbGrAAGxrQABsa4AAbHtAAGx7wABsfIAAbH0AAGx9wABsfgAAbH5AAGx+gABsfsAAbH9AAGx/wABsgAAAbIBAAGyAwABsgQAAbIRAAGyEgABshMAAbIVAAGyVAABslYAAbJYAAGyWgABsl0AAbJeAAGyXwABsmAAAbJhAAGyYwABsmUAAbJmAAGyZwABsmkAAbJqAAGyqQABsqsAAbKtAAGyrwABsrIAAbKzAAGytAABsrUAAbK2AAGyuAABsroAAbK7AAGyvAABsr4AAbK/AAGy/gABswAAAbMCAAGzBAABswcAAbMIAAGzCQABswoAAbMLAAGzDQABsw8AAbMQAAGzEQABsxMAAbMUAAGzUwABs1UAAbNXAAGzWQABs1wAAbNdAAGzXgABs18AAbNgAAGzYgABs2QAAbNlAAGzZgABs2gAAbNpAAGzqAABs6oAAbOsAAGzrgABs7EAAbOyAAGzswABs7QAAbO1AAGztwABs7kAAbO6AAGzuwABs70AAbO+AAGz4wABtAcAAbQuAAG0UgABtFUAAbRXAAG0WQABtFsAAbRdAAG0XwABtGAAAbRjAAG0cAABtH8AAbSBAAG0gwABtIUAAbSHAAG0iQABtIsAAbSNAAG0nAABtJ8AAbSiAAG0pQABtKgAAbSrAAG0rgABtLEAAbSzAAG08gABtPQAAbT3AAG0+QABtPwAAbT9AAG0/gABtP8AAbUAAAG1AgABtQQAAbUFAAG1BgABtQgAAbUJAAG1SAABtUoAAbVMAAG1TgABtVEAAbVSAAG1UwABtVQAAbVVAAG1VwABtVkAAbVaAAG1WwABtV0AAbVeAAG1nQABtZ8AAbWhAAG1owABtaYAAbWnAAG1qAABtakAAbWqAAG1rAABta4AAbWvAAG1sAABtbIAAbWzAAG18gABtfQAAbX3AAG1+QABtfwAAbX9AAG1/gABtf8AAbYAAAG2AgABtgQAAbYFAAG2BgABtggAAbYJAAG2SAABtkoAAbZMAAG2TgABtlEAAbZSAAG2UwABtlQAAbZVAAG2VwABtlkAAbZaAAG2WwABtl0AAbZeAAG2nQABtp8AAbahAAG2owABtqYAAbanAAG2qAABtqkAAbaqAAG2rAABtq4AAbavAAG2sAABtrIAAbazAAG28gABtvQAAbb2AAG2+AABtvsAAbb8AAG2/QABtv4AAbb/AAG3AQABtwMAAbcEAAG3BQABtwcAAbcIAAG3UwABt3YAAbeWAAG3tgABt7gAAbe6AAG3vAABt74AAbfAAAG3wQABt8IAAbfFAAG3xgABt8gAAbfJAAG3ywABt80AAbfOAAG3zwABt9IAAbfTAAG32AABt+UAAbfqAAG37AABt+4AAbfzAAG39gABt/kAAbf7AAG4IAABuEQAAbhrAAG4jwABuJIAAbiUAAG4lgABuJgAAbiaAAG4nAABuJ0AAbigAAG4rQABuL4AAbjAAAG4wgABuMQAAbjGAAG4yAABuMoAAbjMAAG4zgABuN8AAbjiAAG45QABuOgAAbjrAAG47gABuPEAAbj0AAG49wABuPkAAbk4AAG5OgABuTwAAbk+AAG5QQABuUIAAblDAAG5RAABuUUAAblHAAG5SQABuUoAAblLAAG5TQABuU4AAbmNAAG5jwABuZEAAbmTAAG5lgABuZcAAbmYAAG5mQABuZoAAbmcAAG5ngABuZ8AAbmgAAG5ogABuaMAAbniAAG55AABuecAAbnpAAG57AABue0AAbnuAAG57wABufAAAbnyAAG59AABufUAAbn2AAG5+AABufkAAboGAAG6BwABuggAAboKAAG6SQABuksAAbpNAAG6TwABulIAAbpTAAG6VAABulUAAbpWAAG6WAABuloAAbpbAAG6XAABul4AAbpfAAG6ngABuqAAAbqiAAG6pAABuqcAAbqoAAG6qQABuqoAAbqrAAG6rQABuq8AAbqwAAG6sQABurMAAbq0AAG68wABuvUAAbr3AAG6+QABuvwAAbr9AAG6/gABuv8AAbsAAAG7AgABuwQAAbsFAAG7BgABuwgAAbsJAAG7SAABu0oAAbtMAAG7TgABu1EAAbtSAAG7UwABu1QAAbtVAAG7VwABu1kAAbtaAAG7WwABu10AAbteAAG7nQABu58AAbuhAAG7owABu6YAAbunAAG7qAABu6kAAbuqAAG7rAABu64AAbuvAAG7sAABu7IAAbuzAAG72AABu/wAAbwjAAG8RwABvEoAAbxMAAG8TgABvFAAAbxSAAG8VAABvFUAAbxYAAG8ZQABvHIAAbx0AAG8dgABvHgAAbx6AAG8fAABvH4AAbyLAAG8jgABvJEAAbyUAAG8lwABvJoAAbydAAG8nwABvN4AAbzgAAG84wABvOUAAbzoAAG86QABvOoAAbzrAAG87AABvO4AAbzwAAG88QABvPIAAbz0AAG89QABvTgAAb1cAAG9gAABvaMAAb3KAAG96gABvhEAAb44AAG+WAABvnwAAb6gAAG+ogABvqUAAb6nAAG+qQABvqsAAb6uAAG+sQABvrMAAb61AAG+uAABvroAAb68AAG+vwABvsIAAb7DAAG+zAABvtkAAb7cAAG+3gABvuEAAb7kAAG+5gABvwsAAb8vAAG/VgABv3oAAb99AAG/fwABv4EAAb+DAAG/hQABv4cAAb+IAAG/iwABv5gAAb+rAAG/rQABv68AAb+xAAG/swABv7UAAb+3AAG/uQABv7sAAb+9AAG/0AABv9MAAb/WAAG/2QABv9wAAb/fAAG/4gABv+UAAb/oAAG/6wABv+0AAcAsAAHALgABwDEAAcAzAAHANgABwDcAAcA4AAHAOQABwDoAAcA8AAHAPgABwD8AAcBAAAHAQgABwEMAAcBMAAHATQABwE8AAcCOAAHAkAABwJIAAcCUAAHAlwABwJgAAcCZAAHAmgABwJsAAcCdAAHAnwABwKAAAcChAAHAowABwKQAAcDjAAHA5QABwOgAAcDqAAHA7QABwO4AAcDvAAHA8AABwPEAAcDzAAHA9QABwPYAAcD3AAHA+QABwPoAAcEDAAHBBAABwQYAAcFFAAHBRwABwUkAAcFLAAHBTgABwU8AAcFQAAHBUQABwVIAAcFUAAHBVgABwVcAAcFYAAHBWgABwVsAAcGaAAHBnAABwZ8AAcGhAAHBpAABwaUAAcGmAAHBpwABwagAAcGqAAHBrAABwa0AAcGuAAHBsAABwbEAAcG6AAHBuwABwb0AAcH8AAHB/gABwgAAAcICAAHCBQABwgYAAcIHAAHCCAABwgkAAcILAAHCDQABwg4AAcIPAAHCEQABwhIAAcJRAAHCUwABwlYAAcJYAAHCWwABwlwAAcJdAAHCXgABwl8AAcJhAAHCYwABwmQAAcJlAAHCZwABwmgAAcJ1AAHCdgABwncAAcJ5AAHCuAABwroAAcK8AAHCvgABwsEAAcLCAAHCwwABwsQAAcLFAAHCxwABwskAAcLKAAHCywABws0AAcLOAAHDDQABww8AAcMSAAHDFAABwxcAAcMYAAHDGQABwxoAAcMbAAHDHQABwx8AAcMgAAHDIQABwyMAAcMkAAHDMgABwz8AAcNMAAHDTwABw1IAAcNVAAHDWAABw1oAAcNdAAHDagABw20AAcNwAAHDcwABw3YAAcN5AAHDfAABw34AAcOFAAHDjAABw5cAAcOaAAHDpQABw/AAAcQTAAHEMwABxFMAAcRVAAHEVwABxFkAAcRbAAHEXgABxF8AAcRgAAHEYwABxGQAAcRmAAHEZwABxGkAAcRsAAHEbQABxG4AAcRxAAHEcgABxHsAAcSIAAHEjQABxI8AAcSRAAHElgABxJkAAcScAAHEngABxMMAAcTnAAHFDgABxTIAAcU1AAHFNwABxTkAAcU7AAHFPQABxT8AAcVAAAHFQwABxVAAAcVhAAHFYwABxWUAAcVnAAHFaQABxWsAAcVtAAHFbwABxXEAAcWCAAHFhQABxYgAAcWLAAHFjgABxZEAAcWUAAHFlwABxZoAAcWcAAHF2wABxd0AAcXfAAHF4QABxeQAAcXlAAHF5gABxecAAcXoAAHF6gABxewAAcXtAAHF7gABxfAAAcXxAAHGMAABxjIAAcY0AAHGNgABxjkAAcY6AAHGOwABxjwAAcY9AAHGPwABxkEAAcZCAAHGQwABxkUAAcZGAAHGhQABxocAAcaKAAHGjAABxo8AAcaQAAHGkQABxpIAAcaTAAHGlQABxpcAAcaYAAHGmQABxpsAAcacAAHGqQABxqoAAcarAAHGrQABxuwAAcbuAAHG8AABxvIAAcb1AAHG9gABxvcAAcb4AAHG+QABxvsAAcb9AAHG/gABxv8AAccBAAHHAgABx0EAAcdDAAHHRQABx0cAAcdKAAHHSwABx0wAAcdNAAHHTgABx1AAAcdSAAHHUwABx1QAAcdWAAHHVwABx5YAAceYAAHHmgABx5wAAcefAAHHoAABx6EAAceiAAHHowABx6UAAcenAAHHqAABx6kAAcerAAHHrAABx+sAAcftAAHH7wABx/EAAcf0AAHH9QABx/YAAcf3AAHH+AABx/oAAcf8AAHH/QABx/4AAcgAAAHIAQAByEAAAchCAAHIRAAByEYAAchJAAHISgAByEsAAchMAAHITQAByE8AAchRAAHIUgAByFMAAchVAAHIVgAByHsAAcifAAHIxgAByOoAAcjtAAHI7wAByPEAAcjzAAHI9QAByPcAAcj4AAHI+wAByQgAAckXAAHJGQAByRsAAckdAAHJHwABySEAAckjAAHJJQAByTQAAck3AAHJOgAByT0AAclAAAHJQwAByUYAAclJAAHJSwAByYoAAcmMAAHJjwAByZEAAcmUAAHJlQAByZYAAcmXAAHJmAAByZoAAcmcAAHJnQAByZ4AAcmgAAHJoQAByeAAAcniAAHJ5AAByeYAAcnpAAHJ6gAByesAAcnsAAHJ7QABye8AAcnxAAHJ8gAByfMAAcn1AAHJ9gAByjUAAco3AAHKOQAByjsAAco+AAHKPwABykAAAcpBAAHKQgABykQAAcpGAAHKRwABykgAAcpKAAHKSwAByooAAcqMAAHKjwABypEAAcqUAAHKlQABypYAAcqXAAHKmAABypoAAcqcAAHKnQAByp4AAcqgAAHKoQAByuAAAcriAAHK5AAByuYAAcrpAAHK6gAByusAAcrsAAHK7QAByu8AAcrxAAHK8gAByvMAAcr1AAHK9gAByzUAAcs3AAHLOQAByzsAAcs+AAHLPwABy0AAActBAAHLQgABy0QAActGAAHLRwABy0gAActKAAHLSwABy4oAAcuMAAHLjgABy5AAAcuTAAHLlAABy5UAAcuWAAHLlwABy5kAAcubAAHLnAABy50AAcufAAHLoAABy+sAAcwOAAHMLgABzE4AAcxQAAHMUgABzFQAAcxWAAHMWQABzFoAAcxbAAHMXgABzF8AAcxhAAHMYgABzGQAAcxnAAHMaAABzGkAAcxsAAHMbQABzHIAAcx/AAHMhAABzIYAAcyIAAHMjQABzJAAAcyTAAHMlQABzLoAAczeAAHNBQABzSkAAc0sAAHNLgABzTAAAc0yAAHNNAABzTYAAc03AAHNOgABzUcAAc1YAAHNWgABzVwAAc1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2AAHYNwAB2DgAAdg5AAHYOgAB2DwAAdg+AAHYPwAB2EAAAdhCAAHYQwAB2GgAAdiMAAHYswAB2NcAAdjaAAHY3AAB2N4AAdjgAAHY4gAB2OQAAdjlAAHY6AAB2PUAAdkEAAHZBgAB2QgAAdkKAAHZDAAB2Q4AAdkQAAHZEgAB2SEAAdkkAAHZJwAB2SoAAdktAAHZMAAB2TMAAdk2AAHZOAAB2XcAAdl5AAHZewAB2X0AAdmAAAHZgQAB2YIAAdmDAAHZhAAB2YYAAdmIAAHZiQAB2YoAAdmMAAHZjQAB2cwAAdnOAAHZ0AAB2dIAAdnVAAHZ1gAB2dcAAdnYAAHZ2QAB2dsAAdndAAHZ3gAB2d8AAdnhAAHZ4gAB2iEAAdojAAHaJQAB2icAAdoqAAHaKwAB2iwAAdotAAHaLgAB2jAAAdoyAAHaMwAB2jQAAdo2AAHaNwAB2nYAAdp4AAHaewAB2n0AAdqAAAHagQAB2oIAAdqDAAHahAAB2oYAAdqIAAHaiQAB2ooAAdqMAAHajQAB2swAAdrOAAHa0AAB2tIAAdrVAAHa1gAB2tcAAdrYAAHa2QAB2tsAAdrdAAHa3gAB2t8AAdrhAAHa4gAB2yEAAdsjAAHbJQAB2ycAAdsqAAHbKwAB2ywAAdstAAHbLgAB2zAAAdsyAAHbMwAB2zQAAds2AAHbNwAB23YAAdt4AAHbegAB23wAAdt/AAHbgAAB24EAAduCAAHbgwAB24UAAduHAAHbiAAB24kAAduLAAHbjAAB29cAAdv6AAHcGgAB3DoAAdw8AAHcPgAB3EAAAdxCAAHcRQAB3EYAAdxHAAHcSgAB3EsAAdxNAAHcTgAB3FAAAdxTAAHcVAAB3FUAAdxYAAHcWQAB3F4AAdxrAAHccAAB3HIAAdx0AAHceQAB3HwAAdx/AAHcgQAB3KYAAdzKAAHc8QAB3RUAAd0YAAHdGgAB3RwAAd0eAAHdIAAB3SIAAd0jAAHdJgAB3TMAAd1EAAHdRgAB3UgAAd1KAAHdTAAB3U4AAd1QAAHdUgAB3VQAAd1lAAHdaAAB3WsAAd1uAAHdcQAB3XQAAd13AAHdegAB3X0AAd1/AAHdvgAB3cAAAd3CAAHdxAAB3ccAAd3IAAHdyQAB3coAAd3LAAHdzQAB3c8AAd3QAAHd0QAB3dMAAd3UAAHeEwAB3hUAAd4XAAHeGQAB3hwAAd4dAAHeHgAB3h8AAd4gAAHeIgAB3iQAAd4lAAHeJgAB3igAAd4pAAHeaAAB3moAAd5tAAHebwAB3nIAAd5zAAHedAAB3nUAAd52AAHeeAAB3noAAd57AAHefAAB3n4AAd5/AAHejAAB3o0AAd6OAAHekAAB3s8AAd7RAAHe0wAB3tUAAd7YAAHe2QAB3toAAd7bAAHe3AAB3t4AAd7gAAHe4QAB3uIAAd7kAAHe5QAB3yQAAd8mAAHfKAAB3yoAAd8tAAHfLgAB3y8AAd8wAAHfMQAB3zMAAd81AAHfNgAB3zcAAd85AAHfOgAB33kAAd97AAHffQAB338AAd+CAAHfgwAB34QAAd+FAAHfhgAB34gAAd+KAAHfiwAB34wAAd+OAAHfjwAB384AAd/QAAHf0gAB39QAAd/XAAHf2AAB39kAAd/aAAHf2wAB390AAd/fAAHf4AAB3+EAAd/jAAHf5AAB4CMAAeAlAAHgJwAB4CkAAeAsAAHgLQAB4C4AAeAvAAHgMAAB4DIAAeA0AAHgNQAB4DYAAeA4AAHgOQAB4F4AAeCCAAHgqQAB4M0AAeDQAAHg0gAB4NQAAeDWAAHg2AAB4NoAAeDbAAHg3gAB4OsAAeD6AAHg/AAB4P4AAeEAAAHhAgAB4QQAAeEGAAHhCAAB4RcAAeEaAAHhHQAB4SAAAeEjAAHhJgAB4SkAAeEsAAHhLgAB4W0AAeFvAAHhcgAB4XQAAeF3AAHheAAB4XkAAeF6AAHhewAB4X0AAeF/AAHhgAAB4YEAAeGDAAHhhAAB4cMAAeHFAAHhxwAB4ckAAeHMAAHhzQAB4c4AAeHPAAHh0AAB4dIAAeHUAAHh1QAB4dYAAeHYAAHh2QAB4hgAAeIaAAHiHAAB4h4AAeIhAAHiIgAB4iMAAeIkAAHiJQAB4icAAeIpAAHiKgAB4isAAeItAAHiLgAB4m0AAeJvAAHicgAB4nQAAeJ3AAHieAAB4nkAAeJ6AAHiewAB4n0AAeJ/AAHigAAB4oEAAeKDAAHihAAB4oYAAeLFAAHixwAB4skAAeLLAAHizgAB4s8AAeLQAAHi0QAB4tIAAeLUAAHi1gAB4tcAAeLYAAHi2gAB4tsAAeMaAAHjHAAB4x4AAeMgAAHjIwAB4yQAAeMlAAHjJgAB4ycAAeMpAAHjKwAB4ywAAeM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BAAHuwwAB7sUAAe7HAAHuygAB7ssAAe7MAAHuzQAB7s4AAe7QAAHu0gAB7tMAAe7UAAHu1gAB7tcAAe8WAAHvGAAB7xoAAe8cAAHvHwAB7yAAAe8hAAHvIgAB7yMAAe8lAAHvJwAB7ygAAe8pAAHvKwAB7ywAAe9rAAHvbQAB728AAe9xAAHvdAAB73UAAe92AAHvdwAB73gAAe96AAHvfAAB730AAe9+AAHvgAAB74EAAe/AAAHvwgAB78QAAe/GAAHvyQAB78oAAe/LAAHvzAAB780AAe/PAAHv0QAB79IAAe/TAAHv1QAB79YAAfAVAAHwFwAB8BkAAfAbAAHwHgAB8B8AAfAgAAHwIQAB8CIAAfAkAAHwJgAB8CcAAfAoAAHwKgAB8CsAAfBQAAHwdAAB8JsAAfC/AAHwwgAB8MQAAfDGAAHwyAAB8MoAAfDMAAHwzQAB8NAAAfDdAAHw7AAB8O4AAfDwAAHw8gAB8PQAAfD2AAHw+AAB8PoAAfEJAAHxDAAB8Q8AAfESAAHxFQAB8RgAAfEbAAHxHgAB8SAAAfFfAAHxYQAB8WQAAfFmAAHxaQAB8WoAAfFrAAHxbAAB8W0AAfFvAAHxcQAB8XIAAfFzAAHxdQAB8XYAAfG1AAHxtwAB8bkAAfG7AAHxvgAB8b8AAfHAAAHxwQAB8cIAAfHEAAHxxgAB8ccAAfHIAAHxygAB8csAAfIKAAHyDAAB8g4AAfIQAAHyEwAB8hQAAfIVAAHyFgAB8hcAAfIZAAHyGwAB8hwAAfIdAAHyHwAB8iAAAfJfAAHyYQAB8mQAAfJmAAHyaQAB8moAAfJrAAHybAAB8m0AAfJvAAHycQAB8nIAAfJzAAHydQAB8nYAAfK1AAHytwAB8rkAAfK7AAHyvgAB8r8AAfLAAAHywQAB8sIAAfLEAAHyxgAB8scAAfLIAAHyygAB8ssAAfMKAAHzDAAB8w4AAfMQAAHzEwAB8xQAAfMVAAHzFgAB8xcAAfMZAAHzGwAB8xwAAfMdAAHzHwAB8yAAAfNfAAHzYQAB82MAAfNlAAHzaAAB82kAAfNqAAHzawAB82wAAfNuAAHzcAAB83EAAfNyAAHzdAAB83UAAfN+AAHzfwAB84EAAfPAAAHzwgAB88QAAfPGAAHzyQAB88oAAfPLAAHzzAAB880AAfPPAAHz0QAB89IAAfP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YAAH/WwAB/1wAAf9dAAH/XgAB/18AAf9hAAH/YwAB/2QAAf9lAAH/ZwAB/2gAAf+nAAH/qQAB/6sAAf+tAAH/sAAB/7EAAf+yAAH/swAB/7QAAf+2AAH/uAAB/7kAAf+6AAH/vAAB/70AAf/8AAH//gACAAEAAgADAAIABgACAAcAAgAIAAIACQACAAoAAgAMAAIADgACAA8AAgAQAAIAEgACABMAAgAgAAIAIQACACIAAgAkAAIAYwACAGUAAgBnAAIAaQACAGwAAgBtAAIAbgACAG8AAgBwAAIAcgACAHQAAgB1AAIAdgACAHgAAgB5AAIAuAACALoAAgC8AAIAvgACAMEAAgDCAAIAwwACAMQAAgDFAAIAxwACAMkAAgDKAAIAywACAM0AAgDOAAIBDQACAQ8AAgERAAIBEwACARYAAgEXAAIBGAACARkAAgEaAAIBHAACAR4AAgEfAAIBIAACASIAAgEjAAIBYgACAWQAAgFmAAIBaAACAWsAAgFsAAIBbQACAW4AAgFvAAIBcQACAXMAAgF0AAIBdQACAXcAAgF4AAIBtwACAbkAAgG7AAIBvQACAcAAAgHBAAIBwgACAcMAAgHEAAIBxgACAcgAAgHJAAIBygACAcwAAgHNAAIB8gACAhYAAgI9AAICYQACAmQAAgJmAAICaAACAmoAAgJsAAICbgACAm8AAgJyAAICfwACAo4AAgKQAAICkgACApQAAgKWAAICmAACApoAAgKcAAICqwACAq4AAgKxAAICtAACArcAAgK6AAICvQACAsAAAgLCAAIDAQACAwMAAgMFAAIDBwACAwoAAgMLAAIDDAACAw0AAgMOAAIDEAACAxIAAgMTAAIDFAACAxYAAgMXAAIDVgACA1gAAgNbAAIDXQACA2AAAgNhAAIDYgACA2MAAgNkAAIDZgACA2gAAgNpAAIDagACA2wAAgNtAAIDrAACA64AAgOwAAIDsgACA7UAAgO2AAIDtwACA7gAAgO5AAIDuwACA70AAgO+AAIDvwACA8EAAgPCAAIEAQACBAMAAgQGAAIECAACBAsAAgQMAAIEDQACBA4AAgQPAAIEEQACBBMAAgQUAAIEFQACBBcAAgQYAAIEWwACBH8AAgSjAAIExgACBO0AAgUNAAIFNAACBVsAAgV7AAIFnwACBcMAAgXFAAIFyAACBcoAAgXMAAIFzgACBdEAAgXUAAIF1gACBdgAAgXbAAIF3QACBd8AAgXiAAIF5QACBeYAAgXrAAIF+AACBfsAAgX9AAIGAAACBgMAAgYFAAIGKgACBk4AAgZ1AAIGmQACBpwAAgaeAAIGoAACBqIAAgakAAIGpgACBqcAAgaqAAIGtwACBsoAAgbMAAIGzgACBtAAAgbSAAIG1AACBtYAAgbYAAIG2gACBtwAAgbvAAIG8gACBvUAAgb4AAIG+wACBv4AAgcBAAIHBAACBwcAAgcKAAIHDAACB0sAAgdNAAIHUAACB1IAAgdVAAIHVgACB1cAAgdYAAIHWQACB1sAAgddAAIHXgACB18AAgdhAAIHYgACB2sAAgdsAAIHbgACB60AAgevAAIHsQACB7MAAge2AAIHtwACB7gAAge5AAIHugACB7wAAge+AAIHvwACB8AAAgfCAAIHwwACCAIAAggEAAIIBwACCAkAAggMAAIIDQACCA4AAggPAAIIEAACCBIAAggUAAIIFQACCBYAAggYAAIIGQACCCIAAggjAAIIJQACCGQAAghmAAIIaAACCGoAAghtAAIIbgACCG8AAghwAAIIcQACCHMAAgh1AAIIdgACCHcAAgh5AAIIegACCLkAAgi7AAIIvgACCMAAAgjDAAIIxAACCMUAAgjGAAIIxwACCMkAAgjLAAIIzAACCM0AAgjPAAII0AACCNkAAgjaAAII3AACCRsAAgkdAAIJHwACCSEAAgkkAAIJJQACCSYAAgknAAIJKAACCSoAAgksAAIJLQACCS4AAgkwAAIJMQACCXAAAglyAAIJdQACCXcAAgl6AAIJewACCXwAAgl9AAIJfgACCYAAAgmCAAIJgwACCYQAAgmGAAIJhwACCZQAAgmVAAIJlgACCZgAAgnXAAIJ2QACCdsAAgndAAIJ4AACCeEAAgniAAIJ4wACCeQAAgnmAAIJ6AACCekAAgnqAAIJ7AACCe0AAgosAAIKLgACCjAAAgoyAAIKNQACCjYAAgo3AAIKOAACCjkAAgo7AAIKPQACCj4AAgo/AAIKQQACCkIAAgpPAAIKWAACClsAAgpdAAIKYAACCmMAAgpsAAIKbwACCnIAAgp1AAIKeAACCnoAAgp/AAIKhAACCokAAgrUAAIK9wACCxcAAgs3AAILOQACCzsAAgs9AAILPwACC0IAAgtDAAILRAACC0cAAgtIAAILSgACC0sAAgtNAAILUAACC1EAAgtSAAILVQACC1YAAgtfAAILbAACC3EAAgtzAAILdQACC3oAAgt9AAILgAACC4IAAgunAAILywACC/IAAgwWAAIMGQACDBsAAgwdAAIMHwACDCEAAgwjAAIMJAACDCcAAgw0AAIMRQACDEcAAgxJAAIMSwACDE0AAgxPAAIMUQACDFMAAgxVAAIMZgACDGkAAgxsAAIMbwACDHIAAgx1AAIMeAACDHsAAgx+AAIMgAACDL8AAgzBAAIMwwACDMUAAgzIAAIMyQACDMoAAgzLAAIMzAACDM4AAgzQAAIM0QACDNIAAgzUAAIM1QACDRQAAg0WAAINGAACDRoAAg0dAAINHgACDR8AAg0gAAINIQACDSMAAg0lAAINJgACDScAAg0pAAINKgACDWkAAg1rAAINbgACDXAAAg1zAAINdAACDXUAAg12AAINdwACDXkAAg17AAINfAACDX0AAg1/AAINgAACDY0AAg2OAAINjwACDZEAAg3QAAIN0gACDdQAAg3WAAIN2QACDdoAAg3bAAIN3AACDd0AAg3fAAIN4QACDeIAAg3jAAIN5QACDeYAAg4lAAIOJwACDikAAg4rAAIOLgACDi8AAg4wAAIOMQACDjIAAg40AAIONgACDjcAAg44AAIOOgACDjsAAg56AAIOfAACDn4AAg6AAAIOgwACDoQAAg6FAAIOhgACDocAAg6JAAIOiwACDowAAg6NAAIOjwACDpAAAg7PAAIO0QACDtMAAg7VAAIO2AACDtkAAg7aAAIO2wACDtwAAg7eAAIO4AACDuEAAg7iAAIO5AACDuUAAg8kAAIPJgACDygAAg8qAAIPLQACDy4AAg8vAAIPMAACDzEAAg8zAAIPNQACDzYAAg83AAIPOQACDzoAAg9fAAIPgwACD6oAAg/OAAIP0QACD9MAAg/VAAIP1wACD9kAAg/bAAIP3AACD98AAg/sAAIP+wACD/0AAg//AAIQAQACEAMAAhAFAAIQBwACEAkAAhAYAAIQGwACEB4AAhAhAAIQJAACECcAAhAqAAIQLQACEC8AAhBuAAIQcAACEHIAAhB0AAIQdwACEHgAAhB5AAIQegACEHsAAhB9AAIQfwACEIAAAhCBAAIQgwACEIQAAhDDAAIQxQACEMcAAhDJAAIQzAACEM0AAhDOAAIQzwACENAAAhDSAAIQ1AACENUAAhDWAAIQ2AACENkAAhEYAAIRGgACERwAAhEeAAIRIQACESIAAhEjAAIRJAACESUAAhEnAAIRKQACESoAAhErAAIRLQACES4AAhFtAAIRbwACEXEAAhFzAAIRdgACEXcAAhF4AAIReQACEXoAAhF8AAIRfgACEX8AAhGAAAIRggACEYMAAhHCAAIRxAACEcYAAhHIAAIRywACEcwAAhHNAAIRzgACEc8AAhHRAAIR0wACEdQAAhHVAAIR1wACEdgAAhIXAAISGQACEhsAAhIdAAISIAACEiEAAhIiAAISIwACEiQAAhImAAISKAACEikAAhIqAAISLAACEi0AAhJsAAISbgACEnEAAhJzAAISdgACEncAAhJ4AAISeQACEnoAAhJ8AAISfgACEn8AAhKAAAISggACEoMAAhLOAAIS8QACExEAAhMxAAITMwACEzUAAhM3AAITOQACEzwAAhM9AAITPgACE0EAAhNCAAITRAACE0UAAhNHAAITSQACE0oAAhNLAAITTgACE08AAhNUAAITYQACE2YAAhNoAAITagACE28AAhNyAAITdQACE3cAAhOcAAITwAACE+cAAhQLAAIUDgACFBAAAhQSAAIUFAACFBYAAhQYAAIUGQACFBwAAhQpAAIUOgACFDwAAhQ+AAIUQAACFEIAAhREAAIURgACFEgAAhRKAAIUWwACFF4AAhRhAAIUZAACFGcAAhRqAAIUbQACFHAAAhRzAAIUdQACFLQAAhS2AAIUuAACFLoAAhS9AAIUvgACFL8AAhTAAAIUwQACFMMAAhTFAAIUxgACFMcAAhTJAAIUygACFQkAAhULAAIVDQACFQ8AAhUSAAIVEwACFRQAAhUVAAIVFgACFRgAAhUaAAIVGwACFRwAAhUeAAIVHwACFV4AAhVgAAIVYwACFWUAAhVoAAIVaQACFWoAAhVrAAIVbAACFW4AAhVwAAIVcQACFXIAAhV0AAIVdQACFYIAAhWDAAIVhAACFYYAAhXFAAIVxwACFckAAhXLAAIVzgACFc8AAhXQAAIV0QACFdIAAhXUAAIV1gACFdcAAhXYAAIV2gACFdsAAhYaAAIWHAACFh4AAhYgAAIWIwACFiQAAhYlAAIWJgACFicAAhYpAAIWKwACFiwAAhYtAAIWLwACFjAAAhZvAAIWcQACFnMAAhZ1AAIWeAACFnkAAhZ6AAIWewACFnwAAhZ+AAIWgAACFoEAAhaCAAIWhAACFoUAAhbEAAIWxgACFsgAAhbKAAIWzQACFs4AAhbPAAIW0AACFtEAAhbTAAIW1QACFtYAAhbXAAIW2QACFtoAAhcZAAIXGwACFx0AAhcfAAIXIgACFyMAAhckAAIXJQACFyYAAhcoAAIXKgACFysAAhcsAAIXLgACFy8AAhdUAAIXeAACF58AAhfDAAIXxgACF8gAAhfKAAIXzAACF84AAhfQAAIX0QACF9QAAhfhAAIX8AACF/IAAhf0AAIX9gACF/gAAhf6AAIX/AACF/4AAhgNAAIYEAACGBMAAhgWAAIYGQACGBwAAhgfAAIYIgACGCQAAhhjAAIYZQACGGgAAhhqAAIYbQACGG4AAhhvAAIYcAACGHEAAhhzAAIYdQACGHYAAhh3AAIYeQACGHoAAhi5AAIYuwACGL0AAhi/AAIYwgACGMMAAhjEAAIYxQACGMYAAhjIAAIYygACGMsAAhjMAAIYzgACGM8AAhkOAAIZEAACGRIAAhkUAAIZFwACGRgAAhkZAAIZGgACGRsAAhkdAAIZHwACGSAAAhkhAAIZIwACGSQAAhljAAIZZQACGWgAAhlqAAIZbQACGW4AAhlvAAIZcAACGXEAAhlzAAIZdQACGXYAAhl3AAIZeQACGXoAAhm5AAIZuwACGb0AAhm/AAIZwgACGcMAAhnEAAIZxQACGcYAAhnIAAIZygACGcsAAhnMAAIZzgACGc8AAhoOAAIaEAACGhIAAhoUAAIaFwACGhgAAhoZAAIaGgACGhsAAhodAAIaHwACGiAAAhohAAIaIwACGiQAAhpjAAIaZQACGmcAAhppAAIabAACGm0AAhpuAAIabwACGnAAAhpyAAIadAACGnUAAhp2AAIaeAACGnkAAhrEAAIa5wACGwcAAhsnAAIbKQACGysAAhstAAIbLwACGzIAAhszAAIbNAACGzcAAhs4AAIbOgACGzsAAhs9AAIbQAACG0EAAhtCAAIbRQACG0YAAhtPAAIbXAACG2EAAhtjAAIbZQACG2oAAhttAAIbcAACG3IAAhuXAAIbuwACG+IAAhwGAAIcCQACHAsAAhwNAAIcDwACHBEAAhwTAAIcFAACHBcAAhwkAAIcNQACHDcAAhw5AAIcOwACHD0AAhw/AAIcQQACHEMAAhxFAAIcVgACHFkAAhxcAAIcXwACHGIAAhxlAAIcaAACHGsAAhxuAAIccAACHK8AAhyxAAIcswACHLUAAhy4AAIcuQACHLoAAhy7AAIcvAACHL4AAhzAAAIcwQACHMIAAhzEAAIcxQACHQQAAh0GAAIdCAACHQoAAh0NAAIdDgACHQ8AAh0QAAIdEQACHRMAAh0VAAIdFgACHRcAAh0ZAAIdGgACHVkAAh1bAAIdXgACHWAAAh1jAAIdZAACHWUAAh1mAAIdZwACHWkAAh1rAAIdbAACHW0AAh1vAAIdcAACHX0AAh1+AAIdfwACHYEAAh3AAAIdwgACHcQAAh3GAAIdyQACHcoAAh3LAAIdzAACHc0AAh3PAAId0QACHdIAAh3TAAId1QACHdYAAh4VAAIeFwACHhkAAh4bAAIeHgACHh8AAh4gAAIeIQACHiIAAh4kAAIeJgACHicAAh4oAAIeKgACHisAAh5qAAIebAACHm4AAh5wAAIecwACHnQAAh51AAIedgACHncAAh55AAIeewACHnwAAh59AAIefwACHoAAAh6/AAIewQACHsMAAh7FAAIeyAACHskAAh7KAAIeywACHswAAh7OAAIe0AACHtEAAh7SAAIe1AACHtUAAh8UAAIfFgACHxgAAh8aAAIfHQACHx4AAh8fAAIfIAACHyEAAh8jAAIfJQACHyYAAh8nAAIfKQACHyoAAh9PAAIfcwACH5oAAh++AAIfwQACH8MAAh/FAAIfxwACH8kAAh/LAAIfzAACH88AAh/cAAIf6wACH+0AAh/vAAIf8QACH/MAAh/1AAIf9wACH/kAAiAIAAIgCwACIA4AAiARAAIgFAACIBcAAiAaAAIgHQACIB8AAiBeAAIgYAACIGMAAiBlAAIgaAACIGkAAiBqAAIgawACIGwAAiBuAAIgcAACIHEAAiByAAIgdAACIHUAAiC0AAIgtgACILgAAiC6AAIgvQACIL4AAiC/AAIgwAACIMEAAiDDAAIgxQACIMYAAiDHAAIgyQACIMoAAiEJAAIhCwACIQ0AAiEPAAIhEgACIRMAAiEUAAIhFQACIRYAAiEYAAIhGgACIRsAAiEcAAIhHgACIR8AAiFeAAIhYAACIWMAAiFlAAIhaAACIWkAAiFqAAIhawACIWwAAiFuAAIhcAACIXEAAiFyAAIhdAACIXUAAiG0AAIhtgACIbgAAiG6AAIhvQACIb4AAiG/AAIhwAACIcEAAiHDAAIhxQACIcYAAiHHAAIhyQACIcoAAiIJAAIiCwACIg0AAiIPAAIiEgACIhMAAiIUAAIiFQACIhYAAiIYAAIiGgACIhsAAiIcAAIiHgACIh8AAiJeAAIiYAACImIAAiJkAAIiZwACImgAAiJpAAIiagACImsAAiJtAAIibwACInAAAiJxAAIicwACInQAAiK/AAIi4gACIwIAAiMiAAIjJAACIyYAAiMoAAIjKgACIy0AAiMuAAIjLwACIzIAAiMzAAIjNQACIzYAAiM4AAIjOwACIzwAAiM9AAIjQAACI0EAAiNGAAIjUwACI1gAAiNaAAIjXAACI2EAAiNkAAIjZwACI2kAAiOOAAIjsgACI9kAAiP9AAIkAAACJAIAAiQEAAIkBgACJAgAAiQKAAIkCwACJA4AAiQbAAIkLAACJC4AAiQwAAIkMgACJDQAAiQ2AAIkOAACJDoAAiQ8AAIkTQACJFAAAiRTAAIkVgACJFkAAiRcAAIkXwACJGIAAiRlAAIkZwACJKYAAiSoAAIkqgACJKwAAiSvAAIksAACJLEAAiSyAAIkswACJLUAAiS3AAIkuAACJLkAAiS7AAIkvAACJPsAAiT9AAIk/wACJQEAAiUEAAIlBQACJQYAAiUHAAIlCAACJQoAAiUMAAIlDQACJQ4AAiUQAAIlEQACJVAAAiVSAAIlVQACJVcAAiVaAAIlWwACJVwAAiVdAAIlXgACJWAAAiViAAIlYwACJWQAAiVmAAIlZwACJXQAAiV1AAIldgACJXgAAiW3AAIluQACJbsAAiW9AAIlwAACJcEAAiXCAAIlwwACJcQAAiXGAAIlyAACJckAAiXKAAIlzAACJc0AAiYMAAImDgACJhAAAiYSAAImFQACJhYAAiYXAAImGAACJhkAAiYbAAImHQACJh4AAiYfAAImIQACJiIAAiZhAAImYwACJmUAAiZnAAImagACJmsAAiZsAAImbQACJm4AAiZwAAImcgACJnMAAiZ0AAImdgACJncAAia2AAImuAACJroAAia8AAImvwACJsAAAibBAAImwgACJsMAAibFAAImxwACJsgAAibJAAImywACJswAAicLAAInDQACJw8AAicRAAInFAACJxUAAicWAAInFwACJxgAAicaAAInHAACJx0AAiceAAInIAACJyEAAidGAAInagACJ5EAAie1AAInuAACJ7oAAie8AAInvgACJ8AAAifCAAInwwACJ8YAAifTAAIn4gACJ+QAAifmAAIn6AACJ+oAAifsAAIn7gACJ/AAAif/AAIoAgACKAUAAigIAAIoCwACKA4AAigRAAIoFAACKBYAAihVAAIoVwACKFkAAihbAAIoXgACKF8AAihgAAIoYQACKGIAAihkAAIoZgACKGcAAihoAAIoagACKGsAAiiqAAIorAACKK4AAiiwAAIoswACKLQAAii1AAIotgACKLcAAii5AAIouwACKLwAAii9AAIovwACKMAAAij/AAIpAQACKQMAAikFAAIpCAACKQkAAikKAAIpCwACKQwAAikOAAIpEAACKREAAikSAAIpFAACKRUAAilUAAIpVgACKVkAAilbAAIpXgACKV8AAilgAAIpYQACKWIAAilkAAIpZgACKWcAAiloAAIpagACKWsAAimqAAIprAACKa4AAimwAAIpswACKbQAAim1AAIptgACKbcAAim5AAIpuwACKbwAAim9AAIpvwACKcAAAin/AAIqAQACKgMAAioFAAIqCAACKgkAAioKAAIqCwACKgwAAioOAAIqEAACKhEAAioSAAIqFAACKhUAAipUAAIqVgACKlgAAipaAAIqXQACKl4AAipfAAIqYAACKmEAAipjAAIqZQACKmYAAipnAAIqaQACKmoAAipzAAIqdAACKnYAAiq1AAIqtwACKrkAAiq7AAIqvgACKr8AAirAAAIqwQACKsIAAirEAAIqxgACKscAAirIAAIqygACKssAAisKAAIrDAACKw4AAisQAAIrEwACKxQAAisVAAIrFgACKxcAAisZAAIrGwACKxwAAisdAAIrHwACKyAAAitfAAIrYQACK2QAAitmAAIraQACK2oAAitrAAIrbAACK20AAitvAAIrcQACK3IAAitzAAIrdQACK3YAAit/AAIrgAACK4IAAiuLAAIrkAACK5MAAiuWAAIrmAACK7UAAiu/AAIryAACK8sAAivNAAIr0AACK9MAAivWAAIr2AACLBsAAiw/AAIsYwACLIYAAiytAAIszQACLPQAAi0bAAItOwACLV8AAi2DAAIthQACLYgAAi2KAAItjAACLY4AAi2RAAItlAACLZYAAi2YAAItmwACLZ0AAi2fAAItogACLaUAAi2mAAItqwACLbgAAi27AAItvQACLcAAAi3DAAItxQACLeoAAi4OAAIuNQACLlkAAi5cAAIuXgACLmAAAi5iAAIuZAACLmYAAi5nAAIuagACLncAAi6KAAIujAACLo4AAi6QAAIukgACLpQAAi6WAAIumAACLpoAAi6cAAIurwACLrIAAi61AAIuuAACLrsAAi6+AAIuwQACLsQAAi7HAAIuygACLswAAi8LAAIvDQACLxAAAi8SAAIvFQACLxYAAi8XAAIvGAACLxkAAi8bAAIvHQACLx4AAi8fAAIvIQACLyIAAi8rAAIvLAACLy4AAi9tAAIvbwACL3EAAi9zAAIvdgACL3cAAi94AAIveQACL3oAAi98AAIvfgACL38AAi+AAAIvggACL4MAAi/CAAIvxAACL8cAAi/JAAIvzAACL80AAi/OAAIvzwACL9AAAi/SAAIv1AACL9UAAi/WAAIv2AACL9kAAi/iAAIv4wACL+UAAjAkAAIwJgACMCgAAjAqAAIwLQACMC4AAjAvAAIwMAACMDEAAjAzAAIwNQACMDYAAjA3AAIwOQACMDoAAjB5AAIwewACMH4AAjCAAAIwgwACMIQAAjCFAAIwhgACMIcAAjCJAAIwiwACMIwAAjCNAAIwjwACMJAAAjCZAAIwmgACMJwAAjDbAAIw3QACMN8AAjDhAAIw5AACMOUAAjDmAAIw5wACMOgAAjDqAAIw7AACMO0AAjDuAAIw8AACMPEAAjEwAAIxMgACMTUAAjE3AAIxOgACMTsAAjE8AAIxPQACMT4AAjFAAAIxQgACMUMAAjFEAAIxRgACMUcAAjFUAAIxVQACMVYAAjFYAAIxlwACMZkAAjGbAAIxnQACMaAAAjGhAAIxogACMaMAAjGkAAIxpgACMagAAjGpAAIxqgACMawAAjGtAAIx7AACMe4AAjHwAAIx8gACMfUAAjH2AAIx9wACMfgAAjH5AAIx+wACMf0AAjH+AAIx/wACMgEAAjICAAIyDwACMhIAAjIVAAIyGAACMhsAAjIdAAIyJgACMnEAAjKUAAIytAACMtQAAjLWAAIy2AACMtoAAjLcAAIy3wACMuAAAjLhAAIy5AACMuUAAjL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DAAJERQACREYAAkRHAAJESQACREoAAkRvAAJEkwACRLoAAkTeAAJE4QACROMAAkTlAAJE5wACROkAAkTrAAJE7AACRO8AAkT8AAJFCwACRQ0AAkUPAAJFEQACRRMAAkUVAAJFFwACRRkAAkUoAAJFKwACRS4AAkUxAAJFNAACRTcAAkU6AAJFPQACRT8AAkV+AAJFgAACRYMAAkWFAAJFiAACRYkAAkWKAAJFiwACRYwAAkWOAAJFkAACRZEAAkWSAAJFlAACRZUAAkXUAAJF1gACRdgAAkXaAAJF3QACRd4AAkXfAAJF4AACReEAAkXjAAJF5QACReYAAkXnAAJF6QACReoAAkYpAAJGKwACRi0AAkYvAAJGMgACRjMAAkY0AAJGNQACRjYAAkY4AAJGOgACRjsAAkY8AAJGPgACRj8AAkZ+AAJGgAACRoMAAkaFAAJGiAACRokAAkaKAAJGiwACRowAAkaOAAJGkAACRpEAAkaSAAJGlAACRpUAAkbUAAJG1gACRtgAAkbaAAJG3QACRt4AAkbfAAJG4AACRuEAAkbjAAJG5QACRuYAAkbnAAJG6QACRuoAAkcpAAJHKwACRy0AAkcvAAJHMgACRzMAAkc0AAJHNQACRzYAAkc4AAJHOgACRzsAAkc8AAJHPgACRz8AAkd+AAJHgAACR4IAAkeEAAJHhwACR4gAAkeJAAJHigACR4sAAkeNAAJHjwACR5AAAkeRAAJHkwACR5QAAkffAAJIAgACSCIAAkhCAAJIRAACSEYAAkhIAAJISgACSE0AAkhOAAJITwACSFIAAkhTAAJIVQACSFYAAkhYAAJIWwACSFwAAkhdAAJIYAACSGEAAkhmAAJIcwACSHgAAkh6AAJIfAACSIEAAkiEAAJIhwACSIkAAkiuAAJI0gACSPkAAkkdAAJJIAACSSIAAkkkAAJJJgACSSgAAkkqAAJJKwACSS4AAkk7AAJJTAACSU4AAklQAAJJUgACSVQAAklWAAJJWAACSVoAAklcAAJJbQACSXAAAklzAAJJdgACSXkAAkl8AAJJfwACSYIAAkmFAAJJhwACScYAAknIAAJJygACScwAAknPAAJJ0AACSdEAAknSAAJJ0wACSdUAAknXAAJJ2AACSdkAAknbAAJJ3AACShsAAkodAAJKHwACSiEAAkokAAJKJQACSiYAAko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nAAJVKgACVSwAAlVrAAJVbQACVW8AAlVxAAJVdAACVXUAAlV2AAJVdwACVXgAAlV6AAJVfAACVX0AAlV+AAJVgAACVYEAAlXAAAJVwgACVcQAAlXGAAJVyQACVcoAAlXLAAJVzAACVc0AAlXPAAJV0QACVdIAAlXTAAJV1QACVdYAAlYVAAJWFwACVhkAAlYbAAJWHgACVh8AAlYgAAJWIQACViIAAlYkAAJWJgACVicAAlYoAAJWKgACVisAAlZqAAJWbAACVm8AAlZxAAJWdAACVnUAAlZ2AAJWdwACVngAAlZ6AAJWfAACVn0AAlZ+AAJWgAACVoEAAlbAAAJWwgACVsQAAlbGAAJWyQACVsoAAlbLAAJWzAACVs0AAlbPAAJW0QACVtIAAlbTAAJW1QACVtYAAlcVAAJXFwACVxkAAlcbAAJXHgACVx8AAlcgAAJXIQACVyIAAlckAAJXJgACVycAAlcoAAJXKgACVysAAldqAAJXbAACV24AAldwAAJXcwACV3QAAld1AAJXdgACV3cAAld5AAJXewACV3wAAld9AAJXfwACV4AAAlfLAAJX7gACWA4AAlguAAJYMAACWDIAAlg0AAJYNgACWDkAAlg6AAJYOwACWD4AAlg/AAJYQQACWEIAAlhEAAJYRwACWEgAAlhJAAJYTAACWE0AAlhSAAJYXwACWGQAAlhmAAJYaAACWG0AAlhwAAJYcwACWHUAAliaAAJYvgACWOUAAlkJAAJZDAACWQ4AAlkQAAJZEgACWRQAAlkWAAJZFwACWRoAAlknAAJZOAACWToAAlk8AAJZPgACWUAAAllCAAJZRAACWUYAAllIAAJZWQACWVwAAllfAAJZYgACWWUAAlloAAJZawACWW4AAllxAAJZcwACWbIAAlm0AAJZtgACWbgAAlm7AAJZvAACWb0AAlm+AAJZvwACWcEAAlnDAAJZxAACWcUAAlnHAAJZyAACWgcAAloJAAJaCwACWg0AAloQAAJaEQACWhIAAloTAAJaFAACWhYAAloYAAJaGQACWhoAAlocAAJaHQACWlwAAlpeAAJaYQACWmMAAlpmAAJaZwACWmgAAlppAAJaagACWmwAAlpuAAJabwACWnAAAlpyAAJacwACWoAAAlqBAAJaggACWoQAAlrDAAJaxQACWscAAlrJAAJazAACWs0AAlrOAAJazwACWtAAAlrSAAJa1AACWtUAAlrWAAJa2AACWtkAAlsYAAJbGgACWxwAAlseAAJbIQACWyIAAlsjAAJbJAACWyUAAlsnAAJbKQACWyoAAlsrAAJbLQACWy4AAlttAAJbbwACW3EAAltzAAJbdgACW3cAAlt4AAJbeQACW3oAAlt8AAJbfgACW38AAluAAAJbggACW4MAAlvCAAJbxAACW8YAAlvIAAJbywACW8wAAlvNAAJbzgACW88AAlvRAAJb0wACW9QAAlvVAAJb1wACW9gAAlwXAAJcGQACXBsAAlwdAAJcIAACXCEAAlwiAAJcIwACXCQAAlwmAAJcKAACXCkAAlwqAAJcLAACXC0AAlxSAAJcdgACXJ0AAlzBAAJcxAACXMYAAlzIAAJcygACXMwAAlzOAAJczwACXNIAAlzfAAJc7gACXPAAAlzyAAJc9AACXPYAAlz4AAJc+gACXPwAAl0LAAJdDgACXREAAl0UAAJdFwACXRoAAl0dAAJdIAACXSIAAl1hAAJdYwACXWUAAl1nAAJdagACXWsAAl1sAAJdbQACXW4AAl1wAAJdcgACXXMAAl10AAJddgACXXcAAl22AAJduAACXboAAl28AAJdvwACXcAAAl3BAAJdwgACXcMAAl3FAAJdxwACXcgAAl3JAAJdywACXcwAAl4LAAJeDQACXg8AAl4RAAJeFAACXhUAAl4WAAJeFwACXhgAAl4aAAJeHAACXh0AAl4eAAJeIAACXiEAAl5gAAJeYgACXmUAAl5nAAJeagACXmsAAl5sAAJebQACXm4AAl5wAAJecgACXnMAAl50AAJedgACXncAAl62AAJeuAACXroAAl68AAJevwACXsAAAl7BAAJewgACXsMAAl7FAAJexwACXsgAAl7JAAJeywACXswAAl8LAAJfDQACXw8AAl8RAAJfFAACXxUAAl8WAAJfFwACXxgAAl8aAAJfHAACXx0AAl8eAAJfIAACXyEAAl9gAAJfYgACX2UAAl9nAAJfagACX2sAAl9sAAJfbQACX24AAl9wAAJfcgACX3MAAl90AAJfdgACX3cAAl/CAAJf5QACYAUAAmAlAAJgJwACYCkAAmArAAJgLQACYDAAAmAxAAJgMgACYDUAAmA2AAJgOAACYDkAAmA7AAJgPgACYD8AAmBAAAJgQwACYEQAAmBJAAJgVgACYFsAAmBdAAJgXwACYGQAAmBnAAJgagACYGwAAmCRAAJgtQACYNwAAmEAAAJhAwACYQUAAmEHAAJhCQACYQsAAmENAAJhDgACYREAAmEeAAJhLwACYTEAAmEzAAJhNQACYTcAAmE5AAJhOwACYT0AAmE/AAJhUAACYVMAAmFWAAJhWQACYVwAAmFfAAJhYgACYWUAAmFoAAJhagACYakAAmGrAAJhrQACYa8AAmGyAAJhswACYbQAAmG1AAJhtgACYbgAAmG6AAJhuwACYbwAAmG+AAJhvwACYf4AAmIAAAJiAgACYgQAAmIHAAJiCAACYgkAAmIKAAJiCwACYg0AAmIPAAJiEAACYhEAAmITAAJiFAACYlMAAmJVAAJiWAACYloAAmJdAAJiXgACYl8AAmJgAAJiYQACYmMAAmJlAAJiZgACYmcAAmJpAAJiagACYncAAmJ4AAJieQACYnsAAmK6AAJivAACYr4AAmLAAAJiwwACYsQAAmLFAAJixgACYscAAmLJAAJiywACYswAAmLNAAJizwACYtAAAmMPAAJjEQACYxMAAmMVAAJjGAACYxkAAmMaAAJjGwACYxwAAmMeAAJjIAACYyEAAmMiAAJjJAACYyUAAmNkAAJjZgACY2gAAmNqAAJjbQACY24AAmNvAAJjcAACY3EAAmNzAAJjdQACY3YAAmN3AAJjeQACY3oAAmO5AAJjuwACY70AAmO/AAJjwgACY8MAAmPEAAJjxQACY8YAAmPIAAJjygACY8sAAmPMAAJjzgACY88AAmQOAAJkEAACZBIAAmQUAAJkFwACZBgAAmQZAAJkGgACZBsAAmQdAAJkHwACZCAAAmQhAAJkIwACZCQAAmRJAAJkbQACZJQAAmS4AAJkuwACZL0AAmS/AAJkwQACZMMAAmTFAAJkxgACZMkAAmTWAAJk5QACZOcAAmTpAAJk6wACZO0AAmTvAAJk8QACZPMAAmUCAAJlBQACZQgAAmULAAJlDgACZREAAmUUAAJlFwACZRkAAmVYAAJlWgACZV0AAmVfAAJlYgACZWMAAmVkAAJlZQACZWYAAmVoAAJlagACZWsAAmVsAAJlbgACZW8AAmWuAAJlsAACZbIAAmW0AAJltwACZbgAAmW5AAJlugACZbsAAmW9AAJlvwACZcAAAmXBAAJlwwACZcQAAmYDAAJmBQACZgcAAmYJAAJmDAACZg0AAmYOAAJmDwACZhAAAmYSAAJmFAACZhUAAmYWAAJmGAACZhkAAmZYAAJmWgACZl0AAmZfAAJmYgACZmMAAmZkAAJmZQACZmYAAmZoAAJmagACZmsAAmZsAAJmbgACZm8AAmauAAJmsAACZrIAAma0AAJmtwACZrgAAma5AAJmugACZrsAAma9AAJmvwACZsAAAmbBAAJmwwACZsQAAmcDAAJnBQACZwcAAmcJAAJnDAACZw0AAmcOAAJnDwACZxAAAmcSAAJnFAACZxUAAmcWAAJnGAACZxkAAmdYAAJnWgACZ1wAAmdeAAJnYQACZ2IAAmdjAAJnZAACZ2UAAmdnAAJnaQACZ2oAAmdrAAJnbQACZ24AAmd3AAJneAACZ3oAAme5AAJnuwACZ70AAme/AAJnwgACZ8MAAmfEAAJnxQACZ8YAAmfIAAJnygACZ8sAAmfMAAJnzgACZ88AAmgOAAJoEAACaBIAAmgUAAJoFwACaBgAAmgZAAJoGgACaBsAAmgdAAJoHwACaCAAAmghAAJoIwACaCQAAmhjAAJoZQACaGgAAmhqAAJobQACaG4AAmhvAAJocAACaHEAAmhzAAJodQACaHYAAmh3AAJoeQACaHoAAmiDAAJohgACaIkAAmiLAAJokAACaJkAAmiyAAJouwACaNQAAmjrAAJo/QACaRoAAmkdAAJpHwACaSEAAmkjAAJpJgACaSgAAmktAAJpbAACaW4AAmlwAAJpcgACaXQAAml1AAJpdgACaXcAAml4AAJpegACaXwAAml9AAJpfgACaYAAAmmBAAJpwAACacIAAmnEAAJpxgACacgAAmnJAAJpygACacsAAmnMAAJpzgACadAAAmnRAAJp0gACadQAAmnVAAJqFAACahYAAmoYAAJqGgACahwAAmodAAJqHgACah8AAmogAAJqIgACaiQAAmolAAJqJgACaigAAmopAAJqMgACajUAAmo4AAJqOgACan0AAmqhAAJqxQACaugAAmsPAAJrLwACa1YAAmt9AAJrnQACa8EAAmvlAAJr5wACa+oAAmvsAAJr7gACa/AAAmvzAAJr9gACa/gAAmv6AAJr/QACa/8AAmwBAAJsBAACbAcAAmwIAAJsEQACbB4AAmwhAAJsIwACbCYAAmwpAAJsKwACbFAAAmx0AAJsmwACbL8AAmzCAAJsxAACbMYAAmzIAAJsygACbMwAAmzNAAJs0AACbN0AAmzwAAJs8gACbPQAAmz2AAJs+AACbPoAAmz8AAJs/gACbQAAAm0CAAJtFQACbRgAAm0bAAJtHgACbSEAAm0kAAJtJwACbSoAAm0tAAJtMAACbTIAAm1xAAJtcwACbXYAAm14AAJtewACbXwAAm19AAJtfgACbX8AAm2BAAJtgwACbYQAAm2FAAJthwACbYgAAm2RAAJtkgACbZQAAm3TAAJt1QACbdcAAm3ZAAJt3AACbd0AAm3eAAJt3wACbeAAAm3iAAJt5AACbeUAAm3mAAJt6AACbekAAm4oAAJuKgACbi0AAm4vAAJuMgACbjMAAm40AAJuNQACbjYAAm44AAJuOgACbjsAAm48AAJuPgACbj8AAm5IAAJuSQACbksAAm6KAAJujAACbo4AAm6QAAJukwACbpQAAm6VAAJulgACbpcAAm6ZAAJumwACbpwAAm6dAAJunwACbqAAAm7fAAJu4QACbuQAAm7mAAJu6QACbuoAAm7rAAJu7AACbu0AAm7vAAJu8QACbvIAAm7zAAJu9QACbvYAAm7/AAJvAAACbwIAAm9BAAJvQwACb0UAAm9HAAJvSgACb0sAAm9MAAJvTQACb04AAm9QAAJvUgACb1MAAm9UAAJvVgACb1cAAm+WAAJvmAACb5sAAm+dAAJvoAACb6EAAm+iAAJvowACb6QAAm+mAAJvqAACb6kAAm+qAAJvrAACb60AAm+6AAJvuwACb7wAAm++AAJv/QACb/8AAnABAAJwAwACcAYAAnAHAAJwCAACcAkAAnAKAAJwDAACcA4AAnAPAAJwEAACcBIAAnATAAJwUgACcFQAAnBWAAJwWAACcFsAAnBcAAJwXQACcF4AAnBfAAJwYQACcGMAAnBkAAJwZQACcGcAAnBoAAJwdQACcH4AAnCBAAJwhAACcIcAAnCKAAJwkwACcJYAAnCZAAJwnAACcJ8AAnChAAJwpwACcLkAAnDGAAJxEQACcTQAAnFUAAJxdAACcXYAAnF4AAJxegACcXwAAnF/AAJxgAACcYEAAnGEAAJxhQACcYcAAnGIAAJxigACcY0AAnGOAAJxjwACcZIAAnGTAAJxmAACcaUAAnGqAAJxrAACca4AAnGzAAJxtgACcbkAAnG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kAAKC5gACgugAAoLqAAKC7QACgu4AAoLvAAKC8AACgvEAAoLzAAKC9QACgvYAAoL3AAKC+QACgvoAAoM5AAKDOwACgz0AAoM/AAKDQgACg0MAAoNEAAKDRQACg0YAAoNIAAKDSgACg0sAAoNMAAKDTgACg08AAoOOAAKDkAACg5MAAoOVAAKDmAACg5kAAoOaAAKDmwACg5wAAoOeAAKDoAACg6EAAoOiAAKDpAACg6UAAoOyAAKDswACg7QAAoO2AAKD9QACg/cAAoP5AAKD+wACg/4AAoP/AAKEAAAChAEAAoQCAAKEBAAChAYAAoQHAAKECAAChAoAAoQLAAKESgAChEwAAoROAAKEUAAChFMAAoRUAAKEVQAChFYAAoRXAAKEWQAChFsAAoRcAAKEXQAChF8AAoRgAAKEnwAChKEAAoSjAAKEpQAChKgAAoSpAAKEqgAChKsAAoSsAAKErgAChLAAAoSxAAKEsgAChLQAAoS1AAKE9AAChPYAAoT4AAKE+gAChP0AAoT+AAKE/wAChQAAAoUBAAKFAwAChQUAAoUGAAKFBwAChQkAAoUKAAKFSQAChUsAAoVNAAKFTwAChVIAAoVTAAKFVAAChVUAAoVWAAKFWAAChVoAAoVbAAKFXAAChV4AAoVfAAKFhAAChagAAoXPAAKF8wAChfYAAoX4AAKF+gAChfwAAoX+AAKGAAAChgEAAoYEAAKGEQAChiAAAoYiAAKGJAAChiYAAoYoAAKGKgAChiwAAoYuAAKGPQAChkAAAoZDAAKGRgAChkkAAoZMAAKGTwAChlIAAoZUAAKGkwAChpUAAoaXAAKGmQAChpwAAoadAAKGngAChp8AAoagAAKGogAChqQAAoalAAKGpgAChqgAAoapAAKG6AAChuoAAobsAAKG7gAChvEAAobyAAKG8wAChvQAAob1AAKG9wAChvkAAob6AAKG+wAChv0AAob+AAKHPQAChz8AAodBAAKHQwACh0YAAodHAAKHSAACh0kAAodKAAKHTAACh04AAodPAAKHUAACh1IAAodTAAKHkgACh5QAAoeXAAKHmQACh5wAAoedAAKHngACh58AAoegAAKHogACh6QAAoelAAKHpgACh6gAAoepAAKH6AACh+oAAofsAAKH7gACh/EAAofyAAKH8wACh/QAAof1AAKH9wACh/kAAof6AAKH+wACh/0AAof+AAKIPQACiD8AAohBAAKIQwACiEYAAohHAAKISAACiEkAAohKAAKITAACiE4AAohPAAKIUAACiFIAAohTAAKIkgACiJQAAoiWAAKImAACiJsAAoicAAKInQACiJ4AAoifAAKIoQACiKMAAoikAAKIpQACiKcAAoioAAKI8wACiRYAAok2AAKJVgACiVgAAolaAAKJXAACiV4AAolhAAKJYgACiWMAAolmAAKJZwACiWkAAolqAAKJbAACiW8AAolwAAKJcQACiXQAAol1AAKJegACiYcAAomMAAKJjgACiZAAAomVAAKJmAACiZsAAomdAAKJwgACieYAAooNAAKKMQACijQAAoo2AAKKOAACijoAAoo8AAKKPgACij8AAopCAAKKTwACimAAAopiAAKKZAACimYAAopoAAKKagACimwAAopuAAKKcAACioEAAoqEAAKKhwACiooAAoqNAAKKkAACipMAAoqWAAKKmQACipsAAoraAAKK3AACit4AAorgAAKK4wACiuQAAorlAAKK5gACiucAAorpAAKK6wACiuwAAortAAKK7wACivAAAosvAAKLMQACizMAAos1AAKLOAACizkAAos6AAKLOwACizwAAos+AAKLQAACi0EAAotCAAKLRAACi0UAAouEAAKLhgACi4kAAouLAAKLjgACi48AAouQAAKLkQACi5IAAouUAAKLlgACi5cAAouYAAKLmgACi5sAAouoAAKLqQACi6oAAousAAKL6wACi+0AAovvAAKL8QACi/QAAov1AAKL9gACi/cAAov4AAKL+gACi/wAAov9AAKL/gACjAAAAowBAAKMQAACjEIAAoxEAAKMRgACjEkAAoxKAAKMSwACjEwAAoxNAAKMTwACjFEAAoxSAAKMUwACjFUAAoxWAAKMlQACjJcAAoyZAAKMmwACjJ4AAoyfAAKMoAACjKEAAoyiAAKMpAACjKYAAoynAAKMqAACjKoAAoyrAAKM6gACjOwAAozuAAKM8AACjPMAAoz0AAKM9QACjPYAAoz3AAKM+QACjPsAAoz8AAKM/QACjP8AAo0AAAKNPwACjUEAAo1DAAKNRQACjUgAAo1JAAKNSgACjUsAAo1MAAKNTgACjVAAAo1RAAKNUgACjVQAAo1VAAKNegACjZ4AAo3FAAKN6QACjewAAo3uAAKN8AACjfIAAo30AAKN9gACjfcAAo36AAKOBwACjhYAAo4YAAKOGgACjhwAAo4eAAKOIAACjiIAAo4kAAKOMwACjjYAAo45AAKOPAACjj8AAo5CAAKORQACjkgAAo5KAAKOiQACjosAAo6NAAKOjwACjpIAAo6TAAKOlAACjpUAAo6WAAKOmAACjpoAAo6bAAKOnAACjp4AAo6fAAKO3gACjuAAAo7iAAKO5AACjucAAo7oAAKO6QACjuoAAo7rAAKO7QACju8AAo7wAAKO8QACjvMAAo70AAKPMwACjzUAAo83AAKPOQACjzwAAo89AAKPPgACjz8AAo9AAAKPQgACj0QAAo9FAAKPRgACj0gAAo9JAAKPiAACj4oAAo+NAAKPjwACj5IAAo+TAAKPlAACj5UAAo+WAAKPmAACj5oAAo+bAAKPnAACj54AAo+fAAKP3gACj+AAAo/iAAKP5AACj+cAAo/oAAKP6QACj+oAAo/rAAKP7QACj+8AAo/wAAKP8QACj/MAAo/0AAKQMwACkDUAApA3AAKQOQACkDwAApA9AAKQPgACkD8AApBAAAKQQgACkEQAApBFAAKQRgACkEgAApBJAAKQiAACkIoAApCMAAKQjgACkJEAApCSAAKQkwACkJQAApCVAAKQlwACkJkAApCaAAKQmwACkJ0AApCeAAKQpwACkKgAApCqAAKQ7QACkREAApE1AAKRWAACkX8AApGfAAKRxgACke0AApINAAKSMQACklUAApJXAAKSWgACklwAApJeAAKSYAACkmMAApJmAAKSaAACkmoAApJtAAKSbwACknEAApJ0AAKSdwACkngAApKBAAKSjgACkpEAApKTAAKSlgACkpkAApKbAAKSwAACkuQAApMLAAKTLwACkzIAApM0AAKTNgACkzgAApM6AAKTPAACkz0AApNAAAKTTQACk2AAApNiAAKTZAACk2YAApNoAAKTagACk2wAApNuAAKTcAACk3IAApOFAAKTiAACk4sAApOOAAKTkQACk5QAApOXAAKTmgACk50AApOgAAKTogACk+EAApPjAAKT5gACk+gAApPrAAKT7AACk+0AApPuAAKT7wACk/EAApPzAAKT9AACk/UAApP3AAKT+AAClAEAApQCAAKUBAAClEMAApRFAAKURwAClEkAApRMAAKUTQAClE4AApRPAAKUUAAClFIAApRUAAKUVQAClFYAApRYAAKUWQAClJgAApSaAAKUnQAClJ8AApSiAAKUowAClKQAApSlAAKUpgAClKgAApSqAAKUqwAClKwAApSuAAKUrwAClLgAApS5AAKUuwAClPoAApT8AAKU/gAClQAAApUDAAKVBAAClQUAApUGAAKVBwAClQkAApULAAKVDAAClQ0AApUPAAKVEAAClU8AApVRAAKVVAAClVYAApVZAAKVWgAClVsAApVcAAKVXQAClV8AApVhAAKVYgAClWMAApVlAAKVZgAClW8AApVwAAKVcgAClbEAApWzAAKVtQAClbcAApW6AAKVuwAClbwAApW9AAKVvgAClcAAApXCAAKVwwAClcQAApXGAAKVxwAClgYAApYIAAKWCwAClg0AApYQAAKWEQAClhIAApYTAAKWFAAClhYAApYYAAKWGQAClhoAApYcAAKWHQAClioAApYrAAKWLAACli4AApZtAAKWbwAClnEAApZzAAKWdgAClncAApZ4AAKWeQAClnoAApZ8AAKWfgACln8AApaAAAKWggACloMAApbCAAKWxAAClscAApbJAAKWzAACls0AApbOAAKWzwACltAAApbSAAKW1AACltUAApbWAAKW2AACltkAApboAAKW9QAClvoAApb9AAKXAAAClwUAApcIAAKXCwAClw0AApcSAAKXXQACl4AAApegAAKXwAACl8IAApfEAAKXxgACl8gAApfLAAKXzAACl80AApfQAAKX0QACl9MAApfUAAKX1gACl9kAApfaAAKX2wACl94AApffAAKX5AACl/EAApf2AAKX+AACl/oAApf/AAKYAgACmAUAApgHAAKYLAACmFAAAph3AAKYmwACmJ4AApigAAKYogACmKQAApimAAKYqAACmKkAApisAAKYuQACmMoAApjMAAKYzgACmNAAApjSAAKY1AACmNYAApjYAAKY2gACmOsAApjuAAKY8QACmPQAApj3AAKY+gACmP0AApkAAAKZAwACmQUAAplEAAKZRgACmUgAAplKAAKZTQACmU4AAplPAAKZUAACmVEAAplTAAKZVQACmVYAAplXAAKZWQACmVoAApmZAAKZmwACmZ0AApmfAAKZogACmaMAApmkAAKZpQACmaYAApmoAAKZqgACmasAApmsAAKZrgACma8AApnuAAKZ8AACmfMAApn1AAKZ+AACmfkAApn6AAKZ+wACmfwAApn+AAKaAAACmgEAApoCAAKaBAACmgUAApoSAAKaEwACmhQAApoWAAKaVQACmlcAAppZAAKaWwACml4AAppfAAKaYAACmmEAAppiAAKaZAACmmYAAppnAAKaaAACmmoAApprAAKaqgACmqwAApquAAKasAACmrMAApq0AAKatQACmrYAApq3AAKauQACmrsAApq8AAKavQACmr8AAprAAAKa/wACmwEAApsDAAKbBQACmwgAApsJAAKbCgACmwsAApsMAAKbDgACmxAAApsRAAKbEgACmxQAApsVAAKbVAACm1YAAptYAAKbWgACm10AApteAAKbXwACm2AAApthAAKbYwACm2UAAptmAAKbZwACm2kAAptqAAKbqQACm6sAAputAAKbrwACm7IAApuzAAKbtAACm7UAApu2AAKbuAACm7oAApu7AAKbvAACm74AApu/AAKb5AACnAgAApwvAAKcUwACnFYAApxYAAKcWgACnFwAApxeAAKcYAACnGEAApxkAAKccQACnIAAApyCAAKchAACnIYAApyIAAKcigACnIwAApyOAAKcnQACnKAAApyjAAKcpgACnKkAApysAAKcrwACnLIAApy0AAKc8wACnPUAApz3AAKc+QACnPwAApz9AAKc/gACnP8AAp0AAAKdAgACnQQAAp0FAAKdBgACnQgAAp0JAAKdSAACnUoAAp1MAAKdTgACnVEAAp1SAAKdUwACnVQAAp1VAAKdVwACnVkAAp1aAAKdWwACnV0AAp1eAAKdnQACnZ8AAp2hAAKdowACnaYAAp2nAAKdqAACnakAAp2qAAKdrAACna4AAp2vAAKdsAACnbIAAp2zAAKd8gACnfQAAp33AAKd+QACnfwAAp39AAKd/gACnf8AAp4AAAKeAgACngQAAp4FAAKeBgACnggAAp4JAAKeSAACnkoAAp5MAAKeTgACnlEAAp5SAAKeUwACnlQAAp5VAAKeVwACnlkAAp5aAAKeWwACnl0AAp5eAAKenQACnp8AAp6hAAKeowACnqYAAp6nAAKeqAACnqkAAp6qAAKerAACnq4AAp6vAAKesAACnrIAAp6zAAKe8gACnvQAAp72AAKe+AACnvsAAp78AAKe/QACnv4AAp7/AAKfAQACnwMAAp8EAAKfBQACnwcAAp8IAAKfUwACn3YAAp+WAAKftgACn7gAAp+6AAKfvAACn74AAp/BAAKfwgACn8MAAp/GAAKfxwACn8kAAp/KAAKfzAACn88AAp/QAAKf0QACn9QAAp/VAAKf2gACn+cAAp/sAAKf7gACn/AAAp/1AAKf+AACn/sAAp/9AAKgIgACoEYAAqBtAAKgkQACoJQAAqCWAAKgmAACoJoAAqCcAAKgngACoJ8AAqCiAAKgrwACoMAAAqDCAAKgxAACoMYAAqDIAAKgygACoMwAAqDOAAKg0AACoOEAAqDkAAKg5wACoOoAAqDtAAKg8AACoPMAAqD2AAKg+QACoPsAAqE6AAKhPAACoT4AAqFAAAKhQwACoUQAAqFFAAKhRgACoUcAAqFJAAKhSwACoUwAAqFNAAKhTwACoVAAAqGPAAKhkQACoZMAAqGVAAKhmAACoZkAAqGaAAKhmwACoZwAAqGeAAKhoAACoaEAAqGiAAKhpAACoaUAAqHkAAKh5gACoekAAqHrAAKh7gACoe8AAqHwAAKh8QACofIAAqH0AAKh9gACofcAAqH4AAKh+gACofsAAqIIAAKiCQACogoAAqIMAAKiSwACok0AAqJPAAKiUQAColQAAqJVAAKiVgAColcAAqJYAAKiWgAColwAAqJdAAKiXgAComAAAqJhAAKioAACoqIAAqKkAAKipgACoqkAAqKqAAKiqwACoqwAAqKtAAKirwACorEAAqKyAAKiswACorUAAqK2AAKi9QACovcAAqL5AAKi+wACov4AAqL/AAKjAAACowEAAqMCAAKjBAACowYAAqMHAAKjCAACowoAAqMLAAKjSgACo0wAAqNOAAKjUAACo1MAAqNUAAKjVQACo1YAAqNXAAKjWQACo1sAAqNcAAKjXQACo18AAqNgAAKjnwACo6EAAqOjAAKjpQACo6gAAqOpAAKjqgACo6sAAqOsAAKjrgACo7AAAqOxAAKjsgACo7QAAqO1AAKj2gACo/4AAqQlAAKkSQACpEwAAqROAAKkUAACpFIAAqRUAAKkVgACpFcAAqRaAAKkZwACpHYAAqR4AAKkegACpHwAAqR+AAKkgAACpIIAAqSEAAKkkwACpJYAAqSZAAKknAACpJ8AAqSiAAKkpQACpKgAAqSqAAKk6QACpOsAAqTuAAKk8AACpPMAAqT0AAKk9QACpPYAAqT3AAKk+QACpPsAAqT8AAKk/QACpP8AAqUAAAKlPwACpUEAAqVDAAKlRQACpUgAAqVJAAKlSgACpUsAAqVMAAKlTgACpVAAAqVRAAKlUgACpVQAAqVVAAKllAACpZYAAqWYAAKlmgACpZ0AAqWeAAKlnwACpaAAAqWhAAKlowACpaUAAqWmAAKlpwACpakAAqWqAAKl6QACpesAAqXuAAKl8AACpfMAAqX0AAKl9QACpfYAAqX3AAKl+QACpfsAAqX8AAKl/QACpf8AAqYAAAKmPwACpkEAAqZDAAKmRQACpkgAAqZJAAKmSgACpksAAqZMAAKmTgACplAAAqZRAAKmUgACplQAAqZVAAKmlAACppYAAqaYAAKmmgACpp0AAqaeAAKmnwACpqAAAqahAAKmowACpqUAAqamAAKmpwACpqkAAqaqAAKm6QACpusAAqbtAAKm7wACpvIAAqbzAAKm9AACpvUAAqb2AAKm+AACpvoAAqb7AAKm/AACpv4AAqb/AAKnCAACpwkAAqcLAAKnGAACpxkAAqcaAAKnHAACpykAAqcqAAKnKwACpy0AAqc6AAKnOwACpzwAAqc+AAKnRwACp1YAAqdjAAKncgACp4QAAqeYAAKnrwACp8EAAqfKAAKnywACp80AAqfaAAKn2wACp9wAAqfeAAKn3wACp+gAAqfyAAKn+QAAAAAAAAQCAAAAAAAAZigAAAAAAAAAAAAAAAAAAqgB + + Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 11.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 +cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIMwALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPXA9gD4APsBAAEDwQeBC0EMQRABE8EXgRtBHwEiASaBKkEuATHBNYE5QT0BQMFCwUgBSEFKQUqBTYFSgVZBWgFdwV7BYoFmQWoBbcFxgXSBeQF5QXmBecF6AXpBeoF6wX6BgkGGAYnBigGNwZGBlUGXQZyBnMGewaHBpsGqga5BsgGzAbbBuoG+QcIBxcHIwc1B0QHUwdUB2MHcgeMB40HkwefB7UHxAfHB9YH5QfoB/cIBggJCBgIJwgrCDoISQhKCFwIXQheCF8IYAhhCGIIdwh4CIAIjAigCK8IvgjNCNEI4AjvCP4JDQkcCSgJOglJCUoJWQloCXcJeAmHCZYJpQm6CbsJwwnPCeMJ8goBChAKFAojCjIKQQpQCl8Kawp9CowKmwqqCrkKyArXCuYK+wr8CwQLEAskCzMLQgtRC1ULZAtzC4ILkQugC6wLvgvNC9wL6wv6C/sMCgwZDCgMPQw+DEYMUgxmDHUMhAyTDJcMpgy1DMQM0wziDO4NAA0PDR4NLQ08DUsNWg1pDX4Nfw2HDZMNpw22DcUN1A3YDecN9g4FDhQOIw4vDkEOUA5fDm4OfQ6MDpsOqg6/DsAOyA7UDugO9w8GDxUPGQ8oDzcPRg9VD2QPcA+CD5EPoA+vD74Pvw/OD90P7BABEAIQChAWECoQORBIEFcQWxBqEHkQiBCXEKYQshDEENMQ4hDxEQARDxEeES0RLhExEToRSRFYEWcRfBF9EYURkRGlEbQRwxHSEdYR5RH0EgMSEhIhEi0SPxJOEk8SXhJtEnwSfRKMEpsSqhK/EsASyBLUEugS9xMGExUTGRMoEzcTRhNVE2QTcBOCE5EToBOvE74TzRPcE+sUABQBFAkUFRQpFDgURxRWFFoUaRR4FIcUlhSlFLEUwxTSFOEU8BT/FQ4VHRUsFUEVQhVKFVYVahV5FYgVlxWbFaoVuRXIFdcV5hXyFgQWExYUFiMWMhZBFkIWURZgFm8WhBaFFo0WmRatFrwWyxbaFt4W7Rb8FwsXGhcpFzUXRxdWF2UXdBeDF5IXoRewF8UXxhfOF9oX7hf9GAwYGxgfGC4YPRhMGFsYahh2GIgYlximGLUYxBjTGOIY8RkGGQcZDxkbGS8ZPhlNGVwZYBlvGX4ZjRmcGasZtxnJGdgZ5xn2GgUaBhoVGiQaMxpIGkkaURpdGnEagBqPGp4aohqxGsAazxreGu0a+RsLGxobKRs4G0cbYRtiG2gbdBuKG5kbnBurG7obvRvMG9sb3hvtG/wcABwPHB4cKhwrHCwcLRxCHEMcSxxXHGscehyJHJgcnByrHLocyRzYHOcc8x0FHRQdIx0yHUEdUB1fHW4dgx2EHYwdmB2sHbsdyh3ZHd0d7B37HgoeGR4oHjQeRh5VHmQecx6CHpEeoB6vHsQexR7NHtke7R78HwsfGh8eHy0fPB9LH1ofaR91H4cflh+lH7Qfwx/SH+Ef8CAFIAYgDiAaIC4gPSBMIFsgXyBuIH0gjCCbIKogtiDIINcg5iD1IQQhHiEfISUhMSFHIVYhWSFoIWkheCF7IYohmSGcIashuiG+Ic0h3CIWIhciGCIZIhoiGyIcIh0iHiIfIiAiISIiIiMiJCIlIiYiJyIoIikiKiIrIiwiLSIuIi8iRCJFIk0iWSJtInwiiyKaIp4irSK8Issi2iLbIuoi9iMIIxcjJiM1I0QjUyNiI3EjhiOHI48jmyOvI74jzSPcI+Aj7yP+JA0kHCQrJDckSSRYJGckdiSFJJQkoySyJMckyCTQJNwk8CT/JQ4lHSUhJTAlPyVOJV0lbCV4JYolmSWoJbclxiXVJeQl8yYIJgkmESYdJjEmQCZPJl4mYiZxJoAmjyaeJp8mria6Jswm2ybqJvknCCcXJyYnNSdKJ0snUydfJ3MngieRJ6AnpCezJ8In0SfgJ+8n+ygNKBwoKyg6KEkoWChnKHYoiyiMKJQooCi0KMMo0ij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UWJVYqlirWLNYv1jTWOJY8VkAWQRZE1kiWTFZQFlPWVtZbVl8WYtZmlmpWbhZx1nWWetZ7Fn0WgBaFFojWjJaQVpFWlRaY1pyWoFakFqcWq5avVrMWtta6lr5WwhbF1ssWy1bNVtBW1VbZFtzW4JbhluVW6Rbs1vCW9Fb3VvvW/5cDVwcXCtcOlxJXFhcbVxuXHZcglyWXKVctFzDXMdc1lzlXPRdA10SXR5dMF0/XU5dXV1sXXtdil2ZXa5dr123XcNd113mXfVeBF4IXhdeJl41XkReU15fXnFegF6PXp5erV68Xste2l7dXuxe+18KXw5fD18VXxxfHV8sXztfSl9OX2hfaV9vX3tfkV+gX6Nfsl/BX8Rf01/iX+Vf9GADYAdgFmAlYDFgMmAzYDRgSWBKYFJgXmByYIFgkGCfYKNgsmDBYNBg32DuYPphDGEbYSphOWFIYVdhZmF1YYphi2GTYZ9hs2HCYdFh4GHkYfNiAmIRYiBiL2I7Yk1iXGJrYnpiiWKYYqditmLLYsxi1GLgYvRjA2MSYyFjJWM0Y0NjUmNhY3BjfGOOY51jrGO7Y8pj2WPoY/dkDGQNZBVkIWQ1ZERkU2RiZGZkdWSEZJNkomSxZL1kz2TeZO1k/GULZRplKWU4ZTtlVWVWZVxlaGV+ZY1lkGWfZa5lsWXAZc9l0mXhZfBl9GYDZhJmE2YbZhxmMWYyZjpmRmZaZmlmeGaHZotmmmapZrhmx2bWZuJm9GcDZxJnIWcwZz9nTmddZ3Jnc2d7Z4dnm2eqZ7lnyGfMZ9tn6mf5aAhoF2gjaDVoRGhTaGJocWiAaI9onmihaKVoqWitaLVouGi8aL1VJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCDKAAIEIL4EIMIEIMd4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEILYEIK4ABgASAAIEILIEILhAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEUAUFdOUy5rZXlzWk5TLm9iamVjdHOqADsAPAA9AD4APwBAAEEAQgBDAESABoAHgAiACYAKgAuADIANgA6AD6oARgBHAEgASQBKAEsATABNAE4AT4AQgNeBBraBBg+BBt6AYYEHdIEH54ECVoECxYAvVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbVdBY2NvdW50XlBsYXliYWNrUmVjb3JkV0xpYnJhcnlVVGhlbWXfEBAAXABdAF4AXwAfAGAAYQAhAGIAYwAOACMAZABlACYAZgBnAGgAJwAnABMAbABtAC8AJwBnAHAAOwBnAHMAdAB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gBKANoAEgASAAoATgQGWgASAEoEBmIAGgBKBB3OAEQgTAAAAASFFzllXb3JkZXJlZNMAOAA5AA4AeQB7AFChAHqAFKEAfIAVgC9eWERfUFN0ZXJlb3R5cGXZAB8AIwCAAA4AJgCBACEAZgCCAEYAegBnAIYAFQAnAC8AdQCKXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgBCAFIASgDWAAIAECIAW0wA4ADkADgCMAJYAUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pAJcAmACZAJoAmwCcAJ0AngCfgCCAJIAmgCiAKYArgC2AMIA0gC9fEBNYRFBNQ29tcG91bmRJbmRleGVzXxAQWERfUFNLX2VsZW1lbnRJRF8QGVhEUE1VbmlxdWVuZXNzQ29uc3RyYWludHNfEBpYRF9QU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QGVhEX1BTS19mZXRjaFJlcXVlc3RzQXJyYXlfEBFYRF9QU0tfaXNBYnN0cmFjdF8QD1hEX1BTS191c2VySW5mb18QE1hEX1BTS19jbGFzc01hcHBpbmdfEBZYRF9QU0tfZW50aXR5Q2xhc3NOYW1l3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAtgAVAHwAdQB1AHUALwB1AL0AjQB1AHUAFQB1VV90eXBlWF9kZWZhdWx0XF9hc3NvY2lhdGlvbltfaXNSZWFkT25seVlfaXNTdGF0aWNZX2lzVW5pcXVlWl9pc0Rlcml2ZWRaX2lzT3JkZXJlZFxfaXNDb21wb3NpdGVXX2lzTGVhZoAAgCGAAIAVCAgICIAjgBcICIAACNIAOQAOAMQAxaCAItIAxwDIAMkAylokY2xhc3NuYW1lWCRjbGFzc2VzXk5TTXV0YWJsZUFycmF5owDJAMsAzFdOU0FycmF5WE5TT2JqZWN00gDHAMgAzgDPXxAQWERVTUxQcm9wZXJ0eUltcKQA0ADRANI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rU3lzdGVtR3JvdXBlZEJhY2tncm91bmRIZXhfECBkYXJrU2Vjb25kYXJ5U3lzdGVtQmFja2dyb3VuZEhleF8QGGxpZ2h0U3lzdGVtQmFja2dyb3VuZEhleF8QEGRhcmtTZXBhcmF0b3JIZXhfEBFkYXJrU3lzdGVtRmlsbEhleF8QGmxpZ2h0VGVydGlhcnlTeXN0ZW1GaWxsSGV4XmxpZ2h0QWNjZW50SGV4XxARbGlnaHRTZXBhcmF0b3JIZXhfEBJsaWdodFN5c3RlbUZpbGxIZXhfEA9saWdodFByaW1hcnlIZXheZGFya1ByaW1hcnlIZXhfEBdkYXJrU3lzdGVtQmFja2dyb3VuZEhleF8QGWRhcmtUZXJ0aWFyeVN5c3RlbUZpbGxIZXhfEBtsaWdodFNlY29uZGFyeVN5c3RlbUZpbGxIZXhYc2VsZWN0ZWRdZGFya0FjY2VudEhleF8QIGxpZ2h0VGVydGlhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAfbGlnaHRTeXN0ZW1Hcm91cGVkQmFja2dyb3VuZEhleN8QEgCrAKwArSIwAB8ArwCwIjEAIQCuIjIAsQAOACMAsgCzACYAtAAVABUAFQAnAE8AdQB1IjoALwB1AGcAdQUaId4AdQB1IkIAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQLFCAiBAvQIgBIIgMGBAtkICIEC8wgSff8O+9MAOAA5AA4iRiJJAFCiAZIFJIA7gKSiIkoiS4EC9YEDAYAv2QAfACMiTgAOACYiTwAhAGYiUCH6AZIAZwCGABUAJwAvAHUiWF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEC8oA7gBKANYAAgAQIgQL20wA4ADkADiJaImMAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgiZCJlImYiZyJoImkiaiJrgQL3gQL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vACcAZwBwAD4AZ00lTSYAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgQYhgASABIACgQYRgQGWgASAEoEBmIAJgBKBBoGBBhAIEvdowmDTADgAOQAOTSpNLABQoQB6gBShTS2BBhKAL9kAHwAjTTAADgAmTTEAIQBmTTIASQB6AGcAhgAVACcALwB1TTpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBg+AFIASgDWAAIAECIEGE9MAOAA5AA5NPE1GAFCpAI0AjgCPAJAAkQCSAJMAlACVgBeAGIAZgBqAG4AcgB2AHoAfqU1HTUhNSU1KTUtNTE1NTU5NT4EGFIEGFoEGF4EGGYEGGoEGHIEGHYEGH4EGIIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVNUwAVTS0AdQB1AHUALwB1AL0AjQB1AHUAFQB1gACBBhWAAIEGEggICAiAI4AXCAiAAAjSADkADk1hAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVNLQB1AHUAdQAvAHUAvQCOAHUAdQAVAHWAAIAAgACBBhIICAgIgCOAGAgIgAAI3xAPAKsArACtAB8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SADkADmi2AMWggCLTADgAOQAOaLlougBQoKCAL1DSAMcAyGi+aL9ZWERQTU1vZGVso2i+aMAAzFdYRE1vZGVsAAAACAAAABkAAAAiAAAALAAAADEAAAA6AAAAPwAAAFEAAABWAAAAWwAAAF0AABDHAAAQzQAAEOYAABD4AAAQ/wAAEQ0AABEaAAARMgAAEUwAABFOAAARUQAAEVMAABFWAAARWQAAEVwAABGVAAARtAAAEdEAABHwAAASAgAAEiIAABIpAAASRwAAElMAABJvAAASdQAAEpcAABK4AAASywAAEs0AABLQAAAS0wAAEtUAABLXAAAS2QAAEtwAABLfAAAS4QAAEuMAABLlAAAS5wAAEukAABLrAAAS7AAAEvAAABL9AAATBQAAExAAABMlAAATJwAAEykAABMrAAATLQAAEy8AABMxAAATMwAAEzUAABM3AAATOQAAE04AABNQAAATUgAAE1UAABNYAAATWwAAE10AABNgAAATYwAAE2YAABNpAAATawAAE3IAABOAAAAThQAAE44AABOWAAATogAAE6oAABO5AAATwQAAE8cAABQKAAAULgAAFFIAABR1AAAUnAAAFLwAABTjAAAVCgAAFSoAABVOAAAVcgAAFX4AABWAAAAVggAAFYQAABWGAAAViAAAFYoAABWNAAAVjwAAFZEAABWUAAAVlgAAFZgAABWbAAAVnQAAFZ4AABWnAAAVrwAAFbwAABW/AAAVwQAAFcQAABXGAAAVyAAAFdcAABX8AAAWIAAAFkcAABZrAAAWbQAAFm8AABZxAAAWcwAAFnUAABZ3AAAWeAAAFnoAABaHAAAWmgAAFpwAABaeAAAWoAAAFqIAABakAAAWpgAAFqgAABaqAAAWrAAAFr8AABbBAAAWwwAAFsUAABbHAAAWyQAAFssAABbNAAAWzwAAFtEAABbTAAAW6QAAFvwAABcYAAAXNQAAF1EAABdlAAAXdwAAF40AABemAAAX5QAAF+sAABf0AAAYAQAAGA0AABgXAAAYIQAAGCwAABg3AAAYRAAAGEwAABhOAAAYUAAAGFIAABhUAAAYVQAAGFYAABhXAAAYWAAAGFoAABhcAAAYXQAAGF4AABhgAAAYYQAAGGoAABhrAAAYbQAAGHYAABiBAAAYigAAGJkAABigAAAYqAAAGLEAABi6AAAYzQAAGNY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AACWbAAAl2gAAJdwAACXeAAAl4AAAJeIAACXjAAAl5AAAJeUAACXmAAAl6AAAJeoAACXrAAAl7AAAJe4AACXvAAAmQgAAJmYAACaKAAAmqgAAJtEAACb4AAAnGAAAJz8AACdjAAAnhgAAJ60AACfRAAAn9QAAKBkAAChAAAAoQQAAKEMAAChFAAAoRwAAKEkAAChMAAAoTgAAKFAAAChTAAAoVQAAKFcAAChaAAAoXAAAKF4AAChgAAAoYgAAKGQAAChnAAAoagAAKG8AACh8AAAofwAAKIEAACiEAAAohgAAKIgAACitAAAo0QAAKPgAACkcAAApHgAAKSAAACkiAAApJAAAKSYAACkoAAApKQAAKSsAACk4AAApSwAAKU0AAClPAAApUQAAKVMAAClVAAApVwAAKVkAAClbAAApXQAAKXAAAClyAAApdAAAKXYAACl4AAApegAAKXwAACl+AAApgAAAKYIAACmEAAApwwAAKcUAACnHAAApyQAAKcsAACnMAAApzQAAKc4AACnPAAAp0QAAKdMAACnUAAAp1QAAKdcAACnYAAAp4QAAKeIAACnkAAAqIwAAKiUAAConAAAqKQAAKisAACosAAAqLQAAKi4AACovAAAqMQAAKjMAACo0AAAqNQAAKjcAACo4AAAqdwAAKnkAACp7AAAqfQAAKn8AACqAAAAqgQAAKoIAACqDAAAqhQAAKocAACqIAAAqiQAAKosAACqMAAAqlQAAKpYAACqYAAAq1wAAKtkAACrbAAAq3QAAKt8AACrgAAAq4QAAKuIAACrjAAAq5QAAKucAACroAAAq6QAAKusAACrsAAArKwAAKy0AACsvAAArMQAAKzMAACs0AAArNQAAKzYAACs3AAArOQAAKzsAACs8AAArPQAAKz8AACtAAAArSQAAK0oAACtMAAAriwAAK40AACuPAAArkQAAK5MAACuUAAArlQAAK5YAACuXAAArmQAAK5sAACucAAArnQAAK58AACugAAAr3wAAK+EAACvjAAAr5QAAK+cAACvoAAAr6QAAK+oAACvrAAAr7QAAK+8AACvwAAAr8QAAK/MAACv0AAAsAQAALAIAACwDAAAsBQAALEQAACxGAAAsSAAALEoAACxMAAAsTQAALE4AACxPAAAsUAAALFIAACxUAAAsVQAALFYAACxYAAAsWQAALJgAACyaAAAsnAAALJ4AACygAAAsoQAALKIAACyjAAAspAAALKYAACyoAAAsqQAALKoAACysAAAsrQAALLkAACzGAAAs8QAALPMAACz1AAAs9wAALPkAACz7AAAs/QAALP8AAC0BAAAtAwAALQUAAC0HAAAtCQAALQsAAC0NAAAtDwAALREAAC0TAAAtFQAALRcAAC0ZAAAtRAAALUYAAC1IAAAtSgAALU0AAC1QAAAtUwAALVYAAC1ZAAAtXAAALV8AAC1iAAAtZQAALWgAAC1rAAAtbgAALXEAAC10AAAtdwAALXoAAC19AAAtfwAALYYAAC2MAAAtmgAALaMAAC2vAAAtwgAALcgAAC3SAAAt1wAALeQAAC3vAAAt+gAALf8AAC4HAAAuDwAALhkAAC4kAAAuLgAALkEAAC5OAAAumQAALrwAAC7cAAAu/AAALv4AAC8AAAAvAgAALwQAAC8GAAAvBwAALwgAAC8KAAAvCwAALw0AAC8OAAAvEAAALxIAAC8TAAAvFAAALxYAAC8XAAAvHAAALykAAC8uAAAvMAAALzIAAC83AAAvOQAALzsAAC89AAAvYgAAL4YAAC+tAAAv0QAAL9MAAC/VAAAv1wAAL9kAAC/bAAAv3QAAL94AAC/gAAAv7QAAL/4AADAAAAAwAgAAMAQAADAGAAAwCAAAMAoAADAMAAAwDgAAMB8AADAhAAAwIwAAMCUAADAnAAAwKQAAMCsAADAtAAAwLwAAMDEAADBwAAAwcgAAMHQAADB2AAAweAAAMHkAADB6AAAwewAAMHwAADB+AAAwgAAAMIEAADCCAAAwhAAAMIUAADDEAAAwxgAAMMgAADDKAAAwzAAAMM0AADDOAAAwzwAAMNAAADDSAAAw1AAAMNUAADDWAAAw2AAAMNkAADEYAAAxGgAAMRwAADEeAAAxIAAAMSEAADEiAAAxIwAAMSQAADEmAAAxKAAAMSkAADEqAAAxLAAAMS0AADE6AAAxOwAAMTwAADE+AAAxfQAAMX8AADGBAAAxgwAAMYUAADGGAAAxhwAAMYgAADGJAAAxiwAAMY0AADGOAAAxjwAAMZEAADGSAAAx0QAAMdMAADHVAAAx1wAAMdkAADHaAAAx2wAAMdwAADHdAAAx3wAAMeEAADHiAAAx4wAAMeUAADHmAAAyJQAAMicAADIpAAAyKwAAMi0AADIuAAAyLwAAMjAAADIxAAAyMwAAMjUAADI2AAAyNwAAMjkAADI6AAAyeQAAMnsAADJ9AAAyfwAAMoEAADKCAAAygwAAMoQAADKFAAAyhwAAMokAADKKAAAyiwAAMo0AADKOAAAyzQAAMs8AADLRAAAy0wAAMtUAADLWAAAy1wAAMtgAADLZAAAy2wAAMt0AADLeAAAy3wAAMuEAADLiAAAzBwAAMysAADNSAAAzdgAAM3gAADN6AAAzfAAAM34AADOAAAAzggAAM4MAADOFAAAzkgAAM6EAADOjAAAzpQAAM6cAADOpAAAzqwAAM60AADOvAAAzvgAAM8AAADPCAAAzxAAAM8YAADPIAAAzygAAM8wAADPOAAA0DQAANA8AADQRAAA0EwAANBUAADQWAAA0FwAANBgAADQZAAA0GwAANB0AADQeAAA0HwAANCEAADQiAAA0YQAANGMAADRlAAA0ZwAANGkAADRqAAA0awAANGwAADRtAAA0bwAANHEAADRyAAA0cwAANHUAADR2AAA0tQAANLcAADS5AAA0uwAANL0AADS+AAA0vwAANMAAADTBAAA0wwAANMUAADTGAAA0xwAANMkAADTKAAA1CQAANQsAADUNAAA1DwAANREAADUSAAA1EwAANRQAADUVAAA1FwAANRkAADUaAAA1GwAANR0AADUeAAA1XQAANV8AADVhAAA1YwAANWUAADVmAAA1ZwAANWgAADVpAAA1awAANW0AADVuAAA1bwAANXEAADVyAAA1sQAANbMAADW1AAA1twAANbkAADW6AAA1uwAANbwAADW9AAA1vwAANcEAADXCAAA1wwAANcUAADXGAAA2BQAANgcAADYJAAA2CwAANg0AADYOAAA2DwAANhAAADYRAAA2EwAANhUAADYWAAA2FwAANhkAADYaAAA2IwAANjYAADZDAAA2VgAANmMAADZ2AAA2jQAANp8AADbqAAA3DQAANy0AADdNAAA3TwAAN1EAADdTAAA3VQAAN1cAADdYAAA3WQAAN1sAADdcAAA3XgAAN18AADdhAAA3YwAAN2QAADdlAAA3ZwAAN2gAADdtAAA3egAAN38AADeBAAA3gwAAN4gAADeKAAA3jAAAN44AADejAAA3yAAAN+wAADgTAAA4NwAAODkAADg7AAA4PQAAOD8AADhBAAA4QwAAOEQ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AAEPEAABDxQAARAQAAEQGAABECAAARAoAAEQMAABEDQAARA4AAEQPAABEEAAARBIAAEQUAABEFQAARBYAAEQYAABEGQAARFgAAERaAABEXAAARF4AAERgAABEYQAARGIAAERjAABEZAAARGYAAERoAABEaQAARGoAAERsAABEbQAARJIAAES2AABE3QAARQEAAEUDAABFBQAARQcAAEUJAABFCwAARQ0AAEUOAABFEAAARR0AAEUsAABFLgAARTAAAEUyAABFNAAARTYAAEU4AABFOgAARUkAAEVLAABFTQAARU8AAEVRAABFVAAARVcAAEVaAABFXAAARZsAAEWdAABFnwAARaEAAEWjAABFpAAARaUAAEWmAABFpwAARakAAEWrAABFrAAARa0AAEWvAABFsAAARe8AAEXxAABF8wAARfUAAEX3AABF+AAARfkAAEX6AABF+wAARf0AAEX/AABGAAAARgEAAEYDAABGBAAARgYAAEZFAABGRwAARkkAAEZLAABGTQAARk4AAEZPAABGUAAARlEAAEZTAABGVQAARlYAAEZXAABGWQAARloAAEaZAABGmwAARp0AAEafAABGoQAARqIAAEajAABGpAAARqUAAEanAABGqQAARqoAAEarAABGrQAARq4AAEbxAABHFQAARzkAAEdcAABHgwAAR6MAAEfKAABH8QAASBEAAEg1AABIWQAASFsAAEhdAABIXwAASGEAAEhjAABIZQAASGgAAEhqAABIbAAASG8AAEhxAABIcwAASHYAAEh4AABIeQAASH4AAEiLAABIjgAASJAAAEiTAABIlQAASJcAAEi8AABI4AAASQcAAEkrAABJLQAASS8AAEkxAABJMwAASTUAAEk3AABJOAAASToAAElHAABJWgAASVwAAEleAABJYAAASWIAAElkAABJZgAASWgAAElqAABJbAAASX8AAEmBAABJgwAASYUAAEmHAABJiQAASYsAAEmNAABJjwAASZEAAEmTAABJ0gAASdQAAEnWAABJ2AAASdoAAEnbAABJ3AAASd0AAEneAABJ4AAASeIAAEnjAABJ5AAASeYAAEnnAABJ8AAASfEAAEnzAABKMgAASjQAAEo2AABKOAAASjoAAEo7AABKPAAASj0AAEo+AABKQAAASkIAAEpDAABKRAAASkYAAEpHAABKhgAASogAAEqKAABKjAAASo4AAEqPAABKkAAASpEAAEqSAABKlAAASpYAAEqXAABKmAAASpoAAEqbAABKpAAASqUAAEqnAABK5gAASugAAErqAABK7AAASu4AAErvAABK8AAASvEAAEryAABK9AAASvYAAEr3AABK+AAASvoAAEr7AABLOgAASzwAAEs+AABLQAAAS0IAAEtDAABLRAAAS0UAAEtGAABLSAAAS0oAAEtLAABLTAAAS04AAEtPAABLWAAAS1kAAEtbAABLmgAAS5wAAEueAABLoAAAS6IAAEujAABLpAAAS6UAAEumAABLqAAAS6oAAEurAABLrAAAS64AAEuvAABL7gAAS/AAAEvyAABL9AAAS/YAAEv3AABL+AAAS/kAAEv6AABL/AAAS/4AAEv/AABMAAAATAIAAEwDAABMEAAATBEAAEwSAABMFAAATFMAAExVAABMVwAATFkAAExbAABMXAAATF0AAExeAABMXwAATGEAAExjAABMZAAATGUAAExnAABMaAAATKcAAEypAABMqwAATK0AAEyvAABMsAAATLEAAEyyAABMswAATLUAAEy3AABMuAAATLkAAEy7AABMvAAATMoAAEzXAABM5gAATOgAAEzqAABM7AAATO4AAEzwAABM8gAATPQAAE0DAABNBQAATQgAAE0LAABNDgAATREAAE0UAABNFwAATRkAAE0gAABNJwAATSoAAE01AABNQAAATUwAAE2XAABNugAATdoAAE36AABN/AAATf4AAE4AAABOAgAATgQAAE4FAABOBgAATggAAE4JAABOCwAATgwAAE4OAABOEAAAThEAAE4SAABOFAAAThUAAE4aAABOJwAATiwAAE4uAABOMAAATjUAAE43AABOOQAATjsAAE5gAABOhAAATqsAAE7PAABO0QAATtMAAE7VAABO1wAATtkAAE7bAABO3AAATt4AAE7rAABO/AAATv4AAE8AAABPAgAATwQAAE8GAABPCAAATwoAAE8MAABPHQAATx8AAE8hAABPIwAATyUAAE8nAABPKQAATysAAE8tAABPLwAAT24AAE9wAABPcgAAT3QAAE92AABPdwAAT3gAAE95AABPegAAT3wAAE9+AABPfwAAT4AAAE+CAABPgwAAT8IAAE/EAABPxgAAT8gAAE/KAABPywAAT8wAAE/NAABPzgAAT9AAAE/SAABP0wAAT9QAAE/WAABP1wAAUBYAAFAYAABQGgAAUBwAAFAeAABQHwAAUCAAAFAhAABQIgAAUCQAAFAmAABQJwAAUCgAAFAqAABQKwAAUDgAAFA5AABQOgAAUDwAAFB7AABQfQAAUH8AAFCBAABQgwAAUIQAAFCFAABQhgAAUIcAAFCJAABQiwAAUIwAAFCNAABQjwAAUJAAAFDPAABQ0QAAUNMAAFDVAABQ1wAAUNgAAFDZAABQ2gAAUNsAAFDdAABQ3wAAUOAAAFDhAABQ4wAAUOQAAFEjAABRJQAAUScAAFEpAABRKwAAUSwAAFEtAABRLgAAUS8AAFExAABRMwAAUTQAAFE1AABRNwAAUTgAAFF3AABReQAAUXsAAFF9AABRfwAAUYAAAFGBAABRggAAUYMAAFGFAABRhwAAUYgAAFGJAABRiwAAUYwAAFHLAABRzQAAUc8AAFHRAABR0wAAUdQAAFHVAABR1gAAUdcAAFHZAABR2wAAUdwAAFHdAABR3wAAUeAAAFIFAABSKQAAUlAAAFJ0AABSdgAAUngAAFJ6AABSfAAAUn4AAFKAAABSgQAAUoQAAFKRAABSoAAAUqIAAFKkAABSpgAAUqgAAFKqAABSrAAAUq4AAFK9AABSwAAAUsMAAFLGAABSyQAAUswAAFLPAABS0gAAUtQAAFMTAABTFQAAUxgAAFMaAABTHAAAUx0AAFMeAABTHwAAUyAAAFMiAABTJAAAUyUAAFMmAABTKAAAUykAAFMrAABTagAAU2wAAFNuAABTcAAAU3IAAFNzAABTdAAAU3UAAFN2AABTeAAAU3oAAFN7AABTfAAAU34AAFN/AABTvgAAU8AAAFPCAABTxAAAU8YAAFPHAABTyAAAU8kAAFPKAABTzAAAU84AAFPPAABT0AAAU9IAAFPTAABUEgAAVBQAAFQXAABUGQAAVBsAAFQcAABUHQAAVB4AAFQfAABUIQAAVCMAAFQkAABUJQAAVCcAAFQoAABUKgAAVGkAAFRrAABUbQAAVG8AAFRxAABUcgAAVHMAAFR0AABUdQAAVHcAAFR5AABUegAAVHsAAFR9AABUfgAAVL0AAFS/AABUwQAAVMMAAFTFAABUxgAAVMcAAFTIAABUyQAAVMsAAFTNAABUzgAAVM8AAFTRAABU0gAAVREAAFUTAABVFQAAVRc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AAGBmAABgZwAAYGkAAGBrAABgbAAAYG0AAGBvAABgcAAAYK8AAGCxAABgswAAYLUAAGC4AABguQAAYLoAAGC7AABgvAAAYL4AAGDAAABgwQAAYMIAAGDEAABgxQAAYQQAAGEGAABhCAAAYQoAAGENAABhDgAAYQ8AAGEQAABhEQAAYRMAAGEVAABhFgAAYRcAAGEZAABhGgAAYVkAAGFbAABhXQAAYV8AAGFiAABhYwAAYWQAAGFlAABhZgAAYWgAAGFqAABhawAAYWwAAGFuAABhbwAAYa4AAGGwAABhsgAAYbQAAGG3AABhuAAAYbkAAGG6AABhuwAAYb0AAGG/AABhwAAAYcEAAGHDAABhxAAAYekAAGINAABiNAAAYlgAAGJbAABiXQAAYl8AAGJhAABiYwAAYmUAAGJmAABiaQAAYnYAAGKFAABihwAAYokAAGKLAABijQAAYo8AAGKRAABikwAAYqIAAGKlAABiqAAAYqsAAGKuAABisQAAYrQAAGK3AABiuQAAYvgAAGL6AABi/QAAYv8AAGMCAABjAwAAYwQAAGMFAABjBgAAYwgAAGMKAABjCwAAYwwAAGMOAABjDwAAY04AAGNQAABjUgAAY1QAAGNXAABjWAAAY1kAAGNaAABjWwAAY10AAGNfAABjYAAAY2EAAGNjAABjZAAAY6MAAGOlAABjpwAAY6kAAGOsAABjrQAAY64AAGOvAABjsAAAY7IAAGO0AABjtQAAY7YAAGO4AABjuQAAY/gAAGP6AABj/QAAY/8AAGQCAABkAwAAZAQAAGQFAABkBgAAZAgAAGQKAABkCwAAZAwAAGQOAABkDwAAZBEAAGRQAABkUgAAZFQAAGRWAABkWQAAZFoAAGRbAABkXAAAZF0AAGRfAABkYQAAZGIAAGRjAABkZQAAZGYAAGSlAABkpwAAZKkAAGSrAABkrgAAZK8AAGSwAABksQAAZLIAAGS0AABktgAAZLcAAGS4AABkugAAZLsAAGT6AABk/AAAZP4AAGUAAABlAwAAZQQAAGUFAABlBgAAZQcAAGUJAABlCwAAZQwAAGUNAABlDwAAZRAAAGVbAABlfgAAZZ4AAGW+AABlwAAAZcIAAGXEAABlxgAAZcgAAGXJAABlygAAZc0AAGXOAABl0AAAZdEAAGXTAABl1QAAZdYAAGXXAABl2gAAZdsAAGXgAABl7QAAZfIAAGX0AABl9gAAZfsAAGX+AABmAQAAZgMAAGYoAABmTAAAZnMAAGaXAABmmgAAZpwAAGaeAABmoAAAZqIAAGakAABmpQAAZqgAAGa1AABmxgAAZsgAAGbKAABmzAAAZs4AAGbQAABm0gAAZtQAAGbWAABm5wAAZuoAAGbtAABm8AAAZvMAAGb2AABm+QAAZvwAAGb/AABnAQAAZ0AAAGdCAABnRAAAZ0YAAGdJAABnSgAAZ0sAAGdMAABnTQAAZ08AAGdRAABnUgAAZ1MAAGdVAABnVgAAZ5UAAGeXAABnmQAAZ5sAAGeeAABnnwAAZ6AAAGehAABnogAAZ6QAAGemAABnpwAAZ6gAAGeqAABnqwAAZ+oAAGfsAABn7wAAZ/EAAGf0AABn9QAAZ/YAAGf3AABn+AAAZ/oAAGf8AABn/QAAZ/4AAGgAAABoAQAAaA4AAGgPAABoEAAAaBIAAGhRAABoUwAAaFUAAGhXAABoWgAAaFsAAGhcAABoXQAAaF4AAGhgAABoYgAAaGMAAGhkAABoZgAAaGcAAGimAABoqAAAaKoAAGisAABorwAAaLAAAGixAABosgAAaLMAAGi1AABotwAAaLgAAGi5AABouwAAaLwAAGj7AABo/QAAaP8AAGkBAABpBAAAaQUAAGkGAABpBwAAaQgAAGkKAABpDAAAaQ0AAGkOAABpEAAAaREAAGlQAABpUgAAaVQAAGlWAABpWQAAaVoAAGlbAABpXAAAaV0AAGlfAABpYQAAaWIAAGljAABpZQAAaWYAAGmlAABppwAAaakAAGmrAABprgAAaa8AAGmwAABpsQAAabIAAGm0AABptgAAabcAAGm4AABpugAAabsAAGngAABqBAAAaisAAGpPAABqUgAAalQAAGpWAABqWAAAaloAAGpcAABqXQAAamAAAGptAABqfAAAan4AAGqAAABqggAAaoQAAGqGAABqiAAAaooAAGqZAABqnAAAap8AAGqiAABqpQAAaqgAAGqrAABqrgAAarAAAGrvAABq8QAAavMAAGr1AABq+AAAavkAAGr6AABq+wAAavwAAGr+AABrAAAAawEAAGsCAABrBAAAawUAAGtEAABrRgAAa0gAAGtKAABrTQAAa04AAGtPAABrUAAAa1EAAGtTAABrVQAAa1YAAGtXAABrWQAAa1oAAGuZAABrmwAAa50AAGufAABrogAAa6MAAGukAABrpQAAa6YAAGuoAABrqgAAa6sAAGusAABrrgAAa68AAGvuAABr8AAAa/IAAGv0AABr9wAAa/gAAGv5AABr+gAAa/sAAGv9AABr/wAAbAAAAGwBAABsAwAAbAQAAGxDAABsRQAAbEcAAGxJAABsTAAAbE0AAGxOAABsTwAAbFAAAGxSAABsVAAAbFUAAGxWAABsWAAAbFkAAGyYAABsmgAAbJwAAGyeAABsoQAAbKIAAGyjAABspAAAbKUAAGynAABsqQAAbKoAAGyrAABsrQAAbK4AAGztAABs7wAAbPEAAGzzAABs9gAAbPcAAGz4AABs+QAAbPoAAGz8AABs/gAAbP8AAG0AAABtAgAAbQMAAG1OAABtcQAAbZEAAG2xAABtswAAbbUAAG23AABtuQAAbbsAAG28AABtvQAAbcAAAG3BAABtwwAAbcQAAG3GAABtyAAAbckAAG3KAABtzQAAbc4AAG3TAABt4AAAbeUAAG3nAABt6QAAbe4AAG3xAABt9AAAbfYAAG4bAABuPwAAbmYAAG6KAABujQAAbo8AAG6RAABukwAAbpUAAG6XAABumAAAbpsAAG6oAABuuQAAbrsAAG69AABuvwAAbsEAAG7DAABuxQAAbscAAG7JAABu2gAAbt0AAG7gAABu4wAAbuYAAG7pAABu7AAAbu8AAG7yAABu9AAAbzMAAG81AABvNwAAbzkAAG88AABvPQAAbz4AAG8/AABvQAAAb0IAAG9EAABvRQAAb0YAAG9IAABvSQAAb4gAAG+KAABvjAAAb44AAG+RAABvkgAAb5MAAG+UAABvlQAAb5cAAG+ZAABvmgAAb5sAAG+dAABvngAAb90AAG/fAABv4gAAb+QAAG/nAABv6AAAb+kAAG/qAABv6wAAb+0AAG/vAABv8AAAb/EAAG/zAABv9AAAcAEAAHACAABwAwAAcAUAAHBEAABwRgAAcEgAAHBKAABwTQAAcE4AAHBPAABwUAAAcFEAAHBTAABwVQAAcFYAAHBXAABwWQAAcFoAAHCZAABwmwAAcJ0AAHCfAABwogAAcKMAAHCkAABwpQAAcKYAAHCoAABwqgAAcKsAAHCsAABwrgAAcK8AAHDuAABw8AAAcPIAAHD0AABw9wAAcPgAAHD5AABw+gAAcPsAAHD9AABw/wAAcQAAAHEBAABxAwAAcQQAAHFDAABxRQAAcUcAAHFJAABxTAAAcU0AAHFOAABxTwAAcVAAAHFSAABxVAAAcVUAAHFWAABxWAAAcVkAAHGYAABxmgAAcZwAAHGeAABxoQAAcaIAAHGjAABxpAAAcaUAAHGnAABxqQAAcaoAAHGrAABxrQAAca4AAHHTAABx9wAAch4AAHJCAAByRQAAckcAAHJJAABySwAAck0AAHJPAAByUAAAclMAAHJgAABybwAAcnEAAHJzAABydQAAcncAAHJ5AAByewAAcn0AAHKMAAByjwAAcpIAAHKVAABymAAAcpsAAHKeAAByoQAAcqMAAHLiAABy5AAAcucAAHLpAABy7AAAcu0AAHLuAABy7wAAcvAAAHLyAABy9AAAcvUAAHL2AABy+AAAcvkAAHM4AABzOgAAczwAAHM+AABzQQAAc0IAAHNDAABzRAAAc0UAAHNHAABzSQAAc0oAAHNLAABzTQAAc04AAHONAABzjwAAc5EAAHOTAABzlgAAc5cAAHOYAABzmQAAc5oAAHOcAABzngAAc58AAHOgAABzogAAc6MAAHPiAABz5AAAc+cAAHPpAABz7AAAc+0AAHPuAABz7wAAc/AAAHPyAABz9AAAc/UAAHP2AABz+AAAc/kAAHQ4AAB0OgAAdDwAAHQ+AAB0QQAAdEIAAHRDAAB0RAAAdEUAAHRHAAB0SQAAdEoAAHRLAAB0TQAAdE4AAHSNAAB0jwAAdJEAAHSTAAB0lgAAdJcAAHSYAAB0mQAAdJoAAHScAAB0ngAAdJ8AAHSgAAB0ogAAdKMAAHTiAAB05AAAdOYAAHToAAB06wAAdOwAAHTtAAB07gAAdO8AAHTxAAB08wAAdPQAAHT1AAB09wAAdPgAAHVDAAB1ZgAAdYYAAHWmAAB1qAAAdaoAAHWsAAB1rgAAdbAAAHWxAAB1sgAAdbUAAHW2AAB1uAAAdbkAAHW7AAB1vQAAdb4AAHW/AAB1wgAAdcMAAHXIAAB11QAAddoAAHXcAAB13gAAdeMAAHXmAAB16QAAdesAAHYQAAB2NAAAdlsAAHZ/AAB2ggAAdoQAAHaGAAB2iAAAdooAAHaMAAB2jQAAdpAAAHadAAB2rgAAdrAAAHayAAB2tAAAdrYAAHa4AAB2ugAAdrwAAHa+AAB2zwAAdtIAAHbVAAB22AAAdtsAAHbeAAB24QAAduQAAHbnAAB26QAAdygAAHcqAAB3LAAAdy4AAHcxAAB3MgAAdzMAAHc0AAB3NQAAdzcAAHc5AAB3OgAAdzsAAHc9AAB3PgAAd30AAHd/AAB3gQAAd4MAAHeGAAB3hwAAd4gAAHeJAAB3igAAd4wAAHeOAAB3jwAAd5AAAHeSAAB3kwAAd9IAAHfUAAB31wAAd9kAAHfcAAB33QAAd94AAHffAAB34AAAd+IAAHfkAAB35QAAd+YAAHfoAAB36QAAd/YAAHf3AAB3+AAAd/oAAHg5AAB4OwAAeD0AAHg/AAB4QgAAeEMAAHhEAAB4RQAAeEYAAHhIAAB4SgAAeEsAAHhMAAB4TgAAeE8AAHiOAAB4kAAAeJIAAHiUAAB4lwAAeJgAAHiZAAB4mgAAeJsAAHidAAB4nwAAeKAAAHihAAB4owAAeKQAAHjjAAB45QAAeOcAAHjpAAB47AAAeO0AAHjuAAB47wAAePAAAHjyAAB49AAAePUAAHj2AAB4+AAAePkAAHk4AAB5OgAAeTwAAHk+AAB5QQAAeUIAAHlDAAB5RAAAeUUAAHlHAAB5SQAAeUoAAHlLAAB5TQAAeU4AAHmNAAB5jwAAeZEAAHmTAAB5lgAAeZcAAHmYAAB5mQAAeZoAAHmcAAB5ngAAeZ8AAHmgAAB5ogAAeaMAAHnIAAB57AAAehMAAHo3AAB6OgAAejwAAHo+AAB6QAAAekIAAHpEAAB6RQAAekgAAHpVAAB6ZAAAemYAAHpoAAB6agAAemwAAHpuAAB6cAAAenIAAHqBAAB6hAAAeocAAHqKAAB6jQAAepAAAHqTAAB6lgAAepgAAHrXAAB62QAAetsAAHrdAAB64AAAeuEAAHriAAB64wAAeuQAAHrmAAB66AAAeukAAHrqAAB67AAAeu0AAHssAAB7LgAAezAAAHsyAAB7NQAAezYAAHs3AAB7OAAAezkAAHs7AAB7PQAAez4AAHs/AAB7QQAAe0IAAHuBAAB7gwAAe4UAAHuHAAB7igAAe4sAAHuMAAB7jQAAe44AAHuQAAB7kgAAe5MAAHuUAAB7lgAAe5cAAHvWAAB72AAAe9sAAHvdAAB74AAAe+EAAHviAAB74wAAe+QAAHvmAAB76AAAe+kAAHvqAAB77AAAe+0AAHvwAAB8LwAAfDEAAHwzAAB8NQAAfDgAAHw5AAB8OgAAfDsAAHw8AAB8PgAAfEAAAHxBAAB8QgAAfEQAAHxFAAB8hAAAfIYAAHyIAAB8igAAfI0AAHyOAAB8jwAAfJAAAHyRAAB8kwAAfJUAAHyWAAB8lwAAfJkAAHyaAAB82QAAfNsAAHzdAAB83wAAfOIAAHzjAAB85AAAfOUAAHzmAAB86AAAfOoAAHzrAAB87AAAfO4AAHzvAAB9OgAAfV0AAH19AAB9nQAAfZ8AAH2hAAB9owAAfaUAAH2nAAB9qAAAfakAAH2sAAB9rQAAfa8AAH2wAAB9sgAAfbQAAH21AAB9tgAAfbkAAH26AAB9vwAAfcwAAH3RAAB90wAAfdUAAH3aAAB93QAAfeAAAH3iAAB+BwAAfisAAH5SAAB+dgAAfnkAAH57AAB+fQAAfn8AAH6BAAB+gwAAfoQAAH6HAAB+lAAAfqUAAH6nAAB+qQAAfqsAAH6tAAB+rwAAfrEAAH6zAAB+tQAAfsYAAH7JAAB+zAAAfs8AAH7SAAB+1QAAftgAAH7bAAB+3gAAfuAAAH8fAAB/IQAAfyMAAH8lAAB/KAAAfykAAH8qAAB/KwAAfywAAH8uAAB/MAAAfzEAAH8yAAB/NAAAfzUAAH90AAB/dgAAf3gAAH96AAB/fQAAf34AAH9/AAB/gAAAf4EAAH+DAAB/hQAAf4YAAH+HAAB/iQAAf4oAAH/JAAB/ywAAf84AAH/QAAB/0wAAf9QAAH/VAAB/1gAAf9cAAH/ZAAB/2wAAf9wAAH/dAAB/3wAAf+AAAH/tAAB/7gAAf+8AAH/xAACAMAAAgDIAAIA0AACANgAAgDkAAIA6AACAOwAAgDwAAIA9AACAPwAAgEEAAIBCAACAQwAAgEUAAIBGAACAhQAAgIcAAICJAACAiwAAgI4AAICPAACAkAAAgJEAAICSAACAlAAAgJYAAICXAACAmAAAgJoAAICbAACA2gAAgNwAAIDeAACA4AAAgOMAAIDkAACA5QAAgOYAAIDnAACA6QAAgOsAAIDsAACA7QAAgO8AAIDwAACBLwAAgTEAAIEzAACBNQAAgTgAAIE5AACBOgAAgTsAAIE8AACBPgAAgUAAAIFBAACBQgAAgUQAAIFFAACBhAAAgYYAAIGIAACBigAAgY0AAIGOAACBjwAAgZAAAIGRAACBkwAAgZUAAIGWAACBlwAAgZkAAIGaAACBvwAAgeMAAIIKAACCLgAAgjEAAIIzAACCNQAAgjcAAII5AACCOwAAgjwAAII/AACCTAAAglsAAIJdAACCXwAAgmEAAIJjAACCZQAAgmcAAIJpAACCeAAAgnsAAIJ+AACCgQAAgoQAAIKHAACCigAAgo0AAIKPAACCzgAAgtAAAILSAACC1AAAgtcAAILYAACC2QAAgtoAAILbAACC3QAAgt8AAILgAACC4QAAguMAAILkAACDIwAAgyUAAIMnAACDKQAAgywAAIMtAACDLgAAgy8AAIMwAACDMgAAgzQAAIM1AACDNgAAgzgAAIM5AACDeAAAg3oAAIN8AACDfgAAg4EAAIOCAACDgwAAg4QAAIOFAACDhwAAg4kAAIOKAACDiwAAg40AAIOOAACDzQAAg88AAIPRAACD0wAAg9YAAIPXAACD2AAAg9kAAIPaAACD3AAAg94AAIPfAACD4AAAg+IAAIPjAACEIgAAhCQAAIQmAACEKAAAhCsAAIQsAACELQAAhC4AAIQvAACEMQAAhDMAAIQ0AACENQAAhDcAAIQ4AACEdwAAhHkAAIR7AACEfQAAhIAAAISBAACEggAAhIMAAISEAACEhgAAhIgAAISJAACEigAAhIwAAISNAACEzAAAhM4AAITQAACE0gAAhNUAAITWAACE1wAAhNgAAITZAACE2wAAhN0AAITeAACE3wAAhOEAAITiAACE7QAAhPYAAIT3AACE+QAAhQIAAIUNAACFHAAAhScAAIU1AACFSgAAhV4AAIV1AACFhwAAhcYAAIXIAACFygAAhcwAAIXOAACFzwAAhdAAAIXRAACF0gAAhdQAAIXWAACF1wAAhdgAAIXaAACF2wAAhhoAAIYcAACGHgAAhiAAAIYiAACGIwAAhiQAAIYlAACGJgAAhigAAIYqAACGKwAAhiwAAIYuAACGLwAAhm4AAIZwAACGcwAAhnUAAIZ3AACGeAAAhnkAAIZ6AACGewAAhn0AAIZ/AACGgAAAhoEAAIaDAACGhAAAhs8AAIbyAACHEgAAhzIAAIc0AACHNgAAhzgAAIc6AACHPAAAhz0AAIc+AACHQQAAh0IAAIdEAACHRQAAh0cAAIdJAACHSgAAh0sAAIdOAACHTwAAh1QAAIdhAACHZgAAh2gAAIdqAACHbwAAh3IAAId1AACHdwAAh5wAAIfAAACH5wAAiAsAAIgOAACIEAAAiBIAAIgUAACIFgAAiBgAAIgZAACIHAAAiCkAAIg6AACIPAAAiD4AAIhAAACIQgAAiEQAAIhGAACISAAAiEoAAIhbAACIXgAAiGEAAIhkAACIZwAAiGoAAIhtAACIcAAAiHMAAIh1AACItAAAiLYAAIi4AACIugAAiL0AAIi+AACIvwAAiMAAAIjBAACIwwAAiMUAAIjGAACIxwAAiMkAAIjKAACJCQAAiQsAAIkNAACJDwAAiRIAAIkTAACJFAAAiRUAAIkWAACJGAAAiRoAAIkbAACJHAAAiR4AAIkfAACJXgAAiWAAAIljAACJZQAAiWgAAIlpAACJagAAiWsAAIlsAACJbgAAiXAAAIlxAACJcgAAiXQAAIl1AACJggAAiYMAAImEAACJhgAAicUAAInHAACJyQAAicsAAInOAACJzwAAidAAAInRAACJ0gAAidQAAInWAACJ1wAAidgAAInaAACJ2wAAihoAAIocAACKHgAAiiAAAIojAACKJAAAiiUAAIomAACKJwAAiikAAIorAACKLAAAii0AAIovAACKMAAAim8AAIpxAACKcwAAinUAAIp4AACKeQAAinoAAIp7AACKfAAAin4AAIqAAACKgQAAioIAAIqEAACKhQAAisQAAIrGAACKyAAAisoAAIrNAACKzgAAis8AAIrQAACK0QAAitMAAIrVAACK1gAAitcAAIrZAACK2gAAixkAAIsbAACLHQAAix8AAIsiAACLIwAAiyQAAIslAACLJgAAiygAAIsqAACLKwAAiywAAIsuAACLLwAAi1QAAIt4AACLnwAAi8MAAIvGAACLyAAAi8oAAIvMAACLzgAAi9AAAIvRAACL1AAAi+EAAIvwAACL8gAAi/QAAIv2AACL+AAAi/oAAIv8AACL/gAAjA0AAIwQAACMEwAAjBYAAIwZAACMHAAAjB8AAIwiAACMJAAAjGMAAIxlAACMaAAAjGoAAIxtAACMbgAAjG8AAIxwAACMcQAAjHMAAIx1AACMdgAAjHcAAIx5AACMegAAjH4AAIy9AACMvwAAjMEAAIzDAACMxgAAjMcAAIzIAACMyQAAjMoAAIzMAACMzgAAjM8AAIzQAACM0gAAjNMAAI0SAACNFAAAjRYAAI0YAACNGwAAjRwAAI0dAACNHgAAjR8AAI0hAACNIwAAjSQAAI0lAACNJwAAjSgAAI1nAACNaQAAjWwAAI1uAACNcQAAjXIAAI1zAACNdAAAjXUAAI13AACNeQAAjXoAAI17AACNfQAAjX4AAI2BAACNwAAAjcIAAI3EAACNxgAAjckAAI3KAACNywAAjcwAAI3NAACNzwAAjdEAAI3SAACN0wAAjdUAAI3WAACOFQAAjhcAAI4ZAACOGwAAjh4AAI4fAACOIAAAjiEAAI4iAACOJAAAjiYAAI4nAACOKAAAjioAAI4rAACOagAAjmwAAI5uAACOcAAAjnMAAI50AACOdQAAjnYAAI53AACOeQAAjnsAAI58AACOfQAAjn8AAI6AAACOywAAju4AAI8OAACPLgAAjzAAAI8yAACPNAAAjzYAAI84AACPOQAAjzoAAI89AACPPgAAj0AAAI9BAACPQwAAj0UAAI9GAACPRwAAj0oAAI9LAACPUAAAj10AAI9iAACPZAAAj2YAAI9rAACPbgAAj3EAAI9zAACPmAAAj7wAAI/jAACQBwAAkAoAAJAMAACQDgAAkBAAAJASAACQFAAAkBUAAJAYAACQJQAAkDYAAJA4AACQOgAAkDwAAJA+AACQQAAAkEIAAJBEAACQRgAAkFcAAJBaAACQXQAAkGAAAJBjAACQZgAAkGkAAJBsAACQbwAAkHEAAJCwAACQsgAAkLQAAJC2AACQuQAAkLoAAJC7AACQvAAAkL0AAJC/AACQwQAAkMIAAJDDAACQxQAAkMYAAJEFAACRBwAAkQkAAJELAACRDgAAkQ8AAJEQAACREQAAkRIAAJEUAACRFgAAkRcAAJEYAACRGgAAkRsAAJFaAACRXAAAkV8AAJFhAACRZAAAkWUAAJFmAACRZwAAkWgAAJFqAACRbAAAkW0AAJFuAACRcAAAkXEAAJF+AACRfwAAkYAAAJGCAACRwQAAkcMAAJHFAACRxwAAkcoAAJHLAACRzAAAkc0AAJHOAACR0AAAkdIAAJHTAACR1AAAkdYAAJHXAACSFgAAkhgAAJIaAACSHAAAkh8AAJIgAACSIQAAkiIAAJIjAACSJQAAkicAAJIoAACSKQAAkisAAJIsAACSawAAkm0AAJJvAACScQAAknQAAJJ1AACSdgAAkncAAJJ4AACSegAAknwAAJJ9AACSfgAAkoAAAJKBAACSwAAAksIAAJLEAACSxgAAkskAAJLKAACSywAAkswAAJLNAACSzwAAktEAAJLSAACS0wAAktUAAJLWAACTFQAAkxcAAJMZAACTGwAAkx4AAJMfAACTIAAAkyEAAJMiAACTJAAAkyYAAJMnAACTKAAAkyoAAJMrAACTUAAAk3QAAJObAACTvwAAk8IAAJPEAACTxgAAk8gAAJPKAACTzAAAk80AAJPQAACT3QAAk+wAAJPuAACT8AAAk/IAAJP0AACT9gAAk/gAAJP6AACUCQAAlAwAAJQPAACUEgAAlBUAAJQYAACUGwAAlB4AAJQgAACUXwAAlGEAAJRkAACUZgAAlGkAAJRqAACUawAAlGwAAJRtAACUbwAAlHEAAJRyAACUcwAAlHUAAJR2AACUtQAAlLcAAJS5AACUuwAAlL4AAJS/AACUwAAAlMEAAJTCAACUxAAAlMYAAJTHAACUyAAAlMoAAJTLAACVCgAAlQwAAJUOAACVEAAAlRMAAJUUAACVFQAAlRYAAJUXAACVGQAAlRsAAJUcAACVHQAAlR8AAJUgAACVXwAAlWEAAJVkAACVZgAAlWkAAJVqAACVawAAlWwAAJVtAACVbwAAlXEAAJVyAACVcwAAlXUAAJV2AACVtQAAlbcAAJW5AACVuwAAlb4AAJW/AACVwAAAlcEAAJXCAACVxAAAlcYAAJXHAACVyAAAlcoAAJXLAACWCgAAlgwAAJYOAACWEAAAlhMAAJYUAACWFQAAlhYAAJYXAACWGQAAlhsAAJYcAACWHQAAlh8AAJYgAACWXwAAlmEAAJZjAACWZQAAlmgAAJZpAACWagAAlmsAAJZsAACWbgAAlnAAAJZxAACWcgAAlnQAAJZ1AACWwAAAluMAAJcDAACXIwAAlyUAAJcnAACXKQAAlysAAJctAACXLgAAly8AAJcyAACXMwAAlzUAAJc2AACXOAAAlzoAAJc7AACXPAAAlz8AAJdAAACXRQAAl1IAAJdXAACXWQAAl1sAAJdgAACXYwAAl2YAAJdoAACXjQAAl7EAAJfYAACX/AAAl/8AAJgBAACYAwAAmAUAAJgHAACYCQAAmAoAAJgNAACYGgAAmCsAAJgtAACYLwAAmDEAAJgzAACYNQAAmDcAAJg5AACYOwAAmEwAAJhPAACYUgAAmFUAAJhYAACYWwAAmF4AAJhhAACYZAAAmGYAAJilAACYpwAAmKkAAJirAACYrgAAmK8AAJiwAACYsQAAmLIAAJi0AACYtgAAmLcAAJi4AACYugAAmLsAAJj6AACY/AAAmP4AAJkAAACZAwAAmQQAAJkFAACZBgAAmQcAAJkJAACZCwAAmQwAAJkNAACZDwAAmRAAAJlPAACZUQAAmVQAAJlWAACZWQAAmVoAAJlbAACZXAAAmV0AAJlfAACZYQAAmWIAAJljAACZZQAAmWYAAJlzAACZdAAAmXUAAJl3AACZtgAAmbgAAJm6AACZvAAAmb8AAJnAAACZwQAAmcIAAJnDAACZxQAAmccAAJnIAACZyQAAmcsAAJnMAACaCwAAmg0AAJoPAACaEQAAmhQAAJoVAACaFgAAmhcAAJoYAACaGgAAmhwAAJodAACaHgAAmiAAAJohAACaYAAAmmIAAJpkAACaZgAAmmkAAJpqAACaawAAmmwAAJptAACabwAAmnEAAJpyAACacwAAmnUAAJp2AACatQAAmrcAAJq5AACauwAAmr4AAJq/AACawAAAmsEAAJrCAACaxAAAmsYAAJrHAACayAAAmsoAAJrLAACbCgAAmwwAAJsOAACbEAAAmxMAAJsUAACbFQAAmxYAAJsXAACbGQAAmxsAAJscAACbHQAAmx8AAJsgAACbRQAAm2kAAJuQAACbtAAAm7cAAJu5AACbuwAAm70AAJu/AACbwQAAm8IAAJvFAACb0gAAm+EAAJvjAACb5QAAm+cAAJvpAACb6wAAm+0AAJvvAACb/gAAnAEAAJwEAACcBwAAnAoAAJwNAACcEAAAnBMAAJwVAACcVAAAnFYAAJxYAACcWgAAnF0AAJxeAACcXwAAnGAAAJxhAACcYwAAnGUAAJxmAACcZwAAnGkAAJxqAACcqQAAnKsAAJytAACcrwAAnLIAAJyzAACctAAAnLUAAJy2AACcuAAAnLoAAJy7AACcvAAAnL4AAJy/AACc/gAAnQAAAJ0CAACdBAAAnQcAAJ0IAACdCQAAnQoAAJ0LAACdDQAAnQ8AAJ0QAACdEQAAnRMAAJ0UAACdUwAAnVUAAJ1XAACdWQAAnVwAAJ1dAACdXgAAnV8AAJ1gAACdYgAAnWQAAJ1lAACdZgAAnWgAAJ1pAACdqAAAnaoAAJ2sAACdrgAAnbEAAJ2yAACdswAAnbQAAJ21AACdtwAAnbkAAJ26AACduwAAnb0AAJ2+AACd/QAAnf8AAJ4BAACeAwAAngYAAJ4HAACeCAAAngkAAJ4KAACeDAAAng4AAJ4PAACeEAAAnhIAAJ4TAACeUgAAnlQAAJ5WAACeWAAAnlsAAJ5cAACeXQAAnl4AAJ5fAACeYQAAnmMAAJ5kAACeZQAAnmcAAJ5oAACeswAAntYAAJ72AACfFgAAnxgAAJ8aAACfHAAAnx4AAJ8gAACfIQAAnyIAAJ8lAACfJgAAnygAAJ8pAACfKwAAny0AAJ8uAACfLwAAnzIAAJ8zAACfOAAAn0UAAJ9KAACfTAAAn04AAJ9TAACfVgAAn1kAAJ9bAACfgAAAn6QAAJ/LAACf7wAAn/IAAJ/0AACf9gAAn/gAAJ/6AACf/AAAn/0AAKAAAACgDQAAoB4AAKAgAACgIgAAoCQAAKAmAACgKAAAoCoAAKAsAACgLgAAoD8AAKBCAACgRQAAoEgAAKBLAACgTgAAoFEAAKBUAACgVwAAoFkAAKCYAACgmgAAoJwAAKCeAACgoQAAoKIAAKCjAACgpAAAoKUAAKCnAACgqQAAoKoAAKCrAACgrQAAoK4AAKDtAACg7wAAoPEAAKDzAACg9gAAoPcAAKD4AACg+QAAoPoAAKD8AACg/gAAoP8AAKEAAAChAgAAoQMAAKFCAAChRAAAoUcAAKFJAAChTAAAoU0AAKFOAAChTwAAoVAAAKFSAAChVAAAoVUAAKFWAAChWAAAoVkAAKFmAAChZwAAoWgAAKFqAAChqQAAoasAAKGtAAChrwAAobIAAKGzAAChtAAAobUAAKG2AAChuAAAoboAAKG7AAChvAAAob4AAKG/AACh/gAAogAAAKICAACiBAAAogcAAKIIAACiCQAAogoAAKILAACiDQAAog8AAKIQAACiEQAAohMAAKIUAACiUwAAolUAAKJXAACiWQAAolwAAKJdAACiXgAAol8AAKJgAACiYgAAomQAAKJlAACiZgAAomgAAKJpAACiqAAAoqoAAKKsAACirgAAorEAAKKyAACiswAAorQAAKK1AACitwAAorkAAKK6AACiuwAAor0AAKK+AACi/QAAov8AAKMBAACjAwAAowYAAKMHAACjCAAAowkAAKMKAACjDAAAow4AAKMPAACjEAAAoxIAAKMTAACjOAAAo1wAAKODAACjpwAAo6oAAKOsAACjrgAAo7AAAKOyAACjtAAAo7UAAKO4AACjxQAAo9QAAKPWAACj2AAAo9oAAKPcAACj3gAAo+AAAKPiAACj8QAAo/QAAKP3AACj+gAAo/0AAKQAAACkAwAApAYAAKQIAACkRwAApEkAAKRMAACkTgAApFEAAKRSAACkUwAApFQAAKRVAACkVwAApFkAAKRaAACkWwAApF0AAKReAACkYAAApJ8AAKShAACkowAApKUAAKSoAACkqQAApKoAAKSrAACkrAAApK4AAKSwAACksQAApLIAAKS0AACktQAApPQAAKT2AACk+AAApPoAAKT9AACk/gAApP8AAKUAAAClAQAApQMAAKUFAAClBgAApQcAAKUJAAClCgAApUkAAKVLAAClTgAApVAAAKVTAAClVAAApVUAAKVWAAClVwAApVkAAKVbAAClXAAApV0AAKVfAAClYAAApWMAAKWiAAClpAAApaYAAKWoAAClqwAApawAAKWtAAClrgAApa8AAKWxAAClswAApbQAAKW1AACltwAApbgAAKX3AACl+QAApfsAAKX9AACmAAAApgEAAKYCAACmAwAApgQAAKYGAACmCAAApgkAAKYKAACmDAAApg0AAKZMAACmTgAAplAAAKZSAACmVQAAplYAAKZXAACmWAAAplkAAKZbAACmXQAApl4AAKZfAACmYQAApmIAAKatAACm0AAApvAAAKcQAACnEgAApxQAAKcWAACnGAAApxoAAKcbAACnHAAApx8AAKcgAACnIgAApyMAAKclAACnJwAApygAAKcpAACnLAAApy0AAKc2AACnQwAAp0gAAKdKAACnTAAAp1EAAKdUAACnVwAAp1kAAKd+AACnogAAp8kAAKftAACn8AAAp/IAAKf0AACn9gAAp/gAAKf6AACn+wAAp/4AAKgLAACoHAAAqB4AAKggAACoIgAAqCQAAKgmAACoKAAAqCoAAKgsAACoPQAAqEAAAKhDAACoRgAAqEkAAKhMAACoTwAAqFIAAKhVAACoVwAAqJYAAKiYAAComgAAqJwAAKifAACooAAAqKEAAKiiAACoowAAqKUAAKinAACoqAAAqKkAAKirAACorAAAqOsAAKjtAACo7wAAqPEAAKj0AACo9QAAqPYAAKj3AACo+AAAqPoAAKj8AACo/QAAqP4AAKkAAACpAQAAqUAAAKlCAACpRQAAqUcAAKlKAACpSwAAqUwAAKlNAACpTgAAqVAAAKlSAACpUwAAqVQAAKlWAACpVwAAqWQAAKllAACpZgAAqWgAAKmnAACpqQAAqasAAKmtAACpsAAAqbEAAKmyAACpswAAqbQAAKm2AACpuAAAqbkAAKm6AACpvAAAqb0AAKn8AACp/gAAqgAAAKoCAACqBQAAqgYAAKoHAACqCAAAqgkAAKoLAACqDQAAqg4AAKoPAACqEQAAqhIAAKpRAACqUwAAqlUAAKpXAACqWgAAqlsAAKpcAACqXQAAql4AAKpgAACqYgAAqmMAAKpkAACqZgAAqmcAAKqmAACqqAAAqqoAAKqsAACqrwAAqrAAAKqxAACqsgAAqrMAAKq1AACqtwAAqrgAAKq5AACquwAAqrwAAKr7AACq/QAAqv8AAKsBAACrBAAAqwUAAKsGAACrBwAAqwgAAKsKAACrDAAAqw0AAKsOAACrEAAAqxEAAKs2AACrWgAAq4EAAKulAACrqAAAq6oAAKusAACrrgAAq7AAAKuyAACrswAAq7YAAKvDAACr0gAAq9QAAKvWAACr2AAAq9oAAKvcAACr3gAAq+AAAKvvAACr8gAAq/UAAKv4AACr+wAAq/4AAKwBAACsBAAArAYAAKxFAACsRwAArEoAAKxMAACsTwAArFAAAKxRAACsUgAArFMAAKxVAACsVwAArFgAAKxZAACsWwAArFwAAKybAACsnQAArJ8AAKyhAACspAAArKUAAKymAACspwAArKgAAKyqAACsrAAArK0AAKyuAACssAAArLEAAKzwAACs8gAArPQAAKz2AACs+QAArPoAAKz7AACs/AAArP0AAKz/AACtAQAArQIAAK0DAACtBQAArQYAAK1FAACtRwAArUoAAK1MAACtTwAArVAAAK1RAACtUgAArVMAAK1VAACtVwAArVgAAK1ZAACtWwAArVwAAK2bAACtnQAArZ8AAK2hAACtpAAAraUAAK2mAACtpwAAragAAK2qAACtrAAAra0AAK2uAACtsAAArbEAAK3wAACt8gAArfQAAK32AACt+QAArfoAAK37AACt/AAArf0AAK3/AACuAQAArgIAAK4DAACuBQAArgYAAK5FAACuRwAArkkAAK5LAACuTgAArk8AAK5QAACuUQAArlIAAK5UAACuVgAArlcAAK5YAACuWgAArlsAAK6mAACuyQAArukAAK8JAACvCwAArw0AAK8PAACvEQAArxMAAK8UAACvFQAArxgAAK8ZAACvGwAArxwAAK8eAACvIAAAryEAAK8iAACvJQAAryYAAK8rAACvOAAArz0AAK8/AACvQQAAr0YAAK9JAACvTAAAr04AAK9zAACvlwAAr74AAK/iAACv5QAAr+cAAK/pAACv6wAAr+0AAK/vAACv8AAAr/MAALAAAACwEQAAsBMAALAVAACwFwAAsBkAALAbAACwHQAAsB8AALAhAACwMgAAsDUAALA4AACwOwAAsD4AALBBAACwRAAAsEcAALBKAACwTAAAsIsAALCNAACwjwAAsJEAALCUAACwlQAAsJYAALCXAACwmAAAsJoAALCcAACwnQAAsJ4AALCgAACwoQAAsOAAALDiAACw5AAAsOYAALDpAACw6gAAsOsAALDsAACw7QAAsO8AALDxAACw8gAAsPMAALD1AACw9gAAsTUAALE3AACxOgAAsTwAALE/AACxQAAAsUEAALFCAACxQwAAsUUAALFHAACxSAAAsUkAALFLAACxTAAAsVkAALFaAACxWwAAsV0AALGcAACxngAAsaAAALGiAACxpQAAsaYAALGnAACxqAAAsakAALGrAACxrQAAsa4AALGvAACxsQAAsbIAALHxAACx8wAAsfUAALH3AACx+gAAsfsAALH8AACx/QAAsf4AALIAAACyAgAAsgMAALIEAACyBgAAsgcAALJGAACySAAAskoAALJMAACyTwAAslAAALJRAACyUgAAslMAALJVAACyVwAAslgAALJZAACyWwAAslwAALKbAACynQAAsp8AALKhAACypAAAsqUAALKmAACypwAAsqgAALKqAACyrAAAsq0AALKuAACysAAAsrEAALLwAACy8gAAsvQAALL2AACy+QAAsvoAALL7AACy/AAAsv0AALL/AACzAQAAswIAALMDAACzBQAAswYAALMrAACzTwAAs3YAALOaAACznQAAs58AALOhAACzowAAs6UAALOnAACzqAAAs6sAALO4AACzxwAAs8kAALPLAACzzQAAs88AALPRAACz0wAAs9UAALPkAACz5wAAs+oAALPtAACz8AAAs/MAALP2AACz+QAAs/sAALQ6AAC0PAAAtD4AALRAAAC0QwAAtEQAALRFAAC0RgAAtEcAALRJAAC0SwAAtEwAALRNAAC0TwAAtFAAALSPAAC0kQAAtJMAALSVAAC0mAAAtJkAALSaAAC0mwAAtJwAALSeAAC0oAAAtKEAALSiAAC0pAAAtKUAALTkAAC05gAAtOgAALTqAAC07QAAtO4AALTvAAC08AAAtPEAALTzAAC09QAAtPYAALT3AAC0+QAAtPoAALU5AAC1OwAAtT0AALU/AAC1QgAAtUMAALVEAAC1RQAAtUYAALVIAAC1SgAAtUsAALVMAAC1TgAAtU8AALWOAAC1kAAAtZIAALWUAAC1lwAAtZgAALWZAAC1mgAAtZsAALWdAAC1nwAAtaAAALWhAAC1owAAtaQAALXjAAC15QAAtecAALXpAAC17AAAte0AALXuAAC17wAAtfAAALXyAAC19AAAtfUAALX2AAC1+AAAtfkAALY4AAC2OgAAtjwAALY+AAC2QQAAtkIAALZDAAC2RAAAtkUAALZHAAC2SQAAtkoAALZLAAC2TQAAtk4AALaZAAC2vAAAttwAALb8AAC2/gAAtwAAALcCAAC3BAAAtwYAALcHAAC3CAAAtwsAALcMAAC3DgAAtw8AALcRAAC3EwAAtxQAALcVAAC3GAAAtxkAALceAAC3KwAAtzAAALcyAAC3NAAAtzkAALc8AAC3PwAAt0EAALdmAAC3igAAt7EAALfVAAC32AAAt9oAALfcAAC33gAAt+AAALfiAAC34wAAt+YAALfzAAC4BAAAuAYAALgIAAC4CgAAuAwAALgOAAC4EAAAuBIAALgUAAC4JQAAuCgAALgrAAC4LgAAuDEAALg0AAC4NwAAuDoAALg9AAC4PwAAuH4AALiAAAC4ggAAuIQAALiHAAC4iAAAuIkAALiKAAC4iwAAuI0AALiPAAC4kAAAuJEAALiTAAC4lAAAuNMAALjVAAC41wAAuNkAALjcAAC43QAAuN4AALjfAAC44AAAuOIAALjkAAC45QAAuOYAALjoAAC46QAAuSgAALkqAAC5LQAAuS8AALkyAAC5MwAAuTQAALk1AAC5NgAAuTgAALk6AAC5OwAAuTwAALk+AAC5PwAAuUwAALlNAAC5TgAAuVAAALmPAAC5kQAAuZMAALmVAAC5mAAAuZkAALmaAAC5mwAAuZwAALmeAAC5oAAAuaEAALmiAAC5pAAAuaUAALnkAAC55gAAuegAALnqAAC57QAAue4AALnvAAC58AAAufEAALnzAAC59QAAufYAALn3AAC5+QAAufoAALo5AAC6OwAAuj0AALo/AAC6QgAAukMAALpEAAC6RQAAukYAALpIAAC6SgAAuksAALpMAAC6TgAAuk8AALqOAAC6kAAAupIAALqUAAC6lwAAupgAALqZAAC6mgAAupsAALqdAAC6nwAAuqAAALqhAAC6owAAuqQAALrjAAC65QAAuucAALrpAAC67AAAuu0AALruAAC67wAAuvAAALryAAC69AAAuvUAALr2AAC6+AAAuvkAALseAAC7QgAAu2kAALuNAAC7kAAAu5IAALuUAAC7lgAAu5gAALuaAAC7mwAAu54AALurAAC7ugAAu7wAALu+AAC7wAAAu8IAALvEAAC7xgAAu8gAALvXAAC72gAAu90AALvgAAC74wAAu+YAALvpAAC77AAAu+4AALwtAAC8LwAAvDEAALwzAAC8NgAAvDcAALw4AAC8OQAAvDoAALw8AAC8PgAAvD8AALxAAAC8QgAAvEMAALyCAAC8hAAAvIYAALyIAAC8iwAAvIwAALyNAAC8jgAAvI8AALyRAAC8kwAAvJQAALyVAAC8lwAAvJgAALzXAAC82QAAvNsAALzdAAC84AAAvOEAALziAAC84wAAvOQAALzmAAC86AAAvOkAALzqAAC87AAAvO0AAL0sAAC9LgAAvTEAAL0zAAC9NgAAvTcAAL04AAC9OQAAvToAAL08AAC9PgAAvT8AAL1AAAC9QgAAvUMAAL1GAAC9hQAAvYcAAL2JAAC9iwAAvY4AAL2PAAC9kAAAvZEAAL2SAAC9lAAAvZYAAL2XAAC9mAAAvZoAAL2bAAC92gAAvdwAAL3eAAC94AAAveMAAL3kAAC95QAAveYAAL3nAAC96QAAvesAAL3sAAC97QAAve8AAL3wAAC+LwAAvjEAAL4zAAC+NQAAvjgAAL45AAC+OgAAvjsAAL48AAC+PgAAvkAAAL5BAAC+QgAAvkQAAL5FAAC+kAAAvrMAAL7TAAC+8wAAvvUAAL73AAC++QAAvvsAAL79AAC+/gAAvv8AAL8CAAC/AwAAvwUAAL8GAAC/CAAAvwoAAL8LAAC/DAAAvw8AAL8QAAC/FQAAvyIAAL8nAAC/KQAAvysAAL8wAAC/MwAAvzYAAL84AAC/XQAAv4EAAL+oAAC/zAAAv88AAL/RAAC/0wAAv9UAAL/XAAC/2QAAv9oAAL/dAAC/6gAAv/sAAL/9AAC//wAAwAEAAMADAADABQAAwAcAAMAJAADACwAAwBwAAMAfAADAIgAAwCUAAMAoAADAKwAAwC4AAMAxAADANAAAwDYAAMB1AADAdwAAwHkAAMB7AADAfgAAwH8AAMCAAADAgQAAwIIAAMCEAADAhgAAwIcAAMCIAADAigAAwIsAAMDKAADAzAAAwM4AAMDQAADA0wAAwNQAAMDVAADA1gAAwNcAAMDZAADA2wAAwNwAAMDdAADA3wAAwOAAAMEfAADBIQAAwSQAAMEmAADBKQAAwSoAAMErAADBLAAAwS0AAMEvAADBMQAAwTIAAMEzAADBNQAAwTYAAMFDAADBRAAAwUUAAMFHAADBhgAAwYgAAMGKAADBjAAAwY8AAMGQAADBkQAAwZIAAMGTAADBlQAAwZcAAMGYAADBmQAAwZsAAMGcAADB2wAAwd0AAMHfAADB4QAAweQAAMHlAADB5gAAwecAAMHoAADB6gAAwewAAMHtAADB7gAAwfAAAMHxAADCMAAAwjIAAMI0AADCNgAAwjkAAMI6AADCOwAAwjwAAMI9AADCPwAAwkEAAMJCAADCQwAAwkUAAMJGAADChQAAwocAAMKJAADCiwAAwo4AAMKPAADCkAAAwpEAAMKSAADClAAAwpYAAMKXAADCmAAAwpoAAMKbAADC2gAAwtwAAMLeAADC4AAAwuMAAMLkAADC5QAAwuYAAMLnAADC6QAAwusAAMLsAADC7QAAwu8AAMLwAADDFQAAwzkAAMNgAADDhAAAw4cAAMOJAADDiwAAw40AAMOPAADDkQAAw5IAAMOVAADDogAAw7EAAMOzAADDtQAAw7cAAMO5AADDuwAAw70AAMO/AADDzgAAw9EAAMPUAADD1wAAw9oAAMPdAADD4AAAw+MAAMPlAADEJAAAxCYAAMQoAADEKgAAxC0AAMQuAADELwAAxDAAAMQxAADEMwAAxDUAAMQ2AADENwAAxDkAAMQ6AADEeQAAxHsAAMR9AADEfwAAxIIAAMSDAADEhAAAxIUAAMSGAADEiAAAxIoAAMSLAADEjAAAxI4AAMSPAADEzgAAxNAAAMTSAADE1AAAxNcAAMTYAADE2QAAxNoAAMTbAADE3QAAxN8AAMTgAADE4QAAxOMAAMTkAADFIwAAxSUAAMUoAADFKgAAxS0AAMUuAADFLwAAxTAAAMUxAADFMwAAxTUAAMU2AADFNwAAxTkAAMU6AADFfQAAxaEAAMXFAADF6AAAxg8AAMYvAADGVgAAxn0AAMadAADGwQAAxuUAAMbnAADG6gAAxuwAAMbuAADG8AAAxvMAAMb2AADG+AAAxvoAAMb9AADG/wAAxwEAAMcEAADHBwAAxwgAAMcNAADHGgAAxx0AAMcfAADHIgAAxyUAAMcnAADHTAAAx3AAAMeXAADHuwAAx74AAMfAAADHwgAAx8QAAMfGAADHyAAAx8kAAMfMAADH2QAAx+wAAMfuAADH8AAAx/IAAMf0AADH9gAAx/gAAMf6AADH/AAAx/4AAMgRAADIFAAAyBcAAMgaAADIHQAAyCAAAMgjAADIJgAAyCkAAMgsAADILgAAyG0AAMhvAADIcgAAyHQAAMh3AADIeAAAyHkAAMh6AADIewAAyH0AAMh/AADIgAAAyIEAAMiDAADIhAAAyI0AAMiOAADIkAAAyM8AAMjRAADI0wAAyNUAAMjYAADI2QAAyNoAAMjbAADI3AAAyN4AAMjgAADI4QAAyOIAAMjkAADI5QAAySQAAMkmAADJKQAAySsAAMkuAADJLwAAyTAAAMkxAADJMgAAyTQAAMk2AADJNwAAyTgAAMk6AADJOwAAyUQAAMlFAADJRwAAyYYAAMmIAADJigAAyYwAAMmPAADJkAAAyZEAAMmSAADJkwAAyZUAAMmXAADJmAAAyZkAAMmbAADJnAAAydsAAMndAADJ4AAAyeIAAMnlAADJ5gAAyecAAMnoAADJ6QAAyesAAMntAADJ7gAAye8AAMnxAADJ8gAAyfsAAMn8AADJ/gAAyj0AAMo/AADKQQAAykMAAMpGAADKRwAAykgAAMpJAADKSgAAykwAAMpOAADKTwAAylAAAMpSAADKUwAAypIAAMqUAADKlwAAypkAAMqcAADKnQAAyp4AAMqfAADKoAAAyqIAAMqkAADKpQAAyqYAAMqoAADKqQAAyrYAAMq3AADKuAAAyroAAMr5AADK+wAAyv0AAMr/AADLAgAAywMAAMsEAADLBQAAywYAAMsIAADLCgAAywsAAMsMAADLDgAAyw8AAMtOAADLUAAAy1IAAMtUAADLVwAAy1gAAMtZAADLWgAAy1sAAMtdAADLXwAAy2AAAMthAADLYwAAy2QAAMtxAADLegAAy30AAMt/AADLggAAy4UAAMuOAADLkQAAy5QAAMuXAADLmgAAy5wAAMurAADLvQAAy8oAAMwVAADMOAAAzFgAAMx4AADMegAAzHwAAMx+AADMgAAAzIMAAMyEAADMhQAAzIgAAMyJAADMiwAAzIwAAMyOAADMkQAAzJIAAMyTAADMlgAAzJcAAMycAADMqQAAzK4AAMywAADMsgAAzLcAAMy6AADMvQAAzL8AAMzkAADNCAAAzS8AAM1TAADNVgAAzVgAAM1aAADNXAAAzV4AAM1gAADNYQAAzWQAAM1xAADNggAAzYQAAM2GAADNiAAAzYoAAM2MAADNjgAAzZAAAM2SAADNowAAzaYAAM2pAADNrAAAza8AAM2yAADNtQAAzbgAAM27AADNvQAAzfwAAM3+AADOAAAAzgIAAM4FAADOBgAAzgcAAM4IAADOCQAAzgsAAM4NAADODgAAzg8AAM4RAADOEgAAzlEAAM5TAADOVQAAzlcAAM5aAADOWwAAzlwAAM5dAADOXgAAzmAAAM5iAADOYwAAzmQAAM5mAADOZwAAzqYAAM6oAADOqwAAzq0AAM6wAADOsQAAzrIAAM6zAADOtAAAzrYAAM64AADOuQAAzroAAM68AADOvQAAzsoAAM7LAADOzAAAzs4AAM8NAADPDwAAzxEAAM8TAADPFgAAzxcAAM8YAADPGQAAzxoAAM8cAADPHgAAzx8AAM8gAADPIgAAzyMAAM9iAADPZAAAz2YAAM9oAADPawAAz2wAAM9tAADPbgAAz28AAM9xAADPcwAAz3QAAM91AADPdwAAz3gAAM+3AADPuQAAz7sAAM+9AADPwAAAz8EAAM/CAADPwwAAz8QAAM/GAADPyAAAz8kAAM/KAADPzAAAz80AANAMAADQDgAA0BAAANASAADQFQAA0BYAANAXAADQGAAA0BkAANAbAADQHQAA0B4AANAfAADQIQAA0CIAANBhAADQYwAA0GUAANBnAADQagAA0GsAANBsAADQbQAA0G4AANBwAADQcgAA0HMAANB0AADQdgAA0HcAANCcAADQwAAA0OcAANELAADRDgAA0RAAANESAADRFAAA0RYAANEYAADRGQAA0RwAANEpAADROAAA0ToAANE8AADRPgAA0UAAANFCAADRRAAA0UYAANFVAADRWAAA0VsAANFeAADRYQAA0WQAANFnAADRagAA0WwAANGrAADRrQAA0a8AANGxAADRtAAA0bUAANG2AADRtwAA0bgAANG6AADRvAAA0b0AANG+AADRwAAA0cEAANIAAADSAgAA0gQAANIGAADSCQAA0goAANILAADSDAAA0g0AANIPAADSEQAA0hIAANITAADSFQAA0hYAANJVAADSVwAA0lkAANJbAADSXgAA0l8AANJgAADSYQAA0mIAANJkAADSZgAA0mcAANJoAADSagAA0msAANKqAADSrAAA0q4AANKwAADSswAA0rQAANK1AADStgAA0rcAANK5AADSuwAA0rwAANK9AADSvwAA0sAAANL/AADTAQAA0wMAANMFAADTCAAA0wkAANMKAADTCwAA0wwAANMOAADTEAAA0xEAANMSAADTFAAA0xUAANNUAADTVgAA01gAANNaAADTXQAA014AANNfAADTYAAA02EAANNjAADTZQAA02YAANNnAADTaQAA02oAANOpAADTqwAA064AANOwAADTswAA07QAANO1AADTtgAA07cAANO5AADTuwAA07wAANO9AADTvwAA08AAANQLAADULgAA1E4AANRuAADUcAAA1HIAANR0AADUdgAA1HkAANR6AADUewAA1H4AANR/AADUgQAA1IIAANSEAADUhgAA1IcAANSIAADUiwAA1IwAANSRAADUngAA1KMAANSlAADUpwAA1KwAANSvAADUsgAA1LQAANTZAADU/QAA1SQAANVIAADVSwAA1U0AANVPAADVUQAA1VMAANVVAADVVgAA1VkAANVmAADVdwAA1XkAANV7AADVfQAA1X8AANWBAADVgwAA1YUAANWHAADVmAAA1ZsAANWeAADVoQAA1aQAANWnAADVqgAA1a0AANWwAADVsgAA1fEAANXzAADV9QAA1fcAANX6AADV+wAA1fwAANX9AADV/gAA1gAAANYCAADWAwAA1gQAANYGAADWBwAA1kYAANZIAADWSgAA1kwAANZPAADWUAAA1lEAANZSAADWUwAA1lUAANZXAADWWAAA1lkAANZbAADWXAAA1psAANadAADWoAAA1qIAANalAADWpgAA1qcAANaoAADWqQAA1qsAANatAADWrgAA1q8AANaxAADWsgAA1r8AANbAAADWwQAA1sMAANcCAADXBAAA1wYAANcIAADXCwAA1wwAANcNAADXDgAA1w8AANcRAADXEwAA1xQAANcVAADXFwAA1xgAANdXAADXWQAA11sAANddAADXYAAA12EAANdiAADXYwAA12QAANdmAADXaAAA12kAANdqAADXbAAA120AANesAADXrgAA17AAANeyAADXtQAA17YAANe3AADXuAAA17kAANe7AADXvQAA174AANe/AADXwQAA18IAANgBAADYAwAA2AUAANgHAADYCgAA2AsAANgMAADYDQAA2A4AANgQAADYEgAA2BMAANgUAADYFgAA2BcAANhWAADYWAAA2FoAANhcAADYXwAA2GAAANhhAADYYgAA2GMAANhlAADYZwAA2GgAANhpAADYawAA2GwAANiRAADYtQAA2NwAANkAAADZAwAA2QUAANkHAADZCQAA2QsAANkNAADZDgAA2REAANkeAADZLQAA2S8AANkxAADZMwAA2TUAANk3AADZOQAA2TsAANlKAADZTQAA2VAAANlTAADZVgAA2VkAANlcAADZXwAA2WEAANmgAADZogAA2aQAANmmAADZqQAA2aoAANmrAADZrAAA2a0AANmvAADZsQAA2bIAANmzAADZtQAA2bYAANn1AADZ9wAA2fkAANn7AADZ/gAA2f8AANoAAADaAQAA2gIAANoEAADaBgAA2gcAANoIAADaCgAA2gsAANpKAADaTAAA2k4AANpQAADaUwAA2lQAANpVAADaVgAA2lcAANpZAADaWwAA2lwAANpdAADaXwAA2mAAANqfAADaoQAA2qMAANqlAADaqAAA2qkAANqqAADaqwAA2qwAANquAADasAAA2rEAANqyAADatAAA2rUAANr0AADa9gAA2vgAANr6AADa/QAA2v4AANr/AADbAAAA2wEAANsDAADbBQAA2wYAANsHAADbCQAA2woAANtJAADbSwAA200AANtPAADbUgAA21MAANtUAADbVQAA21YAANtYAADbWgAA21sAANtcAADbXgAA218AANueAADboAAA26MAANulAADbqAAA26kAANuqAADbqwAA26wAANuuAADbsAAA27EAANuyAADbtAAA27UAANwAAADcIwAA3EMAANxjAADcZQAA3GcAANxpAADcawAA3G0AANxuAADcbwAA3HIAANxzAADcdQAA3HYAANx4AADcegAA3HsAANx8AADcfwAA3IAAANyFAADckgAA3JcAANyZAADcmwAA3KAAANyjAADcpgAA3KgAANzNAADc8QAA3RgAAN08AADdPwAA3UEAAN1DAADdRQAA3UcAAN1JAADdSgAA3U0AAN1aAADdawAA3W0AAN1vAADdcQAA3XMAAN11AADddwAA3XkAAN17AADdjAAA3Y8AAN2SAADdlQAA3ZgAAN2bAADdngAA3aEAAN2kAADdpgAA3eUAAN3nAADd6QAA3esAAN3uAADd7wAA3fAAAN3xAADd8gAA3fQAAN32AADd9wAA3fgAAN36AADd+wAA3joAAN48AADePgAA3kAAAN5DAADeRAAA3kUAAN5GAADeRwAA3kkAAN5LAADeTAAA3k0AAN5PAADeUAAA3o8AAN6RAADelAAA3pYAAN6ZAADemgAA3psAAN6cAADenQAA3p8AAN6hAADeogAA3qMAAN6lAADepgAA3rMAAN60AADetQAA3rcAAN72AADe+AAA3voAAN78AADe/wAA3wAAAN8BAADfAgAA3wMAAN8FAADfBwAA3wgAAN8JAADfCwAA3wwAAN9LAADfTQAA308AAN9RAADfVAAA31UAAN9WAADfVwAA31gAAN9aAADfXAAA310AAN9eAADfYAAA32EAAN+gAADfogAA36QAAN+mAADfqQAA36oAAN+rAADfrAAA360AAN+vAADfsQAA37IAAN+zAADftQAA37YAAN/1AADf9wAA3/kAAN/7AADf/gAA3/8AAOAAAADgAQAA4AIAAOAEAADgBgAA4AcAAOAIAADgCgAA4AsAAOBKAADgTAAA4E4AAOBQAADgUwAA4FQAAOBVAADgVgAA4FcAAOBZAADgWwAA4FwAAOBdAADgXwAA4GAAAOCFAADgqQAA4NAAAOD0AADg9wAA4PkAAOD7AADg/QAA4P8AAOEBAADhAgAA4QUAAOESAADhIQAA4SMAAOElAADhJwAA4SkAAOErAADhLQAA4S8AAOE+AADhQQAA4UQAAOFHAADhSgAA4U0AAOFQAADhUwAA4VUAAOGUAADhlgAA4ZgAAOGaAADhnQAA4Z4AAOGfAADhoAAA4aEAAOGjAADhpQAA4aYAAOGnAADhqQAA4aoAAOHpAADh6wAA4e0AAOHvAADh8gAA4fMAAOH0AADh9QAA4fYAAOH4AADh+gAA4fsAAOH8AADh/gAA4f8AAOI+AADiQAAA4kIAAOJEAADiRwAA4kgAAOJJAADiSgAA4ksAAOJNAADiTwAA4lAAAOJRAADiUwAA4lQAAOKTAADilQAA4pgAAOKaAADinQAA4p4AAOKfAADioAAA4qEAAOKjAADipQAA4qYAAOKnAADiqQAA4qoAAOLpAADi6wAA4u0AAOLvAADi8gAA4vMAAOL0AADi9QAA4vYAAOL4AADi+gAA4vsAAOL8AADi/gAA4v8AAOM+AADjQAAA40IAAONEAADjRwAA40gAAONJAADjSgAA40sAAONNAADjTwAA41AAAONRAADjUwAA41QAAOOTAADjlQAA45gAAOOaAADjnQAA454AAOOfAADjoAAA46EAAOOjAADjpQAA46YAAOOnAADjqQAA46oAAOP1AADkGAAA5DgAAORYAADkWgAA5FwAAOReAADkYAAA5GMAAORkAADkZQAA5GgAAORpAADkawAA5GwAAORuAADkcQAA5HIAAORzAADkdgAA5HcAAOR8AADkiQAA5I4AAOSQAADkkgAA5JcAAOSaAADknQAA5J8AAOTEAADk6AAA5Q8AAOUzAADlNgAA5TgAAOU6AADlPAAA5T4AAOVAAADlQQAA5UQAAOVRAADlYgAA5WQAAOVmAADlaAAA5WoAAOVsAADlbgAA5XAAAOVyAADlgwAA5YYAAOWJAADljAAA5Y8AAOWSAADllQAA5ZgAAOWbAADlnQAA5dwAAOXeAADl4AAA5eIAAOXlAADl5gAA5ecAAOXoAADl6QAA5esAAOXtAADl7gAA5e8AAOXxAADl8gAA5jEAAOYzAADmNQAA5jcAAOY6AADmOwAA5jwAAOY9AADmPgAA5kAAAOZCAADmQwAA5kQAAOZGAADmRwAA5oYAAOaIAADmiwAA5o0AAOaQAADmkQAA5pIAAOaTAADmlAAA5pYAAOaYAADmmQAA5poAAOacAADmnQAA5qoAAOarAADmrAAA5q4AAObtAADm7wAA5vEAAObzAADm9gAA5vcAAOb4AADm+QAA5voAAOb8AADm/gAA5v8AAOcAAADnAgAA5wMAAOdCAADnRAAA50YAAOdIAADnSwAA50w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AAQAiAAEAJAABACUAAQAmAAEAKAABACkAAQBoAAEAagABAGwAAQBuAAEAcQABAHIAAQBzAAEAdAABAHUAAQB3AAEAeQABAHoAAQB7AAEAfQABAH4AAQC9AAEAvwABAMEAAQDDAAEAxgABAMcAAQDIAAEAyQABAMoAAQDMAAEAzgABAM8AAQDQAAEA0gABANMAAQESAAEBFAABARYAAQEYAAEBGwABARwAAQEdAAEBHgABAR8AAQEhAAEBIwABASQAAQElAAEBJwABASgAAQFNAAEBcQABAZgAAQG8AAEBvwABAcEAAQHDAAEBxQABAccAAQHJAAEBygABAc0AAQHaAAEB6QABAesAAQHtAAEB7wABAfEAAQHzAAEB9QABAfcAAQIGAAECCQABAgwAAQIPAAECEgABAhUAAQIYAAECGwABAh0AAQJcAAECXgABAmAAAQJiAAECZQABAmYAAQJnAAECaAABAmkAAQJrAAECbQABAm4AAQJvAAECcQABAnIAAQKxAAECswABArUAAQK3AAECugABArsAAQK8AAECvQABAr4AAQLAAAECwgABAsMAAQLEAAECxgABAscAAQMGAAEDCAABAwoAAQMMAAEDDwABAxAAAQMRAAEDEgABAxMAAQMVAAEDFwABAxgAAQMZAAEDGwABAxwAAQNbAAEDXQABA18AAQNhAAEDZAABA2UAAQNmAAEDZwABA2gAAQNqAAEDbAABA20AAQNuAAEDcAABA3EAAQOwAAEDsgABA7QAAQO2AAEDuQABA7oAAQO7AAEDvAABA70AAQO/AAEDwQABA8IAAQPDAAEDxQABA8YAAQQFAAEEBwABBAkAAQQLAAEEDgABBA8AAQQQAAEEEQABBBIAAQQUAAEEFgABBBcAAQQYAAEEGgABBBsAAQRaAAEEXAABBF4AAQRgAAEEYwABBGQAAQRlAAEEZgABBGcAAQRpAAEEawABBGwAAQRtAAEEbwABBHAAAQS7AAEE3gABBP4AAQUeAAEFIAABBSIAAQUkAAEFJgABBSkAAQUqAAEFKwABBS4AAQUvAAEFMQABBTIAAQU0AAEFNwABBTgAAQU5AAEFPAABBT0AAQVGAAEFUwABBVgAAQVaAAEFXAABBWEAAQVkAAEFZwABBWkAAQWOAAEFsgABBdkAAQX9AAEGAAABBgIAAQYEAAEGBgABBgg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AARC/AAEQwQABEMIAARDYAAERFwABERkAAREbAAERHQABESAAAREhAAERIgABESMAAREkAAERJgABESgAAREpAAERKgABESwAAREtAAERUgABEXYAARGdAAERwQABEcQAARHGAAERyAABEcoAARHMAAERzgABEc8AARHSAAER3wABEe4AARHwAAER8gABEfQAARH2AAER+AABEfoAARH8AAESCwABEg4AARIRAAESFAABEhcAARIaAAESHQABEiAAARIiAAESYQABEmMAARJlAAESZwABEmoAARJrAAESbAABEm0AARJuAAEScAABEnIAARJzAAESdAABEnYAARJ3AAEStgABErgAARK6AAESvAABEr8AARLAAAESwQABEsIAARLDAAESxQABEscAARLIAAESyQABEssAARLMAAETCwABEw0AARMPAAETEQABExQAARMVAAETFgABExcAARMYAAETGgABExwAARMdAAETHgABEyAAARMhAAETYAABE2IAARNkAAETZgABE2kAARNqAAETawABE2wAARNtAAETbwABE3EAARNyAAETcwABE3UAARN2AAETtQABE7cAARO5AAETuwABE74AARO/AAETwAABE8EAARPCAAETxAABE8YAARPHAAETyAABE8oAARPLAAEUCgABFAwAARQOAAEUEAABFBMAARQUAAEUFQABFBYAARQXAAEUGQABFBsAARQcAAEUHQABFB8AARQgAAEUXwABFGEAARRjAAEUZQABFGgAARRpAAEUagABFGsAARRsAAEUbgABFHAAARRxAAEUcgABFHQAARR1AAEUwAABFOMAARUDAAEVIwABFSUAARUnAAEVKQABFSsAARUuAAEVLwABFTAAARUzAAEVNAABFTYAARU3AAEVOQABFTwAARU9AAEVPgABFUEAARVCAAEVSwABFVgAARVdAAEVXwABFWEAARVmAAEVaQABFWwAARVuAAEVkwABFbcAARXeAAEWAgABFgUAARYHAAEWCQABFgsAARYNAAEWDwABFhAAARYTAAEWIAABFjEAARYzAAEWNQABFjcAARY5AAEWOwABFj0AARY/AAEWQQABFlIAARZVAAEWWAABFlsAARZeAAEWYQABFmQAARZnAAEWagABFmwAARarAAEWrQABFq8AARaxAAEWtAABFrUAARa2AAEWtwABFrgAARa6AAEWvAABFr0AARa+AAEWwAABFsEAARcAAAEXAgABFwQAARcGAAEXCQABFwoAARcLAAEXDAABFw0AARcPAAEXEQABFxIAARcTAAEXFQABFxYAARdVAAEXVwABF1oAARdcAAEXXwABF2AAARdhAAEXYgABF2MAARdlAAEXZwABF2gAARdpAAEXawABF2wAARd5AAEXegABF3sAARd9AAEXvAABF74AARfAAAEXwgABF8UAARfGAAEXxwABF8gAARfJAAEXywABF80AARfOAAEXzwABF9EAARfSAAEYEQABGBMAARgVAAEYFwABGBoAARgbAAEYHAABGB0AARgeAAEYIAABGCIAARgjAAEYJAABGCYAARgnAAEYZgABGGgAARhqAAEYbAABGG8AARhwAAEYcQABGHIAARhzAAEYdQABGHcAARh4AAEYeQABGHsAARh8AAEYuwABGL0AARi/AAEYwQABGMQAARjFAAEYxgABGMcAARjIAAEYygABGMwAARjNAAEYzgABGNAAARjRAAEZEAABGRIAARkUAAEZFgABGRkAARkaAAEZGwABGRwAARkdAAEZHwABGSEAARkiAAEZIwABGSUAARkmAAEZSwABGW8AARmWAAEZugABGb0AARm/AAEZwQABGcMAARnFAAEZxwABGcgAARnLAAEZ2AABGecAARnpAAEZ6wABGe0AARnvAAEZ8QABGfMAARn1AAEaBAABGgcAARoKAAEaDQABGhAAARoTAAEaFgABGhkAARobAAEaWgABGlwAARpeAAEaYAABGmMAARpkAAEaZQABGmYAARpnAAEaaQABGmsAARpsAAEabQABGm8AARpwAAEarwABGrEAARqzAAEatQABGrgAARq5AAEaugABGrsAARq8AAEavgABGsAAARrBAAEawgABGsQAARrFAAEbBAABGwYAARsIAAEbCgABGw0AARsOAAEbDwABGxAAARsRAAEbEwABGxUAARsWAAEbFwABGxkAARsaAAEbWQABG1sAARtdAAEbXwABG2IAARtjAAEbZAABG2UAARtmAAEbaAABG2oAARtrAAEbbAABG24AARtvAAEbrgABG7AAARuyAAEbtAABG7cAARu4AAEbuQABG7oAARu7AAEbvQABG78AARvAAAEbwQABG8MAARvEAAEcAwABHAUAARwHAAEcCQABHAwAARwNAAEcDgABHA8AARwQAAEcEgABHBQAARwVAAEcFgABHBgAARwZAAEcWAABHFoAARxcAAEcXgABHGEAARxiAAEcYwABHGQAARxlAAEcZwABHGkAARxqAAEcawABHG0AARxuAAEcuQABHNwAARz8AAEdHAABHR4AAR0gAAEdIgABHSQAAR0nAAEdKAABHSkAAR0sAAEdLQABHS8AAR0wAAEdMgABHTUAAR02AAEdNwABHToAAR07AAEdQAABHU0AAR1SAAEdVAABHVYAAR1bAAEdXgABHWEAAR1jAAEdiAABHawAAR3TAAEd9wABHfoAAR38AAEd/gABHgAAAR4CAAEeBAABHgUAAR4IAAEeFQABHiYAAR4oAAEeKgABHiwAAR4uAAEeMAABHjIAAR40AAEeNgABHkcAAR5KAAEeTQABHlAAAR5TAAEeVgABHlkAAR5cAAEeXwABHmEAAR6gAAEeogABHqQAAR6mAAEeqQABHqoAAR6rAAEerAABHq0AAR6vAAEesQABHrIAAR6zAAEetQABHrYAAR71AAEe9wABHvkAAR77AAEe/gABHv8AAR8AAAEfAQABHwIAAR8EAAEfBgABHwcAAR8IAAEfCgABHwsAAR9KAAEfTAABH08AAR9RAAEfVAABH1UAAR9WAAEfVwABH1gAAR9aAAEfXAABH10AAR9eAAEfYAABH2EAAR9uAAEfbwABH3AAAR9yAAEfsQABH7MAAR+1AAEftwABH7oAAR+7AAEfvAABH70AAR++AAEfwAABH8IAAR/DAAEfxAABH8YAAR/HAAEgBgABIAgAASAKAAEgDAABIA8AASAQAAEgEQABIBIAASATAAEgFQABIBcAASAYAAEgGQABIBsAASAcAAEgWwABIF0AASBfAAEgYQABIGQAASBlAAEgZgABIGcAASBoAAEgagABIGwAASBtAAEgbgABIHAAASBxAAEgsAABILIAASC0AAEgtgABILkAASC6AAEguwABILwAASC9AAEgvwABIMEAASDCAAEgwwABIMUAASDGAAEhBQABIQcAASEJAAEhCwABIQ4AASEPAAEhEAABIREAASESAAEhFAABIRYAASEXAAEhGAABIRoAASEbAAEhQAABIWQAASGLAAEhrwABIbIAASG0AAEhtgABIbgAASG6AAEhvAABIb0AASHAAAEhzQABIdwAASHeAAEh4AABIeIAASHkAAEh5gABIegAASHqAAEh+QABIfwAASH/AAEiAgABIgUAASIIAAEiCwABIg4AASIQAAEiTwABIlEAASJTAAEiVQABIlgAASJZAAEiWgABIlsAASJcAAEiXgABImAAASJhAAEiYgABImQAASJlAAEipAABIqYAASKoAAEiqgABIq0AASKuAAEirwABIrAAASKxAAEiswABIrUAASK2AAEitwABIrkAASK6AAEi+QABIvsAASL9AAEi/wABIwIAASMDAAEjBAABIwUAASMGAAEjCAABIwoAASMLAAEjDAABIw4AASMPAAEjTgABI1AAASNSAAEjVAABI1cAASNYAAEjWQABI1oAASNbAAEjXQABI18AASNgAAEjYQABI2MAASNkAAEjowABI6UAASOnAAEjqQABI6wAASOtAAEjrgABI68AASOwAAEjsgABI7QAASO1AAEjtgABI7gAASO5AAEj+AABI/oAASP8AAEj/gABJAEAASQCAAEkAwABJAQAASQFAAEkBwABJAkAASQKAAEkCwABJA0AASQOAAEkTQABJE8AASRRAAEkUwABJFYAASRXAAEkWAABJFkAASRaAAEkXAABJF4AASRfAAEkYAABJGIAASRjAAEkrgABJNEAASTxAAElEQABJRMAASUVAAElFwABJRkAASUcAAElHQABJR4AASUhAAElIgABJSQAASUlAAElJwABJSoAASUrAAElLAABJS8AASUwAAElNQABJUIAASVHAAElSQABJUsAASVQAAElUwABJVYAASVYAAElfQABJaEAASXIAAEl7AABJe8AASXxAAEl8wABJfUAASX3AAEl+QABJfoAASX9AAEmCgABJhsAASYdAAEmHwABJiEAASYjAAEmJQABJicAASYpAAEmKwABJjwAASY/AAEmQgABJkUAASZIAAEmSwABJk4AASZRAAEmVAABJlYAASaVAAEmlwABJpkAASabAAEmngABJp8AASagAAEmoQABJqIAASakAAEmpgABJqcAASaoAAEmqgABJqsAASbqAAEm7AABJu4AASbwAAEm8wABJvQAASb1AAEm9gABJvcAASb5AAEm+wABJvwAASb9AAEm/wABJwAAASc/AAEnQQABJ0QAASdGAAEnSQABJ0oAASdLAAEnTAABJ00AASdPAAEnUQABJ1IAASdTAAEnVQABJ1YAASdjAAEnZAABJ2UAASdnAAEnpgABJ6gAASeqAAEnrAABJ68AASewAAEnsQABJ7IAASezAAEntQABJ7cAASe4AAEnuQABJ7sAASe8AAEn+wABJ/0AASf/AAEoAQABKAQAASgFAAEoBgABKAcAASgIAAEoCgABKAwAASgNAAEoDgABKBAAASgRAAEoUAABKFIAAShUAAEoVgABKFkAAShaAAEoWwABKFwAAShdAAEoXwABKGEAAShiAAEoYwABKGUAAShmAAEopQABKKcAASipAAEoqwABKK4AASivAAEosAABKLEAASiyAAEotAABKLYAASi3AAEouAABKLoAASi7AAEo+gABKPwAASj+AAEpAAABKQMAASkEAAEpBQABKQYAASkHAAEpCQABKQsAASkMAAEpDQABKQ8AASkQAAEpNQABKVkAASmAAAEppAABKacAASmpAAEpqwABKa0AASmvAAEpsQABKbIAASm1AAEpwgABKdEAASnTAAEp1QABKdcAASnZAAEp2wABKd0AASnfAAEp7gABKfEAASn0AAEp9wABKfoAASn9AAEqAAABKgMAASoFAAEqRAABKkYAASpIAAEqSgABKk0AASpOAAEqTwABKlAAASpRAAEqUwABKlUAASpWAAEqVwABKlkAASpaAAEqmQABKpsAASqdAAEqnwABKqIAASqjAAEqpAABKqUAASqmAAEqqAABKqoAASqrAAEqrAABKq4AASqvAAEq7gABKvAAASryAAEq9AABKvcAASr4AAEq+QABKvoAASr7AAEq/QABKv8AASsAAAErAQABKwMAASsEAAErQwABK0UAAStHAAErSQABK0wAAStNAAErTgABK08AAStQAAErUgABK1QAAStVAAErVgABK1gAAStZAAErmAABK5oAASucAAErngABK6EAASuiAAErowABK6QAASulAAErpwABK6kAASuqAAErqwABK60AASuuAAEr7QABK+8AASvxAAEr8wABK/YAASv3AAEr+AABK/kAASv6AAEr/AABK/4AASv/AAEsAAABLAIAASwDAAEsQgABLEQAASxGAAEsSAABLEsAASxMAAEsTQABLE4AASxPAAEsUQABLFMAASxUAAEsVQABLFcAASxYAAEsowABLMYAASzmAAEtBgABLQgAAS0KAAEtDAABLQ4AAS0RAAEtEgABLRMAAS0WAAEtFwABLRkAAS0aAAEtHAABLR8AAS0gAAEtIQABLSQAAS0lAAEtKgABLTcAAS08AAEtPgABLUAAAS1FAAEtSAABLUsAAS1NAAEtcgABLZYAAS29AAEt4QABLeQAAS3mAAEt6AABLeoAAS3sAAEt7gABLe8AAS3yAAEt/wABLhAAAS4SAAEuFAABLhYAAS4YAAEuGgABLhwAAS4eAAEuIAABLjEAAS40AAEuNwABLjoAAS49AAEuQAABLkMAAS5GAAEuSQABLksAAS6KAAEujAABLo4AAS6QAAEukwABLpQAAS6VAAEulgABLpcAAS6ZAAEumwABLpwAAS6dAAEunwABLqAAAS7fAAEu4QABLuMAAS7lAAEu6AABLukAAS7qAAEu6wABLuwAAS7uAAEu8AABLvEAAS7yAAEu9AABLvUAAS80AAEvNgABLzkAAS87AAEvPgABLz8AAS9AAAEvQQABL0IAAS9EAAEvRgABL0cAAS9IAAEvSgABL0sAAS9YAAEvWQABL1oAAS9cAAEvmwABL50AAS+fAAEvoQABL6QAAS+lAAEvpgABL6cAAS+oAAEvqgABL6wAAS+tAAEvrgABL7AAAS+xAAEv8AABL/IAAS/0AAEv9gABL/kAAS/6AAEv+wABL/wAAS/9AAEv/wABMAEAATACAAEwAwABMAUAATAGAAEwRQABMEcAATBJAAEwSwABME4AATBPAAEwUAABMFEAATBSAAEwVAABMFYAATBXAAEwWAABMFoAATBbAAEwmgABMJwAATCeAAEwoAABMKMAATCkAAEwpQABMKYAATCnAAEwqQABMKsAATCsAAEwrQABMK8AATCwAAEw7wABMPEAATDzAAEw9QABMPgAATD5AAEw+gABMPsAATD8AAEw/gABMQAAATEBAAExAgABMQQAATEFAAExKgABMU4AATF1AAExmQABMZwAATGeAAExoAABMaIAATGkAAExpgABMacAATGqAAExtwABMcYAATHIAAExygABMcwAATHOAAEx0AABMdIAATHUAAEx4wABMeYAATHpAAEx7AABMe8AATHyAAEx9QABMfgAATH6AAEyOQABMjsAATI9AAEyPwABMkIAATJDAAEyRAABMkUAATJGAAEySAABMkoAATJLAAEyTAABMk4AATJPAAEyjgABMpAAATKSAAEylAABMpcAATKYAAEymQABMpoAATKbAAEynQABMp8AATKgAAEyoQABMqMAATKkAAEy4wABMuUAATLnAAEy6QABMuwAATLtAAEy7gABMu8AATLwAAEy8gABMvQAATL1AAEy9gABMvgAATL5AAEzOAABMzoAATM8AAEzPgABM0EAATNCAAEzQwABM0QAATNFAAEzRwABM0kAATNKAAEzSwABM00AATNOAAEzjQABM48AATORAAEzkwABM5YAATOXAAEzmAABM5kAATOaAAEznAABM54AATOfAAEzoAABM6IAATOjAAEz4gABM+QAATPmAAEz6AABM+sAATPsAAEz7QABM+4AATPvAAEz8QABM/MAATP0AAEz9QABM/cAATP4AAE0NwABNDkAATQ7AAE0PQABNEAAATRBAAE0QgABNEMAATREAAE0RgABNEgAATRJAAE0SgABNEwAATRNAAE0mAABNLsAATTbAAE0+wABNP0AATT/AAE1AQABNQMAATUGAAE1BwABNQgAATULAAE1DAABNQ4AATUPAAE1EQABNRQAATUVAAE1FgABNRkAATUaAAE1HwABNSwAATUxAAE1MwABNTUAATU6AAE1PQABNUAAATVCAAE1ZwABNYsAATWyAAE11gABNdkAATXbAAE13QABNd8AATXhAAE14wABNeQAATXnAAE19AABNgUAATYHAAE2CQABNgsAATYNAAE2DwABNhEAATYTAAE2FQABNiYAATYpAAE2LAABNi8AATYyAAE2NQABNjgAATY7AAE2PgABNkAAATZ/AAE2gQABNoMAATaFAAE2iAABNokAATaKAAE2iwABNowAATaOAAE2kAABNpEAATaSAAE2lAABNpUAATbUAAE21gABNtgAATbaAAE23QABNt4AATbfAAE24AABNuEAATbjAAE25QABNuYAATbnAAE26QABNuoAATcpAAE3KwABNy4AATcwAAE3MwABNzQAATc1AAE3NgABNzcAATc5AAE3OwABNzwAATc9AAE3PwABN0AAATdNAAE3TgABN08AATdRAAE3kAABN5IAATeUAAE3lgABN5kAATeaAAE3mwABN5wAATedAAE3nwABN6EAATeiAAE3owABN6UAATemAAE35QABN+cAATfpAAE36wABN+4AATfvAAE38AABN/EAATfyAAE39AABN/YAATf3AAE3+AABN/oAATf7AAE4OgABODwAATg+AAE4QAABOEMAAThEAAE4RQABOEYAAThHAAE4SQABOEsAAThMAAE4TQABOE8AAThQAAE4jwABOJEAATiTAAE4lQABOJgAATiZAAE4mgABOJsAATicAAE4ngABOKAAATihAAE4ogABOKQAATilAAE45AABOOYAATjoAAE46gABOO0AATjuAAE47wABOPAAATjxAAE48wABOPUAATj2AAE49wABOPkAATj6AAE5HwABOUMAATlqAAE5jgABOZEAATmTAAE5lQABOZcAATmZAAE5mwABOZwAATmfAAE5rAABObsAATm9AAE5vwABOcEAATnDAAE5xQABOccAATnJAAE52AABOdsAATneAAE54QABOeQAATnnAAE56gABOe0AATnvAAE6LgABOjAAAToyAAE6NAABOjcAATo4AAE6OQABOjoAATo7AAE6PQABOj8AATpAAAE6QQABOkMAATpEAAE6gwABOoUAATqHAAE6iQABOowAATqNAAE6jgABOo8AATqQAAE6kgABOpQAATqVAAE6lgABOpgAATqZAAE62AABOtoAATrcAAE63gABOuEAATriAAE64wABOuQAATrlAAE65wABOukAATrqAAE66wABOu0AATruAAE7LQABOy8AATsxAAE7MwABOzYAATs3AAE7OAABOzkAATs6AAE7PAABOz4AATs/AAE7QAABO0IAATtDAAE7ggABO4QAATuGAAE7iAABO4sAATuMAAE7jQABO44AATuPAAE7kQABO5MAATuUAAE7lQABO5cAATuYAAE71wABO9kAATvbAAE73QABO+AAATvhAAE74gABO+MAATvkAAE75gABO+gAATvpAAE76gABO+wAATvtAAE8LAABPC4AATwwAAE8MgABPDUAATw2AAE8NwABPDgAATw5AAE8OwABPD0AATw+AAE8PwABPEEAATxCAAE8jQABPLAAATzQAAE88AABPPIAATz0AAE89gABPPgAATz7AAE8/AABPP0AAT0AAAE9AQABPQMAAT0EAAE9BgABPQkAAT0KAAE9CwABPQ4AAT0PAAE9FAABPSEAAT0mAAE9KAABPSoAAT0vAAE9MgABPTUAAT03AAE9XAABPYAAAT2nAAE9ywABPc4AAT3QAAE90gABPdQAAT3WAAE92AABPdk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AAU6IAAFOiQABTosAAU6MAAFOywABTs0AAU7PAAFO0QABTtQAAU7VAAFO1gABTtcAAU7YAAFO2gABTtwAAU7dAAFO3gABTuAAAU7hAAFPIAABTyIAAU8lAAFPJwABTyoAAU8rAAFPLAABTy0AAU8uAAFPMAABTzIAAU8zAAFPNAABTzYAAU83AAFPRAABT0UAAU9GAAFPSAABT4cAAU+JAAFPiwABT40AAU+QAAFPkQABT5IAAU+TAAFPlAABT5YAAU+YAAFPmQABT5oAAU+cAAFPnQABT9wAAU/eAAFP4AABT+IAAU/lAAFP5gABT+cAAU/oAAFP6QABT+sAAU/tAAFP7gABT+8AAU/xAAFP8gABUDEAAVAzAAFQNQABUDcAAVA6AAFQOwABUDwAAVA9AAFQPgABUEAAAVBCAAFQQwABUEQAAVBGAAFQRwABUIYAAVCIAAFQigABUIwAAVCPAAFQkAABUJEAAVCSAAFQkwABUJUAAVCXAAFQmAABUJkAAVCbAAFQnAABUNsAAVDdAAFQ3wABUOEAAVDkAAFQ5QABUOYAAVDnAAFQ6AABUOoAAVDsAAFQ7QABUO4AAVDwAAFQ8QABURYAAVE6AAFRYQABUYUAAVGIAAFRigABUYwAAVGOAAFRkAABUZIAAVGTAAFRlgABUaMAAVGyAAFRtAABUbYAAVG4AAFRugABUbwAAVG+AAFRwAABUc8AAVHSAAFR1QABUdgAAVHbAAFR3gABUeEAAVHkAAFR5gABUiUAAVInAAFSKQABUisAAVIuAAFSLwABUjAAAVIxAAFSMgABUjQAAVI2AAFSNwABUjgAAVI6AAFSOwABUnoAAVJ8AAFSfgABUoAAAVKDAAFShAABUoUAAVKGAAFShwABUokAAVKLAAFSjAABUo0AAVKPAAFSkAABUs8AAVLRAAFS0wABUtUAAVLYAAFS2QABUtoAAVLbAAFS3AABUt4AAVLgAAFS4QABUuIAAVLkAAFS5QABUyQAAVMmAAFTKAABUyoAAVMtAAFTLgABUy8AAVMwAAFTMQABUzMAAVM1AAFTNgABUzcAAVM5AAFTOgABU3kAAVN7AAFTfQABU38AAVOCAAFTgwABU4QAAVOFAAFThgABU4gAAVOKAAFTiwABU4wAAVOOAAFTjwABU84AAVPQAAFT0gABU9QAAVPXAAFT2AABU9kAAVPaAAFT2wABU90AAVPfAAFT4AABU+EAAVPjAAFT5AABVCMAAVQlAAFUJwABVCkAAVQsAAFULQABVC4AAVQvAAFUMAABVDIAAVQ0AAFUNQABVDYAAVQ4AAFUOQABVIQAAVSnAAFUxwABVOcAAVTpAAFU6wABVO0AAVTvAAFU8gABVPMAAVT0AAFU9wABVPgAAVT6AAFU+wABVP0AAVUAAAFVAQABVQIAAVUFAAFVBgABVQsAAVUYAAFVHQABVR8AAVUhAAFVJgABVSkAAVUsAAFVLgABVVMAAVV3AAFVngABVcIAAVXFAAFVxwABVckAAVXLAAFVzQABVc8AAVXQAAFV0wABVeAAAVXxAAFV8wABVfUAAVX3AAFV+QABVfsAAVX9AAFV/wABVgEAAVYSAAFWFQABVhgAAVYbAAFWHgABViEAAVYkAAFWJwABVioAAVYsAAFWawABVm0AAVZvAAFWcQABVnQAAVZ1AAFWdgABVncAAVZ4AAFWegABVnwAAVZ9AAFWfgABVoAAAVaBAAFWwAABVsIAAVbEAAFWxgABVskAAVbKAAFWywABVswAAVbNAAFWzwABVtEAAVbSAAFW0wABVtUAAVbWAAFXFQABVxcAAVcaAAFXHAABVx8AAVcgAAFXIQABVyIAAVcjAAFXJQABVycAAVcoAAFXKQABVysAAVcsAAFXOQABVzoAAVc7AAFXPQABV3wAAVd+AAFXgAABV4IAAVeFAAFXhgABV4cAAVeIAAFXiQABV4sAAVeNAAFXjgABV48AAVeRAAFXkgABV9EAAVfTAAFX1QABV9cAAVfaAAFX2wABV9wAAVfdAAFX3gABV+AAAVfiAAFX4wABV+QAAVfmAAFX5wABWCYAAVgoAAFYKgABWCwAAVgvAAFYMAABWDEAAVgyAAFYMwABWDUAAVg3AAFYOAABWDkAAVg7AAFYPAABWHsAAVh9AAFYfwABWIEAAViEAAFYhQABWIYAAViHAAFYiAABWIoAAViMAAFYjQABWI4AAViQAAFYkQABWNAAAVjSAAFY1AABWNYAAVjZAAFY2gABWNsAAVjcAAFY3QABWN8AAVjhAAFY4gABWOMAAVjlAAFY5gABWQsAAVkvAAFZVgABWXoAAVl9AAFZfwABWYEAAVmDAAFZhQABWYcAAVmIAAFZiwABWZgAAVmnAAFZqQABWasAAVmtAAFZrwABWbEAAVmzAAFZtQABWcQAAVnHAAFZygABWc0AAVnQAAFZ0wABWdYAAVnZAAFZ2wABWhoAAVocAAFaHgABWiAAAVojAAFaJAABWiUAAVomAAFaJwABWikAAVorAAFaLAABWi0AAVovAAFaMAABWm8AAVpxAAFacwABWnUAAVp4AAFaeQABWnoAAVp7AAFafAABWn4AAVqAAAFagQABWoIAAVqEAAFahQABWsQAAVrGAAFayAABWsoAAVrNAAFazgABWs8AAVrQAAFa0QABWtMAAVrVAAFa1gABWtcAAVrZAAFa2gABWxkAAVsbAAFbHQABWx8AAVsiAAFbIwABWyQAAVslAAFbJgABWygAAVsqAAFbKwABWywAAVsuAAFbLwABW24AAVtwAAFbcgABW3QAAVt3AAFbeAABW3kAAVt6AAFbewABW30AAVt/AAFbgAABW4EAAVuDAAFbhAABW8MAAVvFAAFbxwABW8kAAVvMAAFbzQABW84AAVvPAAFb0AABW9IAAVvUAAFb1QABW9YAAVvYAAFb2QABXBgAAVwaAAFcHAABXB4AAVwhAAFcIgABXCMAAVwkAAFcJQABXCcAAVwpAAFcKgABXCsAAVwtAAFcLgABXHkAAVycAAFcvAABXNwAAVzeAAFc4AABXOIAAVzkAAFc5wABXOgAAVzpAAFc7AABXO0AAVzvAAFc8AABXPIAAVz0AAFc9QABXPYAAVz5AAFc+gABXP8AAV0MAAFdEQABXRMAAV0VAAFdGgABXR0AAV0gAAFdIgABXUcAAV1rAAFdkgABXbYAAV25AAFduwABXb0AAV2/AAFdwQABXcMAAV3EAAFdxwABXdQAAV3lAAFd5wABXekAAV3rAAFd7QABXe8AAV3xAAFd8wABXfUAAV4GAAFeCQABXgwAAV4PAAFeEgABXhUAAV4YAAFeGwABXh4AAV4gAAFeXwABXmEAAV5jAAFeZQABXmgAAV5pAAFeagABXmsAAV5sAAFebgABXnAAAV5xAAFecgABXnQAAV51AAFetAABXrYAAV64AAFeugABXr0AAV6+AAFevwABXsAAAV7BAAFewwABXsUAAV7GAAFexwABXskAAV7KAAFfCQABXwsAAV8OAAFfEAABXxMAAV8UAAFfFQABXxYAAV8XAAFfGQABXxsAAV8cAAFfHQABXx8AAV8gAAFfLQABXy4AAV8vAAFfMQABX3AAAV9yAAFfdAABX3YAAV95AAFfegABX3sAAV98AAFffQABX38AAV+BAAFfggABX4MAAV+FAAFfhgABX8UAAV/HAAFfyQABX8sAAV/OAAFfzwABX9AAAV/RAAFf0gABX9QAAV/WAAFf1wABX9gAAV/aAAFf2wABYBoAAWAcAAFgHgABYCAAAWAjAAFgJAABYCUAAWAmAAFgJwABYCkAAWArAAFgLAABYC0AAWAvAAFgMAABYG8AAWBxAAFgcwABYHUAAWB4AAFgeQABYHoAAWB7AAFgfAABYH4AAWCAAAFggQABYIIAAWCEAAFghQABYMQAAWDGAAFgyAABYMoAAWDNAAFgzgABYM8AAWDQAAFg0QABYNMAAWDVAAFg1gABYNcAAWDZAAFg2gABYP8AAWEjAAFhSgABYW4AAWFxAAFhcwABYXUAAWF3AAFheQABYXsAAWF8AAFhfwABYYwAAWGbAAFhnQABYZ8AAWGhAAFhowABYaUAAWGnAAFhqQABYbgAAWG7AAFhvgABYcEAAWHEAAFhxwABYcoAAWHNAAFhzwABYg4AAWIQAAFiEgABYhQAAWIXAAFiGAABYhkAAWIaAAFiGwABYh0AAWIfAAFiIAABYiEAAWIjAAFiJAABYmMAAWJlAAFiZwABYmkAAWJsAAFibQABYm4AAWJvAAFicAABYnIAAWJ0AAFidQABYnYAAWJ4AAFieQABYrgAAWK6AAFivAABYr4AAWLBAAFiwgABYsMAAWLEAAFixQABYscAAWLJAAFiygABYssAAWLNAAFizgABYw0AAWMPAAFjEQABYxMAAWMWAAFjFwABYxgAAWMZAAFjGgABYxwAAWMeAAFjHwABYyAAAWMiAAFjIwABY2IAAWNkAAFjZgABY2gAAWNrAAFjbAABY20AAWNuAAFjbwABY3EAAWNzAAFjdAABY3UAAWN3AAFjeAABY7cAAWO5AAFjuwABY70AAWPAAAFjwQABY8IAAWPDAAFjxAABY8YAAWPIAAFjyQABY8oAAWPMAAFjzQABZAwAAWQOAAFkEAABZBIAAWQVAAFkFgABZBcAAWQYAAFkGQABZBsAAWQdAAFkHgABZB8AAWQhAAFkIgABZG0AAWSQAAFksAABZNAAAWTSAAFk1AABZNYAAWTYAAFk2wABZNwAAWTdAAFk4AABZOEAAWTjAAFk5AABZOYAAWTpAAFk6gABZOsAAWTuAAFk7wABZPQAAWUBAAFlBgABZQgAAWUKAAFlDwABZRIAAWUVAAFlFwABZTwAAWVgAAFlhwABZasAAWWuAAFlsAABZbIAAWW0AAFltgABZbgAAWW5AAFlvAABZckAAWXaAAFl3AABZd4AAWXgAAFl4gABZeQAAWXmAAFl6AABZeoAAWX7AAFl/gABZgEAAWYEAAFmBwABZgoAAWYNAAFmEAABZhMAAWYVAAFmVAABZlYAAWZYAAFmWgABZl0AAWZeAAFmXwABZmAAAWZhAAFmYwABZmUAAWZmAAFmZwABZmkAAWZqAAFmqQABZqsAAWatAAFmrwABZrIAAWazAAFmtAABZrUAAWa2AAFmuAABZroAAWa7AAFmvAABZr4AAWa/AAFm/gABZwAAAWcDAAFnBQABZwgAAWcJAAFnCgABZwsAAWcMAAFnDgABZxAAAWcRAAFnEgABZxQAAWcVAAFnIgABZyMAAWckAAFnJgABZ2UAAWdnAAFnaQABZ2sAAWduAAFnbwABZ3AAAWdxAAFncgABZ3QAAWd2AAFndwABZ3gAAWd6AAFnewABZ7oAAWe8AAFnvgABZ8AAAWfDAAFnxAABZ8UAAWfGAAFnxwABZ8kAAWfLAAFnzAABZ80AAWfPAAFn0AABaA8AAWgRAAFoEwABaBUAAWgYAAFoGQABaBoAAWgbAAFoHAABaB4AAWggAAFoIQABaCIAAWgkAAFoJQABaGQAAWhmAAFoaQABaGsAAWhuAAFobwABaHAAAWhxAAFocgABaHQAAWh2AAFodwABaHgAAWh6AAFoewABaI4AAWjNAAFozwABaNEAAWjTAAFo1gABaNcAAWjYAAFo2QABaNoAAWjcAAFo3gABaN8AAWjgAAFo4gABaOMAAWkIAAFpLAABaVMAAWl3AAFpegABaXwAAWl+AAFpgAABaYIAAWmEAAFphQABaYgAAWmVAAFppAABaaYAAWmoAAFpqgABaawAAWmuAAFpsAABabIAAWnBAAFpxAABaccAAWnKAAFpzQABadAAAWnTAAFp1gABadgAAWoXAAFqGQABahsAAWodAAFqIAABaiEAAWoiAAFqIwABaiQAAWomAAFqKAABaikAAWoqAAFqLAABai0AAWpsAAFqbgABanAAAWpyAAFqdQABanYAAWp3AAFqeAABankAAWp7AAFqfQABan4AAWp/AAFqgQABaoIAAWrBAAFqwwABasUAAWrHAAFqygABassAAWrMAAFqzQABas4AAWrQAAFq0gABatMAAWrUAAFq1gABatcAAWsWAAFrGAABaxoAAWscAAFrHwABayAAAWshAAFrIgABayMAAWslAAFrJwABaygAAWspAAFrKwABaywAAWtrAAFrbQABa28AAWtxAAFrdAABa3UAAWt2AAFrdwABa3gAAWt6AAFrfAABa30AAWt+AAFrgAABa4EAAWvAAAFrwgABa8QAAWvGAAFryQABa8oAAWvLAAFrzAABa80AAWvPAAFr0QABa9IAAWvTAAFr1QABa9YAAWwVAAFsFwABbBkAAWwbAAFsHgABbB8AAWwgAAFsIQABbCIAAWwkAAFsJgABbCcAAWwoAAFsKgABbCsAAWx2AAFsmQABbLkAAWzZAAFs2wABbN0AAWzfAAFs4QABbOQAAWzlAAFs5gABbOkAAWzqAAFs7AABbO0AAWzvAAFs8gABbPMAAWz0AAFs9wABbPgAAWz9AAFtCgABbQ8AAW0RAAFtEwABbRgAAW0bAAFtHgABbSAAAW1FAAFtaQABbZAAAW20AAFttwABbbkAAW27AAFtvQABbb8AAW3BAAFtwgABbcUAAW3SAAFt4wABbeUAAW3nAAFt6QABbesAAW3tAAFt7wABbfEAAW3zAAFuBAABbgcAAW4KAAFuDQABbhAAAW4TAAFuFgABbhkAAW4cAAFuHgABbl0AAW5fAAFuYQABbmMAAW5mAAFuZwABbmgAAW5pAAFuagABbmwAAW5uAAFubwABbnAAAW5yAAFucwABbrIAAW60AAFutgABbrgAAW67AAFuvAABbr0AAW6+AAFuvwABbsEAAW7DAAFuxAABbsUAAW7HAAFuyAABbwcAAW8JAAFvDAABbw4AAW8RAAFvEgABbxMAAW8UAAFvFQABbxcAAW8ZAAFvGgABbxsAAW8dAAFvHgABbysAAW8sAAFvLQABby8AAW9uAAFvcAABb3IAAW90AAFvdwABb3gAAW95AAFvegABb3sAAW99AAFvfwABb4AAAW+BAAFvgwABb4QAAW/DAAFvxQABb8cAAW/JAAFvzAABb80AAW/OAAFvzwABb9AAAW/SAAFv1AABb9U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AAYC1AAGAtwABgLkAAYC7AAGAvgABgL8AAYDAAAGAwQABgMIAAYDEAAGAxgABgMcAAYDIAAGAygABgMsAAYDwAAGBFAABgTsAAYFfAAGBYgABgWQAAYFmAAGBaAABgWoAAYFsAAGBbQABgXAAAYF9AAGBjAABgY4AAYGQAAGBkgABgZQAAYGWAAGBmAABgZoAAYGpAAGBrAABga8AAYGyAAGBtQABgbgAAYG7AAGBvgABgcAAAYH/AAGCAQABggMAAYIFAAGCCAABggkAAYIKAAGCCwABggwAAYIOAAGCEAABghEAAYISAAGCFAABghUAAYJUAAGCVgABglgAAYJaAAGCXQABgl4AAYJfAAGCYAABgmEAAYJjAAGCZQABgmYAAYJnAAGCaQABgmoAAYKpAAGCqwABgq0AAYKvAAGCsgABgrMAAYK0AAGCtQABgrYAAYK4AAGCugABgrsAAYK8AAGCvgABgr8AAYL+AAGDAAABgwIAAYMEAAGDBwABgwgAAYMJAAGDCgABgwsAAYMNAAGDDwABgxAAAYMRAAGDEwABgxQAAYNTAAGDVQABg1cAAYNZAAGDXAABg10AAYNeAAGDXwABg2AAAYNiAAGDZAABg2UAAYNmAAGDaAABg2kAAYOoAAGDqgABg6wAAYOuAAGDsQABg7IAAYOzAAGDtAABg7UAAYO3AAGDuQABg7oAAYO7AAGDvQABg74AAYP9AAGD/wABhAEAAYQDAAGEBgABhAcAAYQIAAGECQABhAoAAYQMAAGEDgABhA8AAYQQAAGEEgABhBMAAYReAAGEgQABhKEAAYTBAAGEwwABhMUAAYTHAAGEyQABhMwAAYTNAAGEzgABhNEAAYTSAAGE1AABhNUAAYTXAAGE2gABhNsAAYTcAAGE3wABhOAAAYTlAAGE8gABhPcAAYT5AAGE+wABhQAAAYUDAAGFBgABhQgAAYUtAAGFUQABhXgAAYWcAAGFnwABhaEAAYWjAAGFpQABhacAAYWpAAGFqgABha0AAYW6AAGFywABhc0AAYXPAAGF0QABhdMAAYXVAAGF1wABhdkAAYXbAAGF7AABhe8AAYXyAAGF9QABhfgAAYX7AAGF/gABhgEAAYYEAAGGBgABhkUAAYZHAAGGSQABhksAAYZOAAGGTwABhlAAAYZRAAGGUgABhlQAAYZWAAGGVwABhlgAAYZaAAGGWwABhpoAAYacAAGGngABhqAAAYajAAGGpAABhqUAAYamAAGGpwABhqkAAYarAAGGrAABhq0AAYavAAGGsAABhu8AAYbxAAGG9AABhvYAAYb5AAGG+gABhvsAAYb8AAGG/QABhv8AAYcBAAGHAgABhwMAAYcFAAGHBgABhxMAAYcUAAGHFQABhxcAAYdWAAGHWAABh1oAAYdcAAGHXwABh2AAAYdhAAGHYgABh2MAAYdlAAGHZwABh2gAAYdpAAGHawABh2wAAYerAAGHrQABh68AAYexAAGHtAABh7UAAYe2AAGHtwABh7gAAYe6AAGHvAABh70AAYe+AAGHwAABh8EAAYgAAAGIAgABiAQAAYgGAAGICQABiAoAAYgLAAGIDAABiA0AAYgPAAGIEQABiBIAAYgTAAGIFQABiBYAAYhVAAGIVwABiFoAAYhcAAGIXwABiGAAAYhhAAGIYgABiGMAAYhlAAGIZwABiGgAAYhpAAGIawABiGwAAYiAAAGIvwABiMEAAYjDAAGIxQABiMgAAYjJAAGIygABiMsAAYjMAAGIzgABiNAAAYjRAAGI0gABiNQAAYjVAAGI+gABiR4AAYlFAAGJaQABiWwAAYluAAGJcAABiXIAAYl0AAGJdgABiXcAAYl6AAGJhwABiZYAAYmYAAGJmgABiZwAAYmeAAGJoAABiaIAAYmkAAGJswABibYAAYm5AAGJvAABib8AAYnCAAGJxQABicgAAYnKAAGKCQABigsAAYoNAAGKDwABihIAAYoTAAGKFAABihUAAYoWAAGKGAABihoAAYobAAGKHAABih4AAYofAAGKXgABimAAAYpiAAGKZAABimcAAYpoAAGKaQABimoAAYprAAGKbQABim8AAYpwAAGKcQABinMAAYp0AAGKswABirUAAYq3AAGKuQABirwAAYq9AAGKvgABir8AAYrAAAGKwgABisQAAYrFAAGKxgABisgAAYrJAAGLCAABiwoAAYsMAAGLDgABixEAAYsSAAGLEwABixQAAYsVAAGLFwABixkAAYsaAAGLGwABix0AAYseAAGLXQABi18AAYthAAGLYwABi2YAAYtnAAGLaAABi2kAAYtqAAGLbAABi24AAYtvAAGLcAABi3IAAYtzAAGLsgABi7QAAYu2AAGLuAABi7sAAYu8AAGLvQABi74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AAZcVAAGXIgABlyMAAZckAAGXJgABl2UAAZdnAAGXaQABl2sAAZduAAGXbwABl3AAAZdxAAGXcgABl3QAAZd2AAGXdwABl3gAAZd6AAGXewABl7oAAZe8AAGXvgABl8AAAZfDAAGXxAABl8UAAZfGAAGXxwABl8kAAZfLAAGXzAABl80AAZfPAAGX0AABmA8AAZgRAAGYEwABmBUAAZgYAAGYGQABmBoAAZgbAAGYHAABmB4AAZggAAGYIQABmCIAAZgkAAGYJQABmGQAAZhmAAGYaQABmGsAAZhuAAGYbwABmHAAAZhxAAGYcgABmHQAAZh2AAGYdwABmHgAAZh6AAGYewABmI8AAZjOAAGY0AABmNIAAZjUAAGY1wABmNgAAZjZAAGY2gABmNsAAZjdAAGY3wABmOAAAZjhAAGY4wABmOQAAZkJAAGZLQABmVQAAZl4AAGZewABmX0AAZl/AAGZgQABmYMAAZmFAAGZhgABmYkAAZmWAAGZpQABmacAAZmpAAGZqwABma0AAZmvAAGZsQABmbMAAZnCAAGZxQABmcgAAZnLAAGZzgABmdEAAZnUAAGZ1wABmdkAAZoYAAGaGgABmhwAAZoeAAGaIQABmiIAAZojAAGaJAABmiUAAZonAAGaKQABmioAAZorAAGaLQABmi4AAZptAAGabwABmnEAAZpzAAGadgABmncAAZp4AAGaeQABmnoAAZp8AAGafgABmn8AAZqAAAGaggABmoMAAZrCAAGaxAABmsYAAZrIAAGaywABmswAAZrNAAGazgABms8AAZrRAAGa0wABmtQAAZrVAAGa1wABmtgAAZsXAAGbGQABmxsAAZsdAAGbIAABmyEAAZsiAAGbIwABmyQAAZsmAAGbKAABmykAAZsqAAGbLAABmy0AAZtsAAGbbgABm3AAAZtyAAGbdQABm3YAAZt3AAGbeAABm3kAAZt7AAGbfQABm34AAZt/AAGbgQABm4IAAZvBAAGbwwABm8UAAZvHAAGbygABm8sAAZvMAAGbzQABm84AAZvQAAGb0gABm9MAAZvUAAGb1gABm9cAAZwWAAGcGAABnBoAAZwcAAGcHwABnCAAAZwhAAGcIgABnCMAAZwlAAGcJwABnCgAAZwpAAGcKwABnCwAAZx3AAGcmgABnLoAAZzaAAGc3AABnN4AAZzgAAGc4gABnOUAAZzmAAGc5wABnOoAAZzrAAGc7QABnO4AAZzwAAGc8wABnPQAAZz1AAGc+AABnPkAAZz+AAGdCwABnRAAAZ0SAAGdFAABnRkAAZ0cAAGdHwABnSEAAZ1GAAGdagABnZEAAZ21AAGduAABnboAAZ28AAGdvgABncAAAZ3CAAGdwwABncYAAZ3TAAGd5AABneYAAZ3oAAGd6gABnewAAZ3uAAGd8AABnfIAAZ30AAGeBQABnggAAZ4LAAGeDgABnhEAAZ4UAAGeFwABnhoAAZ4dAAGeHwABnl4AAZ5gAAGeYgABnmQAAZ5nAAGeaAABnmkAAZ5qAAGeawABnm0AAZ5vAAGecAABnnEAAZ5zAAGedAABnrMAAZ61AAGetwABnrkAAZ68AAGevQABnr4AAZ6/AAGewAABnsIAAZ7EAAGexQABnsYAAZ7IAAGeyQABnwgAAZ8KAAGfDQABnw8AAZ8SAAGfEwABnxQAAZ8VAAGfFgABnxgAAZ8aAAGfGwABnxwAAZ8eAAGfHwABnywAAZ8tAAGfLgABnzAAAZ9vAAGfcQABn3MAAZ91AAGfeAABn3kAAZ96AAGfewABn3wAAZ9+AAGfgAABn4EAAZ+CAAGfhAABn4UAAZ/EAAGfxgABn8gAAZ/KAAGfzQABn84AAZ/PAAGf0AABn9EAAZ/TAAGf1QABn9YAAZ/XAAGf2QABn9oAAaAZAAGgGwABoB0AAaAfAAGgIgABoCMAAaAkAAGgJQABoCYAAaAoAAGgKgABoCsAAaAsAAGgLgABoC8AAaBuAAGgcAABoHIAAaB0AAGgdwABoHgAAaB5AAGgegABoHsAAaB9AAGgfwABoIAAAaCBAAGggwABoIQAAaDDAAGgxQABoMcAAaDJAAGgzAABoM0AAaDOAAGgzwABoNAAAaDSAAGg1AABoNUAAaDWAAGg2AABoNkAAaD+AAGhIgABoUkAAaFtAAGhcAABoXIAAaF0AAGhdgABoXgAAaF6AAGhewABoX4AAaGLAAGhmgABoZwAAaGeAAGhoAABoaIAAaGkAAGhpgABoagAAaG3AAGhugABob0AAaHAAAGhwwABocYAAaHJAAGhzAABoc4AAaINAAGiDwABohEAAaITAAGiFgABohcAAaIYAAGiGQABohoAAaIcAAGiHgABoh8AAaIgAAGiIgABoiMAAaJiAAGiZAABomYAAaJoAAGiawABomwAAaJtAAGibgABom8AAaJxAAGicwABonQAAaJ1AAGidwABongAAaK3AAGiuQABorsAAaK9AAGiwAABosEAAaLCAAGiwwABosQAAaLGAAGiyAABoskAAaLKAAGizAABos0AAaMMAAGjDgABoxAAAaMSAAGjFQABoxYAAaMXAAGjGAABoxkAAaMbAAGjHQABox4AAaMfAAGjIQABoyIAAaNhAAGjYwABo2UAAaNnAAGjagABo2sAAaNsAAGjbQABo24AAaNwAAGjcgABo3MAAaN0AAGjdgABo3cAAaO2AAGjuAABo7oAAaO8AAGjvwABo8AAAaPBAAGjwgABo8MAAaPFAAGjxwABo8gAAaPJAAGjywABo8wAAaQLAAGkDQABpA8AAaQRAAGkFAABpBUAAaQWAAGkFwABpBgAAaQaAAGkHAABpB0AAaQeAAGkIAABpCEAAaRsAAGkjwABpK8AAaTPAAGk0QABpNMAAaTVAAGk1wABpNoAAaTbAAGk3AABpN8AAaTgAAGk4gABpOMAAaTlAAGk6AABpOkAAaTqAAGk7QABpO4AAaTzAAGlAAABpQUAAaUHAAGlCQABpQ4AAaURAAGlFAABpRYAAaU7AAGlXwABpYYAAaWqAAGlrQABpa8AAaWxAAGlswABpbUAAaW3AAGluAABpbsAAaXIAAGl2QABpdsAAaXdAAGl3wABpeEAAaXjAAGl5QABpecAAaXpAAGl+gABpf0AAaYAAAGmAwABpgYAAaYJAAGmDAABpg8AAaYSAAGmFAABplMAAaZVAAGmVwABplkAAaZcAAGmXQABpl4AAaZfAAGmYAABpmIAAaZkAAGmZQABpmYAAaZoAAGmaQABpqgAAaaqAAGmrAABpq4AAaaxAAGmsgABprMAAaa0AAGmtQABprcAAaa5AAGmugABprsAAaa9AAGmvgABpv0AAab/AAGnAgABpwQAAacHAAGnCAABpwkAAacKAAGnCwABpw0AAacPAAGnEAABpxEAAacTAAGnFAABpyEAAaciAAGnIwABpyUAAadkAAGnZgABp2gAAadqAAGnbQABp24AAadvAAGncAABp3EAAadzAAGndQABp3YAAad3AAGneQABp3oAAae5AAGnuwABp70AAae/AAGnwgABp8MAAafEAAGnxQABp8YAAafIAAGnygABp8sAAafMAAGnzgABp88AAagOAAGoEAABqBIAAagUAAGoFwABqBgAAagZAAGoGgABqBsAAagdAAGoHwABqCAAAaghAAGoIwABqCQAAahjAAGoZQABqGcAAahpAAGobAABqG0AAahuAAGobwABqHAAAahyAAGodAABqHUAAah2AAGoeAABqHkAAai4AAGougABqLwAAai+AAGowQABqMIAAajDAAGoxAABqMUAAajHAAGoyQABqMoAAajLAAGozQABqM4AAajzAAGpFwABqT4AAaliAAGpZQABqWcAAalpAAGpawABqW0AAalvAAGpcAABqXMAAamAAAGpjwABqZEAAamTAAGplQABqZcAAamZAAGpmwABqZ0AAamsAAGprwABqbIAAam1AAGpuAABqbsAAam+AAGpwQABqcMAAaoCAAGqBAABqgYAAaoIAAGqCwABqgwAAaoNAAGqDgABqg8AAaoRAAGqEwABqhQAAaoVAAGqFwABqhgAAapXAAGqWQABqlsAAapdAAGqYAABqmEAAapiAAGqYwABqmQAAapmAAGqaAABqmkAAapqAAGqbAABqm0AAaqsAAGqrgABqrAAAaqyAAGqtQABqrYAAaq3AAGquAABqrkAAaq7AAGqvQABqr4AAaq/AAGqwQABqsIAAasBAAGrAwABqwUAAasHAAGrCgABqwsAAasMAAGrDQABqw4AAasQAAGrEgABqxMAAasUAAGrFgABqxcAAatWAAGrWAABq1oAAatcAAGrXwABq2AAAathAAGrYgABq2MAAatlAAGrZwABq2gAAatpAAGrawABq2wAAaurAAGrrQABq68AAauxAAGrtAABq7UAAau2AAGrtwABq7gAAau6AAGrvAABq70AAau+AAGrwAABq8EAAawAAAGsAgABrAQAAawGAAGsCQABrAoAAawLAAGsDAABrA0AAawPAAGsEQABrBIAAawTAAGsFQABrBYAAaxhAAGshAABrKQAAazEAAGsxgABrMgAAazKAAGszAABrM8AAazQAAGs0QABrNQAAazVAAGs1wABrNgAAazaAAGs3QABrN4AAazfAAGs4gABrOMAAazoAAGs9QABrPoAAaz8AAGs/gABrQMAAa0GAAGtCQABrQsAAa0wAAGtVAABrXsAAa2fAAGtogABraQAAa2mAAGtqAABraoAAa2sAAGtrQABrbAAAa29AAGtzgABrdAAAa3SAAGt1AABrdYAAa3YAAGt2gABrdwAAa3eAAGt7wABrfIAAa31AAGt+AABrfsAAa3+AAGuAQABrgQAAa4HAAGuCQABrkgAAa5KAAGuTAABrk4AAa5RAAGuUgABrlMAAa5UAAGuVQABrlcAAa5ZAAGuWgABrlsAAa5dAAGuXgABrp0AAa6fAAGuoQABrqMAAa6mAAGupwABrqgAAa6pAAGuqgABrqwAAa6uAAGurwABrrAAAa6yAAGuswABrvIAAa70AAGu9wABrvkAAa78AAGu/QABrv4AAa7/AAGvAAABrwIAAa8EAAGvBQABrwYAAa8IAAGvCQABrxYAAa8XAAGvGAABrxoAAa9ZAAGvWwABr10AAa9fAAGvYgABr2MAAa9kAAGvZQABr2YAAa9oAAGvagABr2sAAa9sAAGvbgABr28AAa+uAAGvsAABr7IAAa+0AAGvtwABr7gAAa+5AAGvugABr7sAAa+9AAGvvwABr8AAAa/BAAGvwwABr8QAAbADAAGwBQABsAcAAbAJAAGwDAABsA0AAbAOAAGwDwABsBAAAbASAAGwFAABsBUAAbAWAAGwGAABsBkAAbBYAAGwWgABsFwAAbBeAAGwYQABsGIAAbBjAAGwZAABsGUAAbBnAAGwaQABsGoAAbBrAAGwbQABsG4AAbCtAAGwrwABsLEAAbCzAAGwtgABsLcAAbC4AAGwuQABsLoAAbC8AAGwvgABsL8AAbDAAAGwwgABsMMAAbDoAAGxDAABsTMAAbFXAAGxWgABsVwAAbFeAAGxYAABsWIAAbFkAAGxZQABsWgAAbF1AAGxhAABsYYAAbGIAAGxigABsYwAAbGOAAGxkAABsZIAAbGhAAGxpAABsacAAbGqAAGxrQABsbAAAbGzAAGxtgABsbgAAbH3AAGx+QABsfsAAbH9AAGyAAABsgEAAbICAAGyAwABsgQAAbIGAAGyCAABsgkAAbIKAAGyDAABsg0AAbJMAAGyTgABslAAAbJSAAGyVQABslYAAbJXAAGyWAABslkAAbJbAAGyXQABsl4AAbJfAAGyYQABsmIAAbKhAAGyowABsqUAAbKnAAGyqgABsqsAAbKsAAGyrQABsq4AAbKwAAGysgABsrMAAbK0AAGytgABsrcAAbL2AAGy+AABsvsAAbL9AAGzAAABswEAAbMCAAGzAwABswQAAbMGAAGzCAABswkAAbMKAAGzDAABsw0AAbNMAAGzTgABs1AAAbNSAAGzVQABs1YAAbNXAAGzWAABs1kAAbNbAAGzXQABs14AAbNfAAGzYQABs2IAAbOhAAGzowABs6UAAbOnAAGzqgABs6sAAbOsAAGzrQABs64AAbOwAAGzsgABs7MAAbO0AAGztgABs7cAAbP2AAGz+AABs/sAAbP9AAG0AAABtAEAAbQCAAG0AwABtAQAAbQGAAG0CAABtAkAAbQKAAG0DAABtA0AAbRYAAG0ewABtJsAAbS7AAG0vQABtL8AAbTBAAG0wwABtMYAAbTHAAG0yAABtMsAAbTMAAG0zgABtM8AAbTRAAG01AABtNUAAbTWAAG02QABtNoAAbTjAAG08AABtPUAAbT3AAG0+QABtP4AAbUBAAG1BAABtQYAAbUrAAG1TwABtXYAAbWaAAG1nQABtZ8AAbWhAAG1owABtaUAAbWnAAG1qAABtasAAbW4AAG1yQABtcsAAbXNAAG1zwABtdEAAbXTAAG11QABtdcAAbXZAAG16gABte0AAbXwAAG18wABtfYAAbX5AAG1/AABtf8AAbYCAAG2BAABtkMAAbZFAAG2RwABtkkAAbZMAAG2TQABtk4AAbZPAAG2UAABtlIAAbZUAAG2VQABtlYAAbZYAAG2WQABtpgAAbaaAAG2nAABtp4AAbahAAG2ogABtqMAAbakAAG2pQABtqcAAbapAAG2qgABtqsAAbatAAG2rgABtu0AAbbvAAG28gABtvQAAbb3AAG2+AABtvkAAbb6AAG2+wABtv0AAbb/AAG3AAABtwEAAbcDAAG3BAABtxEAAbcSAAG3EwABtxUAAbdUAAG3VgABt1gAAbdaAAG3XQABt14AAbdfAAG3YAABt2EAAbdjAAG3ZQABt2YAAbdnAAG3aQABt2oAAbepAAG3qwABt60AAbevAAG3sgABt7MAAbe0AAG3tQABt7YAAbe4AAG3ugABt7sAAbe8AAG3vgABt78AAbf+AAG4AAABuAIAAbgEAAG4BwABuAgAAbgJAAG4CgABuAsAAbgNAAG4DwABuBAAAbgRAAG4EwABuBQAAbhTAAG4VQABuFcAAbhZAAG4XAABuF0AAbheAAG4XwABuGAAAbhiAAG4ZAABuGUAAbhmAAG4aAABuGkAAbioAAG4qgABuKwAAbiuAAG4sQABuLIAAbizAAG4tAABuLUAAbi3AAG4uQABuLoAAbi7AAG4vQABuL4AAbjjAAG5BwABuS4AAblSAAG5VQABuVcAAblZAAG5WwABuV0AAblfAAG5YAABuWMAAblwAAG5fwABuYEAAbmDAAG5hQABuYcAAbmJAAG5iwABuY0AAbmcAAG5nwABuaIAAbmlAAG5qAABuasAAbmuAAG5sQABubMAAbnyAAG59AABufYAAbn4AAG5+wABufwAAbn9AAG5/gABuf8AAboBAAG6AwABugQAAboFAAG6BwABuggAAbpHAAG6SQABuksAAbpNAAG6UAABulEAAbpSAAG6UwABulQAAbpWAAG6WAABulkAAbpaAAG6XAABul0AAbqcAAG6ngABuqAAAbqiAAG6pQABuqYAAbqnAAG6qAABuqkAAbqrAAG6rQABuq4AAbqvAAG6sQABurIAAbrxAAG68wABuvYAAbr4AAG6+wABuvwAAbr9AAG6/gABuv8AAbsBAAG7AwABuwQAAbsFAAG7BwABuwgAAbtHAAG7SQABu0sAAbtNAAG7UAABu1EAAbtSAAG7UwABu1QAAbtWAAG7WAABu1kAAbtaAAG7XAABu10AAbucAAG7ngABu6AAAbuiAAG7pQABu6YAAbunAAG7qAABu6kAAburAAG7rQABu64AAbuvAAG7sQABu7IAAbvxAAG78wABu/YAAbv4AAG7+wABu/wAAbv9AAG7/gABu/8AAbwBAAG8AwABvAQAAbwFAAG8BwABvAgAAbxTAAG8dgABvJYAAby2AAG8uAABvLoAAby8AAG8vgABvMEAAbzCAAG8wwABvMYAAbzHAAG8yQABvMoAAbzMAAG8zwABvNAAAbzRAAG81AABvNUAAbzeAAG86wABvPAAAbzyAAG89AABvPkAAbz8AAG8/wABvQEAAb0mAAG9SgABvXEAAb2VAAG9mAABvZoAAb2cAAG9ngABvaAAAb2iAAG9owABvaYAAb2zAAG9xAABvcYAAb3IAAG9ygABvcwAAb3OAAG90AABvdIAAb3UAAG95QABvegAAb3rAAG97gABvfEAAb30AAG99wABvfoAAb39AAG9/wABvj4AAb5AAAG+QgABvkQAAb5HAAG+SAABvkkAAb5KAAG+SwABvk0AAb5PAAG+UAABvlEAAb5TAAG+VAABvpMAAb6VAAG+lwABvpkAAb6cAAG+nQABvp4AAb6fAAG+oAABvqIAAb6kAAG+pQABvqYAAb6oAAG+qQABvugAAb7qAAG+7QABvu8AAb7yAAG+8wABvvQAAb71AAG+9gABvvgAAb76AAG++wABvvwAAb7+AAG+/wABvwwAAb8NAAG/DgABvxAAAb9PAAG/UQABv1MAAb9VAAG/WAABv1kAAb9aAAG/WwABv1wAAb9eAAG/YAABv2EAAb9iAAG/ZAABv2UAAb+kAAG/pgABv6gAAb+qAAG/rQABv64AAb+vAAG/sAABv7EAAb+zAAG/tQABv7YAAb+3AAG/uQABv7oAAb/5AAG/+wABv/0AAb//AAHAAgABwAMAAcAEAAHABQABwAYAAcAIAAHACgABwAsAAcAMAAHADgABwA8AAcBOAAHAUAABwFMAAcBVAAHAWAABwFkAAcBaAAHAWwABwFwAAcBeAAHAYAABwGEAAcBiAAHAZAABwGUAAcBzAAHAsgABwLQAAcC2AAHAuAABwLsAAcC8AAHAvQABwL4AAcC/AAHAwQABwMMAAcDEAAHAxQABwMcAAcDIAAHA7QABwREAAcE4AAHBXAABwV8AAcFhAAHBYwABwWUAAcFnAAHBaQABwWoAAcFtAAHBegABwYkAAcGLAAHBjQABwY8AAcGRAAHBkwABwZUAAcGXAAHBpgABwakAAcGsAAHBrwABwbIAAcG1AAHBuAABwbsAAcG9AAHB/AABwf4AAcIAAAHCAgABwgUAAcIGAAHCBwABwggAAcIJAAHCCwABwg0AAcIOAAHCDwABwhEAAcISAAHCUQABwlMAAcJVAAHCVwABwloAAcJbAAHCXAABwl0AAcJeAAHCYAABwmIAAcJjAAHCZAABwmYAAcJnAAHCpgABwqgAAcKqAAHCrAABwq8AAcKwAAHCsQABwrIAAcKzAAHCtQABwrcAAcK4AAHCuQABwrsAAcK8AAHC+wABwv0AAcL/AAHDAQABwwQAAcMFAAHDBgABwwcAAcMIAAHDCgABwwwAAcMNAAHDDgABwxAAAcMRAAHDUAABw1IAAcNUAAHDVgABw1kAAcNaAAHDWwABw1wAAcNdAAHDXwABw2EAAcNiAAHDYwABw2UAAcNmAAHDpQABw6cAAcOpAAHDqwABw64AAcOvAAHDsAABw7EAAcOyAAHDtAABw7YAAcO3AAHDuAABw7oAAcO7AAHD+gABw/wAAcP+AAHEAAABxAMAAcQEAAHEBQABxAYAAcQHAAHECQABxAsAAcQMAAHEDQABxA8AAcQQAAHEWwABxH4AAcSeAAHEvgABxMAAAcTCAAHExAABxMYAAcTJAAHEygABxMsAAcTOAAHEzwABxNEAAcTSAAHE1AABxNcAAcTYAAHE2QABxNwAAcTdAAHE4gABxO8AAcT0AAHE9gABxPgAAcT9AAHFAAABxQMAAcUFAAHFKgABxU4AAcV1AAHFmQABxZwAAcWeAAHFoAABxaIAAcWkAAHFpgABxacAAcWqAAHFtwABxcgAAcXKAAHFzAABxc4AAcXQAAHF0gABxdQAAcXWAAHF2AABxekAAcXsAAHF7wABxfIAAcX1AAHF+AABxfsAAcX+AAHGAQABxgMAAcZCAAHGRAABxkYAAcZIAAHGSwABxkwAAcZNAAHGTgABxk8AAcZRAAHGUwABxlQAAcZVAAHGVwABxlgAAcaXAAHGmQABxpsAAcadAAHGoAABxqEAAcaiAAHGowABxqQAAcamAAHGqAABxqkAAcaqAAHGrAABxq0AAcbsAAHG7gABxvEAAcbzAAHG9gABxvcAAcb4AAHG+QABxvoAAcb8AAHG/gABxv8AAccAAAHHAgABxwMAAccQAAHHEQABxxIAAccUAAHHUwABx1UAAcdXAAHHWQABx1wAAcddAAHHXgABx18AAcdgAAHHYgABx2QAAcdlAAHHZgABx2gAAcdpAAHHqAABx6oAAcesAAHHrgABx7EAAceyAAHHswABx7QAAce1AAHHtwABx7kAAce6AAHHuwABx70AAce+AAHH/QABx/8AAcgBAAHIAwAByAYAAcgHAAHICAAByAkAAcgKAAHIDAAByA4AAcgPAAHIEAAByBIAAcgTAAHIUgAByFQAAchWAAHIWAAByFsAAchcAAHIXQAByF4AAchfAAHIYQAByGMAAchkAAHIZQAByGcAAchoAAHIpwAByKkAAcirAAHIrQAByLAAAcixAAHIsgAByLMAAci0AAHItgAByLgAAci5AAHIugAByLwAAci9AAHI4gAByQYAAcktAAHJUQAByVQAAclWAAHJWAAByVoAAclcAAHJXgAByV8AAcliAAHJbwAByX4AAcmAAAHJggAByYQAAcmGAAHJiAAByYoAAcmMAAHJmwAByZ4AAcmhAAHJpAAByacAAcmqAAHJrQABybAAAcmyAAHJ8QAByfMAAcn1AAHJ9wAByfoAAcn7AAHJ/AAByf0AAcn+AAHKAAABygIAAcoDAAHKBAABygYAAcoHAAHKRgABykgAAcpKAAHKTAAByk8AAcpQAAHKUQABylIAAcpTAAHKVQABylcAAcpYAAHKWQABylsAAcpcAAHKmwAByp0AAcqfAAHKoQAByqQAAcqlAAHKpgAByqcAAcqoAAHKqgAByqwAAcqtAAHKrgAByrAAAcqxAAHK8AAByvIAAcr0AAHK9gAByvkAAcr6AAHK+wAByvwAAcr9AAHK/wABywEAAcsCAAHLAwABywUAAcsGAAHLRQABy0cAActJAAHLSwABy04AActPAAHLUAABy1EAActSAAHLVAABy1YAActXAAHLWAABy1oAActbAAHLmgABy5wAAcueAAHLoAABy6MAAcukAAHLpQABy6YAAcunAAHLqQABy6sAAcusAAHLrQABy68AAcuwAAHL7wABy/EAAcvzAAHL9QABy/gAAcv5AAHL+gABy/sAAcv8AAHL/gABzAAAAcwBAAHMAgABzAQAAcwFAAHMUAABzHMAAcyTAAHMswABzLUAAcy3AAHMuQABzLsAAcy+AAHMvwABzMAAAczDAAHMxAABzMYAAczHAAHMyQABzMwAAczNAAHMzgABzNEAAczSAAHM1wABzOQAAczpAAHM6wABzO0AAczyAAHM9QABzPgAAcz6AAHNHwABzUMAAc1qAAHNjgABzZEAAc2TAAHNlQABzZcAAc2ZAAHNmwABzZwAAc2fAAHNrAABzb0AAc2/AAHNwQABzcMAAc3FAAHNxwABzckAAc3LAAHNzQABzd4AAc3hAAHN5AABzecAAc3qAAHN7QABzfAAAc3zAAHN9gABzfgAAc43AAHOOQABzjsAAc49AAHOQAABzkEAAc5CAAHOQwABzkQAAc5GAAHOSAABzkkAAc5KAAHOTAABzk0AAc6MAAHOjgABzpAAAc6SAAHOlQABzpYAAc6XAAHOmAABzpkAAc6bAAHOnQABzp4AAc6fAAHOoQABzqIAAc7hAAHO4wABzuYAAc7oAAHO6wABzuwAAc7tAAHO7gABzu8AAc7xAAHO8wABzvQAAc71AAHO9wABzvgAAc8FAAHPBgABzwcAAc8JAAHPSAABz0oAAc9MAAHPTgABz1EAAc9SAAHPUwABz1QAAc9VAAHPVwABz1kAAc9aAAHPWwABz10AAc9eAAHPnQABz58AAc+hAAHPowABz6YAAc+nAAHPqAABz6kAAc+qAAHPrAABz64AAc+vAAHPsAABz7IAAc+zAAHP8gABz/QAAc/2AAHP+AABz/sAAc/8AAHP/QABz/4AAc//AAHQAQAB0AMAAdAEAAHQBQAB0AcAAdAIAAHQRwAB0EkAAdBLAAHQTQAB0FAAAdBRAAHQUgAB0FMAAdBUAAHQVgAB0FgAAdBZAAHQWgAB0FwAAdBdAAHQnAAB0J4AAdCgAAHQogAB0KUAAdCmAAHQpwAB0KgAAdCpAAHQqwAB0K0AAdCuAAHQrwAB0LEAAdCyAAHQ1wAB0PsAAdEiAAHRRgAB0UkAAdFLAAHRTQAB0U8AAdFRAAHRUwAB0VQAAdFXAAHRZAAB0XMAAdF1AAHRdwAB0XkAAdF7AAHRfQAB0X8AAdGBAAHRkAAB0ZMAAdGWAAHRmQAB0ZwAAdGfAAHRogAB0aUAAdGnAAHR5gAB0egAAdHqAAHR7AAB0e8AAdHwAAHR8QAB0fIAAdHzAAHR9QAB0fcAAdH4AAHR+QAB0fsAAdH8AAHSOwAB0j0AAdI/AAHSQQAB0kQAAdJFAAHSRgAB0kcAAdJIAAHSSgAB0kwAAdJNAAHSTgAB0lAAAdJRAAHSkAAB0pIAAdKUAAHSlgAB0pkAAdKaAAHSmwAB0pwAAdKdAAHSnwAB0qEAAdKiAAHSowAB0qUAAdKmAAHS5QAB0ucAAdLpAAHS6wAB0u4AAdLvAAHS8AAB0vEAAdLyAAHS9AAB0vYAAdL3AAHS+AAB0voAAdL7AAHTOgAB0zwAAdM+AAHTQAAB00MAAdNEAAHTRQAB00YAAdNHAAHTSQAB00sAAdNMAAHTTQAB008AAdNQAAHTjwAB05EAAdOTAAHTlQAB05gAAdOZAAHTmgAB05sAAdOcAAHTngAB06AAAdOhAAHTogAB06QAAdOlAAHT5AAB0+YAAdPoAAHT6gAB0+0AAdPuAAHT7wAB0/AAAdPxAAHT8wAB0/UAAdP2AAHT9wAB0/kAAdP6AAHUAwAB1AQAAdQGAAHURQAB1EcAAdRJAAHUSwAB1E4AAdRPAAHUUAAB1FE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AAgDcAAIA3QACAN8AAgEeAAIBIAACASIAAgEkAAIBJwACASgAAgEpAAIBKgACASsAAgEtAAIBLwACATAAAgExAAIBMwACATQAAgFzAAIBdQACAXcAAgF5AAIBfAACAX0AAgF+AAIBfwACAYAAAgGCAAIBhAACAYUAAgGGAAIBiAACAYkAAgHIAAIBygACAcwAAgHOAAIB0QACAdIAAgHTAAIB1AACAdUAAgHXAAIB2QACAdoAAgHbAAIB3QACAd4AAgIdAAICHwACAiEAAgIjAAICJgACAicAAgIoAAICKQACAioAAgIsAAICLgACAi8AAgIwAAICMgACAjMAAgJyAAICdAACAnYAAgJ4AAICewACAnwAAgJ9AAICfgACAn8AAgKBAAICgwACAoQAAgKFAAIChwACAogAAgKtAAIC0QACAvgAAgMcAAIDHwACAyEAAgMjAAIDJQACAycAAgMpAAIDKgACAy0AAgM6AAIDSQACA0sAAgNNAAIDTwACA1EAAgNTAAIDVQACA1cAAgNmAAIDaQACA2wAAgNvAAIDcgACA3UAAgN4AAIDewACA30AAgO8AAIDvgACA8AAAgPCAAIDxQACA8YAAgPHAAIDyAACA8kAAgPLAAIDzQACA84AAgPPAAID0QACA9IAAgQRAAIEEwACBBUAAgQXAAIEGgACBBsAAgQcAAIEHQACBB4AAgQgAAIEIgACBCMAAgQkAAIEJgACBCcAAgRmAAIEaAACBGoAAgRsAAIEbwACBHAAAgRxAAIEcgACBHMAAgR1AAIEdwACBHgAAgR5AAIEewACBHwAAgS7AAIEvQACBMAAAgTCAAIExQACBMYAAgTHAAIEyAACBMkAAgTLAAIEzQACBM4AAgTPAAIE0QACBNIAAgUVAAIFOQACBV0AAgWAAAIFpwACBccAAgXuAAIGFQACBjUAAgZZAAIGfQACBn8AAgaCAAIGhAACBoYAAgaIAAIGiwACBo4AAgaQAAIGkgACBpUAAgaXAAIGmQACBpwAAgafAAIGoAACBqUAAgayAAIGtQACBrcAAga6AAIGvQACBr8AAgbkAAIHCAACBy8AAgdTAAIHVgACB1gAAgdaAAIHXAACB14AAgdgAAIHYQACB2QAAgdxAAIHhAACB4YAAgeIAAIHigACB4wAAgeOAAIHkAACB5IAAgeUAAIHlgACB6kAAgesAAIHrwACB7IAAge1AAIHuAACB7sAAge+AAIHwQACB8QAAgfGAAIIBQACCAcAAggKAAIIDAACCA8AAggQAAIIEQACCBIAAggTAAIIFQACCBcAAggYAAIIGQACCBsAAggcAAIIJQACCCYAAggoAAIIZwACCGkAAghrAAIIbQACCHAAAghxAAIIcgACCHMAAgh0AAIIdgACCHgAAgh5AAIIegACCHwAAgh9AAIIvAACCL4AAgjBAAIIwwACCMYAAgjHAAIIyAACCMkAAgjKAAIIzAACCM4AAgjPAAII0AACCNIAAgjTAAII3AACCN0AAgjfAAIJHgACCSAAAgkiAAIJJAACCScAAgkoAAIJKQACCSoAAgkrAAIJLQACCS8AAgkwAAIJMQACCTMAAgk0AAIJcwACCXUAAgl4AAIJegACCX0AAgl+AAIJfwACCYAAAgmBAAIJgwACCYUAAgmGAAIJhwACCYkAAgmKAAIJkwACCZQAAgmWAAIJ1QACCdcAAgnZAAIJ2wACCd4AAgnfAAIJ4AACCeEAAgniAAIJ5AACCeYAAgnnAAIJ6AACCeoAAgnrAAIKKgACCiwAAgovAAIKMQACCjQAAgo1AAIKNgACCjcAAgo4AAIKOgACCjwAAgo9AAIKPgACCkAAAgpBAAIKTgACCk8AAgpQAAIKUgACCpEAAgqTAAIKlQACCpcAAgqaAAIKmwACCpwAAgqdAAIKngACCqAAAgqiAAIKowACCqQAAgqmAAIKpwACCuYAAgroAAIK6gACCuwAAgrvAAIK8AACCvEAAgryAAIK8wACCvUAAgr3AAIK+AACCvkAAgr7AAIK/AACCwkAAgsSAAILFQACCxcAAgsaAAILHQACCyYAAgspAAILLAACCy8AAgsyAAILNAACCzkAAgs+AAILQwACC44AAguxAAIL0QACC/EAAgvzAAIL9QACC/cAAgv5AAIL/AACC/0AAgv+AAIMAQACDAIAAgwEAAIMBQACDAcAAgwKAAIMCwACDAwAAgwPAAIMEAACDBUAAgwiAAIMJwACDCkAAgwrAAIMMAACDDMAAgw2AAIMOAACDF0AAgyBAAIMqAACDMwAAgzPAAIM0QACDNMAAgzVAAIM1wACDNkAAgzaAAIM3QACDOoAAgz7AAIM/QACDP8AAg0BAAINAwACDQUAAg0HAAINCQACDQs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AAhfgAAIX4QACF+IAAhfkAAIX5QACGAoAAhguAAIYVQACGHkAAhh8AAIYfgACGIAAAhiCAAIYhAACGIYAAhiHAAIYigACGJcAAhimAAIYqAACGKoAAhisAAIYrgACGLAAAhiyAAIYtAACGMMAAhjGAAIYyQACGMwAAhjPAAIY0gACGNUAAhjYAAIY2gACGRkAAhkbAAIZHgACGSAAAhkjAAIZJAACGSUAAhkmAAIZJwACGSkAAhkrAAIZLAACGS0AAhkvAAIZMAACGW8AAhlxAAIZcwACGXUAAhl4AAIZeQACGXoAAhl7AAIZfAACGX4AAhmAAAIZgQACGYIAAhmEAAIZhQACGcQAAhnGAAIZyAACGcoAAhnNAAIZzgACGc8AAhnQAAIZ0QACGdMAAhnVAAIZ1gACGdcAAhnZAAIZ2gACGhkAAhobAAIaHgACGiAAAhojAAIaJAACGiUAAhomAAIaJwACGikAAhorAAIaLAACGi0AAhovAAIaMAACGm8AAhpxAAIacwACGnUAAhp4AAIaeQACGnoAAhp7AAIafAACGn4AAhqAAAIagQACGoIAAhqEAAIahQACGsQAAhrGAAIayAACGsoAAhrNAAIazgACGs8AAhrQAAIa0QACGtMAAhrVAAIa1gACGtcAAhrZAAIa2gACGxkAAhsbAAIbHQACGx8AAhsiAAIbIwACGyQAAhslAAIbJgACGygAAhsqAAIbKwACGywAAhsuAAIbLwACG3oAAhudAAIbvQACG90AAhvfAAIb4QACG+MAAhvlAAIb6AACG+kAAhvqAAIb7QACG+4AAhvwAAIb8QACG/MAAhv2AAIb9wACG/gAAhv7AAIb/AACHAEAAhwOAAIcEwACHBUAAhwXAAIcHAACHB8AAhwiAAIcJAACHEkAAhxtAAIclAACHLgAAhy7AAIcvQACHL8AAhzBAAIcwwACHMUAAhzGAAIcyQACHNYAAhznAAIc6QACHOsAAhztAAIc7wACHPEAAhzzAAIc9QACHPcAAh0IAAIdCwACHQ4AAh0RAAIdFAACHRcAAh0aAAIdHQACHSAAAh0iAAIdYQACHWMAAh1lAAIdZwACHWoAAh1rAAIdbAACHW0AAh1uAAIdcAACHXIAAh1zAAIddAACHXYAAh13AAIdtgACHbgAAh26AAIdvAACHb8AAh3AAAIdwQACHcIAAh3DAAIdxQACHccAAh3IAAIdyQACHcsAAh3MAAIeCwACHg0AAh4QAAIeEgACHhUAAh4WAAIeFwACHhgAAh4ZAAIeGwACHh0AAh4eAAIeHwACHiEAAh4iAAIeLwACHjAAAh4xAAIeMwACHnIAAh50AAIedgACHngAAh57AAIefAACHn0AAh5+AAIefwACHoEAAh6DAAIehAACHoUAAh6HAAIeiAACHscAAh7JAAIeywACHs0AAh7QAAIe0QACHtIAAh7TAAIe1AACHtYAAh7YAAIe2QACHtoAAh7cAAIe3QACHxwAAh8eAAIfIAACHyIAAh8lAAIfJgACHycAAh8oAAIfKQACHysAAh8tAAIfLgACHy8AAh8xAAIfMgACH3EAAh9zAAIfdQACH3cAAh96AAIfewACH3wAAh99AAIffgACH4AAAh+CAAIfgwACH4QAAh+GAAIfhwACH8YAAh/IAAIfygACH8wAAh/PAAIf0AACH9EAAh/SAAIf0wACH9UAAh/XAAIf2AACH9kAAh/bAAIf3AACIAEAAiAlAAIgTAACIHAAAiBzAAIgdQACIHcAAiB5AAIgewACIH0AAiB+AAIggQACII4AAiCdAAIgnwACIKEAAiCjAAIgpQACIKcAAiCpAAIgqwACILoAAiC9AAIgwAACIMMAAiDGAAIgyQACIMwAAiDPAAIg0QACIRAAAiESAAIhFQACIRcAAiEaAAIhGwACIRwAAiEdAAIhHgACISAAAiEiAAIhIwACISQAAiEmAAIhJwACIWYAAiFoAAIhagACIWwAAiFvAAIhcAACIXEAAiFyAAIhcwACIXUAAiF3AAIheAACIXkAAiF7AAIhfAACIbsAAiG9AAIhvwACIcEAAiHEAAIhxQACIcYAAiHHAAIhyAACIcoAAiHMAAIhzQACIc4AAiHQAAIh0QACIhAAAiISAAIiFQACIhcAAiIaAAIiGwACIhwAAiIdAAIiHgACIiAAAiIiAAIiIwACIiQAAiImAAIiJwACImYAAiJoAAIiagACImwAAiJvAAIicAACInEAAiJyAAIicwACInUAAiJ3AAIieAACInkAAiJ7AAIifAACIrsAAiK9AAIivwACIsEAAiLEAAIixQACIsYAAiLHAAIiyAACIsoAAiLMAAIizQACIs4AAiLQAAIi0QACIxAAAiMSAAIjFAACIxYAAiMZAAIjGgACIxsAAiMcAAIjHQACIx8AAiMhAAIjIgACIyMAAiMlAAIjJgACI3EAAiOUAAIjtAACI9QAAiPWAAIj2AACI9oAAiPcAAIj3wACI+AAAiPhAAIj5AACI+UAAiPnAAIj6AACI+oAAiPtAAIj7gACI+8AAiPyAAIj8wACI/gAAiQFAAIkCgACJAwAAiQOAAIkEwACJBYAAiQZAAIkGwACJEAAAiRkAAIkiwACJK8AAiSyAAIktAACJLYAAiS4AAIkugACJLwAAiS9AAIkwAACJM0AAiTeAAIk4AACJOIAAiTkAAIk5gACJOgAAiTqAAIk7AACJO4AAiT/AAIlAgACJQUAAiUIAAIlCwACJQ4AAiURAAIlFAACJRcAAiUZAAIlWAACJVoAAiVcAAIlXgACJWEAAiViAAIlYwACJWQAAiVlAAIlZwACJWkAAiVqAAIlawACJW0AAiVuAAIlrQACJa8AAiWxAAIlswACJbYAAiW3AAIluAACJbkAAiW6AAIlvAACJb4AAiW/AAIlwAACJcIAAiXDAAImAgACJgQAAiYHAAImCQACJgwAAiYNAAImDgACJg8AAiYQAAImEgACJhQAAiYVAAImFgACJhgAAiYZAAImJgACJicAAiYoAAImKgACJmkAAiZrAAImbQACJm8AAiZyAAImcwACJnQAAiZ1AAImdgACJngAAiZ6AAImewACJnwAAiZ+AAImfwACJr4AAibAAAImwgACJsQAAibHAAImyAACJskAAibKAAImywACJs0AAibPAAIm0AACJtEAAibTAAIm1AACJxMAAicVAAInFwACJxkAAiccAAInHQACJx4AAicfAAInIAACJyIAAickAAInJQACJyYAAicoAAInKQACJ2gAAidqAAInbAACJ24AAidxAAIncgACJ3MAAid0AAIndQACJ3cAAid5AAInegACJ3sAAid9AAInfgACJ70AAie/AAInwQACJ8MAAifGAAInxwACJ8gAAifJAAInygACJ8wAAifOAAInzwACJ9AAAifSAAIn0wACJ/gAAigcAAIoQwACKGcAAihqAAIobAACKG4AAihwAAIocgACKHQAAih1AAIoeAACKIUAAiiUAAIolgACKJgAAiiaAAIonAACKJ4AAiigAAIoogACKLEAAii0AAIotwACKLoAAii9AAIowAACKMMAAijGAAIoyAACKQcAAikJAAIpCwACKQ0AAikQAAIpEQACKRIAAikTAAIpFAACKRYAAikYAAIpGQACKRoAAikcAAIpHQACKVwAAileAAIpYAACKWIAAillAAIpZgACKWcAAiloAAIpaQACKWsAAiltAAIpbgACKW8AAilxAAIpcgACKbEAAimzAAIptQACKbcAAim6AAIpuwACKbwAAim9AAIpvgACKcAAAinCAAIpwwACKcQAAinGAAIpxwACKgYAAioIAAIqCgACKgwAAioPAAIqEAACKhEAAioSAAIqEwACKhUAAioXAAIqGAACKhkAAiobAAIqHAACKlsAAipdAAIqXwACKmEAAipkAAIqZQACKmYAAipnAAIqaAACKmoAAipsAAIqbQACKm4AAipwAAIqcQACKrAAAiqyAAIqtAACKrYAAiq5AAIqugACKrsAAiq8AAIqvQACKr8AAirBAAIqwgACKsMAAirFAAIqxgACKwUAAisHAAIrCQACKwsAAisOAAIrDwACKxAAAisRAAIrEgACKxQAAisWAAIrFwACKxgAAisaAAIrGwACKyQAAislAAIrJwACK2YAAitoAAIragACK2wAAitvAAIrcAACK3EAAityAAIrcwACK3UAAit3AAIreAACK3kAAit7AAIrfAACK7sAAiu9AAIrvwACK8EAAivEAAIrxQACK8YAAivHAAIryAACK8oAAivMAAIrzQACK84AAivQAAIr0QACLBAAAiwSAAIsFQACLBcAAiwaAAIsGwACLBwAAiwdAAIsHgACLCAAAiwiAAIsIwACLCQAAiwmAAIsJwACLHIAAiyVAAIstQACLNUAAizXAAIs2QACLNsAAizdAAIs3wACLOAAAizhAAIs5AACLOUAAiznAAIs6AACLOoAAizsAAIs7QACLO4AAizxAAIs8gACLPcAAi0EAAItCQACLQsAAi0NAAItEgACLRUAAi0YAAItGgACLT8AAi1jAAItigACLa4AAi2xAAItswACLbUAAi23AAItuQACLbsAAi28AAItvwACLcwAAi3dAAIt3wACLeEAAi3jAAIt5QACLecAAi3pAAIt6wACLe0AAi3+AAIuAQACLgQAAi4HAAIuCgACLg0AAi4QAAIuEwACLhYAAi4YAAIuVwACLlkAAi5bAAIuXQACLmAAAi5hAAIuYgACLmMAAi5kAAIuZgACLmgAAi5pAAIuagACLmwAAi5tAAIurAACLq4AAi6wAAIusgACLrUAAi62AAIutwACLrgAAi65AAIuuwACLr0AAi6+AAIuvwACLsEAAi7CAAIvAQACLwMAAi8GAAIvCAACLwsAAi8MAAIvDQACLw4AAi8PAAIvEQACLxMAAi8UAAIvFQACLxcAAi8YAAIvJQACLyYAAi8nAAIvKQACL2gAAi9qAAIvbAACL24AAi9xAAIvcgACL3MAAi90AAIvdQACL3cAAi95AAIvegACL3sAAi99AAIvfgACL70AAi+/AAIvwQACL8MAAi/GAAIvxwACL8gAAi/JAAIvygACL8wAAi/OAAIvzwACL9AAAi/SAAIv0wACMBIAAjAUAAIwFgACMBgAAjAbAAIwHAACMB0AAjAeAAIwHwACMCEAAjAjAAIwJAACMCUAAjAnAAIwKAACMGcAAjBpAAIwawACMG0AAjBwAAIwcQACMHIAAjBzAAIwdAACMHYAAjB4AAIweQACMHoAAjB8AAIwfQACMLwAAjC+AAIwwAACMMIAAjDFAAIwxgACMMcAAjDIAAIwyQACMMsAAjDNAAIwzgACMM8AAjDRAAIw0gACMPcAAjEbAAIxQgACMWYAAjFpAAIxawACMW0AAjFvAAIxcQACMXMAAjF0AAIxdwACMYQAAjGTAAIxlQACMZcAAjGZAAIxmwACMZ0AAjGfAAIxoQACMbAAAjGzAAIxtgACMbkAAjG8AAIxvwACMcIAAjHFAAIxxwACMgYAAjIIAAIyCwACMg0AAjIQAAIyEQACMhIAAjITAAIyFAACMhYAAjIYAAIyGQACMhoAAjIcAAIyHQACMlwAAjJeAAIyYAACMmIAAjJlAAIyZgACMmcAAjJoAAIyaQACMmsAAjJtAAIybgACMm8AAjJxAAIycgACMrEAAjKzAAIytQACMrcAAjK6AAIyuwACMrwAAjK9AAIyvgACMsAAAjLCAAIywwACMsQAAjLGAAIyxwACMwYAAjMIAAIzCwACMw0AAjMQAAIzEQACMxIAAjMTAAIzFAACMxYAAjMYAAIzGQACMxoAAjMcAAIzHQACM1wAAjNeAAIzYAACM2IAAjNlAAIzZgACM2cAAjNoAAIzaQACM2sAAjNtAAIzbgACM28AAjNxAAIzcgACM7EAAjOzAAIztQACM7cAAjO6AAIzuwACM7wAAjO9AAIzvgACM8AAAjPCAAIzwwACM8QAAjPGAAIzxwACNAYAAjQIAAI0CgACNAwAAjQPAAI0EAACNBEAAjQSAAI0EwACNBUAAjQXAAI0GAACNBkAAjQbAAI0HAACNGcAAjSKAAI0qgACNMoAAjTMAAI0zgACNNAAAjTSAAI01AACNNUAAjTWAAI02QACNNoAAjTcAAI03QACNN8AAjThAAI04gACNOMAAjTmAAI05wACNOwAAjT5AAI0/gACNQAAAjUCAAI1BwACNQoAAjUNAAI1DwACNTQAAjVYAAI1fwACNaMAAjWmAAI1qAACNaoAAjWsAAI1rgACNbAAAjWxAAI1tAACNcEAAjXSAAI11AACNdYAAjXYAAI12gACNdwAAjXeAAI14AACNeIAAjXzAAI19gACNfkAAjX8AAI1/wACNgIAAjYFAAI2CAACNgsAAjYNAAI2TAACNk4AAjZQAAI2UgACNlUAAjZWAAI2VwACNlgAAjZZAAI2WwACNl0AAjZeAAI2XwACNmEAAjZiAAI2oQACNqMAAjalAAI2pwACNqoAAjarAAI2rAACNq0AAjauAAI2sAACNrIAAjazAAI2tAACNrYAAja3AAI29gACNvgAAjb7AAI2/QACNwAAAjcBAAI3AgACNwMAAjcEAAI3BgACNwgAAjcJAAI3CgACNwwAAjcNAAI3GgACNxsAAjccAAI3HgACN10AAjdfAAI3YQACN2MAAjdmAAI3ZwACN2gAAjdpAAI3agACN2wAAjduAAI3bwACN3AAAjdyAAI3cwACN7IAAje0AAI3tgACN7gAAje7AAI3vAACN70AAje+AAI3vwACN8EAAjfDAAI3xAACN8UAAjfHAAI3yAACOAcAAjgJAAI4CwACOA0AAjgQAAI4EQACOBIAAjgTAAI4FAACOBYAAjgYAAI4GQACOBoAAjgcAAI4HQACOFwAAjheAAI4YAACOGIAAjhlAAI4ZgACOGcAAjhoAAI4aQACOGsAAjhtAAI4bgACOG8AAjhxAAI4cgACOLEAAjizAAI4tQACOLcAAji6AAI4uwACOLwAAji9AAI4vgACOMAAAjjCAAI4wwACOMQAAjjGAAI4xwACOOwAAjkQAAI5NwACOVsAAjleAAI5YAACOWIAAjlkAAI5ZgACOWgAAjlpAAI5bAACOXk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AAkVZAAJFWwACRVwAAkWbAAJFnQACRaAAAkWiAAJFpQACRaYAAkWnAAJFqAACRakAAkWrAAJFrQACRa4AAkWvAAJFsQACRbIAAkW/AAJFwAACRcEAAkXDAAJGAgACRgQAAkYGAAJGCAACRgsAAkYMAAJGDQACRg4AAkYPAAJGEQACRhMAAkYUAAJGFQACRhcAAkYYAAJGVwACRlkAAkZbAAJGXQACRmAAAkZhAAJGYgACRmMAAkZkAAJGZgACRmgAAkZpAAJGagACRmwAAkZtAAJGrAACRq4AAkawAAJGsgACRrUAAka2AAJGtwACRrgAAka5AAJGuwACRr0AAka+AAJGvwACRsEAAkbCAAJHAQACRwMAAkcFAAJHBwACRwoAAkcLAAJHDAACRw0AAkcOAAJHEAACRxIAAkcTAAJHFAACRxYAAkcXAAJHVgACR1gAAkdaAAJHXAACR18AAkdgAAJHYQACR2IAAkdjAAJHZQACR2cAAkdoAAJHaQACR2sAAkdsAAJHkQACR7UAAkfcAAJIAAACSAMAAkgFAAJIBwACSAkAAkgLAAJIDQACSA4AAkgRAAJIHgACSC0AAkgvAAJIMQACSDMAAkg1AAJINwACSDkAAkg7AAJISgACSE0AAkhQAAJIUwACSFYAAkhZAAJIXAACSF8AAkhhAAJIoAACSKIAAkikAAJIpgACSKkAAkiqAAJIqwACSKwAAkitAAJIrwACSLEAAkiyAAJIswACSLUAAki2AAJI9QACSPcAAkj5AAJI+wACSP4AAkj/AAJJAAACSQEAAkkCAAJJBAACSQYAAkkHAAJJCAACSQoAAkkLAAJJSgACSUwAAklOAAJJUAACSVMAAklUAAJJVQACSVYAAklXAAJJWQACSVsAAklcAAJJXQACSV8AAklgAAJJnwACSaEAAkmkAAJJpgACSakAAkmqAAJJqwACSawAAkmtAAJJrwACSbEAAkmyAAJJswACSbUAAkm2AAJJ+QACSh0AAkpBAAJKZAACSosAAkqrAAJK0gACSvkAAksZAAJLPQACS2EAAktjAAJLZgACS2gAAktqAAJLbAACS28AAktyAAJLdAACS3YAAkt5AAJLewACS30AAkuAAAJLgwACS4QAAkuJAAJLlgACS5kAAkubAAJLngACS6EAAkujAAJLyAACS+wAAkwTAAJMNwACTDoAAkw8AAJMPgACTEAAAkxCAAJMRAACTEUAAkxIAAJMVQACTGgAAkxqAAJMbAACTG4AAkxwAAJMcgACTHQAAkx2AAJMeAACTHoAAkyNAAJMkAACTJMAAkyWAAJMmQACTJwAAkyfAAJMogACTKUAAkyoAAJMqgACTOkAAkzrAAJM7gACTPAAAkzzAAJM9AACTPUAAkz2AAJM9wACTPkAAkz7AAJM/AACTP0AAkz/AAJNAAACTQkAAk0KAAJNDAACTUsAAk1NAAJNTwACTVEAAk1UAAJNVQACTVYAAk1XAAJNWAACTVoAAk1cAAJNXQACTV4AAk1gAAJNYQACTaAAAk2iAAJNpQACTacAAk2qAAJNqwACTawAAk2tAAJNrgACTbAAAk2yAAJNswACTbQAAk22AAJNtwACTcAAAk3BAAJNwwACTgIAAk4EAAJOBgACTggAAk4LAAJODAACTg0AAk4OAAJODwACThEAAk4TAAJOFAACThUAAk4XAAJOGAACTlcAAk5ZAAJOXAACTl4AAk5hAAJOYgACTmMAAk5kAAJOZQACTmcAAk5pAAJOagACTmsAAk5tAAJObgACTncAAk54AAJOegACTrkAAk67AAJOvQACTr8AAk7CAAJOwwACTsQAAk7FAAJOxgACTsgAAk7KAAJOywACTswAAk7OAAJOzwACTw4AAk8QAAJPEwACTxUAAk8YAAJPGQACTxoAAk8bAAJPHAACTx4AAk8gAAJPIQACTyIAAk8kAAJPJQACTzIAAk8zAAJPNAACTzYAAk91AAJPdwACT3kAAk97AAJPfgACT38AAk+AAAJPgQACT4IAAk+EAAJPhgACT4cAAk+IAAJPigACT4sAAk/KAAJPzAACT84AAk/QAAJP0wACT9QAAk/VAAJP1gACT9cAAk/ZAAJP2wACT9wAAk/dAAJP3wACT+AAAk/tAAJP+AACT/oAAk/9AAJP/wACUAIAAlAFAAJQEAACUBMAAlAWAAJQGQACUBwAAlAfAAJQIQACUCcAAlAsAAJQMgACUH0AAlCgAAJQwAACUOAAAlDiAAJQ5AACUOYAAlDoAAJQ6wACUOwAAlDtAAJQ8AACUPEAAlDzAAJQ9AACUPYAAlD4AAJQ+QACUPoAAlD9AAJQ/gACUQMAAlEQAAJRFQACURcAAlEZAAJRHgACUSEAAlEkAAJRJgACUUsAAlFvAAJRlgACUboAAlG9AAJRvwACUcEAAlHDAAJRxQACUccAAlHIAAJRywACUdgAAlHpAAJR6wACUe0AAlHvAAJR8QACUfMAAlH1AAJR9wACUfkAAlIKAAJSDQACUhAAAlITAAJSFgACUhkAAlIcAAJSHwACUiIAAlIkAAJSYwACUmUAAlJnAAJSaQACUmwAAlJtAAJSbgACUm8AAlJwAAJScgACUnQAAlJ1AAJSdgACUngAAlJ5AAJSuAACUroAAlK8AAJSvgACUsEAAlLCAAJSwwACUsQAAlLFAAJSxwACUskAAlLKAAJSywACUs0AAlLOAAJTDQACUw8AAlMSAAJTFAACUxcAAlMYAAJTGQACUxoAAlMbAAJTHQACUx8AAlMgAAJTIQACUyMAAlMkAAJTMQACUzIAAlMzAAJTNQACU3QAAlN2AAJTeAACU3oAAlN9AAJTfgACU38AAlOAAAJTgQACU4MAAlOFAAJThgACU4cAAlOJAAJTigACU8kAAlPLAAJTzQACU88AAlPSAAJT0wACU9QAAlPVAAJT1gACU9gAAlPaAAJT2wACU9wAAlPeAAJT3wACVB4AAlQgAAJUIgACVCQAAlQnAAJUKAACVCkAAlQqAAJUKwACVC0AAlQvAAJUMAACVDEAAlQzAAJUNAACVHMAAlR1AAJUdwACVHkAAlR8AAJUfQACVH4AAlR/AAJUgAACVIIAAlSEAAJUhQACVIYAAlSIAAJUiQACVMgAAlTKAAJUzAACVM4AAlTRAAJU0gACVNMAAlTUAAJU1QACVNcAAlTZAAJU2gACVNsAAlTdAAJU3gACVQMAAlUnAAJVTgACVXIAAlV1AAJVdwACVXkAAlV7AAJVfQACVX8AAlWAAAJVgwACVZAAAlWfAAJVoQACVaMAAlWlAAJVpwACVakAAlWrAAJVrQACVbwAAlW/AAJVwgACVcUAAlXIAAJVywACVc4AAlXRAAJV0wACVhIAAlYUAAJWFwACVhkAAlYcAAJWHQACVh4AAlYfAAJWIAACViIAAlYkAAJWJQACViYAAlYoAAJWKQACVmgAAlZqAAJWbAACVm4AAlZxAAJWcgACVnMAAlZ0AAJWdQACVncAAlZ5AAJWegACVnsAAlZ9AAJWfgACVr0AAla/AAJWwQACVsMAAlbGAAJWxwACVsgAAlbJAAJWygACVswAAlbOAAJWzwACVtAAAlbSAAJW0wACVxIAAlcUAAJXFwACVxkAAlccAAJXHQACVx4AAlcfAAJXIAACVyIAAlckAAJXJQACVyYAAlcoAAJXKQACV2gAAldqAAJXbAACV24AAldxAAJXcgACV3MAAld0AAJXdQACV3cAAld5AAJXegACV3sAAld9AAJXfgACV70AAle/AAJXwQACV8MAAlfGAAJXxwACV8gAAlfJAAJXygACV8wAAlfOAAJXzwACV9AAAlfSAAJX0wACWBIAAlgUAAJYFgACWBgAAlgbAAJYHAACWB0AAlgeAAJYHwACWCEAAlgjAAJYJAACWCUAAlgnAAJYKAACWHMAAliWAAJYtgACWNYAAljYAAJY2gACWNwAAljeAAJY4QACWOIAAljjAAJY5gACWOcAAljpAAJY6gACWOwAAljvAAJY8AACWPEAAlj0AAJY9QACWPoAAlkHAAJZDAACWQ4AAlkQAAJZFQACWRgAAlkbAAJZHQACWUIAAllmAAJZjQACWbEAAlm0AAJZtgACWbgAAlm6AAJZvAACWb4AAlm/AAJZwgACWc8AAlngAAJZ4gACWeQAAlnmAAJZ6AACWeoAAlnsAAJZ7gACWfAAAloBAAJaBAACWgcAAloKAAJaDQACWhAAAloTAAJaFgACWhkAAlobAAJaWgACWlwAAlpeAAJaYAACWmMAAlpkAAJaZQACWmYAAlpnAAJaaQACWmsAAlpsAAJabQACWm8AAlpwAAJarwACWrEAAlqzAAJatQACWrgAAlq5AAJaugACWrsAAlq8AAJavgACWsAAAlrBAAJawgACWsQAAlrFAAJbBAACWwYAAlsJAAJbCwACWw4AAlsPAAJbEAACWxEAAlsSAAJbFAACWxYAAlsXAAJbGAACWxoAAlsbAAJbKAACWykAAlsqAAJbLAACW2sAAlttAAJbbwACW3EAAlt0AAJbdQACW3YAAlt3AAJbeAACW3oAAlt8AAJbfQACW34AAluAAAJbgQACW8AAAlvCAAJbxAACW8YAAlvJAAJbygACW8sAAlvMAAJbzQACW88AAlvRAAJb0gACW9MAAlvVAAJb1gACXBUAAlwXAAJcGQACXBsAAlweAAJcHwACXCAAAlwhAAJcIgACXCQAAlwmAAJcJwACXCgAAlwqAAJcKwACXGoAAlxsAAJcbgACXHAAAlxzAAJcdAACXHUAAlx2AAJcdwACXHkAAlx7AAJcfAACXH0AAlx/AAJcgAACXL8AAlzBAAJcwwACXMUAAlzIAAJcyQACXMoAAlzLAAJczAACXM4AAlzQAAJc0QACXNIAAlzUAAJc1QACXPoAAl0eAAJdRQACXWkAAl1sAAJdbgACXXAAAl1yAAJddAACXXYAAl13AAJdegACXYcAAl2WAAJdmAACXZoAAl2cAAJdngACXaAAAl2iAAJdpAACXbMAAl22AAJduQACXbwAAl2/AAJdwgACXcUAAl3IAAJdygACXgkAAl4LAAJeDgACXhAAAl4TAAJeFAACXhUAAl4WAAJeFwACXhkAAl4bAAJeHAACXh0AAl4fAAJeIAACXl8AAl5hAAJeYwACXmUAAl5oAAJeaQACXmoAAl5rAAJebAACXm4AAl5wAAJecQACXnIAAl50AAJedQACXrQAAl62AAJeuAACXroAAl69AAJevgACXr8AAl7AAAJewQACXsMAAl7FAAJexgACXscAAl7JAAJeygACXwkAAl8LAAJfDgACXxAAAl8TAAJfFAACXxUAAl8WAAJfFwACXxkAAl8bAAJfHAACXx0AAl8fAAJfIAACX18AAl9hAAJfYwACX2UAAl9oAAJfaQACX2oAAl9rAAJfbAACX24AAl9wAAJfcQACX3IAAl90AAJfdQACX7QAAl+2AAJfuAACX7oAAl+9AAJfvgACX78AAl/AAAJfwQACX8MAAl/FAAJfxgACX8cAAl/JAAJfygACYAkAAmALAAJgDQACYA8AAmASAAJgEwACYBQAAmAVAAJgFgACYBgAAmAaAAJgGwACYBwAAmAeAAJgHwACYGoAAmCNAAJgrQACYM0AAmDPAAJg0QACYNMAAmDVAAJg2AACYNkAAmDaAAJg3QACYN4AAmDgAAJg4QACYOMAAmDlAAJg5gACYOcAAmDqAAJg6wACYPAAAmD9AAJhAgACYQQAAmEGAAJhCwACYQ4AAmERAAJhEwACYTgAAmFcAAJhgwACYacAAmGqAAJhrAACYa4AAmGwAAJhsgACYbQAAmG1AAJhuAACYcUAAmHWAAJh2AACYdoAAmHcAAJh3gACYeAAAmHiAAJh5AACYeYAAmH3AAJh+gACYf0AAmIAAAJiAwACYgYAAmIJAAJiDAACYg8AAmIRAAJiUAACYlIAAmJUAAJiVgACYlkAAmJaAAJiWwACYlwAAmJdAAJiXwACYmEAAmJiAAJiYwACYmUAAmJmAAJipQACYqcAAmKpAAJiqwACYq4AAmKvAAJisAACYrEAAmKyAAJitAACYrYAAmK3AAJiuAACYroAAmK7AAJi+gACYvwAAmL/AAJjAQACYwQAAmMFAAJjBgACYwcAAmMIAAJjCgACYwwAAmMNAAJjDgACYxAAAmMRAAJjHgACYx8AAmMgAAJjIgACY2EAAmNjAAJjZQACY2cAAmNqAAJjawACY2wAAmNtAAJjbgACY3AAAmNyAAJjcwACY3QAAmN2AAJjdwACY7YAAmO4AAJjugACY7wAAmO/AAJjwAACY8EAAmPCAAJjwwACY8UAAmPHAAJjyAACY8kAAmPLAAJjzAACZAsAAmQNAAJkDwACZBEAAmQUAAJkFQACZBYAAmQXAAJkGAACZBoAAmQcAAJkHQACZB4AAmQgAAJkIQACZGAAAmRiAAJkZAACZGYAAmRpAAJkagACZGsAAmRsAAJkbQACZG8AAmRxAAJkcgACZHMAAmR1AAJkdgACZLUAAmS3AAJkuQACZLsAAmS+AAJkvwACZMAAAmTBAAJkwgACZMQAAmTGAAJkxwACZMgAAmTKAAJkywACZPAAAmUUAAJlOwACZV8AAmViAAJlZAACZWYAAmVoAAJlagACZWwAAmVtAAJlcAACZX0AAmWMAAJljgACZZAAAmWSAAJllAACZZYAAmWYAAJlmgACZakAAmWsAAJlrwACZbIAAmW1AAJluAACZbsAAmW+AAJlwAACZf8AAmYBAAJmAwACZgUAAmYIAAJmCQACZgoAAmYLAAJmDAACZg4AAmYQAAJmEQACZhIAAmYUAAJmFQACZlQAAmZWAAJmWAACZloAAmZdAAJmXgACZl8AAmZgAAJmYQACZmMAAmZlAAJmZgACZmcAAmZpAAJmagACZqkAAmarAAJmrQACZq8AAmayAAJmswACZrQAAma1AAJmtgACZrgAAma6AAJmuwACZrwAAma+AAJmvwACZv4AAmcAAAJnAgACZwQAAmcHAAJnCAACZwkAAmcKAAJnCwACZw0AAmcPAAJnEAACZxEAAmcTAAJnFAACZ1MAAmdVAAJnVwACZ1kAAmdcAAJnXQACZ14AAmdfAAJnYAACZ2IAAmdkAAJnZQACZ2YAAmdoAAJnaQACZ6gAAmeqAAJnrAACZ64AAmexAAJnsgACZ7MAAme0AAJntQACZ7cAAme5AAJnugACZ7sAAme9AAJnvgACZ/0AAmf/AAJoAQACaAMAAmgGAAJoBwACaAgAAmgJAAJoCgACaAwAAmgOAAJoDwACaBAAAmgSAAJoEwACaF4AAmiBAAJooQACaMEAAmjDAAJoxQACaMcAAmjJAAJozAACaM0AAmjOAAJo0QACaNIAAmjUAAJo1QACaNcAAmjaAAJo2wACaNwAAmjfAAJo4AACaOkAAmj2AAJo+wACaP0AAmj/AAJpBAACaQcAAmkKAAJpDAACaTEAAmlVAAJpfAACaaAAAmmjAAJppQACaacAAmmpAAJpqwACaa0AAmmuAAJpsQACab4AAmnPAAJp0QACadMAAmnVAAJp1wACadkAAmnbAAJp3QACad8AAmnwAAJp8wACafYAAmn5AAJp/AACaf8AAmoCAAJqBQACaggAAmoKAAJqSQACaksAAmpNAAJqTwACalIAAmpTAAJqVAACalUAAmpWAAJqWAACaloAAmpbAAJqXAACal4AAmpfAAJqngACaqAAAmqiAAJqpAACaqcAAmqoAAJqqQACaqoAAmqrAAJqrQACaq8AAmqwAAJqsQACarMAAmq0AAJq8wACavUAAmr4AAJq+gACav0AAmr+AAJq/wACawAAAmsBAAJrAwACawUAAmsGAAJrBwACawkAAmsKAAJrFwACaxgAAmsZAAJrGwACa1oAAmtcAAJrXgACa2AAAmtjAAJrZAACa2UAAmtmAAJrZwACa2kAAmtrAAJrbAACa20AAmtvAAJrcAACa68AAmuxAAJrswACa7UAAmu4AAJruQACa7oAAmu7AAJrvAACa74AAmvAAAJrwQACa8IAAmvEAAJrxQACbAQAAmwGAAJsCAACbAoAAmwNAAJsDgACbA8AAmwQAAJsEQACbBMAAmwVAAJsFgACbBcAAmwZAAJsGgACbFkAAmxbAAJsXQACbF8AAmxiAAJsYwACbGQAAmxlAAJsZgACbGgAAmxqAAJsawACbGwAAmxuAAJsbwACbK4AAmywAAJssgACbLQAAmy3AAJsuAACbLkAAmy6AAJsuwACbL0AAmy/AAJswAACbMEAAmzDAAJsxAACbOkAAm0NAAJtNAACbVgAAm1bAAJtXQACbV8AAm1hAAJtYwACbWUAAm1mAAJtaQACbXYAAm2FAAJthwACbYkAAm2LAAJtjQACbY8AAm2RAAJtkwACbaIAAm2lAAJtqAACbasAAm2uAAJtsQACbbQAAm23AAJtuQACbfgAAm36AAJt/AACbf4AAm4BAAJuAgACbgMAAm4EAAJuBQACbgcAAm4JAAJuCgACbgsAAm4NAAJuDgACbk0AAm5PAAJuUQACblMAAm5WAAJuVwACblgAAm5ZAAJuWgACblwAAm5eAAJuXwACbmAAAm5iAAJuYwACbqIAAm6kAAJupgACbqgAAm6rAAJurAACbq0AAm6uAAJurwACbrEAAm6zAAJutAACbrUAAm63AAJuuAACbvcAAm75AAJu/AACbv4AAm8BAAJvAgACbwMAAm8EAAJvBQACbwcAAm8JAAJvCgACbwsAAm8NAAJvDgACb00AAm9PAAJvUQACb1MAAm9WAAJvVwACb1gAAm9ZAAJvWgACb1wAAm9eAAJvXwACb2AAAm9iAAJvYwACb6IAAm+kAAJvpgACb6gAAm+rAAJvrAACb60AAm+uAAJvrwACb7EAAm+zAAJvtAACb7UAAm+3AAJvuAACb/cAAm/5AAJv/AACb/4AAnABAAJwAgACcAMAAnAEAAJwBQACcAcAAnAJAAJwCgACcAsAAnANAAJwDgACcFkAAnB8AAJwnAACcLwAAnC+AAJwwAACcMIAAnDEAAJwxwACcMgAAnDJAAJwzAACcM0AAnDPAAJw0AACcNIAAnDVAAJw1gACcNcAAnDaAAJw2wACcOAAAnDtAAJw8gACcPQAAnD2AAJw+wACcP4AAnEBAAJxAwACcSgAAnFMAAJxcwACcZcAAnGaAAJxnAACcZ4AAnGgAAJxogACcaQAAnGlAAJxqAACcbUAAnHGAAJxyAACccoAAnHMAAJxzgACcdAAAnHSAAJx1AACcdYAAnHnAAJx6gACce0AAnHwAAJx8wACcfYAAnH5AAJx/AACcf8AAnIBAAJyQAACckIAAnJEAAJyRgACckkAAnJKAAJySwACckwAAnJNAAJyTwACclEAAnJSAAJyUwACclUAAnJWAAJylQACcpcAAnKZAAJymwACcp4AAnKfAAJyoAACcqEAAnKiAAJypAACcqYAAnKnAAJyqAACcqoAAnKrAAJy6gACcuwAAnLvAAJy8QACcvQAAnL1AAJy9gACcvcAAnL4AAJy+gACcvwAAnL9AAJy/gACcwAAAnMBAAJzDgACcw8AAnMQAAJzEgACc1EAAnNTAAJzVQACc1cAAnNaAAJzWwACc1wAAnNdAAJzXgACc2AAAnNiAAJzYwACc2QAAnNmAAJzZwACc6YAAnOoAAJzqgACc6wAAnOvAAJzsAACc7EAAnOyAAJzswACc7UAAnO3AAJzuAACc7kAAnO7AAJzvAACc/sAAnP9AAJz/wACdAEAAnQEAAJ0BQACdAYAAnQHAAJ0CAACdAoAAnQMAAJ0DQACdA4AAnQQAAJ0EQACdFAAAnRSAAJ0VAACdFYAAnRZAAJ0WgACdFsAAnRcAAJ0XQACdF8AAnRhAAJ0YgACdGMAAnRlAAJ0ZgACdKUAAnSnAAJ0qQACdKsAAnSuAAJ0rwACdLAAAnSxAAJ0sgACdLQAAnS2AAJ0twACdLgAAnS6AAJ0uwACdOAAAnUEAAJ1KwACdU8AAnVSAAJ1VAACdVYAAnVYAAJ1WgACdVwAAnVdAAJ1YAACdW0AAnV8AAJ1fgACdYAAAnWCAAJ1hAACdYYAAnWIAAJ1igACdZkAAnWcAAJ1nwACdaIAAnWlAAJ1qAACdasAAnWuAAJ1sAACde8AAnXxAAJ19AACdfYAAnX5AAJ1+gACdfsAAnX8AAJ1/QACdf8AAnYBAAJ2AgACdgMAAnYFAAJ2BgACdkUAAnZHAAJ2SQACdksAAnZOAAJ2TwACdlAAAnZRAAJ2UgACdlQAAnZWAAJ2VwACdlgAAnZaAAJ2WwACdpoAAnacAAJ2ngACdqAAAnajAAJ2pAACdqUAAnamAAJ2pwACdqkAAnarAAJ2rAACdq0AAnavAAJ2sAACdu8AAnbxAAJ29AACdvYAAnb5AAJ2+gACdvsAAnb8AAJ2/QACdv8AAncBAAJ3AgACdwMAAncFAAJ3BgACd0UAAndHAAJ3SQACd0sAAndOAAJ3TwACd1AAAndRAAJ3UgACd1QAAndWAAJ3VwACd1gAAndaAAJ3WwACd5oAAnecAAJ3ngACd6AAAnejAAJ3pAACd6UAAnemAAJ3pwACd6kAAnerAAJ3rAACd60AAnevAAJ3sAACd+8AAnfxAAJ38wACd/UAAnf4AAJ3+QACd/oAAnf7AAJ3/AACd/4AAngAAAJ4AQACeAIAAngEAAJ4BQACeA4AAngPAAJ4EQACeFAAAnhSAAJ4VAACeFYAAnhZAAJ4WgACeFsAAnhcAAJ4XQACeF8AAnhhAAJ4YgACeGMAAnhlAAJ4ZgACeKUAAninAAJ4qQACeKsAAniuAAJ4rwACeLAAAnixAAJ4sgACeLQAAni2AAJ4twACeLgAAni6AAJ4uwACePoAAnj8AAJ4/wACeQEAAnkEAAJ5BQACeQYAAnkHAAJ5CAACeQoAAnkMAAJ5DQACeQ4AAnkQAAJ5EQACeRoAAnkdAAJ5IAACeSIAAnknAAJ5MAACeUkAAnlSAAJ5awACeYIAAnmUAAJ5sQACebQAAnm2AAJ5uAACeboAAnm9AAJ5vwACecQAAnoDAAJ6BQACegcAAnoJAAJ6CwACegwAAnoNAAJ6DgACeg8AAnoRAAJ6EwACehQAAnoVAAJ6FwACehgAAnpXAAJ6WQACelsAAnpdAAJ6XwACemAAAnphAAJ6YgACemMAAnplAAJ6ZwACemgAAnppAAJ6awACemwAAnqrAAJ6rQACeq8AAnqxAAJ6swACerQAAnq1AAJ6tgACercAAnq5AAJ6uwACerwAAnq9AAJ6vwACesAAAnrJAAJ6zAACes8AAnrRAAJ7FAACezgAAntcAAJ7fwACe6YAAnvGAAJ77QACfBQAAnw0AAJ8WAACfHwAAnx+AAJ8gQACfIMAAnyFAAJ8hwACfIoAAnyNAAJ8jwACfJEAAnyUAAJ8lgACfJgAAnybAAJ8ngACfJ8AAnykAAJ8sQACfLQAAny2AAJ8uQACfLwAAny+AAJ84wACfQcAAn0uAAJ9UgACfVUAAn1XAAJ9WQACfVsAAn1dAAJ9XwACfWAAAn1jAAJ9cAACfYMAAn2FAAJ9hwACfYkAAn2LAAJ9jQACfY8AAn2RAAJ9kwACfZUAAn2oAAJ9qwACfa4AAn2xAAJ9tAACfbcAAn26AAJ9vQACfcAAAn3DAAJ9xQACfgQAAn4GAAJ+CQACfgsAAn4OAAJ+DwACfhAAAn4RAAJ+EgACfhQAAn4WAAJ+FwACfhgAAn4aAAJ+GwACfiQAAn4lAAJ+JwACfmYAAn5oAAJ+agACfmwAAn5vAAJ+cAACfnEAAn5yAAJ+cwACfnUAAn53AAJ+eAACfnkAAn57AAJ+fAACfrsAAn69AAJ+wAACfsIAAn7FAAJ+xgACfscAAn7IAAJ+yQACfssAAn7NAAJ+zgACfs8AAn7RAAJ+0gACftsAAn7cAAJ+3gACfx0AAn8fAAJ/IQACfyMAAn8mAAJ/JwACfygAAn8pAAJ/KgACfywAAn8uAAJ/LwACfzAAAn8yAAJ/MwACf3IAAn90AAJ/dwACf3kAAn98AAJ/fQACf34AAn9/AAJ/gAACf4IAAn+EAAJ/hQACf4YAAn+IAAJ/iQACf5IAAn+TAAJ/lQACf9QAAn/WAAJ/2AACf9oAAn/dAAJ/3gACf98AAn/gAAJ/4QACf+MAAn/lAAJ/5gACf+cAAn/pAAJ/6gACgCkAAoArAAKALgACgDAAAoAzAAKANAACgDUAAoA2AAKANwACgDkAAoA7AAKAPAACgD0AAoA/AAKAQAACgE0AAoBOAAKATwACgFEAAoCQAAKAkgACgJQAAoCWAAKAmQACgJoAAoCbAAKAnAACgJ0AAoCfAAKAoQACgKIAAoCjAAKApQACgKYAAoDlAAKA5wACgOkAAoDrAAKA7gACgO8AAoDwAAKA8QACgPIAAoD0AAKA9gACgPcAAoD4AAKA+gACgPsAAoEIAAKBEQACgRQAAoEXAAKBGQACgRwAAoElAAKBKAACgSsAAoEuAAKBMQACgTMAAoE5AAKBSwACgVgAAoGjAAKBxgACgeYAAoIGAAKCCAACggoAAoIMAAKCDgACghEAAoISAAKCEwACghYAAoIXAAKCGQACghoAAoIcAAKCHwACgiAAAoIhAAKCJAACgiUAAoIqAAKCNwACgjwAAoI+AAKCQAACgkUAAoJIAAKCSwACgk0AAoJyAAKClgACgr0AAoLhAAKC5AACguYAAoLoAAKC6gACguwAAoLuAAKC7wACgvIAAoL/AAKDEAACgxIAAoMUAAKDFgACgxgAAoMaAAKDHAACgx4AAoMgAAKDMQACgzQAAoM3AAKDOgACgz0AAoNAAAKDQwACg0YAAoNJAAKDSwACg4oAAoOMAAKDjgACg5AAAoOTAAKDlAACg5UAAoOWAAKDlwACg5kAAoObAAKDnAACg50AAoOfAAKDoAACg98AAoPhAAKD4wACg+UAAoPoAAKD6QACg+oAAoPrAAKD7AACg+4AAoPwAAKD8QACg/IAAoP0AAKD9QAChDQAAoQ2AAKEOQAChDsAAoQ+AAKEPwAChEAAAoRBAAKEQgAChEQAAoRGAAKERwAChEgAAoRKAAKESwAChFgAAoRZAAKEWgAChFwAAoSbAAKEnQAChJ8AAoShAAKEpAAChKUAAoSmAAKEpwAChKgAAoSqAAKErAAChK0AAoSuAAKEsAAChLEAAoTwAAKE8gAChPQAAoT2AAKE+QAChPoAAoT7AAKE/AAChP0AAoT/AAKFAQAChQIAAoUDAAKFBQAChQYAAoVFAAKFRwAChUkAAoVLAAKFTgAChU8AAoVQAAKFUQAChVIAAoVUAAKFVgAChVcAAoVYAAKFWgAChVsAAoWaAAKFnAAChZ4AAoWgAAKFowAChaQAAoWlAAKFpgAChacAAoWpAAKFqwAChawAAoWtAAKFrwAChbAAAoXvAAKF8QAChfMAAoX1AAKF+AAChfkAAoX6AAKF+wAChfwAAoX+AAKGAAAChgEAAoYCAAKGBAAChgUAAoYqAAKGTgAChnUAAoaZAAKGnAAChp4AAoagAAKGogAChqQAAoamAAKGpwAChqoAAoa3AAKGxgAChsgAAobKAAKGzAAChs4AAobQAAKG0gAChtQAAobjAAKG5gAChukAAobsAAKG7wAChvIAAob1AAKG+AAChvoAAoc5AAKHOwAChz0AAoc/AAKHQgACh0MAAodEAAKHRQACh0YAAodIAAKHSgACh0sAAodMAAKHTgACh08AAoeOAAKHkAACh5IAAoeUAAKHlwACh5gAAoeZAAKHmgACh5sAAoedAAKHnwACh6AAAoehAAKHowACh6QAAofjAAKH5QACh+cAAofpAAKH7AACh+0AAofuAAKH7wACh/AAAofyAAKH9AACh/UAAof2AAKH+AACh/kAAog4AAKIOgACiDwAAog+AAKIQQACiEIAAohDAAKIRAACiEUAAohHAAKISQACiEoAAohLAAKITQACiE4AAoiNAAKIjwACiJEAAoiTAAKIlgACiJcAAoiYAAKImQACiJoAAoicAAKIngACiJ8AAoigAAKIogACiKMAAojiAAKI5AACiOYAAojoAAKI6wACiOwAAojtAAKI7gACiO8AAojxAAKI8wACiPQAAoj1AAKI9wACiPgAAok3AAKJOQACiTsAAok9AAKJQAACiUEAAolCAAKJQwACiUQAAolGAAKJSAACiUkAAolKAAKJTAACiU0AAomYAAKJuwACidsAAon7AAKJ/QACif8AAooBAAKKAwACigYAAooHAAKKCAACigsAAooMAAKKDgACig8AAooRAAKKFAACihUAAooWAAKKGQACihoAAoofAAKKLAACijEAAoozAAKKNQACijoAAoo9AAKKQAACikIAAopnAAKKiwACirIAAorWAAKK2QACitsAAordAAKK3wACiuEAAorjAAKK5AACiucAAor0AAKLBQACiwcAAosJAAKLCwACiw0AAosPAAKLEQACixMAAosVAAKLJgACiykAAossAAKLLwACizIAAos1AAKLOAACizsAAos+AAKLQAACi38AAouBAAKLgwACi4UAAouIAAKLiQACi4oAAouLAAKLjAACi44AAouQAAKLkQACi5IAAouUAAKLlQACi9QAAovWAAKL2AACi9oAAovdAAKL3gACi98AAovgAAKL4QACi+MAAovlAAKL5gACi+cAAovpAAKL6gACjCkAAowrAAKMLgACjDAAAowzAAKMNAACjDUAAow2AAKMNwACjDkAAow7AAKMPAACjD0AAow/AAKMQAACjE0AAoxOAAKMTwACjFEAAoyQAAKMkgACjJQAAoyWAAKMmQACjJoAAoybAAKMnAACjJ0AAoyfAAKMoQACjKIAAoyjAAKMpQACjKYAAozlAAKM5wACjOkAAozrAAKM7gACjO8AAozwAAKM8QACjPIAAoz0AAKM9gACjPcAAoz4AAKM+gACjPsAAo06AAKNPAACjT4AAo1AAAKNQwACjUQAAo1FAAKNRgACjUcAAo1JAAKNSwACjUwAAo1NAAKNTwACjVAAAo2PAAKNkQACjZMAAo2VAAKNmAACjZkAAo2aAAKNmwACjZwAAo2eAAKNoAACjaEAAo2iAAKNpAACjaUAAo3kAAKN5gACjegAAo3qAAKN7QACje4AAo3vAAKN8AACjfEAAo3zAAKN9QACjfYAAo33AAKN+QACjfoAAo4fAAKOQwACjmoAAo6OAAKOkQACjpMAAo6VAAKOlwACjpkAAo6bAAKOnAACjp8AAo6sAAKOuwACjr0AAo6/AAKOwQACjsMAAo7FAAKOxwACjskAAo7YAAKO2wACjt4AAo7hAAKO5AACjucAAo7qAAKO7QACju8AAo8uAAKPMAACjzIAAo80AAKPNwACjzgAAo85AAKPOgACjzsAAo89AAKPPwACj0AAAo9BAAKPQwACj0QAAo+DAAKPhQACj4cAAo+JAAKPjAACj40AAo+OAAKPjwACj5AAAo+SAAKPlAACj5UAAo+WAAKPmAACj5kAAo/YAAKP2gACj9wAAo/eAAKP4QACj+IAAo/jAAKP5AACj+UAAo/nAAKP6QACj+oAAo/rAAKP7QACj+4AApAtAAKQLwACkDIAApA0AAKQNwACkDgAApA5AAKQOgACkDsAApA9AAKQPwACkEAAApBBAAKQQwACkEQAApCDAAKQhQACkIcAApCJAAKQjAACkI0AApCOAAKQjwACkJAAApCSAAKQlAACkJUAApCWAAKQmAACkJkAApDYAAKQ2gACkNwAApDeAAKQ4QACkOIAApDjAAKQ5AACkOUAApDnAAKQ6QACkOoAApDrAAKQ7QACkO4AApEtAAKRLwACkTEAApEzAAKRNgACkTcAApE4AAKROQACkToAApE8AAKRPgACkT8AApFAAAKRQgACkUMAApGOAAKRsQACkdEAApHxAAKR8wACkfUAApH3AAKR+QACkfwAApH9AAKR/gACkgEAApICAAKSBAACkgUAApIHAAKSCQACkgoAApILAAKSDgACkg8AApIUAAKSIQACkiYAApIoAAKSKgACki8AApIyAAKSNQACkjcAApJcAAKSgAACkqcAApLLAAKSzgACktAAApLSAAKS1AACktYAApLYAAKS2QACktwAApLpAAKS+gACkvwAApL+AAKTAAACkwIAApMEAAKTBgACkwgAApMKAAKTGwACkx4AApMhAAKTJAACkycAApMqAAKTLQACkzAAApMzAAKTNQACk3QAApN2AAKTeAACk3oAApN9AAKTfgACk38AApOAAAKTgQACk4MAApOFAAKThgACk4cAApOJAAKTigACk8kAApPLAAKTzQACk88AApPSAAKT0wACk9QAApPVAAKT1gACk9gAApPaAAKT2wACk9wAApPeAAKT3wAClB4AApQgAAKUIwAClCUAApQoAAKUKQAClCoAApQrAAKULAAClC4AApQwAAKUMQAClDIAApQ0AAKUNQAClEIAApRDAAKURAAClEYAApSFAAKUhwAClIkAApSLAAKUjgAClI8AApSQAAKUkQAClJIAApSUAAKUlgAClJcAApSYAAKUmgAClJsAApTaAAKU3AAClN4AApTgAAKU4wAClOQAApTlAAKU5gAClOcAApTpAAKU6wAClOwAApTtAAKU7wAClPAAApUvAAKVMQAClTMAApU1AAKVOAAClTkAApU6AAKVOwAClTwAApU+AAKVQAAClUEAApVCAAKVRAAClUUAApWEAAKVhgAClYgAApWKAAKVjQAClY4AApWPAAKVkAAClZEAApWTAAKVlQAClZYAApWXAAKVmQAClZoAApXZAAKV2wACld0AApXfAAKV4gACleMAApXkAAKV5QACleYAApXoAAKV6gAClesAApXsAAKV7gACle8AApYUAAKWOAACll8AApaDAAKWhgAClogAApaKAAKWjAAClo4AApaQAAKWkQAClpQAApahAAKWsAAClrIAApa0AAKWtgAClrgAApa6AAKWvAAClr4AApbNAAKW0AACltMAApbWAAKW2QACltwAApbfAAKW4gACluQAApcjAAKXJQAClycAApcpAAKXLAACly0AApcuAAKXLwAClzAAApcyAAKXNAAClzUAApc2AAKXOAAClzkAApd4AAKXegACl3wAApd+AAKXgQACl4IAApeDAAKXhAACl4UAApeHAAKXiQACl4oAApeLAAKXjQACl44AApfNAAKXzwACl9EAApfTAAKX1gACl9cAApfYAAKX2QACl9oAApfcAAKX3gACl98AApfgAAKX4gACl+MAApgiAAKYJAACmCYAApgoAAKYKwACmCwAApgtAAKYLgACmC8AApgxAAKYMwACmDQAApg1AAKYNwACmDgAAph3AAKYeQACmHsAAph9AAKYgAACmIEAApiCAAKYgwACmIQAApiGAAKYiAACmIkAApiKAAKYjAACmI0AApjMAAKYzgACmNAAApjSAAKY1QACmNYAApjXAAKY2AACmNkAApjbAAKY3QACmN4AApjfAAKY4QACmOIAApkhAAKZIwACmSUAApknAAKZKgACmSsAApksAAKZLQACmS4AApkwAAKZMgACmTMAApk0AAKZNgACmTcAApmCAAKZpQACmcUAApnlAAKZ5wACmekAApnrAAKZ7QACmfAAApnxAAKZ8gACmfUAApn2AAKZ+AACmfkAApn7AAKZ/gACmf8AApoAAAKaAwACmgQAApoJAAKaFgACmhsAApodAAKaHwACmiQAAponAAKaKgACmiwAAppRAAKadQACmpwAAprAAAKawwACmsUAAprHAAKayQACmssAAprNAAKazgACmtEAApreAAKa7wACmvEAAprzAAKa9QACmvcAApr5AAKa+wACmv0AApr/AAKbEAACmxMAApsWAAKbGQACmxwAApsfAAKbIgACmyUAApsoAAKbKgACm2kAAptrAAKbbQACm28AAptyAAKbcwACm3QAApt1AAKbdgACm3gAApt6AAKbewACm3wAApt+AAKbfwACm74AApvAAAKbwgACm8QAApvHAAKbyAACm8kAApvKAAKbywACm80AApvPAAKb0AACm9EAApvTAAKb1AACnBMAApwVAAKcGAACnBoAApwdAAKcHgACnB8AApwgAAKcIQACnCMAApwlAAKcJgACnCcAApwpAAKcKgACnDcAApw4AAKcOQACnDsAApx6AAKcfAACnH4AApyAAAKcgwACnIQAApyFAAKchgACnIcAApyJAAKciwACnIwAApyNAAKcjwACnJAAApzPAAKc0QACnNMAApzVAAKc2AACnNkAApzaAAKc2wACnNwAApzeAAKc4AACnOEAApziAAKc5AACnOUAAp0kAAKdJgACnSgAAp0qAAKdLQACnS4AAp0vAAKdMAACnTEAAp0zAAKdNQACnTYAAp03AAKdOQACnToAAp15AAKdewACnX0AAp1/AAKdggACnYMAAp2EAAKdhQACnYYAAp2IAAKdigACnYsAAp2MAAKdjgACnY8AAp3OAAKd0AACndIAAp3UAAKd1wACndgAAp3ZAAKd2gACndsAAp3dAAKd3wACneAAAp3hAAKd4wACneQAAp4JAAKeLQACnlQAAp54AAKeewACnn0AAp5/AAKegQACnoMAAp6FAAKehgACnokAAp6WAAKepQACnqcAAp6pAAKeqwACnq0AAp6vAAKesQACnrMAAp7CAAKexQACnsgAAp7LAAKezgACntEAAp7UAAKe1wACntkAAp8YAAKfGgACnxwAAp8eAAKfIQACnyIAAp8jAAKfJAACnyUAAp8nAAKfKQACnyoAAp8rAAKfLQACny4AAp9tAAKfbwACn3EAAp9zAAKfdgACn3cAAp94AAKfeQACn3oAAp98AAKffgACn38AAp+AAAKfggACn4MAAp/CAAKfxAACn8YAAp/IAAKfywACn8wAAp/NAAKfzgACn88AAp/RAAKf0wACn9QAAp/VAAKf1wACn9gAAqAXAAKgGQACoBwAAqAeAAKgIQACoCIAAqAjAAKgJAACoCUAAqAnAAKgKQACoCoAAqArAAKgLQACoC4AAqBtAAKgbwACoHEAAqBzAAKgdgACoHcAAqB4AAKgeQACoHoAAqB8AAKgfgACoH8AAqCAAAKgggACoIMAAqDCAAKgxAACoMYAAqDIAAKgywACoMwAAqDNAAKgzgACoM8AAqDRAAKg0wACoNQAAqDVAAKg1wACoNgAAqEXAAKhGQACoRsAAqEdAAKhIAACoSEAAqEiAAKhIwACoSQAAqEmAAKhKAACoSkAAqEqAAKhLAACoS0AAqE2AAKhNwACoTkAAqF8AAKhoAACocQAAqHnAAKiDgACoi4AAqJVAAKifAACopwAAqLAAAKi5AACouYAAqLpAAKi6wACou0AAqLvAAKi8gACovUAAqL3AAKi+QACovwAAqL+AAKjAAACowMAAqMGAAKjBwACoxAAAqMdAAKjIAACoyIAAqMlAAKjKAACoyoAAqNPAAKjcwACo5oAAqO+AAKjwQACo8MAAqPFAAKjxwACo8kAAqPLAAKjzAACo88AAqPcAAKj7wACo/EAAqPzAAKj9QACo/cAAqP5AAKj+wACo/0AAqP/AAKkAQACpBQAAqQXAAKkGgACpB0AAqQgAAKkIwACpCYAAqQpAAKkLAACpC8AAqQxAAKkcAACpHIAAqR1AAKkdwACpHoAAqR7AAKkfAACpH0AAqR+AAKkgAACpIIAAqSDAAKkhAACpIYAAqSHAAKkkAACpJEAAqSTAAKk0gACpNQAAqTWAAKk2AACpNsAAqTcAAKk3QACpN4AAqTfAAKk4QACpOMAAqTkAAKk5QACpOcAAqToAAKlJwACpSkAAqUsAAKlLgACpTEAAqUyAAKlMwACpTQAAqU1AAKlNwACpTkAAqU6AAKlOwACpT0AAqU+AAKlRwACpUgAAqVKAAKliQACpYsAAqWNAAKljwACpZIAAqWTAAKllAACpZUAAqWWAAKlmAACpZoAAqWbAAKlnAACpZ4AAqWfAAKl3gACpeAAAqXjAAKl5QACpegAAqXpAAKl6gACpesAAqXsAAKl7gACpfAAAqXxAAKl8gACpfQAAqX1AAKl/gACpf8AAqYBAAKmQAACpkIAAqZEAAKmRgACpkkAAqZKAAKmSwACpkwAAqZNAAKmTwACplEAAqZSAAKmUwACplUAAqZWAAKmlQACppcAAqaaAAKmnAACpp8AAqagAAKmoQACpqIAAqajAAKmpQACpqcAAqaoAAKmqQACpqsAAqasAAKmuQACproAAqa7AAKmvQACpvwAAqb+AAKnAAACpwIAAqcFAAKnBgACpwcAAqcIAAKnCQACpwsAAqcNAAKnDgACpw8AAqcRAAKnEgACp1EAAqdTAAKnVgACp1gAAqdbAAKnXAACp10AAqdeAAKnXwACp2EAAqdjAAKnZAACp2UAAqdnAAKnaAACp3cAAqeEAAKniQACp4wAAqePAAKnlAACp5cAAqeaAAKnnAACp6EAAqfsAAKoDwACqC8AAqhPAAKoUQACqFMAAqhVAAKoVwACqFoAAqhbAAKoXAACqF8AAqhgAAKoYgACqGMAAqhlAAKoaAACqGkAAqhqAAKobQACqG4AAqhzAAKogAACqIUAAqiHAAKoiQACqI4AAqiRAAKolAACqJYAAqi7AAKo3wACqQYAAqkqAAKpLQACqS8AAqkxAAKpMwACqTUAAqk3AAKpOAACqTsAAqlIAAKpWQACqVsAAqldAAKpXwACqWEAAqljAAKpZQACqWcAAqlpAAKpegACqX0AAqmAAAKpgwACqYYAAqmJAAKpjAACqY8AAqmSAAKplAACqdMAAqnVAAKp1wACqdkAAqncAAKp3QACqd4AAqnfAAKp4AACqeIAAqnkAAKp5QACqeYAAqnoAAKp6QACqigAAqoqAAKqLAACqi4AAqoxAAKqMgACqjMAAqo0AAKqNQACqjcAAqo5AAKqOgACqjsAAqo9AAKqPgACqn0AAqp/AAKqggACqoQAAqqHAAKqiAACqokAAqqKAAKqiwACqo0AAqqPAAKqkAACqpEAAqqTAAKqlAACqqEAAqqiAAKqowACqqUAAqrkAAKq5gACqugAAqrqAAKq7QACqu4AAqrvAAKq8AACqvEAAqrzAAKq9QACqvYAAqr3AAKq+QACqvoAAqs5AAKrOwACqz0AAqs/AAKrQgACq0MAAqtEAAKrRQACq0YAAqtIAAKrSgACq0sAAqtMAAKrTgACq08AAquOAAKrkAACq5IAAquUAAKrlwACq5gAAquZAAKrmgACq5sAAqudAAKrnwACq6AAAquhAAKrowACq6QAAqvjAAKr5QACq+cAAqvpAAKr7AACq+0AAqvuAAKr7wACq/AAAqvyAAKr9AACq/UAAqv2AAKr+AACq/kAAqw4AAKsOgACrDwAAqw+AAKsQQACrEIAAqxDAAKsRAACrEUAAqxHAAKsSQACrEoAAqxLAAKsTQACrE4AAqxzAAKslwACrL4AAqziAAKs5QACrOcAAqzpAAKs6wACrO0AAqzvAAKs8AACrPMAAq0AAAKtDwACrREAAq0TAAKtFQACrRcAAq0ZAAKtGwACrR0AAq0sAAKtLwACrTIAAq01AAKtOAACrTsAAq0+AAKtQQACrUMAAq2CAAKthAACrYYAAq2IAAKtiwACrYwAAq2NAAKtjgACrY8AAq2RAAKtkwACrZQAAq2VAAKtlwACrZgAAq3XAAKt2QACrdsAAq3dAAKt4AACreEAAq3iAAKt4wACreQAAq3mAAKt6AACrekAAq3qAAKt7AACre0AAq4sAAKuLgACrjAAAq4yAAKuNQACrjYAAq43AAKuOAACrjkAAq47AAKuPQACrj4AAq4/AAKuQQACrkIAAq6BAAKugwACroYAAq6IAAKuiwACrowAAq6NAAKujgACro8AAq6RAAKukwACrpQAAq6VAAKulwACrpgAAq7XAAKu2QACrtsAAq7dAAKu4AACruEAAq7iAAKu4wACruQAAq7mAAKu6AACrukAAq7qAAKu7AACru0AAq8sAAKvLgACrzAAAq8yAAKvNQACrzYAAq83AAKvOAACrzkAAq87AAKvPQACrz4AAq8/AAKvQQACr0IAAq+BAAKvgwACr4UAAq+HAAKvigACr4sAAq+MAAKvjQACr44AAq+QAAKvkgACr5MAAq+UAAKvlgACr5cAAq/iAAKwBQACsCUAArBFAAKwRwACsEkAArBLAAKwTQACsFAAArBRAAKwUgACsFUAArBWAAKwWAACsFkAArBbAAKwXgACsF8AArBgAAKwYwACsGQAArBpAAKwdgACsHsAArB9AAKwfwACsIQAArCHAAKwigACsIwAArCxAAKw1QACsPwAArEgAAKxIwACsSUAArEnAAKxKQACsSsAArEtAAKxLgACsTEAArE+AAKxTwACsVEAArFTAAKxVQACsVcAArFZAAKxWwACsV0AArFfAAKxcAACsXMAArF2AAKxeQACsXwAArF/AAKxggACsYUAArGIAAKxigACsckAArHLAAKxzQACsc8AArHSAAKx0wACsdQAArHVAAKx1gACsdgAArHaAAKx2wACsdwAArHeAAKx3wACsh4AArIgAAKyIgACsiQAArInAAKyKAACsikAArIqAAKyKwACsi0AArIvAAKyMAACsjEAArIzAAKyNAACsnMAArJ1AAKyeAACsnoAArJ9AAKyfgACsn8AArKAAAKygQACsoMAArKFAAKyhgACsocAArKJAAKyigACspcAArKYAAKymQACspsAArLaAAKy3AACst4AArLgAAKy4wACsuQAArLlAAKy5gACsucAArLpAAKy6wACsuwAArLtAAKy7wACsvAAArMvAAKzMQACszMAArM1AAKzOAACszkAArM6AAKzOwACszwAArM+AAKzQAACs0EAArNCAAKzRAACs0UAArOEAAKzhgACs4gAArOKAAKzjQACs44AArOPAAKzkAACs5EAArOTAAKzlQACs5YAArOXAAKzmQACs5oAArPZAAKz2wACs90AArPfAAKz4gACs+MAArPkAAKz5QACs+YAArPoAAKz6gACs+sAArPsAAKz7gACs+8AArQuAAK0MAACtDIAArQ0AAK0NwACtDgAArQ5AAK0OgACtDsAArQ9AAK0PwACtEAAArRBAAK0QwACtEQAArRpAAK0jQACtLQAArTYAAK02wACtN0AArTfAAK04QACtOMAArTlAAK05gACtOkAArT2AAK1BQACtQcAArUJAAK1CwACtQ0AArUPAAK1EQACtRMAArUiAAK1JQACtSgAArUrAAK1LgACtTEAArU0AAK1NwACtTkAArV4AAK1egACtX0AArV/AAK1ggACtYMAArWEAAK1hQACtYYAArWIAAK1igACtYsAArWMAAK1jgACtY8AArXOAAK10AACtdIAArXUAAK11wACtdgAArXZAAK12gACtdsAArXdAAK13wACteAAArXhAAK14wACteQAArYjAAK2JQACticAArYpAAK2LAACti0AArYuAAK2LwACtjAAArYyAAK2NAACtjUAArY2AAK2OAACtjkAArZ4AAK2egACtn0AArZ/AAK2ggACtoMAAraEAAK2hQACtoYAAraIAAK2igACtosAAraMAAK2jgACto8AArbOAAK20AACttIAArbUAAK21wACttgAArbZAAK22gACttsAArbdAAK23wACtuAAArbhAAK24wACtuQAArcjAAK3JQACtycAArcpAAK3LAACty0AArcuAAK3LwACtzAAArcyAAK3NAACtzUAArc2AAK3OAACtzkAArd4AAK3egACt3wAArd+AAK3gQACt4IAAreDAAK3hAACt4UAAreHAAK3iQACt4oAAreLAAK3jQACt44AAreXAAK3mAACt5oAArenAAK3qAACt6kAArerAAK3uAACt7kAAre6AAK3vAACt8kAArfKAAK3ywACt80AArfWAAK35QACt/IAArgBAAK4EwACuCcAArg+AAK4UAACuFkAArhaAAK4XAACuGkAArhqAAK4awACuG0AArhuAAK4dwACuIEAAriIAAAAAAAABAIAAAAAAABowQAAAAAAAAAAAAAAAAACuJA= + + - darkTertiarySystemBackgroundHex - + relativePath + - darkSeparatorHex - + darkTertiarySystemFillHex + - darkSecondarySystemFillHex - + remoteURL + - - darkSystemBackgroundHex - + + Account + Undefined + 3 + Account + 1 + + + - - darkQuaternarySystemFillHex - + + 1 + bookmarks + - - darkSecondarySystemBackgroundHex - + + Bookmark + Undefined + 4 + Bookmark + 1 + + + - darkAccentHex - + lightAccentHex + - - orderRank - + + Theme + Undefined + 7 + Theme + 1 + + + - title - + remoteURL + - - lightSecondarySystemBackgroundHex - + + Chapter + Undefined + 6 + Chapter + 1 + + + - date - + lightSystemFillHex + - - 1 - chapters - + + darkSecondaryHex + - + + PlaybackRecord + Undefined + 9 + PlaybackRecord 1 - items - + + + 1 - bookmarks - + book + - title - + duration + - index - + id + - duration - + uuid + - - 1 - hardcoverBook - + + index + - originalFileName - + relativePath + - - Chapter - Undefined - 1 - Chapter + + title + + + 1 - - - + folder + - - start - + + lightTertiarySystemFillHex + - - BookPlayer.UUIDMigrationPolicy - Folder - Undefined - 6 - Folder + 1 - - - - - - artworkURL - + lastPlayed + - - isFinished - + + 1 + hardcoverBook + - duration - + author + - duration - + time + - relativePath - + details + - - BookPlayer.UUIDMigrationPolicy - Book - Undefined - 5 - Book - 1 - - - + + type + - - 1 - folder - + + id + - - originalFileName - + + 1 + library + - darkSystemGroupedBackgroundHex - + email + - id - + originalFileName + - - time - + + 1 + library + - details - + userBookID + - - 1 - library - + + orderRank + - status - + duration + - - author - + + 1 + lastPlayed + - type - + lightSeparatorHex + - note - + status + - - 1 - selected - + + hasSubscription + - - 1 - library - + + lastPlayDate + - lightTertiarySystemFillHex - + orderRank + - title - + note + - lightSystemBackgroundHex - + details + - - type - + + 1 + item + - lightSecondaryHex - + lightSecondarySystemBackgroundHex + - lightSystemGroupedBackgroundHex - + lightTertiarySystemBackgroundHex + - lightAccentHex - + darkSeparatorHex + - lightQuaternarySystemFillHex - + darkSystemGroupedBackgroundHex + - - darkTertiarySystemFillHex - + + BookPlayer.UUIDMigrationPolicy + Book + Undefined + 5 + Book + 1 + + + - lightPrimaryHex - + darkSystemBackgroundHex + - darkSecondaryHex - - - - darkSystemFillHex - + artworkURL + - + 1 - book - + selected + + + + lastPlayDate + - darkPrimaryHex - + donationMade + - speed - + type + - type - + darkQuaternarySystemFillHex + - - 1 - bookmarks - + + percentCompleted + - - 1 - folder - + + uuid + 1 - extractedThemes - + bookmarks + - orderRank - - - - speed - - - - uuid - + title + - + 1 - currentTheme - - - - percentCompleted - + chapters + - - remoteURL - + + isFinished + - - relativePath - + + title + - - PlaybackRecord - Undefined - 7 - PlaybackRecord + 1 - - - - - - details - + libraryItem + - - Theme + + Library Undefined 2 - Theme - 1 - - - - - - Account - Undefined - 9 - Account + Library 1 - - - + + + - - Library + + BookPlayer.UUIDMigrationPolicy + Folder Undefined 8 - Library + Folder 1 - - - + + + + + + speed + + + + lightSecondarySystemFillHex + + + + darkSystemFillHex + + + + lightQuaternarySystemFillHex + + + + darkPrimaryHex + HardcoverBook Undefined - 4 + 1 HardcoverBook 1 - - - + + + - remoteURL - + artworkURL + 1 - library - + items + \ No newline at end of file diff --git a/Shared/Integrations/IntegrationConnectionStore.swift b/Shared/Integrations/IntegrationConnectionStore.swift index 6cb3f3001..59cd8b49e 100644 --- a/Shared/Integrations/IntegrationConnectionStore.swift +++ b/Shared/Integrations/IntegrationConnectionStore.swift @@ -209,6 +209,12 @@ final class IntegrationConnectionStore: B } private func save() { - try? keychain.set(connections, key: keychainKey) + do { + try keychain.set(connections, key: keychainKey) + } catch { + // In-memory state already moved on; without this a token that never + // persisted (and vanishes on next launch) would be undiagnosable + Self.logger.warning("failed to persist connection data to keychain: \(error)") + } } } diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 13e6e60cb..58fef6b7c 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -7,7 +7,6 @@ // import Foundation -import Combine class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { // MARK: - Library sync properties @@ -21,9 +20,6 @@ class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { var results: ApiResponse? var error: Error? - private var progressSubscriber: AnyCancellable? - private var completionSubscriber: AnyCancellable? - /// Initializer /// - Parameters: /// - client: Network client diff --git a/Shared/Services/Sync/SyncJobScheduler.swift b/Shared/Services/Sync/SyncJobScheduler.swift index f4c5d8ea2..e7b9ab260 100644 --- a/Shared/Services/Sync/SyncJobScheduler.swift +++ b/Shared/Services/Sync/SyncJobScheduler.swift @@ -305,7 +305,13 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { public func cancelAllJobs() { Task { - try? await tasksRepository.clearAll() + // Subscription lapse (pro/lite → free while signed in), NOT logout: the + // provider-keyed externalUpdate queues must survive — progress pushes to the + // user's OWN media server stay enabled on every tier (accessPolicy). Only the + // BookPlayer-server queue and the pro-gated upload queue are wiped; logout + // goes through resetAllJobs(), which clears everything. + try? await tasksRepository.clearAll(in: TaskQueueKey.sync) + try? await tasksRepository.clearAll(in: TaskQueueKey.uploadFile) await MainActor.run { tasksProgress.removeAll() } From 2f33bbe0ee91f9eadf162e5b59616cbbc4f98812 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 13:43:50 -0500 Subject: [PATCH 039/172] fix: address review feedback (round 29) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ConcurrenceService: createOperation re-checks accessPolicy for uploadFile so a pro->lite downgrade (sync stays active, no cancelAllJobs) can't keep draining persisted S3 uploads on a tier without S3 access — same drop treatment the lapse path gives the upload queue. - CompleteAccountView: the success alert's ternary selected the non-localizing StringProtocol overload, so pro users saw the raw key "pro_welcome_title" and lite users a hardcoded English literal. Both branches now localize explicitly; new lite_welcome_title key in Base+en. - ItemListView: removed a leftover print(error) — the error already surfaces through loadingState. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Base.lproj/Localizable.strings | 1 + BookPlayer/Library/ItemList/ItemListView.swift | 1 - .../Profile/CompleteAccount/CompleteAccountView.swift | 7 ++++++- BookPlayer/en.lproj/Localizable.strings | 1 + Shared/Services/ConcurrentSync/ConcurrenceService.swift | 8 ++++++++ 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 16892be31..068b57927 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -300,6 +300,7 @@ "subscribe_title" = "Subscribe now"; "renewal_description" = "Renews automatically monthly"; "pro_welcome_title" = "Welcome to BookPlayer Pro!"; +"lite_welcome_title" = "Welcome to BookPlayer Lite!"; "pro_welcome_description" = "We'll start syncing your library when WiFi is available"; "benefits_disclaimer_watch_description" = "- Stand-alone playback on the Apple Watch is not available yet. It will be included in a future version."; "privacy_policy_title" = "Privacy Policy"; diff --git a/BookPlayer/Library/ItemList/ItemListView.swift b/BookPlayer/Library/ItemList/ItemListView.swift index 4694c012d..81dcd87cb 100644 --- a/BookPlayer/Library/ItemList/ItemListView.swift +++ b/BookPlayer/Library/ItemList/ItemListView.swift @@ -602,7 +602,6 @@ struct ItemListView: View { try await playerLoaderService.loadPlayer(relativePath, autoplay: true) playerState.showPlayerBinding.wrappedValue = true } catch { - print(error) loadingState.error = error } } diff --git a/BookPlayer/Profile/CompleteAccount/CompleteAccountView.swift b/BookPlayer/Profile/CompleteAccount/CompleteAccountView.swift index 0c4ab182f..81e63c154 100644 --- a/BookPlayer/Profile/CompleteAccount/CompleteAccountView.swift +++ b/BookPlayer/Profile/CompleteAccount/CompleteAccountView.swift @@ -106,7 +106,12 @@ struct CompleteAccountView: View { .foregroundStyle(theme.linkColor) } } - .alert(subType == .lite ? "Welcome to BookPlayer Lite!" : "pro_welcome_title", isPresented: $showSuccessAlert) { + // The ternary yields String, so the alert takes the non-localizing StringProtocol + // overload — both branches must localize explicitly or the raw key renders verbatim + .alert( + subType == .lite ? "lite_welcome_title".localized : "pro_welcome_title".localized, + isPresented: $showSuccessAlert + ) { Button("ok_button") { onDismiss() } diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 9e2cab885..dd4d9b7ec 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -301,6 +301,7 @@ "subscribe_title" = "Subscribe now"; "renewal_description" = "Renews automatically monthly"; "pro_welcome_title" = "Welcome to BookPlayer Pro!"; +"lite_welcome_title" = "Welcome to BookPlayer Lite!"; "pro_welcome_description" = "We'll start syncing your library when WiFi is available"; "benefits_disclaimer_watch_description" = "- Stand-alone playback on the Apple Watch is not available yet. It will be included in a future version."; "privacy_policy_title" = "Privacy Policy"; diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 73b038ce0..dc6078ea3 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -294,6 +294,14 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { hostId: hostId ) case .uploadFile: + // Re-check access at execution, not just at scheduling: a pro→lite downgrade keeps + // sync active (no cancelAllJobs), but persisted uploads must not keep PUTting to S3 + // on a tier without S3 access. Returning nil pops the task — same drop treatment the + // lapse path gives the upload queue. + guard accessPolicy[.uploadFile] == true else { + Self.logger.info("Dropping persisted uploadFile task \(task.id): tier has no S3 upload access") + return nil + } guard let filePath = task.parameters["filePath"] as? String, let remotePath = task.parameters["remotePath"] as? String, let fileURL = URL(string: filePath), From 013529c6c684b5829dc27fbddb42a8139d6701da Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 14:06:03 -0500 Subject: [PATCH 040/172] fix: address review feedback (round 30) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LibraryService: the external progress sync now also updates percentCompleted (from currentTime/duration) — the library row renders the percentage, so the playhead moved while the row kept the stale bar. - Subscription lapse now cancels IN-FLIGHT operations, not just persisted rows (develop parity): SyncService.updateSyncEnabled(false) calls the new scoped ConcurrenceService.cancelServerQueueOperations() (sync + upload operations; tier-independent externalUpdate pushes survive), and updateConcurrentService cancels running uploads when the new tier loses S3 access (pro->lite keeps sync active, so no cancelAllJobs fires there). - LibraryItemSyncOperation: the uploaded:true confirmation retries 3x before failing — the bytes are already on S3, and failing the operation re-ran the uploaded:false branch and re-uploaded multi-GB files. - Renamed handleSyncFromExternalResouce -> handleSyncFromExternalResource (public protocol API) across protocol, implementation, call site, and generated mock. - Removed the dead concurrenceService dependency from ItemListViewModel and its LibraryRootView environment plumbing. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Generated/AutoMockable.generated.swift | 24 +++++++++---------- .../Library/ItemList/ItemListViewModel.swift | 5 +--- .../Library/ItemList/LibraryRootView.swift | 3 --- .../ConcurrentSync/ConcurrenceService.swift | 19 +++++++++++++++ Shared/Services/LibraryService.swift | 9 +++++-- .../Sync/LibraryItemSyncOperation.swift | 22 ++++++++++++++--- Shared/Services/Sync/SyncService.swift | 4 ++++ 7 files changed, 62 insertions(+), 24 deletions(-) diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index 4c0eb3f15..5d9f644ee 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -1139,21 +1139,21 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { return insertItemsFromResourcesReturnValue } } - //MARK: - handleSyncFromExternalResouce + //MARK: - handleSyncFromExternalResource - var handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount = 0 - var handleSyncFromExternalResouceRemoteItemsDictionaryCalled: Bool { - return handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount > 0 + var handleSyncFromExternalResourceRemoteItemsDictionaryCallsCount = 0 + var handleSyncFromExternalResourceRemoteItemsDictionaryCalled: Bool { + return handleSyncFromExternalResourceRemoteItemsDictionaryCallsCount > 0 } - var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedRemoteItemsDictionary: [String: JellyfinLibraryItem]? - var handleSyncFromExternalResouceRemoteItemsDictionaryReceivedInvocations: [[String: JellyfinLibraryItem]] = [] - var handleSyncFromExternalResouceRemoteItemsDictionaryClosure: (([String: JellyfinLibraryItem]) -> Void)? + var handleSyncFromExternalResourceRemoteItemsDictionaryReceivedRemoteItemsDictionary: [String: JellyfinLibraryItem]? + var handleSyncFromExternalResourceRemoteItemsDictionaryReceivedInvocations: [[String: JellyfinLibraryItem]] = [] + var handleSyncFromExternalResourceRemoteItemsDictionaryClosure: (([String: JellyfinLibraryItem]) -> Void)? @MainActor - func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) { - handleSyncFromExternalResouceRemoteItemsDictionaryCallsCount += 1 - handleSyncFromExternalResouceRemoteItemsDictionaryReceivedRemoteItemsDictionary = remoteItemsDictionary - handleSyncFromExternalResouceRemoteItemsDictionaryReceivedInvocations.append(remoteItemsDictionary) - handleSyncFromExternalResouceRemoteItemsDictionaryClosure?(remoteItemsDictionary) + func handleSyncFromExternalResource(remoteItemsDictionary: [String: JellyfinLibraryItem]) { + handleSyncFromExternalResourceRemoteItemsDictionaryCallsCount += 1 + handleSyncFromExternalResourceRemoteItemsDictionaryReceivedRemoteItemsDictionary = remoteItemsDictionary + handleSyncFromExternalResourceRemoteItemsDictionaryReceivedInvocations.append(remoteItemsDictionary) + handleSyncFromExternalResourceRemoteItemsDictionaryClosure?(remoteItemsDictionary) } } class PlaybackServiceProtocolMock: PlaybackServiceProtocol { diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index 80be8514a..f3b182264 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -17,7 +17,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { let playerManager: PlayerManager let playerState: PlayerState private let syncService: SyncService - private let concurrenceService: ConcurrenceServiceProtocol private let listSyncRefreshService: ListSyncRefreshService private let loadingState: LoadingOverlayState private let listState: ListStateManager @@ -108,7 +107,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { playerManager: PlayerManager, playerState: PlayerState, syncService: SyncService, - concurrenceService: ConcurrenceService, listSyncRefreshService: ListSyncRefreshService, loadingState: LoadingOverlayState, listState: ListStateManager, @@ -120,7 +118,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { self.playerManager = playerManager self.playerState = playerState self.syncService = syncService - self.concurrenceService = concurrenceService self.listSyncRefreshService = listSyncRefreshService self.loadingState = loadingState self.listState = listState @@ -904,7 +901,7 @@ extension ItemListViewModel { } guard !results.isEmpty else { return } - libraryService.handleSyncFromExternalResouce(remoteItemsDictionary: results) + libraryService.handleSyncFromExternalResource(remoteItemsDictionary: results) } } diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index e1d19541a..384863cad 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -44,7 +44,6 @@ struct LibraryRootView: View { @Environment(\.libraryService) private var libraryService @Environment(\.playbackService) private var playbackService @Environment(\.syncService) private var syncService - @Environment(\.concurrenceService) private var concurrenceService @Environment(\.hardcoverService) private var hardcoverService @Environment(\.scenePhase) private var scenePhase @@ -58,7 +57,6 @@ struct LibraryRootView: View { playerManager: playerManager, playerState: playerState, syncService: syncService, - concurrenceService: concurrenceService, listSyncRefreshService: listSyncRefreshService, loadingState: loadingState, listState: listState, @@ -74,7 +72,6 @@ struct LibraryRootView: View { playerManager: playerManager, playerState: playerState, syncService: syncService, - concurrenceService: concurrenceService, listSyncRefreshService: listSyncRefreshService, loadingState: loadingState, listState: listState, diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index dc6078ea3..aa0d0112e 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -44,6 +44,11 @@ public protocol ConcurrenceServiceProtocol { func scheduleFileUpload(params: [String: Any]) func updateConcurrentService(_ accessLevel: AccessLevel) + + /// Cancels in-flight BookPlayer-server operations (serial sync + S3 uploads) on a + /// subscription lapse, leaving the tier-independent externalUpdate operations running. + /// Logout cancels everything via the `.logout` observer instead. + func cancelServerQueueOperations() } public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { @@ -439,6 +444,13 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { scheduleFileUpload(params: params) } + public func cancelServerQueueOperations() { + for operation in operationQueue.operations + where operation is FileUploadOperation || operation is LibraryItemSyncOperation { + operation.cancel() + } + } + public func updateConcurrentService(_ accessLevel: AccessLevel) { switch accessLevel { case .lite: @@ -460,6 +472,13 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { .uploadFile: false, ] } + // A downgrade that loses S3 access (pro→lite keeps sync active, so no cancelAllJobs + // fires) must also stop uploads that are ALREADY running, not just future pops + if accessPolicy[.uploadFile] != true { + for operation in operationQueue.operations where operation is FileUploadOperation { + operation.cancel() + } + } } } diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index ff8f75b1f..6da66dd4f 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -186,7 +186,7 @@ public protocol LibraryServiceProtocol: AnyObject { // Sourcery-generated mock property names. @MainActor func insertItems(fromResources resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] - @MainActor func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) + @MainActor func handleSyncFromExternalResource(remoteItemsDictionary: [String: JellyfinLibraryItem]) } // swiftlint:disable force_cast @@ -2911,7 +2911,7 @@ extension LibraryService { return snapshots } - @MainActor public func handleSyncFromExternalResouce(remoteItemsDictionary: [String: JellyfinLibraryItem]) { + @MainActor public func handleSyncFromExternalResource(remoteItemsDictionary: [String: JellyfinLibraryItem]) { let remoteKeys = Array(remoteItemsDictionary.keys) let fetch: NSFetchRequest = ExternalResource.fetchRequest() @@ -2939,6 +2939,11 @@ extension LibraryService { localItem.currentTime = Double(remoteItem.currentSeconds ?? 0) localItem.isFinished = remoteItem.isFinished ?? localItem.isFinished localItem.lastPlayDate = remoteDate + // The library row's progress bar renders percentCompleted, not currentTime — + // without this the playhead moves but the row keeps the stale percentage + if localItem.duration > 0 { + localItem.percentCompleted = min(localItem.currentTime / localItem.duration, 1.0) * 100 + } } } diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 58fef6b7c..9ae500f7c 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -270,9 +270,25 @@ extension LibraryItemSyncOperation { // platforms, which needs the BPURLSession delegate machinery, not just a session swap. try await client.upload(fileURL: fileURL, remoteURL: remoteUrl) - let _: Empty = try await self.provider.request( - .externalResourceToDownload(uuid: uuid, uploaded: true) - ) + // The bytes are on S3 now — failing the operation on a flaky confirmation would + // retry the uploaded:false branch and re-upload the entire (potentially multi-GB) + // file. Retry just the confirmation instead, mirroring the synced:true handling + // in ConcurrenceService.handleFinishedOperation. + var confirmationError: Error? + for attempt in 1...3 { + do { + let _: Empty = try await self.provider.request( + .externalResourceToDownload(uuid: uuid, uploaded: true) + ) + return + } catch { + confirmationError = error + Self.logger.error("uploaded:true confirmation attempt \(attempt) failed for \(self.uuid): \(error.localizedDescription)") + } + } + if let confirmationError { + throw confirmationError + } } } diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 2bf67c0db..3a1d68631 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -658,6 +658,10 @@ public final class SyncService: SyncServiceProtocol, BPLogger { self.isActive = enabled if !enabled { self.cancelAllJobs() + // Clearing the persisted rows isn't enough (develop parity): an operation + // already executing keeps uploading after the lapse without this. Scoped so + // in-flight externalUpdate pushes survive — they run on every tier. + self.concurrenceService.cancelServerQueueOperations() } } } From 204ccfab56bd980477b15293bcd69770c8a93a57 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 15:13:45 -0500 Subject: [PATCH 041/172] fix: address review feedback (round 31) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PlayerManager: the buffering overlay now keys on isStreamingChapter — remote source AND no local copy on disk, mirroring loadPlayerItem's own branch. Downloaded cloud books keep their remoteURL forever, so checking URLs alone flashed the wave overlay over purely local playback. - AsyncOperation: finish() is idempotent (test-and-set under stateLock). cancel() and a racing terminal completion sink can both reach finish() — Combine won't interrupt a sink mid-execution — and the isFinished KVO pair must fire exactly once per operation. - SyncableItem: externalResources decodes per-element (LossyDecodableArray) so one malformed element drops that element instead of silently nil-ing the whole array — which would un-ingest the item's valid links and feed the reconciliation deletions. - Jellyfin fetchItems: isRecursive/itemTypes/the request now use the normalized effectiveSearchTerm — an empty-string search forced a recursive audiobook-only fetch that dropped subfolders and sent searchTerm="" to the server (pre-existing on develop; the file lives in this PR now). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Player/PlayerManager.swift | 20 +++++++++--- .../Network/JellyfinConnectionService.swift | 9 ++++-- .../ConcurrentSync/AsyncOperation.swift | 13 +++++++- Shared/Services/Sync/Model/SyncableItem.swift | 31 ++++++++++++++++++- 4 files changed, 63 insertions(+), 10 deletions(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 00f22e8d9..b4c491334 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -204,9 +204,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { guard let self = self, let player = player else { return } // Same remote-only gate as the item-status observer: a stalled/seeking LOCAL book // must not flash the streaming buffering overlay. - let isRemoteLoad = (self.currentItem?.currentChapter?.externalUrl != nil) - || (self.currentItem?.currentChapter?.remoteURL != nil) - guard isRemoteLoad else { return } + guard self.isStreamingChapter(self.currentItem?.currentChapter) else { return } switch status { case .waitingToPlayAtSpecifiedRate: @@ -372,6 +370,19 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { return self.currentItem?.currentChapter ?? chapter } + /// True only when the chapter actually streams: it has a remote source AND no local + /// copy on disk — the same branch condition loadPlayerItem plays by. A downloaded + /// cloud book keeps its remoteURL forever, so checking URLs alone would flash the + /// buffering overlay over purely local playback. + private func isStreamingChapter(_ chapter: PlayableChapter?) -> Bool { + guard let chapter, + chapter.externalUrl != nil || chapter.remoteURL != nil else { + return false + } + let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(chapter.relativePath) + return !FileManager.default.fileExists(atPath: fileURL.path) + } + func setupPlayerItemObservers(playerItem: AVPlayerItem?) { guard let playerItem else { return @@ -379,8 +390,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { // Local files attach ready almost instantly but still emit the initial .unknown — // only streamed/remote loads should drive the buffering overlay. - let isRemoteLoad = (currentItem?.currentChapter?.externalUrl != nil) - || (currentItem?.currentChapter?.remoteURL != nil) + let isRemoteLoad = isStreamingChapter(currentItem?.currentChapter) playerItemStatusSubscription?.cancel() playerItemStatusSubscription = playerItem.publisher(for: \.status) .receive(on: DispatchQueue.main) diff --git a/Shared/Jellyfin/Network/JellyfinConnectionService.swift b/Shared/Jellyfin/Network/JellyfinConnectionService.swift index a9c2e391a..5f4fa572d 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionService.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionService.swift @@ -413,14 +413,17 @@ public class JellyfinConnectionService: BPLogger { sortOrder = [.ascending] } - let isRecursive = recursive || searchTerm != nil || folderID == nil - let itemTypes: [JellyfinAPI.BaseItemKind] = (recursive || searchTerm != nil) ? [.audioBook] : [.audioBook, .folder] + // Use the normalized term everywhere below: a raw empty string ("") would otherwise + // count as "searching" — forcing a recursive audiobook-only fetch that drops the + // folder's subfolders and sends searchTerm="" to the server + let isRecursive = recursive || effectiveSearchTerm != nil || folderID == nil + let itemTypes: [JellyfinAPI.BaseItemKind] = (recursive || effectiveSearchTerm != nil) ? [.audioBook] : [.audioBook, .folder] let parameters = Paths.GetItemsParameters( startIndex: startIndex, limit: limit, isRecursive: isRecursive, - searchTerm: searchTerm, + searchTerm: effectiveSearchTerm, sortOrder: sortOrder, parentID: folderID, fields: [.sortName], diff --git a/Shared/Services/ConcurrentSync/AsyncOperation.swift b/Shared/Services/ConcurrentSync/AsyncOperation.swift index 92e3cfdf5..51258e5f9 100644 --- a/Shared/Services/ConcurrentSync/AsyncOperation.swift +++ b/Shared/Services/ConcurrentSync/AsyncOperation.swift @@ -55,8 +55,19 @@ class AsyncOperation: Operation, @unchecked Sendable { main() } - // Subclasses must call this when their async work is totally done + // Subclasses must call this when their async work is totally done. + // Idempotent: cancel() and a racing terminal completion callback can BOTH reach here + // (Combine won't interrupt a sink already mid-execution), and the isFinished KVO pair + // must fire exactly once per operation or the OperationQueue misbehaves. + private var didFinish = false func finish() { + stateLock.lock() + if didFinish { + stateLock.unlock() + return + } + didFinish = true + stateLock.unlock() state = .finished } } diff --git a/Shared/Services/Sync/Model/SyncableItem.swift b/Shared/Services/Sync/Model/SyncableItem.swift index 5345c3d54..b864bea32 100644 --- a/Shared/Services/Sync/Model/SyncableItem.swift +++ b/Shared/Services/Sync/Model/SyncableItem.swift @@ -82,11 +82,40 @@ extension SyncableItem: Decodable { self.orderRank = try container.decodeIfPresent(Int.self, forKey: .orderRank) ?? 0 self.lastPlayDateTimestamp = try container.decodeIfPresent(Double.self, forKey: .lastPlayDateTimestamp) self.type = try container.decode(SimpleItemType.self, forKey: .type) - self.externalResources = try? container.decode([SyncableExternalResource].self, forKey: .externalResources) + // Lossy per-element decode: SyncableExternalResource has required fields, so one + // malformed element in the server payload must drop THAT element, not silently + // discard every external resource the item has. + self.externalResources = ( + try? container.decode(LossyDecodableArray.self, forKey: .externalResources) + )?.elements self.uuid = myUuid ?? "" } } +/// Decodes each array element independently, skipping the ones that fail. +struct LossyDecodableArray: Decodable { + let elements: [Element] + + init(from decoder: Decoder) throws { + var container = try decoder.unkeyedContainer() + var elements: [Element] = [] + while !container.isAtEnd { + if let element = try? container.decode(Element.self) { + elements.append(element) + } else { + // A failed decode does NOT advance the index — consume the malformed + // element with an always-succeeding decode or this loops forever + _ = try? container.decode(AnyDecodableValue.self) + } + } + self.elements = elements + } + + private struct AnyDecodableValue: Decodable { + init(from decoder: Decoder) throws {} + } +} + extension SyncableItem { public init(from item: SimpleLibraryItem) { self.relativePath = item.relativePath From 0cdb71cca7f6751d9be5297d3ac8259f095da569 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 15:52:08 -0500 Subject: [PATCH 042/172] fix: address review feedback (round 32) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The resume-playback alert now exists in two gated placements: inside the fullScreenCover for the open-player case, and as a sibling on MainView's base for playback started with the player closed (mini-player, CarPlay, remote commands, last-book restore). An alert attached beneath a presented cover can't present over it, and the copy inside the cover isn't in the hierarchy while the player is closed — so every non-player start silently dropped the prompt, and the !showResumePopup guard then suppressed all future prompts for the session. Each placement gates on playerState.isShowingPlayer so exactly one can ever present. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/MainView.swift | 11 ++++++++++- BookPlayer/Utils/PlayerState.swift | 10 ++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index ad2905883..6db4ec460 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -109,13 +109,22 @@ struct MainView: View { ) } .presentationBackground(.clear) - .alert("resume_playback_alert_title".localized, isPresented: playerState.showResumePopupBinding) { + .alert("resume_playback_alert_title".localized, isPresented: playerState.showResumePopupBinding(whenPlayerVisible: true)) { Button("yes_button".localized) { playerManager.jumpTo(playerState.remotePlayTime ?? 0)} Button("ignore_button".localized, role: .cancel) { } } message: { Text(String(format: "resume_playback_alert_message".localized, TimeParser.formatTime(playerState.remotePlayTime ?? 0))) } } + // Sibling copy of the resume alert (see showResumePopupBinding): playback also starts + // with the player CLOSED — mini-player, CarPlay, remote commands, last-book restore — + // and the copy inside the cover isn't in the hierarchy then, silently dropping the prompt + .alert("resume_playback_alert_title".localized, isPresented: playerState.showResumePopupBinding(whenPlayerVisible: false)) { + Button("yes_button".localized) { playerManager.jumpTo(playerState.remotePlayTime ?? 0)} + Button("ignore_button".localized, role: .cancel) { } + } message: { + Text(String(format: "resume_playback_alert_message".localized, TimeParser.formatTime(playerState.remotePlayTime ?? 0))) + } .sheet(isPresented: $importManager.isShowingExternalImportView) { ExternalImportView( viewModel: ExternalImportViewModel(importManager: importManager) diff --git a/BookPlayer/Utils/PlayerState.swift b/BookPlayer/Utils/PlayerState.swift index fd2d093b4..6dde44a56 100644 --- a/BookPlayer/Utils/PlayerState.swift +++ b/BookPlayer/Utils/PlayerState.swift @@ -30,9 +30,15 @@ class PlayerState { ) } - var showResumePopupBinding: Binding { + /// The resume alert is attached in TWO places (MainView's base and the full-screen + /// player's content): an alert beneath a presented fullScreenCover cannot present over + /// it, and one inside the cover doesn't exist while the player is closed — the popup + /// fires from EVERY playback start (mini-player, CarPlay, remote commands, restore), + /// not just from the open player. Gating each copy on the cover's visibility ensures + /// exactly one of them can present. + func showResumePopupBinding(whenPlayerVisible visible: Bool) -> Binding { .init( - get: { self.showResumePopup }, + get: { self.showResumePopup && self.isShowingPlayer == visible }, set: { self.showResumePopup = $0 } ) } From d773d93a02bf11dbddabb9faa853fbac399811d7 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 16:09:22 -0500 Subject: [PATCH 043/172] fix: address review feedback (round 33) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SyncableExternalResource(from: SimpleExternalResource) threads the real processedFile value instead of hardcoding true — the upload path was reporting not-yet-processed resources as processed to the server (and to every other device syncing them down). - ExternalUpdateProgressOperation re-checks isCancelled after the 5s debounce: cancelAllOperations() can't reach the unstructured Task, so a logout-cancelled push would still fire after the sleep. The two "dead Media Servers button" WARNs were rebutted on-thread with a compile test: SE-0286 forward-scan binds the unlabeled trailing closure to handler (the first function-typed parameter), and a zero-parameter closure literal can't satisfy (String) -> Void in the first place. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ConcurrentSync/ExternalUpdateProgressOperation.swift | 3 +++ Shared/Services/Sync/Model/SyncableExternalResource.swift | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift index cfc006f0b..5b7e8b57e 100644 --- a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift +++ b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift @@ -38,6 +38,9 @@ class ExternalUpdateProgressOperation: AsyncOperation, BPLogger, @unchecked Send self.finish() } try await Task.sleep(for: .seconds(5)) + // cancelAllOperations() can't reach this unstructured Task, so honor cancellation + // manually after the debounce window — defer still finishes the operation + guard !self.isCancelled else { return } // 2. Wrap the throwing code in a do-catch do { diff --git a/Shared/Services/Sync/Model/SyncableExternalResource.swift b/Shared/Services/Sync/Model/SyncableExternalResource.swift index 7ee1f9bf1..fd989f305 100644 --- a/Shared/Services/Sync/Model/SyncableExternalResource.swift +++ b/Shared/Services/Sync/Model/SyncableExternalResource.swift @@ -53,7 +53,9 @@ extension SyncableExternalResource { self.providerId = item.providerId self.syncStatus = item.syncStatus self.lastSyncedAt = item.lastSyncedAt - self.processedFile = true + // Thread the real value: hardcoding true reported not-yet-processed resources as + // processed to the server (and to every other device that syncs them down) + self.processedFile = item.processedFile self.hostId = item.hostId } } From 38d506facc6af8c582f81d4983f5130e3a671007 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 16:29:30 -0500 Subject: [PATCH 044/172] test: add token-leak and v11->v12 migration regression guards (round 34) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PlayableChapterTests: encoded chapters travel through the WatchConnectivity application context, which the system persists to disk on both devices — assert externalUrl/externalHeaders (and the Authorization token inside them) never encode, while the non-sensitive cloud remoteURL still round-trips. - MigrationV11ToV12Tests: the mapping-model lookup validates the v11/v12 entity checksums — exactly what breaks at launch for existing installs if the v12 model is edited after MappingModel_v11_to_v12 was generated (inference is OFF) — plus an end-to-end store migration and a destination-compatibility check. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayerTests/DataManagerTests.swift | 58 ++++++++++++++++++++++ BookPlayerTests/PlayableChapterTests.swift | 31 ++++++++++++ 2 files changed, 89 insertions(+) diff --git a/BookPlayerTests/DataManagerTests.swift b/BookPlayerTests/DataManagerTests.swift index 102a32af9..e4c2567d6 100644 --- a/BookPlayerTests/DataManagerTests.swift +++ b/BookPlayerTests/DataManagerTests.swift @@ -9,6 +9,7 @@ @testable import BookPlayer @testable import BookPlayerKit import Combine +import CoreData import XCTest class DataManagerTests: XCTestCase { @@ -62,3 +63,60 @@ class ProcessFilesTests: DataManagerTests { wait(for: [expectation], timeout: 15) } } + +/// Guards the v11→v12 manual migration: `shouldInferMappingModelAutomatically` is OFF, +/// so if the v12 `.xcdatamodel` is ever edited after `MappingModel_v11_to_v12` was +/// generated, the checksum mismatch makes `migrateStore` throw at launch for every +/// existing install. This must fail in CI first. +class MigrationV11ToV12Tests: XCTestCase { + func testMappingModelMatchesModelsAndMigratesStore() throws { + let v11 = DBVersion.v11.model() + let v12 = DBVersion.v12.model() + XCTAssertFalse(v11.entities.isEmpty, "v11 model failed to load from the bundle") + XCTAssertFalse(v12.entities.isEmpty, "v12 model failed to load from the bundle") + XCTAssertTrue(v12.entitiesByName.keys.contains("ExternalResource")) + + // The lookup validates BOTH sides' entity checksums — this is exactly what + // breaks when a model is edited after its mapping model was generated + let mapping = NSMappingModel(from: [Bundle.main], forSourceModel: v11, destinationModel: v12) + let unwrappedMapping = try XCTUnwrap(mapping, "MappingModel_v11_to_v12 no longer matches the v11/v12 models") + + // End-to-end: run a real v11 store through the migration and verify the + // result opens as a v12 store + let tempDir = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) + try FileManager.default.createDirectory(at: tempDir, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: tempDir) } + let sourceURL = tempDir.appendingPathComponent("v11.sqlite") + let destinationURL = tempDir.appendingPathComponent("v12.sqlite") + + let coordinator = NSPersistentStoreCoordinator(managedObjectModel: v11) + let store = try coordinator.addPersistentStore( + ofType: NSSQLiteStoreType, + configurationName: nil, + at: sourceURL, + options: nil + ) + try coordinator.remove(store) + + let manager = NSMigrationManager(sourceModel: v11, destinationModel: v12) + try manager.migrateStore( + from: sourceURL, + sourceType: NSSQLiteStoreType, + options: nil, + with: unwrappedMapping, + toDestinationURL: destinationURL, + destinationType: NSSQLiteStoreType, + destinationOptions: nil + ) + + let metadata = try NSPersistentStoreCoordinator.metadataForPersistentStore( + ofType: NSSQLiteStoreType, + at: destinationURL, + options: nil + ) + XCTAssertTrue( + v12.isConfiguration(withName: nil, compatibleWithStoreMetadata: metadata), + "migrated store is not compatible with the v12 model" + ) + } +} diff --git a/BookPlayerTests/PlayableChapterTests.swift b/BookPlayerTests/PlayableChapterTests.swift index 72d2d6882..167db7be1 100644 --- a/BookPlayerTests/PlayableChapterTests.swift +++ b/BookPlayerTests/PlayableChapterTests.swift @@ -61,4 +61,35 @@ class PlayableChapterTests: XCTestCase { XCTAssertFalse(makeChapter(relativePath: "folder/no_extension").isVideo) XCTAssertFalse(makeChapter(relativePath: "").isVideo) } + + /// Regression guard for the CodingKeys exclusion: encoded chapters travel through the + /// WatchConnectivity application context, which the system persists to disk on both + /// devices — the media server's live Authorization token must never be in that payload. + func testCodableExcludesExternalUrlAndHeaders() throws { + let chapter = PlayableChapter( + title: "test", + author: "test", + start: 0, + duration: 1, + relativePath: "book.m4b", + remoteURL: URL(string: "https://cloud.example.com/book.m4b"), + externalURL: URL(string: "https://jellyfin.local/Items/abc/Download?api_key=SECRET-TOKEN"), + index: 0, + externalHeaders: ["Authorization": "Bearer SECRET-TOKEN"] + ) + + let data = try JSONEncoder().encode(chapter) + let json = String(decoding: data, as: UTF8.self) + + XCTAssertFalse(json.contains("SECRET-TOKEN"), "the media-server token leaked into the encoded payload") + XCTAssertFalse(json.contains("Authorization"), "externalHeaders leaked into the encoded payload") + XCTAssertFalse(json.contains("externalUrl"), "externalUrl leaked into the encoded payload") + XCTAssertFalse(json.contains("jellyfin.local"), "the external URL leaked into the encoded payload") + // The cloud remoteURL is NOT sensitive and must still round-trip + XCTAssertTrue(json.contains("cloud.example.com")) + + let decoded = try JSONDecoder().decode(PlayableChapter.self, from: data) + XCTAssertNil(decoded.externalUrl) + XCTAssertTrue(decoded.externalHeaders.isEmpty) + } } From 4320c0e2d945e70ecc3a514ad44616196b46cf53 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 16:53:46 -0500 Subject: [PATCH 045/172] fix: address review feedback (round 35) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LibraryItemSyncOperation: the uploaded:true confirmation retries now sleep 2s between attempts, matching their ConcurrenceService sibling — back-to-back retries burned all three on a single transient blip and re-uploaded the multi-GB file anyway, defeating the loop's purpose. - NetworkClient: the two S3 upload helpers throw BookPlayerError.networkError (with the HTTP status and body) instead of URLError(.badServerResponse), consistent with the rest of the client. - ItemListView: renamed the misleading uuid binding to relativePath — getNextPlayableBookPath returns a relative path. - MainView: removed the unused concurrenceService/accountService environment declarations. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Library/ItemList/ItemListView.swift | 4 ++-- BookPlayer/MainView.swift | 2 -- Shared/Network/NetworkClient.swift | 6 ++++-- Shared/Services/Sync/LibraryItemSyncOperation.swift | 6 ++++++ 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/BookPlayer/Library/ItemList/ItemListView.swift b/BookPlayer/Library/ItemList/ItemListView.swift index 81dcd87cb..2bed4f6cf 100644 --- a/BookPlayer/Library/ItemList/ItemListView.swift +++ b/BookPlayer/Library/ItemList/ItemListView.swift @@ -580,8 +580,8 @@ struct ItemListView: View { case .downloaded: switch item.type { case .folder: - if let uuid = model.getNextPlayableBookPath(in: item) { - loadPlayer(with: uuid) + if let relativePath = model.getNextPlayableBookPath(in: item) { + loadPlayer(with: relativePath) } case .bound, .book: loadPlayer(with: item.relativePath) diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index 6db4ec460..848d947ef 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -19,8 +19,6 @@ struct MainView: View { @Environment(\.libraryService) private var libraryService @Environment(\.playerState) private var playerState @Environment(\.syncService) private var syncService - @Environment(\.concurrenceService) private var concurrenceService - @Environment(\.accountService) private var accountService @Environment(\.jellyfinService) private var jellyfinService @Environment(\.audiobookshelfService) private var audiobookshelfService @Environment(\.playbackService) private var playbackService diff --git a/Shared/Network/NetworkClient.swift b/Shared/Network/NetworkClient.swift index ffeca708b..cfd43a0fd 100644 --- a/Shared/Network/NetworkClient.swift +++ b/Shared/Network/NetworkClient.swift @@ -149,7 +149,8 @@ public class NetworkClient: NetworkClientProtocol, BPLogger { if let httpResponse = response as? HTTPURLResponse { if !(200...299).contains(httpResponse.statusCode) { let errorMessage = String(data: responseData, encoding: .utf8) ?? "No error body" - throw URLError(.badServerResponse, userInfo: ["error": errorMessage]) + // Typed like the rest of the client, so upload failures surface consistently + throw BookPlayerError.networkError("Upload failed (HTTP \(httpResponse.statusCode)): \(errorMessage)") } } } @@ -315,7 +316,8 @@ extension NetworkClientProtocol { if let httpResponse = response as? HTTPURLResponse, !(200...299).contains(httpResponse.statusCode) { let errorMessage = String(data: responseData, encoding: .utf8) ?? "No error body" - throw URLError(.badServerResponse, userInfo: ["error": errorMessage]) + // Typed like the rest of the client, so upload failures surface consistently + throw BookPlayerError.networkError("Upload failed (HTTP \(httpResponse.statusCode)): \(errorMessage)") } } } diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 9ae500f7c..ab1a95c9f 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -284,6 +284,12 @@ extension LibraryItemSyncOperation { } catch { confirmationError = error Self.logger.error("uploaded:true confirmation attempt \(attempt) failed for \(self.uuid): \(error.localizedDescription)") + // Space out the attempts (same 2s as the ConcurrenceService sibling): a single + // transient blip would otherwise burn all three back-to-back in under a second + // and re-upload the file anyway + if attempt < 3 { + try? await Task.sleep(for: .seconds(2)) + } } } if let confirmationError { From 19b406fa0f440517d1275ac5f110fb09c86f28a8 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 17:18:00 -0500 Subject: [PATCH 046/172] fix: address review feedback (round 36) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ConcurrentSyncTasksView: upload rows now pass the per-item resolved SyncProgressKey and isUpload = (jobType == .uploadFile). They were built with the literal queue key and isUpload: false, so the row's circular progress froze at its onAppear snapshot for the entire multi-minute upload. Also split globalTasksCount (the dedup for global count emissions) from the queue-filtered list count — a coincidental match between the two skipped a needed reload. - TasksDataManager: updateTaskModel reads speed via NSNumber bridging. The scheduler boxes a Swift Float (LibraryItem.speed) and an Any-boxed Float fails `as? Double`, so every COALESCED speed change was silently dropped while the create paths (`as? Float`) worked. The AVURLAssetHTTPHeaderFieldsKey INFO is acknowledged on-thread as an accepted, documented risk: resource-loader delegates only fire for custom URL schemes, so the "supported" alternative means a scheme-proxy rework. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Profile/ConcurrentSyncTasksView.swift | 17 +++++++++++------ Shared/SwiftData/TasksDataManager.swift | 5 ++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift index 6716da8b1..0f1c9a681 100644 --- a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift @@ -18,7 +18,10 @@ struct ConcurrentSyncTasksView: View { private var allowsCellularData: Bool = false var monitor = ConcurrentTaskProgressMonitor.shared @State private var queuedJobs = [ConcurrentSyncTask]() - @State private var jobsCount = 0 + /// Dedup for the GLOBAL count emissions only — never mixed with this queue's + /// filtered count, or a coincidental match skips a needed reload. -1 so the + /// first emission always reloads. + @State private var globalTasksCount = -1 @State private var showInfoAlert = false @State private var networkMonitor = NetworkMonitor() @@ -53,9 +56,12 @@ struct ConcurrentSyncTasksView: View { QueuedSyncTaskRowView( imageName: .constant(parseImageName(job.jobType)), title: .constant(parseLabel(job.jobType, job.queueKey)), - progressKey: job.queueKey, + // The progress notification carries the per-item resolved key, not the + // queue key — and the sink is gated on isUpload, so upload rows built + // with the queue key froze at their onAppear snapshot + progressKey: SyncProgressKey.resolve(uuid: job.uuid, relativePath: job.relativePath), initialProgress: monitor.getTaskProgress(taskID: job.id), - isUpload: false + isUpload: job.jobType == .uploadFile ) } } @@ -91,9 +97,9 @@ struct ConcurrentSyncTasksView: View { .onReceive( concurrenceService.observeConcurrentTasksCount() ) { count in - guard jobsCount != count else { return } + guard globalTasksCount != count else { return } - jobsCount = count + globalTasksCount = count reloadQueuedJobs() } .onAppear { @@ -116,7 +122,6 @@ struct ConcurrentSyncTasksView: View { Task { @MainActor in let allJobs = await concurrenceService.getOrderedQueuedJobs(activeTaskIDs: Set(monitor.activeTasks.keys)) .filter { $0.queueKey == queueKey } - jobsCount = allJobs.count queuedJobs = allJobs } } diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index c427f5f0c..02dbe41a6 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -537,7 +537,10 @@ public final class TasksDataManager: BPLogger { public func updateTaskModel(_ task: UpdateTaskModel, with parameters: [String: Any]) { if let title = parameters["title"] as? String { task.title = title } if let details = parameters["details"] as? String { task.details = details } - if let speed = parameters["speed"] as? Double { task.speed = speed } + // The scheduler boxes a Swift Float here (LibraryItem.speed) and an Any-boxed Float + // fails `as? Double` — which silently dropped every COALESCED speed change (the + // create paths read `as? Float` and were fine). NSNumber bridging accepts both. + if let speed = parameters["speed"] as? NSNumber { task.speed = speed.doubleValue } if let currentTime = parameters["currentTime"] as? Double { task.currentTime = currentTime } if let duration = parameters["duration"] as? Double { task.duration = duration } if let percentCompleted = parameters["percentCompleted"] as? Double { task.percentCompleted = percentCompleted } From 8d75e552756d9a99153c12b08b939463e5b0561d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 17:36:58 -0500 Subject: [PATCH 047/172] fix: address review feedback (round 37) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Dropped the needless MainActor.run hop in loadPlayerItem — the function is already @MainActor. - stopPlayback also cancels playerItemStatusSubscription so the sink releases its AVPlayerItem promptly instead of holding it until the next rebind. The sync-created id == 0 INFO was confirmed intentional on-thread: SyncableExternalResource carries no id field to thread, and nothing keys on the numeric id locally since round 26 switched the details ForEach to providerId — resolution and dedup key on (providerName, providerId) and hostId throughout. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Player/PlayerManager.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index b4c491334..f5f95dc34 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -305,7 +305,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { func loadPlayerItem(for chapter: PlayableChapter, forceRefreshURL: Bool) async throws -> PlayableChapter { // Reset unconditionally: the flag's setters are gated on remote loads, so a LOCAL load // that interrupts a buffering stream would otherwise leave the overlay stuck on. - await MainActor.run { updatePlayerIsLoadingURL(false) } + updatePlayerIsLoadingURL(false) let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(chapter.relativePath) @@ -1430,8 +1430,10 @@ extension PlayerManager { observeStatus = false playbackQueued = nil // Stopping mid-buffer never reaches .readyToPlay, so the status sinks won't - // clear the streaming buffering overlay — reset it on teardown + // clear the streaming buffering overlay — reset it on teardown, and release + // the item-status sink promptly (it retains its AVPlayerItem until rebind) updatePlayerIsLoadingURL(false) + playerItemStatusSubscription?.cancel() audioPlayer.pause() playTask?.cancel() From a63875c9c3535ae1b0d25368a3d8320cd94bb261 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 17:54:28 -0500 Subject: [PATCH 048/172] fix: address review feedback (round 38) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lastSyncError now reads and writes under policyLock (same treatment as accessPolicy). Writers hopped to main, but SyncService.getLastSyncError reads the property from arbitrary threads — a benign-impact but real data race on a plain stored property. On-thread answers: the legacy-hostId INFO is the agreed contract — external-resource sync is NEW to iOS in this PR (no pre-hostId iOS rows exist), Android 1.1.3 rewrote its rows in its Room migration, and an unresolvable hostId deliberately surfaces connect-your-server; no backfill by design. The id == 0 INFO is a carried zombie already confirmed intentional. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ConcurrentSync/ConcurrenceService.swift | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index aa0d0112e..ecf788568 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -78,8 +78,18 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { private var disposeBag = Set() private var listeningTask: Task? public var tasksCountService: ConcurrentTasksCountService! - /// Last sync error information for debugging; only written on the main queue - public private(set) var lastSyncError: SyncErrorInfo? + private var _lastSyncError: SyncErrorInfo? + /// Last sync error information for debugging. Writers hop to main, but readers + /// (SyncService.getLastSyncError) call from arbitrary threads — same lock + /// treatment as accessPolicy so the cross-thread read isn't a data race. + public private(set) var lastSyncError: SyncErrorInfo? { + get { + policyLock.withLock { _lastSyncError } + } + set { + policyLock.withLock { _lastSyncError = newValue } + } + } // Services required public init(maxConcurrentTasks: Int = 4) { From b32ef2ee22e2a834dd72629268f902b41ee81392 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 18:15:56 -0500 Subject: [PATCH 049/172] fix: address review feedback (round 39) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - FileUploadOperation: the subscriber/observer refs (progress, completion, cellular KVO) now bind, tear down, and invalidate under stateLock — they were touched from the operation's Task thread, the URLSession delegate thread, and whichever thread cancels (main via logout/lapse), with only currentUploadTask guarded. - AsyncOperation.didSucceed and FileUploadOperation.uploadCompleted are lock-guarded so the queue-thread completionBlock read has a proper happens-before edge with the writer. - Jellyfin/ABS download-URL builders use appendingPathComponent: a trailing slash in the stored server URL string-concatenated into "host//api/…", which some reverse proxies (nginx/Cloudflare) 404 — breaking exactly the new cross-device streaming/download path. - Swapped the sync views' system fonts (.headline/.subheadline/.title2) for the project's bpFont convention. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../CompleteAccount/SyncInvitationCard.swift | 6 +- .../Profile/ConcurrentSyncTasksView.swift | 4 +- .../Profile/Profile/QueuedSyncTasksView.swift | 4 +- .../AudiobookShelfConnectionData.swift | 5 +- .../Network/JellyfinConnectionData.swift | 5 +- .../ConcurrentSync/AsyncOperation.swift | 15 +++- .../ConcurrentSync/FileUploadOperation.swift | 69 ++++++++++++++----- 7 files changed, 80 insertions(+), 28 deletions(-) diff --git a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift index c1e4edb8d..9160e4b50 100644 --- a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift +++ b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift @@ -28,7 +28,7 @@ struct SyncInvitationCard: View { if !(subscription == .pro || subscription == .lite) { VStack(spacing: 8) { Text("sync_invitation_save_storage_title".localized) - .font(.title2) + .bpFont(.title2) .fontWeight(.bold) .multilineTextAlignment(.center) } @@ -38,7 +38,7 @@ struct SyncInvitationCard: View { (subscription == .lite ? "import_verb" : "download_verb").localized, totalItems, ((subscription == .pro || subscription == .lite) ? "" : "sync_invitation_stream_description".localized))) - .font(.subheadline) + .bpFont(.subheadline) .foregroundColor(.secondary) .multilineTextAlignment(.center) @@ -88,7 +88,7 @@ struct SyncInvitationCard: View { .overlay(alignment: .topLeading) { Button(action: onCancel) { Image(systemName: "xmark.circle.fill") - .font(.title2) + .bpFont(.title2) .foregroundStyle(.tertiary) .frame(width: 44, height: 44) } diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift index 0f1c9a681..9ae8cbdba 100644 --- a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift @@ -40,10 +40,10 @@ struct ConcurrentSyncTasksView: View { .foregroundStyle(.secondary) Text("sync_tasks_empty_title".localized) - .font(.headline) + .bpFont(.headline) Text("sync_tasks_empty_description".localized) - .font(.subheadline) + .bpFont(.subheadline) .foregroundStyle(.secondary) .multilineTextAlignment(.center) } diff --git a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift b/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift index 633fdd2fd..e2666a83a 100644 --- a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift @@ -33,10 +33,10 @@ struct QueuedSyncTasksView: View { .foregroundStyle(.secondary) Text("sync_tasks_empty_title".localized) - .font(.headline) + .bpFont(.headline) Text("sync_tasks_empty_description".localized) - .font(.subheadline) + .bpFont(.subheadline) .foregroundStyle(.secondary) .multilineTextAlignment(.center) } diff --git a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift index eb098db26..0d8681b97 100644 --- a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift +++ b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionData.swift @@ -73,6 +73,9 @@ extension AudiobookShelfConnectionData: CustomDebugStringConvertible { } public func buildAudiobookshelfDownloadUrl(providerId: String) -> String { - return "\(self.url.absoluteString)/api/items/\(providerId)/download" + // appendingPathComponent normalizes the trailing slash a user may have typed in + // the server URL — string concatenation yields "host//api/…", which some reverse + // proxies (nginx/Cloudflare) 404 + return self.url.appendingPathComponent("api/items/\(providerId)/download").absoluteString } } diff --git a/Shared/Jellyfin/Network/JellyfinConnectionData.swift b/Shared/Jellyfin/Network/JellyfinConnectionData.swift index bcf16c212..f1ffba597 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionData.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionData.swift @@ -73,6 +73,9 @@ extension JellyfinConnectionData: CustomDebugStringConvertible { } public func buildDownloadUrl(providerId: String) -> String { - return "\(self.url.absoluteString)/items/\(providerId)/Download" + // appendingPathComponent normalizes the trailing slash a user may have typed in + // the server URL — string concatenation yields "host//items/…", which some reverse + // proxies (nginx/Cloudflare) 404 + return self.url.appendingPathComponent("items/\(providerId)/Download").absoluteString } } diff --git a/Shared/Services/ConcurrentSync/AsyncOperation.swift b/Shared/Services/ConcurrentSync/AsyncOperation.swift index 51258e5f9..7283c1438 100644 --- a/Shared/Services/ConcurrentSync/AsyncOperation.swift +++ b/Shared/Services/ConcurrentSync/AsyncOperation.swift @@ -40,7 +40,20 @@ class AsyncOperation: Operation, @unchecked Sendable { } var onProgress: (@Sendable (Double) -> Void)? - var didSucceed: Bool = false + /// Written from the subclasses' async Tasks / completion sinks, read from the queue + /// thread in ConcurrenceService's completionBlock — lock-guarded like `state` so the + /// read has a happens-before edge with the write. + private var _didSucceed = false + var didSucceed: Bool { + get { + stateLock.lock(); defer { stateLock.unlock() } + return _didSucceed + } + set { + stateLock.lock(); defer { stateLock.unlock() } + _didSucceed = newValue + } + } override var isReady: Bool { super.isReady && state == .ready } override var isExecuting: Bool { state == .executing } override var isFinished: Bool { state == .finished } diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index 5a3579f8f..157f4d5aa 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -13,7 +13,18 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { /// True ONLY when the bytes actually reached the server (2xx). `didSucceed` also goes true /// for CONSUMED permanent failures (missing file, 4xx) so the queue stops retrying them — /// but those must never trigger the synced:true confirmation. - private(set) var uploadCompleted = false + /// Written on the URLSession delegate thread, read on the queue thread — lock-guarded. + private var _uploadCompleted = false + private(set) var uploadCompleted: Bool { + get { + stateLock.lock(); defer { stateLock.unlock() } + return _uploadCompleted + } + set { + stateLock.lock(); defer { stateLock.unlock() } + _uploadCompleted = newValue + } + } // MARK: - Properties let fileURL: URL @@ -93,31 +104,45 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { uploadTask.resume() } - private func bindCellularObserver() { + /// The subscriber/observer refs are bound from the operation's Task thread, torn down + /// by `cancel()` from whichever thread cancels (main via logout/lapse), and invalidated + /// by the completion sink on the URLSession delegate thread — every touch goes through + /// `stateLock`, same as `currentUploadTask`. + private func invalidateCellularObserver() { + stateLock.lock() cellularDataObserver?.invalidate() - - // Assuming \.userSettingsAllowCellularData is an extension on UserDefaults - cellularDataObserver = UserDefaults.standard.observe( + cellularDataObserver = nil + stateLock.unlock() + } + + private func bindCellularObserver() { + // Built outside the lock (observe() can fire callbacks), published under it + let observer = UserDefaults.standard.observe( \.userSettingsAllowCellularData, options: [.new] ) { [weak self] _, change in - + guard let self = self, change.newValue != nil else { return } - + // If the user toggles cellular data mid-flight, we cancel the current internal task. // (This triggers NSURLErrorCancelled in the completion subscriber). + self.stateLock.lock() self.currentUploadTask?.cancel() - + self.stateLock.unlock() + // Recursively restart the upload using the new session! Task { await self.startUploadTask() } } + stateLock.lock() + cellularDataObserver?.invalidate() + cellularDataObserver = observer + stateLock.unlock() } - + private func bindUploadObservers() { - progressSubscriber?.cancel() - progressSubscriber = BPURLSession.shared.progressPublisher + let progress = BPURLSession.shared.progressPublisher .sink { [weak self] (path, progress) in guard let self = self else { return } // CRITICAL: Only report progress if this event belongs to THIS operation — the @@ -126,9 +151,12 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.onProgress?(progress) } } - - completionSubscriber?.cancel() - completionSubscriber = BPURLSession.shared.completionPublisher + stateLock.lock() + progressSubscriber?.cancel() + progressSubscriber = progress + stateLock.unlock() + + let completion = BPURLSession.shared.completionPublisher .sink { [weak self] (task, error) in guard let self = self else { return } @@ -146,14 +174,14 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { } else if let error = error { // Actual Failure — terminal for this operation, so the KVO can go. - self.cellularDataObserver?.invalidate() + self.invalidateCellularObserver() Self.logger.error("Upload failed for \(self.uuid): \(error)") self.didSucceed = false self.finish() } else if let http = task.response as? HTTPURLResponse, !(200...299).contains(http.statusCode) { - self.cellularDataObserver?.invalidate() + self.invalidateCellularObserver() // error == nil is NOT success: the background delegate doesn't surface HTTP // failures as errors, so a rejected PUT (expired presigned URL, 403) lands here. // A 4xx is PERMANENT for this task — its presigned URL is frozen in the persisted @@ -165,7 +193,7 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.didSucceed = (400...499).contains(http.statusCode) self.finish() } else { - self.cellularDataObserver?.invalidate() + self.invalidateCellularObserver() // Success! Clean up the temp hard link — and ONLY the temp hard link: when the // link was never created, fileURL falls back to the user's REAL audiobook in the // Processed folder, and deleting that is data loss. @@ -183,6 +211,10 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.finish() } } + stateLock.lock() + completionSubscriber?.cancel() + completionSubscriber = completion + stateLock.unlock() } // MARK: - Cleanup @@ -191,10 +223,11 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { super.cancel() stateLock.lock() currentUploadTask?.cancel() - stateLock.unlock() cellularDataObserver?.invalidate() + cellularDataObserver = nil progressSubscriber?.cancel() completionSubscriber?.cancel() + stateLock.unlock() // A cancelled mid-flight upload leaks its temp hard link (only the success branch // cleans up) — same temp-dir guard so the user's real file is never touched. if fileURL.path.hasPrefix(FileManager.default.temporaryDirectory.path) { From b78afb6d025158117eb830b7f135425526688851 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 24 Aug 2026 20:25:40 -0500 Subject: [PATCH 050/172] fix: address review feedback (round 40) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ConcurrentTasksRepository: externalUpdate coalescing now matches the merge candidate by providerId through the fetched tasks. Taking the LAST externalUpdate reference regardless of providerId missed whenever the queue held pushes for more than one book, creating a duplicate task instead of coalescing. - ExternalImportViewModel (+ its protocol) are @MainActor per the project convention — its setters mutate ImportManager's @Published state, which must not publish off-main. - LibraryItemSyncOperation: exhausted uploaded:true confirmations now CONSUME instead of throwing. A thrown error retried the operation from the top, re-running the uploaded:false branch and re-PUTting the multi-GB file — the exact waste the retry loop avoids. The bytes are on S3; the next external_set round-trip heals cheaply via the nil-url already-exists contract. - ExternalImportView: bpFont swaps for the two remaining system fonts. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ExternalSource/ExternalImportView.swift | 4 ++-- .../ExternalImportViewModel.swift | 2 ++ .../ConcurrentTasksRepository.swift | 21 ++++++++++++++----- .../Sync/LibraryItemSyncOperation.swift | 11 +++++++++- 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/BookPlayer/Import/ExternalSource/ExternalImportView.swift b/BookPlayer/Import/ExternalSource/ExternalImportView.swift index d197d1205..6b9fdf721 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportView.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportView.swift @@ -61,12 +61,12 @@ struct ExternalImportView: View { .foregroundColor(theme.primaryColor) Text("import_warning_description".localized) - .font(.subheadline) + .bpFont(.subheadline) .foregroundColor(theme.primaryColor.opacity(0.6)) .lineSpacing(4) Text(String.localizedStringWithFormat("files_title".localized, viewModel.resources.count)) - .font(.headline) + .bpFont(.headline) .foregroundColor(theme.primaryColor.opacity(0.6)) .padding(.top, 10) diff --git a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift index 9a128943a..ddc13222f 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift @@ -9,12 +9,14 @@ import Foundation import SwiftUI import BookPlayerKit +@MainActor protocol ExternalViewModelProtocol: ObservableObject { var resources: [SimpleExternalResource] { get set } func removeResource(withId id: String) func handleImportResources() async } +@MainActor class ExternalImportViewModel: ExternalViewModelProtocol { let importManager: ImportManager diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift index b29f70137..7f488b81c 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift @@ -277,12 +277,23 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog return true case .externalUpdate: + guard let providerId = parameters["providerId"] as? String else { + return false + } + // The reference doesn't carry providerId, so match through the fetched tasks: + // taking just the LAST externalUpdate reference misses whenever the queue holds + // pushes for more than one book, creating a duplicate task instead of coalescing + let externalTasks = (try? modelContext.fetch(FetchDescriptor())) ?? [] + let tasksByID = Dictionary( + uniqueKeysWithValues: externalTasks + .filter { $0.providerId == providerId } + .map { ($0.id, $0) } + ) guard - let providerId = parameters["providerId"] as? String, - let candidateReference = mergeableReferences.last(where: { $0.jobType == .externalUpdate }), - let candidateTask = try? modelContext - .fetch(FetchDescriptor()) - .first(where: { $0.id == candidateReference.taskID && $0.providerId == providerId }) + let candidateReference = mergeableReferences.last(where: { + $0.jobType == .externalUpdate && tasksByID[$0.taskID] != nil + }), + let candidateTask = tasksByID[candidateReference.taskID] else { return false } diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index ab1a95c9f..86d8cee7a 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -292,8 +292,17 @@ extension LibraryItemSyncOperation { } } } + // Exhausted: CONSUME rather than throw. A failed operation is retried from the + // top, which re-runs the uploaded:false branch and re-PUTs the whole file — the + // exact waste this loop exists to avoid. The bytes are safely on S3; the server + // still thinks the object isn't uploaded, so the next external_set round-trip + // heals cheaply (it answers url == null for an already-existing object, which the + // nil-url branch above consumes). Same bytes-are-on-S3 semantics as the + // FileUploadOperation confirmation in ConcurrenceService.handleFinishedOperation. if let confirmationError { - throw confirmationError + Self.logger.error( + "uploaded:true confirmation exhausted for \(self.uuid), consuming (bytes on S3): \(confirmationError.localizedDescription)" + ) } } } From 3a71f0cfe23616486bd11a1a79bf784f8dd21387 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 25 Aug 2026 02:49:00 -0500 Subject: [PATCH 051/172] fix: address review feedback (round 41) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added LibraryServiceExternalResourceTests covering the external-resource service surface: link/dedup, unknown-uuid nil, removal round-trip, provider-scoped resolution (cross-instance providerId collisions), two-way progress sync including the stale-remote guard, and insertItems(fromResources:) — orphan skip, provider-scoped relativePath, and the fresh-local-uuid contract. - ConcurrenceService.setup sets accessPolicy BEFORE waking workers — the old order was only safe because wakeUpWorkers happens to suspend on the repository actor before any pop. - The v2ToV3 CoreData backfill save failure is logged instead of swallowed (upload tasks otherwise point at resources that never persisted locally). - SyncService.teardownTask is @MainActor-isolated: it was assigned from the .logout sink and read from arbitrary async contexts with no defined isolation. - Localized the info-alert literals (convention-only tidy-up). The retry-forever WARN was rebutted on-thread: infinite serial-queue retries are intentional develop/Android parity; the genuinely-permanent poison cases this PR introduces ARE consumed. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Profile/ConcurrentSyncTasksView.swift | 5 +- .../Services/LibraryServiceTests.swift | 188 ++++++++++++++++++ .../ConcurrentSync/ConcurrenceService.swift | 5 +- Shared/Services/Sync/SyncService.swift | 13 +- Shared/SwiftData/MigrationPlan.swift | 10 +- 5 files changed, 211 insertions(+), 10 deletions(-) diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift index 9ae8cbdba..5eb15d8e0 100644 --- a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift @@ -89,10 +89,9 @@ struct ConcurrentSyncTasksView: View { .navigationTitle(QueueDisplay.name(for: queueKey)) .navigationBarTitleDisplayMode(.inline) .alert("", isPresented: $showInfoAlert) { - Button("ok_button", role: .cancel) {} - .foregroundStyle(theme.linkColor) + Button("ok_button".localized, role: .cancel) {} } message: { - Text("sync_tasks_alert_description") + Text("sync_tasks_alert_description".localized) } .onReceive( concurrenceService.observeConcurrentTasksCount() diff --git a/BookPlayerTests/Services/LibraryServiceTests.swift b/BookPlayerTests/Services/LibraryServiceTests.swift index 7d109f574..abb1c6018 100644 --- a/BookPlayerTests/Services/LibraryServiceTests.swift +++ b/BookPlayerTests/Services/LibraryServiceTests.swift @@ -2135,3 +2135,191 @@ class RegisterExistingProcessedItemsTests: LibraryServiceTests { XCTAssertEqual(library.items?.count, 1) } } + +/// External-resource service logic: link/dedup, removal, provider-scoped lookup, +/// and the two-way progress sync (add/remove/reconcile paths for the media-server +/// ExternalResource entity added in model v12). +class LibraryServiceExternalResourceTests: XCTestCase { + var sut: LibraryService! + + override func setUp() { + DataTestUtils.clearFolderContents(url: DataManager.getProcessedFolderURL()) + let dataManager = DataManager(coreDataStack: CoreDataStack(testPath: "/dev/null")) + self.sut = LibraryService() + self.sut.setup(dataManager: dataManager, audioMetadataService: AudioMetadataService()) + _ = self.sut.getLibrary() + } + + private func makeBook(_ title: String, duration: Double = 100) -> Book { + let book = StubFactory.book(dataManager: sut.dataManager, title: title, duration: duration) + sut.getLibraryReference().addToItems(book) + sut.dataManager.saveContext() + return book + } + + func testSetExternalResourceLinksAndSkipsDuplicates() async { + let book = makeBook("external-1") + + let linked = await sut.setExternalResource(providerName: "jellyfin", providerId: "prov-1", for: book.uuid) + XCTAssertEqual(linked?.providerId, "prov-1") + + // Linking the same (provider, providerId) again is a no-op + let duplicate = await sut.setExternalResource(providerName: "jellyfin", providerId: "prov-1", for: book.uuid) + XCTAssertNil(duplicate) + + let resources = await sut.getExternalResources(for: book.relativePath) + XCTAssertEqual(resources.count, 1) + XCTAssertEqual(resources.first?.providerName, "jellyfin") + } + + func testSetExternalResourceForUnknownUuidReturnsNil() async { + let missing = await sut.setExternalResource(providerName: "jellyfin", providerId: "prov-x", for: UUID().uuidString) + XCTAssertNil(missing) + } + + func testRemoveExternalResource() async { + let book = makeBook("external-2") + _ = await sut.setExternalResource(providerName: "audiobookshelf", providerId: "abs-1", for: book.uuid) + + let removedId = await sut.removeExternalResource(providerName: "audiobookshelf", for: book.uuid) + XCTAssertEqual(removedId, "abs-1") + + let resources = await sut.getExternalResources(for: book.relativePath) + XCTAssertTrue(resources.isEmpty) + + // Removing again is a no-op + let second = await sut.removeExternalResource(providerName: "audiobookshelf", for: book.uuid) + XCTAssertNil(second) + } + + func testFindResourceIsProviderScoped() async { + let book1 = makeBook("external-3") + let book2 = makeBook("external-4") + // The same providerId under two different providers: cross-instance id collisions + // must resolve to the right item per provider + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "shared-id", for: book1.uuid) + _ = await sut.setExternalResource(providerName: "audiobookshelf", providerId: "shared-id", for: book2.uuid) + + let jellyfin = sut.findResource(for: "shared-id", providerName: "jellyfin") + XCTAssertEqual(jellyfin?.libraryItemUuid, book1.uuid) + + let abs = sut.findResource(for: "shared-id", providerName: "audiobookshelf") + XCTAssertEqual(abs?.libraryItemUuid, book2.uuid) + } + + @MainActor + func testHandleSyncFromExternalResourceUpdatesNewerProgress() async { + let book = makeBook("external-5", duration: 200) + // Background write FIRST, then refresh before the view-context mutations: there is + // no merge policy (conflicts fatalError by design), so the test must not hold a + // stale view snapshot across the background save. + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "jelly-5", for: book.uuid) + sut.dataManager.getContext().refreshAllObjects() + + book.currentTime = 10 + book.lastPlayDate = Date(timeIntervalSince1970: 1_000) + sut.dataManager.saveContext() + + let remoteDate = Date(timeIntervalSince1970: 2_000) + let remote = JellyfinLibraryItem( + id: "jelly-5", + name: "external-5", + kind: .audiobook, + durationSeconds: 200, + currentSeconds: 100, + isFinished: false, + lastPlayedDate: remoteDate, + blurHash: nil, + imageAspectRatio: nil, + details: nil + ) + sut.handleSyncFromExternalResource(remoteItemsDictionary: ["jelly-5": remote]) + + sut.dataManager.getContext().refresh(book, mergeChanges: true) + XCTAssertEqual(book.currentTime, 100, accuracy: 0.01) + XCTAssertEqual(book.lastPlayDate, remoteDate) + // The library row renders percentCompleted — it must move with the playhead + XCTAssertEqual(book.percentCompleted, 50, accuracy: 0.01) + } + + @MainActor + func testHandleSyncFromExternalResourceIgnoresOlderProgress() async { + let localDate = Date(timeIntervalSince1970: 5_000) + let book = makeBook("external-6", duration: 200) + // Same ordering rule as the newer-progress test: background write first + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "jelly-6", for: book.uuid) + sut.dataManager.getContext().refreshAllObjects() + + book.currentTime = 150 + book.lastPlayDate = localDate + sut.dataManager.saveContext() + + let remote = JellyfinLibraryItem( + id: "jelly-6", + name: "external-6", + kind: .audiobook, + durationSeconds: 200, + currentSeconds: 20, + isFinished: false, + lastPlayedDate: Date(timeIntervalSince1970: 1_000), + blurHash: nil, + imageAspectRatio: nil, + details: nil + ) + sut.handleSyncFromExternalResource(remoteItemsDictionary: ["jelly-6": remote]) + + sut.dataManager.getContext().refresh(book, mergeChanges: true) + // Local progress is newer — the stale remote push must not clobber it + XCTAssertEqual(book.currentTime, 150, accuracy: 0.01) + XCTAssertEqual(book.lastPlayDate, localDate) + } + + @MainActor + func testInsertItemsFromResourcesCreatesExternalBooks() async { + let simpleItem = SimpleLibraryItem( + title: "remote-book", + details: "remote-author", + speed: 1.0, + currentTime: 0, + duration: 300, + percentCompleted: 0, + isFinished: false, + relativePath: "jellyfin/remote-book.m4b", + remoteURL: nil, + artworkURL: nil, + orderRank: 0, + parentFolder: nil, + originalFileName: "remote-book.m4b", + lastPlayDate: nil, + type: .book, + uuid: UUID().uuidString + ) + let resource = SimpleExternalResource( + providerName: "jellyfin", + providerId: "insert-1", + syncStatus: ExternalResource.SyncStatus.notSynced.rawValue, + lastSyncedAt: nil, + libraryItem: simpleItem + ) + // A resource without a libraryItem cannot become a book row and must be skipped + let orphan = SimpleExternalResource( + providerName: "jellyfin", + providerId: "insert-orphan", + syncStatus: ExternalResource.SyncStatus.notSynced.rawValue, + lastSyncedAt: nil + ) + + let inserted = await sut.insertItems(fromResources: [resource, orphan]) + + XCTAssertEqual(inserted.count, 1) + XCTAssertEqual(inserted.first?.title, "remote-book") + + // createExternalBook deliberately mints a fresh local uuid (matchUuid reconciles + // against the server later) and provider-scopes relativePath so same-named books + // from different servers can't collide + XCTAssertEqual(inserted.first?.relativePath, "insert-1-remote-book.m4b") + let stored = sut.findResource(for: "insert-1", providerName: "jellyfin") + XCTAssertEqual(stored?.libraryItemUuid, inserted.first?.uuid) + XCTAssertNil(sut.findResource(for: "insert-orphan", providerName: "jellyfin")) + } +} diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index ecf788568..828cdcd19 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -115,8 +115,11 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { self.tasksCountService = ConcurrentTasksCountService(tasksDataManager: tasksDataManager) startListeningForNewTasks() bindObservers() - wakeUpWorkers() + // Policy BEFORE workers: createOperation consults accessPolicy to decide whether a + // persisted upload may run — waking workers first only worked because wakeUpWorkers + // happens to suspend on the repository actor before any pop updateConcurrentService(accessLevel) + wakeUpWorkers() } func bindObservers() { diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 3a1d68631..df6a7e012 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -125,7 +125,9 @@ public final class SyncService: SyncServiceProtocol, BPLogger { public private(set) var isActive: Bool = false /// In-flight logout teardown, awaited before an initial library sync re-schedules, /// so a re-login can't begin scheduling until the queue reset has finished. - private var teardownTask: Task? + /// Main-actor isolated: assigned from the `.logout` sink and read from arbitrary + /// async contexts — without defined isolation the property access is a data race. + @MainActor private var teardownTask: Task? /// Dictionary holding the initiating item relative path as key and the download tasks as value private var downloadTasksDictionary = [String: [URLSessionTask]]() @@ -211,7 +213,10 @@ public final class SyncService: SyncServiceProtocol, BPLogger { /// Covers every logout path (iOS sign-out, account deletion, Watch), since /// they all post `.logout`. Tears down the queue, the flag, and `isActive`. /// Held in `teardownTask` so a re-login's initial sync awaits it first. - self?.teardownTask = Task { await self?.logout() } + Task { @MainActor [weak self] in + guard let self else { return } + self.teardownTask = Task { await self.logout() } + } }) .store(in: &disposeBag) @@ -277,7 +282,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { /// Same gate as `syncLibraryContents()`: don't reconcile while a logout teardown /// is still clearing the queue, in case a fast re-login routed here before the /// `hasScheduledLibraryContents` flag was reset. - await teardownTask?.value + await MainActor.run { teardownTask }?.value let response = try await fetchContents(at: relativePath) @@ -296,7 +301,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { /// Wait for any in-flight logout teardown to finish before scheduling, so a fast /// logout→login can't have a late `resetAllJobs()` wipe freshly-scheduled jobs. - await teardownTask?.value + await MainActor.run { teardownTask }?.value if await queuedJobsCount() > 0 { Self.logger.trace("Clearing orphaned tasks before initial library sync") diff --git a/Shared/SwiftData/MigrationPlan.swift b/Shared/SwiftData/MigrationPlan.swift index 9a1dcbcaf..1d609ea31 100644 --- a/Shared/SwiftData/MigrationPlan.swift +++ b/Shared/SwiftData/MigrationPlan.swift @@ -9,7 +9,7 @@ import Foundation import SwiftData import CoreData -public enum MigrationPlan: SchemaMigrationPlan { +public enum MigrationPlan: SchemaMigrationPlan, BPLogger { public static var schemas: [any VersionedSchema.Type] { [SchemaV1.self, SchemaV2.self, SchemaV3.self] } @@ -208,7 +208,13 @@ public enum MigrationPlan: SchemaMigrationPlan { ) } - try? coreDataContext.save() + do { + try coreDataContext.save() + } catch { + // Self-healing (the resource returns on the next sync), but a silent failure + // here leaves upload tasks pointing at resources that never persisted locally + Self.logger.error("v2ToV3 external-resource backfill save failed: \(error)") + } } // Only enqueue upload tasks for users who already have a server-side library; From 9b6612844b780559acc1a32077badddcf8a3f605 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 25 Aug 2026 04:03:27 -0500 Subject: [PATCH 052/172] fix: address review feedback (round 42) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LibraryItemSyncOperation now honors cancellation: it stores its execution Task and overrides cancel() to cancel it, mark the error, and release the queue slot. The async URLSession calls throw CancellationError at their next suspension point, so an in-flight op can no longer finish a PUT or post confirmations under the NEXT signed-in account's token — which is exactly what the .logout cancelAllOperations comment promised (NetworkClient reads the keychain token per request). - AsyncOperation's cancelled-before-start path routes through finish() so didFinish is set and the isFinished-KVO-fires-once contract holds. - The keychain reload log is demoted to debug — nil is also the completely normal never-added-a-server first launch. The retry-forever WARN remains rebutted on-thread: infinite serial-queue retries are intentional develop/Android parity. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../IntegrationConnectionStore.swift | 4 +++- .../ConcurrentSync/AsyncOperation.swift | 4 +++- .../Sync/LibraryItemSyncOperation.swift | 22 ++++++++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Shared/Integrations/IntegrationConnectionStore.swift b/Shared/Integrations/IntegrationConnectionStore.swift index 59cd8b49e..ce9bd5975 100644 --- a/Shared/Integrations/IntegrationConnectionStore.swift +++ b/Shared/Integrations/IntegrationConnectionStore.swift @@ -103,7 +103,9 @@ final class IntegrationConnectionStore: B connections = [single] save() } else { - Self.logger.warning("failed to load connection data from keychain") + // Nil is also the completely normal never-added-a-server first launch — + // not warning-worthy on every boot + Self.logger.debug("no readable connection data in keychain (first launch, or decode failure)") return } diff --git a/Shared/Services/ConcurrentSync/AsyncOperation.swift b/Shared/Services/ConcurrentSync/AsyncOperation.swift index 7283c1438..241fa863f 100644 --- a/Shared/Services/ConcurrentSync/AsyncOperation.swift +++ b/Shared/Services/ConcurrentSync/AsyncOperation.swift @@ -61,7 +61,9 @@ class AsyncOperation: Operation, @unchecked Sendable { override func start() { guard !isCancelled else { - state = .finished + // Route through finish() so didFinish is set — writing state directly would + // let a later stray finish() fire the isFinished KVO pair a second time + finish() return } state = .executing diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 86d8cee7a..cae000b24 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -36,10 +36,18 @@ class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.uuid = task.uuid } + private var executionTask: Task? + // TODO: split into separate Operations override func main() { - Task { + executionTask = Task { do { + // Cooperative cancellation: cancel() cancels this Task, and the async + // URLSession calls below throw CancellationError at their next suspension + // point — an in-flight op must not finish a PUT or post confirmations under + // the NEXT signed-in account's token (NetworkClient reads the keychain token + // per request). + try Task.checkCancellation() switch jobType { case .upload: guard @@ -119,6 +127,18 @@ class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { didSucceed = error == nil super.finish() } + + override func cancel() { + super.cancel() + // Mark failed BEFORE finishing so a logout-cancelled op can never be treated + // as succeeded, then release the queue slot; finish() is idempotent, so the + // cancelled Task's own finish() later is a no-op. + if error == nil { + error = BookPlayerError.cancelledTask + } + executionTask?.cancel() + if isExecuting { finish() } + } } // MARK: - Upload task From aaf99d7ad32367dc285369866f7acd9f0bd319f7 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 25 Aug 2026 07:38:05 -0500 Subject: [PATCH 053/172] fix: address review feedback (round 43) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LibraryItemSyncOperation: error/results are lock-guarded (propertyLock, same pattern as the base class didSucceed) — they are written from the operation's detached Task and cancel(), and read from the queue-thread completionBlock with no happens-before edge. - ConcurrentTasksRepository.pop: the save-retry re-issues the payload delete after rollback() — rollback undid the payload delete performed before the failed save, so the retry removed only the reference and orphaned the payload row until the next logout clearAll(). NOT fixed (recorded as human follow-up): the v12 model relaxes LibraryItem.uuid to optional while the Swift accessor stays non-optional. Making it required again breaks MappingModel_v11_to_v12's destination checksum (verified: 134140 at test-host launch) — the mapping model needs regeneration in Xcode alongside that edit. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ConcurrentTasksRepository.swift | 7 +++++ .../Sync/LibraryItemSyncOperation.swift | 29 +++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift index 7f488b81c..2d29633d2 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift @@ -117,6 +117,13 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog } catch { Self.logger.error("Failed to persist task removal (\(task.id)), retrying: \(error)") context.rollback() + // rollback() undid the payload delete above too — re-issue it or the payload + // row stays orphaned until the next clearAll() + try? tasksDataManager.deleteTaskModel( + with: task.id, + jobType: task.jobType, + context: context + ) if let reference = tasksContainer.tasks.first(where: { $0.taskID == task.id }) { tasksContainer.tasks.removeAll(where: { $0.id == reference.id }) context.delete(reference) diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index cae000b24..53f86c0c6 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -17,8 +17,33 @@ class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { let uuid: String let jobType: SyncJobType let parameters: [String: Any] - var results: ApiResponse? - var error: Error? + + /// Written from the operation's detached Task (and `cancel()`), read from the + /// queue-thread completionBlock — lock-guarded like the base class's `didSucceed` + /// so the reads have a happens-before edge with the writes. + private let propertyLock = NSLock() + private var _results: ApiResponse? + var results: ApiResponse? { + get { + propertyLock.lock(); defer { propertyLock.unlock() } + return _results + } + set { + propertyLock.lock(); defer { propertyLock.unlock() } + _results = newValue + } + } + private var _error: Error? + var error: Error? { + get { + propertyLock.lock(); defer { propertyLock.unlock() } + return _error + } + set { + propertyLock.lock(); defer { propertyLock.unlock() } + _error = newValue + } + } /// Initializer /// - Parameters: From 8d5cd6bc723ee13e992e4d32dcfa8198c94dd792 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 25 Aug 2026 07:52:33 -0500 Subject: [PATCH 054/172] docs: bring CLAUDE.md in line with the PR's invariants (round 44) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per the repo's own rule that a changed invariant updates this file in the same PR: CoreData is now v1…v12 (v12 adds ExternalResource + the externalResources relationship, mapped v11→v12); the SwiftData schema chain is V1→V2→V3 with app code on the V3 typealiases; the task-queue actor is ConcurrentTasksRepository (SyncTasksStorage was replaced) with execution in ConcurrenceService; and the ModelContainer no longer try!- crashes on incompatible stores — 134504/134100 move the store aside and retry fresh, everything else still fatals. The carried uuid-optionality warn stays a recorded human follow-up: the one-attribute model fix requires regenerating MappingModel_v11_to_v12 in Xcode (checksum breach verified via 134140); all creation paths assign uuid, so no NULL rows occur in practice. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- CLAUDE.md | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 8fa4e1dcb..da7d78721 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -208,8 +208,9 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi concrete subclasses `Book`/`Folder` must be used), plus `Library`, `Bookmark`, `Chapter`, `Account`, `Theme`, `PlaybackRecord`, `HardcoverBook`. `ItemType: Int16 { folder, bound, book }`. - **Migration is manual and staged** (`Shared/CoreData/Migrations/DataMigrationManager.swift` + `DBVersion.swift`, - currently `v1…v11`, current model `Audiobook Player 11`). It migrates **one version at a time** using explicit - `.xcmappingmodel`s where present (`v1→v2 … v3→v4`, `v7→v8 … v10→v11`; the v4–v7 hops rely on inference). A model + currently `v1…v12`, current model `Audiobook Player 12` — v12 adds the `ExternalResource` entity + the + `LibraryItem.externalResources` relationship for media-server items). It migrates **one version at a time** using explicit + `.xcmappingmodel`s where present (`v1→v2 … v3→v4`, `v7→v8 … v11→v12`; the v4–v7 hops rely on inference). A model change requires: **(1)** new `.xcdatamodel` version + bump `.xccurrentversion`; **(2)** new `DBVersion` case + `model()`; **(3)** a mapping model registered in `mappingModelName()` (inference is OFF, so anything non-trivial fails without one); **(4)** any custom data population added to the post-migration step; **(5)** @@ -220,16 +221,21 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi - `TasksDataManager.swift` owns the `ModelContainer`. **Store is `applicationSupportDirectory/bp-synctasks.sqlite` — the app-support dir, NOT the App Group**, separate from the CoreData store. CloudKit disabled. - `container = try! ModelContainer(...)` — **`try!` crashes on any container/migration failure.** -- Versioned schema: `SchemaV1` (10 models) → `SchemaV2` (11 models, adds `MatchUuidsTaskModel` + a `uuid` field). - App code always uses the V2 typealiases. `@Model` types: `SyncTasksContainer`, `SyncTaskReferenceModel` - (`@Attribute(.unique) id`), and per-job payload models. + Container-build failure with an incompatible-store code (cocoa 134504/134100) MOVES the store aside + (`.incompatible` suffix, never deleted) and retries fresh; any other failure — including a fresh-store + failure — still crashes (`fatalError`). +- Versioned schema: `SchemaV1` (10 models) → `SchemaV2` (11 models, adds `MatchUuidsTaskModel` + a `uuid` field) + → `SchemaV3` (unified concurrent-task container: `ConcurrentTaskReferenceModel` with per-queue keys, plus + `ExternalUpdateTaskModel`/`ConcurrentUploadTaskModel` payloads). App code always uses the V3 typealiases. - `MigrationPlan.swift` (`SchemaMigrationPlan`) has a **custom `v1ToV2` stage that reads UUIDs out of the CoreData `LibraryItem` table** — it requires `MigrationPlan.injectedCoreDataContext` to be set first, else - **`fatalError`**. This is the one coupling between the two stores; set it before the `ModelContainer` is built. + **`fatalError`** (the `v2ToV3` stage also uses the injected context, but degrades gracefully when absent). + This is the coupling between the two stores; set it before the `ModelContainer` is built. - **`ModelContext` is per-actor and not `Sendable`.** All task-queue reads/writes go through - `public actor SyncTasksStorage: ModelActor` (`Shared/Services/Sync/SyncTasksStorage.swift`) with a single - confined `ModelContext`. Do not share/pass a `ModelContext` across actors or threads. + `public actor ConcurrentTasksRepository: ModelActor` (`Shared/Services/ConcurrentSync/`) with a single + confined `ModelContext` (it replaced the old `SyncTasksStorage` actor). Do not share/pass a `ModelContext` + across actors or threads. Execution lives in `ConcurrenceService` (OperationQueue): the `sync` queue key runs + BookPlayer-server jobs serially; provider-named keys (externalUpdate pushes) and `uploadFile` run concurrently. - **Realm is gone** (Realm → SwiftData migration is complete). Only inert remnants remain (`DataManager.getSyncTasksRealmURL()` is dead; a stale comment in `LibraryService`). Don't reintroduce it. @@ -457,8 +463,9 @@ The crash surfaces and invariants most likely to be broken by a change. (The ful so conflicts crash. 2. **CoreData model change without the full 5-step manual-migration ritual** (auto-inference is OFF) → crashes existing installs. -3. **SwiftData:** don't share a `ModelContext` across actors; the sync-queue lives behind the `SyncTasksStorage` - actor; `MigrationPlan.injectedCoreDataContext` must be set before the container is built. +3. **SwiftData:** don't share a `ModelContext` across actors; the sync-queue lives behind the + `ConcurrentTasksRepository` actor; `MigrationPlan.injectedCoreDataContext` must be set before the container + is built. 4. **Retain cycles / Combine leaks:** missing `[weak self]` in a sink; an `AnyCancellable` not stored; a named subscription not `.cancel()`'d before rebind (`PlayerManager` depends on this). 5. **UI/state mutated off the main actor** without a `@MainActor` hop / `.receive(on: .main)`. From f698036be4b3fcd3d1c702a319b3d979ed81c8d2 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 25 Aug 2026 09:17:08 -0500 Subject: [PATCH 055/172] fix: drop spurious await on synchronous processExternalFiles (round 45) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One-word fix silencing the "no 'async' operations occur within 'await'" warning — processExternalFiles() is a synchronous @MainActor function called from a @MainActor context. The uuid-optionality INFO stays a human Xcode follow-up: empirically confirmed twice (including after a clean build) that MappingModel_v11_to_v12 pins the v11/v12 entity version hashes, so making LibraryItem.uuid required again and regenerating the mapping model must ship together from Xcode. Every creation path assigns uuid, so no NULL rows occur in practice. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift index ddc13222f..e25264554 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift @@ -40,6 +40,7 @@ class ExternalImportViewModel: ExternalViewModelProtocol { } func handleImportResources() async { - await importManager.processExternalFiles() + // Synchronous @MainActor call from a @MainActor context — no await needed + importManager.processExternalFiles() } } From a703d32423e07d02cd21fc73071e8d3befc32681 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 25 Aug 2026 09:55:21 -0500 Subject: [PATCH 056/172] fix: address review feedback (round 46) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ItemDetails: external-resource hosts resolve once on appear into @State — resolveHost did a synchronous keychain read + JSON decode inside the view body on every render. - ConcurrentTasksRepository: autosave off — every mutating method saves explicitly (pop even has a save->rollback->re-save retry), so autosave only made persistence timing nondeterministic. - PlayerViewModel.bindBookObservers drops the previous sink generation: PlayerView calls it on every appear, appending another copy of every subscription. Verified all disposeBag stores live in the three bind functions it calls, and PlayerView is its only caller. - AudiobookShelf cover URLs build via appendingPathComponent + URLComponents — the pre-existing string concatenation produced host//api/... which some reverse proxies 404 (same fix as the download builders in round 39). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library/ItemDetails/ItemDetailsView.swift | 12 +++++++++++- .../Player/ViewModels/PlayerViewModel.swift | 3 +++ .../AudiobookShelfConnectionService.swift | 19 +++++++++++-------- .../ConcurrentTasksRepository.swift | 4 +++- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift index 66787a4e0..f1749900c 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift @@ -136,6 +136,10 @@ struct ItemDetailsView: View { struct ItemDetailsExternalResourceSectionView: View { let externalResources: [SimpleExternalResource] + /// Resolved once on appear, keyed by providerId: resolving inside the body did a + /// synchronous keychain read + JSON decode on every render. + @State private var resolvedHosts: [String: String] = [:] + @EnvironmentObject private var theme: ThemeViewModel var body: some View { @@ -167,7 +171,7 @@ struct ItemDetailsExternalResourceSectionView: View { Text("host_title".localized) .bold() Spacer() - Text(resolveHost(resource)) + Text(resolvedHosts[resource.providerId] ?? "") .lineLimit(1) .truncationMode(.tail) } @@ -179,6 +183,12 @@ struct ItemDetailsExternalResourceSectionView: View { } header: { Text("external_resources_title".localized) } + .onAppear { + guard resolvedHosts.isEmpty else { return } + resolvedHosts = externalResources.reduce(into: [:]) { hosts, resource in + hosts[resource.providerId] = resolveHost(resource) + } + } } } diff --git a/BookPlayer/Player/ViewModels/PlayerViewModel.swift b/BookPlayer/Player/ViewModels/PlayerViewModel.swift index 93cfd5313..a9b7d7c31 100644 --- a/BookPlayer/Player/ViewModels/PlayerViewModel.swift +++ b/BookPlayer/Player/ViewModels/PlayerViewModel.swift @@ -124,6 +124,9 @@ final class PlayerViewModel: ObservableObject { } func bindBookObservers() { + // Called on every player appear — drop the previous generation of sinks or each + // open appends another copy of every subscription below + disposeBag.removeAll() bindBookPlayingProgressEvents() bindNotificationSubscribers() bindBookSharedObservers() diff --git a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift index ee91cdbf5..6e1dcb76a 100644 --- a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift +++ b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift @@ -818,14 +818,17 @@ public class AudiobookShelfConnectionService: BPLogger { } // AudiobookShelf image endpoint: /api/items/:id/cover - // Optional query params: width, height, format - var urlString = "\(baseURL.absoluteString)/api/items/\(itemID)/cover" - - // Add size parameters if needed - let width = Int(size.width) - let height = Int(size.height) - urlString += "?width=\(width)&height=\(height)&format=webp" + // appendingPathComponent normalizes a trailing slash in the stored server URL — + // string concatenation yields "host//api/…", which some reverse proxies 404 + // (same fix as the download-URL builders) + let coverURL = baseURL.appendingPathComponent("api/items/\(itemID)/cover") + var components = URLComponents(url: coverURL, resolvingAgainstBaseURL: false) + components?.queryItems = [ + URLQueryItem(name: "width", value: String(Int(size.width))), + URLQueryItem(name: "height", value: String(Int(size.height))), + URLQueryItem(name: "format", value: "webp"), + ] - return URL(string: urlString) + return components?.url } } diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift index 2d29633d2..50354cab4 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift @@ -56,7 +56,9 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog public init(tasksDataManager: TasksDataManager) { self.modelContainer = tasksDataManager.container let modelContext = ModelContext(tasksDataManager.container) - modelContext.autosaveEnabled = true + // Every mutating method saves explicitly (pop even has a save→rollback→re-save + // retry) — autosave would make persistence timing nondeterministic + modelContext.autosaveEnabled = false self.modelExecutor = DefaultSerialModelExecutor(modelContext: modelContext) self.tasksDataManager = tasksDataManager } From 74b83a66e441c3834d16b9702345589acda6118b Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 25 Aug 2026 10:18:13 -0500 Subject: [PATCH 057/172] fix: address review feedback (round 47) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ExternalUpdateProgressOperation consumes permanent HTTP 4xx rejections: an item deleted on the provider (or a malformed id) hot-looped the provider queue every 5s forever — same consume semantics as the unknown-host and session-expired cases. Jellyfin surfaces these as Get.APIError.unacceptableStatusCode, ABS as IntegrationError.unexpectedResponse; 401/403 with a live connection are already mapped to sessionExpired upstream. - LibraryItemSyncOperation.executionTask joins error/results under propertyLock — cancel() (callable from any thread on logout/lapse) could read a stale nil and skip cancelling the in-flight Task, exactly the cross-account scenario the cancel override exists to prevent. - SimpleLibraryItem's == now includes externalResources (SimpleExternalResource gains synthesized Equatable/Hashable; the mutual recursion terminates because back-pointers are built with ignoreLibraryItem). Rows render provider icons from this field, so removeDuplicates/onChange paths must refresh a row that gained or lost a media-server link. hash(into:) is untouched — collisions are contract-legal, only == drives the staleness. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../SimpleExternalResource.swift | 2 +- .../SimpleLibraryItem.swift | 4 ++++ .../ExternalUpdateProgressOperation.swift | 21 +++++++++++++++++++ .../Sync/LibraryItemSyncOperation.swift | 15 ++++++++++++- 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift index 7d1168db0..c21913871 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -8,7 +8,7 @@ import Foundation -public struct SimpleExternalResource: Identifiable { +public struct SimpleExternalResource: Identifiable, Equatable, Hashable { public let id: Int public let providerName: String public let providerId: String diff --git a/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift b/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift index 054be7331..9532a3a88 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift @@ -53,6 +53,10 @@ public struct SimpleLibraryItem: Identifiable, Hashable, Equatable { && lhs.type.rawValue == rhs.type.rawValue && lhs.orderRank == rhs.orderRank && lhs.uuid == rhs.uuid + // Rows render provider icons from this — snapshots differing only in their + // external resources must not compare equal, or removeDuplicates/onChange + // paths skip refreshing a row that just gained or lost a media-server link + && lhs.externalResources == rhs.externalResources } static var fetchRequestProperties = [ diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift index 5b7e8b57e..585142fc5 100644 --- a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift +++ b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift @@ -7,6 +7,7 @@ // import Foundation +import Get class ExternalUpdateProgressOperation: AsyncOperation, BPLogger, @unchecked Sendable { @@ -63,6 +64,12 @@ class ExternalUpdateProgressOperation: AsyncOperation, BPLogger, @unchecked Send // the push instead of hot-looping the provider queue in the background. Self.logger.error("External progress push dropped (session expired): \(error)") self.didSucceed = true + } else if Self.isPermanentRejection(error) { + // HTTP 4xx from the provider (item deleted server-side, malformed id) is just as + // permanent as an unknown host or an expired session — the queue retries failures + // forever, so consume instead of spinning a network+battery cycle every 5s. + Self.logger.error("External progress push dropped (permanent rejection): \(error)") + self.didSucceed = true } else { Self.logger.error("External progress push failed: \(error)") self.didSucceed = false @@ -71,6 +78,20 @@ class ExternalUpdateProgressOperation: AsyncOperation, BPLogger, @unchecked Send } } + /// ABS surfaces non-2xx as `IntegrationError.unexpectedResponse`; Jellyfin's SDK + /// surfaces them as `Get.APIError.unacceptableStatusCode` (401/403 are already mapped + /// to `sessionExpired` upstream when a connection exists). + private static func isPermanentRejection(_ error: Error) -> Bool { + switch error { + case IntegrationError.unexpectedResponse(let code?) where (400...499).contains(code): + return true + case APIError.unacceptableStatusCode(let status) where (400...499).contains(status): + return true + default: + return false + } + } + func doJellyfinUpdate() async throws { let jellyfinService = JellyfinConnectionService() await jellyfinService.setup() diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 53f86c0c6..56cfad8e6 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -61,7 +61,20 @@ class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.uuid = task.uuid } - private var executionTask: Task? + /// Written in main() on the queue thread, read/cancelled by cancel() from any thread + /// (logout/lapse) — same lock discipline as error/results, or cancel() can read a + /// stale nil and skip cancelling the in-flight Task. + private var _executionTask: Task? + private var executionTask: Task? { + get { + propertyLock.lock(); defer { propertyLock.unlock() } + return _executionTask + } + set { + propertyLock.lock(); defer { propertyLock.unlock() } + _executionTask = newValue + } + } // TODO: split into separate Operations override func main() { From 3396ea181eb8227580746cdac6f0851cda959b54 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 29 Aug 2026 10:38:38 -0500 Subject: [PATCH 058/172] Regenerate mapping model --- BookPlayer.xcodeproj/project.pbxproj | 43 +- .../BookPlayerWatch (Complication).xcscheme | 2 + .../xcschemes/BookPlayerWatch.xcscheme | 2 + .../xcschemes/BookPlayerWidgetsWatch.xcscheme | 2 + .../Audiobook Player 12.xcdatamodel/contents | 4 +- .../xcmapping.xml | 742 +++++++++--------- 6 files changed, 397 insertions(+), 398 deletions(-) diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 561551a86..7e00f44c7 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -456,6 +456,12 @@ 6357F11A2A8BA084007947FC /* BPURLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6357F1182A8BA084007947FC /* BPURLSession.swift */; }; 636086012C5B3EB400341D78 /* CustomRewindIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 636086002C5B3EB400341D78 /* CustomRewindIntent.swift */; }; 63652C732E6E8A9700231202 /* ChaptersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63652C722E6E8A9700231202 /* ChaptersView.swift */; }; + 63673F96304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 63673F95304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 63673F97304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 63673F95304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 63673F98304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 63673F95304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 63673F99304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 63673F95304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 63673F9A304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 63673F95304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel */; }; + 63673F9B304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 63673F95304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel */; }; 63682CBE2E2F422900C15FC1 /* DebugFileTransferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63682CBD2E2F422900C15FC1 /* DebugFileTransferable.swift */; }; 636E77802DF33DA200D4DC0A /* BP+ErrorAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63CD85262CE3064600EDBEA8 /* BP+ErrorAlerts.swift */; }; 636E77892DF4C76600D4DC0A /* JellyfinRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 636E77882DF4C76600D4DC0A /* JellyfinRootView.swift */; }; @@ -673,12 +679,6 @@ 9907757C2FF33C0C00E35FAE /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 9907757B2FF33C0C00E35FAE /* Kingfisher */; }; 9907757E2FF33C1500E35FAE /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 9907757D2FF33C1500E35FAE /* Kingfisher */; }; 990775802FF33D5300E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 9907757F2FF33D5300E35FAE /* Get */; }; - 990BF7102FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; - 990BF7112FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; - 990BF7122FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; - 990BF7132FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; - 990BF7142FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; - 990BF7152FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */; }; 9911FBA92F71BD3000DC9A2B /* JellyfinConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A542CEE8849000A4B4B /* JellyfinConnectionService.swift */; }; 9911FBAC2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */; }; 9911FBAD2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */; }; @@ -745,8 +745,8 @@ 99C919CF2F99A8C100F66081 /* IntegrationDetailsViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 808E351A8B30ABCBA9EC00EF /* IntegrationDetailsViewModelProtocol.swift */; }; 99C919D02F99A8C100F66081 /* IntegrationDetailsViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 808E351A8B30ABCBA9EC00EF /* IntegrationDetailsViewModelProtocol.swift */; }; 99D995872F719E7600BAF216 /* JellyfinConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A542CEE8849000A4B4B /* JellyfinConnectionService.swift */; }; - 99D995892F719E7E00BAF216 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; - 99D9958A2F719E7E00BAF216 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; + 99D995892F719E7E00BAF216 /* (null) in Sources */ = {isa = PBXBuildFile; }; + 99D9958A2F719E7E00BAF216 /* (null) in Sources */ = {isa = PBXBuildFile; }; 99D9958F2F71AB6800BAF216 /* JellyfinLibraryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF18A322CF0A26200238F8D /* JellyfinLibraryItem.swift */; }; 99D995902F71AB6800BAF216 /* JellyfinLibraryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF18A322CF0A26200238F8D /* JellyfinLibraryItem.swift */; }; 99D995932F71ABAA00BAF216 /* JellyfinAudiobookDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD46232CF38F91002E9C50 /* JellyfinAudiobookDetailsView.swift */; }; @@ -1539,6 +1539,7 @@ 636086032C5B589900341D78 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Localizable.strings; sourceTree = ""; }; 636086042C5B589900341D78 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/AppShortcuts.strings; sourceTree = ""; }; 63652C722E6E8A9700231202 /* ChaptersView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChaptersView.swift; sourceTree = ""; }; + 63673F95304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = MappingModel_v11_to_v12.xcmappingmodel; sourceTree = ""; }; 63682CBD2E2F422900C15FC1 /* DebugFileTransferable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugFileTransferable.swift; sourceTree = ""; }; 636E77882DF4C76600D4DC0A /* JellyfinRootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinRootView.swift; sourceTree = ""; }; 636ED1E42D51254E00BFF3FD /* TipOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipOption.swift; sourceTree = ""; }; @@ -1753,7 +1754,6 @@ 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalSyncInfoView.swift; sourceTree = ""; }; 990442112F88B0FC007E2A44 /* SyncInvitationCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncInvitationCard.swift; sourceTree = ""; }; 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionPillView.swift; sourceTree = ""; }; - 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = MappingModel_v11_to_v12.xcmappingmodel; sourceTree = ""; }; 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncOperation.swift; sourceTree = ""; }; 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrenceService.swift; sourceTree = ""; }; 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTasksRepository.swift; sourceTree = ""; }; @@ -2591,7 +2591,7 @@ 9FF383D02A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel */, 3F66408C2E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel */, 996D4CC42F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel */, - 990BF70F2FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel */, + 63673F95304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel */, ); path = Migrations; sourceTree = ""; @@ -2699,7 +2699,6 @@ 8B8DAE18EF12485AD3509B2D /* JellyfinQuickConnectTests.swift */, 623E13D0C96857091397B5EF /* IntegrationServerAddressTests.swift */, ); - name = MediaServerIntegration; path = MediaServerIntegration; sourceTree = ""; }; @@ -3126,9 +3125,6 @@ 638487A02EC7722400DF442B /* Network */ = { isa = PBXGroup; children = ( - 6384879C2EC7722400DF442B /* AudiobookShelfConnectionData.swift */, - 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */, - 6384879F2EC7722400DF442B /* AudiobookShelfLibrary.swift */, ); path = Network; sourceTree = ""; @@ -3364,7 +3360,6 @@ children = ( 1FFF7B7B6E62B274D230C207 /* IntegrationServerAddress.swift */, ); - name = Connection; path = Connection; sourceTree = ""; }; @@ -3544,7 +3539,6 @@ A4D9C8B6E5F1D2A7C4E9B81B /* IntegrationImageSizing.swift */, 7DDD933F7FDEDC1BF67EC567 /* TabEditingEnvironmentKey.swift */, 75AADE0F4BFEC0640FC687FA /* TagsFlowLayout.swift */, - 808E351A8B30ABCBA9EC00EF /* IntegrationDetailsViewModelProtocol.swift */, A68DC2D5A126AAFBFEC4F7EF /* Auth */, 891E8E9FD0037C7E3C06C7B4 /* Connection */, ); @@ -3815,7 +3809,6 @@ isa = PBXGroup; children = ( ); - name = Auth; path = Auth; sourceTree = ""; }; @@ -4625,7 +4618,7 @@ 6399D0702CEBA35D00A2E278 /* RemoteItemListView.swift in Sources */, 41C3396225E04103003ED2B0 /* MappingModel_v2_to_v3.xcmappingmodel in Sources */, 6350E4722CF4D0220077CDC1 /* PlayerControlsView.swift in Sources */, - 990BF7152FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, + 63673F97304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 9FA334C727C28D650064E8EA /* PlaybackControlsView.swift in Sources */, 4140EA8522728A160009F794 /* BookPlayer.xcdatamodeld in Sources */, 63CD851D2CE2964900EDBEA8 /* SettingsView.swift in Sources */, @@ -4638,7 +4631,6 @@ files = ( 9FC1E46D2815A8CA00522FA8 /* LibraryAPI.swift in Sources */, 99F3C20B2F62285800AC91A2 /* ApiResponse.swift in Sources */, - 990BF7102FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 4140EA6C2272898F0009F794 /* DataManager.swift in Sources */, 4140EA71227289A20009F794 /* UIColor+BookPlayer.swift in Sources */, 99C919D02F99A8C100F66081 /* IntegrationDetailsViewModelProtocol.swift in Sources */, @@ -4774,7 +4766,7 @@ 4138CE1226E5542D0014F11E /* Bookmark+CoreDataClass.swift in Sources */, 99F3C2112F650F1200AC91A2 /* ExternalResource+CoreDataProperties.swift in Sources */, 41EB07162752F17B00EFEE13 /* PlayableItem.swift in Sources */, - 99D9958A2F719E7E00BAF216 /* BuildFile in Sources */, + 99D9958A2F719E7E00BAF216 /* (null) in Sources */, 4140EA84227289E60009F794 /* BookPlayer.xcdatamodeld in Sources */, 99F3C20E2F650F0900AC91A2 /* ExternalResource+CoreDataClass.swift in Sources */, 99F3C2072F5FD41300AC91A2 /* SchemaV2SyncTasksModels.swift in Sources */, @@ -4787,6 +4779,7 @@ C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */, 82BB1A19497560FC62C4741C /* WebAuthenticating.swift in Sources */, AE284AB4D4139ED869288F99 /* IntegrationConnectionPayload.swift in Sources */, + 63673F99304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, EF5A25679D73F58A5D551D01 /* IntegrationConnectionStore.swift in Sources */, 8AC2579BAAAAFE0091DA9285 /* PKCE.swift in Sources */, 45FE3490229249F95A3CF5FF /* IntegrationHostResolver.swift in Sources */, @@ -4823,7 +4816,7 @@ 416A29DA256AB6A900605395 /* BookPlayer.xcdatamodeld in Sources */, 630826112AF6CA44002ACE0D /* SharedIconWidget.swift in Sources */, 637DAB0B2AEB3F6D006DC2D1 /* WidgetEntries.swift in Sources */, - 990BF7112FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, + 63673F9A304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 418CABB625EF28FC00D8C878 /* MappingModel_v3_to_v4.xcmappingmodel in Sources */, 63E893932CAFA89000946CD4 /* BPPlayerError.swift in Sources */, 41ADD6DA2570AC6300660C64 /* RecentBooksWidgetView.swift in Sources */, @@ -4915,7 +4908,6 @@ 63C1A8B02B0915EE00C4B418 /* WidgetUtils.swift in Sources */, 41B2A5ED21CCC6D100917584 /* AppNavigationController.swift in Sources */, 9F22DE40288D8BC800056FCD /* BaseLabel.swift in Sources */, - 990BF7142FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 63B407432C1B0CC1000A3B19 /* StorySkipControlsView.swift in Sources */, 99329DD02F3C282D003F8E73 /* AirplayPicker.swift in Sources */, 6338C7932E4AA4BA008016E5 /* LibraryNode.swift in Sources */, @@ -4949,6 +4941,7 @@ 63B4A3C22E92A87C00784A22 /* BookmarksFileTransferable.swift in Sources */, 6356F9B52AC7CC5600B7A027 /* CancelSleepTimerIntent.swift in Sources */, 6319089B2E335196009249C1 /* ContributorsListView.swift in Sources */, + 63673F96304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 63AD93DF2E3C80B50077E73A /* ProfileSyncTasksSectionView.swift in Sources */, 6356F9C12AC823EE00B7A027 /* LastBookStartPlaybackIntent.swift in Sources */, C3A479152094CA3800D92122 /* UIImage+BookPlayer.swift in Sources */, @@ -5307,10 +5300,9 @@ 41A1B125226F88C500EA0400 /* LibraryItem+CoreDataClass.swift in Sources */, 62CADBA52725BCB200A4A98F /* AVAudioAssetImageDataProvider.swift in Sources */, 9FC1E4592814E0B000522FA8 /* NetworkUtils.swift in Sources */, - 990BF7122FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 9911FBB52F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */, 992D6E192FA98C8F0091849F /* AudiobookShelfLibraryLevelData.swift in Sources */, - 99D995892F719E7E00BAF216 /* BuildFile in Sources */, + 99D995892F719E7E00BAF216 /* (null) in Sources */, 41C23403272E1965006BC7B8 /* PlaybackState.swift in Sources */, 99F3C2052F5FC76D00AC91A2 /* MigrationPlan.swift in Sources */, 992D6E1B2FA98CBE0091849F /* AudiobookShelfLibrary.swift in Sources */, @@ -5396,6 +5388,7 @@ 99F3C2082F5FD41300AC91A2 /* SchemaV2SyncTasksModels.swift in Sources */, DCFC79BEBAEA628FB13F33A1 /* BPFont.swift in Sources */, 63AD93D32E3C1BA70077E73A /* SimpleAccount.swift in Sources */, + 63673F9B304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 99C919CF2F99A8C100F66081 /* IntegrationDetailsViewModelProtocol.swift in Sources */, 41A1B127226F88C500EA0400 /* Library+CoreDataClass.swift in Sources */, 9F0872DB2A19867C00B7FD4A /* ArtworkResponse.swift in Sources */, @@ -5419,7 +5412,7 @@ 630826012AF29538002ACE0D /* SharedWidgetEntry.swift in Sources */, 6340D5692AF12D48003D0B09 /* SharedWidget.swift in Sources */, 63005A2D2AE7FD8000A4CA2C /* Intents.intentdefinition in Sources */, - 990BF7132FF3006D007DDE38 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, + 63673F98304332050077F1D8 /* MappingModel_v11_to_v12.xcmappingmodel in Sources */, 630825FE2AF293DC002ACE0D /* SharedWidgetContainerView.swift in Sources */, 630825FC2AF2923B002ACE0D /* WidgetUtils.swift in Sources */, 630826122AF6CA45002ACE0D /* SharedIconWidget.swift in Sources */, diff --git a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch (Complication).xcscheme b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch (Complication).xcscheme index 1bee3baed..7b33e39cb 100644 --- a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch (Complication).xcscheme +++ b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch (Complication).xcscheme @@ -70,6 +70,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "4140EA2E227288ED0009F794" BuildableName = "BookPlayerWatch.app" + BlueprintName = "BookPlayerWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> @@ -87,6 +88,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "4140EA2E227288ED0009F794" BuildableName = "BookPlayerWatch.app" + BlueprintName = "BookPlayerWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> diff --git a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch.xcscheme b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch.xcscheme index 017f6ad6f..3bb22c7a6 100644 --- a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch.xcscheme +++ b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch.xcscheme @@ -69,6 +69,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "4140EA2E227288ED0009F794" BuildableName = "BookPlayerWatch.app" + BlueprintName = "BookPlayerWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> @@ -85,6 +86,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "4140EA2E227288ED0009F794" BuildableName = "BookPlayerWatch.app" + BlueprintName = "BookPlayerWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> diff --git a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWidgetsWatch.xcscheme b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWidgetsWatch.xcscheme index a893f7eac..a2b1a2fb5 100644 --- a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWidgetsWatch.xcscheme +++ b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWidgetsWatch.xcscheme @@ -76,6 +76,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "63005A262AE7FD8000A4CA2C" BuildableName = "BookPlayerWidgetsWatch.appex" + BlueprintName = "BookPlayerWidgetsWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> @@ -118,6 +119,7 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "63005A262AE7FD8000A4CA2C" BuildableName = "BookPlayerWidgetsWatch.appex" + BlueprintName = "BookPlayerWidgetsWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> diff --git a/Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel/contents b/Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel/contents index 6c2ca5a02..a3d6a6968 100644 --- a/Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel/contents +++ b/Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel/contents @@ -1,5 +1,5 @@ - + @@ -65,7 +65,7 @@ - + diff --git a/Shared/CoreData/Migrations/MappingModel_v11_to_v12.xcmappingmodel/xcmapping.xml b/Shared/CoreData/Migrations/MappingModel_v11_to_v12.xcmappingmodel/xcmapping.xml index 75fd7d2b2..87e7f2b00 100644 --- a/Shared/CoreData/Migrations/MappingModel_v11_to_v12.xcmappingmodel/xcmapping.xml +++ b/Shared/CoreData/Migrations/MappingModel_v11_to_v12.xcmappingmodel/xcmapping.xml @@ -4,15 +4,15 @@ 134481920 - A60A657B-C3AF-4DC0-95E3-F6B0B2490805 + 835EC16E-B886-4D97-B8EF-982707BFB323 217 NSPersistenceFrameworkVersion - 1523 + 1526 NSPersistenceMaximumFrameworkVersion - 1523 + 1526 NSStoreModelVersionChecksumKey bMpud663vz0bXQE24C6Rh4MvJ5jVnzsD2sI3njZkKbc= NSStoreModelVersionHashes @@ -52,556 +52,556 @@ 1 - lastPlayed - + folder + - darkSystemGroupedBackgroundHex - + artworkURL + - title - + uuid + - darkTertiarySystemBackgroundHex - + relativePath + - darkSystemBackgroundHex - + lastPlayDate + - type - + darkSecondarySystemFillHex + - - 1 - hardcoverBook - + + currentTime + - - 1 - lastPlayed - + + darkSecondarySystemBackgroundHex + - userBookID - + status + - note - + lightQuaternarySystemFillHex + - - 1 - library - + + lightSystemBackgroundHex + - darkAccentHex - + lightSecondarySystemFillHex + - artworkURL - + lightTertiarySystemBackgroundHex + - - 1 - externalResources - + + lightPrimaryHex + - title - + id + - darkSecondarySystemBackgroundHex - + lightSystemFillHex + - id - + darkSystemGroupedBackgroundHex + - - Theme - Undefined - 5 - Theme - 1 - - - + + email + - providerName - + duration + - lightSystemBackgroundHex - - - - processedFile - - - - lightSystemFillHex - - - - lightSecondaryHex - + donationMade + - + 1 selected - + - + 1 libraryItem - + + + + PlaybackRecord + Undefined + 1 + PlaybackRecord + 1 + + + + + + duration + + + + Folder + Undefined + 7 + Folder + 1 + + + - lightTertiarySystemBackgroundHex - + duration + - duration - + details + - + + Library + Undefined + 8 + Library 1 - folder - + + + - - author - + + HardcoverBook + Undefined + 3 + HardcoverBook + 1 + + + - - remoteURL - + + Undefined + 9 + ExternalResource + 1 + + + - title - - - - relativePath - + lastPlayDate + - + 1 - libraryItem - + item + + + + artworkURL + - type - + percentCompleted + - lastPlayDate - + date + - start - + darkSecondaryHex + - percentCompleted - + artworkURL + - - 1 - chapters - + + darkQuaternarySystemFillHex + - - Account - Undefined - 4 - Account + 1 - - - + library + - originalFileName - + start + - - Undefined - 10 - ExternalResource - 1 - - - + + title + - - Folder - Undefined - 7 - Folder + 1 - - - + lastPlayedItem + - - Chapter - Undefined - 1 - Chapter - 1 - - - + + author + - - Library - Undefined - 9 - Library - 1 - - - + + hostId + - donationMade - - - - orderRank - + type + - - currentTime - + + 1 + extractedThemes + - - PlaybackRecord - Undefined - 2 - PlaybackRecord + 1 - - - + externalResources + - - currentTime - + + processedFile + - - isFinished - + + 1 + bookmarks + - - date - + + 1 + currentTheme + + + + 1 + items + - details - + title + - isFinished - + orderRank + - uuid - + note + - duration - + time + - - percentCompleted - + + 1 + hardcoverBook + - - orderRank - + + 1 + book + 1 - bookmarks - + lastPlayed + - - 1 - bookmarks - + + relativePath + - - 1 - externalResources - + + title + - hasSubscription - + originalFileName + - - darkSeparatorHex - + + 1 + chapters + - id - + uuid + - - duration - + + 1 + hardcoverBook + - - artworkURL - + + 1 + libraryItem + - darkSystemFillHex - + remoteURL + - time - + darkSeparatorHex + - - 1 - items - + + details + - speed - + darkTertiarySystemFillHex + - artworkURL - + darkSystemBackgroundHex + - darkSecondaryHex - + lightSecondarySystemBackgroundHex + - - 1 - folder - + + lightSeparatorHex + - title - + lightSecondaryHex + - email - + title + - time - + lightAccentHex + - relativePath - + lightSystemGroupedBackgroundHex + - darkSecondarySystemFillHex - + darkAccentHex + - id - + providerId + - - 1 - book - + + lightTertiarySystemFillHex + - - 1 - item - + + userBookID + darkPrimaryHex - + - darkQuaternarySystemFillHex - + time + - lightSeparatorHex - + hasSubscription + - - speed - + + Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 11.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 +cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIMwALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPXA9gD4APsBAAEDwQeBC0EMQRABE8EXgRtBHwEiASaBKkEuATHBNYE5QT0BQMFCwUgBSEFKQUqBTYFSgVZBWgFdwV7BYoFmQWoBbcFxgXSBeQF5QXmBecF6AXpBeoF6wX6BgkGGAYnBigGNwZGBlUGXQZyBnMGewaHBpsGqga5BsgGzAbbBuoG+QcIBxcHIwc1B0QHUwdUB2MHcgeMB40HkwefB7UHxAfHB9YH5QfoB/cIBggJCBgIJwgrCDoISQhKCFwIXQheCF8IYAhhCGIIdwh4CIAIjAigCK8IvgjNCNEI4AjvCP4JDQkcCSgJOglJCUoJWQloCXcJeAmHCZYJpQm6CbsJwwnPCeMJ8goBChAKFAojCjIKQQpQCl8Kawp9CowKmwqqCrkKyArXCuYK+wr8CwQLEAskCzMLQgtRC1ULZAtzC4ILkQugC6wLvgvNC9wL6wv6C/sMCgwZDCgMPQw+DEYMUgxmDHUMhAyTDJcMpgy1DMQM0wziDO4NAA0PDR4NLQ08DUsNWg1pDX4Nfw2HDZMNpw22DcUN1A3YDecN9g4FDhQOIw4vDkEOUA5fDm4OfQ6MDpsOqg6/DsAOyA7UDugO9w8GDxUPGQ8oDzcPRg9VD2QPcA+CD5EPoA+vD74Pvw/OD90P7BABEAIQChAWECoQORBIEFcQWxBqEHkQiBCXEKYQshDEENMQ4hDxEQARDxEeES0RLhExEToRSRFYEWcRfBF9EYURkRGlEbQRwxHSEdYR5RH0EgMSEhIhEi0SPxJOEk8SXhJtEnwSfRKMEpsSqhK/EsASyBLUEugS9xMGExUTGRMoEzcTRhNVE2QTcBOCE5EToBOvE74TzRPcE+sUABQBFAkUFRQpFDgURxRWFFoUaRR4FIcUlhSlFLEUwxTSFOEU8BT/FQ4VHRUsFUEVQhVKFVYVahV5FYgVlxWbFaoVuRXIFdcV5hXyFgQWExYUFiMWMhZBFkIWURZgFm8WhBaFFo0WmRatFrwWyxbaFt4W7Rb8FwsXGhcpFzUXRxdWF2UXdBeDF5IXoRewF8UXxhfOF9oX7hf9GAwYGxgfGC4YPRhMGFsYahh2GIgYlximGLUYxBjTGOIY8RkGGQcZDxkbGS8ZPhlNGVwZYBlvGX4ZjRmcGasZtxnJGdgZ5xn2GgUaBhoVGiQaMxpIGkkaURpdGnEagBqPGp4aohqxGsAazxreGu0a+RsLGxobKRs4G0cbYRtiG2gbdBuKG5kbnBurG7obvRvMG9sb3hvtG/wcABwPHB4cKhwrHCwcLRxCHEMcSxxXHGscehyJHJgcnByrHLocyRzYHOcc8x0FHRQdIx0yHUEdUB1fHW4dgx2EHYwdmB2sHbsdyh3ZHd0d7B37HgoeGR4oHjQeRh5VHmQecx6CHpEeoB6vHsQexR7NHtke7R78HwsfGh8eHy0fPB9LH1ofaR91H4cflh+lH7Qfwx/SH+Ef8CAFIAYgDiAaIC4gPSBMIFsgXyBuIH0gjCCbIKogtiDIINcg5iD1IQQhHiEfISUhMSFHIVYhWSFoIWkheCF7IYohmSGcIashuiG+Ic0h3CIWIhciGCIZIhoiGyIcIh0iHiIfIiAiISIiIiMiJCIlIiYiJyIoIikiKiIrIiwiLSIuIi8iRCJFIk0iWSJtInwiiyKaIp4irSK8Issi2iLbIuoi9iMIIxcjJiM1I0QjUyNiI3EjhiOHI48jmyOvI74jzSPcI+Aj7yP+JA0kHCQrJDckSSRYJGckdiSFJJQkoySyJMckyCTQJNwk8CT/JQ4lHSUhJTAlPyVOJV0lbCV4JYolmSWoJbclxiXVJeQl8yYIJgkmESYdJjEmQCZPJl4mYiZxJoAmjyaeJp8mria6Jswm2ybqJvknCCcXJyYnNSdKJ0snUydfJ3MngieRJ6AnpCezJ8In0SfgJ+8n+ygNKBwoKyg6KEkoWChnKHYoiyiMKJQooCi0KMMo0ij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UWJVYqlirWLNYv1jTWOJY8VkAWQRZE1kiWTFZQFlPWVtZbVl8WYtZmlmpWbhZx1nWWetZ7Fn0WgBaFFojWjJaQVpFWlRaY1pyWoFakFqcWq5avVrMWtta6lr5WwhbF1ssWy1bNVtBW1VbZFtzW4JbhluVW6Rbs1vCW9Fb3VvvW/5cDVwcXCtcOlxJXFhcbVxuXHZcglyWXKVctFzDXMdc1lzlXPRdA10SXR5dMF0/XU5dXV1sXXtdil2ZXa5dr123XcNd113mXfVeBF4IXhdeJl41XkReU15fXnFegF6PXp5erV68Xste2l7dXuxe+18KXw5fD18VXxxfHV8sXztfSl9OX2hfaV9vX3tfkV+gX6Nfsl/BX8Rf01/iX+Vf9GADYAdgFmAlYDFgMmAzYDRgSWBKYFJgXmByYIFgkGCfYKNgsmDBYNBg32DuYPphDGEbYSphOWFIYVdhZmF1YYphi2GTYZ9hs2HCYdFh4GHkYfNiAmIRYiBiL2I7Yk1iXGJrYnpiiWKYYqditmLLYsxi1GLgYvRjA2MSYyFjJWM0Y0NjUmNhY3BjfGOOY51jrGO7Y8pj2WPoY/dkDGQNZBVkIWQ1ZERkU2RiZGZkdWSEZJNkomSxZL1kz2TeZO1k/GULZRplKWU4ZTtlVWVWZVxlaGV+ZY1lkGWfZa5lsWXAZc9l0mXhZfBl9GYDZhJmE2YbZhxmMWYyZjpmRmZaZmlmeGaHZotmmmapZrhmx2bWZuJm9GcDZxJnIWcwZz9nTmddZ3Jnc2d7Z4dnm2eqZ7lnyGfMZ9tn6mf5aAhoF2gjaDVoRGhTaGJocWiAaI9onmihaKVoqWitaLVouGi8aL1VJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCDKAAIEIL4EIMIEIMd4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEILYEIK4ABgASAAIEILIEILhAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEUAUFdOUy5rZXlzWk5TLm9iamVjdHOqADsAPAA9AD4APwBAAEEAQgBDAESABoAHgAiACYAKgAuADIANgA6AD6oARgBHAEgASQBKAEsATABNAE4AT4AQgNeBBraBBg+BBt6AYYEHdIEH54ECVoECxYAvVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbVdBY2NvdW50XlBsYXliYWNrUmVjb3JkV0xpYnJhcnlVVGhlbWXfEBAAXABdAF4AXwAfAGAAYQAhAGIAYwAOACMAZABlACYAZgBnAGgAJwAnABMAbABtAC8AJwBnAHAAOwBnAHMAdAB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gBKANoAEgASAAoATgQGWgASAEoEBmIAGgBKBB3OAEQgSMJqvzVdvcmRlcmVk0wA4ADkADgB5AHsAUKEAeoAUoQB8gBWAL15YRF9QU3RlcmVvdHlwZdkAHwAjAIAADgAmAIEAIQBmAIIARgB6AGcAhgAVACcALwB1AIpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAEIAUgBKANYAAgAQIgBbTADgAOQAOAIwAlgBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6kAlwCYAJkAmgCbAJwAnQCeAJ+AIIAkgCaAKIApgCuALYAwgDSAL18QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAZWERfUFNLX2ZldGNoUmVxdWVzdHNBcnJheV8QEVhEX1BTS19pc0Fic3RyYWN0XxAPWERfUFNLX3VzZXJJbmZvXxATWERfUFNLX2NsYXNzTWFwcGluZ18QFlhEX1BTS19lbnRpdHlDbGFzc05hbWXfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQC2ABUAfAB1AHUAdQAvAHUAvQCNAHUAdQAVAHVVX3R5cGVYX2RlZmF1bHRcX2Fzc29jaWF0aW9uW19pc1JlYWRPbmx5WV9pc1N0YXRpY1lfaXNVbmlxdWVaX2lzRGVyaXZlZFpfaXNPcmRlcmVkXF9pc0NvbXBvc2l0ZVdfaXNMZWFmgACAIYAAgBUICAgIgCOAFwgIgAAI0gA5AA4AxADFoIAi0gDHAMgAyQDKWiRjbGFzc25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjAMkAywDMV05TQXJyYXlYTlNPYmplY3TSAMcAyADOAM9fEBBYRFVNTFByb3BlcnR5SW1wpADQANEA0gDMXxAQWERVTUxQcm9wZXJ0eUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUA1QAVAHwAdQB1AHUALwB1AL0AjgB1AHUAFQB1gACAJYAAgBUICAgIgCOAGAgIgAAIWlBsYXlsaXN0VjPfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQDlABUAfAB1AHUAdQAvAHUAvQCPAHUAdQAVAHWAAIAngACAFQgICAiAI4AZCAiAAAjSADkADgDzAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUAfAB1AHUAdQAvAHUAvQCQAHUAdQAVAHWAAIAAgACAFQgICAiAI4AaCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEGABUAfAB1AHUAdQAvAHUAvQCRAHUAdQAVAHWAAIAqgACAFQgICAiAI4AbCAiAAAjSADkADgEUAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUAfAB1AHUAdQAvAHUAvQCSAHUAdQAVAHWAAIAsgACAFQgICAiAI4AcCAiAAAgI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBKAAVAHwAdQB1AHUALwB1AL0AkwB1AHUAFQB1gACALoAAgBUICAgIgCOAHQgIgAAI0wA4ADkADgE2ATcAUKCggC/SAMcAyAE6ATtfEBNOU011dGFibGVEaWN0aW9uYXJ5owE6ATwAzFxOU0RpY3Rpb25hcnnfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQE/ABUAfAB1AHUAdQAvAHUAvQCUAHUAdQAVAHWAAIAxgACAFQgICAiAI4AeCAiAAAjWACMADgAmAGYAHwAhAU0BTgAVAHUAFQAvgDKAM4AACIAAXxAUWERHZW5lcmljUmVjb3JkQ2xhc3PSAMcAyAFUAVVdWERVTUxDbGFzc0ltcKYBVgFXAVgBWQFaAMxdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQA7ABUAfAB1AHUAdQAvAHUAvQCVAHUAdQAVAHWAAIAGgACAFQgICAiAI4AfCAiAAAjSAMcAyAFrAWxfEBJYRFVNTFN0ZXJlb3R5cGVJbXCnAW0BbgFvAXABcQFyAMxfEBJYRFVNTFN0ZXJlb3R5cGVJbXBdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDTADgAOQAOAXQBdgBQoQF1gDehAXeAOIAvVWl0ZW1z3xASAKsArACtAXsAHwCvALABfAAhAK4BfQCxAA4AIwCyALMAJgC0ABUAFQAVACcARgB1AHUBhQAvAHUAZwB1AYkBdQB1AHUBjQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAEAgIgDoIgBIIgKCANwgIgDkIEoZDEEPTADgAOQAOAZEBlABQogGSAZOAO4A8ogGVAZaAPYBSgC9fEBJYRF9QUHJvcFN0ZXJlb3R5cGVfEBBYRF9QUl9TdGVyZW90eXBl2QAfACMBmwAOACYBnAAhAGYBnQF3AZIAZwCGABUAJwAvAHUBpV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYA4gDuAEoA1gACABAiAPtMAOAA5AA4BpwGwAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoAbEBsgGzAbQBtQG2AbcBuIBHgEiASYBLgEyAToBPgFGAL18QG1hEX1BQU0tfaXNTdG9yZWRJblRydXRoRmlsZV8QG1hEX1BQU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8QEFhEX1BQU0tfdXNlckluZm9fEBFYRF9QUFNLX2lzSW5kZXhlZF8QElhEX1BQU0tfaXNPcHRpb25hbF8QGlhEX1BQU0tfaXNTcG90bGlnaHRJbmRleGVkXxARWERfUFBTS19lbGVtZW50SURfEBNYRF9QUFNLX2lzVHJhbnNpZW503xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVAZUAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgD0ICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVAZUAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgD0ICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUB4gAVAZUAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACASoAAgD0ICAgIgCOAQQgIgAAI0wA4ADkADgHwAfEAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUBlQB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACAPQgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUBlQB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACAPQgICAiAI4BDCAiAAAgJ3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVAZUAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgD0ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCIwAVAZUAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAUIAAgD0ICAgIgCOARQgIgAAIXnJlbGF0aW9uQm9va1Yz3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVAZUAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgD0ICAgIgCOARggIgAAI2QAfACMCQQAOACYCQgAhAGYCQwF3AZMAZwCGABUAJwAvAHUCS18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYA4gDyAEoA1gACABAiAU9MAOAA5AA4CTQJVAFCnAk4CTwJQAlECUgJTAlSAVIBVgFaAV4BYgFmAWqcCVgJXAlgCWQJaAlsCXIBbgF2AX4BggQdwgQdxgQdygC9fEA9YRF9QUktfbWluQ291bnRfEBFYRF9QUktfZGVsZXRlUnVsZV8QD1hEX1BSS19tYXhDb3VudF8QElhEX1BSS19kZXN0aW5hdGlvbl8QD1hEX1BSS19pc1RvTWFueV5YRF9QUktfb3JkZXJlZF8QGlhEX1BSS19pbnZlcnNlUmVsYXRpb25zaGlw3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCZwAVAZYAdQB1AHUALwB1AL0CTgB1AHUAFQB1gACAXIAAgFIICAgIgCOAVAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCdgAVAZYAdQB1AHUALwB1AL0CTwB1AHUAFQB1gACAXoAAgFIICAgIgCOAVQgIgAAIEAHfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJnABUBlgB1AHUAdQAvAHUAvQJQAHUAdQAVAHWAAIBcgACAUggICAiAI4BWCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQBLABUBlgB1AHUAdQAvAHUAvQJRAHUAdQAVAHWAAIBhgACAUggICAiAI4BXCAiAAAjfEBQAZgKjAqQCpQKmAqcCqAAfAA4CqQAjAqoAJgKrAqwCrQKuAq8CsAAhAhEAZwBnArQAJwBtAGcAEwBwACcAQAK8Ar0AJwAnAGcCwQLCAG0AL18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zb3JkZXJlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIVhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zc3RvcmFnZV8QJFhEQnVja2V0Rm9yU3BlY2lhbGl6YXRpb25zZHVwbGljYXRlcwmAEoASgGOABIEBloASgAKBAZiABIALgQazgGKABIAEgBKAdIEGtIEBlhKojd2M0wA4ADkADgLGAsgAUKEAeoAUoQLJgGSAL9kAHwAjAswADgAmAs0AIQBmAs4ASwB6AGcAhgAVACcALwB1AtZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAYYAUgBKANYAAgAQIgGXTADgAOQAOAtgC4gBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6kC4wLkAuUC5gLnAugC6QLqAuuAZoBogGmAa4BsgG6Ab4BxgHKAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAu8AFQLJAHUAdQB1AC8AdQC9AI0AdQB1ABUAdYAAgGeAAIBkCAgICIAjgBcICIAACNIAOQAOAv0AxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQLJAHUAdQB1AC8AdQC9AI4AdQB1ABUAdYAAgACAAIBkCAgICIAjgBgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAxAAFQLJAHUAdQB1AC8AdQC9AI8AdQB1ABUAdYAAgGqAAIBkCAgICIAjgBkICIAACNIAOQAOAx4AxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQLJAHUAdQB1AC8AdQC9AJAAdQB1ABUAdYAAgACAAIBkCAgICIAjgBoICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAzEAFQLJAHUAdQB1AC8AdQC9AJEAdQB1ABUAdYAAgG2AAIBkCAgICIAjgBsICIAACNIAOQAOAz8AxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFQLJAHUAdQB1AC8AdQC9AJIAdQB1ABUAdYAAgE2AAIBkCAgICIAjgBwICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVA1IAFQLJAHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgHCAAIBkCAgICIAjgB0ICIAACNMAOAA5AA4DYANhAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBPwAVAskAdQB1AHUALwB1AL0AlAB1AHUAFQB1gACAMYAAgGQICAgIgCOAHggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUDdAAVAskAdQB1AHUALwB1AL0AlQB1AHUAFQB1gACAc4AAgGQICAgIgCOAHwgIgAAIW0xpYnJhcnlJdGVt0wA4ADkADgODA5gAUK8QFAOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5eAdYB2gHeAeIB5gHqAe4B8gH2AfoB/gICAgYCCgIOAhICFgIaAh4CIrxAUA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrICJgKGAwoEBnIEBtYEBzIEB44EB/IECE4ECKoECQoEFhoEFnYECmoEFtIEFy4EF4oEF+4EGhYEGnIAvVmZvbGRlclV0aXRsZV1oYXJkY292ZXJCb29rWGR1cmF0aW9uW2N1cnJlbnRUaW1lXxAQb3JpZ2luYWxGaWxlTmFtZVVzcGVlZFlvcmRlclJhbmtUdXVpZFxsYXN0UGxheURhdGVabGFzdFBsYXllZFphcnR3b3JrVVJMVHR5cGVXbGlicmFyeVdkZXRhaWxzWXJlbW90ZVVSTFppc0ZpbmlzaGVkWWJvb2ttYXJrc18QEHBlcmNlbnRDb21wbGV0ZWRccmVsYXRpdmVQYXRo3xASAKsArACtA8MAHwCvALADxAAhAK4DxQCxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHUDzQAvAHUAZwB1AYkDhAB1AHUD1QB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgIsIgBIIgKCAdQgIgIoIEpCoDp7TADgAOQAOA9kD3ABQogGSAZOAO4A8ogPdA96AjICXgC/ZAB8AIwPhAA4AJgPiACEAZgPjA5kBkgBnAIYAFQAnAC8AdQPrXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgImAO4ASgDWAAIAECICN0wA4ADkADgPtA/YAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgD9wP4A/kD+gP7A/wD/QP+gI6Aj4CQgJKAk4CUgJWAloAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVA90AdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgIwICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVA90AdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgIwICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUEIAAVA90AdQB1AHUALwB1AL0BqgB1AHUAFQB1gACAkYAAgIwICAgIgCOAQQgIgAAI0wA4ADkADgQuBC8AUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUD3QB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACAjAgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUD3QB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACAjAgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUD3QB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACAjAgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUD3QB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACAjAgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUD3QB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACAjAgICAiAI4BGCAiAAAjZAB8AIwR9AA4AJgR+ACEAZgR/A5kBkwBnAIYAFQAnAC8AdQSHXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgImAPIASgDWAAIAECICY0wA4ADkADgSJBJEAUKcCTgJPAlACUQJSAlMCVIBUgFWAVoBXgFiAWYBapwSSBJMElASVBJYElwSYgJmAmoCbgJyAnYCegJ+AL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFQPeAHUAdQB1AC8AdQC9Ak4AdQB1ABUAdYAAgFyAAICXCAgICIAjgFQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAnYAFQPeAHUAdQB1AC8AdQC9Ak8AdQB1ABUAdYAAgF6AAICXCAgICIAjgFUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAnYAFQPeAHUAdQB1AC8AdQC9AlAAdQB1ABUAdYAAgF6AAICXCAgICIAjgFYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAEYAFQPeAHUAdQB1AC8AdQC9AlEAdQB1ABUAdYAAgBCAAICXCAgICIAjgFcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQPeAHUAdQB1AC8AdQC9AlIAdQB1ABUAdYAAgCyAAICXCAgICIAjgFgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQPeAHUAdQB1AC8AdQC9AlMAdQB1ABUAdYAAgCyAAICXCAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAXcAFQPeAHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgDiAAICXCAgICIAjgFoICIAACNIAxwDIBQQFBV8QEFhEUE1SZWxhdGlvbnNoaXCmBQYFBwUIBQkFCgDMXxAQWERQTVJlbGF0aW9uc2hpcFxYRFBNUHJvcGVydHlfEBBYRFVNTFByb3BlcnR5SW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEBIAqwCsAK0FDAAfAK8AsAUNACEArgUOALEADgAjALIAswAmALQAFQAVABUAJwBLAHUAdQUWAC8AdQBnAHUFGgOFAHUAdQUeAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBhCAiAowiAEgiAwYB2CAiAoggS6mRnyNMAOAA5AA4FIgUlAFCiAZIFJIA7gKSiBSYFJ4ClgLCAL18QElhEX1BBdHRfU3RlcmVvdHlwZdkAHwAjBSsADgAmBSwAIQBmBS0DmgGSAGcAhgAVACcALwB1BTVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAoYA7gBKANYAAgAQIgKbTADgAOQAOBTcFQABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqAVBBUIFQwVEBUUFRgVHBUiAp4CogKmAq4CsgK2AroCvgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUFJgB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACApQgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUFJgB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACApQgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQVqABUFJgB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAICqgACApQgICAiAI4BBCAiAAAjTADgAOQAOBXgFeQBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQUmAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIClCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQUmAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIClCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQUmAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIClCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQUmAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIClCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQUmAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIClCAgICIAjgEYICIAACNkAHwAjBccADgAmBcgAIQBmBckDmgUkAGcAhgAVACcALwB1BdFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAoYCkgBKANYAAgAQIgLHTADgAOQAOBdMF2wBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinBdwF3QXeBd8F4AXhBeKAuYC6gLuAvIC+gL+AwIAvXxAdWERfUEF0dEtfZGVmYXVsdFZhbHVlQXNTdHJpbmdfEChYRF9QQXR0S19hbGxvd3NFeHRlcm5hbEJpbmFyeURhdGFTdG9yYWdlXxAXWERfUEF0dEtfbWluVmFsdWVTdHJpbmdfEBZYRF9QQXR0S19hdHRyaWJ1dGVUeXBlXxAXWERfUEF0dEtfbWF4VmFsdWVTdHJpbmdfEB1YRF9QQXR0S192YWx1ZVRyYW5zZm9ybWVyTmFtZV8QIFhEX1BBdHRLX3JlZ3VsYXJFeHByZXNzaW9uU3RyaW5n3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVBScAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgLAICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVBScAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgLAICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVBScAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgLAICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVBScAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgLAICAgIgCOAtQgIgAAIEQK83xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVBScAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgLAICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVBScAdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgLAICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVBScAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgLAICAgIgCOAuAgIgAAI0gDHAMgGVgZXXVhEUE1BdHRyaWJ1dGWmBlgGWQZaBlsGXADMXVhEUE1BdHRyaWJ1dGVcWERQTVByb3BlcnR5XxAQWERVTUxQcm9wZXJ0eUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xASAKsArACtBl4AHwCvALAGXwAhAK4GYACxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHUGaAAvAHUAZwB1AYkDhgB1AHUGcAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgMQIgBIIgKCAdwgIgMMIEv/lHZTTADgAOQAOBnQGdwBQogGSAZOAO4A8ogZ4BnmAxYDQgC/ZAB8AIwZ8AA4AJgZ9ACEAZgZ+A5sBkgBnAIYAFQAnAC8AdQaGXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgMKAO4ASgDWAAIAECIDG0wA4ADkADgaIBpEAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgGkgaTBpQGlQaWBpcGmAaZgMeAyIDJgMuAzIDNgM6Az4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVBngAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgMUICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVBngAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgMUICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGuwAVBngAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACAyoAAgMUICAgIgCOAQQgIgAAI0wA4ADkADgbJBsoAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUGeAB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACAxQgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUGeAB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACAxQgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUGeAB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACAxQgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUGeAB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACAxQgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUGeAB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACAxQgICAiAI4BGCAiAAAjZAB8AIwcYAA4AJgcZACEAZgcaA5sBkwBnAIYAFQAnAC8AdQciXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgMKAPIASgDWAAIAECIDR0wA4ADkADgckBywAUKcCTgJPAlACUQJSAlMCVIBUgFWAVoBXgFiAWYBapwctBy4HLwcwBzEHMgczgNKA04DVgNaBAZmBAZqBAZuAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFQZ5AHUAdQB1AC8AdQC9Ak4AdQB1ABUAdYAAgFyAAIDQCAgICIAjgFQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVB0YAFQZ5AHUAdQB1AC8AdQC9Ak8AdQB1ABUAdYAAgNSAAIDQCAgICIAjgFUICIAACBAC3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCdgAVBnkAdQB1AHUALwB1AL0CUAB1AHUAFQB1gACAXoAAgNAICAgIgCOAVggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUARwAVBnkAdQB1AHUALwB1AL0CUQB1AHUAFQB1gACA14AAgNAICAgIgCOAVwgIgAAI3xAQB3MHdAd1B3YAHwd3B3gAIQd5B3oADgAjB3sHfAAmAGYAZwd+ACcAJwATB4IAbQAvACcAZwBwADwAZweJB4oAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgOqABIAEgAKA2YEBloAEgBKBAZiAB4ASgQGXgNgIEwAAAAEZJZfp0wA4ADkADgeOB5AAUKEAeoAUoQeRgNqAL9kAHwAjB5QADgAmB5UAIQBmB5YARwB6AGcAhgAVACcALwB1B55fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WA14AUgBKANYAAgAQIgNvTADgAOQAOB6AHqgBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6kHqwesB60HrgevB7AHsQeyB7OA3IDegN+A4YDigOSA5YDngOiAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVB7cAFQeRAHUAdQB1AC8AdQC9AI0AdQB1ABUAdYAAgN2AAIDaCAgICIAjgBcICIAACNIAOQAOB8UAxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQeRAHUAdQB1AC8AdQC9AI4AdQB1ABUAdYAAgACAAIDaCAgICIAjgBgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVB9gAFQeRAHUAdQB1AC8AdQC9AI8AdQB1ABUAdYAAgOCAAIDaCAgICIAjgBkICIAACNIAOQAOB+YAxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQeRAHUAdQB1AC8AdQC9AJAAdQB1ABUAdYAAgACAAIDaCAgICIAjgBoICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVB/kAFQeRAHUAdQB1AC8AdQC9AJEAdQB1ABUAdYAAgOOAAIDaCAgICIAjgBsICIAACNIAOQAOCAcAxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQeRAHUAdQB1AC8AdQC9AJIAdQB1ABUAdYAAgCyAAIDaCAgICIAjgBwICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVCBoAFQeRAHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgOaAAIDaCAgICIAjgB0ICIAACNMAOAA5AA4IKAgpAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBPwAVB5EAdQB1AHUALwB1AL0AlAB1AHUAFQB1gACAMYAAgNoICAgIgCOAHggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUIPAAVB5EAdQB1AHUALwB1AL0AlQB1AHUAFQB1gACA6YAAgNoICAgIgCOAHwgIgAAIXUhhcmRjb3ZlckJvb2vTADgAOQAOCEsIUwBQpwhMCE0ITgOFCFAIUQhSgOuA7IDtgHaA7oDvgPCnCFQIVQhWCFcIWAhZCFqA8YEBCoEBIYEBOYEBUIEBZ4EBf4AvVnN0YXR1c1ZhdXRob3JSaWRadXNlckJvb2tJRFphcnR3b3JrVVJMW2xpYnJhcnlJdGVt3xASAKsArACtCGMAHwCvALAIZAAhAK4IZQCxAA4AIwCyALMAJgC0ABUAFQAVACcARwB1AHUIbQAvAHUAZwB1BRoITAB1AHUIdQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASA1wgIgPMIgBIIgMGA6wgIgPIIEoYfDk/TADgAOQAOCHkIfABQogGSBSSAO4Ckogh9CH6A9ID/gC/ZAB8AIwiBAA4AJgiCACEAZgiDCFQBkgBnAIYAFQAnAC8AdQiLXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgPGAO4ASgDWAAIAECID10wA4ADkADgiNCJYAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgIlwiYCJkImgibCJwInQiegPaA94D4gPqA+4D8gP2A/oAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVCH0AdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgPQICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCH0AdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgPQICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUIwAAVCH0AdQB1AHUALwB1AL0BqgB1AHUAFQB1gACA+YAAgPQICAgIgCOAQQgIgAAI0wA4ADkADgjOCM8AUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUIfQB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACA9AgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUIfQB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIAsgACA9AgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUIfQB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACA9AgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUIfQB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACA9AgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUIfQB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACA9AgICAiAI4BGCAiAAAjZAB8AIwkdAA4AJgkeACEAZgkfCFQFJABnAIYAFQAnAC8AdQknXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgPGApIASgDWAAIAECIEBANMAOAA5AA4JKQkxAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKcJMgkzCTQJNQk2CTcJOIEBAYEBA4EBBIEBBYEBB4EBCIEBCYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUJPAAVCH4AdQB1AHUALwB1AL0F1AB1AHUAFQB1gACBAQKAAID/CAgICIAjgLIICIAACFEw3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVCH4AdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgP8ICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCH4AdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgP8ICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUJagAVCH4AdQB1AHUALwB1AL0F1wB1AHUAFQB1gACBAQaAAID/CAgICIAjgLUICIAACBBk3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCH4AdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgP8ICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCH4AdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgP8ICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCH4AdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgP8ICAgIgCOAuAgIgAAI3xASAKsArACtCaYAHwCvALAJpwAhAK4JqACxAA4AIwCyALMAJgC0ABUAFQAVACcARwB1AHUJsAAvAHUAZwB1BRoITQB1AHUJuAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASA1wgIgQEMCIASCIDBgOwICIEBCwgSdE0GltMAOAA5AA4JvAm/AFCiAZIFJIA7gKSiCcAJwYEBDYEBGIAv2QAfACMJxAAOACYJxQAhAGYJxghVAZIAZwCGABUAJwAvAHUJzl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBCoA7gBKANYAAgAQIgQEO0wA4ADkADgnQCdkAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgJ2gnbCdwJ3QneCd8J4AnhgQEPgQEQgQERgQETgQEUgQEVgQEWgQEXgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUJwAB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBAQ0ICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCcAAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQENCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVCgMAFQnAAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQESgACBAQ0ICAgIgCOAQQgIgAAI0wA4ADkADgoRChIAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUJwAB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBAQ0ICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVCcAAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQENCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQnAAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEBDQgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUJwAB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBAQ0ICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVCcAAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQENCAgICIAjgEYICIAACNkAHwAjCmAADgAmCmEAIQBmCmIIVQUkAGcAhgAVACcALwB1CmpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAQqApIASgDWAAIAECIEBGdMAOAA5AA4KbAp0AFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKcKdQp2CncKeAp5CnoKe4EBGoEBG4EBHIEBHYEBHoEBH4EBIIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCcEAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQEYCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQnBAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEBGAgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUJwQB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBARgICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVCcEAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQEYCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQnBAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEBGAgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUJwQB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBARgICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCcEAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQEYCAgICIAjgLgICIAACN8QEgCrAKwArQrnAB8ArwCwCugAIQCuCukAsQAOACMAsgCzACYAtAAVABUAFQAnAEcAdQB1CvEALwB1AGcAdQUaCE4AdQB1CvkAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgNcICIEBIwiAEgiAwYDtCAiBASIIEj+baA3TADgAOQAOCv0LAABQogGSBSSAO4CkogsBCwKBASSBAS+AL9kAHwAjCwUADgAmCwYAIQBmCwcIVgGSAGcAhgAVACcALwB1Cw9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBASGAO4ASgDWAAIAECIEBJdMAOAA5AA4LEQsaAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoCxsLHAsdCx4LHwsgCyELIoEBJoEBJ4EBKIEBKoEBK4EBLIEBLYEBLoAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVCwEAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQEkCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQsBAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEBJAgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQtEABULAQB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEBKYAAgQEkCAgICIAjgEEICIAACNMAOAA5AA4LUgtTAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVCwEAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQEkCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQsBAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEBJAgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABULAQB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBASQICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCwEAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQEkCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQsBAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEBJAgICAiAI4BGCAiAAAjZAB8AIwuhAA4AJguiACEAZgujCFYFJABnAIYAFQAnAC8AdQurXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQEhgKSAEoA1gACABAiBATDTADgAOQAOC60LtQBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinC7YLtwu4C7kLugu7C7yBATGBATKBATOBATSBATaBATeBATiAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVCTwAFQsCAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgQECgACBAS8ICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVCwIAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQEvCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQsCAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEBLwgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQvtABULAgB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIEBNYAAgQEvCAgICIAjgLUICIAACBDI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVCwIAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQEvCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQsCAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEBLwgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABULAgB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBAS8ICAgIgCOAuAgIgAAI3xASAKsArACtDCkAHwCvALAMKgAhAK4MKwCxAA4AIwCyALMAJgC0ABUAFQAVACcARwB1AHUMMwAvAHUAZwB1BRoDhQB1AHUMOwB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASA1wgIgQE7CIASCIDBgHYICIEBOggS6vwaS9MAOAA5AA4MPwxCAFCiAZIFJIA7gKSiDEMMRIEBPIEBR4Av2QAfACMMRwAOACYMSAAhAGYMSQhXAZIAZwCGABUAJwAvAHUMUV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBOYA7gBKANYAAgAQIgQE90wA4ADkADgxTDFwAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgMXQxeDF8MYAxhDGIMYwxkgQE+gQE/gQFAgQFCgQFDgQFEgQFFgQFGgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUMQwB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBATwICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVDEMAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQE8CAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVDIYAFQxDAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQFBgACBATwICAgIgCOAQQgIgAAI0wA4ADkADgyUDJUAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUMQwB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBATwICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVDEMAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQE8CAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQxDAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEBPAgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUMQwB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBATwICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVDEMAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQE8CAgICIAjgEYICIAACNkAHwAjDOMADgAmDOQAIQBmDOUIVwUkAGcAhgAVACcALwB1DO1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBATmApIASgDWAAIAECIEBSNMAOAA5AA4M7wz3AFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKcM+Az5DPoM+wz8DP0M/oEBSYEBSoEBS4EBTIEBTYEBToEBT4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVDEQAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQFHCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQxEAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEBRwgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUMRAB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBAUcICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVDEQAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQFHCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQxEAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEBRwgICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUMRAB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBAUcICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVDEQAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQFHCAgICIAjgLgICIAACN8QEgCrAKwArQ1qAB8ArwCwDWsAIQCuDWwAsQAOACMAsgCzACYAtAAVABUAFQAnAEcAdQB1DXQALwB1AGcAdQUaCFAAdQB1DXwAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgNcICIEBUgiAEgiAwYDuCAiBAVEIEr6xP/PTADgAOQAODYANgwBQogGSBSSAO4Ckog2EDYWBAVOBAV6AL9kAHwAjDYgADgAmDYkAIQBmDYoIWAGSAGcAhgAVACcALwB1DZJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAVCAO4ASgDWAAIAECIEBVNMAOAA5AA4NlA2dAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoDZ4Nnw2gDaENog2jDaQNpYEBVYEBVoEBV4EBWYEBWoEBW4EBXIEBXYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVDYQAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQFTCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQ2EAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEBUwgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQ3HABUNhAB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEBWIAAgQFTCAgICIAjgEEICIAACNMAOAA5AA4N1Q3WAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVDYQAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQFTCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQ2EAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEBUwgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUNhAB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBAVMICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVDYQAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQFTCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQ2EAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEBUwgICAiAI4BGCAiAAAjZAB8AIw4kAA4AJg4lACEAZg4mCFgFJABnAIYAFQAnAC8AdQ4uXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQFQgKSAEoA1gACABAiBAV/TADgAOQAODjAOOABQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinDjkOOg47DjwOPQ4+Dj+BAWCBAWGBAWKBAWOBAWSBAWWBAWaAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVCTwAFQ2FAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgQECgACBAV4ICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVDYUAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQFeCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQ2FAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIEBXggICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQvtABUNhQB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIEBNYAAgQFeCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQ2FAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEBXggICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUNhQB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBAV4ICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVDYUAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQFeCAgICIAjgLgICIAACN8QEgCrAKwArQ6rAB8ArwCwDqwAIQCuDq0AsQAOACMAsgCzACYAtAAVABUAFQAnAEcAdQB1DrUALwB1AGcAdQUaCFEAdQB1Dr0AdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgNcICIEBaQiAEgiAwYDvCAiBAWgIEvl0YjrTADgAOQAODsEOxABQogGSBSSAO4Ckog7FDsaBAWqBAXWAL9kAHwAjDskADgAmDsoAIQBmDssIWQGSAGcAhgAVACcALwB1DtNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAWeAO4ASgDWAAIAECIEBa9MAOAA5AA4O1Q7eAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoDt8O4A7hDuIO4w7kDuUO5oEBbIEBbYEBboEBcIEBcYEBcoEBc4EBdIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVDsUAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQFqCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQ7FAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEBaggICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQ8IABUOxQB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEBb4AAgQFqCAgICIAjgEEICIAACNMAOAA5AA4PFg8XAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVDsUAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQFqCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFQ7FAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIEBaggICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUOxQB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBAWoICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVDsUAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQFqCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQ7FAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEBaggICAiAI4BGCAiAAAjZAB8AIw9lAA4AJg9mACEAZg9nCFkFJABnAIYAFQAnAC8AdQ9vXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQFngKSAEoA1gACABAiBAXbTADgAOQAOD3EPeQBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinD3oPew98D30Pfg9/D4CBAXeBAXiBAXmBAXqBAXyBAX2BAX6AL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQ7GAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgACAAIEBdQgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUOxgB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBAXUICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVDsYAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQF1CAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVD7EAFQ7GAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgQF7gACBAXUICAgIgCOAtQgIgAAIEQSw3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVDsYAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQF1CAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFQ7GAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEBdQgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUOxgB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBAXUICAgIgCOAuAgIgAAI3xASAKsArACtD+0AHwCvALAP7gAhAK4P7wCxAA4AIwCyALMAJgC0ABUAFQAVACcARwB1AHUP9wAvAHUAZwB1AYkIUgB1AHUP/wB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASA1wgIgQGBCIASCICggPAICIEBgAgShmC/GdMAOAA5AA4QAxAGAFCiAZIBk4A7gDyiEAcQCIEBgoEBjYAv2QAfACMQCwAOACYQDAAhAGYQDQhaAZIAZwCGABUAJwAvAHUQFV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBf4A7gBKANYAAgAQIgQGD0wA4ADkADhAXECAAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgQIRAiECMQJBAlECYQJxAogQGEgQGFgQGGgQGIgQGJgQGKgQGLgQGMgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUQBwB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBAYIICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVEAcAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQGCCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVEEoAFRAHAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQGHgACBAYIICAgIgCOAQQgIgAAI0wA4ADkADhBYEFkAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUQBwB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBAYIICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVEAcAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACATYAAgQGCCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRAHAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEBgggICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUQBwB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBAYIICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVEAcAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQGCCAgICIAjgEYICIAACNkAHwAjEKcADgAmEKgAIQBmEKkIWgGTAGcAhgAVACcALwB1ELFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAX+APIASgDWAAIAECIEBjtMAOAA5AA4QsxC7AFCnAk4CTwJQAlECUgJTAlSAVIBVgFaAV4BYgFmAWqcQvBC9EL4QvxDAEMEQwoEBj4EBkIEBkYEBkoEBk4EBlIEBlYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCZwAVEAgAdQB1AHUALwB1AL0CTgB1AHUAFQB1gACAXIAAgQGNCAgICIAjgFQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAnYAFRAIAHUAdQB1AC8AdQC9Ak8AdQB1ABUAdYAAgF6AAIEBjQgICAiAI4BVCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJ2ABUQCAB1AHUAdQAvAHUAvQJQAHUAdQAVAHWAAIBegACBAY0ICAgIgCOAVggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUASwAVEAgAdQB1AHUALwB1AL0CUQB1AHUAFQB1gACAYYAAgQGNCAgICIAjgFcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRAIAHUAdQB1AC8AdQC9AlIAdQB1ABUAdYAAgCyAAIEBjQgICAiAI4BYCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUQCAB1AHUAdQAvAHUAvQJTAHUAdQAVAHWAAIAsgACBAY0ICAgIgCOAWQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUDmwAVEAgAdQB1AHUALwB1AL0CVAB1AHUAFQB1gACAwoAAgQGNCAgICIAjgFoICIAACFpkdXBsaWNhdGVz0gA5AA4RLwDFoIAi0gDHAMgRMhEzWlhEUE1FbnRpdHmnETQRNRE2ETcROBE5AMxaWERQTUVudGl0eV1YRFVNTENsYXNzSW1wXxASWERVTUxDbGFzc2lmaWVySW1wXxARWERVTUxOYW1lc3BhY2VJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQZ5AHUAdQB1AC8AdQC9AlIAdQB1ABUAdYAAgCyAAIDQCAgICIAjgFgICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFQZ5AHUAdQB1AC8AdQC9AlMAdQB1ABUAdYAAgCyAAIDQCAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVCFoAFQZ5AHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgQF/gACA0AgICAiAI4BaCAiAAAjfEBIAqwCsAK0RaAAfAK8AsBFpACEArhFqALEADgAjALIAswAmALQAFQAVABUAJwBLAHUAdRFyAC8AdQBnAHUFGgOHAHUAdRF6AHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBhCAiBAZ4IgBIIgMGAeAgIgQGdCBKal8W50wA4ADkADhF+EYEAUKIBkgUkgDuApKIRghGDgQGfgQGqgC/ZAB8AIxGGAA4AJhGHACEAZhGIA5wBkgBnAIYAFQAnAC8AdRGQXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQGcgDuAEoA1gACABAiBAaDTADgAOQAOEZIRmwBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqBGcEZ0RnhGfEaARoRGiEaOBAaGBAaKBAaOBAaWBAaaBAaeBAaiBAamAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRGCAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIEBnwgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABURggB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBAZ8ICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABURxQAVEYIAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBAaSAAIEBnwgICAiAI4BBCAiAAAjTADgAOQAOEdMR1ABQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRGCAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIEBnwgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABURggB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBAZ8ICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVEYIAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQGfCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRGCAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIEBnwgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABURggB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBAZ8ICAgIgCOARggIgAAI2QAfACMSIgAOACYSIwAhAGYSJAOcBSQAZwCGABUAJwAvAHUSLF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBnICkgBKANYAAgAQIgQGr0wA4ADkADhIuEjYAUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pxI3EjgSORI6EjsSPBI9gQGsgQGugQGvgQGwgQGygQGzgQG0gC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRJBABURgwB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIEBrYAAgQGqCAgICIAjgLIICIAACFMwLjDfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABURgwB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBAaoICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVEYMAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQGqCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVEm8AFRGDAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgQGxgACBAaoICAgIgCOAtQgIgAAIEQH03xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVEYMAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQGqCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRGDAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEBqggICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABURgwB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBAaoICAgIgCOAuAgIgAAI3xASAKsArACtEqsAHwCvALASrAAhAK4SrQCxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHUStQAvAHUAZwB1BRoDiAB1AHUSvQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgQG3CIASCIDBgHkICIEBtggSdDO/8NMAOAA5AA4SwRLEAFCiAZIFJIA7gKSiEsUSxoEBuIEBw4Av2QAfACMSyQAOACYSygAhAGYSywOdAZIAZwCGABUAJwAvAHUS018QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBtYA7gBKANYAAgAQIgQG50wA4ADkADhLVEt4AUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgS3xLgEuES4hLjEuQS5RLmgQG6gQG7gQG8gQG+gQG/gQHAgQHBgQHCgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUSxQB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBAbgICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVEsUAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQG4CAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVEwgAFRLFAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQG9gACBAbgICAgIgCOAQQgIgAAI0wA4ADkADhMWExcAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUSxQB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBAbgICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVEsUAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACALIAAgQG4CAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRLFAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEBuAgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUSxQB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBAbgICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVEsUAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQG4CAgICIAjgEYICIAACNkAHwAjE2UADgAmE2YAIQBmE2cDnQUkAGcAhgAVACcALwB1E29fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAbWApIASgDWAAIAECIEBxNMAOAA5AA4TcRN5AFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKcTehN7E3wTfRN+E38TgIEBxYEBxoEBx4EByIEByYEByoEBy4Av3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUSQQAVEsYAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACBAa2AAIEBwwgICAiAI4CyCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUSxgB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBAcMICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVEsYAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQHDCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVEm8AFRLGAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgQGxgACBAcMICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVEsYAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQHDCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRLGAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEBwwgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUSxgB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBAcMICAgIgCOAuAgIgAAI3xASAKsArACtE+wAHwCvALAT7QAhAK4T7gCxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHUT9gAvAHUAZwB1BRoDiQB1AHUT/gB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgQHOCIASCIDBgHoICIEBzQgS2eZPS9MAOAA5AA4UAhQFAFCiAZIFJIA7gKSiFAYUB4EBz4EB2oAv2QAfACMUCgAOACYUCwAhAGYUDAOeAZIAZwCGABUAJwAvAHUUFF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBzIA7gBKANYAAgAQIgQHQ0wA4ADkADhQWFB8AUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgUIBQhFCIUIxQkFCUUJhQngQHRgQHSgQHTgQHVgQHWgQHXgQHYgQHZgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUUBgB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBAc8ICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVFAYAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQHPCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVFEkAFRQGAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQHUgACBAc8ICAgIgCOAQQgIgAAI0wA4ADkADhRXFFgAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUUBgB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBAc8ICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVFAYAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACATYAAgQHPCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRQGAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIEBzwgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUUBgB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBAc8ICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVFAYAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQHPCAgICIAjgEYICIAACNkAHwAjFKYADgAmFKcAIQBmFKgDngUkAGcAhgAVACcALwB1FLBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAcyApIASgDWAAIAECIEB29MAOAA5AA4UshS6AFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKcUuxS8FL0UvhS/FMAUwYEB3IEB3YEB3oEB34EB4IEB4YEB4oAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVFAcAdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQHaCAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRQHAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIEB2ggICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUUBwB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBAdoICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUGGgAVFAcAdQB1AHUALwB1AL0F1wB1AHUAFQB1gACAvYAAgQHaCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRQHAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIEB2ggICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUUBwB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBAdoICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVFAcAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQHaCAgICIAjgLgICIAACN8QEgCrAKwArRUtAB8ArwCwFS4AIQCuFS8AsQAOACMAsgCzACYAtAAVABUAFQAnAEsAdQB1FTcALwB1AGcAdQUaA4oAdQB1FT8AdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGEICIEB5QiAEgiAwYB7CAiBAeQIElOZornTADgAOQAOFUMVRgBQogGSBSSAO4CkohVHFUiBAeaBAfGAL9kAHwAjFUsADgAmFUwAIQBmFU0DnwGSAGcAhgAVACcALwB1FVVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAeOAO4ASgDWAAIAECIEB59MAOAA5AA4VVxVgAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoFWEVYhVjFWQVZRVmFWcVaIEB6IEB6YEB6oEB7IEB7YEB7oEB74EB8IAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVFUcAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQHmCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRVHAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEB5ggICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRWKABUVRwB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIEB64AAgQHmCAgICIAjgEEICIAACNMAOAA5AA4VmBWZAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVFUcAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQHmCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRVHAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEB5ggICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUVRwB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBAeYICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVFUcAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQHmCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRVHAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEB5ggICAiAI4BGCAiAAAjZAB8AIxXnAA4AJhXoACEAZhXpA58FJABnAIYAFQAnAC8AdRXxXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQHjgKSAEoA1gACABAiBAfLTADgAOQAOFfMV+wBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinFfwV/RX+Ff8WABYBFgKBAfOBAfWBAfaBAfeBAfmBAfqBAfuAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVFgYAFRVIAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgQH0gACBAfEICAgIgCOAsggIgAAIUTHfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUVSAB1AHUAdQAvAHUAvQXVAHUAdQAVAHWAAIAsgACBAfEICAgIgCOAswgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVFUgAdQB1AHUALwB1AL0F1gB1AHUAFQB1gACAAIAAgQHxCAgICIAjgLQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVFjQAFRVIAHUAdQB1AC8AdQC9BdcAdQB1ABUAdYAAgQH4gACBAfEICAgIgCOAtQgIgAAIEQJY3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVFUgAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQHxCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRVIAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIEB8QgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUVSAB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBAfEICAgIgCOAuAgIgAAI3xASAKsArACtFnAAHwCvALAWcQAhAK4WcgCxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHUWegAvAHUAZwB1BRoDiwB1AHUWggB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgQH+CIASCIDBgHwICIEB/QgTAAAAAQUjCOfTADgAOQAOFoYWiQBQogGSBSSAO4CkohaKFouBAf+BAgqAL9kAHwAjFo4ADgAmFo8AIQBmFpADoAGSAGcAhgAVACcALwB1FphfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAfyAO4ASgDWAAIAECIECANMAOAA5AA4WmhajAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoFqQWpRamFqcWqBapFqoWq4ECAYECAoECA4ECBYECBoECB4ECCIECCYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVFooAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQH/CAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRaKAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEB/wgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRbNABUWigB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIECBIAAgQH/CAgICIAjgEEICIAACNMAOAA5AA4W2xbcAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVFooAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQH/CAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRaKAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEB/wgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUWigB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBAf8ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVFooAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQH/CAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRaKAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEB/wgICAiAI4BGCAiAAAjZAB8AIxcqAA4AJhcrACEAZhcsA6AFJABnAIYAFQAnAC8AdRc0XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQH8gKSAEoA1gACABAiBAgvTADgAOQAOFzYXPgBQpwXUBdUF1gXXBdgF2QXagLKAs4C0gLWAtoC3gLinFz8XQBdBF0IXQxdEF0WBAgyBAg2BAg6BAg+BAhCBAhGBAhKAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVCTwAFRaLAHUAdQB1AC8AdQC9BdQAdQB1ABUAdYAAgQECgACBAgoICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVFosAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQIKCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRaLAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIECCggICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQlqABUWiwB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIEBBoAAgQIKCAgICIAjgLUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRaLAHUAdQB1AC8AdQC9BdgAdQB1ABUAdYAAgACAAIECCggICAiAI4C2CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUWiwB1AHUAdQAvAHUAvQXZAHUAdQAVAHWAAIAAgACBAgoICAgIgCOAtwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVFosAdQB1AHUALwB1AL0F2gB1AHUAFQB1gACAAIAAgQIKCAgICIAjgLgICIAACN8QEgCrAKwArRexAB8ArwCwF7IAIQCuF7MAsQAOACMAsgCzACYAtAAVABUAFQAnAEsAdQB1F7sALwB1AGcAdQUaA4wAdQB1F8MAdV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGEICIECFQiAEgiAwYB9CAiBAhQIEwAAAAEgVyTY0wA4ADkADhfHF8oAUKIBkgUkgDuApKIXyxfMgQIWgQIhgC/ZAB8AIxfPAA4AJhfQACEAZhfRA6EBkgBnAIYAFQAnAC8AdRfZXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQITgDuAEoA1gACABAiBAhfTADgAOQAOF9sX5ABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqBflF+YX5xfoF+kX6hfrF+yBAhiBAhmBAhqBAhyBAh2BAh6BAh+BAiCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRfLAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIECFggICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUXywB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBAhYICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUYDgAVF8sAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBAhuAAIECFggICAiAI4BBCAiAAAjTADgAOQAOGBwYHQBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRfLAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIECFggICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUXywB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIAsgACBAhYICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVF8sAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQIWCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRfLAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIECFggICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUXywB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBAhYICAgIgCOARggIgAAI2QAfACMYawAOACYYbAAhAGYYbQOhBSQAZwCGABUAJwAvAHUYdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECE4CkgBKANYAAgAQIgQIi0wA4ADkADhh3GH8AUKcF1AXVBdYF1wXYBdkF2oCygLOAtIC1gLaAt4C4pxiAGIEYghiDGIQYhRiGgQIjgQIkgQIlgQImgQIngQIogQIpgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUXzAB1AHUAdQAvAHUAvQXUAHUAdQAVAHWAAIAAgACBAiEICAgIgCOAsggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVF8wAdQB1AHUALwB1AL0F1QB1AHUAFQB1gACALIAAgQIhCAgICIAjgLMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRfMAHUAdQB1AC8AdQC9BdYAdQB1ABUAdYAAgACAAIECIQgICAiAI4C0CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQYaABUXzAB1AHUAdQAvAHUAvQXXAHUAdQAVAHWAAIC9gACBAiEICAgIgCOAtQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVF8wAdQB1AHUALwB1AL0F2AB1AHUAFQB1gACAAIAAgQIhCAgICIAjgLYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRfMAHUAdQB1AC8AdQC9BdkAdQB1ABUAdYAAgACAAIECIQgICAiAI4C3CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUXzAB1AHUAdQAvAHUAvQXaAHUAdQAVAHWAAIAAgACBAiEICAgIgCOAuAgIgAAI3xASAKsArACtGPIAHwCvALAY8wAhAK4Y9ACxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHUY/AAvAHUAZwB1BRoDjQB1AHUZBAB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgQIsCIASCIDBgH4ICIECKwgSf95xzNMAOAA5AA4ZCBkLAFCiAZIFJIA7gKSiGQwZDYECLYECOIAv2QAfACMZEAAOACYZEQAhAGYZEgOiAZIAZwCGABUAJwAvAHUZGl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECKoA7gBKANYAAgAQIgQIu0wA4ADkADhkcGSUAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqgZJhknGSgZKRkqGSsZLBktgQIvgQIwgQIxgQIzgQI0gQI1gQI2gQI3gC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUZDAB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBAi0ICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVGQwAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQItCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVGU8AFRkMAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQIygACBAi0ICAgIgCOAQQgIgAAI0wA4ADkADhldGV4AUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUZDAB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBAi0ICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVGQwAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACATYAAgQItCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRkMAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIECLQgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUZDAB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBAi0ICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVGQwAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQItCAgICIAjgEYICIAACNkAHwAjGawADgAmGa0AIQBmGa4DogUkAGcAhgAVACcALwB1GbZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAiqApIASgDWAAIAECIECOdMAOAA5AA4ZuBnAAFCnBdQF1QXWBdcF2AXZBdqAsoCzgLSAtYC2gLeAuKcZwRnCGcMZxBnFGcYZx4ECOoECO4ECPIECPYECP4ECQIECQYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVGQ0AdQB1AHUALwB1AL0F1AB1AHUAFQB1gACAAIAAgQI4CAgICIAjgLIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRkNAHUAdQB1AC8AdQC9BdUAdQB1ABUAdYAAgCyAAIECOAgICAiAI4CzCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUZDQB1AHUAdQAvAHUAvQXWAHUAdQAVAHWAAIAAgACBAjgICAgIgCOAtAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUZ+AAVGQ0AdQB1AHUALwB1AL0F1wB1AHUAFQB1gACBAj6AAIECOAgICAiAI4C1CAiAAAgRA4TfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUZDQB1AHUAdQAvAHUAvQXYAHUAdQAVAHWAAIAAgACBAjgICAgIgCOAtggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVGQ0AdQB1AHUALwB1AL0F2QB1AHUAFQB1gACAAIAAgQI4CAgICIAjgLcICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRkNAHUAdQB1AC8AdQC9BdoAdQB1ABUAdYAAgACAAIECOAgICAiAI4C4CAiAAAjfEBIAqwCsAK0aNAAfAK8AsBo1ACEArho2ALEADgAjALIAswAmALQAFQAVABUAJwBLAHUAdRo+AC8AdQBnAHUBiQOOAHUAdRpGAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBhCAiBAkQIgBIIgKCAfwgIgQJDCBI05iAA0wA4ADkADhpKGk0AUKIBkgGTgDuAPKIaThpPgQJFgQJQgC/ZAB8AIxpSAA4AJhpTACEAZhpUA6MBkgBnAIYAFQAnAC8AdRpcXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQJCgDuAEoA1gACABAiBAkbTADgAOQAOGl4aZwBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqBpoGmkaahprGmwabRpuGm+BAkeBAkiBAkmBAkuBAkyBAk2BAk6BAk+AL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRpOAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIECRQgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUaTgB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBAkUICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUakQAVGk4AdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBAkqAAIECRQgICAiAI4BBCAiAAAjTADgAOQAOGp8aoABQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRpOAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIECRQgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUaTgB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBAkUICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVGk4AdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQJFCAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRpOAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIECRQgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUaTgB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBAkUICAgIgCOARggIgAAI2QAfACMa7gAOACYa7wAhAGYa8AOjAZMAZwCGABUAJwAvAHUa+F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECQoA8gBKANYAAgAQIgQJR0wA4ADkADhr6GwIAUKcCTgJPAlACUQJSAlMCVIBUgFWAVoBXgFiAWYBapxsDGwQbBRsGGwcbCBsJgQJSgQJTgQJUgQJVgQWDgQWEgQWFgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJnABUaTwB1AHUAdQAvAHUAvQJOAHUAdQAVAHWAAIBcgACBAlAICAgIgCOAVAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCdgAVGk8AdQB1AHUALwB1AL0CTwB1AHUAFQB1gACAXoAAgQJQCAgICIAjgFUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAnYAFRpPAHUAdQB1AC8AdQC9AlAAdQB1ABUAdYAAgF6AAIECUAgICAiAI4BWCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQBOABUaTwB1AHUAdQAvAHUAvQJRAHUAdQAVAHWAAIECVoAAgQJQCAgICIAjgFcICIAACN8QEBtIG0kbShtLAB8bTBtNACEbThtPAA4AIxtQG1EAJgBmAGcbUwAnACcAExtXAG0ALwAnAGcAcABDAGcbXhtfAHVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAEoECaIAEgASAAoECWIEBloAEgBKBAZiADoASgQWCgQJXCBMAAAABIS3kqNMAOAA5AA4bYxtlAFChAHqAFKEbZoECWYAv2QAfACMbaQAOACYbagAhAGYbawBOAHoAZwCGABUAJwAvAHUbc18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECVoAUgBKANYAAgAQIgQJa0wA4ADkADht1G38AUKkAjQCOAI8AkACRAJIAkwCUAJWAF4AYgBmAGoAbgByAHYAegB+pG4AbgRuCG4MbhBuFG4YbhxuIgQJbgQJdgQJegQJggQJhgQJjgQJkgQJmgQJngC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRuMABUbZgB1AHUAdQAvAHUAvQCNAHUAdQAVAHWAAIECXIAAgQJZCAgICIAjgBcICIAACNIAOQAOG5oAxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRtmAHUAdQB1AC8AdQC9AI4AdQB1ABUAdYAAgACAAIECWQgICAiAI4AYCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRutABUbZgB1AHUAdQAvAHUAvQCPAHUAdQAVAHWAAIECX4AAgQJZCAgICIAjgBkICIAACNIAOQAOG7sAxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRtmAHUAdQB1AC8AdQC9AJAAdQB1ABUAdYAAgACAAIECWQgICAiAI4AaCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRvOABUbZgB1AHUAdQAvAHUAvQCRAHUAdQAVAHWAAIECYoAAgQJZCAgICIAjgBsICIAACNIAOQAOG9wAxaCAIt8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRtmAHUAdQB1AC8AdQC9AJIAdQB1ABUAdYAAgCyAAIECWQgICAiAI4AcCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRvvABUbZgB1AHUAdQAvAHUAvQCTAHUAdQAVAHWAAIECZYAAgQJZCAgICIAjgB0ICIAACNMAOAA5AA4b/Rv+AFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBPwAVG2YAdQB1AHUALwB1AL0AlAB1AHUAFQB1gACAMYAAgQJZCAgICIAjgB4ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAEMAFRtmAHUAdQB1AC8AdQC9AJUAdQB1ABUAdYAAgA6AAIECWQgICAiAI4AfCAiAAAjTADgAOQAOHB8cJABQpBwgAXUcIhwjgQJpgDeBAmqBAmukHCUcJhwnHCiBAmyBAoOBArGBBSGAL15sYXN0UGxheWVkSXRlbV8QD2V4dHJhY3RlZFRoZW1lc1xjdXJyZW50VGhlbWXfEBIAqwCsAK0cLgAfAK8AsBwvACEArhwwALEADgAjALIAswAmALQAFQAVABUAJwBOAHUAdRw4AC8AdQBnAHUBiRwgAHUAdRxAAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECVggIgQJuCIASCICggQJpCAiBAm0IEr+o6QXTADgAOQAOHEQcRwBQogGSAZOAO4A8ohxIHEmBAm+BAnqAL9kAHwAjHEwADgAmHE0AIQBmHE4cJQGSAGcAhgAVACcALwB1HFZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAmyAO4ASgDWAAIAECIECcNMAOAA5AA4cWBxhAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoHGIcYxxkHGUcZhxnHGgcaYECcYECcoECc4ECdYECdoECd4ECeIECeYAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVHEgAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQJvCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFRxIAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIECbwgICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFRyLABUcSAB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIECdIAAgQJvCAgICIAjgEEICIAACNMAOAA5AA4cmRyaAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVHEgAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQJvCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAgQAFRxIAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgE2AAIECbwgICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUcSAB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBAm8ICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVHEgAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQJvCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFRxIAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIECbwgICAiAI4BGCAiAAAjZAB8AIxzoAA4AJhzpACEAZhzqHCUBkwBnAIYAFQAnAC8AdRzyXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQJsgDyAEoA1gACABAiBAnvTADgAOQAOHPQc/ABQpwJOAk8CUAJRAlICUwJUgFSAVYBWgFeAWIBZgFqnHP0c/hz/HQAdAR0CHQOBAnyBAn2BAn6BAn+BAoCBAoGBAoKAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFRxJAHUAdQB1AC8AdQC9Ak4AdQB1ABUAdYAAgFyAAIECeggICAiAI4BUCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJ2ABUcSQB1AHUAdQAvAHUAvQJPAHUAdQAVAHWAAIBegACBAnoICAgIgCOAVQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCdgAVHEkAdQB1AHUALwB1AL0CUAB1AHUAFQB1gACAXoAAgQJ6CAgICIAjgFYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAEsAFRxJAHUAdQB1AC8AdQC9AlEAdQB1ABUAdYAAgGGAAIECeggICAiAI4BXCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUcSQB1AHUAdQAvAHUAvQJSAHUAdQAVAHWAAIAsgACBAnoICAgIgCOAWAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVHEkAdQB1AHUALwB1AL0CUwB1AHUAFQB1gACALIAAgQJ6CAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVA6MAFRxJAHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgQJCgACBAnoICAgIgCOAWggIgAAI3xASAKsArACtHW8AHwCvALAdcAAhAK4dcQCxAA4AIwCyALMAJgC0ABUAFQAVACcATgB1AHUdeQAvAHUAZwB1AYkBdQB1AHUdgQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAlYICIEChQiAEgiAoIA3CAiBAoQIEqpQ7ijTADgAOQAOHYUdiABQogGSAZOAO4A8oh2JHYqBAoaBApGAL9kAHwAjHY0ADgAmHY4AIQBmHY8cJgGSAGcAhgAVACcALwB1HZdfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAoOAO4ASgDWAAIAECIECh9MAOAA5AA4dmR2iAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoHaMdpB2lHaYdpx2oHakdqoECiIECiYECioECjIECjYECjoECj4ECkIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVHYkAdQB1AHUALwB1AL0BqAB1AHUAFQB1gACALIAAgQKGCAgICIAjgD8ICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFR2JAHUAdQB1AC8AdQC9AakAdQB1ABUAdYAAgACAAIEChggICAiAI4BACAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFR3MABUdiQB1AHUAdQAvAHUAvQGqAHUAdQAVAHWAAIECi4AAgQKGCAgICIAjgEEICIAACNMAOAA5AA4d2h3bAFCgoIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVHYkAdQB1AHUALwB1AL0BqwB1AHUAFQB1gACALIAAgQKGCAgICIAjgEIICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFR2JAHUAdQB1AC8AdQC9AawAdQB1ABUAdYAAgCyAAIEChggICAiAI4BDCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUdiQB1AHUAdQAvAHUAvQGtAHUAdQAVAHWAAIAsgACBAoYICAgIgCOARAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVHYkAdQB1AHUALwB1AL0BrgB1AHUAFQB1gACAAIAAgQKGCAgICIAjgEUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFR2JAHUAdQB1AC8AdQC9Aa8AdQB1ABUAdYAAgCyAAIEChggICAiAI4BGCAiAAAjZAB8AIx4pAA4AJh4qACEAZh4rHCYBkwBnAIYAFQAnAC8AdR4zXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQKDgDyAEoA1gACABAiBApLTADgAOQAOHjUePQBQpwJOAk8CUAJRAlICUwJUgFSAVYBWgFeAWIBZgFqnHj4ePx5AHkEeQh5DHkSBApOBApSBApWBApaBApeBApiBApmAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFR2KAHUAdQB1AC8AdQC9Ak4AdQB1ABUAdYAAgFyAAIECkQgICAiAI4BUCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJ2ABUdigB1AHUAdQAvAHUAvQJPAHUAdQAVAHWAAIBegACBApEICAgIgCOAVQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCZwAVHYoAdQB1AHUALwB1AL0CUAB1AHUAFQB1gACAXIAAgQKRCAgICIAjgFYICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAEsAFR2KAHUAdQB1AC8AdQC9AlEAdQB1ABUAdYAAgGGAAIECkQgICAiAI4BXCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUdigB1AHUAdQAvAHUAvQJSAHUAdQAVAHWAAIBNgACBApEICAgIgCOAWAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVHYoAdQB1AHUALwB1AL0CUwB1AHUAFQB1gACALIAAgQKRCAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVA6YAFR2KAHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgQKagACBApEICAgIgCOAWggIgAAI3xASAKsArACtHrAAHwCvALAesQAhAK4esgCxAA4AIwCyALMAJgC0ABUAFQAVACcASwB1AHUeugAvAHUAZwB1AYkDkQB1AHUewgB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAYQgIgQKcCIASCICggIIICIECmwgSclVlBdMAOAA5AA4exh7JAFCiAZIBk4A7gDyiHsoey4ECnYECqIAv2QAfACMezgAOACYezwAhAGYe0AOmAZIAZwCGABUAJwAvAHUe2F8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECmoA7gBKANYAAgAQIgQKe0wA4ADkADh7aHuMAUKgBqAGpAaoBqwGsAa0BrgGvgD+AQIBBgEKAQ4BEgEWARqge5B7lHuYe5x7oHuke6h7rgQKfgQKggQKhgQKjgQKkgQKlgQKmgQKngC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUeygB1AHUAdQAvAHUAvQGoAHUAdQAVAHWAAIAsgACBAp0ICAgIgCOAPwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVHsoAdQB1AHUALwB1AL0BqQB1AHUAFQB1gACAAIAAgQKdCAgICIAjgEAICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVHw0AFR7KAHUAdQB1AC8AdQC9AaoAdQB1ABUAdYAAgQKigACBAp0ICAgIgCOAQQgIgAAI0wA4ADkADh8bHxwAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUeygB1AHUAdQAvAHUAvQGrAHUAdQAVAHWAAIAsgACBAp0ICAgIgCOAQggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCBAAVHsoAdQB1AHUALwB1AL0BrAB1AHUAFQB1gACATYAAgQKdCAgICIAjgEMICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFR7KAHUAdQB1AC8AdQC9Aa0AdQB1ABUAdYAAgCyAAIECnQgICAiAI4BECAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUeygB1AHUAdQAvAHUAvQGuAHUAdQAVAHWAAIAAgACBAp0ICAgIgCOARQgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVHsoAdQB1AHUALwB1AL0BrwB1AHUAFQB1gACALIAAgQKdCAgICIAjgEYICIAACNkAHwAjH2oADgAmH2sAIQBmH2wDpgGTAGcAhgAVACcALwB1H3RfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBApqAPIASgDWAAIAECIECqdMAOAA5AA4fdh9+AFCnAk4CTwJQAlECUgJTAlSAVIBVgFaAV4BYgFmAWqcffx+AH4Efgh+DH4QfhYECqoECq4ECrIECrYECroECr4ECsIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCZwAVHssAdQB1AHUALwB1AL0CTgB1AHUAFQB1gACAXIAAgQKoCAgICIAjgFQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAnYAFR7LAHUAdQB1AC8AdQC9Ak8AdQB1ABUAdYAAgF6AAIECqAgICAiAI4BVCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJ2ABUeywB1AHUAdQAvAHUAvQJQAHUAdQAVAHWAAIBegACBAqgICAgIgCOAVggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUATgAVHssAdQB1AHUALwB1AL0CUQB1AHUAFQB1gACBAlaAAIECqAgICAiAI4BXCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUeywB1AHUAdQAvAHUAvQJSAHUAdQAVAHWAAIAsgACBAqgICAgIgCOAWAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVHssAdQB1AHUALwB1AL0CUwB1AHUAFQB1gACALIAAgQKoCAgICIAjgFkICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVHCYAFR7LAHUAdQB1AC8AdQC9AlQAdQB1ABUAdYAAgQKDgACBAqgICAgIgCOAWggIgAAI3xASAKsArACtH/EAHwCvALAf8gAhAK4f8wCxAA4AIwCyALMAJgC0ABUAFQAVACcATgB1AHUf+wAvAHUAZwB1AYkcIgB1AHUgAwB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAlYICIECswiAEgiAoIECaggIgQKyCBLI+nBQ0wA4ADkADiAHIAoAUKIBkgGTgDuAPKIgCyAMgQK0gQK/gC/ZAB8AIyAPAA4AJiAQACEAZiARHCcBkgBnAIYAFQAnAC8AdSAZXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQKxgDuAEoA1gACABAiBArXTADgAOQAOIBsgJABQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqCAlICYgJyAoICkgKiArICyBAraBAreBAriBArqBAruBAryBAr2BAr6AL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSALAHUAdQB1AC8AdQC9AagAdQB1ABUAdYAAgCyAAIECtAgICAiAI4A/CAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUgCwB1AHUAdQAvAHUAvQGpAHUAdQAVAHWAAIAAgACBArQICAgIgCOAQAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUgTgAVIAsAdQB1AHUALwB1AL0BqgB1AHUAFQB1gACBArmAAIECtAgICAiAI4BBCAiAAAjTADgAOQAOIFwgXQBQoKCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVARgAFSALAHUAdQB1AC8AdQC9AasAdQB1ABUAdYAAgCyAAIECtAgICAiAI4BCCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQIEABUgCwB1AHUAdQAvAHUAvQGsAHUAdQAVAHWAAIBNgACBArQICAgIgCOAQwgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVIAsAdQB1AHUALwB1AL0BrQB1AHUAFQB1gACALIAAgQK0CAgICIAjgEQICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVABUAFSALAHUAdQB1AC8AdQC9Aa4AdQB1ABUAdYAAgACAAIECtAgICAiAI4BFCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUgCwB1AHUAdQAvAHUAvQGvAHUAdQAVAHWAAIAsgACBArQICAgIgCOARggIgAAI2QAfACMgqwAOACYgrAAhAGYgrRwnAZMAZwCGABUAJwAvAHUgtV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECsYA8gBKANYAAgAQIgQLA0wA4ADkADiC3IL8AUKcCTgJPAlACUQJSAlMCVIBUgFWAVoBXgFiAWYBapyDAIMEgwiDDIMQgxSDGgQLBgQLCgQLDgQLEgQV/gQWAgQWBgC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQJnABUgDAB1AHUAdQAvAHUAvQJOAHUAdQAVAHWAAIBcgACBAr8ICAgIgCOAVAgIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUCdgAVIAwAdQB1AHUALwB1AL0CTwB1AHUAFQB1gACAXoAAgQK/CAgICIAjgFUICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVAmcAFSAMAHUAdQB1AC8AdQC9AlAAdQB1ABUAdYAAgFyAAIECvwgICAiAI4BWCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQBPABUgDAB1AHUAdQAvAHUAvQJRAHUAdQAVAHWAAIECxYAAgQK/CAgICIAjgFcICIAACN8QECEFIQYhByEIAB8hCSEKACEhCyEMAA4AIyENIQ4AJgBmAGchEAAnACcAEyEUAG0ALwAnAGcAcABEAGchGyEcAHVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAEoEC2IAEgASAAoECx4EBloAEgBKBAZiAD4ASgQV+gQLGCBKyAq060wA4ADkADiEgISIAUKEAeoAUoSEjgQLIgC/ZAB8AIyEmAA4AJiEnACEAZiEoAE8AegBnAIYAFQAnAC8AdSEwXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQLFgBSAEoA1gACABAiBAsnTADgAOQAOITIhPABQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6khPSE+IT8hQCFBIUIhQyFEIUWBAsqBAsyBAs6BAtCBAtGBAtOBAtSBAtaBAteAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVIUkAFSEjAHUAdQB1AC8AdQC9AI0AdQB1ABUAdYAAgQLLgACBAsgICAgIgCOAFwgIgAAI0gA5AA4hVwDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUhWwAVISMAdQB1AHUALwB1AL0AjgB1AHUAFQB1gACBAs2AAIECyAgICAiAI4AYCAiAAAhdQXJ0d29ya0NvbG9yc98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVIWsAFSEjAHUAdQB1AC8AdQC9AI8AdQB1ABUAdYAAgQLPgACBAsgICAgIgCOAGQgIgAAI0gA5AA4heQDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVISMAdQB1AHUALwB1AL0AkAB1AHUAFQB1gACAAIAAgQLICAgICIAjgBoICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVIYwAFSEjAHUAdQB1AC8AdQC9AJEAdQB1ABUAdYAAgQLSgACBAsgICAgIgCOAGwgIgAAI0gA5AA4hmgDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBGAAVISMAdQB1AHUALwB1AL0AkgB1AHUAFQB1gACALIAAgQLICAgICIAjgBwICIAACN8QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVIa0AFSEjAHUAdQB1AC8AdQC9AJMAdQB1ABUAdYAAgQLVgACBAsgICAgIgCOAHQgIgAAI0wA4ADkADiG7IbwAUKCggC/fEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQE/ABUhIwB1AHUAdQAvAHUAvQCUAHUAdQAVAHWAAIAxgACBAsgICAgIgCOAHggIgAAI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUARAAVISMAdQB1AHUALwB1AL0AlQB1AHUAFQB1gACAD4AAgQLICAgICIAjgB8ICIAACNMAOAA5AA4h3SH5AFCvEBsh3iHfIeAh4SHiIeMh5CHlIeYh5yHoIekh6gOFIewh7QORIe8h8CHxIfIh8yH0IfUh9iH3IfiBAtmBAtqBAtuBAtyBAt2BAt6BAt+BAuCBAuGBAuKBAuOBAuSBAuWAdoEC5oEC54CCgQLogQLpgQLqgQLrgQLsgQLtgQLugQLvgQLwgQLxrxAbIfoh+yH8If0h/iH/IgAiASICIgMiBCIFIgYiByIIIgkiCiILIgwiDSIOIg8iECIRIhIiEyIUgQLygQMKgQMhgQM4gQNQgQNngQN+gQOVgQOsgQPDgQPbgQPygQQJgQQggQQ3gQRPgQRmgQR9gQSUgQSsgQTEgQTcgQTzgQUKgQU4gQVQgQVngC9fEBBkYXJrU2Vjb25kYXJ5SGV4XxAfZGFya1RlcnRpYXJ5U3lzdGVtQmFja2dyb3VuZEhleF8QHGxpZ2h0UXVhdGVybmFyeVN5c3RlbUZpbGxIZXhfEBFsaWdodFNlY29uZGFyeUhleF8QG2RhcmtRdWF0ZXJuYXJ5U3lzdGVtRmlsbEhleF8QGmRhcmtTZWNvbmRhcnlTeXN0ZW1GaWxsSGV4XxAhbGlnaHRTZWNvbmRhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAeZGFya1N5c3RlbUdyb3VwZWRCYWNrZ3JvdW5kSGV4XxAgZGFya1NlY29uZGFyeVN5c3RlbUJhY2tncm91bmRIZXhfEBhsaWdodFN5c3RlbUJhY2tncm91bmRIZXhfEBBkYXJrU2VwYXJhdG9ySGV4XxARZGFya1N5c3RlbUZpbGxIZXhfEBpsaWdodFRlcnRpYXJ5U3lzdGVtRmlsbEhleF5saWdodEFjY2VudEhleF8QEWxpZ2h0U2VwYXJhdG9ySGV4XxASbGlnaHRTeXN0ZW1GaWxsSGV4XxAPbGlnaHRQcmltYXJ5SGV4XmRhcmtQcmltYXJ5SGV4XxAXZGFya1N5c3RlbUJhY2tncm91bmRIZXhfEBlkYXJrVGVydGlhcnlTeXN0ZW1GaWxsSGV4XxAbbGlnaHRTZWNvbmRhcnlTeXN0ZW1GaWxsSGV4WHNlbGVjdGVkXWRhcmtBY2NlbnRIZXhfECBsaWdodFRlcnRpYXJ5U3lzdGVtQmFja2dyb3VuZEhleF8QH2xpZ2h0U3lzdGVtR3JvdXBlZEJhY2tncm91bmRIZXjfEBIAqwCsAK0iMAAfAK8AsCIxACEAriIyALEADgAjALIAswAmALQAFQAVABUAJwBPAHUAdSI6AC8AdQBnAHUFGiHeAHUAdSJCAHVfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECxQgIgQL0CIASCIDBgQLZCAiBAvMIEpHxUPXTADgAOQAOIkYiSQBQogGSBSSAO4CkoiJKIkuBAvWBAwGAL9kAHwAjIk4ADgAmIk8AIQBmIlAh+gGSAGcAhgAVACcALwB1IlhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAvKAO4ASgDWAAIAECIEC9tMAOAA5AA4iWiJjAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoImQiZSJmImciaCJpImoia4E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eAG0ALwAnAGcAcAA+AGdNJU0mAHVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2WAEoEGIYAEgASAAoEGEYEBloAEgBKBAZiACYASgQaBgQYQCBKh62BI0wA4ADkADk0qTSwAUKEAeoAUoU0tgQYSgC/ZAB8AI00wAA4AJk0xACEAZk0yAEkAegBnAIYAFQAnAC8AdU06XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQYPgBSAEoA1gACABAiBBhPTADgAOQAOTTxNRgBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6lNR01ITUlNSk1LTUxNTU1OTU+BBhSBBhaBBheBBhmBBhqBBhyBBh2BBh+BBiCAL98QDwCrAKwArQAfAK4ArwCwACEAsQAOACMAsgCzACYAtAAVTVMAFU0tAHUAdQB1AC8AdQC9AI0AdQB1ABUAdYAAgQYVgACBBhIICAgIgCOAFwgIgAAI0gA5AA5NYQDFoIAi3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUAFQAVTS0AdQB1AHUALwB1AL0AjgB1AHUAFQB1gACAAIAAgQYSCAgICIAjgBgICIAACN8QDwCrAKw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lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDSADkADmi2AMWggCLTADgAOQAOaLlougBQoKCAL1DSAMcAyGi+aL9ZWERQTU1vZGVso2i+aMAAzFdYRE1vZGVsAAAACAAAABkAAAAiAAAALAAAADEAAAA6AAAAPwAAAFEAAABWAAAAWwAAAF0AABDHAAAQzQAAEOYAABD4AAAQ/wAAEQ0AABEaAAARMgAAEUwAABFOAAARUQAAEVMAABFWAAARWQAAEVwAABGVAAARtAAAEdEAABHwAAASAgAAEiIAABIpAAASRwAAElMAABJvAAASdQAAEpcAABK4AAASywAAEs0AABLQAAAS0wAAEtUAABLXAAAS2QAAEtwAABLfAAAS4QAAEuMAABLlAAAS5wAAEukAABLrAAAS7AAAEvAAABL9AAATBQAAExAAABMlAAATJwAAEykAABMrAAATLQAAEy8AABMxAAATMwAAEzUAABM3AAATOQAAE04AABNQAAATUgAAE1UAABNYAAATWwAAE10AABNgAAATYwAAE2YAABNpAAATawAAE3IAABOAAAAThQAAE44AABOWAAATogAAE6oAABO5AAATwQAAE8cAABQKAAAULgAAFFIAABR1AAAUnAAAFLwAABTjAAAVCgAAFSoAABVOAAAVcgAAFX4AABWAAAAVggAAFYQAABWGAAAViAAAFYoAABWNAAAVjwAAFZEAABWUAAAVlgAAFZgAABWbAAAVnQAAFZ4AABWjAAAVqwAAFbgAABW7AAAVvQAAFcAAABXCAAAVxAAAFdMAABX4AAAWHAAAFkMAABZnAAAWaQAAFmsAABZtAAAWbwAAFnEAABZzAAAWdAAAFnYAABaDAAAWlgAAFpgAABaaAAAWnAAAFp4AABagAAAWogAAFqQAABamAAAWqAAAFrsAABa9AAAWvwAAFsEAABbDAAAWxQAAFscAABbJAAAWywAAFs0AABbPAAAW5QAAFvgAABcUAAAXMQAAF00AABdhAAAXcwAAF4kAABeiAAAX4QAAF+cAABfwAAAX/QAAGAkAABgTAAAYHQAAGCgAABgzAAAYQAAAGEgAABhKAAAYTAAAGE4AABhQAAAYUQAAGFIAABhTAAAYVAAAGFYAABhYAAAYWQAAGFoAABhcAAAYXQAAGGYAABhnAAAYaQAAGHIAABh9AAAYhgAAGJU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AACWOAAAlkAAAJZIAACWTAAAllAAAJZYAACWXAAAl1gAAJdgAACXaAAAl3AAAJd4AACXfAAAl4AAAJeEAACXiAAAl5AAAJeYAACXnAAAl6AAAJeoAACXrAAAmPgAAJmIAACaGAAAmpgAAJs0AACb0AAAnFAAAJzsAACdfAAAnggAAJ6kAACfNAAAn8QAAKBUAACg8AAAoPQAAKD8AAChBAAAoQwAAKEUAAChIAAAoSgAAKEwAAChPAAAoUQAAKFMAAChWAAAoWAAAKFoAAChcAAAoXgAAKGAAAChjAAAoZgAAKGsAACh4AAAoewAAKH0AACiAAAAoggAAKIQAACipAAAozQAAKPQAACkYAAApGgAAKRwAACkeAAApIAAAKSIAACkkAAApJQAAKScAACk0AAApRwAAKUkAAClLAAApTQAAKU8AAClRAAApUwAAKVUAAClXAAApWQAAKWwAACluAAApcAAAKXIAACl0AAApdgAAKXgAACl6AAApfAAAKX4AACmAAAApvwAAKcEAACnDAAApxQAAKccAACnIAAApyQAAKcoAACnLAAApzQAAKc8AACnQAAAp0QAAKdMAACnUAAAp3QAAKd4AACngAAAqHwAAKiEAACojAAAqJQAAKicAACooAAAqKQAAKioAACorAAAqLQAAKi8AACowAAAqMQAAKjMAACo0AAAqcwAAKnUAACp3AAAqeQAAKnsAACp8AAAqfQAAKn4AACp/AAAqgQAAKoMAACqEAAAqhQAAKocAACqIAAAqkQAAKpIAACqUAAAq0wAAKtUAACrXAAAq2QAAKtsAACrcAAAq3QAAKt4AACrfAAAq4QAAKuMAACrkAAAq5QAAKucAACroAAArJwAAKykAACsrAAArLQAAKy8AACswAAArMQAAKzIAACszAAArNQAAKzcAACs4AAArOQAAKzsAACs8AAArRQAAK0YAACtIAAArhwAAK4kAACuLAAArjQAAK48AACuQAAArkQAAK5IAACuTAAArlQAAK5cAACuYAAArmQAAK5sAACucAAAr2wAAK90AACvfAAAr4QAAK+MAACvkAAAr5QAAK+YAACvnAAAr6QAAK+sAACvsAAAr7QAAK+8AACvwAAAr/QAAK/4AACv/AAAsAQAALEAAACxCAAAsRAAALEYAACxIAAAsSQAALEoAACxLAAAsTAAALE4AACxQAAAsUQAALFIAACxUAAAsVQAALJQAACyWAAAsmAAALJoAACycAAAsnQAALJ4AACyfAAAsoAAALKIAACykAAAspQAALKYAACyoAAAsqQAALLUAACzCAAAs7QAALO8AACzxAAAs8wAALPUAACz3AAAs+QAALPsAACz9AAAs/wAALQEAAC0DAAAtBQAALQcAAC0JAAAtCwAALQ0AAC0PAAAtEQAALRMAAC0VAAAtQAAALUIAAC1EAAAtRgAALUkAAC1MAAAtTwAALVIAAC1VAAAtWAAALVsAAC1eAAAtYQAALWQAAC1nAAAtagAALW0AAC1wAAAtcwAALXYAAC15AAAtewAALYIAAC2IAAAtlgAALZ8AAC2rAAAtvgAALcQAAC3OAAAt0wAALeAAAC3rAAAt9gAALfsAAC4DAAAuCwAALhUAAC4gAAAuKgAALj0AAC5KAAAulQAALrgAAC7YAAAu+AAALvoAAC78AAAu/gAALwAAAC8CAAAvAwAALwQAAC8GAAAvBwAALwkAAC8KAAAvDAAALw4AAC8PAAAvEAAALxIAAC8TAAAvGAAALyUAAC8qAAAvLAAALy4AAC8zAAAvNQAALzcAAC85AAAvXgAAL4IAAC+pAAAvzQAAL88AAC/RAAAv0wAAL9UAAC/XAAAv2QAAL9oAAC/cAAAv6QAAL/oAAC/8AAAv/gAAMAAAADACAAAwBAAAMAYAADAIAAAwCgAAMBsAADAdAAAwHwAAMCEAADAjAAAwJQAAMCcAADApAAAwKwAAMC0AADBsAAAwbgAAMHAAADByAAAwdAAAMHUAADB2AAAwdwAAMHgAADB6AAAwfAAAMH0AADB+AAAwgAAAMIEAADDAAAAwwgAAMMQAADDGAAAwyAAAMMkAADDKAAAwywAAMMwAADDOAAAw0AAAMNEAADDSAAAw1AAAMNUAADEUAAAxFgAAMRgAADEaAAAxHAAAMR0AADEeAAAxHwAAMSAAADEiAAAxJAAAMSUAADEmAAAxKAAAMSkAADE2AAAxNwAAMTgAADE6AAAxeQAAMXsAADF9AAAxfwAAMYEAADGCAAAxgwAAMYQAADGFAAAxhwAAMYkAADGKAAAxiwAAMY0AADGOAAAxzQAAMc8AADHRAAAx0wAAMdUAADHWAAAx1wAAMdgAADHZAAAx2wAAMd0AADHeAAAx3wAAMeEAADHiAAAyIQAAMiMAADIlAAAyJwAAMikAADIqAAAyKwAAMiwAADItAAAyLwAAMjEAADIyAAAyMwAAMjUAADI2AAAydQAAMncAADJ5AAAyewAAMn0AADJ+AAAyfwAAMoAAADKBAAAygwAAMoUAADKGAAAyhwAAMokAADKKAAAyyQAAMssAADLNAAAyzwAAMtEAADLSAAAy0wAAMtQAADLVAAAy1wAAMtkAADLaAAAy2wAAMt0AADLeAAAzAwAAMycAADNOAAAzcgAAM3QAADN2AAAzeAAAM3oAADN8AAAzfgAAM38AADOBAAAzjgAAM50AADOfAAAzoQAAM6MAADOlAAAzpwAAM6kAADOrAAAzugAAM7wAADO+AAAzwAAAM8IAADPEAAAzxgAAM8gAADPKAAA0CQAANAsAADQNAAA0DwAANBEAADQSAAA0EwAANBQAADQVAAA0FwAANBkAADQaAAA0GwAANB0AADQeAAA0XQAANF8AADRhAAA0YwAANGUAADRmAAA0ZwAANGgAADRpAAA0awAANG0AADRuAAA0bwAANHEAADRyAAA0sQAANLMAADS1AAA0twAANLkAADS6AAA0uwAANLwAADS9AAA0vwAANMEAADTCAAA0wwAANMUAADTGAAA1BQAANQcAADUJAAA1CwAANQ0AADUOAAA1DwAANRAAADURAAA1EwAANRUAADUWAAA1FwAANRkAADUaAAA1WQAANVsAADVdAAA1XwAANWEAADViAAA1YwAANWQAADVlAAA1ZwAANWkAADVqAAA1awAANW0AADVuAAA1rQAANa8AADWxAAA1swAANbUAADW2AAA1twAANbgAADW5AAA1uwAANb0AADW+AAA1vwAANcEAADXCAAA2AQAANgMAADYFAAA2BwAANgkAADYKAAA2CwAANgwAADYNAAA2DwAANhEAADYSAAA2EwAANhUAADYWAAA2HwAANjIAADY/AAA2UgAANl8AADZyAAA2iQAANpsAADbmAAA3CQAANykAADdJAAA3SwAAN00AADdPAAA3UQAAN1MAADdUAAA3VQAAN1cAADdYAAA3WgAAN1sAADddAAA3XwAAN2AAADdhAAA3YwAAN2QAADdpAAA3dgAAN3sAADd9AAA3fwAAN4QAADeGAAA3iAAAN4oAADefAAA3xAAAN+gAADgPAAA4MwAAODU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AAEO3AABDuAAAQ7oAAEO8AABDvQAAQ74AAEPAAABDwQAARAAAAEQCAABEBAAARAYAAEQIAABECQAARAoAAEQLAABEDAAARA4AAEQQAABEEQAARBIAAEQUAABEFQAARFQAAERWAABEWAAARFoAAERcAABEXQAARF4AAERfAABEYAAARGIAAERkAABEZQAARGYAAERoAABEaQAARI4AAESyAABE2QAARP0AAET/AABFAQAARQMAAEUFAABFBwAARQkAAEUKAABFDAAARRkAAEUoAABFKgAARSwAAEUuAABFMAAARTIAAEU0AABFNgAARUUAAEVHAABFSQAARUsAAEVNAABFUAAARVMAAEVWAABFWAAARZcAAEWZAABFmwAARZ0AAEWfAABFoAAARaEAAEWiAABFowAARaUAAEWnAABFqAAARakAAEWrAABFrAAAResAAEXtAABF7wAARfEAAEXzAABF9AAARfUAAEX2AABF9wAARfkAAEX7AABF/AAARf0AAEX/AABGAAAARgIAAEZBAABGQwAARkUAAEZHAABGSQAARkoAAEZLAABGTAAARk0AAEZPAABGUQAARlIAAEZTAABGVQAARlYAAEaVAABGlwAARpkAAEabAABGnQAARp4AAEafAABGoAAARqEAAEajAABGpQAARqYAAEanAABGqQAARqoAAEbtAABHEQAARzUAAEdYAABHfwAAR58AAEfGAABH7QAASA0AAEgxAABIVQAASFcAAEhZAABIWwAASF0AAEhfAABIYQAASGQAAEhmAABIaAAASGsAAEhtAABIbwAASHIAAEh0AABIdQAASH4AAEiLAABIjgAASJAAAEiTAABIlQAASJcAAEi8AABI4AAASQcAAEkrAABJLQAASS8AAEkxAABJMwAASTUAAEk3AABJOAAASToAAElHAABJWgAASVwAAEleAABJYAAASWIAAElkAABJZgAASWgAAElqAABJbAAASX8AAEmBAABJgwAASYUAAEmHAABJiQAASYsAAEmNAABJjwAASZEAAEmTAABJ0gAASdQAAEnWAABJ2AAASdoAAEnbAABJ3AAASd0AAEneAABJ4AAASeIAAEnjAABJ5AAASeYAAEnnAABJ8AAASfEAAEnzAABKMgAASjQAAEo2AABKOAAASjoAAEo7AABKPAAASj0AAEo+AABKQAAASkIAAEpDAABKRAAASkYAAEpHAABKhgAASogAAEqKAABKjAAASo4AAEqPAABKkAAASpEAAEqSAABKlAAASpYAAEqXAABKmAAASpoAAEqbAABKpAAASqUAAEqnAABK5gAASugAAErqAABK7AAASu4AAErvAABK8AAASvEAAEryAABK9AAASvYAAEr3AABK+AAASvoAAEr7AABLOgAASzwAAEs+AABLQAAAS0IAAEtDAABLRAAAS0UAAEtGAABLSAAAS0oAAEtLAABLTAAAS04AAEtPAABLWAAAS1kAAEtbAABLmgAAS5wAAEueAABLoAAAS6IAAEujAABLpAAAS6UAAEumAABLqAAAS6oAAEurAABLrAAAS64AAEuvAABL7gAAS/AAAEvyAABL9AAAS/YAAEv3AABL+AAAS/kAAEv6AABL/AAAS/4AAEv/AABMAAAATAIAAEwDAABMEAAATBEAAEwSAABMFAAATFMAAExVAABMVwAATFkAAExbAABMXAAATF0AAExeAABMXwAATGEAAExjAABMZAAATGUAAExnAABMaAAATKcAAEypAABMqwAATK0AAEyvAABMsAAATLEAAEyyAABMswAATLUAAEy3AABMuAAATLkAAEy7AABMvAAATMoAAEzXAABM5gAATOgAAEzqAABM7AAATO4AAEzwAABM8gAATPQAAE0DAABNBQAATQgAAE0LAABNDgAATREAAE0UAABNFwAATRkAAE0gAABNJwAATSoAAE01AABNQAAATUwAAE2XAABNugAATdoAAE36AABN/AAATf4AAE4AAABOAgAATgQAAE4FAABOBgAATggAAE4JAABOCwAATgwAAE4OAABOEAAAThEAAE4SAABOFAAAThUAAE4aAABOJwAATiwAAE4uAABOMAAATjUAAE43AABOOQAATjsAAE5gAABOhAAATqsAAE7PAABO0QAATtMAAE7VAABO1wAATtkAAE7bAABO3AAATt4AAE7rAABO/AAATv4AAE8AAABPAgAATwQAAE8GAABPCAAATwoAAE8MAABPHQAATx8AAE8hAABPIwAATyUAAE8nAABPKQAATysAAE8tAABPLwAAT24AAE9wAABPcgAAT3QAAE92AABPdwAAT3gAAE95AABPegAAT3wAAE9+AABPfwAAT4AAAE+CAABPgwAAT8IAAE/EAABPxgAAT8gAAE/KAABPywAAT8wAAE/NAABPzgAAT9AAAE/SAABP0wAAT9QAAE/WAABP1wAAUBYAAFAYAABQGgAAUBwAAFAeAABQHwAAUCAAAFAhAABQIgAAUCQAAFAmAABQJwAAUCgAAFAqAABQKwAAUDgAAFA5AABQOgAAUDwAAFB7AABQfQAAUH8AAFCBAABQgwAAUIQAAFCFAABQhgAAUIcAAFCJAABQiwAAUIwAAFCNAABQjwAAUJAAAFDPAABQ0QAAUNMAAFDVAABQ1wAAUNgAAFDZAABQ2gAAUNsAAFDdAABQ3wAAUOAAAFDhAABQ4wAAUOQAAFEjAABRJQAAUScAAFEpAABRKwAAUSwAAFEtAABRLgAAUS8AAFExAABRMwAAUTQAAFE1AABRNwAAUTgAAFF3AABReQAAUXsAAFF9AABRfwAAUYAAAFGBAABRggAAUYMAAFGFAABRhwAAUYgAAFGJAABRiwAAUYwAAFHLAABRzQAAUc8AAFHRAABR0wAAUdQAAFHVAABR1gAAUdcAAFHZAABR2wAAUdwAAFHdAABR3wAAUeAAAFIFAABSKQAAUlAAAFJ0AABSdgAAUngAAFJ6AABSfAAAUn4AAFKAAABSgQAAUoQAAFKRAABSoAAAUqIAAFKkAABSpgAAUqgAAFKqAABSrAAAUq4AAFK9AABSwAAAUsMAAFLGAABSyQAAUswAAFLPAABS0gAAUtQAAFMTAABTFQAAUxgAAFMaAABTHAAAUx0AAFMeAABTHwAAUyAAAFMiAABTJAAAUyUAAFMmAABTKAAAUykAAFMrAABTagAAU2wAAFNuAABTcAAAU3IAAFNzAABTdAAAU3UAAFN2AABTeAAAU3oAAFN7AABTfAAAU34AAFN/AABTvgAAU8AAAFPCAABTxAAAU8YAAFPHAABTyAAAU8kAAFPKAABTzAAAU84AAFPPAABT0AAAU9IAAFPTAABUEgAAVBQAAFQXAABUGQAAVBsAAFQcAABUHQAAVB4AAFQfAABUIQAAVCMAAFQkAABUJQAAVCcAAFQoAABUKgAAVGkAAFRrAABUbQAAVG8AAFRxAABUcgAAVHMAAFR0AABUdQAAVHcAAFR5AABUegAAVHsAAFR9AABUfgAAVL0AAFS/AABUwQAAVMMAAFTFAABUxgAAVMcAAFTIAABUyQAAVMsAAFTNAABUzgAAVM8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AAGBcAABgXgAAYGAAAGBjAABgZAAAYGUAAGBmAABgZwAAYGkAAGBrAABgbAAAYG0AAGBvAABgcAAAYK8AAGCxAABgswAAYLUAAGC4AABguQAAYLoAAGC7AABgvAAAYL4AAGDAAABgwQAAYMIAAGDEAABgxQAAYQQAAGEGAABhCAAAYQoAAGENAABhDgAAYQ8AAGEQAABhEQAAYRMAAGEVAABhFgAAYRcAAGEZAABhGgAAYVkAAGFbAABhXQAAYV8AAGFiAABhYwAAYWQAAGFlAABhZgAAYWgAAGFqAABhawAAYWwAAGFuAABhbwAAYa4AAGGwAABhsgAAYbQAAGG3AABhuAAAYbkAAGG6AABhuwAAYb0AAGG/AABhwAAAYcEAAGHDAABhxAAAYekAAGINAABiNAAAYlgAAGJbAABiXQAAYl8AAGJhAABiYwAAYmUAAGJmAABiaQAAYnYAAGKFAABihwAAYokAAGKLAABijQAAYo8AAGKRAABikwAAYqIAAGKlAABiqAAAYqsAAGKuAABisQAAYrQAAGK3AABiuQAAYvgAAGL6AABi/QAAYv8AAGMCAABjAwAAYwQAAGMFAABjBgAAYwgAAGMKAABjCwAAYwwAAGMOAABjDwAAY04AAGNQAABjUgAAY1QAAGNXAABjWAAAY1kAAGNaAABjWwAAY10AAGNfAABjYAAAY2EAAGNjAABjZAAAY6MAAGOlAABjpwAAY6kAAGOsAABjrQAAY64AAGOvAABjsAAAY7IAAGO0AABjtQAAY7YAAGO4AABjuQAAY/gAAGP6AABj/QAAY/8AAGQCAABkAwAAZAQAAGQFAABkBgAAZAgAAGQKAABkCwAAZAwAAGQOAABkDwAAZBEAAGRQAABkUgAAZFQAAGRWAABkWQAAZFoAAGRbAABkXAAAZF0AAGRfAABkYQAAZGIAAGRjAABkZQAAZGYAAGSlAABkpwAAZKkAAGSrAABkrgAAZK8AAGSwAABksQAAZLIAAGS0AABktgAAZLcAAGS4AABkugAAZLsAAGT6AABk/AAAZP4AAGUAAABlAwAAZQQAAGUFAABlBgAAZQcAAGUJAABlCwAAZQwAAGUNAABlDwAAZRAAAGVbAABlfgAAZZ4AAGW+AABlwAAAZcIAAGXEAABlxgAAZcgAAGXJAABlygAAZc0AAGXOAABl0AAAZdEAAGXTAABl1QAAZdYAAGXXAABl2gAAZdsAAGXgAABl7QAAZfIAAGX0AABl9gAAZfsAAGX+AABmAQAAZgMAAGYoAABmTAAAZnMAAGaXAABmmgAAZpwAAGaeAABmoAAAZqIAAGakAABmpQAAZqgAAGa1AABmxgAAZsgAAGbKAABmzAAAZs4AAGbQAABm0gAAZtQAAGbWAABm5wAAZuoAAGbtAABm8AAAZvMAAGb2AABm+QAAZvwAAGb/AABnAQAAZ0AAAGdCAABnRAAAZ0YAAGdJAABnSgAAZ0sAAGdMAABnTQAAZ08AAGdRAABnUgAAZ1MAAGdVAABnVgAAZ5UAAGeXAABnmQAAZ5sAAGeeAABnnwAAZ6AAAGehAABnogAAZ6QAAGemAABnpwAAZ6gAAGeqAABnqwAAZ+oAAGfsAABn7wAAZ/EAAGf0AABn9QAAZ/YAAGf3AABn+AAAZ/oAAGf8AABn/QAAZ/4AAGgAAABoAQAAaA4AAGgPAABoEAAAaBIAAGhRAABoUwAAaFUAAGhXAABoWgAAaFsAAGhcAABoXQAAaF4AAGhgAABoYgAAaGMAAGhkAABoZgAAaGcAAGimAABoqAAAaKoAAGisAABorwAAaLAAAGixAABosgAAaLMAAGi1AABotwAAaLgAAGi5AABouwAAaLwAAGj7AABo/QAAaP8AAGkBAABpBAAAaQUAAGkGAABpBwAAaQgAAGkKAABpDAAAaQ0AAGkOAABpEAAAaREAAGlQAABpUgAAaVQAAGlWAABpWQAAaVoAAGlbAABpXAAAaV0AAGlfAABpYQAAaWIAAGljAABpZQAAaWYAAGmlAABppwAAaakAAGmrAABprgAAaa8AAGmwAABpsQAAabIAAGm0AABptgAAabcAAGm4AABpugAAabsAAGngAABqBAAAaisAAGpPAABqUgAAalQAAGpWAABqWAAAaloAAGpcAABqXQAAamAAAGptAABqfAAAan4AAGqAAABqggAAaoQAAGqGAABqiAAAaooAAGqZAABqnAAAap8AAGqiAABqpQAAaqgAAGqrAABqrgAAarAAAGrvAABq8QAAavMAAGr1AABq+AAAavkAAGr6AABq+wAAavwAAGr+AABrAAAAawEAAGsCAABrBAAAawUAAGtEAABrRgAAa0gAAGtKAABrTQAAa04AAGtPAABrUAAAa1EAAGtTAABrVQAAa1YAAGtXAABrWQAAa1oAAGuZAABrmwAAa50AAGufAABrogAAa6MAAGukAABrpQAAa6YAAGuoAABrqgAAa6sAAGusAABrrgAAa68AAGvuAABr8AAAa/IAAGv0AABr9wAAa/gAAGv5AABr+gAAa/sAAGv9AABr/wAAbAAAAGwBAABsAwAAbAQAAGxDAABsRQAAbEcAAGxJAABsTAAAbE0AAGxOAABsTwAAbFAAAGxSAABsVAAAbFUAAGxWAABsWAAAbFkAAGyYAABsmgAAbJwAAGyeAABsoQAAbKIAAGyjAABspAAAbKUAAGynAABsqQAAbKoAAGyrAABsrQAAbK4AAGztAABs7wAAbPEAAGzzAABs9gAAbPcAAGz4AABs+QAAbPoAAGz8AABs/gAAbP8AAG0AAABtAgAAbQMAAG1OAABtcQAAbZEAAG2xAABtswAAbbUAAG23AABtuQAAbbsAAG28AABtvQAAbcAAAG3BAABtwwAAbcQAAG3GAABtyAAAbckAAG3KAABtzQAAbc4AAG3TAABt4AAAbeUAAG3nAABt6QAAbe4AAG3xAABt9AAAbfYAAG4bAABuPwAAbmYAAG6KAABujQAAbo8AAG6RAABukwAAbpUAAG6XAABumAAAbpsAAG6oAABuuQAAbrsAAG69AABuvwAAbsEAAG7DAABuxQAAbscAAG7JAABu2gAAbt0AAG7gAABu4wAAbuYAAG7pAABu7AAAbu8AAG7yAABu9AAAbzMAAG81AABvNwAAbzkAAG88AABvPQAAbz4AAG8/AABvQAAAb0IAAG9EAABvRQAAb0YAAG9IAABvSQAAb4gAAG+KAABvjAAAb44AAG+RAABvkgAAb5MAAG+UAABvlQAAb5cAAG+ZAABvmgAAb5sAAG+dAABvngAAb90AAG/fAABv4gAAb+QAAG/nAABv6AAAb+kAAG/qAABv6wAAb+0AAG/vAABv8AAAb/EAAG/zAABv9AAAcAEAAHACAABwAwAAcAUAAHBEAABwRgAAcEgAAHBKAABwTQAAcE4AAHBPAABwUAAAcFEAAHBTAABwVQAAcFYAAHBXAABwWQAAcFoAAHCZAABwmwAAcJ0AAHCfAABwogAAcKMAAHCkAABwpQAAcKYAAHCoAABwqgAAcKsAAHCsAABwrgAAcK8AAHDuAABw8AAAcPIAAHD0AABw9wAAcPgAAHD5AABw+gAAcPsAAHD9AABw/wAAcQAAAHEBAABxAwAAcQQAAHFDAABxRQAAcUcAAHFJAABxTAAAcU0AAHFOAABxTwAAcVAAAHFSAABxVAAAcVUAAHFWAABxWAAAcVkAAHGYAABxmgAAcZwAAHGeAABxoQAAcaIAAHGjAABxpAAAcaUAAHGnAABxqQAAcaoAAHGrAABxrQAAca4AAHHTAABx9wAAch4AAHJCAAByRQAAckcAAHJJAABySwAAck0AAHJPAAByUAAAclMAAHJgAABybwAAcnEAAHJzAABydQAAcncAAHJ5AAByewAAcn0AAHKMAAByjwAAcpIAAHKVAABymAAAcpsAAHKeAAByoQAAcqMAAHLiAABy5AAAcucAAHLpAABy7AAAcu0AAHLuAABy7wAAcvAAAHLyAABy9AAAcvUAAHL2AABy+AAAcvkAAHM4AABzOgAAczwAAHM+AABzQQAAc0IAAHNDAABzRAAAc0UAAHNHAABzSQAAc0oAAHNLAABzTQAAc04AAHONAABzjwAAc5EAAHOTAABzlgAAc5cAAHOYAABzmQAAc5oAAHOcAABzngAAc58AAHOgAABzogAAc6MAAHPiAABz5AAAc+cAAHPpAABz7AAAc+0AAHPuAABz7wAAc/AAAHPyAABz9AAAc/UAAHP2AABz+AAAc/kAAHQ4AAB0OgAAdDwAAHQ+AAB0QQAAdEIAAHRDAAB0RAAAdEUAAHRHAAB0SQAAdEoAAHRLAAB0TQAAdE4AAHSNAAB0jwAAdJEAAHSTAAB0lgAAdJcAAHSYAAB0mQAAdJoAAHScAAB0ngAAdJ8AAHSgAAB0ogAAdKMAAHTiAAB05AAAdOYAAHToAAB06wAAdOwAAHTtAAB07gAAdO8AAHTxAAB08wAAdPQAAHT1AAB09wAAdPgAAHVDAAB1ZgAAdYYAAHWmAAB1qAAAdaoAAHWsAAB1rgAAdbAAAHWxAAB1sgAAdbUAAHW2AAB1uAAAdbkAAHW7AAB1vQAAdb4AAHW/AAB1wgAAdcMAAHXIAAB11QAAddoAAHXcAAB13gAAdeMAAHXmAAB16QAAdesAAHYQAAB2NAAAdlsAAHZ/AAB2ggAAdoQAAHaGAAB2iAAAdooAAHaMAAB2jQAAdpAAAHadAAB2rgAAdrAAAHayAAB2tAAAdrYAAHa4AAB2ugAAdrwAAHa+AAB2zwAAdtIAAHbVAAB22AAAdtsAAHbeAAB24QAAduQAAHbnAAB26QAAdygAAHcqAAB3LAAAdy4AAHcxAAB3MgAAdzMAAHc0AAB3NQAAdzcAAHc5AAB3OgAAdzsAAHc9AAB3PgAAd30AAHd/AAB3gQAAd4MAAHeGAAB3hwAAd4gAAHeJAAB3igAAd4wAAHeOAAB3jwAAd5AAAHeSAAB3kwAAd9IAAHfUAAB31wAAd9kAAHfcAAB33QAAd94AAHffAAB34AAAd+IAAHfkAAB35QAAd+YAAHfoAAB36QAAd/YAAHf3AAB3+AAAd/oAAHg5AAB4OwAAeD0AAHg/AAB4QgAAeEMAAHhEAAB4RQAAeEYAAHhIAAB4SgAAeEsAAHhMAAB4TgAAeE8AAHiOAAB4kAAAeJIAAHiUAAB4lwAAeJgAAHiZAAB4mgAAeJsAAHidAAB4nwAAeKAAAHihAAB4owAAeKQAAHjjAAB45QAAeOcAAHjpAAB47AAAeO0AAHjuAAB47wAAePAAAHjyAAB49AAAePUAAHj2AAB4+AAAePkAAHk4AAB5OgAAeTwAAHk+AAB5QQAAeUIAAHlDAAB5RAAAeUUAAHlHAAB5SQAAeUoAAHlLAAB5TQAAeU4AAHmNAAB5jwAAeZEAAHmTAAB5lgAAeZcAAHmYAAB5mQAAeZoAAHmcAAB5ngAAeZ8AAHmgAAB5ogAAeaMAAHnIAAB57AAAehMAAHo3AAB6OgAAejwAAHo+AAB6QAAAekIAAHpEAAB6RQAAekgAAHpVAAB6ZAAAemYAAHpoAAB6agAAemwAAHpuAAB6cAAAenIAAHqBAAB6hAAAeocAAHqKAAB6jQAAepAAAHqTAAB6lgAAepgAAHrXAAB62QAAetsAAHrdAAB64AAAeuEAAHriAAB64wAAeuQAAHrmAAB66AAAeukAAHrqAAB67AAAeu0AAHssAAB7LgAAezAAAHsyAAB7NQAAezYAAHs3AAB7OAAAezkAAHs7AAB7PQAAez4AAHs/AAB7QQAAe0IAAHuBAAB7gwAAe4UAAHuHAAB7igAAe4sAAHuMAAB7jQAAe44AAHuQAAB7kgAAe5MAAHuUAAB7lgAAe5cAAHvWAAB72AAAe9sAAHvdAAB74AAAe+EAAHviAAB74wAAe+QAAHvmAAB76AAAe+kAAHvqAAB77AAAe+0AAHvwAAB8LwAAfDEAAHwzAAB8NQAAfDgAAHw5AAB8OgAAfDsAAHw8AAB8PgAAfEAAAHxBAAB8QgAAfEQAAHxFAAB8hAAAfIYAAHyIAAB8igAAfI0AAHyOAAB8jwAAfJAAAHyRAAB8kwAAfJUAAHyWAAB8lwAAfJkAAHyaAAB82QAAfNsAAHzdAAB83wAAfOIAAHzjAAB85AAAfOUAAHzmAAB86AAAfOoAAHzrAAB87AAAfO4AAHzvAAB9OgAAfV0AAH19AAB9nQAAfZ8AAH2hAAB9owAAfaUAAH2nAAB9qAAAfakAAH2sAAB9rQAAfa8AAH2wAAB9sgAAfbQAAH21AAB9tgAAfbkAAH26AAB9vwAAfcwAAH3RAAB90wAAfdUAAH3aAAB93QAAfeAAAH3iAAB+BwAAfisAAH5SAAB+dgAAfnkAAH57AAB+fQAAfn8AAH6BAAB+gwAAfoQAAH6HAAB+lAAAfqUAAH6nAAB+qQAAfqsAAH6tAAB+rwAAfrEAAH6zAAB+tQAAfsYAAH7JAAB+zAAAfs8AAH7SAAB+1QAAftgAAH7bAAB+3gAAfuAAAH8fAAB/IQAAfyMAAH8lAAB/KAAAfykAAH8qAAB/KwAAfywAAH8uAAB/MAAAfzEAAH8yAAB/NAAAfzUAAH90AAB/dgAAf3gAAH96AAB/fQAAf34AAH9/AAB/gAAAf4EAAH+DAAB/hQAAf4YAAH+HAAB/iQAAf4oAAH/JAAB/ywAAf84AAH/QAAB/0wAAf9QAAH/VAAB/1gAAf9cAAH/ZAAB/2wAAf9wAAH/dAAB/3wAAf+AAAH/tAAB/7gAAf+8AAH/xAACAMAAAgDIAAIA0AACANgAAgDkAAIA6AACAOwAAgDwAAIA9AACAPwAAgEEAAIBCAACAQwAAgEUAAIBGAACAhQAAgIcAAICJAACAiwAAgI4AAICPAACAkAAAgJEAAICSAACAlAAAgJYAAICXAACAmAAAgJoAAICbAACA2gAAgNwAAIDeAACA4AAAgOMAAIDkAACA5QAAgOYAAIDnAACA6QAAgOsAAIDsAACA7QAAgO8AAIDwAACBLwAAgTEAAIEzAACBNQAAgTgAAIE5AACBOgAAgTsAAIE8AACBPgAAgUAAAIFBAACBQgAAgUQAAIFFAACBhAAAgYYAAIGIAACBigAAgY0AAIGOAACBjwAAgZAAAIGRAACBkwAAgZUAAIGWAACBlwAAgZkAAIGaAACBvwAAgeMAAIIKAACCLgAAgjEAAIIzAACCNQAAgjcAAII5AACCOwAAgjwAAII/AACCTAAAglsAAIJdAACCXwAAgmEAAIJjAACCZQAAgmcAAIJpAACCeAAAgnsAAIJ+AACCgQAAgoQAAIKHAACCigAAgo0AAIKPAACCzgAAgtAAAILSAACC1AAAgtcAAILYAACC2QAAgtoAAILbAACC3QAAgt8AAILgAACC4QAAguMAAILkAACDIwAAgyUAAIMnAACDKQAAgywAAIMtAACDLgAAgy8AAIMwAACDMgAAgzQAAIM1AACDNgAAgzgAAIM5AACDeAAAg3oAAIN8AACDfgAAg4EAAIOCAACDgwAAg4QAAIOFAACDhwAAg4kAAIOKAACDiwAAg40AAIOOAACDzQAAg88AAIPRAACD0wAAg9YAAIPXAACD2AAAg9kAAIPaAACD3AAAg94AAIPfAACD4AAAg+IAAIPjAACEIgAAhCQAAIQmAACEKAAAhCsAAIQsAACELQAAhC4AAIQvAACEMQAAhDMAAIQ0AACENQAAhDcAAIQ4AACEdwAAhHkAAIR7AACEfQAAhIAAAISBAACEggAAhIMAAISEAACEhgAAhIgAAISJAACEigAAhIwAAISNAACEzAAAhM4AAITQAACE0gAAhNUAAITWAACE1wAAhNgAAITZAACE2wAAhN0AAITeAACE3wAAhOEAAITiAACE7QAAhPYAAIT3AACE+QAAhQIAAIUNAACFHAAAhScAAIU1AACFSgAAhV4AAIV1AACFhwAAhcYAAIXIAACFygAAhcwAAIXOAACFzwAAhdAAAIXRAACF0gAAhdQAAIXWAACF1wAAhdgAAIXaAACF2wAAhhoAAIYcAACGHgAAhiAAAIYiAACGIwAAhiQAAIYlAACGJgAAhigAAIYqAACGKwAAhiwAAIYuAACGLwAAhm4AAIZwAACGcwAAhnUAAIZ3AACGeAAAhnkAAIZ6AACGewAAhn0AAIZ/AACGgAAAhoEAAIaDAACGhAAAhs8AAIbyAACHEgAAhzIAAIc0AACHNgAAhzgAAIc6AACHPAAAhz0AAIc+AACHQQAAh0IAAIdEAACHRQAAh0cAAIdJAACHSgAAh0sAAIdOAACHTwAAh1QAAIdhAACHZgAAh2gAAIdqAACHbwAAh3IAAId1AACHdwAAh5wAAIfAAACH5wAAiAsAAIgOAACIEAAAiBIAAIgUAACIFgAAiBgAAIgZAACIHAAAiCkAAIg6AACIPAAAiD4AAIhAAACIQgAAiEQAAIhGAACISAAAiEoAAIhbAACIXgAAiGEAAIhkAACIZwAAiGoAAIhtAACIcAAAiHMAAIh1AACItAAAiLYAAIi4AACIugAAiL0AAIi+AACIvwAAiMAAAIjBAACIwwAAiMUAAIjGAACIxwAAiMkAAIjKAACJCQAAiQsAAIkNAACJDwAAiRIAAIkTAACJFAAAiRUAAIkWAACJGAAAiRoAAIkbAACJHAAAiR4AAIkfAACJXgAAiWAAAIljAACJZQAAiWgAAIlpAACJagAAiWsAAIlsAACJbgAAiXAAAIlxAACJcgAAiXQAAIl1AACJggAAiYMAAImEAACJhgAAicUAAInHAACJyQAAicsAAInOAACJzwAAidAAAInRAACJ0gAAidQAAInWAACJ1wAAidgAAInaAACJ2wAAihoAAIocAACKHgAAiiAAAIojAACKJAAAiiUAAIomAACKJwAAiikAAIorAACKLAAAii0AAIovAACKMAAAim8AAIpxAACKcwAAinUAAIp4AACKeQAAinoAAIp7AACKfAAAin4AAIqAAACKgQAAioIAAIqEAACKhQAAisQAAIrGAACKyAAAisoAAIrNAACKzgAAis8AAIrQAACK0QAAitMAAIrVAACK1gAAitcAAIrZAACK2gAAixkAAIsbAACLHQAAix8AAIsiAACLIwAAiyQAAIslAACLJgAAiygAAIsqAACLKwAAiywAAIsuAACLLwAAi1QAAIt4AACLnwAAi8MAAIvGAACLyAAAi8oAAIvMAACLzgAAi9AAAIvRAACL1AAAi+EAAIvwAACL8gAAi/QAAIv2AACL+AAAi/oAAIv8AACL/gAAjA0AAIwQAACMEwAAjBYAAIwZAACMHAAAjB8AAIwiAACMJAAAjGMAAIxlAACMaAAAjGoAAIxtAACMbgAAjG8AAIxwAACMcQAAjHMAAIx1AACMdgAAjHcAAIx5AACMegAAjH4AAIy9AACMvwAAjMEAAIzDAACMxgAAjMcAAIzIAACMyQAAjMoAAIzMAACMzgAAjM8AAIzQAACM0gAAjNMAAI0SAACNFAAAjRYAAI0YAACNGwAAjRwAAI0dAACNHgAAjR8AAI0hAACNIwAAjSQAAI0lAACNJwAAjSgAAI1nAACNaQAAjWwAAI1uAACNcQAAjXIAAI1zAACNdAAAjXUAAI13AACNeQAAjXoAAI17AACNfQAAjX4AAI2BAACNwAAAjcIAAI3EAACNxgAAjckAAI3KAACNywAAjcwAAI3NAACNzwAAjdEAAI3SAACN0wAAjdUAAI3WAACOFQAAjhcAAI4ZAACOGwAAjh4AAI4fAACOIAAAjiEAAI4iAACOJAAAjiYAAI4nAACOKAAAjioAAI4rAACOagAAjmwAAI5uAACOcAAAjnMAAI50AACOdQAAjnYAAI53AACOeQAAjnsAAI58AACOfQAAjn8AAI6AAACOywAAju4AAI8OAACPLgAAjzAAAI8yAACPNAAAjzYAAI84AACPOQAAjzoAAI89AACPPgAAj0AAAI9BAACPQwAAj0UAAI9GAACPRwAAj0oAAI9LAACPUAAAj10AAI9iAACPZAAAj2YAAI9rAACPbgAAj3EAAI9zAACPmAAAj7wAAI/jAACQBwAAkAoAAJAMAACQDgAAkBAAAJASAACQFAAAkBUAAJAYAACQJQAAkDYAAJA4AACQOgAAkDwAAJA+AACQQAAAkEIAAJBEAACQRgAAkFcAAJBaAACQXQAAkGAAAJBjAACQZgAAkGkAAJBsAACQbwAAkHEAAJCwAACQsgAAkLQAAJC2AACQuQAAkLoAAJC7AACQvAAAkL0AAJC/AACQwQAAkMIAAJDDAACQxQAAkMYAAJEFAACRBwAAkQkAAJELAACRDgAAkQ8AAJEQAACREQAAkRIAAJEUAACRFgAAkRcAAJEYAACRGgAAkRsAAJFaAACRXAAAkV8AAJFhAACRZAAAkWUAAJFmAACRZwAAkWgAAJFqAACRbAAAkW0AAJFuAACRcAAAkXEAAJF+AACRfwAAkYAAAJGCAACRwQAAkcMAAJHFAACRxwAAkcoAAJHLAACRzAAAkc0AAJHOAACR0AAAkdIAAJHTAACR1AAAkdYAAJHXAACSFgAAkhgAAJIaAACSHAAAkh8AAJIgAACSIQAAkiIAAJIjAACSJQAAkicAAJIoAACSKQAAkisAAJIsAACSawAAkm0AAJJvAACScQAAknQAAJJ1AACSdgAAkncAAJJ4AACSegAAknwAAJJ9AACSfgAAkoAAAJKBAACSwAAAksIAAJLEAACSxgAAkskAAJLKAACSywAAkswAAJLNAACSzwAAktEAAJLSAACS0wAAktUAAJLWAACTFQAAkxcAAJMZAACTGwAAkx4AAJMfAACTIAAAkyEAAJMiAACTJAAAkyYAAJMnAACTKAAAkyoAAJMrAACTUAAAk3QAAJObAACTvwAAk8IAAJPEAACTxgAAk8gAAJPKAACTzAAAk80AAJPQAACT3QAAk+wAAJPuAACT8AAAk/IAAJP0AACT9gAAk/gAAJP6AACUCQAAlAwAAJQPAACUEgAAlBUAAJQYAACUGwAAlB4AAJQgAACUXwAAlGEAAJRkAACUZgAAlGkAAJRqAACUawAAlGwAAJRtAACUbwAAlHEAAJRyAACUcwAAlHUAAJR2AACUtQAAlLcAAJS5AACUuwAAlL4AAJS/AACUwAAAlMEAAJTCAACUxAAAlMYAAJTHAACUyAAAlMoAAJTLAACVCgAAlQwAAJUOAACVEAAAlRMAAJUUAACVFQAAlRYAAJUXAACVGQAAlRsAAJUcAACVHQAAlR8AAJUgAACVXwAAlWEAAJVkAACVZgAAlWkAAJVqAACVawAAlWwAAJVtAACVbwAAlXEAAJVyAACVcwAAlXUAAJV2AACVtQAAlbcAAJW5AACVuwAAlb4AAJW/AACVwAAAlcEAAJXCAACVxAAAlcYAAJXHAACVyAAAlcoAAJXLAACWCgAAlgwAAJYOAACWEAAAlhMAAJYUAACWFQAAlhYAAJYXAACWGQAAlhsAAJYcAACWHQAAlh8AAJYgAACWXwAAlmEAAJZjAACWZQAAlmgAAJZpAACWagAAlmsAAJZsAACWbgAAlnAAAJZxAACWcgAAlnQAAJZ1AACWwAAAluMAAJcDAACXIwAAlyUAAJcnAACXKQAAlysAAJctAACXLgAAly8AAJcyAACXMwAAlzUAAJc2AACXOAAAlzoAAJc7AACXPAAAlz8AAJdAAACXRQAAl1IAAJdXAACXWQAAl1sAAJdgAACXYwAAl2YAAJdoAACXjQAAl7EAAJfYAACX/AAAl/8AAJgBAACYAwAAmAUAAJgHAACYCQAAmAoAAJgNAACYGgAAmCsAAJgtAACYLwAAmDEAAJgzAACYNQAAmDcAAJg5AACYOwAAmEwAAJhPAACYUgAAmFUAAJhYAACYWwAAmF4AAJhhAACYZAAAmGYAAJilAACYpwAAmKkAAJirAACYrgAAmK8AAJiwAACYsQAAmLIAAJi0AACYtgAAmLcAAJi4AACYugAAmLsAAJj6AACY/AAAmP4AAJkAAACZAwAAmQQAAJkFAACZBgAAmQcAAJkJAACZCwAAmQwAAJkNAACZDwAAmRAAAJlPAACZUQAAmVQAAJlWAACZWQAAmVoAAJlbAACZXAAAmV0AAJlfAACZYQAAmWIAAJljAACZZQAAmWYAAJlzAACZdAAAmXUAAJl3AACZtgAAmbgAAJm6AACZvAAAmb8AAJnAAACZwQAAmcIAAJnDAACZxQAAmccAAJnIAACZyQAAmcsAAJnMAACaCwAAmg0AAJoPAACaEQAAmhQAAJoVAACaFgAAmhcAAJoYAACaGgAAmhwAAJodAACaHgAAmiAAAJohAACaYAAAmmIAAJpkAACaZgAAmmkAAJpqAACaawAAmmwAAJptAACabwAAmnEAAJpyAACacwAAmnUAAJp2AACatQAAmrcAAJq5AACauwAAmr4AAJq/AACawAAAmsEAAJrCAACaxAAAmsYAAJrHAACayAAAmsoAAJrLAACbCgAAmwwAAJsOAACbEAAAmxMAAJsUAACbFQAAmxYAAJsXAACbGQAAmxsAAJscAACbHQAAmx8AAJsgAACbRQAAm2kAAJuQAACbtAAAm7cAAJu5AACbuwAAm70AAJu/AACbwQAAm8IAAJvFAACb0gAAm+EAAJvjAACb5QAAm+cAAJvpAACb6wAAm+0AAJvvAACb/gAAnAEAAJwEAACcBwAAnAoAAJwNAACcEAAAnBMAAJwVAACcVAAAnFYAAJxYAACcWgAAnF0AAJxeAACcXwAAnGAAAJxhAACcYwAAnGUAAJxmAACcZwAAnGkAAJxqAACcqQAAnKsAAJytAACcrwAAnLIAAJyzAACctAAAnLUAAJy2AACcuAAAnLoAAJy7AACcvAAAnL4AAJy/AACc/gAAnQAAAJ0CAACdBAAAnQcAAJ0IAACdCQAAnQoAAJ0LAACdDQAAnQ8AAJ0QAACdEQAAnRMAAJ0UAACdUwAAnVUAAJ1XAACdWQAAnVwAAJ1dAACdXgAAnV8AAJ1gAACdYgAAnWQAAJ1lAACdZgAAnWgAAJ1pAACdqAAAnaoAAJ2sAACdrgAAnbEAAJ2yAACdswAAnbQAAJ21AACdtwAAnbkAAJ26AACduwAAnb0AAJ2+AACd/QAAnf8AAJ4BAACeAwAAngYAAJ4HAACeCAAAngkAAJ4KAACeDAAAng4AAJ4PAACeEAAAnhIAAJ4TAACeUgAAnlQAAJ5WAACeWAAAnlsAAJ5cAACeXQAAnl4AAJ5fAACeYQAAnmMAAJ5kAACeZQAAnmcAAJ5oAACeswAAntYAAJ72AACfFgAAnxgAAJ8aAACfHAAAnx4AAJ8gAACfIQAAnyIAAJ8lAACfJgAAnygAAJ8pAACfKwAAny0AAJ8uAACfLwAAnzIAAJ8zAACfOAAAn0UAAJ9KAACfTAAAn04AAJ9TAACfVgAAn1kAAJ9bAACfgAAAn6QAAJ/LAACf7wAAn/IAAJ/0AACf9gAAn/gAAJ/6AACf/AAAn/0AAKAAAACgDQAAoB4AAKAgAACgIgAAoCQAAKAmAACgKAAAoCoAAKAsAACgLgAAoD8AAKBCAACgRQAAoEgAAKBLAACgTgAAoFEAAKBUAACgVwAAoFkAAKCYAACgmgAAoJwAAKCeAACgoQAAoKIAAKCjAACgpAAAoKUAAKCnAACgqQAAoKoAAKCrAACgrQAAoK4AAKDtAACg7wAAoPEAAKDzAACg9gAAoPcAAKD4AACg+QAAoPoAAKD8AACg/gAAoP8AAKEAAAChAgAAoQMAAKFCAAChRAAAoUcAAKFJAAChTAAAoU0AAKFOAAChTwAAoVAAAKFSAAChVAAAoVUAAKFWAAChWAAAoVkAAKFmAAChZwAAoWgAAKFqAAChqQAAoasAAKGtAAChrwAAobIAAKGzAAChtAAAobUAAKG2AAChuAAAoboAAKG7AAChvAAAob4AAKG/AACh/gAAogAAAKICAACiBAAAogcAAKIIAACiCQAAogoAAKILAACiDQAAog8AAKIQAACiEQAAohMAAKIUAACiUwAAolUAAKJXAACiWQAAolwAAKJdAACiXgAAol8AAKJgAACiYgAAomQAAKJlAACiZgAAomgAAKJpAACiqAAAoqoAAKKsAACirgAAorEAAKKyAACiswAAorQAAKK1AACitwAAorkAAKK6AACiuwAAor0AAKK+AACi/QAAov8AAKMBAACjAwAAowYAAKMHAACjCAAAowkAAKMKAACjDAAAow4AAKMPAACjEAAAoxIAAKMTAACjOAAAo1wAAKODAACjpwAAo6oAAKOsAACjrgAAo7AAAKOyAACjtAAAo7UAAKO4AACjxQAAo9QAAKPWAACj2AAAo9oAAKPcAACj3gAAo+AAAKPiAACj8QAAo/QAAKP3AACj+gAAo/0AAKQAAACkAwAApAYAAKQIAACkRwAApEkAAKRMAACkTgAApFEAAKRSAACkUwAApFQAAKRVAACkVwAApFkAAKRaAACkWwAApF0AAKReAACkYAAApJ8AAKShAACkowAApKUAAKSoAACkqQAApKoAAKSrAACkrAAApK4AAKSwAACksQAApLIAAKS0AACktQAApPQAAKT2AACk+AAApPoAAKT9AACk/gAApP8AAKUAAAClAQAApQMAAKUFAAClBgAApQcAAKUJAAClCgAApUkAAKVLAAClTgAApVAAAKVTAAClVAAApVUAAKVWAAClVwAApVkAAKVbAAClXAAApV0AAKVfAAClYAAApWMAAKWiAAClpAAApaYAAKWoAAClqwAApawAAKWtAAClrgAApa8AAKWxAAClswAApbQAAKW1AACltwAApbgAAKX3AACl+QAApfsAAKX9AACmAAAApgEAAKYCAACmAwAApgQAAKYGAACmCAAApgkAAKYKAACmDAAApg0AAKZMAACmTgAAplAAAKZSAACmVQAAplYAAKZXAACmWAAAplkAAKZbAACmXQAApl4AAKZfAACmYQAApmIAAKatAACm0AAApvAAAKcQAACnEgAApxQAAKcWAACnGAAApxoAAKcbAACnHAAApx8AAKcgAACnIgAApyMAAKclAACnJwAApygAAKcpAACnLAAApy0AAKc2AACnQwAAp0gAAKdKAACnTAAAp1EAAKdUAACnVwAAp1kAAKd+AACnogAAp8kAAKftAACn8AAAp/IAAKf0AACn9gAAp/gAAKf6AACn+wAAp/4AAKgLAACoHAAAqB4AAKggAACoIgAAqCQAAKgmAACoKAAAqCoAAKgsAACoPQAAqEAAAKhDAACoRgAAqEkAAKhMAACoTwAAqFIAAKhVAACoVwAAqJYAAKiYAAComgAAqJwAAKifAACooAAAqKEAAKiiAACoowAAqKUAAKinAACoqAAAqKkAAKirAACorAAAqOsAAKjtAACo7wAAqPEAAKj0AACo9QAAqPYAAKj3AACo+AAAqPoAAKj8AACo/QAAqP4AAKkAAACpAQAAqUAAAKlCAACpRQAAqUcAAKlKAACpSwAAqUwAAKlNAACpTgAAqVAAAKlSAACpUwAAqVQAAKlWAACpVwAAqWQAAKllAACpZgAAqWgAAKmnAACpqQAAqasAAKmtAACpsAAAqbEAAKmyAACpswAAqbQAAKm2AACpuAAAqbkAAKm6AACpvAAAqb0AAKn8AACp/gAAqgAAAKoCAACqBQAAqgYAAKoHAACqCAAAqgkAAKoLAACqDQAAqg4AAKoPAACqEQAAqhIAAKpRAACqUwAAqlUAAKpXAACqWgAAqlsAAKpcAACqXQAAql4AAKpgAACqYgAAqmMAAKpkAACqZgAAqmcAAKqmAACqqAAAqqoAAKqsAACqrwAAqrAAAKqxAACqsgAAqrMAAKq1AACqtwAAqrgAAKq5AACquwAAqrwAAKr7AACq/QAAqv8AAKsBAACrBAAAqwUAAKsGAACrBwAAqwgAAKsKAACrDAAAqw0AAKsOAACrEAAAqxEAAKs2AACrWgAAq4EAAKulAACrqAAAq6oAAKusAACrrgAAq7AAAKuyAACrswAAq7YAAKvDAACr0gAAq9QAAKvWAACr2AAAq9oAAKvcAACr3gAAq+AAAKvvAACr8gAAq/UAAKv4AACr+wAAq/4AAKwBAACsBAAArAYAAKxFAACsRwAArEoAAKxMAACsTwAArFAAAKxRAACsUgAArFMAAKxVAACsVwAArFgAAKxZAACsWwAArFwAAKybAACsnQAArJ8AAKyhAACspAAArKUAAKymAACspwAArKgAAKyqAACsrAAArK0AAKyuAACssAAArLEAAKzwAACs8gAArPQAAKz2AACs+QAArPoAAKz7AACs/AAArP0AAKz/AACtAQAArQIAAK0DAACtBQAArQYAAK1FAACtRwAArUoAAK1MAACtTwAArVAAAK1RAACtUgAArVMAAK1VAACtVwAArVgAAK1ZAACtWwAArVwAAK2bAACtnQAArZ8AAK2hAACtpAAAraUAAK2mAACtpwAAragAAK2qAACtrAAAra0AAK2uAACtsAAArbEAAK3wAACt8gAArfQAAK32AACt+QAArfoAAK37AACt/AAArf0AAK3/AACuAQAArgIAAK4DAACuBQAArgYAAK5FAACuRwAArkkAAK5LAACuTgAArk8AAK5QAACuUQAArlIAAK5UAACuVgAArlcAAK5YAACuWgAArlsAAK6mAACuyQAArukAAK8JAACvCwAArw0AAK8PAACvEQAArxMAAK8UAACvFQAArxgAAK8ZAACvGwAArxwAAK8eAACvIAAAryEAAK8iAACvJQAAryYAAK8vAACvPAAAr0EAAK9DAACvRQAAr0oAAK9NAACvUAAAr1IAAK93AACvmwAAr8IAAK/mAACv6QAAr+sAAK/tAACv7wAAr/EAAK/zAACv9AAAr/cAALAEAACwFQAAsBcAALAZAACwGwAAsB0AALAfAACwIQAAsCMAALAlAACwNgAAsDkAALA8AACwPwAAsEIAALBFAACwSAAAsEsAALBOAACwUAAAsI8AALCRAACwkwAAsJUAALCYAACwmQAAsJoAALCbAACwnAAAsJ4AALCgAACwoQAAsKIAALCkAACwpQAAsOQAALDmAACw6AAAsOoAALDtAACw7gAAsO8AALDwAACw8QAAsPMAALD1AACw9gAAsPcAALD5AACw+gAAsTkAALE7AACxPgAAsUAAALFDAACxRAAAsUUAALFGAACxRwAAsUkAALFLAACxTAAAsU0AALFPAACxUAAAsV0AALFeAACxXwAAsWEAALGgAACxogAAsaQAALGmAACxqQAAsaoAALGrAACxrAAAsa0AALGvAACxsQAAsbIAALGzAACxtQAAsbYAALH1AACx9wAAsfkAALH7AACx/gAAsf8AALIAAACyAQAAsgIAALIEAACyBgAAsgcAALIIAACyCgAAsgsAALJKAACyTAAAsk4AALJQAACyUwAAslQAALJVAACyVgAAslcAALJZAACyWwAAslwAALJdAACyXwAAsmAAALKfAACyoQAAsqMAALKlAACyqAAAsqkAALKqAACyqwAAsqwAALKuAACysAAAsrEAALKyAACytAAAsrUAALL0AACy9gAAsvgAALL6AACy/QAAsv4AALL/AACzAAAAswEAALMDAACzBQAAswYAALMHAACzCQAAswoAALMvAACzUwAAs3oAALOeAACzoQAAs6MAALOlAACzpwAAs6kAALOrAACzrAAAs68AALO8AACzywAAs80AALPPAACz0QAAs9MAALPVAACz1wAAs9kAALPoAACz6wAAs+4AALPxAACz9AAAs/cAALP6AACz/QAAs/8AALQ+AAC0QAAAtEIAALREAAC0RwAAtEgAALRJAAC0SgAAtEsAALRNAAC0TwAAtFAAALRRAAC0UwAAtFQAALSTAAC0lQAAtJcAALSZAAC0nAAAtJ0AALSeAAC0nwAAtKAAALSiAAC0pAAAtKUAALSmAAC0qAAAtKkAALToAAC06gAAtOwAALTuAAC08QAAtPIAALTzAAC09AAAtPUAALT3AAC0+QAAtPoAALT7AAC0/QAAtP4AALU9AAC1PwAAtUEAALVDAAC1RgAAtUcAALVIAAC1SQAAtUoAALVMAAC1TgAAtU8AALVQAAC1UgAAtVMAALWSAAC1lAAAtZYAALWYAAC1mwAAtZwAALWdAAC1ngAAtZ8AALWhAAC1owAAtaQAALWlAAC1pwAAtagAALXnAAC16QAAtesAALXtAAC18AAAtfEAALXyAAC18wAAtfQAALX2AAC1+AAAtfkAALX6AAC1/AAAtf0AALY8AAC2PgAAtkAAALZCAAC2RQAAtkYAALZHAAC2SAAAtkkAALZLAAC2TQAAtk4AALZPAAC2UQAAtlIAALadAAC2wAAAtuAAALcAAAC3AgAAtwQAALcGAAC3CAAAtwoAALcLAAC3DAAAtw8AALcQAAC3EgAAtxMAALcVAAC3FwAAtxgAALcZAAC3HAAAtx0AALciAAC3LwAAtzQAALc2AAC3OAAAtz0AALdAAAC3QwAAt0UAALdqAAC3jgAAt7UAALfZAAC33AAAt94AALfgAAC34gAAt+QAALfmAAC35wAAt+oAALf3AAC4CAAAuAoAALgMAAC4DgAAuBAAALgSAAC4FAAAuBYAALgYAAC4KQAAuCwAALgvAAC4MgAAuDUAALg4AAC4OwAAuD4AALhBAAC4QwAAuIIAALiEAAC4hgAAuIgAALiLAAC4jAAAuI0AALiOAAC4jwAAuJEAALiTAAC4lAAAuJUAALiXAAC4mAAAuNcAALjZAAC42wAAuN0AALjgAAC44QAAuOIAALjjAAC45AAAuOYAALjoAAC46QAAuOoAALjsAAC47QAAuSwAALkuAAC5MQAAuTMAALk2AAC5NwAAuTgAALk5AAC5OgAAuTwAALk+AAC5PwAAuUAAALlCAAC5QwAAuVAAALlRAAC5UgAAuVQAALmTAAC5lQAAuZcAALmZAAC5nAAAuZ0AALmeAAC5nwAAuaAAALmiAAC5pAAAuaUAALmmAAC5qAAAuakAALnoAAC56gAAuewAALnuAAC58QAAufIAALnzAAC59AAAufUAALn3AAC5+QAAufoAALn7AAC5/QAAuf4AALo9AAC6PwAAukEAALpDAAC6RgAAukcAALpIAAC6SQAAukoAALpMAAC6TgAAuk8AALpQAAC6UgAAulMAALqSAAC6lAAAupYAALqYAAC6mwAAupwAALqdAAC6ngAAup8AALqhAAC6owAAuqQAALqlAAC6pwAAuqgAALrnAAC66QAAuusAALrtAAC68AAAuvEAALryAAC68wAAuvQAALr2AAC6+AAAuvkAALr6AAC6/AAAuv0AALsiAAC7RgAAu20AALuRAAC7lAAAu5YAALuYAAC7mgAAu5wAALueAAC7nwAAu6IAALuvAAC7vgAAu8AAALvCAAC7xAAAu8YAALvIAAC7ygAAu8wAALvbAAC73gAAu+EAALvkAAC75wAAu+oAALvtAAC78AAAu/IAALwxAAC8MwAAvDUAALw3AAC8OgAAvDsAALw8AAC8PQAAvD4AALxAAAC8QgAAvEMAALxEAAC8RgAAvEcAALyGAAC8iAAAvIoAALyMAAC8jwAAvJAAALyRAAC8kgAAvJMAALyVAAC8lwAAvJgAALyZAAC8mwAAvJwAALzbAAC83QAAvN8AALzhAAC85AAAvOUAALzmAAC85wAAvOgAALzqAAC87AAAvO0AALzuAAC88AAAvPEAAL0wAAC9MgAAvTUAAL03AAC9OgAAvTsAAL08AAC9PQAAvT4AAL1AAAC9QgAAvUMAAL1EAAC9RgAAvUcAAL1KAAC9iQAAvYsAAL2NAAC9jwAAvZIAAL2TAAC9lAAAvZUAAL2WAAC9mAAAvZoAAL2bAAC9nAAAvZ4AAL2fAAC93gAAveAAAL3iAAC95AAAvecAAL3oAAC96QAAveoAAL3rAAC97QAAve8AAL3wAAC98QAAvfMAAL30AAC+MwAAvjUAAL43AAC+OQAAvjwAAL49AAC+PgAAvj8AAL5AAAC+QgAAvkQAAL5FAAC+RgAAvkgAAL5JAAC+lAAAvrcAAL7XAAC+9wAAvvkAAL77AAC+/QAAvv8AAL8BAAC/AgAAvwMAAL8GAAC/BwAAvwkAAL8KAAC/DAAAvw4AAL8PAAC/EAAAvxMAAL8UAAC/GQAAvyYAAL8rAAC/LQAAvy8AAL80AAC/NwAAvzoAAL88AAC/YQAAv4UAAL+sAAC/0AAAv9MAAL/VAAC/1wAAv9kAAL/bAAC/3QAAv94AAL/hAAC/7gAAv/8AAMABAADAAwAAwAUAAMAHAADACQAAwAsAAMANAADADwAAwCAAAMAjAADAJgAAwCkAAMAsAADALwAAwDIAAMA1AADAOAAAwDoAAMB5AADAewAAwH0AAMB/AADAggAAwIMAAMCEAADAhQAAwIYAAMCIAADAigAAwIsAAMCMAADAjgAAwI8AAMDOAADA0AAAwNIAAMDUAADA1wAAwNgAAMDZAADA2gAAwNsAAMDdAADA3wAAwOAAAMDhAADA4wAAwOQAAMEjAADBJQAAwSgAAMEqAADBLQAAwS4AAMEvAADBMAAAwTEAAMEzAADBNQAAwTYAAME3AADBOQAAwToAAMFHAADBSAAAwUkAAMFLAADBigAAwYwAAMGOAADBkAAAwZMAAMGUAADBlQAAwZYAAMGXAADBmQAAwZsAAMGcAADBnQAAwZ8AAMGgAADB3wAAweEAAMHjAADB5QAAwegAAMHpAADB6gAAwesAAMHsAADB7gAAwfAAAMHxAADB8gAAwfQAAMH1AADCNAAAwjYAAMI4AADCOgAAwj0AAMI+AADCPwAAwkAAAMJBAADCQwAAwkUAAMJGAADCRwAAwkkAAMJKAADCiQAAwosAAMKNAADCjwAAwpIAAMKTAADClAAAwpUAAMKWAADCmAAAwpoAAMKbAADCnAAAwp4AAMKfAADC3gAAwuAAAMLiAADC5AAAwucAAMLoAADC6QAAwuoAAMLrAADC7QAAwu8AAMLwAADC8QAAwvMAAML0AADDGQAAwz0AAMNkAADDiAAAw4sAAMONAADDjwAAw5EAAMOTAADDlQAAw5YAAMOZAADDpgAAw7UAAMO3AADDuQAAw7sAAMO9AADDvwAAw8EAAMPDAADD0gAAw9UAAMPYAADD2wAAw94AAMPhAADD5AAAw+cAAMPpAADEKAAAxCoAAMQsAADELgAAxDEAAMQyAADEMwAAxDQAAMQ1AADENwAAxDkAAMQ6AADEOwAAxD0AAMQ+AADEfQAAxH8AAMSBAADEgwAAxIYAAMSHAADEiAAAxIkAAMSKAADEjAAAxI4AAMSPAADEkAAAxJIAAMSTAADE0gAAxNQAAMTWAADE2AAAxNsAAMTcAADE3QAAxN4AAMTfAADE4QAAxOMAAMTkAADE5QAAxOcAAMToAADFJwAAxSkAAMUsAADFLgAAxTEAAMUyAADFMwAAxTQAAMU1AADFNwAAxTkAAMU6AADFOwAAxT0AAMU+AADFgQAAxaUAAMXJAADF7AAAxhMAAMYzAADGWgAAxoEAAMahAADGxQAAxukAAMbrAADG7gAAxvAAAMbyAADG9AAAxvcAAMb6AADG/AAAxv4AAMcBAADHAwAAxwUAAMcIAADHCwAAxwwAAMcVAADHIgAAxyUAAMcnAADHKgAAxy0AAMcvAADHVAAAx3gAAMefAADHwwAAx8YAAMfIAADHygAAx8wAAMfOAADH0AAAx9EAAMfUAADH4QAAx/QAAMf2AADH+AAAx/oAAMf8AADH/gAAyAAAAMgCAADIBAAAyAYAAMgZAADIHAAAyB8AAMgiAADIJQAAyCgAAMgrAADILgAAyDEAAMg0AADINgAAyHUAAMh3AADIegAAyHwAAMh/AADIgAAAyIEAAMiCAADIgwAAyIUAAMiHAADIiAAAyIkAAMiLAADIjAAAyJUAAMiWAADImAAAyNcAAMjZAADI2wAAyN0AAMjgAADI4QAAyOIAAMjjAADI5AAAyOYAAMjoAADI6QAAyOoAAMjsAADI7QAAySwAAMkuAADJMQAAyTMAAMk2AADJNwAAyTgAAMk5AADJOgAAyTwAAMk+AADJPwAAyUAAAMlCAADJQwAAyUwAAMlNAADJTwAAyY4AAMmQAADJkgAAyZQAAMmXAADJmAAAyZkAAMmaAADJmwAAyZ0AAMmfAADJoAAAyaEAAMmjAADJpAAAyeMAAMnlAADJ6AAAyeoAAMntAADJ7gAAye8AAMnwAADJ8QAAyfMAAMn1AADJ9gAAyfcAAMn5AADJ+gAAygMAAMoEAADKBgAAykUAAMpHAADKSQAAyksAAMpOAADKTwAAylAAAMpRAADKUgAAylQAAMpWAADKVwAAylgAAMpaAADKWwAAypoAAMqcAADKnwAAyqEAAMqkAADKpQAAyqYAAMqnAADKqAAAyqoAAMqsAADKrQAAyq4AAMqwAADKsQAAyr4AAMq/AADKwAAAysIAAMsBAADLAwAAywUAAMsHAADLCgAAywsAAMsMAADLDQAAyw4AAMsQAADLEgAAyxMAAMsUAADLFgAAyxcAAMtWAADLWAAAy1oAAMtcAADLXwAAy2AAAMthAADLYgAAy2MAAMtlAADLZwAAy2gAAMtpAADLawAAy2wAAMt5AADLggAAy4UAAMuHAADLigAAy40AAMuWAADLmQAAy5wAAMufAADLogAAy6QAAMuzAADLxQAAy9IAAMwdAADMQAAAzGAAAMyAAADMggAAzIQAAMyGAADMiAAAzIsAAMyMAADMjQAAzJAAAMyRAADMkwAAzJQAAMyWAADMmQAAzJoAAMybAADMngAAzJ8AAMykAADMsQAAzLYAAMy4AADMugAAzL8AAMzCAADMxQAAzMcAAMzsAADNEAAAzTcAAM1bAADNXgAAzWAAAM1iAADNZAAAzWYAAM1oAADNaQAAzWwAAM15AADNigAAzYwAAM2OAADNkAAAzZIAAM2UAADNlgAAzZgAAM2aAADNqwAAza4AAM2xAADNtAAAzbcAAM26AADNvQAAzcAAAM3DAADNxQAAzgQAAM4GAADOCAAAzgoAAM4NAADODgAAzg8AAM4QAADOEQAAzhMAAM4VAADOFgAAzhcAAM4ZAADOGgAAzlkAAM5bAADOXQAAzl8AAM5iAADOYwAAzmQAAM5lAADOZgAAzmgAAM5qAADOawAAzmwAAM5uAADObwAAzq4AAM6wAADOswAAzrUAAM64AADOuQAAzroAAM67AADOvAAAzr4AAM7AAADOwQAAzsIAAM7EAADOxQAAztIAAM7TAADO1AAAztYAAM8VAADPFwAAzxkAAM8bAADPHgAAzx8AAM8gAADPIQAAzyIAAM8kAADPJgAAzycAAM8oAADPKgAAzysAAM9qAADPbAAAz24AAM9wAADPcwAAz3QAAM91AADPdgAAz3cAAM95AADPewAAz3wAAM99AADPfwAAz4AAAM+/AADPwQAAz8MAAM/FAADPyAAAz8kAAM/KAADPywAAz8wAAM/OAADP0AAAz9EAAM/SAADP1AAAz9UAANAUAADQFgAA0BgAANAaAADQHQAA0B4AANAfAADQIAAA0CEAANAjAADQJQAA0CYAANAnAADQKQAA0CoAANBpAADQawAA0G0AANBvAADQcgAA0HMAANB0AADQdQAA0HYAANB4AADQegAA0HsAANB8AADQfgAA0H8AANCkAADQyAAA0O8AANETAADRFgAA0RgAANEaAADRHAAA0R4AANEgAADRIQAA0SQAANExAADRQAAA0UIAANFEAADRRgAA0UgAANFKAADRTAAA0U4AANFdAADRYAAA0WMAANFmAADRaQAA0WwAANFvAADRcgAA0XQAANGzAADRtQAA0bcAANG5AADRvAAA0b0AANG+AADRvwAA0cAAANHCAADRxAAA0cUAANHGAADRyAAA0ckAANIIAADSCgAA0gwAANIOAADSEQAA0hIAANITAADSFAAA0hUAANIXAADSGQAA0hoAANIbAADSHQAA0h4AANJdAADSXwAA0mEAANJjAADSZgAA0mcAANJoAADSaQAA0moAANJsAADSbgAA0m8AANJwAADScgAA0nMAANKyAADStAAA0rYAANK4AADSuwAA0rwAANK9AADSvgAA0r8AANLBAADSwwAA0sQAANLFAADSxwAA0sgAANMHAADTCQAA0wsAANMNAADTEAAA0xEAANMSAADTEwAA0xQAANMWAADTGAAA0xkAANMaAADTHAAA0x0AANNcAADTXgAA02AAANNiAADTZQAA02YAANNnAADTaAAA02kAANNrAADTbQAA024AANNvAADTcQAA03IAANOxAADTswAA07YAANO4AADTuwAA07wAANO9AADTvgAA078AANPBAADTwwAA08QAANPFAADTxwAA08gAANQTAADUNgAA1FYAANR2AADUeAAA1HoAANR8AADUfgAA1IEAANSCAADUgwAA1IYAANSHAADUiQAA1IoAANSMAADUjgAA1I8AANSQAADUkwAA1JQAANSZAADUpgAA1KsAANStAADUrwAA1LQAANS3AADUugAA1LwAANThAADVBQAA1SwAANVQAADVUwAA1VUAANVXAADVWQAA1VsAANVdAADVXgAA1WEAANVuAADVfwAA1YEAANWDAADVhQAA1YcAANWJAADViwAA1Y0AANWPAADVoAAA1aMAANWmAADVqQAA1awAANWvAADVsgAA1bUAANW4AADVugAA1fkAANX7AADV/QAA1f8AANYCAADWAwAA1gQAANYFAADWBgAA1ggAANYKAADWCwAA1gwAANYOAADWDwAA1k4AANZQAADWUgAA1lQAANZXAADWWAAA1lkAANZaAADWWwAA1l0AANZfAADWYAAA1mEAANZjAADWZAAA1qMAANalAADWqAAA1qoAANatAADWrgAA1q8AANawAADWsQAA1rMAANa1AADWtgAA1rcAANa5AADWugAA1scAANbIAADWyQAA1ssAANcKAADXDAAA1w4AANcQAADXEwAA1xQAANcVAADXFgAA1xcAANcZAADXGwAA1xwAANcdAADXHwAA1yAAANdfAADXYQAA12MAANdlAADXaAAA12kAANdqAADXawAA12wAANduAADXcAAA13EAANdyAADXdAAA13UAANe0AADXtgAA17gAANe6AADXvQAA174AANe/AADXwAAA18EAANfDAADXxQAA18YAANfHAADXyQAA18oAANgJAADYCwAA2A0AANgPAADYEgAA2BMAANgUAADYFQAA2BYAANgYAADYGgAA2BsAANgcAADYHgAA2B8AANheAADYYAAA2GIAANhkAADYZwAA2GgAANhpAADYagAA2GsAANhtAADYbwAA2HAAANhxAADYcwAA2HQAANiZAADYvQAA2OQAANkIAADZCwAA2Q0AANkPAADZEQAA2RMAANkVAADZFgAA2RkAANkmAADZNQAA2TcAANk5AADZOwAA2T0AANk/AADZQQAA2UMAANlSAADZVQAA2VgAANlbAADZXgAA2WEAANlkAADZZwAA2WkAANmoAADZqgAA2awAANmuAADZsQAA2bIAANmzAADZtAAA2bUAANm3AADZuQAA2boAANm7AADZvQAA2b4AANn9AADZ/wAA2gEAANoDAADaBgAA2gcAANoIAADaCQAA2goAANoMAADaDgAA2g8AANoQAADaEgAA2hMAANpSAADaVAAA2lYAANpYAADaWwAA2lwAANpdAADaXgAA2l8AANphAADaYwAA2mQAANplAADaZwAA2mgAANqnAADaqQAA2qsAANqtAADasAAA2rEAANqyAADaswAA2rQAANq2AADauAAA2rkAANq6AADavAAA2r0AANr8AADa/gAA2wAAANsCAADbBQAA2wYAANsHAADbCAAA2wkAANsLAADbDQAA2w4AANsPAADbEQAA2xIAANtRAADbUwAA21UAANtXAADbWgAA21sAANtcAADbXQAA214AANtgAADbYgAA22MAANtkAADbZgAA22cAANumAADbqAAA26sAANutAADbsAAA27EAANuyAADbswAA27QAANu2AADbuAAA27kAANu6AADbvAAA270AANwIAADcKwAA3EsAANxrAADcbQAA3G8AANxxAADccwAA3HUAANx2AADcdwAA3HoAANx7AADcfQAA3H4AANyAAADcggAA3IMAANyEAADchwAA3IgAANyNAADcmgAA3J8AANyhAADcowAA3KgAANyrAADcrgAA3LAAANzVAADc+QAA3SAAAN1EAADdRwAA3UkAAN1LAADdTQAA3U8AAN1RAADdUgAA3VUAAN1iAADdcwAA3XUAAN13AADdeQAA3XsAAN19AADdfwAA3YEAAN2DAADdlAAA3ZcAAN2aAADdnQAA3aAAAN2jAADdpgAA3akAAN2sAADdrgAA3e0AAN3vAADd8QAA3fMAAN32AADd9wAA3fgAAN35AADd+gAA3fwAAN3+AADd/wAA3gAAAN4CAADeAwAA3kIAAN5EAADeRgAA3kgAAN5LAADeTAAA3k0AAN5OAADeTwAA3lEAAN5TAADeVAAA3lUAAN5XAADeWAAA3pcAAN6ZAADenAAA3p4AAN6hAADeogAA3qMAAN6kAADepQAA3qcAAN6pAADeqgAA3qsAAN6tAADergAA3rsAAN68AADevQAA3r8AAN7+AADfAAAA3wIAAN8EAADfBwAA3wgAAN8JAADfCgAA3wsAAN8NAADfDwAA3xAAAN8RAADfEwAA3xQAAN9TAADfVQAA31cAAN9ZAADfXAAA310AAN9eAADfXwAA32AAAN9iAADfZAAA32UAAN9mAADfaAAA32kAAN+oAADfqgAA36wAAN+uAADfsQAA37IAAN+zAADftAAA37UAAN+3AADfuQAA37oAAN+7AADfvQAA374AAN/9AADf/wAA4AEAAOADAADgBgAA4AcAAOAIAADgCQAA4AoAAOAMAADgDgAA4A8AAOAQAADgEgAA4BMAAOBSAADgVAAA4FYAAOBYAADgWwAA4FwAAOBdAADgXgAA4F8AAOBhAADgYwAA4GQAAOBlAADgZwAA4GgAAOCNAADgsQAA4NgAAOD8AADg/wAA4QEAAOEDAADhBQAA4QcAAOEJAADhCgAA4Q0AAOEaAADhKQAA4SsAAOEtAADhLwAA4TEAAOEzAADhNQAA4TcAAOFGAADhSQAA4UwAAOFPAADhUgAA4VUAAOFYAADhWwAA4V0AAOGcAADhngAA4aAAAOGiAADhpQAA4aY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AAQAdAAEAIAABACEAAQAiAAEAIwABACQAAQAmAAEAKAABACkAAQAqAAEALAABAC0AAQBsAAEAbgABAHAAAQByAAEAdQABAHYAAQB3AAEAeAABAHkAAQB7AAEAfQABAH4AAQB/AAEAgQABAIIAAQDBAAEAwwABAMUAAQDHAAEAygABAMsAAQDMAAEAzQABAM4AAQDQAAEA0gABANMAAQDUAAEA1gABANcAAQEWAAEBGAABARoAAQEcAAEBHwABASAAAQEhAAEBIgABASMAAQElAAEBJwABASgAAQEpAAEBKwABASwAAQFRAAEBdQABAZwAAQHAAAEBwwABAcUAAQHHAAEByQABAcsAAQHNAAEBzgABAdEAAQHeAAEB7QABAe8AAQHxAAEB8wABAfUAAQH3AAEB+QABAfsAAQIKAAECDQABAhAAAQITAAECFgABAhkAAQIcAAECHwABAiEAAQJgAAECYgABAmQAAQJmAAECaQABAmoAAQJrAAECbAABAm0AAQJvAAECcQABAnIAAQJzAAECdQABAnYAAQK1AAECtwABArkAAQK7AAECvgABAr8AAQLAAAECwQABAsIAAQLEAAECxgABAscAAQLIAAECygABAssAAQMKAAEDDAABAw4AAQMQAAEDEwABAxQAAQMVAAEDFgABAxcAAQMZAAEDGwABAxwAAQMdAAEDHwABAyAAAQNfAAEDYQABA2MAAQNlAAEDaAABA2kAAQNqAAEDawABA2wAAQNuAAEDcAABA3EAAQNyAAEDdAABA3UAAQO0AAEDtgABA7gAAQO6AAEDvQABA74AAQO/AAEDwAABA8EAAQPDAAEDxQABA8YAAQPHAAEDyQABA8oAAQQJAAEECwABBA0AAQQPAAEEEgABBBMAAQQUAAEEFQABBBYAAQQYAAEEGgABBBsAAQQcAAEEHgABBB8AAQReAAEEYAABBGIAAQRkAAEEZwABBGgAAQRpAAEEagABBGsAAQRtAAEEbwABBHAAAQRxAAEEcwABBHQAAQS/AAEE4gABBQIAAQUiAAEFJAABBSYAAQUoAAEFKgABBS0AAQUuAAEFLwABBTIAAQUzAAEFNQABBTYAAQU4AAEFOwABBTwAAQU9AAEFQAABBUEAAQVGAAEFUwABBVgAAQVaAAEFXAABBWEAAQVkAAEFZwABBWkAAQWOAAEFsgABBdk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AARC7AAEQvAABEL0AARC/AAEQwQABEMIAARDDAAEQxQABEMYAARDcAAERGwABER0AAREfAAERIQABESQAARElAAERJgABEScAAREoAAERKgABESwAAREtAAERLgABETAAARExAAERVgABEXoAARGhAAERxQABEcgAARHKAAERzAABEc4AARHQAAER0gABEdMAARHWAAER4wABEfIAARH0AAER9gABEfgAARH6AAER/AABEf4AARIAAAESDwABEhIAARIVAAESGAABEhsAARIeAAESIQABEiQAARImAAESZQABEmcAARJpAAESawABEm4AARJvAAEScAABEnEAARJyAAESdAABEnYAARJ3AAESeAABEnoAARJ7AAESugABErwAARK+AAESwAABEsMAARLEAAESxQABEsYAARLHAAESyQABEssAARLMAAESzQABEs8AARLQAAETDwABExEAARMTAAETFQABExgAARMZAAETGgABExsAARMcAAETHgABEyAAARMhAAETIgABEyQAARMlAAETZAABE2YAARNoAAETagABE20AARNuAAETbwABE3AAARNxAAETcwABE3UAARN2AAETdwABE3kAARN6AAETuQABE7sAARO9AAETvwABE8IAARPDAAETxAABE8UAARPGAAETyAABE8oAARPLAAETzAABE84AARPPAAEUDgABFBAAARQSAAEUFAABFBcAARQYAAEUGQABFBoAARQbAAEUHQABFB8AARQgAAEUIQABFCMAARQkAAEUYwABFGUAARRnAAEUaQABFGwAARRtAAEUbgABFG8AARRwAAEUcgABFHQAARR1AAEUdgABFHgAARR5AAEUxAABFOcAARUHAAEVJwABFSkAARUrAAEVLQABFS8AARUyAAEVMwABFTQAARU3AAEVOAABFToAARU7AAEVPQABFUAAARVBAAEVQgABFUUAARVGAAEVSwABFVgAARVdAAEVXwABFWEAARVmAAEVaQABFWwAARVuAAEVkwABFbcAARXeAAEWAgABFgUAARYHAAEWCQABFgsAARYNAAEWDwABFhAAARYTAAEWIAABFjEAARYzAAEWNQABFjcAARY5AAEWOwABFj0AARY/AAEWQQABFlIAARZVAAEWWAABFlsAARZeAAEWYQABFmQAARZnAAEWagABFmwAARarAAEWrQABFq8AARaxAAEWtAABFrUAARa2AAEWtwABFrgAARa6AAEWvAABFr0AARa+AAEWwAABFsEAARcAAAEXAgABFwQAARcGAAEXCQABFwoAARcLAAEXDAABFw0AARcPAAEXEQABFxIAARcTAAEXFQABFxYAARdVAAEXVwABF1oAARdcAAEXXwABF2AAARdhAAEXYgABF2MAARdlAAEXZwABF2gAARdpAAEXawABF2wAARd5AAEXegABF3sAARd9AAEXvAABF74AARfAAAEXwgABF8UAARfGAAEXxwABF8gAARfJAAEXywABF80AARfOAAEXzwABF9EAARfSAAEYEQABGBMAARgVAAEYFwABGBoAARgbAAEYHAABGB0AARgeAAEYIAABGCIAARgjAAEYJAABGCYAARgnAAEYZgABGGgAARhqAAEYbAABGG8AARhwAAEYcQABGHIAARhzAAEYdQABGHcAARh4AAEYeQABGHsAARh8AAEYuwABGL0AARi/AAEYwQABGMQAARjFAAEYxgABGMcAARjIAAEYygABGMwAARjNAAEYzgABGNAAARjRAAEZEAABGRIAARkUAAEZFgABGRkAARkaAAEZGwABGRwAARkdAAEZHwABGSEAARkiAAEZIwABGSUAARkmAAEZSwABGW8AARmWAAEZugABGb0AARm/AAEZwQABGcMAARnFAAEZxwABGcgAARnLAAEZ2AABGecAARnpAAEZ6wABGe0AARnvAAEZ8QABGfMAARn1AAEaBAABGgcAARoKAAEaDQABGhAAARoTAAEaFgABGhkAARobAAEaWgABGlwAARpeAAEaYAABGmMAARpkAAEaZQABGmYAARpnAAEaaQABGmsAARpsAAEabQABGm8AARpwAAEarwABGrEAARqzAAEatQABGrgAARq5AAEaugABGrsAARq8AAEavgABGsAAARrBAAEawgABGsQAARrFAAEbBAABGwYAARsIAAEbCgABGw0AARsOAAEbDwABGxAAARsRAAEbEwABGxUAARsWAAEbFwABGxkAARsaAAEbWQABG1sAARtdAAEbXwABG2IAARtjAAEbZAABG2UAARtmAAEbaAABG2oAARtrAAEbbAABG24AARtvAAEbrgABG7AAARuyAAEbtAABG7cAARu4AAEbuQABG7oAARu7AAEbvQABG78AARvAAAEbwQABG8MAARvEAAEcAwABHAUAARwHAAEcCQABHAwAARwNAAEcDgABHA8AARwQAAEcEgABHBQAARwVAAEcFgABHBgAARwZAAEcWAABHFoAARxcAAEcXgABHGEAARxiAAEcYwABHGQAARxlAAEcZwABHGkAARxqAAEcawABHG0AARxuAAEcuQABHNwAARz8AAEdHAABHR4AAR0gAAEdIgABHSQAAR0nAAEdKAABHSkAAR0sAAEdLQABHS8AAR0wAAEdMgABHTUAAR02AAEdNwABHToAAR07AAEdQAABHU0AAR1SAAEdVAABHVYAAR1bAAEdXgABHWEAAR1jAAEdiAABHawAAR3TAAEd9wABHfoAAR38AAEd/gABHgAAAR4CAAEeBAABHgUAAR4IAAEeFQABHiYAAR4oAAEeKgABHiwAAR4uAAEeMAABHjIAAR40AAEeNgABHkcAAR5KAAEeTQABHlAAAR5TAAEeVgABHlkAAR5cAAEeXwABHmEAAR6gAAEeogABHqQAAR6mAAEeqQABHqoAAR6rAAEerAABHq0AAR6vAAEesQABHrIAAR6zAAEetQABHrYAAR71AAEe9wABHvkAAR77AAEe/gABHv8AAR8AAAEfAQABHwIAAR8EAAEfBgABHwcAAR8IAAEfCgABHwsAAR9KAAEfTAABH08AAR9RAAEfVAABH1UAAR9WAAEfVwABH1gAAR9aAAEfXAABH10AAR9eAAEfYAABH2EAAR9uAAEfbwABH3AAAR9yAAEfsQABH7MAAR+1AAEftwABH7oAAR+7AAEfvAABH70AAR++AAEfwAABH8IAAR/DAAEfxAABH8YAAR/HAAEgBgABIAgAASAKAAEgDAABIA8AASAQAAEgEQABIBIAASATAAEgFQABIBcAASAYAAEgGQABIBsAASAcAAEgWwABIF0AASBfAAEgYQABIGQAASBlAAEgZgABIGcAASBoAAEgagABIGwAASBtAAEgbgABIHAAASBxAAEgsAABILIAASC0AAEgtgABILkAASC6AAEguwABILwAASC9AAEgvwABIMEAASDCAAEgwwABIMUAASDGAAEhBQABIQcAASEJAAEhCwABIQ4AASEPAAEhEAABIREAASESAAEhFAABIRYAASEXAAEhGAABIRoAASEbAAEhQAABIWQAASGLAAEhrwABIbIAASG0AAEhtgABIbgAASG6AAEhvAABIb0AASHAAAEhzQABIdwAASHeAAEh4AABIeIAASHkAAEh5gABIegAASHqAAEh+QABIfwAASH/AAEiAgABIgUAASIIAAEiCwABIg4AASIQAAEiTwABIlEAASJTAAEiVQABIlgAASJZAAEiWgABIlsAASJcAAEiXgABImAAASJhAAEiYgABImQAASJlAAEipAABIqYAASKoAAEiqgABIq0AASKuAAEirwABIrAAASKxAAEiswABIrUAASK2AAEitwABIrkAASK6AAEi+QABIvsAASL9AAEi/wABIwIAASMDAAEjBAABIwUAASMGAAEjCAABIwoAASMLAAEjDAABIw4AASMPAAEjTgABI1AAASNSAAEjVAABI1cAASNYAAEjWQABI1oAASNbAAEjXQABI18AASNgAAEjYQABI2MAASNkAAEjowABI6UAASOnAAEjqQABI6wAASOtAAEjrgABI68AASOwAAEjsgABI7QAASO1AAEjtgABI7gAASO5AAEj+AABI/oAASP8AAEj/gABJAEAASQCAAEkAwABJAQAASQFAAEkBwABJAkAASQKAAEkCwABJA0AASQOAAEkTQABJE8AASRRAAEkUwABJFYAASRXAAEkWAABJFkAASRaAAEkXAABJF4AASRfAAEkYAABJGIAASRjAAEkrgABJNEAASTxAAElEQABJRMAASUVAAElFwABJRkAASUcAAElHQABJR4AASUhAAElIgABJSQAASUlAAElJwABJSoAASUrAAElLAABJS8AASUwAAElNQABJUIAASVHAAElSQABJUsAASVQAAElUwABJVYAASVYAAElfQABJaEAASXIAAEl7AABJe8AASXxAAEl8wABJfUAASX3AAEl+QABJfoAASX9AAEmCgABJhsAASYdAAEmHwABJiEAASYjAAEmJQABJicAASYpAAEmKwABJjwAASY/AAEmQgABJkUAASZIAAEmSwABJk4AASZRAAEmVAABJlYAASaVAAEmlwABJpkAASabAAEmngABJp8AASagAAEmoQABJqIAASakAAEmpgABJqcAASaoAAEmqgABJqsAASbqAAEm7AABJu4AASbwAAEm8wABJvQAASb1AAEm9gABJvcAASb5AAEm+wABJvwAASb9AAEm/wABJwAAASc/AAEnQQABJ0QAASdGAAEnSQABJ0oAASdLAAEnTAABJ00AASdPAAEnUQABJ1IAASdTAAEnVQABJ1YAASdjAAEnZAABJ2UAASdnAAEnpgABJ6gAASeqAAEnrAABJ68AASewAAEnsQABJ7IAASezAAEntQABJ7cAASe4AAEnuQABJ7sAASe8AAEn+wABJ/0AASf/AAEoAQABKAQAASgFAAEoBgABKAcAASgIAAEoCgABKAwAASgNAAEoDgABKBAAASgRAAEoUAABKFIAAShUAAEoVgABKFkAAShaAAEoWwABKFwAAShdAAEoXwABKGEAAShiAAEoYwABKGUAAShmAAEopQABKKcAASipAAEoqwABKK4AASivAAEosAABKLEAASiyAAEotAABKLYAASi3AAEouAABKLoAASi7AAEo+gABKPwAASj+AAEpAAABKQMAASkEAAEpBQABKQYAASkHAAEpCQABKQsAASkMAAEpDQABKQ8AASkQAAEpNQABKVkAASmAAAEppAABKacAASmpAAEpqwABKa0AASmvAAEpsQABKbIAASm1AAEpwgABKdEAASnTAAEp1QABKdcAASnZAAEp2wABKd0AASnfAAEp7gABKfEAASn0AAEp9wABKfoAASn9AAEqAAABKgMAASoFAAEqRAABKkYAASpIAAEqSgABKk0AASpOAAEqTwABKlAAASpRAAEqUwABKlUAASpWAAEqVwABKlkAASpaAAEqmQABKpsAASqdAAEqnwABKqIAASqjAAEqpAABKqUAASqmAAEqqAABKqoAASqrAAEqrAABKq4AASqvAAEq7gABKvAAASryAAEq9AABKvcAASr4AAEq+QABKvoAASr7AAEq/QABKv8AASsAAAErAQABKwMAASsEAAErQwABK0UAAStHAAErSQABK0wAAStNAAErTgABK08AAStQAAErUgABK1QAAStVAAErVgABK1gAAStZAAErmAABK5oAASucAAErngABK6EAASuiAAErowABK6QAASulAAErpwABK6kAASuqAAErqwABK60AASuuAAEr7QABK+8AASvxAAEr8wABK/YAASv3AAEr+AABK/kAASv6AAEr/AABK/4AASv/AAEsAAABLAIAASwDAAEsQgABLEQAASxGAAEsSAABLEsAASxMAAEsTQABLE4AASxPAAEsUQABLFMAASxUAAEsVQABLFcAASxYAAEsowABLMYAASzmAAEtBgABLQgAAS0KAAEtDAABLQ4AAS0RAAEtEgABLRMAAS0WAAEtFwABLRkAAS0aAAEtHAABLR8AAS0gAAEtIQABLSQAAS0lAAEtKgABLTcAAS08AAEtPgABLUAAAS1FAAEtSAABLUsAAS1NAAEtcgABLZYAAS29AAEt4QABLeQAAS3mAAEt6AABLeoAAS3sAAEt7gABLe8AAS3yAAEt/wABLhAAAS4SAAEuFAABLhYAAS4YAAEuGgABLhwAAS4eAAEuIAABLjEAAS40AAEuNwABLjoAAS49AAEuQAABLkMAAS5GAAEuSQABLksAAS6KAAEujAABLo4AAS6QAAEukwABLpQAAS6VAAEulgABLpcAAS6ZAAEumwABLpwAAS6dAAEunwABLqAAAS7fAAEu4QABLuMAAS7lAAEu6AABLukAAS7qAAEu6wABLuwAAS7uAAEu8AABLvEAAS7yAAEu9AABLvUAAS80AAEvNgABLzkAAS87AAEvPgABLz8AAS9AAAEvQQABL0IAAS9EAAEvRgABL0cAAS9IAAEvSgABL0sAAS9YAAEvWQABL1oAAS9cAAEvmwABL50AAS+fAAEvoQABL6QAAS+lAAEvpgABL6cAAS+oAAEvqgABL6wAAS+tAAEvrgABL7AAAS+xAAEv8AABL/IAAS/0AAEv9gABL/kAAS/6AAEv+wABL/wAAS/9AAEv/wABMAEAATACAAEwAwABMAUAATAGAAEwRQABMEcAATBJAAEwSwABME4AATBPAAEwUAABMFEAATBSAAEwVAABMFYAATBXAAEwWAABMFoAATBbAAEwmgABMJwAATCeAAEwoAABMKMAATCkAAEwpQABMKYAATCnAAEwqQABMKsAATCsAAEwrQABMK8AATCwAAEw7wABMPEAATDzAAEw9QABMPgAATD5AAEw+gABMPsAATD8AAEw/gABMQAAATEBAAExAgABMQQAATEFAAExKgABMU4AATF1AAExmQABMZwAATGeAAExoAABMaIAATGkAAExpgABMacAATGqAAExtwABMcYAATHIAAExygABMcwAATHOAAEx0AABMdIAATHUAAEx4wABMeYAATHpAAEx7AABMe8AATHyAAEx9QABMfgAATH6AAEyOQABMjsAATI9AAEyPwABMkIAATJDAAEyRAABMkUAATJGAAEySAABMkoAATJLAAEyTAABMk4AATJPAAEyjgABMpAAATKSAAEylAABMpcAATKYAAEymQABMpoAATKbAAEynQABMp8AATKgAAEyoQABMqMAATKkAAEy4wABMuUAATLnAAEy6QABMuwAATLtAAEy7gABMu8AATLwAAEy8gABMvQAATL1AAEy9gABMvgAATL5AAEzOAABMzoAATM8AAEzPgABM0EAATNCAAEzQwABM0QAATNFAAEzRwABM0kAATNKAAEzSwABM00AATNOAAEzjQABM48AATORAAEzkwABM5YAATOXAAEzmAABM5kAATOaAAEznAABM54AATOfAAEzoAABM6IAATOjAAEz4gABM+QAATPmAAEz6AABM+sAATPsAAEz7QABM+4AATPvAAEz8QABM/MAATP0AAEz9QABM/cAATP4AAE0NwABNDkAATQ7AAE0PQABNEAAATRBAAE0QgABNEMAATREAAE0RgABNEgAATRJAAE0SgABNEwAATRNAAE0mAABNLsAATTbAAE0+wABNP0AATT/AAE1AQABNQMAATUGAAE1BwABNQgAATULAAE1DAABNQ4AATUPAAE1EQABNRQAATUVAAE1FgABNRkAATUaAAE1HwABNSwAATUxAAE1MwABNTUAATU6AAE1PQABNUAAATVCAAE1ZwABNYsAATWyAAE11gABNdkAATXbAAE13QABNd8AATXhAAE14wABNeQAATXnAAE19AABNgUAATYHAAE2CQABNgsAATYNAAE2DwABNhEAATYTAAE2FQABNiYAATYpAAE2LAABNi8AATYyAAE2NQABNjgAATY7AAE2PgABNkAAATZ/AAE2gQABNoMAATaFAAE2iAABNokAATaKAAE2iwABNowAATaOAAE2kAABNpEAATaSAAE2lAABNpUAATbUAAE21gABNtgAATbaAAE23QABNt4AATbfAAE24AABNuEAATbjAAE25QABNuYAATbnAAE26QABNuoAATcpAAE3KwABNy4AATcwAAE3MwABNzQAATc1AAE3NgABNzcAATc5AAE3OwABNzwAATc9AAE3PwABN0AAATdNAAE3TgABN08AATdRAAE3kAABN5IAATeUAAE3lgABN5kAATeaAAE3mwABN5wAATedAAE3nwABN6EAATeiAAE3owABN6UAATemAAE35QABN+cAATfpAAE36wABN+4AATfvAAE38AABN/EAATfyAAE39AABN/YAATf3AAE3+AABN/oAATf7AAE4OgABODwAATg+AAE4QAABOEMAAThEAAE4RQABOEYAAThHAAE4SQABOEsAAThMAAE4TQABOE8AAThQAAE4jwABOJEAATiTAAE4lQABOJgAATiZAAE4mgABOJsAATicAAE4ngABOKAAATihAAE4ogABOKQAATilAAE45AABOOYAATjoAAE46gABOO0AATjuAAE47wABOPAAATjxAAE48wABOPUAATj2AAE49wABOPkAATj6AAE5HwABOUMAATlqAAE5jgABOZEAATmTAAE5lQABOZcAATmZAAE5mwABOZwAATmfAAE5rAABObsAATm9AAE5vwABOcEAATnDAAE5xQABOccAATnJAAE52AABOdsAATneAAE54QABOeQAATnnAAE56gABOe0AATnvAAE6LgABOjAAAToyAAE6NAABOjcAATo4AAE6OQABOjoAATo7AAE6PQABOj8AATpAAAE6QQABOkMAATpEAAE6gwABOoUAATqHAAE6iQABOowAATqNAAE6jgABOo8AATqQAAE6kgABOpQAATqVAAE6lgABOpgAATqZAAE62AABOtoAATrcAAE63gABOuEAATriAAE64wABOuQAATrlAAE65wABOukAATrqAAE66wABOu0AATruAAE7LQABOy8AATsxAAE7MwABOzYAATs3AAE7OAABOzkAATs6AAE7PAABOz4AATs/AAE7QAABO0IAATtDAAE7ggABO4QAATuGAAE7iAABO4sAATuMAAE7jQABO44AATuPAAE7kQABO5MAATuUAAE7lQABO5cAATuYAAE71wABO9kAATvbAAE73QABO+AAATvhAAE74gABO+MAATvkAAE75gABO+gAATvpAAE76gABO+wAATvtAAE8LAABPC4AATwwAAE8MgABPDUAATw2AAE8NwABPDgAATw5AAE8OwABPD0AATw+AAE8PwABPEEAATxCAAE8jQABPLAAATzQAAE88AABPPIAATz0AAE89gABPPgAATz7AAE8/AABPP0AAT0AAAE9AQABPQMAAT0EAAE9BgABPQkAAT0KAAE9CwABPQ4AAT0PAAE9FAABPSEAAT0mAAE9KAABPSoAAT0vAAE9MgABPTUAAT03AAE9XAABPYAAAT2nAAE9ywABPc4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AAU6IAAFOiQABTooAAU6LAAFOjQABTo8AAU6QAAFOkQABTpMAAU6UAAFO0wABTtUAAU7XAAFO2QABTtwAAU7dAAFO3gABTt8AAU7gAAFO4gABTuQAAU7lAAFO5gABTugAAU7pAAFPKAABTyoAAU8tAAFPLwABTzIAAU8zAAFPNAABTzUAAU82AAFPOAABTzoAAU87AAFPPAABTz4AAU8/AAFPTAABT00AAU9OAAFPUAABT48AAU+RAAFPkwABT5UAAU+YAAFPmQABT5oAAU+bAAFPnAABT54AAU+gAAFPoQABT6IAAU+kAAFPpQABT+QAAU/mAAFP6AABT+oAAU/tAAFP7gABT+8AAU/wAAFP8QABT/MAAU/1AAFP9gABT/cAAU/5AAFP+gABUDkAAVA7AAFQPQABUD8AAVBCAAFQQwABUEQAAVBFAAFQRgABUEgAAVBKAAFQSwABUEwAAVBOAAFQTwABUI4AAVCQAAFQkgABUJQAAVCXAAFQmAABUJkAAVCaAAFQmwABUJ0AAVCfAAFQoAABUKEAAVCjAAFQpAABUOMAAVDlAAFQ5wABUOkAAVDsAAFQ7QABUO4AAVDvAAFQ8AABUPIAAVD0AAFQ9QABUPYAAVD4AAFQ+QABUR4AAVFCAAFRaQABUY0AAVGQAAFRkgABUZQAAVGWAAFRmAABUZoAAVGbAAFRngABUasAAVG6AAFRvAABUb4AAVHAAAFRwgABUcQAAVHGAAFRyAABUdcAAVHaAAFR3QABUeAAAVHjAAFR5gABUekAAVHsAAFR7gABUi0AAVIvAAFSMQABUjMAAVI2AAFSNwABUjgAAVI5AAFSOgABUjwAAVI+AAFSPwABUkAAAVJCAAFSQwABUoIAAVKEAAFShgABUogAAVKLAAFSjAABUo0AAVKOAAFSjwABUpEAAVKTAAFSlAABUpUAAVKXAAFSmAABUtcAAVLZAAFS2wABUt0AAVLgAAFS4QABUuIAAVLjAAFS5AABUuYAAVLoAAFS6QABUuoAAVLsAAFS7QABUywAAVMuAAFTMAABUzIAAVM1AAFTNgABUzcAAVM4AAFTOQABUzsAAVM9AAFTPgABUz8AAVNBAAFTQgABU4EAAVODAAFThQABU4cAAVOKAAFTiwABU4wAAVONAAFTjgABU5AAAVOSAAFTkwABU5QAAVOWAAFTlwABU9YAAVPYAAFT2gABU9wAAVPfAAFT4AABU+EAAVPiAAFT4wABU+UAAVPnAAFT6AABU+kAAVPrAAFT7AABVCsAAVQtAAFULwABVDEAAVQ0AAFUNQABVDYAAVQ3AAFUOAABVDoAAVQ8AAFUPQABVD4AAVRAAAFUQQABVIwAAVSvAAFUzwABVO8AAVTxAAFU8wABVPUAAVT3AAFU+gABVPsAAVT8AAFU/wABVQAAAVUCAAFVAwABVQUAAVUIAAFVCQABVQoAAVUNAAFVDgABVRcAAVUkAAFVKQABVSsAAVUtAAFVMgABVTUAAVU4AAFVOgABVV8AAVWDAAFVqgABVc4AAVXRAAFV0wABVdUAAVXXAAFV2QABVdsAAVXcAAFV3wABVewAAVX9AAFV/wABVgEAAVYDAAFWBQABVgcAAVYJAAFWCwABVg0AAVYeAAFWIQABViQAAVYnAAFWKgABVi0AAVYwAAFWMwABVjYAAVY4AAFWdwABVnkAAVZ7AAFWfQABVoAAAVaBAAFWggABVoMAAVaEAAFWhgABVogAAVaJAAFWigABVowAAVaNAAFWzAABVs4AAVbQAAFW0gABVtUAAVbWAAFW1wABVtgAAVbZAAFW2wABVt0AAVbeAAFW3wABVuEAAVbiAAFXIQABVyMAAVcmAAFXKAABVysAAVcsAAFXLQABVy4AAVcvAAFXMQABVzMAAVc0AAFXNQABVzcAAVc4AAFXRQABV0YAAVdHAAFXSQABV4gAAVeKAAFXjAABV44AAVeRAAFXkgABV5MAAVeUAAFXlQABV5cAAVeZAAFXmgABV5sAAVedAAFXngABV90AAVffAAFX4QABV+MAAVfmAAFX5wABV+gAAVfpAAFX6gABV+wAAVfuAAFX7wABV/AAAVfyAAFX8wABWDIAAVg0AAFYNgABWDgAAVg7AAFYPAABWD0AAVg+AAFYPwABWEEAAVhDAAFYRAABWEUAAVhHAAFYSAABWIcAAViJAAFYiwABWI0AAViQAAFYkQABWJIAAViTAAFYlAABWJYAAViYAAFYmQABWJoAAVicAAFYnQABWNwAAVjeAAFY4AABWOIAAVjlAAFY5gABWOcAAVjoAAFY6QABWOsAAVjtAAFY7gABWO8AAVjxAAFY8gABWRcAAVk7AAFZYgABWYYAAVmJAAFZiwABWY0AAVmPAAFZkQABWZMAAVmUAAFZlwABWaQAAVmzAAFZtQABWbcAAVm5AAFZuwABWb0AAVm/AAFZwQABWdAAAVnTAAFZ1gABWdkAAVncAAFZ3wABWeIAAVnlAAFZ5wABWiYAAVooAAFaKgABWiwAAVovAAFaMAABWjEAAVoyAAFaMwABWjUAAVo3AAFaOAABWjkAAVo7AAFaPAABWnsAAVp9AAFafwABWoEAAVqEAAFahQABWoYAAVqHAAFaiAABWooAAVqMAAFajQABWo4AAVqQAAFakQABWtAAAVrSAAFa1AABWtYAAVrZAAFa2gABWtsAAVrcAAFa3QABWt8AAVrhAAFa4gABWuMAAVrlAAFa5gABWyUAAVsnAAFbKQABWysAAVsuAAFbLwABWzAAAVsxAAFbMgABWzQAAVs2AAFbNwABWzgAAVs6AAFbOwABW3oAAVt8AAFbfgABW4AAAVuDAAFbhAABW4UAAVuGAAFbhwABW4kAAVuLAAFbjAABW40AAVuPAAFbkAABW88AAVvRAAFb0wABW9UAAVvYAAFb2QABW9oAAVvbAAFb3AABW94AAVvgAAFb4QABW+IAAVvkAAFb5QABXCQAAVwmAAFcKAABXCoAAVwtAAFcLgABXC8AAVwwAAFcMQABXDMAAVw1AAFcNgABXDcAAVw5AAFcOgABXIUAAVyoAAFcyAABXOgAAVzqAAFc7AABXO4AAVzwAAFc8wABXPQAAVz1AAFc+AABXPkAAVz7AAFc/AABXP4AAV0AAAFdAQABXQIAAV0FAAFdBgABXQsAAV0YAAFdHQABXR8AAV0hAAFdJgABXSkAAV0sAAFdLgABXVMAAV13AAFdngABXcIAAV3FAAFdxwABXckAAV3LAAFdzQABXc8AAV3QAAFd0wABXeAAAV3xAAFd8wABXfUAAV33AAFd+QABXfsAAV39AAFd/wABXgEAAV4SAAFeFQABXhgAAV4bAAFeHgABXiEAAV4kAAFeJwABXioAAV4sAAFeawABXm0AAV5vAAFecQABXnQAAV51AAFedgABXncAAV54AAFeegABXnwAAV59AAFefgABXoAAAV6BAAFewAABXsIAAV7EAAFexgABXskAAV7KAAFeywABXswAAV7NAAFezwABXtEAAV7SAAFe0wABXtUAAV7WAAFfFQABXxcAAV8aAAFfHAABXx8AAV8gAAFfIQABXyIAAV8jAAFfJQABXycAAV8oAAFfKQABXysAAV8sAAFfOQABXzoAAV87AAFfPQABX3wAAV9+AAFfgAABX4IAAV+FAAFfhgABX4cAAV+IAAFfiQABX4sAAV+NAAFfjgABX48AAV+RAAFfkgABX9EAAV/TAAFf1QABX9cAAV/aAAFf2wABX9wAAV/dAAFf3gABX+AAAV/iAAFf4wABX+QAAV/mAAFf5wABYCYAAWAoAAFgKgABYCwAAWAvAAFgMAABYDEAAWAyAAFgMwABYDUAAWA3AAFgOAABYDkAAWA7AAFgPAABYHsAAWB9AAFgfwABYIEAAWCEAAFghQABYIYAAWCHAAFgiAABYIoAAWCMAAFgjQABYI4AAWCQAAFgkQABYNAAAWDSAAFg1AABYNYAAWDZAAFg2gABYNsAAWDcAAFg3QABYN8AAWDhAAFg4gABYOMAAWDlAAFg5gABYQsAAWEvAAFhVgABYXoAAWF9AAFhfwABYYEAAWGDAAFhhQABYYcAAWGIAAFhiwABYZgAAWGnAAFhqQABYasAAWGtAAFhrwABYbEAAWGzAAFhtQABYcQAAWHHAAFhygABYc0AAWHQAAFh0wABYdYAAWHZAAFh2wABYhoAAWIcAAFiHgABYiAAAWIjAAFiJAABYiUAAWImAAFiJwABYikAAWIrAAFiLAABYi0AAWIvAAFiMAABYm8AAWJxAAFicwABYnUAAWJ4AAFieQABYnoAAWJ7AAFifAABYn4AAWKAAAFigQABYoIAAWKEAAFihQABYsQAAWLGAAFiyAABYsoAAWLNAAFizgABYs8AAWLQAAFi0QABYtMAAWLVAAFi1gABYtcAAWLZAAFi2gABYxkAAWMbAAFjHQABYx8AAWMiAAFjIwABYyQAAWMlAAFjJgABYygAAWMqAAFjKwABYywAAWMuAAFjLwABY24AAWNwAAFjcgABY3QAAWN3AAFjeAABY3kAAWN6AAFjewABY30AAWN/AAFjgAABY4EAAWODAAFjhAABY8MAAWPFAAFjxwABY8kAAWPMAAFjzQABY84AAWPPAAFj0AABY9IAAWPUAAFj1QABY9YAAWPYAAFj2QABZBgAAWQaAAFkHAABZB4AAWQhAAFkIgABZCMAAWQkAAFkJQABZCcAAWQpAAFkKgABZCsAAWQtAAFkLgABZHkAAWScAAFkvAABZNwAAWTeAAFk4AABZOIAAWTkAAFk5wABZOgAAWTpAAFk7AABZO0AAWTvAAFk8AABZPIAAWT1AAFk9gABZPcAAWT6AAFk+wABZQAAAWUNAAFlEgABZRQAAWUWAAFlGwABZR4AAWUhAAFlIwABZUgAAWVsAAFlkwABZbcAAWW6AAFlvAABZb4AAWXAAAFlwgABZcQAAWXFAAFlyAABZdUAAWXmAAFl6AABZeoAAWXsAAFl7gABZfAAAWXyAAFl9AABZfYAAWYHAAFmCgABZg0AAWYQAAFmEwABZhYAAWYZAAFmHAABZh8AAWYhAAFmYAABZmIAAWZkAAFmZgABZmkAAWZqAAFmawABZmwAAWZtAAFmbwABZnEAAWZyAAFmcwABZnUAAWZ2AAFmtQABZrcAAWa5AAFmuwABZr4AAWa/AAFmwAABZsEAAWbCAAFmxAABZsYAAWbHAAFmyAABZsoAAWbLAAFnCgABZwwAAWcPAAFnEQABZxQAAWcVAAFnFgABZxcAAWcYAAFnGgABZxwAAWcdAAFnHgABZyAAAWchAAFnLgABZy8AAWcwAAFnMgABZ3EAAWdzAAFndQABZ3cAAWd6AAFnewABZ3wAAWd9AAFnfgABZ4AAAWeCAAFngwABZ4QAAWeGAAFnhwABZ8YAAWfIAAFnygABZ8wAAWfPAAFn0AABZ9EAAWfSAAFn0wABZ9UAAWfXAAFn2AABZ9kAAWfbAAFn3AABaBsAAWgdAAFoHwABaCEAAWgkAAFoJQABaCYAAWgnAAFoKAABaCoAAWgsAAFoLQABaC4AAWgwAAFoMQABaHAAAWhyAAFodQABaHcAAWh6AAFoewABaHwAAWh9AAFofgABaIAAAWiCAAFogwABaIQAAWiGAAFohwABaJoAAWjZAAFo2wABaN0AAWjfAAFo4gABaOMAAWjkAAFo5QABaOYAAWjoAAFo6gABaOsAAWjsAAFo7gABaO8AAWkUAAFpOAABaV8AAWmDAAFphgABaYgAAWmKAAFpjAABaY4AAWmQAAFpkQABaZQAAWmhAAFpsAABabIAAWm0AAFptgABabgAAWm6AAFpvAABab4AAWnNAAFp0AABadMAAWnWAAFp2QABadwAAWnfAAFp4gABaeQAAWojAAFqJQABaicAAWopAAFqLAABai0AAWouAAFqLwABajAAAWoyAAFqNAABajUAAWo2AAFqOAABajkAAWp4AAFqegABanwAAWp+AAFqgQABaoIAAWqDAAFqhAABaoUAAWqHAAFqiQABaooAAWqLAAFqjQABao4AAWrNAAFqzwABatEAAWrTAAFq1gABatcAAWrYAAFq2QABatoAAWrcAAFq3gABat8AAWrgAAFq4gABauMAAWsiAAFrJAABayYAAWsoAAFrKwABaywAAWstAAFrLgABay8AAWsxAAFrMwABazQAAWs1AAFrNwABazgAAWt3AAFreQABa3sAAWt9AAFrgAABa4EAAWuCAAFrgwABa4QAAWuGAAFriAABa4kAAWuKAAFrjAABa40AAWvMAAFrzgABa9AAAWvSAAFr1QABa9YAAWvXAAFr2AABa9kAAWvbAAFr3QABa94AAWvfAAFr4QABa+IAAWwhAAFsIwABbCUAAWwnAAFsKgABbCsAAWwsAAFsLQABbC4AAWwwAAFsMgABbDMAAWw0AAFsNgABbDcAAWyCAAFspQABbMUAAWzlAAFs5wABbOkAAWzrAAFs7QABbPAAAWzxAAFs8gABbPUAAWz2AAFs+AABbPkAAWz7AAFs/gABbP8AAW0AAAFtAwABbQQAAW0JAAFtFgABbRsAAW0dAAFtHwABbSQAAW0nAAFtKgABbSwAAW1RAAFtdQABbZwAAW3AAAFtwwABbcUAAW3HAAFtyQABbcsAAW3NAAFtzgABbdEAAW3eAAFt7wABbfEAAW3zAAFt9QABbfcAAW35AAFt+wABbf0AAW3/AAFuEAABbhMAAW4WAAFuGQABbhwAAW4fAAFuIgABbiUAAW4oAAFuKgABbmkAAW5rAAFubQABbm8AAW5yAAFucwABbnQAAW51AAFudgABbngAAW56AAFuewABbnwAAW5+AAFufwABbr4AAW7AAAFuwgABbsQAAW7HAAFuyAABbskAAW7KAAFuywABbs0AAW7PAAFu0AABbtEAAW7TAAFu1AABbxMAAW8VAAFvGAABbxoAAW8dAAFvHgABbx8AAW8gAAFvIQABbyMAAW8lAAFvJgABbycAAW8pAAFvKgABbzcAAW84AAFvOQABbzsAAW96AAFvfAABb34AAW+AAAFvgwABb4QAAW+FAAFvhgABb4cAAW+JAAFviwABb4wAAW+NAAFvjwABb5AAAW/PAAFv0QABb9MAAW/VAAFv2AABb9kAAW/aAAFv2wABb9wAAW/eAAFv4AABb+EAAW/iAAFv5AABb+UAAXAkAAFwJgABcCgAAXAqAAFwLQABcC4AAXAvAAFwMAABcDEAAXAzAAFwNQABcDYAAXA3AAFwOQABcDoAAXB5AAFwewABcH0AAXB/AAFwggABcIMAAXCEAAFwhQABcIYAAXCIAAFwigABcIsAAXCMAAFwjgABcI8AAXDOAAFw0AABcNIAAXDUAAFw1wABcNgAAXDZAAFw2gABcNsAAXDdAAFw3wABcOAAAXDhAAFw4wABcOQAAXEJAAFxLQABcVQAAXF4AAFxewABcX0AAXF/AAFxgQABcYMAAXGFAAFxhgABcYkAAXGWAAFxpQABcacAAXGpAAFxqwABca0AAXGvAAFxsQABcbMAAXHCAAFxxQABccgAAXHLAAFxzgABcdEAAXHUAAFx1wABcdkAAXIYAAFyGgABchwAAXIeAAFyIQABciIAAXIjAAFyJAABciUAAXInAAFyKQABcioAAXIrAAFyLQABci4AAXJtAAFybwABcnEAAXJzAAFydgABcncAAXJ4AAFyeQABcnoAAXJ8AAFyfgABcn8AAXKAAAFyggABcoMAAXLCAAFyxAABcsYAAXLIAAFyywABcswAAXLNAAFyzgABcs8AAXLRAAFy0wABctQAAXLVAAFy1wABctgAAXMXAAFzGQABcxsAAXMdAAFzIAABcyEAAXMiAAFzIwABcyQAAXMmAAFzKAABcykAAXMqAAFzLAABcy0AAXNsAAFzbgABc3AAAXNyAAFzdQABc3YAAXN3AAFzeAABc3kAAXN7AAFzfQABc34AAXN/AAFzgQABc4IAAXPBAAFzwwABc8UAAXPHAAFzygABc8sAAXPMAAFzzQABc84AAXPQAAFz0gABc9MAAXPUAAFz1gABc9cAAXQWAAF0GAABdBoAAXQcAAF0HwABdCAAAXQhAAF0IgABdCMAAXQlAAF0JwABdCgAAXQpAAF0KwABdCwAAXR3AAF0mgABdLoAAXTaAAF03AABdN4AAXTgAAF04gABdOUAAXTmAAF05wABdOoAAXTrAAF07QABdO4AAXTwAAF08gABdPMAAXT0AAF09wABdPgAAXT9AAF1CgABdQ8AAXURAAF1EwABdRgAAXUbAAF1HgABdSAAAXVFAAF1aQABdZAAAXW0AAF1twABdbkAAXW7AAF1vQABdb8AAXXBAAF1wgABdcUAAXXSAAF14wABdeUAAXXnAAF16QABdesAAXXtAAF17wABdfEAAXXzAAF2BAABdgcAAXYKAAF2DQABdhAAAXYTAAF2FgABdhkAAXYcAAF2HgABdl0AAXZfAAF2YQABdmMAAXZmAAF2ZwABdmgAAXZpAAF2agABdmwAAXZuAAF2bwABdnAAAXZyAAF2cwABdrIAAXa0AAF2tgABdrgAAXa7AAF2vAABdr0AAXa+AAF2vwABdsEAAXbDAAF2xAABdsUAAXbHAAF2yAABdwcAAXcJAAF3DAABdw4AAXcRAAF3EgABdxMAAXcUAAF3FQABdxcAAXcZAAF3GgABdxsAAXcdAAF3HgABdysAAXcsAAF3LQABdy8AAXduAAF3cAABd3IAAXd0AAF3dwABd3gAAXd5AAF3egABd3sAAXd9AAF3fwABd4AAAXeBAAF3gwABd4QAAXfDAAF3xQABd8cAAXfJAAF3zAABd80AAXfOAAF3zwABd9AAAXfSAAF31AABd9UAAXfWAAF32AABd9kAAXgYAAF4GgABeBwAAXgeAAF4IQABeCIAAXgjAAF4JAABeCUAAXgnAAF4KQABeCoAAXgrAAF4LQABeC4AAXhtAAF4bwABeHEAAXhzAAF4dgABeHcAAXh4AAF4eQABeHoAAXh8AAF4fgABeH8AAXiAAAF4ggABeIMAAXjCAAF4xAABeMYAAXjIAAF4ywABeMwAAXjNAAF4zgABeM8AAXjRAAF40wABeNQAAXjVAAF41wABeNgAAXj9AAF5IQABeUgAAXlsAAF5bwABeXEAAXlzAAF5dQABeXcAAXl5AAF5egABeX0AAXmKAAF5mQABeZsAAXmdAAF5nwABeaEAAXmjAAF5pQABeacAAXm2AAF5uQABebwAAXm/AAF5wgABecUAAXnIAAF5ywABec0AAXoMAAF6DgABehAAAXoSAAF6FQABehYAAXoXAAF6GAABehkAAXobAAF6HQABeh4AAXofAAF6IQABeiIAAXphAAF6YwABemUAAXpnAAF6agABemsAAXpsAAF6bQABem4AAXpwAAF6cgABenMAAXp0AAF6dgABencAAXq2AAF6uAABeroAAXq8AAF6vwABesAAAXrBAAF6wgABesMAAXrFAAF6xwABesgAAXrJAAF6ywABesw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AAYZVAAGGVgABhlgAAYZaAAGGWwABhlwAAYZeAAGGXwABhp4AAYagAAGGogABhqQAAYanAAGGqAABhqkAAYaqAAGGqwABhq0AAYavAAGGsAABhrEAAYazAAGGtAABhvMAAYb1AAGG+AABhvoAAYb9AAGG/gABhv8AAYcAAAGHAQABhwMAAYcFAAGHBgABhwcAAYcJAAGHCgABhxcAAYcYAAGHGQABhxsAAYdaAAGHXAABh14AAYdgAAGHYwABh2QAAYdlAAGHZgABh2cAAYdpAAGHawABh2wAAYdtAAGHbwABh3AAAYevAAGHsQABh7MAAYe1AAGHuAABh7kAAYe6AAGHuwABh7wAAYe+AAGHwAABh8EAAYfCAAGHxAABh8UAAYgEAAGIBgABiAgAAYgKAAGIDQABiA4AAYgPAAGIEAABiBEAAYgTAAGIFQABiBYAAYgXAAGIGQABiBoAAYhZAAGIWwABiF4AAYhgAAGIYwABiGQAAYhlAAGIZgABiGcAAYhpAAGIawABiGwAAYhtAAGIbwABiHAAAYiEAAGIwwABiMUAAYjHAAGIyQABiMwAAYjNAAGIzgABiM8AAYjQAAGI0gABiNQAAYjVAAGI1gABiNgAAYjZAAGI/gABiSIAAYlJAAGJbQABiXAAAYlyAAGJdAABiXYAAYl4AAGJegABiXsAAYl+AAGJiwABiZoAAYmcAAGJngABiaAAAYmiAAGJpAABiaYAAYmoAAGJtwABiboAAYm9AAGJwAABicMAAYnGAAGJyQABicwAAYnOAAGKDQABig8AAYoRAAGKEwABihYAAYoXAAGKGAABihkAAYoaAAGKHAABih4AAYofAAGKIAABiiIAAYojAAGKYgABimQAAYpmAAGKaAABimsAAYpsAAGKbQABim4AAYpvAAGKcQABinMAAYp0AAGKdQABincAAYp4AAGKtwABirkAAYq7AAGKvQABisAAAYrBAAGKwgABisMAAYrEAAGKxgABisgAAYrJAAGKygABiswAAYrNAAGLDAABiw4AAYsQAAGLEgABixUAAYsWAAGLFwABixgAAYsZAAGLGwABix0AAYseAAGLHwABiyEAAYsiAAGLYQABi2MAAYtlAAGLZwABi2oAAYtrAAGLbAABi20AAYtuAAGLcAABi3IAAYtzAAGLdAABi3YAAYt3AAGLtgABi7gAAYu6AAGLvAABi78AAYvAAAGLwQABi8IAAYvDAAGLxQABi8cAAYvIAAGLyQABi8sAAYvMAAGMCwABjA0AAYwPAAGMEQABjBQAAYwVAAGMFgABjBcAAYwYAAGMGgABjBwAAYwdAAGMHgABjCAAAYwhAAGMbAABjI8AAYyvAAGMzwABjNEAAYzTAAGM1QABjNcAAYzaAAGM2wABjNwAAYzfAAGM4AABjOIAAYzjAAGM5QABjOgAAYzpAAGM6gABjO0AAYzuAAGM9wABjQQAAY0JAAGNCwABjQ0AAY0SAAGNFQABjRgAAY0aAAGNPwABjWMAAY2KAAGNrgABjbEAAY2zAAGNtQABjbcAAY25AAGNuwABjbwAAY2/AAGNzAABjd0AAY3fAAGN4QABjeMAAY3lAAGN5wABjekAAY3rAAGN7QABjf4AAY4BAAGOBAABjgcAAY4KAAGODQABjhAAAY4TAAGOFgABjhgAAY5XAAGOWQABjlsAAY5dAAGOYAABjmEAAY5iAAGOYwABjmQAAY5mAAGOaAABjmkAAY5qAAGObAABjm0AAY6sAAGOrgABjrAAAY6yAAGOtQABjrYAAY63AAGOuAABjrkAAY67AAGOvQABjr4AAY6/AAGOwQABjsIAAY8BAAGPAwABjwYAAY8IAAGPCwABjwwAAY8NAAGPDgABjw8AAY8RAAGPEwABjxQAAY8VAAGPFwABjxgAAY8lAAGPJgABjycAAY8pAAGPaAABj2oAAY9sAAGPbgABj3EAAY9yAAGPcwABj3QAAY91AAGPdwABj3kAAY96AAGPewABj30AAY9+AAGPvQABj78AAY/BAAGPwwABj8YAAY/HAAGPyAABj8kAAY/KAAGPzAABj84AAY/PAAGP0AABj9IAAY/TAAGQEgABkBQAAZAWAAGQGAABkBsAAZAcAAGQHQABkB4AAZAfAAGQIQABkCMAAZAkAAGQJQABkCcAAZAoAAGQZwABkGkAAZBsAAGQbgABkHEAAZByAAGQcwABkHQAAZB1AAGQdwABkHkAAZB6AAGQewABkH0AAZB+AAGQjQABkMwAAZDOAAGQ0AABkNIAAZDVAAGQ1gABkNcAAZDYAAGQ2QABkNsAAZDdAAGQ3gABkN8AAZDhAAGQ4gABkQcAAZErAAGRUgABkXYAAZF5AAGRewABkX0AAZF/AAGRgQABkYMAAZGEAAGRhwABkZQAAZGjAAGRpQABkacAAZGpAAGRqwABka0AAZGvAAGRsQABkcAAAZHDAAGRxgABkckAAZHMAAGRzwABkdIAAZHVAAGR1wABkhYAAZIYAAGSGgABkhwAAZIfAAGSIAABkiEAAZIiAAGSIwABkiUAAZInAAGSKAABkikAAZIrAAGSLAABkmsAAZJtAAGSbwABknEAAZJ0AAGSdQABknYAAZJ3AAGSeAABknoAAZJ8AAGSfQABkn4AAZKAAAGSgQABksAAAZLCAAGSxAABksYAAZLJAAGSygABkssAAZLMAAGSzQABks8AAZLRAAGS0gABktMAAZLVAAGS1gABkxUAAZMXAAGTGQABkxsAAZMeAAGTHwABkyAAAZMhAAGTIgABkyQAAZMmAAGTJwABkygAAZMqAAGTKwABk2oAAZNsAAGTbgABk3AAAZNzAAGTdAABk3UAAZN2AAGTdwABk3kAAZN7AAGTfAABk30AAZN/AAGTgAABk78AAZPBAAGTwwABk8UAAZPIAAGTyQABk8oAAZPLAAGTzAABk84AAZPQAAGT0QABk9IAAZPUAAGT1QABlBQAAZQWAAGUGAABlBoAAZQdAAGUHgABlB8AAZQgAAGUIQABlCMAAZQlAAGUJgABlCcAAZQpAAGUKgABlHUAAZSYAAGUuAABlNgAAZTaAAGU3AABlN4AAZTgAAGU4wABlOQAAZTlAAGU6AABlOkAAZTrAAGU7AABlO4AAZTxAAGU8gABlPMAAZT2AAGU9wABlPwAAZUJAAGVDgABlRAAAZUSAAGVFwABlRoAAZUdAAGVHwABlUQAAZVoAAGVjwABlbMAAZW2AAGVuAABlboAAZW8AAGVvgABlcAAAZXBAAGVxAABldEAAZXiAAGV5AABleYAAZXoAAGV6gABlewAAZXuAAGV8AABlfIAAZYDAAGWBgABlgkAAZYMAAGWDwABlhIAAZYVAAGWGAABlhsAAZYdAAGWXAABll4AAZZgAAGWYgABlmUAAZZmAAGWZwABlmgAAZZpAAGWawABlm0AAZZuAAGWbwABlnEAAZZyAAGWsQABlrMAAZa1AAGWtwABlroAAZa7AAGWvAABlr0AAZa+AAGWwAABlsIAAZbDAAGWxAABlsYAAZbHAAGXBgABlwgAAZcLAAGXDQABlxAAAZcRAAGXEgABlxMAAZcUAAGXFgABlxgAAZcZAAGXGgABlxwAAZcdAAGXKgABlysAAZcsAAGXLgABl20AAZdvAAGXcQABl3MAAZd2AAGXdwABl3gAAZd5AAGXegABl3wAAZd+AAGXfwABl4AAAZeCAAGXgwABl8IAAZfEAAGXxgABl8gAAZfLAAGXzAABl80AAZfOAAGXzwABl9EAAZfTAAGX1AABl9UAAZfXAAGX2AABmBcAAZgZAAGYGwABmB0AAZggAAGYIQABmCIAAZgjAAGYJAABmCYAAZgoAAGYKQABmCoAAZgsAAGYLQABmGwAAZhuAAGYcQABmHMAAZh2AAGYdwABmHgAAZh5AAGYegABmHwAAZh+AAGYfwABmIAAAZiCAAGYgwABmJcAAZjWAAGY2AABmNoAAZjcAAGY3wABmOAAAZjhAAGY4gABmOMAAZjlAAGY5wABmOgAAZjpAAGY6wABmOwAAZkRAAGZNQABmVwAAZmAAAGZgwABmYUAAZmHAAGZiQABmYsAAZmNAAGZjgABmZEAAZmeAAGZrQABma8AAZmxAAGZswABmbUAAZm3AAGZuQABmbsAAZnKAAGZzQABmdAAAZnTAAGZ1gABmdkAAZncAAGZ3wABmeEAAZogAAGaIgABmiQAAZomAAGaKQABmioAAZorAAGaLAABmi0AAZovAAGaMQABmjIAAZozAAGaNQABmjYAAZp1AAGadwABmnkAAZp7AAGafgABmn8AAZqAAAGagQABmoIAAZqEAAGahgABmocAAZqIAAGaigABmosAAZrKAAGazAABms4AAZrQAAGa0wABmtQAAZrVAAGa1gABmtcAAZrZAAGa2wABmtwAAZrdAAGa3wABmuAAAZsfAAGbIQABmyMAAZslAAGbKAABmykAAZsqAAGbKwABmywAAZsuAAGbMAABmzEAAZsyAAGbNAABmzUAAZt0AAGbdgABm3gAAZt6AAGbfQABm34AAZt/AAGbgAABm4EAAZuDAAGbhQABm4YAAZuHAAGbiQABm4oAAZvJAAGbywABm80AAZvPAAGb0gABm9MAAZvUAAGb1QABm9YAAZvYAAGb2gABm9sAAZvcAAGb3gABm98AAZweAAGcIAABnCIAAZwkAAGcJwABnCgAAZwpAAGcKgABnCsAAZwtAAGcLwABnDAAAZwxAAGcMwABnDQAAZx/AAGcogABnMIAAZziAAGc5AABnOYAAZzoAAGc6gABnO0AAZzuAAGc7wABnPIAAZzzAAGc9QABnPYAAZz4AAGc+wABnPwAAZz9AAGdAAABnQEAAZ0GAAGdEwABnRgAAZ0aAAGdHAABnSEAAZ0kAAGdJwABnSkAAZ1OAAGdcgABnZkAAZ29AAGdwAABncIAAZ3EAAGdxgABncgAAZ3KAAGdywABnc4AAZ3bAAGd7AABne4AAZ3wAAGd8gABnfQAAZ32AAGd+AABnfoAAZ38AAGeDQABnhAAAZ4TAAGeFgABnhkAAZ4cAAGeHwABniIAAZ4lAAGeJwABnmYAAZ5oAAGeagABnmwAAZ5vAAGecAABnnEAAZ5yAAGecwABnnUAAZ53AAGeeAABnnkAAZ57AAGefAABnrsAAZ69AAGevwABnsEAAZ7EAAGexQABnsYAAZ7HAAGeyAABnsoAAZ7MAAGezQABns4AAZ7QAAGe0QABnxAAAZ8SAAGfFQABnxcAAZ8aAAGfGwABnxwAAZ8dAAGfHgABnyAAAZ8iAAGfIwABnyQAAZ8mAAGfJwABnzQAAZ81AAGfNgABnzgAAZ93AAGfeQABn3sAAZ99AAGfgAABn4EAAZ+CAAGfgwABn4QAAZ+GAAGfiAABn4kAAZ+KAAGfjAABn40AAZ/MAAGfzgABn9AAAZ/SAAGf1QABn9YAAZ/XAAGf2AABn9kAAZ/bAAGf3QABn94AAZ/fAAGf4QABn+IAAaAhAAGgIwABoCUAAaAnAAGgKgABoCsAAaAsAAGgLQABoC4AAaAwAAGgMgABoDMAAaA0AAGgNgABoDcAAaB2AAGgeAABoHoAAaB8AAGgfwABoIAAAaCBAAGgggABoIMAAaCFAAGghwABoIgAAaCJAAGgiwABoIwAAaDLAAGgzQABoM8AAaDRAAGg1AABoNUAAaDWAAGg1wABoNgAAaDaAAGg3AABoN0AAaDeAAGg4AABoOEAAaEGAAGhKgABoVEAAaF1AAGheAABoXoAAaF8AAGhfgABoYAAAaGCAAGhgwABoYYAAaGTAAGhogABoaQAAaGmAAGhqAABoaoAAaGsAAGhrgABobAAAaG/AAGhwgABocUAAaHIAAGhywABoc4AAaHRAAGh1AABodYAAaIVAAGiFwABohkAAaIbAAGiHgABoh8AAaIgAAGiIQABoiIAAaIkAAGiJgABoicAAaIoAAGiKgABoisAAaJqAAGibAABom4AAaJwAAGicwABonQAAaJ1AAGidgABoncAAaJ5AAGiewABonwAAaJ9AAGifwABooAAAaK/AAGiwQABosMAAaLFAAGiyAABoskAAaLKAAGiywABoswAAaLOAAGi0AABotEAAaLSAAGi1AABotUAAaMUAAGjFgABoxgAAaMaAAGjHQABox4AAaMfAAGjIAABoyEAAaMjAAGjJQABoyYAAaMnAAGjKQABoyoAAaNpAAGjawABo20AAaNvAAGjcgABo3MAAaN0AAGjdQABo3YAAaN4AAGjegABo3sAAaN8AAGjfgABo38AAaO+AAGjwAABo8IAAaPEAAGjxwABo8gAAaPJAAGjygABo8sAAaPNAAGjzwABo9AAAaPRAAGj0wABo9QAAaQTAAGkFQABpBcAAaQZAAGkHAABpB0AAaQeAAGkHwABpCAAAaQiAAGkJAABpCUAAaQmAAGkKAABpCkAAaR0AAGklwABpLcAAaTXAAGk2QABpNsAAaTdAAGk3wABpOIAAaTjAAGk5AABpOcAAaToAAGk6gABpOsAAaTtAAGk8AABpPEAAaTyAAGk9QABpPYAAaT7AAGlCAABpQ0AAaUPAAGlEQABpRYAAaUZAAGlHAABpR4AAaVDAAGlZwABpY4AAaWyAAGltQABpbcAAaW5AAGluwABpb0AAaW/AAGlwAABpcMAAaXQAAGl4QABpeMAAaXlAAGl5wABpekAAaXrAAGl7QABpe8AAaXxAAGmAgABpgUAAaYIAAGmCwABpg4AAaYRAAGmFAABphcAAaYaAAGmHAABplsAAaZdAAGmXwABpmEAAaZkAAGmZQABpmYAAaZnAAGmaAABpmoAAaZsAAGmbQABpm4AAaZwAAGmcQABprAAAaayAAGmtAABprYAAaa5AAGmugABprsAAaa8AAGmvQABpr8AAabBAAGmwgABpsMAAabFAAGmxgABpwUAAacHAAGnCgABpwwAAacPAAGnEAABpxEAAacSAAGnEwABpxUAAacXAAGnGAABpxkAAacbAAGnHAABpykAAacqAAGnKwABpy0AAadsAAGnbgABp3AAAadyAAGndQABp3YAAad3AAGneAABp3kAAad7AAGnfQABp34AAad/AAGngQABp4IAAafBAAGnwwABp8UAAafHAAGnygABp8sAAafMAAGnzQABp84AAafQAAGn0gABp9MAAafUAAGn1gABp9cAAagWAAGoGAABqBoAAagcAAGoHwABqCAAAaghAAGoIgABqCMAAaglAAGoJwABqCgAAagpAAGoKwABqCwAAahrAAGobQABqG8AAahxAAGodAABqHUAAah2AAGodwABqHgAAah6AAGofAABqH0AAah+AAGogAABqIEAAajAAAGowgABqMQAAajGAAGoyQABqMoAAajLAAGozAABqM0AAajPAAGo0QABqNIAAajTAAGo1QABqNYAAaj7AAGpHwABqUYAAalqAAGpbQABqW8AAalxAAGpcwABqXUAAal3AAGpeAABqXsAAamIAAGplwABqZkAAambAAGpnQABqZ8AAamhAAGpowABqaUAAam0AAGptwABqboAAam9AAGpwAABqcMAAanGAAGpyQABqcsAAaoKAAGqDAABqg4AAaoQAAGqEwABqhQAAaoVAAGqFgABqhcAAaoZAAGqGwABqhwAAaodAAGqHwABqiAAAapfAAGqYQABqmMAAaplAAGqaAABqmkAAapqAAGqawABqmwAAapuAAGqcAABqnEAAapyAAGqdAABqnUAAaq0AAGqtgABqrgAAaq6AAGqvQABqr4AAaq/AAGqwAABqsEAAarDAAGqxQABqsYAAarHAAGqyQABqsoAAasJAAGrCwABqw0AAasPAAGrEgABqxMAAasUAAGrFQABqxYAAasYAAGrGgABqxsAAascAAGrHgABqx8AAateAAGrYAABq2IAAatkAAGrZwABq2gAAatpAAGragABq2sAAattAAGrbwABq3AAAatxAAGrcwABq3QAAauzAAGrtQABq7cAAau5AAGrvAABq70AAau+AAGrvwABq8AAAavCAAGrxAABq8UAAavGAAGryAABq8kAAawIAAGsCgABrAwAAawOAAGsEQABrBIAAawTAAGsFAABrBUAAawXAAGsGQABrBoAAawbAAGsHQABrB4AAaxpAAGsjAABrKwAAazMAAGszgABrNAAAazSAAGs1AABrNcAAazYAAGs2QABrNwAAazdAAGs3wABrOAAAaziAAGs5QABrOYAAaznAAGs6gABrOsAAazwAAGs/QABrQIAAa0EAAGtBgABrQsAAa0OAAGtEQABrRMAAa04AAGtXAABrYMAAa2nAAGtqgABrawAAa2uAAGtsAABrbIAAa20AAGttQABrbgAAa3FAAGt1gABrdgAAa3aAAGt3AABrd4AAa3gAAGt4gABreQAAa3mAAGt9wABrfoAAa39AAGuAAABrgMAAa4GAAGuCQABrgwAAa4PAAGuEQABrlAAAa5SAAGuVAABrlYAAa5ZAAGuWgABrlsAAa5cAAGuXQABrl8AAa5hAAGuYgABrmMAAa5lAAGuZgABrqUAAa6nAAGuqQABrqsAAa6uAAGurwABrrAAAa6xAAGusgABrrQAAa62AAGutwABrrgAAa66AAGuuwABrvoAAa78AAGu/wABrwEAAa8EAAGvBQABrwYAAa8HAAGvCAABrwoAAa8MAAGvDQABrw4AAa8QAAGvEQABrx4AAa8fAAGvIAABryIAAa9hAAGvYwABr2UAAa9nAAGvagABr2sAAa9sAAGvbQABr24AAa9wAAGvcgABr3MAAa90AAGvdgABr3cAAa+2AAGvuAABr7oAAa+8AAGvvwABr8AAAa/BAAGvwgABr8MAAa/FAAGvxwABr8gAAa/JAAGvywABr8wAAbALAAGwDQABsA8AAbARAAGwFAABsBUAAbAWAAGwFwABsBgAAbAaAAGwHAABsB0AAbAeAAGwIAABsCEAAbBgAAGwYgABsGQAAbBmAAGwaQABsGoAAbBrAAGwbAABsG0AAbBvAAGwcQABsHIAAbBzAAGwdQABsHYAAbC1AAGwtwABsLkAAbC7AAGwvgABsL8AAbDAAAGwwQABsMIAAbDEAAGwxgABsMcAAbDIAAGwygABsMsAAbDwAAGxFAABsTsAAbFfAAGxYgABsWQAAbFmAAGxaAABsWoAAbFsAAGxbQABsXAAAbF9AAGxjAABsY4AAbGQAAGxkgABsZQAAbGWAAGxmAABsZoAAbGpAAGxrAABsa8AAbGyAAGxtQABsbgAAbG7AAGxvgABscAAAbH/AAGyAQABsgMAAbIFAAGyCAABsgkAAbIKAAGyCwABsgwAAbIOAAGyEAABshEAAbISAAGyFAABshUAAbJUAAGyVgABslgAAbJaAAGyXQABsl4AAbJfAAGyYAABsmEAAbJjAAGyZQABsmYAAbJnAAGyaQABsmoAAbKpAAGyqwABsq0AAbKvAAGysgABsrMAAbK0AAGytQABsrYAAbK4AAGyugABsrsAAbK8AAGyvgABsr8AAbL+AAGzAAABswMAAbMFAAGzCAABswkAAbMKAAGzCwABswwAAbMOAAGzEAABsxEAAbMSAAGzFAABsxUAAbNUAAGzVgABs1gAAbNaAAGzXQABs14AAbNfAAGzYAABs2EAAbNjAAGzZQABs2YAAbNnAAGzaQABs2oAAbOpAAGzqwABs60AAbOvAAGzsgABs7MAAbO0AAGztQABs7YAAbO4AAGzugABs7sAAbO8AAGzvgABs78AAbP+AAG0AAABtAMAAbQFAAG0CAABtAkAAbQKAAG0CwABtAwAAbQOAAG0EAABtBEAAbQSAAG0FAABtBUAAbRgAAG0gwABtKMAAbTDAAG0xQABtMcAAbTJAAG0ywABtM4AAbTPAAG00AABtNMAAbTUAAG01gABtNcAAbTZAAG03AABtN0AAbTeAAG04QABtOIAAbTnAAG09AABtPkAAbT7AAG0/QABtQIAAbUFAAG1CAABtQoAAbUvAAG1UwABtXoAAbWeAAG1oQABtaMAAbWlAAG1pwABtakAAbWrAAG1rAABta8AAbW8AAG1zQABtc8AAbXRAAG10wABtdUAAbXXAAG12QABtdsAAbXdAAG17gABtfEAAbX0AAG19wABtfoAAbX9AAG2AAABtgMAAbYGAAG2CAABtkcAAbZJAAG2SwABtk0AAbZQAAG2UQABtlIAAbZTAAG2VAABtlYAAbZYAAG2WQABtloAAbZcAAG2XQABtpwAAbaeAAG2oAABtqIAAbalAAG2pgABtqcAAbaoAAG2qQABtqsAAbatAAG2rgABtq8AAbaxAAG2sgABtvEAAbbzAAG29gABtvgAAbb7AAG2/AABtv0AAbb+AAG2/wABtwEAAbcDAAG3BAABtwUAAbcHAAG3CAABtxUAAbcWAAG3FwABtxkAAbdYAAG3WgABt1wAAbdeAAG3YQABt2IAAbdjAAG3ZAABt2UAAbdnAAG3aQABt2oAAbdrAAG3bQABt24AAbetAAG3rwABt7EAAbezAAG3tgABt7cAAbe4AAG3uQABt7oAAbe8AAG3vgABt78AAbfAAAG3wgABt8MAAbgCAAG4BAABuAYAAbgIAAG4CwABuAwAAbgNAAG4DgABuA8AAbgRAAG4EwABuBQAAbgVAAG4FwABuBgAAbhXAAG4WQABuFsAAbhdAAG4YAABuGEAAbhiAAG4YwABuGQAAbhmAAG4aAABuGkAAbhqAAG4bAABuG0AAbisAAG4rgABuLAAAbiyAAG4tQABuLYAAbi3AAG4uAABuLkAAbi7AAG4vQABuL4AAbi/AAG4wQABuMIAAbjnAAG5CwABuTIAAblWAAG5WQABuVsAAbldAAG5XwABuWEAAbljAAG5ZAABuWcAAbl0AAG5gwABuYUAAbmHAAG5iQABuYsAAbmNAAG5jwABuZEAAbmgAAG5owABuaYAAbmpAAG5rAABua8AAbmyAAG5tQABubcAAbn2AAG5+AABufoAAbn8AAG5/wABugAAAboBAAG6AgABugMAAboFAAG6BwABuggAAboJAAG6CwABugwAAbpLAAG6TQABuk8AAbpRAAG6VAABulUAAbpWAAG6VwABulgAAbpaAAG6XAABul0AAbpeAAG6YAABumEAAbqgAAG6ogABuqQAAbqmAAG6qQABuqoAAbqrAAG6rAABuq0AAbqvAAG6sQABurIAAbqzAAG6tQABurYAAbr1AAG69wABuvoAAbr8AAG6/wABuwAAAbsBAAG7AgABuwMAAbsFAAG7BwABuwgAAbsJAAG7CwABuwwAAbtLAAG7TQABu08AAbtRAAG7VAABu1UAAbtWAAG7VwABu1gAAbtaAAG7XAABu10AAbteAAG7YAABu2EAAbugAAG7ogABu6QAAbumAAG7qQABu6oAAburAAG7rAABu60AAbuvAAG7sQABu7IAAbuzAAG7tQABu7YAAbv1AAG79wABu/oAAbv8AAG7/wABvAAAAbwBAAG8AgABvAMAAbwFAAG8BwABvAgAAbwJAAG8CwABvAwAAbxXAAG8egABvJoAAby6AAG8vAABvL4AAbzAAAG8wgABvMUAAbzGAAG8xwABvMoAAbzLAAG8zQABvM4AAbzQAAG80wABvNQAAbzVAAG82AABvNkAAbzeAAG86wABvPAAAbzyAAG89AABvPkAAbz8AAG8/wABvQEAAb0mAAG9SgABvXEAAb2VAAG9mAABvZoAAb2cAAG9ngABvaAAAb2iAAG9owABvaYAAb2zAAG9xAABvcYAAb3IAAG9ygABvcwAAb3OAAG90AABvdIAAb3UAAG95QABvegAAb3rAAG97gABvfEAAb30AAG99wABvfoAAb39AAG9/wABvj4AAb5AAAG+QgABvkQAAb5HAAG+SAABvkkAAb5KAAG+SwABvk0AAb5PAAG+UAABvlEAAb5TAAG+VAABvpMAAb6VAAG+lwABvpkAAb6cAAG+nQABvp4AAb6fAAG+oAABvqIAAb6kAAG+pQABvqYAAb6oAAG+qQABvugAAb7qAAG+7QABvu8AAb7yAAG+8wABvvQAAb71AAG+9gABvvgAAb76AAG++wABvvwAAb7+AAG+/wABvwwAAb8NAAG/DgABvxAAAb9PAAG/UQABv1MAAb9VAAG/WAABv1kAAb9aAAG/WwABv1wAAb9eAAG/YAABv2EAAb9iAAG/ZAABv2UAAb+kAAG/pgABv6gAAb+qAAG/rQABv64AAb+vAAG/sAABv7EAAb+zAAG/tQABv7YAAb+3AAG/uQABv7oAAb/5AAG/+wABv/0AAb//AAHAAgABwAMAAcAEAAHABQABwAYAAcAIAAHACgABwAsAAcAMAAHADgABwA8AAcBOAAHAUAABwFMAAcBVAAHAWAABwFkAAcBaAAHAWwABwFwAAcBeAAHAYAABwGEAAcBiAAHAZAABwGUAAcBzAAHAsgABwLQAAcC2AAHAuAABwLsAAcC8AAHAvQABwL4AAcC/AAHAwQABwMMAAcDEAAHAxQABwMcAAcDIAAHA7QABwREAAcE4AAHBXAABwV8AAcFhAAHBYwABwWUAAcFnAAHBaQABwWoAAcFtAAHBegABwYkAAcGLAAHBjQABwY8AAcGRAAHBkwABwZUAAcGXAAHBpgABwakAAcGsAAHBrwABwbIAAcG1AAHBuAABwbsAAcG9AAHB/AABwf4AAcIAAAHCAgABwgUAAcIGAAHCBwABwggAAcIJAAHCCwABwg0AAcIOAAHCDwABwhEAAcISAAHCUQABwlMAAcJVAAHCVwABwloAAcJbAAHCXAABwl0AAcJeAAHCYAABwmIAAcJjAAHCZAABwmYAAcJnAAHCpgABwqgAAcKqAAHCrAABwq8AAcKwAAHCsQABwrIAAcKzAAHCtQABwrcAAcK4AAHCuQABwrsAAcK8AAHC+wABwv0AAcL/AAHDAQABwwQAAcMFAAHDBgABwwcAAcMIAAHDCgABwwwAAcMNAAHDDgABwxAAAcMRAAHDUAABw1IAAcNUAAHDVgABw1kAAcNaAAHDWwABw1wAAcNdAAHDXwABw2EAAcNiAAHDYwABw2UAAcNmAAHDpQABw6cAAcOpAAHDqwABw64AAcOvAAHDsAABw7EAAcOyAAHDtAABw7YAAcO3AAHDuAABw7oAAcO7AAHD+gABw/wAAcP+AAHEAAABxAMAAcQEAAHEBQABxAYAAcQHAAHECQABxAsAAcQMAAHEDQABxA8AAcQQAAHEWwABxH4AAcSeAAHEvgABxMAAAcTCAAHExAABxMYAAcTJAAHEygABxMsAAcTOAAHEzwABxNEAAcTSAAHE1AABxNcAAcTYAAHE2QABxNwAAcTdAAHE5gABxPMAAcT4AAHE+gABxPwAAcUBAAHFBAABxQcAAcUJAAHFLgABxVIAAcV5AAHFnQABxaAAAcWiAAHFpAABxaYAAcWoAAHFqgABxasAAcWuAAHFuwABxcwAAcXOAAHF0AABxdIAAcXUAAHF1gABxdgAAcXaAAHF3AABxe0AAcXwAAHF8wABxfYAAcX5AAHF/AABxf8AAcYCAAHGBQABxgcAAcZGAAHGSAABxkoAAcZMAAHGTwABxlAAAcZRAAHGUgABxlMAAcZVAAHGVwABxlgAAcZZAAHGWwABxlwAAcabAAHGnQABxp8AAcahAAHGpAABxqUAAcamAAHGpwABxqgAAcaqAAHGrAABxq0AAcauAAHGsAABxrEAAcbwAAHG8gABxvUAAcb3AAHG+gABxvsAAcb8AAHG/QABxv4AAccAAAHHAgABxwMAAccEAAHHBgABxwcAAccUAAHHFQABxxYAAccYAAHHVwABx1kAAcdbAAHHXQABx2AAAcdhAAHHYgABx2MAAcdkAAHHZgABx2gAAcdpAAHHagABx2wAAcdtAAHHrAABx64AAcewAAHHsgABx7UAAce2AAHHtwABx7gAAce5AAHHuwABx70AAce+AAHHvwABx8EAAcfCAAHIAQAByAMAAcgFAAHIBwAByAoAAcgLAAHIDAAByA0AAcgOAAHIEAAByBIAAcgTAAHIFAAByBYAAcgXAAHIVgAByFgAAchaAAHIXAAByF8AAchgAAHIYQAByGIAAchjAAHIZQAByGcAAchoAAHIaQAByGsAAchsAAHIqwAByK0AAcivAAHIsQAByLQAAci1AAHItgAByLcAAci4AAHIugAByLwAAci9AAHIvgAByMAAAcjBAAHI5gAByQoAAckxAAHJVQAByVgAAclaAAHJXAAByV4AAclgAAHJYgAByWMAAclmAAHJcwAByYIAAcmEAAHJhgAByYgAAcmKAAHJjAAByY4AAcmQAAHJnwAByaIAAcmlAAHJqAAByasAAcmuAAHJsQABybQAAcm2AAHJ9QAByfcAAcn5AAHJ+wAByf4AAcn/AAHKAAABygEAAcoCAAHKBAABygYAAcoHAAHKCAABygoAAcoLAAHKSgABykwAAcpOAAHKUAABylMAAcpUAAHKVQABylYAAcpXAAHKWQABylsAAcpcAAHKXQAByl8AAcpgAAHKnwAByqEAAcqjAAHKpQAByqgAAcqpAAHKqgAByqsAAcqsAAHKrgAByrAAAcqxAAHKsgAByrQAAcq1AAHK9AAByvYAAcr4AAHK+gAByv0AAcr+AAHK/wABywAAAcsBAAHLAwABywUAAcsGAAHLBwABywkAAcsKAAHLSQABy0sAActNAAHLTwABy1IAActTAAHLVAABy1UAActWAAHLWAABy1oAActbAAHLXAABy14AActfAAHLngABy6AAAcuiAAHLpAABy6cAAcuoAAHLqQABy6oAAcurAAHLrQABy68AAcuwAAHLsQABy7MAAcu0AAHL8wABy/UAAcv3AAHL+QABy/wAAcv9AAHL/gABy/8AAcwAAAHMAgABzAQAAcwFAAHMBgABzAgAAcwJAAHMVAABzHcAAcyXAAHMtwABzLkAAcy7AAHMvQABzL8AAczCAAHMwwABzMQAAczHAAHMyAABzMoAAczLAAHMzQABzNAAAczRAAHM0gABzNUAAczWAAHM2wABzOgAAcztAAHM7wABzPEAAcz2AAHM+QABzPwAAcz+AAHNIwABzUcAAc1uAAHNkgABzZUAAc2XAAHNmQABzZsAAc2dAAHNnwABzaAAAc2jAAHNsAABzcEAAc3DAAHNxQABzccAAc3JAAHNywABzc0AAc3PAAHN0QABzeIAAc3lAAHN6AABzesAAc3uAAHN8QABzfQAAc33AAHN+gABzfwAAc47AAHOPQABzj8AAc5BAAHORAABzkUAAc5GAAHORwABzkgAAc5KAAHOTAABzk0AAc5OAAHOUAABzlEAAc6QAAHOkgABzpQAAc6WAAHOmQABzpoAAc6bAAHOnAABzp0AAc6fAAHOoQABzqIAAc6jAAHOpQABzqYAAc7lAAHO5wABzuoAAc7sAAHO7wABzvAAAc7xAAHO8gABzvMAAc71AAHO9wABzvgAAc75AAHO+wABzvwAAc8JAAHPCgABzwsAAc8NAAHPTAABz04AAc9QAAHPUgABz1UAAc9WAAHPVwABz1gAAc9ZAAHPWwABz10AAc9eAAHPXwABz2EAAc9iAAHPoQABz6MAAc+lAAHPpwABz6oAAc+rAAHPrAABz60AAc+uAAHPsAABz7IAAc+zAAHPtAABz7YAAc+3AAHP9gABz/gAAc/6AAHP/AABz/8AAdAAAAHQAQAB0AIAAdADAAHQBQAB0AcAAdAIAAHQCQAB0AsAAdAMAAHQSwAB0E0AAdBPAAHQUQAB0FQAAdBVAAHQVgAB0FcAAdBYAAHQWgAB0FwAAdBdAAHQXgAB0GAAAdBhAAHQoAAB0KIAAdCkAAHQpgAB0KkAAdCqAAHQqwAB0KwAAdCtAAHQrwAB0LEAAdCyAAHQswAB0LUAAdC2AAHQ2wAB0P8AAdEmAAHRSgAB0U0AAdFPAAHRUQAB0VMAAdFVAAHRVwAB0VgAAdFbAAHRaAAB0XcAAdF5AAHRewAB0X0AAdF/AAHRgQAB0YMAAdGFAAHRlAAB0ZcAAdGaAAHRnQAB0aAAAdGjAAHRpgAB0akAAdGrAAHR6gAB0ewAAdHuAAHR8AAB0fMAAdH0AAHR9QAB0fYAAdH3AAHR+QAB0fsAAdH8AAHR/QAB0f8AAdIAAAHSPwAB0kEAAdJDAAHSRQAB0kgAAdJJAAHSSgAB0ksAAdJMAAHSTgAB0lAAAdJRAAHSUgAB0lQAAdJVAAHSlAAB0pYAAdKYAAHSmgAB0p0AAdKeAAHSnwAB0qAAAdKhAAHSowAB0qUAAdKmAAHSpwAB0qkAAdKqAAHS6QAB0usAAdLtAAHS7wAB0vIAAdLzAAHS9AAB0vUAAdL2AAHS+AAB0voAAdL7AAHS/AAB0v4AAdL/AAHTPgAB00AAAdNCAAHTRAAB00cAAdNIAAHTSQAB00oAAdNLAAHTTQAB008AAdNQAAHTUQAB01MAAdNUAAHTkwAB05UAAdOXAAHTmQAB05wAAdOdAAHTngAB058AAdOgAAHTogAB06QAAdOlAAHTpgAB06gAAdOpAAHT6AAB0+oAAdPsAAHT7gAB0/EAAdPyAAHT8wAB0/QAAdP1AAHT9wAB0/kAAdP6AAHT+wAB0/0AAdP+AAHUBwAB1AgAAdQKAAHUSQAB1Es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AAgDNAAIAzgACAM8AAgDRAAIA0gACAN8AAgDgAAIA4QACAOMAAgEiAAIBJAACASYAAgEoAAIBKwACASwAAgEtAAIBLgACAS8AAgExAAIBMwACATQAAgE1AAIBNwACATgAAgF3AAIBeQACAXsAAgF9AAIBgAACAYEAAgGCAAIBgwACAYQAAgGGAAIBiAACAYkAAgGKAAIBjAACAY0AAgHMAAIBzgACAdAAAgHSAAIB1QACAdYAAgHXAAIB2AACAdkAAgHbAAIB3QACAd4AAgHfAAIB4QACAeIAAgIhAAICIwACAiUAAgInAAICKgACAisAAgIsAAICLQACAi4AAgIwAAICMgACAjMAAgI0AAICNgACAjcAAgJ2AAICeAACAnoAAgJ8AAICfwACAoAAAgKBAAICggACAoMAAgKFAAIChwACAogAAgKJAAICiwACAowAAgKxAAIC1QACAvwAAgMgAAIDIwACAyUAAgMnAAIDKQACAysAAgMtAAIDLgACAzEAAgM+AAIDTQACA08AAgNRAAIDUwACA1UAAgNXAAIDWQACA1sAAgNqAAIDbQACA3AAAgNzAAIDdgACA3kAAgN8AAIDfwACA4EAAgPAAAIDwgACA8QAAgPGAAIDyQACA8oAAgPLAAIDzAACA80AAgPPAAID0QACA9IAAgPTAAID1QACA9YAAgQVAAIEFwACBBkAAgQbAAIEHgACBB8AAgQgAAIEIQACBCIAAgQkAAIEJgACBCcAAgQoAAIEKgACBCsAAgRqAAIEbAACBG4AAgRwAAIEcwACBHQAAgR1AAIEdgACBHcAAgR5AAIEewACBHwAAgR9AAIEfwACBIAAAgS/AAIEwQACBMQAAgTGAAIEyQACBMoAAgTLAAIEzAACBM0AAgTPAAIE0QACBNIAAgTTAAIE1QACBNYAAgUZAAIFPQACBWEAAgWEAAIFqwACBcsAAgXyAAIGGQACBjkAAgZdAAIGgQACBoMAAgaGAAIGiAACBooAAgaMAAIGjwACBpIAAgaUAAIGlgACBpkAAgabAAIGnQACBqAAAgajAAIGpAACBqkAAga2AAIGuQACBrsAAga+AAIGwQACBsMAAgboAAIHDAACBzMAAgdXAAIHWgACB1wAAgdeAAIHYAACB2IAAgdkAAIHZQACB2gAAgd1AAIHiAACB4oAAgeMAAIHjgACB5AAAgeSAAIHlAACB5YAAgeYAAIHmgACB60AAgewAAIHswACB7YAAge5AAIHvAACB78AAgfCAAIHxQACB8gAAgfKAAIICQACCAsAAggOAAIIEAACCBMAAggUAAIIFQACCBYAAggXAAIIGQACCBsAAggcAAIIHQACCB8AAgggAAIIKQACCCoAAggsAAIIawACCG0AAghvAAIIcQACCHQAAgh1AAIIdgACCHcAAgh4AAIIegACCHwAAgh9AAIIfgACCIAAAgiBAAIIwAACCMIAAgjFAAIIxwACCMoAAgjLAAIIzAACCM0AAgjOAAII0AACCNIAAgjTAAII1AACCNYAAgjXAAII4AACCOEAAgjjAAIJIgACCSQAAgkmAAIJKAACCSsAAgksAAIJLQACCS4AAgkvAAIJMQACCTMAAgk0AAIJNQACCTcAAgk4AAIJdwACCXkAAgl8AAIJfgACCYEAAgmCAAIJgwACCYQAAgmFAAIJhwACCYkAAgmKAAIJiwACCY0AAgmOAAIJlwACCZgAAgmaAAIJ2QACCdsAAgndAAIJ3wACCeIAAgnjAAIJ5AACCeUAAgnmAAIJ6AACCeoAAgnrAAIJ7AACCe4AAgnvAAIKLgACCjAAAgozAAIKNQACCjgAAgo5AAIKOgACCjsAAgo8AAIKPgACCkAAAgpBAAIKQgACCkQAAgpFAAIKUgACClMAAgpUAAIKVgACCpUAAgqXAAIKmQACCpsAAgqeAAIKnwACCqAAAgqhAAIKogACCqQAAgqmAAIKpwACCqgAAgqqAAIKqwACCuoAAgrsAAIK7gACCvAAAgrzAAIK9AACCvUAAgr2AAIK9wACCvkAAgr7AAIK/AACCv0AAgr/AAILAAACCw0AAgsWAAILGQACCxsAAgseAAILIQACCyoAAgstAAILMAACCzMAAgs2AAILOAACCz0AAgtCAAILRwACC5IAAgu1AAIL1QACC/UAAgv3AAIL+QACC/sAAgv9AAIMAAACDAEAAgwCAAIMBQACDAYAAgwIAAIMCQACDAsAAgwOAAIMDwACDBAAAgwTAAIMFAACDBkAAgwmAAIMKwACDC0AAgwvAAIMNAACDDcAAgw6AAIMPAACDGEAAgyFAAIMrAACDNAAAgzTAAIM1QACDNcAAgzZAAIM2wACDN0AAgzeAAIM4QACDO4AAgz/AAINAQACDQM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AAhfcAAIX3QACF94AAhffAAIX4AACF+IAAhfkAAIX5QACF+YAAhfoAAIX6QACGA4AAhgyAAIYWQACGH0AAhiAAAIYggACGIQAAhiGAAIYiAACGIoAAhiLAAIYjgACGJsAAhiqAAIYrAACGK4AAhiwAAIYsgACGLQAAhi2AAIYuAACGMcAAhjKAAIYzQACGNAAAhjTAAIY1gACGNkAAhjcAAIY3gACGR0AAhkfAAIZIgACGSQAAhknAAIZKAACGSkAAhkqAAIZKwACGS0AAhkvAAIZMAACGTEAAhkzAAIZNAACGXMAAhl1AAIZdwACGXkAAhl8AAIZfQACGX4AAhl/AAIZgAACGYIAAhmEAAIZhQACGYYAAhmIAAIZiQACGcgAAhnKAAIZzAACGc4AAhnRAAIZ0gACGdMAAhnUAAIZ1QACGdcAAhnZAAIZ2gACGdsAAhndAAIZ3gACGh0AAhofAAIaIgACGiQAAhonAAIaKAACGikAAhoqAAIaKwACGi0AAhovAAIaMAACGjEAAhozAAIaNAACGnMAAhp1AAIadwACGnkAAhp8AAIafQACGn4AAhp/AAIagAACGoIAAhqEAAIahQACGoYAAhqIAAIaiQACGsgAAhrKAAIazAACGs4AAhrRAAIa0gACGtMAAhrUAAIa1QACGtcAAhrZAAIa2gACGtsAAhrdAAIa3gACGx0AAhsfAAIbIQACGyMAAhsmAAIbJwACGygAAhspAAIbKgACGywAAhsuAAIbLwACGzAAAhsyAAIbMwACG34AAhuhAAIbwQACG+EAAhvjAAIb5QACG+cAAhvpAAIb7AACG+0AAhvuAAIb8QACG/IAAhv0AAIb9QACG/cAAhv6AAIb+wACG/wAAhv/AAIcAAACHAkAAhwWAAIcGwACHB0AAhwfAAIcJAACHCcAAhwqAAIcLAACHFEAAhx1AAIcnAACHMAAAhzDAAIcxQACHMcAAhzJAAIcywACHM0AAhzOAAIc0QACHN4AAhzvAAIc8QACHPMAAhz1AAIc9wACHPkAAhz7AAIc/QACHP8AAh0QAAIdEwACHRYAAh0ZAAIdHAACHR8AAh0iAAIdJQACHSgAAh0qAAIdaQACHWsAAh1tAAIdbwACHXIAAh1zAAIddAACHXUAAh12AAIdeAACHXoAAh17AAIdfAACHX4AAh1/AAIdvgACHcAAAh3CAAIdxAACHccAAh3IAAIdyQACHcoAAh3LAAIdzQACHc8AAh3QAAId0QACHdMAAh3UAAIeEwACHhUAAh4YAAIeGgACHh0AAh4eAAIeHwACHiAAAh4hAAIeIwACHiUAAh4mAAIeJwACHikAAh4qAAIeNwACHjgAAh45AAIeOwACHnoAAh58AAIefgACHoAAAh6DAAIehAACHoUAAh6GAAIehwACHokAAh6LAAIejAACHo0AAh6PAAIekAACHs8AAh7RAAIe0wACHtUAAh7YAAIe2QACHtoAAh7bAAIe3AACHt4AAh7gAAIe4QACHuIAAh7kAAIe5QACHyQAAh8mAAIfKAACHyoAAh8tAAIfLgACHy8AAh8wAAIfMQACHzMAAh81AAIfNgACHzcAAh85AAIfOgACH3kAAh97AAIffQACH38AAh+CAAIfgwACH4QAAh+FAAIfhgACH4gAAh+KAAIfiwACH4wAAh+OAAIfjwACH84AAh/QAAIf0gACH9QAAh/XAAIf2AACH9kAAh/aAAIf2wACH90AAh/fAAIf4AACH+EAAh/jAAIf5AACIAkAAiAtAAIgVAACIHgAAiB7AAIgfQACIH8AAiCBAAIggwACIIUAAiCGAAIgiQACIJYAAiClAAIgpwACIKkAAiCrAAIgrQACIK8AAiCxAAIgswACIMIAAiDFAAIgyAACIMsAAiDOAAIg0QACINQAAiDXAAIg2QACIRgAAiEaAAIhHQACIR8AAiEiAAIhIwACISQAAiElAAIhJgACISgAAiEqAAIhKwACISwAAiEuAAIhLwACIW4AAiFwAAIhcgACIXQAAiF3AAIheAACIXkAAiF6AAIhewACIX0AAiF/AAIhgAACIYEAAiGDAAIhhAACIcMAAiHFAAIhxwACIckAAiHMAAIhzQACIc4AAiHPAAIh0AACIdIAAiHUAAIh1QACIdYAAiHYAAIh2QACIhgAAiIaAAIiHQACIh8AAiIiAAIiIwACIiQAAiIlAAIiJgACIigAAiIqAAIiKwACIiwAAiIuAAIiLwACIm4AAiJwAAIicgACInQAAiJ3AAIieAACInkAAiJ6AAIiewACIn0AAiJ/AAIigAACIoEAAiKDAAIihAACIsMAAiLFAAIixwACIskAAiLMAAIizQACIs4AAiLPAAIi0AACItIAAiLUAAIi1QACItYAAiLYAAIi2QACIxgAAiMaAAIjHAACIx4AAiMhAAIjIgACIyMAAiMkAAIjJQACIycAAiMpAAIjKgACIysAAiMtAAIjLgACI3kAAiOcAAIjvAACI9wAAiPeAAIj4AACI+IAAiPkAAIj5wACI+gAAiPpAAIj7AACI+0AAiPvAAIj8AACI/IAAiP1AAIj9gACI/cAAiP6AAIj+wACJAAAAiQNAAIkEgACJBQAAiQWAAIkGwACJB4AAiQhAAIkIwACJEgAAiRsAAIkkwACJLcAAiS6AAIkvAACJL4AAiTAAAIkwgACJMQAAiTFAAIkyAACJNUAAiTmAAIk6AACJOoAAiTsAAIk7gACJPAAAiTyAAIk9AACJPYAAiUHAAIlCgACJQ0AAiUQAAIlEwACJRYAAiUZAAIlHAACJR8AAiUhAAIlYAACJWIAAiVkAAIlZgACJWkAAiVqAAIlawACJWwAAiVtAAIlbwACJXEAAiVyAAIlcwACJXUAAiV2AAIltQACJbcAAiW5AAIluwACJb4AAiW/AAIlwAACJcEAAiXCAAIlxAACJcYAAiXHAAIlyAACJcoAAiXLAAImCgACJgwAAiYPAAImEQACJhQAAiYVAAImFgACJhcAAiYYAAImGgACJhwAAiYdAAImHgACJiAAAiYhAAImLgACJi8AAiYwAAImMgACJnEAAiZzAAImdQACJncAAiZ6AAImewACJnwAAiZ9AAImfgACJoAAAiaCAAImgwACJoQAAiaGAAImhwACJsYAAibIAAImygACJswAAibPAAIm0AACJtEAAibSAAIm0wACJtUAAibXAAIm2AACJtkAAibbAAIm3AACJxsAAicdAAInHwACJyEAAickAAInJQACJyYAAicnAAInKAACJyoAAicsAAInLQACJy4AAicwAAInMQACJ3AAAidyAAIndAACJ3YAAid5AAInegACJ3sAAid8AAInfQACJ38AAieBAAInggACJ4MAAieFAAInhgACJ8UAAifHAAInyQACJ8sAAifOAAInzwACJ9AAAifRAAIn0gACJ9QAAifWAAIn1wACJ9gAAifaAAIn2wACKAAAAigkAAIoSwACKG8AAihyAAIodAACKHYAAih4AAIoegACKHwAAih9AAIogAACKI0AAiicAAIongACKKAAAiiiAAIopAACKKYAAiioAAIoqgACKLkAAii8AAIovwACKMIAAijFAAIoyAACKMsAAijOAAIo0AACKQ8AAikRAAIpEwACKRUAAikYAAIpGQACKRoAAikbAAIpHAACKR4AAikgAAIpIQACKSIAAikkAAIpJQACKWQAAilmAAIpaAACKWoAAiltAAIpbgACKW8AAilwAAIpcQACKXMAAil1AAIpdgACKXcAAil5AAIpegACKbkAAim7AAIpvQACKb8AAinCAAIpwwACKcQAAinFAAIpxgACKcgAAinKAAIpywACKcwAAinOAAIpzwACKg4AAioQAAIqEgACKhQAAioXAAIqGAACKhkAAioaAAIqGwACKh0AAiofAAIqIAACKiEAAiojAAIqJAACKmMAAiplAAIqZwACKmkAAipsAAIqbQACKm4AAipvAAIqcAACKnIAAip0AAIqdQACKnYAAip4AAIqeQACKrgAAiq6AAIqvAACKr4AAirBAAIqwgACKsMAAirEAAIqxQACKscAAirJAAIqygACKssAAirNAAIqzgACKw0AAisPAAIrEQACKxMAAisWAAIrFwACKxgAAisZAAIrGgACKxwAAiseAAIrHwACKyAAAisiAAIrIwACKywAAistAAIrLwACK24AAitwAAIrcgACK3QAAit3AAIreAACK3kAAit6AAIrewACK30AAit/AAIrgAACK4EAAiuDAAIrhAACK8MAAivFAAIrxwACK8kAAivMAAIrzQACK84AAivPAAIr0AACK9IAAivUAAIr1QACK9YAAivYAAIr2QACLBgAAiwaAAIsHQACLB8AAiwiAAIsIwACLCQAAiwlAAIsJgACLCgAAiwqAAIsKwACLCwAAiwuAAIsLwACLHoAAiydAAIsvQACLN0AAizfAAIs4QACLOMAAizlAAIs5wACLOgAAizpAAIs7AACLO0AAizvAAIs8AACLPIAAiz0AAIs9QACLPYAAiz5AAIs+gACLP8AAi0MAAItEQACLRMAAi0VAAItGgACLR0AAi0gAAItIgACLUcAAi1rAAItkgACLbYAAi25AAItuwACLb0AAi2/AAItwQACLcMAAi3EAAItxwACLdQAAi3lAAIt5wACLekAAi3rAAIt7QACLe8AAi3xAAIt8wACLfUAAi4GAAIuCQACLgwAAi4PAAIuEgACLhUAAi4YAAIuGwACLh4AAi4gAAIuXwACLmEAAi5jAAIuZQACLmgAAi5pAAIuagACLmsAAi5sAAIubgACLnAAAi5xAAIucgACLnQAAi51AAIutAACLrYAAi64AAIuugACLr0AAi6+AAIuvwACLsAAAi7BAAIuwwACLsUAAi7GAAIuxwACLskAAi7KAAIvCQACLwsAAi8OAAIvEAACLxMAAi8UAAIvFQACLxYAAi8XAAIvGQACLxsAAi8cAAIvHQACLx8AAi8gAAIvLQACLy4AAi8vAAIvMQACL3AAAi9yAAIvdAACL3YAAi95AAIvegACL3sAAi98AAIvfQACL38AAi+BAAIvggACL4MAAi+FAAIvhgACL8UAAi/HAAIvyQACL8sAAi/OAAIvzwACL9AAAi/RAAIv0gACL9QAAi/WAAIv1wACL9gAAi/aAAIv2wACMBoAAjAcAAIwHgACMCAAAjAjAAIwJAACMCUAAjAmAAIwJwACMCkAAjArAAIwLAACMC0AAjAvAAIwMAACMG8AAjBxAAIwcwACMHUAAjB4AAIweQACMHoAAjB7AAIwfAACMH4AAjCAAAIwgQACMIIAAjCEAAIwhQACMMQAAjDGAAIwyAACMMoAAjDNAAIwzgACMM8AAjDQAAIw0QACMNMAAjDVAAIw1gACMNcAAjDZAAIw2gACMP8AAjEjAAIxSgACMW4AAjFxAAIxcwACMXUAAjF3AAIxeQACMXsAAjF8AAIxfwACMYwAAjGbAAIxnQACMZ8AAjGhAAIxowACMaUAAjGnAAIxqQACMbgAAjG7AAIxvgACMcEAAjHEAAIxxwACMcoAAjHNAAIxzwACMg4AAjIQAAIyEwACMhUAAjIYAAIyGQACMhoAAjIbAAIyHAACMh4AAjIgAAIyIQACMiIAAjIkAAIyJQACMmQAAjJmAAIyaAACMmoAAjJtAAIybgACMm8AAjJwAAIycQACMnMAAjJ1AAIydgACMncAAjJ5AAIyegACMrkAAjK7AAIyvQACMr8AAjLCAAIywwACMsQAAjLFAAIyxgACMsgAAjLKAAIyywACMswAAjLOAAIyzwACMw4AAjMQAAIzEwACMxUAAjMYAAIzGQACMxoAAjMbAAIzHAACMx4AAjMgAAIzIQACMyIAAjMkAAIzJQACM2QAAjNmAAIzaAACM2oAAjNtAAIzbgACM28AAjNwAAIzcQACM3MAAjN1AAIzdgACM3cAAjN5AAIzegACM7kAAjO7AAIzvQACM78AAjPCAAIzwwACM8QAAjPFAAIzxgACM8gAAjPKAAIzywACM8wAAjPOAAIzzwACNA4AAjQQAAI0EgACNBQAAjQXAAI0GAACNBkAAjQaAAI0GwACNB0AAjQfAAI0IAACNCEAAjQjAAI0JAACNG8AAjSSAAI0sgACNNIAAjTUAAI01gACNNgAAjTaAAI03AACNN0AAjTeAAI04QACNOIAAjTkAAI05QACNOcAAjTpAAI06gACNOsAAjTuAAI07wACNPgAAjUFAAI1CgACNQwAAjUOAAI1EwACNRYAAjUZAAI1GwACNUAAAjVkAAI1iwACNa8AAjWyAAI1tAACNbYAAjW4AAI1ugACNbwAAjW9AAI1wAACNc0AAjXeAAI14AACNeIAAjXkAAI15gACNegAAjXqAAI17AACNe4AAjX/AAI2AgACNgUAAjYIAAI2CwACNg4AAjYRAAI2FAACNhcAAjYZAAI2WAACNloAAjZcAAI2XgACNmEAAjZiAAI2YwACNmQAAjZlAAI2ZwACNmkAAjZqAAI2awACNm0AAjZuAAI2rQACNq8AAjaxAAI2swACNrYAAja3AAI2uAACNrkAAja6AAI2vAACNr4AAja/AAI2wAACNsIAAjbDAAI3AgACNwQAAjcHAAI3CQACNwwAAjcNAAI3DgACNw8AAjcQAAI3EgACNxQAAjcVAAI3FgACNxgAAjcZAAI3JgACNycAAjcoAAI3KgACN2kAAjdrAAI3bQACN28AAjdyAAI3cwACN3QAAjd1AAI3dgACN3gAAjd6AAI3ewACN3wAAjd+AAI3fwACN74AAjfAAAI3wgACN8QAAjfHAAI3yAACN8kAAjfKAAI3ywACN80AAjfPAAI30AACN9EAAjfTAAI31AACOBMAAjgVAAI4FwACOBkAAjgcAAI4HQACOB4AAjgfAAI4IAACOCIAAjgkAAI4JQACOCYAAjgoAAI4KQACOGgAAjhqAAI4bAACOG4AAjhxAAI4cgACOHMAAjh0AAI4dQACOHcAAjh5AAI4egACOHsAAjh9AAI4fgACOL0AAji/AAI4wQACOMMAAjjGAAI4xwACOMgAAjjJAAI4ygACOMwAAjjOAAI4zwACONAAAjjSAAI40wACOPgAAjkcAAI5QwACOWcAAjlqAAI5bAACOW4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AAkVdAAJFXgACRV8AAkVhAAJFYwACRWQAAkVlAAJFZwACRWgAAkWnAAJFqQACRawAAkWuAAJFsQACRbIAAkWzAAJFtAACRbUAAkW3AAJFuQACRboAAkW7AAJFvQACRb4AAkXLAAJFzAACRc0AAkXPAAJGDgACRhAAAkYSAAJGFAACRhcAAkYYAAJGGQACRhoAAkYbAAJGHQACRh8AAkYgAAJGIQACRiMAAkYkAAJGYwACRmUAAkZnAAJGaQACRmwAAkZtAAJGbgACRm8AAkZwAAJGcgACRnQAAkZ1AAJGdgACRngAAkZ5AAJGuAACRroAAka8AAJGvgACRsEAAkbCAAJGwwACRsQAAkbFAAJGxwACRskAAkbKAAJGywACRs0AAkbOAAJHDQACRw8AAkcRAAJHEwACRxYAAkcXAAJHGAACRxkAAkcaAAJHHAACRx4AAkcfAAJHIAACRyIAAkcjAAJHYgACR2QAAkdmAAJHaAACR2sAAkdsAAJHbQACR24AAkdvAAJHcQACR3MAAkd0AAJHdQACR3cAAkd4AAJHnQACR8EAAkfoAAJIDAACSA8AAkgRAAJIEwACSBUAAkgXAAJIGQACSBoAAkgdAAJIKgACSDkAAkg7AAJIPQACSD8AAkhBAAJIQwACSEUAAkhHAAJIVgACSFkAAkhcAAJIXwACSGIAAkhlAAJIaAACSGsAAkhtAAJIrAACSK4AAkiwAAJIsgACSLUAAki2AAJItwACSLgAAki5AAJIuwACSL0AAki+AAJIvwACSMEAAkjCAAJJAQACSQMAAkkFAAJJBwACSQoAAkkLAAJJDAACSQ0AAkkOAAJJEAACSRIAAkkTAAJJFAACSRYAAkkXAAJJVgACSVgAAklaAAJJXAACSV8AAklgAAJJYQACSWIAAkljAAJJZQACSWcAAkloAAJJaQACSWsAAklsAAJJqwACSa0AAkmwAAJJsgACSbUAAkm2AAJJtwACSbgAAkm5AAJJuwACSb0AAkm+AAJJvwACScEAAknCAAJKBQACSikAAkpNAAJKcAACSpcAAkq3AAJK3gACSwUAAkslAAJLSQACS20AAktvAAJLcgACS3QAAkt2AAJLeAACS3sAAkt+AAJLgAACS4IAAkuFAAJLhwACS4kAAkuMAAJLjwACS5AAAkuVAAJLogACS6UAAkunAAJLqgACS60AAkuvAAJL1AACS/gAAkwfAAJMQwACTEYAAkxIAAJMSgACTEwAAkxOAAJMUAACTFEAAkxUAAJMYQACTHQAAkx2AAJMeAACTHoAAkx8AAJMfgACTIAAAkyCAAJMhAACTIYAAkyZAAJMnAACTJ8AAkyiAAJMpQACTKgAAkyrAAJMrgACTLEAAky0AAJMtgACTPUAAkz3AAJM+gACTPwAAkz/AAJNAAACTQEAAk0CAAJNAwACTQUAAk0HAAJNCAACTQkAAk0LAAJNDAACTRUAAk0WAAJNGAACTVcAAk1ZAAJNWwACTV0AAk1gAAJNYQACTWIAAk1jAAJNZAACTWYAAk1oAAJNaQACTWoAAk1sAAJNbQACTawAAk2uAAJNsQACTbMAAk22AAJNtwACTbgAAk25AAJNugACTbwAAk2+AAJNvwACTcAAAk3CAAJNwwACTcwAAk3NAAJNzwACTg4AAk4QAAJOEgACThQAAk4XAAJOGAACThkAAk4aAAJOGwACTh0AAk4fAAJOIAACTiEAAk4jAAJOJAACTmMAAk5lAAJOaAACTmoAAk5tAAJObgACTm8AAk5wAAJOcQACTnMAAk51AAJOdgACTncAAk55AAJOegACToMAAk6EAAJOhgACTsUAAk7HAAJOyQACTssAAk7OAAJOzwACTtAAAk7RAAJO0gACTtQAAk7WAAJO1wACTtgAAk7aAAJO2wACTxoAAk8cAAJPHwACTyEAAk8kAAJPJQACTyYAAk8nAAJPKAACTyoAAk8sAAJPLQACTy4AAk8wAAJPMQACTz4AAk8/AAJPQAACT0IAAk+BAAJPgwACT4UAAk+HAAJPigACT4sAAk+MAAJPjQACT44AAk+QAAJPkgACT5MAAk+UAAJPlgACT5cAAk/WAAJP2AACT9oAAk/cAAJP3wACT+AAAk/hAAJP4gACT+MAAk/lAAJP5wACT+gAAk/pAAJP6wACT+wAAk/5AAJQBAACUAYAAlAJAAJQCwACUA4AAlARAAJQHAACUB8AAlAiAAJQJQACUCgAAlArAAJQLQACUDMAAlA4AAJQPgACUIkAAlCsAAJQzAACUOwAAlDuAAJQ8AACUPIAAlD0AAJQ9wACUPgAAlD5AAJQ/AACUP0AAlD/AAJRAAACUQIAAlEEAAJRBQACUQYAAlEJAAJRCgACUQ8AAlEcAAJRIQACUSMAAlElAAJRKgACUS0AAlEwAAJRMgACUVcAAlF7AAJRogACUcYAAlHJAAJRywACUc0AAlHPAAJR0QACUdMAAlHUAAJR1wACUeQAAlH1AAJR9wACUfkAAlH7AAJR/QACUf8AAlIBAAJSAwACUgUAAlIWAAJSGQACUhwAAlIfAAJSIgACUiUAAlIoAAJSKwACUi4AAlIwAAJSbwACUnEAAlJzAAJSdQACUngAAlJ5AAJSegACUnsAAlJ8AAJSfgACUoAAAlKBAAJSggACUoQAAlKFAAJSxAACUsYAAlLIAAJSygACUs0AAlLOAAJSzwACUtAAAlLRAAJS0wACUtUAAlLWAAJS1wACUtkAAlLaAAJTGQACUxsAAlMeAAJTIAACUyMAAlMkAAJTJQACUyYAAlMnAAJTKQACUysAAlMsAAJTLQACUy8AAlMwAAJTPQACUz4AAlM/AAJTQQACU4AAAlOCAAJThAACU4YAAlOJAAJTigACU4sAAlOMAAJTjQACU48AAlORAAJTkgACU5MAAlOVAAJTlgACU9UAAlPXAAJT2QACU9sAAlPeAAJT3wACU+AAAlPhAAJT4gACU+QAAlPmAAJT5wACU+gAAlPqAAJT6wACVCoAAlQsAAJULgACVDAAAlQzAAJUNAACVDUAAlQ2AAJUNwACVDkAAlQ7AAJUPAACVD0AAlQ/AAJUQAACVH8AAlSBAAJUgwACVIUAAlSIAAJUiQACVIoAAlSLAAJUjAACVI4AAlSQAAJUkQACVJIAAlSUAAJUlQACVNQAAlTWAAJU2AACVNoAAlTdAAJU3gACVN8AAlTgAAJU4QACVOMAAlTlAAJU5gACVOcAAlTpAAJU6gACVQ8AAlUzAAJVWgACVX4AAlWBAAJVgwACVYUAAlWHAAJViQACVYsAAlWMAAJVjwACVZwAAlWrAAJVrQACVa8AAlWxAAJVswACVbUAAlW3AAJVuQACVcgAAlXLAAJVzgACVdEAAlXUAAJV1wACVdoAAlXdAAJV3wACVh4AAlYgAAJWIwACViUAAlYoAAJWKQACVioAAlYrAAJWLAACVi4AAlYwAAJWMQACVjIAAlY0AAJWNQACVnQAAlZ2AAJWeAACVnoAAlZ9AAJWfgACVn8AAlaAAAJWgQACVoMAAlaFAAJWhgACVocAAlaJAAJWigACVskAAlbLAAJWzQACVs8AAlbSAAJW0wACVtQAAlbVAAJW1gACVtgAAlbaAAJW2wACVtwAAlbeAAJW3wACVx4AAlcgAAJXIwACVyUAAlcoAAJXKQACVyoAAlcrAAJXLAACVy4AAlcwAAJXMQACVzIAAlc0AAJXNQACV3QAAld2AAJXeAACV3oAAld9AAJXfgACV38AAleAAAJXgQACV4MAAleFAAJXhgACV4cAAleJAAJXigACV8kAAlfLAAJXzQACV88AAlfSAAJX0wACV9QAAlfVAAJX1gACV9gAAlfaAAJX2wACV9wAAlfeAAJX3wACWB4AAlggAAJYIgACWCQAAlgnAAJYKAACWCkAAlgqAAJYKwACWC0AAlgvAAJYMAACWDEAAlgzAAJYNAACWH8AAliiAAJYwgACWOIAAljkAAJY5gACWOgAAljqAAJY7QACWO4AAljvAAJY8gACWPMAAlj1AAJY9gACWPgAAlj7AAJY/AACWP0AAlkAAAJZAQACWQYAAlkTAAJZGAACWRoAAlkcAAJZIQACWSQAAlknAAJZKQACWU4AAllyAAJZmQACWb0AAlnAAAJZwgACWcQAAlnGAAJZyAACWcoAAlnLAAJZzgACWdsAAlnsAAJZ7gACWfAAAlnyAAJZ9AACWfYAAln4AAJZ+gACWfwAAloNAAJaEAACWhMAAloWAAJaGQACWhwAAlofAAJaIgACWiUAAlonAAJaZgACWmgAAlpqAAJabAACWm8AAlpwAAJacQACWnIAAlpzAAJadQACWncAAlp4AAJaeQACWnsAAlp8AAJauwACWr0AAlq/AAJawQACWsQAAlrFAAJaxgACWscAAlrIAAJaygACWswAAlrNAAJazgACWtAAAlrRAAJbEAACWxIAAlsVAAJbFwACWxoAAlsbAAJbHAACWx0AAlseAAJbIAACWyIAAlsjAAJbJAACWyYAAlsnAAJbNAACWzUAAls2AAJbOAACW3cAAlt5AAJbewACW30AAluAAAJbgQACW4IAAluDAAJbhAACW4YAAluIAAJbiQACW4oAAluMAAJbjQACW8wAAlvOAAJb0AACW9IAAlvVAAJb1gACW9cAAlvYAAJb2QACW9sAAlvdAAJb3gACW98AAlvhAAJb4gACXCEAAlwjAAJcJQACXCcAAlwqAAJcKwACXCwAAlwtAAJcLgACXDAAAlwyAAJcMwACXDQAAlw2AAJcNwACXHYAAlx4AAJcegACXHwAAlx/AAJcgAACXIEAAlyCAAJcgwACXIUAAlyHAAJciAACXIkAAlyLAAJcjAACXMsAAlzNAAJczwACXNEAAlzUAAJc1QACXNYAAlzXAAJc2AACXNoAAlzcAAJc3QACXN4AAlzgAAJc4QACXQYAAl0qAAJdUQACXXUAAl14AAJdegACXXwAAl1+AAJdgAACXYIAAl2DAAJdhgACXZMAAl2iAAJdpAACXaYAAl2oAAJdqgACXawAAl2uAAJdsAACXb8AAl3CAAJdxQACXcgAAl3LAAJdzgACXdEAAl3UAAJd1gACXhUAAl4XAAJeGgACXhwAAl4fAAJeIAACXiEAAl4iAAJeIwACXiUAAl4nAAJeKAACXikAAl4rAAJeLAACXmsAAl5tAAJebwACXnEAAl50AAJedQACXnYAAl53AAJeeAACXnoAAl58AAJefQACXn4AAl6AAAJegQACXsAAAl7CAAJexAACXsYAAl7JAAJeygACXssAAl7MAAJezQACXs8AAl7RAAJe0gACXtMAAl7VAAJe1gACXxUAAl8XAAJfGgACXxwAAl8fAAJfIAACXyEAAl8iAAJfIwACXyUAAl8nAAJfKAACXykAAl8rAAJfLAACX2sAAl9tAAJfbwACX3EAAl90AAJfdQACX3YAAl93AAJfeAACX3oAAl98AAJffQACX34AAl+AAAJfgQACX8AAAl/CAAJfxAACX8YAAl/JAAJfygACX8sAAl/MAAJfzQACX88AAl/RAAJf0gACX9MAAl/VAAJf1gACYBUAAmAXAAJgGQACYBsAAmAeAAJgHwACYCAAAmAhAAJgIgACYCQAAmAmAAJgJwACYCgAAmAqAAJgKwACYHYAAmCZAAJguQACYNkAAmDbAAJg3QACYN8AAmDhAAJg5AACYOUAAmDmAAJg6QACYOoAAmDsAAJg7QACYO8AAmDxAAJg8gACYPMAAmD2AAJg9wACYPwAAmEJAAJhDgACYRAAAmESAAJhFwACYRoAAmEdAAJhHwACYUQAAmFoAAJhjwACYbMAAmG2AAJhuAACYboAAmG8AAJhvgACYcAAAmHBAAJhxAACYdEAAmHiAAJh5AACYeYAAmHoAAJh6gACYewAAmHuAAJh8AACYfIAAmIDAAJiBgACYgkAAmIMAAJiDwACYhIAAmIVAAJiGAACYhsAAmIdAAJiXAACYl4AAmJgAAJiYgACYmUAAmJmAAJiZwACYmgAAmJpAAJiawACYm0AAmJuAAJibwACYnEAAmJyAAJisQACYrMAAmK1AAJitwACYroAAmK7AAJivAACYr0AAmK+AAJiwAACYsIAAmLDAAJixAACYsYAAmLHAAJjBgACYwgAAmMLAAJjDQACYxAAAmMRAAJjEgACYxMAAmMUAAJjFgACYxgAAmMZAAJjGgACYxwAAmMdAAJjKgACYysAAmMsAAJjLgACY20AAmNvAAJjcQACY3MAAmN2AAJjdwACY3gAAmN5AAJjegACY3wAAmN+AAJjfwACY4AAAmOCAAJjgwACY8IAAmPEAAJjxgACY8gAAmPLAAJjzAACY80AAmPOAAJjzwACY9EAAmPTAAJj1AACY9UAAmPXAAJj2AACZBcAAmQZAAJkGwACZB0AAmQgAAJkIQACZCIAAmQjAAJkJAACZCYAAmQoAAJkKQACZCoAAmQsAAJkLQACZGwAAmRuAAJkcAACZHIAAmR1AAJkdgACZHcAAmR4AAJkeQACZHsAAmR9AAJkfgACZH8AAmSBAAJkggACZMEAAmTDAAJkxQACZMcAAmTKAAJkywACZMwAAmTNAAJkzgACZNAAAmTSAAJk0wACZNQAAmTWAAJk1wACZPwAAmUgAAJlRwACZWsAAmVuAAJlcAACZXIAAmV0AAJldgACZXgAAmV5AAJlfAACZYkAAmWYAAJlmgACZZwAAmWeAAJloAACZaIAAmWkAAJlpgACZbUAAmW4AAJluwACZb4AAmXBAAJlxAACZccAAmXKAAJlzAACZgsAAmYNAAJmDwACZhEAAmYUAAJmFQACZhYAAmYXAAJmGAACZhoAAmYcAAJmHQACZh4AAmYgAAJmIQACZmAAAmZiAAJmZAACZmYAAmZpAAJmagACZmsAAmZsAAJmbQACZm8AAmZxAAJmcgACZnMAAmZ1AAJmdgACZrUAAma3AAJmuQACZrsAAma+AAJmvwACZsAAAmbBAAJmwgACZsQAAmbGAAJmxwACZsgAAmbKAAJmywACZwoAAmcMAAJnDgACZxAAAmcTAAJnFAACZxUAAmcWAAJnFwACZxkAAmcbAAJnHAACZx0AAmcfAAJnIAACZ18AAmdhAAJnYwACZ2UAAmdoAAJnaQACZ2oAAmdrAAJnbAACZ24AAmdwAAJncQACZ3IAAmd0AAJndQACZ7QAAme2AAJnuAACZ7oAAme9AAJnvgACZ78AAmfAAAJnwQACZ8MAAmfFAAJnxgACZ8cAAmfJAAJnygACaAkAAmgLAAJoDQACaA8AAmgSAAJoEwACaBQAAmgVAAJoFgACaBgAAmgaAAJoGwACaBwAAmgeAAJoHwACaGoAAmiNAAJorQACaM0AAmjPAAJo0QACaNMAAmjVAAJo2AACaNkAAmjaAAJo3QACaN4AAmjgAAJo4QACaOMAAmjmAAJo5wACaOgAAmjrAAJo7AACaPEAAmj+AAJpAwACaQUAAmkHAAJpDAACaQ8AAmkSAAJpFAACaTkAAmldAAJphAACaagAAmmrAAJprQACaa8AAmmxAAJpswACabUAAmm2AAJpuQACacYAAmnXAAJp2QACadsAAmndAAJp3wACaeEAAmnjAAJp5QACaecAAmn4AAJp+wACaf4AAmoBAAJqBAACagcAAmoKAAJqDQACahAAAmoSAAJqUQACalMAAmpVAAJqVwACaloAAmpbAAJqXAACal0AAmpeAAJqYAACamIAAmpjAAJqZAACamYAAmpnAAJqpgACaqgAAmqqAAJqrAACaq8AAmqwAAJqsQACarIAAmqzAAJqtQACarcAAmq4AAJquQACarsAAmq8AAJq+wACav0AAmsAAAJrAgACawUAAmsGAAJrBwACawgAAmsJAAJrCwACaw0AAmsOAAJrDwACaxEAAmsSAAJrHwACayAAAmshAAJrIwACa2IAAmtkAAJrZgACa2gAAmtrAAJrbAACa20AAmtuAAJrbwACa3EAAmtzAAJrdAACa3UAAmt3AAJreAACa7cAAmu5AAJruwACa70AAmvAAAJrwQACa8IAAmvDAAJrxAACa8YAAmvIAAJryQACa8oAAmvMAAJrzQACbAwAAmwOAAJsEAACbBIAAmwVAAJsFgACbBcAAmwYAAJsGQACbBsAAmwdAAJsHgACbB8AAmwhAAJsIgACbGEAAmxjAAJsZQACbGcAAmxqAAJsawACbGwAAmxtAAJsbgACbHAAAmxyAAJscwACbHQAAmx2AAJsdwACbLYAAmy4AAJsugACbLwAAmy/AAJswAACbMEAAmzCAAJswwACbMUAAmzHAAJsyAACbMkAAmzLAAJszAACbPEAAm0VAAJtPAACbWAAAm1jAAJtZQACbWcAAm1pAAJtawACbW0AAm1uAAJtcQACbX4AAm2NAAJtjwACbZEAAm2TAAJtlQACbZcAAm2ZAAJtmwACbaoAAm2tAAJtsAACbbMAAm22AAJtuQACbbwAAm2/AAJtwQACbgAAAm4CAAJuBAACbgYAAm4JAAJuCgACbgsAAm4MAAJuDQACbg8AAm4RAAJuEgACbhMAAm4VAAJuFgACblUAAm5XAAJuWQACblsAAm5eAAJuXwACbmAAAm5hAAJuYgACbmQAAm5mAAJuZwACbmgAAm5qAAJuawACbqoAAm6sAAJurgACbrAAAm6zAAJutAACbrUAAm62AAJutwACbrkAAm67AAJuvAACbr0AAm6/AAJuwAACbv8AAm8BAAJvBAACbwYAAm8JAAJvCgACbwsAAm8MAAJvDQACbw8AAm8RAAJvEgACbxMAAm8VAAJvFgACb1UAAm9XAAJvWQACb1sAAm9eAAJvXwACb2AAAm9hAAJvYgACb2QAAm9mAAJvZwACb2gAAm9qAAJvawACb6oAAm+sAAJvrgACb7AAAm+zAAJvtAACb7UAAm+2AAJvtwACb7kAAm+7AAJvvAACb70AAm+/AAJvwAACb/8AAnABAAJwBAACcAYAAnAJAAJwCgACcAsAAnAMAAJwDQACcA8AAnARAAJwEgACcBMAAnAVAAJwFgACcGEAAnCEAAJwpAACcMQAAnDGAAJwyAACcMoAAnDMAAJwzwACcNAAAnDRAAJw1AACcNUAAnDXAAJw2AACcNoAAnDdAAJw3gACcN8AAnDiAAJw4wACcOwAAnD5AAJw/gACcQAAAnECAAJxBwACcQoAAnENAAJxDwACcTQAAnFYAAJxfwACcaMAAnGmAAJxqAACcaoAAnGsAAJxrgACcbAAAnGxAAJxtAACccEAAnHSAAJx1AACcdYAAnHYAAJx2gACcdwAAnHeAAJx4AACceIAAnHzAAJx9gACcfkAAnH8AAJx/wACcgIAAnIFAAJyCAACcgsAAnINAAJyTAACck4AAnJQAAJyUgACclUAAnJWAAJyVwACclgAAnJZAAJyWwACcl0AAnJeAAJyXwACcmEAAnJiAAJyoQACcqMAAnKlAAJypwACcqoAAnKrAAJyrAACcq0AAnKuAAJysAACcrIAAnKzAAJytAACcrYAAnK3AAJy9gACcvgAAnL7AAJy/QACcwAAAnMBAAJzAgACcwMAAnMEAAJzBgACcwgAAnMJAAJzCgACcwwAAnMNAAJzGgACcxsAAnMcAAJzHgACc10AAnNfAAJzYQACc2MAAnNmAAJzZwACc2gAAnNpAAJzagACc2wAAnNuAAJzbwACc3AAAnNyAAJzcwACc7IAAnO0AAJztgACc7gAAnO7AAJzvAACc70AAnO+AAJzvwACc8EAAnPDAAJzxAACc8UAAnPHAAJzyAACdAcAAnQJAAJ0CwACdA0AAnQQAAJ0EQACdBIAAnQTAAJ0FAACdBYAAnQYAAJ0GQACdBoAAnQcAAJ0HQACdFwAAnReAAJ0YAACdGIAAnRlAAJ0ZgACdGcAAnRoAAJ0aQACdGsAAnRtAAJ0bgACdG8AAnRxAAJ0cgACdLEAAnSzAAJ0tQACdLcAAnS6AAJ0uwACdLwAAnS9AAJ0vgACdMAAAnTCAAJ0wwACdMQAAnTGAAJ0xwACdOwAAnUQAAJ1NwACdVsAAnVeAAJ1YAACdWIAAnVkAAJ1ZgACdWgAAnVpAAJ1bAACdXkAAnWIAAJ1igACdYwAAnWOAAJ1kAACdZIAAnWUAAJ1lgACdaUAAnWoAAJ1qwACda4AAnWxAAJ1tAACdbcAAnW6AAJ1vAACdfsAAnX9AAJ2AAACdgIAAnYFAAJ2BgACdgcAAnYIAAJ2CQACdgsAAnYNAAJ2DgACdg8AAnYRAAJ2EgACdlEAAnZTAAJ2VQACdlcAAnZaAAJ2WwACdlwAAnZdAAJ2XgACdmAAAnZiAAJ2YwACdmQAAnZmAAJ2ZwACdqYAAnaoAAJ2qgACdqwAAnavAAJ2sAACdrEAAnayAAJ2swACdrUAAna3AAJ2uAACdrkAAna7AAJ2vAACdvsAAnb9AAJ3AAACdwIAAncFAAJ3BgACdwcAAncIAAJ3CQACdwsAAncNAAJ3DgACdw8AAncRAAJ3EgACd1EAAndTAAJ3VQACd1cAAndaAAJ3WwACd1wAAnddAAJ3XgACd2AAAndiAAJ3YwACd2QAAndmAAJ3ZwACd6YAAneoAAJ3qgACd6wAAnevAAJ3sAACd7EAAneyAAJ3swACd7UAAne3AAJ3uAACd7kAAne7AAJ3vAACd/sAAnf9AAJ3/wACeAEAAngEAAJ4BQACeAYAAngHAAJ4CAACeAoAAngMAAJ4DQACeA4AAngQAAJ4EQACeBoAAngbAAJ4HQACeFwAAnheAAJ4YAACeGIAAnhlAAJ4ZgACeGcAAnhoAAJ4aQACeGsAAnhtAAJ4bgACeG8AAnhxAAJ4cgACeLEAAnizAAJ4tQACeLcAAni6AAJ4uwACeLwAAni9AAJ4vgACeMAAAnjCAAJ4wwACeMQAAnjGAAJ4xwACeQYAAnkIAAJ5CwACeQ0AAnkQAAJ5EQACeRIAAnkTAAJ5FAACeRYAAnkYAAJ5GQACeRoAAnkcAAJ5HQACeSYAAnkpAAJ5LAACeS4AAnkzAAJ5PAACeVUAAnleAAJ5dwACeY4AAnmgAAJ5vQACecAAAnnCAAJ5xAACecYAAnnJAAJ5ywACedAAAnoPAAJ6EQACehMAAnoVAAJ6FwACehgAAnoZAAJ6GgACehsAAnodAAJ6HwACeiAAAnohAAJ6IwACeiQAAnpjAAJ6ZQACemcAAnppAAJ6awACemwAAnptAAJ6bgACem8AAnpxAAJ6cwACenQAAnp1AAJ6dwACengAAnq3AAJ6uQACersAAnq9AAJ6vwACesAAAnrBAAJ6wgACesMAAnrFAAJ6xwACesgAAnrJAAJ6ywACeswAAnrVAAJ62AACetsAAnrdAAJ7IAACe0QAAntoAAJ7iwACe7IAAnvSAAJ7+QACfCAAAnxAAAJ8ZAACfIgAAnyKAAJ8jQACfI8AAnyRAAJ8kwACfJYAAnyZAAJ8mwACfJ0AAnygAAJ8ogACfKQAAnynAAJ8qgACfKsAAnywAAJ8vQACfMAAAnzCAAJ8xQACfMgAAnzKAAJ87wACfRMAAn06AAJ9XgACfWEAAn1jAAJ9ZQACfWcAAn1pAAJ9awACfWwAAn1vAAJ9fAACfY8AAn2RAAJ9kwACfZUAAn2XAAJ9mQACfZsAAn2dAAJ9nwACfaEAAn20AAJ9twACfboAAn29AAJ9wAACfcMAAn3GAAJ9yQACfcwAAn3PAAJ90QACfhAAAn4SAAJ+FQACfhcAAn4aAAJ+GwACfhwAAn4dAAJ+HgACfiAAAn4iAAJ+IwACfiQAAn4mAAJ+JwACfjAAAn4xAAJ+MwACfnIAAn50AAJ+dgACfngAAn57AAJ+fAACfn0AAn5+AAJ+fwACfoEAAn6DAAJ+hAACfoUAAn6HAAJ+iAACfscAAn7JAAJ+zAACfs4AAn7RAAJ+0gACftMAAn7UAAJ+1QACftcAAn7ZAAJ+2gACftsAAn7dAAJ+3gACfucAAn7oAAJ+6gACfykAAn8rAAJ/LQACfy8AAn8yAAJ/MwACfzQAAn81AAJ/NgACfzgAAn86AAJ/OwACfzwAAn8+AAJ/PwACf34AAn+AAAJ/gwACf4UAAn+IAAJ/iQACf4oAAn+LAAJ/jAACf44AAn+QAAJ/kQACf5IAAn+UAAJ/lQACf54AAn+fAAJ/oQACf+AAAn/iAAJ/5AACf+YAAn/pAAJ/6gACf+sAAn/sAAJ/7QACf+8AAn/xAAJ/8gACf/MAAn/1AAJ/9gACgDUAAoA3AAKAOgACgDwAAoA/AAKAQAACgEEAAoBCAAKAQwACgEUAAoBHAAKASAACgEkAAoBLAAKATAACgFkAAoBaAAKAWwACgF0AAoCcAAKAngACgKAAAoCiAAKApQACgKYAAoCnAAKAqAACgKkAAoCrAAKArQACgK4AAoCvAAKAsQACgLIAAoDxAAKA8wACgPUAAoD3AAKA+gACgPsAAoD8AAKA/QACgP4AAoEAAAKBAgACgQMAAoEEAAKBBgACgQcAAoEUAAKBHQACgSAAAoEjAAKBJQACgSgAAoExAAKBNAACgTcAAoE6AAKBPQACgT8AAoFFAAKBVwACgWQAAoGvAAKB0gACgfIAAoISAAKCFAACghYAAoIYAAKCGgACgh0AAoIeAAKCHwACgiIAAoIjAAKCJQACgiYAAoIoAAKCKwACgiwAAoItAAKCMAACgjEAAoI2AAKCQwACgkgAAoJKAAKCTAACglEAAoJUAAKCVwACglkAAoJ+AAKCogACgskAAoLtAAKC8AACgvIAAoL0AAKC9gACgvgAAoL6AAKC+wACgv4AAoMLAAKDHAACgx4AAoMgAAKDIgACgyQAAoMmAAKDKAACgyoAAoMsAAKDPQACg0AAAoNDAAKDRgACg0kAAoNMAAKDTwACg1IAAoNVAAKDVwACg5YAAoOYAAKDmgACg5wAAoOfAAKDoAACg6EAAoOiAAKDowACg6UAAoOnAAKDqAACg6kAAoOrAAKDrAACg+sAAoPtAAKD7wACg/EAAoP0AAKD9QACg/YAAoP3AAKD+AACg/oAAoP8AAKD/QACg/4AAoQAAAKEAQAChEAAAoRCAAKERQAChEcAAoRKAAKESwAChEwAAoRNAAKETgAChFAAAoRSAAKEUwAChFQAAoRWAAKEVwAChGQAAoRlAAKEZgAChGgAAoSnAAKEqQAChKsAAoStAAKEsAAChLEAAoSyAAKEswAChLQAAoS2AAKEuAAChLkAAoS6AAKEvAAChL0AAoT8AAKE/gAChQAAAoUCAAKFBQAChQYAAoUHAAKFCAAChQkAAoULAAKFDQAChQ4AAoUPAAKFEQAChRIAAoVRAAKFUwAChVUAAoVXAAKFWgAChVsAAoVcAAKFXQAChV4AAoVgAAKFYgAChWMAAoVkAAKFZgAChWcAAoWmAAKFqAAChaoAAoWsAAKFrwAChbAAAoWxAAKFsgAChbMAAoW1AAKFtwAChbgAAoW5AAKFuwAChbwAAoX7AAKF/QAChf8AAoYBAAKGBAAChgUAAoYGAAKGBwAChggAAoYKAAKGDAAChg0AAoYOAAKGEAAChhEAAoY2AAKGWgAChoEAAoalAAKGqAAChqoAAoasAAKGrgAChrAAAoayAAKGswAChrYAAobDAAKG0gAChtQAAobWAAKG2AAChtoAAobcAAKG3gAChuAAAobvAAKG8gAChvUAAob4AAKG+wAChv4AAocBAAKHBAAChwYAAodFAAKHRwACh0kAAodLAAKHTgACh08AAodQAAKHUQACh1IAAodUAAKHVgACh1cAAodYAAKHWgACh1sAAoeaAAKHnAACh54AAoegAAKHowACh6QAAoelAAKHpgACh6cAAoepAAKHqwACh6wAAoetAAKHrwACh7AAAofvAAKH8QACh/MAAof1AAKH+AACh/kAAof6AAKH+wACh/wAAof+AAKIAAACiAEAAogCAAKIBAACiAUAAohEAAKIRgACiEgAAohKAAKITQACiE4AAohPAAKIUAACiFEAAohTAAKIVQACiFYAAohXAAKIWQACiFoAAoiZAAKImwACiJ0AAoifAAKIogACiKMAAoikAAKIpQACiKYAAoioAAKIqgACiKsAAoisAAKIrgACiK8AAojuAAKI8AACiPIAAoj0AAKI9wACiPgAAoj5AAKI+gACiPsAAoj9AAKI/wACiQAAAokBAAKJAwACiQQAAolDAAKJRQACiUcAAolJAAKJTAACiU0AAolOAAKJTwACiVAAAolSAAKJVAACiVUAAolWAAKJWAACiVkAAomkAAKJxwACiecAAooHAAKKCQACigsAAooNAAKKDwACihIAAooTAAKKFAACihcAAooYAAKKGgACihsAAoodAAKKIAACiiEAAooiAAKKJQACiiYAAoovAAKKPAACikEAAopDAAKKRQACikoAAopNAAKKUAACilIAAop3AAKKmwACisIAAormAAKK6QACiusAAortAAKK7wACivEAAorzAAKK9AACivcAAosEAAKLFQACixcAAosZAAKLGwACix0AAosfAAKLIQACiyMAAoslAAKLNgACizkAAos8AAKLPwACi0IAAotFAAKLSAACi0sAAotOAAKLUAACi48AAouRAAKLkwACi5UAAouYAAKLmQACi5oAAoubAAKLnAACi54AAougAAKLoQACi6IAAoukAAKLpQACi+QAAovmAAKL6AACi+oAAovtAAKL7gACi+8AAovwAAKL8QACi/MAAov1AAKL9gACi/cAAov5AAKL+gACjDkAAow7AAKMPgACjEAAAoxDAAKMRAACjEUAAoxGAAKMRwACjEkAAoxLAAKMTAACjE0AAoxPAAKMUAACjF0AAoxeAAKMXwACjGEAAoygAAKMogACjKQAAoymAAKMqQACjKoAAoyrAAKMrAACjK0AAoyvAAKMsQACjLIAAoyzAAKMtQACjLYAAoz1AAKM9wACjPkAAoz7AAKM/gACjP8AAo0AAAKNAQACjQIAAo0EAAKNBgACjQcAAo0IAAKNCgACjQsAAo1KAAKNTAACjU4AAo1QAAKNUwACjVQAAo1VAAKNVgACjVcAAo1ZAAKNWwACjVwAAo1dAAKNXwACjWAAAo2fAAKNoQACjaMAAo2lAAKNqAACjakAAo2qAAKNqwACjawAAo2uAAKNsAACjbEAAo2yAAKNtAACjbUAAo30AAKN9gACjfgAAo36AAKN/QACjf4AAo3/AAKOAAACjgEAAo4DAAKOBQACjgYAAo4HAAKOCQACjgoAAo4vAAKOUwACjnoAAo6eAAKOoQACjqMAAo6lAAKOpwACjqkAAo6rAAKOrAACjq8AAo68AAKOywACjs0AAo7PAAKO0QACjtMAAo7VAAKO1wACjtkAAo7oAAKO6wACju4AAo7xAAKO9AACjvcAAo76AAKO/QACjv8AAo8+AAKPQAACj0IAAo9EAAKPRwACj0gAAo9JAAKPSgACj0sAAo9NAAKPTwACj1AAAo9RAAKPUwACj1QAAo+TAAKPlQACj5cAAo+ZAAKPnAACj50AAo+eAAKPnwACj6AAAo+iAAKPpAACj6UAAo+mAAKPqAACj6kAAo/oAAKP6gACj+wAAo/uAAKP8QACj/IAAo/zAAKP9AACj/UAAo/3AAKP+QACj/oAAo/7AAKP/QACj/4AApA9AAKQPwACkEIAApBEAAKQRwACkEgAApBJAAKQSgACkEsAApBNAAKQTwACkFAAApBRAAKQUwACkFQAApCTAAKQlQACkJcAApCZAAKQnAACkJ0AApCeAAKQnwACkKAAApCiAAKQpAACkKUAApCmAAKQqAACkKkAApDoAAKQ6gACkOwAApDuAAKQ8QACkPIAApDzAAKQ9AACkPUAApD3AAKQ+QACkPoAApD7AAKQ/QACkP4AApE9AAKRPwACkUEAApFDAAKRRgACkUcAApFIAAKRSQACkUoAApFMAAKRTgACkU8AApFQAAKRUgACkVMAApGeAAKRwQACkeEAApIBAAKSAwACkgUAApIHAAKSCQACkgwAApINAAKSDgACkhEAApISAAKSFAACkhUAApIXAAKSGQACkhoAApIbAAKSHgACkh8AApIkAAKSMQACkjYAApI4AAKSOgACkj8AApJCAAKSRQACkkcAApJsAAKSkAACkrcAApLbAAKS3gACkuAAApLiAAKS5AACkuYAApLoAAKS6QACkuwAApL5AAKTCgACkwwAApMOAAKTEAACkxIAApMUAAKTFgACkxgAApMaAAKTKwACky4AApMxAAKTNAACkzcAApM6AAKTPQACk0AAApNDAAKTRQACk4QAApOGAAKTiAACk4oAApONAAKTjgACk48AApOQAAKTkQACk5MAApOVAAKTlgACk5cAApOZAAKTmgACk9kAApPbAAKT3QACk98AApPiAAKT4wACk+QAApPlAAKT5gACk+gAApPqAAKT6wACk+wAApPuAAKT7wAClC4AApQwAAKUMwAClDUAApQ4AAKUOQAClDoAApQ7AAKUPAAClD4AApRAAAKUQQAClEIAApREAAKURQAClFIAApRTAAKUVAAClFYAApSVAAKUlwAClJkAApSbAAKUngAClJ8AApSgAAKUoQAClKIAApSkAAKUpgAClKcAApSoAAKUqgAClKsAApTqAAKU7AAClO4AApTwAAKU8wAClPQAApT1AAKU9gAClPcAApT5AAKU+wAClPwAApT9AAKU/wAClQAAApU/AAKVQQAClUMAApVFAAKVSAAClUkAApVKAAKVSwAClUwAApVOAAKVUAAClVEAApVSAAKVVAAClVUAApWUAAKVlgAClZgAApWaAAKVnQAClZ4AApWfAAKVoAAClaEAApWjAAKVpQAClaYAApWnAAKVqQAClaoAApXpAAKV6wACle0AApXvAAKV8gAClfMAApX0AAKV9QAClfYAApX4AAKV+gAClfsAApX8AAKV/gAClf8AApYkAAKWSAAClm8AApaTAAKWlgAClpgAApaaAAKWnAAClp4AApagAAKWoQAClqQAApaxAAKWwAAClsIAApbEAAKWxgAClsgAApbKAAKWzAACls4AApbdAAKW4AACluMAApbmAAKW6QACluwAApbvAAKW8gAClvQAApczAAKXNQAClzcAApc5AAKXPAAClz0AApc+AAKXPwACl0AAApdCAAKXRAACl0UAApdGAAKXSAACl0kAApeIAAKXigACl4wAApeOAAKXkQACl5IAApeTAAKXlAACl5UAApeXAAKXmQACl5oAApebAAKXnQACl54AApfdAAKX3wACl+EAApfjAAKX5gACl+cAApfoAAKX6QACl+oAApfsAAKX7gACl+8AApfwAAKX8gACl/MAApgyAAKYNAACmDYAApg4AAKYOwACmDwAApg9AAKYPgACmD8AAphBAAKYQwACmEQAAphFAAKYRwACmEgAApiHAAKYiQACmIsAApiNAAKYkAACmJEAApiSAAKYkwACmJQAApiWAAKYmAACmJkAApiaAAKYnAACmJ0AApjcAAKY3gACmOAAApjiAAKY5QACmOYAApjnAAKY6AACmOkAApjrAAKY7QACmO4AApjvAAKY8QACmPIAApkxAAKZMwACmTUAApk3AAKZOgACmTsAApk8AAKZPQACmT4AAplAAAKZQgACmUMAAplEAAKZRgACmUcAApmSAAKZtQACmdUAApn1AAKZ9wACmfkAApn7AAKZ/QACmgAAApoBAAKaAgACmgUAApoGAAKaCAACmgkAApoLAAKaDgACmg8AApoQAAKaEwACmhQAApoZAAKaJgACmisAApotAAKaLwACmjQAApo3AAKaOgACmjwAApphAAKahQACmqwAAprQAAKa0wACmtUAAprXAAKa2QACmtsAAprdAAKa3gACmuEAApruAAKa/wACmwEAApsDAAKbBQACmwcAApsJAAKbCwACmw0AApsPAAKbIAACmyMAApsmAAKbKQACmywAApsvAAKbMgACmzUAAps4AAKbOgACm3kAApt7AAKbfQACm38AApuCAAKbgwACm4QAApuFAAKbhgACm4gAApuKAAKbiwACm4wAApuOAAKbjwACm84AApvQAAKb0gACm9QAApvXAAKb2AACm9kAApvaAAKb2wACm90AApvfAAKb4AACm+EAApvjAAKb5AACnCMAApwlAAKcKAACnCoAApwtAAKcLgACnC8AApwwAAKcMQACnDMAApw1AAKcNgACnDcAApw5AAKcOgACnEcAApxIAAKcSQACnEsAApyKAAKcjAACnI4AApyQAAKckwACnJQAApyVAAKclgACnJcAApyZAAKcmwACnJwAApydAAKcnwACnKAAApzfAAKc4QACnOMAApzlAAKc6AACnOkAApzqAAKc6wACnOwAApzuAAKc8AACnPEAApzyAAKc9AACnPUAAp00AAKdNgACnTgAAp06AAKdPQACnT4AAp0/AAKdQAACnUEAAp1DAAKdRQACnUYAAp1HAAKdSQACnUoAAp2JAAKdiwACnY0AAp2PAAKdkgACnZMAAp2UAAKdlQACnZYAAp2YAAKdmgACnZsAAp2cAAKdngACnZ8AAp3eAAKd4AACneIAAp3kAAKd5wACnegAAp3pAAKd6gACnesAAp3tAAKd7wACnfAAAp3xAAKd8wACnfQAAp4ZAAKePQACnmQAAp6IAAKeiwACno0AAp6PAAKekQACnpMAAp6VAAKelgACnpkAAp6mAAKetQACnrcAAp65AAKeuwACnr0AAp6/AAKewQACnsMAAp7SAAKe1QACntgAAp7bAAKe3gACnuEAAp7kAAKe5wACnukAAp8oAAKfKgACnywAAp8uAAKfMQACnzIAAp8zAAKfNAACnzUAAp83AAKfOQACnzoAAp87AAKfPQACnz4AAp99AAKffwACn4EAAp+DAAKfhgACn4cAAp+IAAKfiQACn4oAAp+MAAKfjgACn48AAp+QAAKfkgACn5MAAp/SAAKf1AACn9YAAp/YAAKf2wACn9wAAp/dAAKf3gACn98AAp/hAAKf4wACn+QAAp/lAAKf5wACn+gAAqAnAAKgKQACoCwAAqAuAAKgMQACoDIAAqAzAAKgNAACoDUAAqA3AAKgOQACoDoAAqA7AAKgPQACoD4AAqB9AAKgfwACoIEAAqCDAAKghgACoIcAAqCIAAKgiQACoIoAAqCMAAKgjgACoI8AAqCQAAKgkgACoJMAAqDSAAKg1AACoNYAAqDYAAKg2wACoNwAAqDdAAKg3gACoN8AAqDhAAKg4wACoOQAAqDlAAKg5wACoOgAAqEnAAKhKQACoSsAAqEtAAKhMAACoTEAAqEyAAKhMwACoTQAAqE2AAKhOAACoTkAAqE6AAKhPAACoT0AAqFGAAKhRwACoUkAAqGMAAKhsAACodQAAqH3AAKiHgACoj4AAqJlAAKijAACoqwAAqLQAAKi9AACovYAAqL5AAKi+wACov0AAqL/AAKjAgACowUAAqMHAAKjCQACowwAAqMOAAKjEAACoxMAAqMWAAKjFwACoyAAAqMtAAKjMAACozIAAqM1AAKjOAACozoAAqNfAAKjgwACo6oAAqPOAAKj0QACo9MAAqPVAAKj1wACo9kAAqPbAAKj3AACo98AAqPsAAKj/wACpAEAAqQDAAKkBQACpAcAAqQJAAKkCwACpA0AAqQPAAKkEQACpCQAAqQnAAKkKgACpC0AAqQwAAKkMwACpDYAAqQ5AAKkPAACpD8AAqRBAAKkgAACpIIAAqSFAAKkhwACpIoAAqSLAAKkjAACpI0AAqSOAAKkkAACpJIAAqSTAAKklAACpJYAAqSXAAKkoAACpKEAAqSjAAKk4gACpOQAAqTmAAKk6AACpOsAAqTsAAKk7QACpO4AAqTvAAKk8QACpPMAAqT0AAKk9QACpPcAAqT4AAKlNwACpTkAAqU8AAKlPgACpUEAAqVCAAKlQwACpUQAAqVFAAKlRwACpUkAAqVKAAKlSwACpU0AAqVOAAKlVwACpVgAAqVaAAKlmQACpZsAAqWdAAKlnwACpaIAAqWjAAKlpAACpaUAAqWmAAKlqAACpaoAAqWrAAKlrAACpa4AAqWvAAKl7gACpfAAAqXzAAKl9QACpfgAAqX5AAKl+gACpfsAAqX8AAKl/gACpgAAAqYBAAKmAgACpgQAAqYFAAKmDgACpg8AAqYRAAKmUAACplIAAqZUAAKmVgACplkAAqZaAAKmWwACplwAAqZdAAKmXwACpmEAAqZiAAKmYwACpmUAAqZmAAKmpQACpqcAAqaqAAKmrAACpq8AAqawAAKmsQACprIAAqazAAKmtQACprcAAqa4AAKmuQACprsAAqa8AAKmyQACpsoAAqbLAAKmzQACpwwAAqcOAAKnEAACpxIAAqcVAAKnFgACpxcAAqcYAAKnGQACpxsAAqcdAAKnHgACpx8AAqchAAKnIgACp2EAAqdjAAKnZgACp2gAAqdrAAKnbAACp20AAqduAAKnbwACp3EAAqdzAAKndAACp3UAAqd3AAKneAACp4cAAqeUAAKnmQACp5wAAqefAAKnpAACp6cAAqeqAAKnrAACp7EAAqf8AAKoHwACqD8AAqhfAAKoYQACqGMAAqhlAAKoZwACqGoAAqhrAAKobAACqG8AAqhwAAKocgACqHMAAqh1AAKoeAACqHkAAqh6AAKofQACqH4AAqiHAAKolAACqJkAAqibAAKonQACqKIAAqilAAKoqAACqKoAAqjPAAKo8wACqRoAAqk+AAKpQQACqUMAAqlFAAKpRwACqUkAAqlLAAKpTAACqU8AAqlcAAKpbQACqW8AAqlxAAKpcwACqXUAAql3AAKpeQACqXsAAql9AAKpjgACqZEAAqmUAAKplwACqZoAAqmdAAKpoAACqaMAAqmmAAKpqAACqecAAqnpAAKp6wACqe0AAqnwAAKp8QACqfIAAqnzAAKp9AACqfYAAqn4AAKp+QACqfoAAqn8AAKp/QACqjwAAqo+AAKqQAACqkIAAqpFAAKqRgACqkcAAqpIAAKqSQACqksAAqpNAAKqTgACqk8AAqpRAAKqUgACqpEAAqqTAAKqlgACqpgAAqqbAAKqnAACqp0AAqqeAAKqnwACqqEAAqqjAAKqpAACqqUAAqqnAAKqqAACqrUAAqq2AAKqtwACqrkAAqr4AAKq+gACqvwAAqr+AAKrAQACqwIAAqsDAAKrBAACqwUAAqsHAAKrCQACqwoAAqsLAAKrDQACqw4AAqtNAAKrTwACq1EAAqtTAAKrVgACq1cAAqtYAAKrWQACq1oAAqtcAAKrXgACq18AAqtgAAKrYgACq2MAAquiAAKrpAACq6YAAquoAAKrqwACq6wAAqutAAKrrgACq68AAquxAAKrswACq7QAAqu1AAKrtwACq7gAAqv3AAKr+QACq/sAAqv9AAKsAAACrAEAAqwCAAKsAwACrAQAAqwGAAKsCAACrAkAAqwKAAKsDAACrA0AAqxMAAKsTgACrFAAAqxSAAKsVQACrFYAAqxXAAKsWAACrFkAAqxbAAKsXQACrF4AAqxfAAKsYQACrGIAAqyHAAKsqwACrNIAAqz2AAKs+QACrPsAAqz9AAKs/wACrQEAAq0DAAKtBAACrQcAAq0UAAKtIwACrSUAAq0nAAKtKQACrSsAAq0tAAKtLwACrTEAAq1AAAKtQwACrUYAAq1JAAKtTAACrU8AAq1SAAKtVQACrVcAAq2WAAKtmAACrZoAAq2cAAKtnwACraAAAq2hAAKtogACraMAAq2lAAKtpwACragAAq2pAAKtqwACrawAAq3rAAKt7QACre8AAq3xAAKt9AACrfUAAq32AAKt9wACrfgAAq36AAKt/AACrf0AAq3+AAKuAAACrgEAAq5AAAKuQgACrkQAAq5GAAKuSQACrkoAAq5LAAKuTAACrk0AAq5PAAKuUQACrlIAAq5TAAKuVQACrlYAAq6VAAKulwACrpoAAq6cAAKunwACrqAAAq6hAAKuogACrqMAAq6lAAKupwACrqgAAq6pAAKuqwACrqwAAq7rAAKu7QACru8AAq7xAAKu9AACrvUAAq72AAKu9wACrvgAAq76AAKu/AACrv0AAq7+AAKvAAACrwEAAq9AAAKvQgACr0QAAq9GAAKvSQACr0oAAq9LAAKvTAACr00AAq9PAAKvUQACr1IAAq9TAAKvVQACr1YAAq+VAAKvlwACr5kAAq+bAAKvngACr58AAq+gAAKvoQACr6IAAq+kAAKvpgACr6cAAq+oAAKvqgACr6sAAq/2AAKwGQACsDkAArBZAAKwWwACsF0AArBfAAKwYQACsGQAArBlAAKwZgACsGkAArBqAAKwbAACsG0AArBvAAKwcgACsHMAArB0AAKwdwACsHgAArCBAAKwjgACsJMAArCVAAKwlwACsJwAArCfAAKwogACsKQAArDJAAKw7QACsRQAArE4AAKxOwACsT0AArE/AAKxQQACsUMAArFFAAKxRgACsUkAArFWAAKxZwACsWkAArFrAAKxbQACsW8AArFxAAKxcwACsXUAArF3AAKxiAACsYsAArGOAAKxkQACsZQAArGXAAKxmgACsZ0AArGgAAKxogACseEAArHjAAKx5QACsecAArHqAAKx6wACsewAArHtAAKx7gACsfAAArHyAAKx8wACsfQAArH2AAKx9wACsjYAArI4AAKyOgACsjwAArI/AAKyQAACskEAArJCAAKyQwACskUAArJHAAKySAACskkAArJLAAKyTAACsosAArKNAAKykAACspIAArKVAAKylgACspcAArKYAAKymQACspsAArKdAAKyngACsp8AArKhAAKyogACsq8AArKwAAKysQACsrMAArLyAAKy9AACsvYAArL4AAKy+wACsvwAArL9AAKy/gACsv8AArMBAAKzAwACswQAArMFAAKzBwACswgAArNHAAKzSQACs0sAArNNAAKzUAACs1EAArNSAAKzUwACs1QAArNWAAKzWAACs1kAArNaAAKzXAACs10AArOcAAKzngACs6AAArOiAAKzpQACs6YAArOnAAKzqAACs6kAArOrAAKzrQACs64AArOvAAKzsQACs7IAArPxAAKz8wACs/UAArP3AAKz+gACs/sAArP8AAKz/QACs/4AArQAAAK0AgACtAMAArQEAAK0BgACtAcAArRGAAK0SAACtEoAArRMAAK0TwACtFAAArRRAAK0UgACtFMAArRVAAK0VwACtFgAArRZAAK0WwACtFwAArSBAAK0pQACtMwAArTwAAK08wACtPUAArT3AAK0+QACtPsAArT9AAK0/gACtQEAArUOAAK1HQACtR8AArUhAAK1IwACtSUAArUnAAK1KQACtSsAArU6AAK1PQACtUAAArVDAAK1RgACtUkAArVMAAK1TwACtVEAArWQAAK1kgACtZUAArWXAAK1mgACtZsAArWcAAK1nQACtZ4AArWgAAK1ogACtaMAArWkAAK1pgACtacAArXmAAK16AACteoAArXsAAK17wACtfAAArXxAAK18gACtfMAArX1AAK19wACtfgAArX5AAK1+wACtfwAArY7AAK2PQACtj8AArZBAAK2RAACtkUAArZGAAK2RwACtkgAArZKAAK2TAACtk0AArZOAAK2UAACtlEAAraQAAK2kgACtpUAAraXAAK2mgACtpsAAracAAK2nQACtp4AAragAAK2ogACtqMAArakAAK2pgACtqcAArbmAAK26AACtuoAArbsAAK27wACtvAAArbxAAK28gACtvMAArb1AAK29wACtvgAArb5AAK2+wACtvwAArc7AAK3PQACtz8AArdBAAK3RAACt0UAArdGAAK3RwACt0gAArdKAAK3TAACt00AArdOAAK3UAACt1EAAreQAAK3kgACt5QAAreWAAK3mQACt5oAArebAAK3nAACt50AArefAAK3oQACt6IAArejAAK3pQACt6YAArevAAK3sAACt7IAAre/AAK3wAACt8EAArfDAAK30AACt9EAArfSAAK31AACt+EAArfiAAK34wACt+UAArfuAAK3/QACuAoAArgZAAK4KwACuD8AArhWAAK4aAACuHEAArhyAAK4dAACuIEAAriCAAK4gwACuIUAAriGAAK4jwACuJkAArigAAAAAAAABAIAAAAAAABowQAAAAAAAAAAAAAAAAACuKg= + + Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 +cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEJIAALAAwAGQA1ADYANwBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgB5AHoAewCBAIIAjgCkAKUApgCnAKgAqQCqAKsArACtAMYAyQDQANYA5QDmAPUA+AEHARYBGQB4ASkBOAE8AUABTwFVAVYBXgFtAXYBfAF9AZIBkwGbAZwBnQGpAb0BvgG/AcABwQHCAcMBxAHFAdQB4wHyAfYCBQIUAhUCJAIzAjQCQwJPAmECYgJjAmQCZQJmAmcCaAAvAncChgKHApYCpQLHAsgCzgLaAvAC/wMCAxEDIAMjAzIDQQNEA1MDYgNmA3UDhAOFA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gD3QPeA+YD8gQGBBUEJAQzBDcERgRVBGQEcwSCBI4EoASvBL4EzQTcBOsE+gUJBREFJgUnBS8FMAU8BVAFXwVuBX0FgQWQBZ8FrgW9BcwF2AXqBesF7AXtBe4F7wXwBfEGAAYPBh4GLQYuBj0GTAZbBmMGeAZ5BoEGjQahBrAGvwbOBtIG4QbwBv8HDgcdBykHOwdKB1kHWgdpB3gHkgeTB5kHpQe7B8oHzQfcB+sH7gf9CAwIDwgeCC0IMQhACE8IUAhiCGMIZAhlCGYIZwhoCH0IfgiGCJIIpgi1CMQI0wjXCOYI9QkECRMJIgkuCUAJTwlQCV8Jbgl9CX4JjQmcCasJwAnBCckJ1QnpCfgKBwoWChoKKQo4CkcKVgplCnEKgwqSCqEKsAq/Cs4K3QrsCwELAgsKCxYLKgs5C0gLVwtbC2oLeQuIC5cLpguyC8QL0wviC/EMAAwBDBAMHwwuDEMMRAxMDFgMbAx7DIoMmQydDKwMuwzKDNkM6Az0DQYNFQ0kDTMNQg1RDWANbw2EDYUNjQ2ZDa0NvA3LDdoN3g3tDfwOCw4aDikONQ5HDlYOZQ50DoMOkg6hDrAOxQ7GDs4O2g7uDv0PDA8bDx8PLg89D0wPWw9qD3YPiA+XD6YPtQ/ED8UP1A/jD/IQBxAIEBAQHBAwED8QThBdEGEQcBB/EI4QnRCsELgQyhDZEOgQ9xEGERURJBEzETQRNxFAEU8RXhFtEYIRgxGLEZcRqxG6EckR2BHcEesR+hIJEhgSJxIzEkUSVBJVEmQScxKCEoMSkhKhErASxRLGEs4S2hLuEv0TDBMbEx8TLhM9E0wTWxNqE3YTiBOXE6YTtRPEE9MT4hPxFAYUBxQPFBsULxQ+FE0UXBRgFG8UfhSNFJwUqxS3FMkU2BTnFPYVBRUUFSMVMhVHFUgVUBVcFXAVfxWOFZ0VoRWwFb8VzhXdFewV+BYKFhkWGhYpFjgWRxZIFlcWZhZ1FooWixaTFp8WsxbCFtEW4BbkFvMXAhcRFyAXLxc7F00XXBdrF3oXiReYF6cXthfLF8wX1BfgF/QYAxgSGCEYJRg0GEMYUhhhGHAYfBiOGJ0YrBi7GMoY2RjoGPcZDBkNGRUZIRk1GUQZUxliGWYZdRmEGZMZohmxGb0ZzxneGe0Z/BoLGgwaGxoqGjkaThpPGlcaYxp3GoYalRqkGqgatxrGGtUa5BrzGv8bERsgGy8bPhtNG2cbaBtuG3obkBufG6IbsRvAG8Mb0hvhG+Qb8xwCHAYcFRwkHDAcMRwyHDMcSBxJHFEcXRxxHIAcjxyeHKIcsRzAHM8c3hztHPkdCx0aHSkdOB1HHVYdZR10HYkdih2SHZ4dsh3BHdAd3x3jHfIeAR4QHh8eLh46HkweWx5qHnkeiB6XHqYetR7KHsse0x7fHvMfAh8RHyAfJB8zH0IfUR9gH28fex+NH5wfqx+6H8kf2B/nH/YgCyAMIBQgICA0IEMgUiBhIGUgdCCDIJIgoSCwILwgziDdIOwg+yEKISQhJSErITchTSFcIV8hbiFvIX4hgSGQIZ8hoiGxIcAhxCHTIeIiHCIdIh4iHyIgIiEiIiIjIiQiJSImIiciKCIpIioiKyIsIi0iLiIvIjAiMSIyIjMiNCI1IkoiSyJTIl8icyKCIpEioCKkIrMiwiLRIuAi4SLwIvwjDiMdIywjOyNKI1kjaCN3I4wjjSOVI6EjtSPEI9Mj4iPmI/UkBCQTJCIkMSQ9JE8kXiRtJHwkiySaJKkkuCTNJM4k1iTiJPYlBSUUJSMlJyU2JUUlVCVjJXIlfiWQJZ8lriW9Jcwl2yXqJfkmDiYPJhcmIyY3JkYmVSZkJmgmdyaGJpUmpCalJrQmwCbSJuEm8Cb/Jw4nHScsJzsnUCdRJ1knZSd5J4gnlyemJ6onuSfIJ9cn5if1KAEoEygiKDEoQChPKF4obSh8KJEokiiaKKYouij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MWNtY6lj5WQVZF1kmWTVZRFlTWW1Zbll0WYBZllmlWahZt1nGWclZ2FnnWepZ+VoIWgxaG1oqWjZaN1o4WjlaTlpPWldaY1p3WoZalVqkWqhat1rGWtVa5FrzWv9bEVsgWy9bPltNW1xba1t6W49bkFuYW6RbuFvHW9Zb5VvpW/hcB1wWXCVcNFxAXFJcYVxwXH9cjlydXKxcu1zQXNFc2VzlXPldCF0XXSZdKl05XUhdV11mXXVdgV2TXaJdsV3AXc9d3l3tXfxeEV4SXhpeJl46XkleWF5nXmteel6JXphep162XsJe1F7jXvJfAV8QXx9fLl89X0BfT19eX21fgl+DX4tfl1+rX7pfyV/YX9xf61/6YAlgGGAnYDNgRWBUYGNgcmCBYJBgn2CuYMNgxGDMYNhg7GD7YQphGWEdYSxhO2FKYVlhaGF0YYZhlWGkYbNhwmHRYeBh72HyYfdiAGIaYhtiIWItYkNiUmJVYmRic2J2YoVilGKXYqZitWK5Yshi12LdYt5i82L0YvxjCGMcYytjOmNJY01jXGNrY3pjiWOYY6RjtmPFY9Rj42PyZAxkDWQTZB9kNWREZEdkVmRlZGhkd2SGZIlkmGSnZKtkumTJZNdk2GTZZNpk72TwZPhlBGUYZSdlNmVFZUllWGVnZXZlhWWUZaBlsmXBZdBl32XuZf1mDGYbZjBmMWY5ZkVmWWZoZndmhmaKZplmqGa3ZsZm1WbhZvNnAmcRZyBnL2c+Z01nXGdxZ3JnemeGZ5pnqWe4Z8dny2faZ+ln+GgHaBZoImg0aENoUmhhaHBof2iOaJ1osmizaLtox2jbaOpo+WkIaQxpG2kqaTlpSGlXaWNpdWmEaZNpommxacBpz2neafNp9Gn8aghqHGorajpqSWpNalxqa2p6aolqmGqkarZqxWrUauNq8msBaxBrH2siazFrQGtPa1NrVGtaa2FrYmtxa4Brj2uTa61rrmu0a8Br1mvla+hr92wGbAlsGGwnbCpsOWxIbExsW2xqbHZsd2x4bHlsjmyPbJdso2y3bMZs1WzkbOhs920GbRVtJG0zbT9tUW1gbW9tfm2NbZxtq226bc9t0G3YbeRt+G4HbhZuJW4pbjhuR25WbmVudG6AbpJuoW6wbr9uzm7dbuxu+28QbxFvGW8lbzlvSG9Xb2Zvam95b4hvl2+mb7VvwW/Tb+Jv8XAAcA9wHnAtcDxwUXBScFpwZnB6cIlwmHCncKtwunDJcNhw53D2cQJxFHEjcTJxQXFQcV9xbnF9cYBxmnGbcaFxrXHDcdJx1XHkcfNx9nIFchRyF3ImcjVyOXJIcldyWHJgcmFydnJ3cn9yi3Kfcq5yvXLMctBy33Lucv1zDHMbcydzOXNIc1dzZnN1c4Rzk3Oic7dzuHPAc8xz4HPvc/50DXQRdCB0L3Q+dE10XHRodHp0iXSYdKd0tnTFdNR043TmdOp07nTydPp0/XUBdQJVJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCR+AAIEJHIEJHYEJHt4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEJGoEJGIABgASAAIEJGYEJGxAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEYAUldOUy5rZXlzWk5TLm9iamVjdHOrADsAPAA9AD4APwBAAEEAQgBDAEQARYAGgAeACIAJgAqAC4AMgA2ADoAPgBCrAEcASABJAEoASwBMAE0ATgBPAFAAUYARgNmBB6OBBvyBB8uAYoEGEYEIYYECWIEI1IECx4AwVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbV8QEEV4dGVybmFsUmVzb3VyY2VXQWNjb3VudFdMaWJyYXJ5XlBsYXliYWNrUmVjb3JkVVRoZW1l3xAQAF8AYABhAGIAHwBjAGQAIQBlAGYADgAjAGcAaAAmAGkAagBrACcAJwATAG8AcAAvACcAagBzADsAagB2AHcAeF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZVtfaXNBYnN0cmFjdIATgDeABIAEgAKAFIEBmIAEgBOBAZqABoATgQhggBIIEwAAAAECgzB0V29yZGVyZWTTADgAOQAOAHwAfgBSoQB9gBWhAH+AFoAwXlhEX1BTdGVyZW90eXBl2QAfACMAgwAOACYAhAAhAGkAhQBHAH0AagCJABUAJwAvAHgAjV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYARgBWAE4A2gACABAiAF9MAOAA5AA4AjwCZAFKpAJAAkQCSAJMAlACVAJYAlwCYgBiAGYAagBuAHIAdgB6AH4AgqQCaAJsAnACdAJ4AnwCgAKEAooAhgCWAJ4ApgCqALIAugDGANYAwXxATWERQTUNvbXB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AAAjfEA8ArgCvALAAHwCxALIAswAhALQADgAjALUAtgAmALcAFQJ5ABUBmQB4AHgAeAAvAHgAwAJSAHgAeAAVAHiAAIBfgACAUwgICAiAJIBWCAiAAAgQAd8QDwCuAK8AsAAfALEAsgCzACEAtAAOACMAtQC2ACYAtwAVAmoAFQGZAHgAeAB4AC8AeADAAlMAeAB4ABUAeIAAgF2AAIBTCAgICIAkgFcICIAACN8QDwCuAK8AsAAfALEAsgCzACEAtAAOACMAtQC2ACYAtwAVAEwAFQGZAHgAeAB4AC8AeADAAlQAeAB4ABUAeIAAgGKAAIBTCAgICIAkgFgICIAACN8QFABpAqYCpwKoAqkCqgKrAB8ADgKsACMCrQAmAq4CrwKwArECsgKzACECFABqAGoCtwAnAHAAagATAHMAJwBAAr8CwAAnACcAagLEAsUAcAAvXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNvcmRlcmVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAhWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNzdG9yYWdlXxAkWERCdWNrZXRGb3JTcGVjaWFsaXphdGlvbnNkdXBsaWNhdGVzCYATgBOAZIAEgQGYgBOAAoEBmoAEgAuBB6CAY4AEgASAE4B1gQehgQGYEwAAAAEEnkr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AtgAmALcAFQBFABUhKQB4AHgAeAAvAHgAwACYAHgAeAAVAHiAAIAQgACBAsoICAgIgCSAIAgIgAAI0wA4ADkADiHjIf8AUq8QGyHkIeUh5iHnIegh6SHqIesh7CHtIe4h7yHwA4gh8iHzA5Uh9SH2Ifch+CH5Ifoh+yH8If0h/oEC24EC3IEC3YEC3oEC34EC4IEC4YEC4oEC44EC5IEC5YEC5oEC54B3gQLogQLpgISBAuqBAuuBAuyBAu2BAu6BAu+BAvCBAvGBAvKBAvOvEBsiACIBIgIiAyIEIgUiBiIHIggiCSIKIgsiDCINIg4iDyIQIhEiEiITIhQiFSIWIhciGCIZIhqBAvSBAwyBAyOBAzqBA1KBA2mBA4CBA5eBA66BA8WBA92BA/SBBAuBBCKBBDmBBFGBBGiBBH+BBJaBBK6BBMaBBN6BBPWBBQyBBTqBBVKBBWmAMF8QEGRhcmtTZWNvbmRhcnlIZXhfEB9kYXJrVGVydGlhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAcbGlnaHRRdWF0ZXJuYXJ5U3lzdGVtRmlsbEhleF8QEWxpZ2h0U2Vjb25kYXJ5SGV4XxAbZGFya1F1YXRlcm5hcnlTeXN0ZW1GaWxsSGV4XxAaZGFya1NlY29uZGFyeVN5c3RlbUZpbGxIZXhfECFsaWdodFNlY29uZGFyeVN5c3RlbUJhY2tncm91bmRIZXhfEB5kYXJrU3lzdGVtR3JvdXBlZEJhY2tncm91bmRIZXhfECBkYXJrU2Vjb25kYXJ5U3lzdGVtQmFja2dyb3VuZEhleF8QGGxpZ2h0U3lzdGVtQmFja2dyb3VuZEhleF8QEGRhcmtTZXBhcmF0b3JIZXhfEBFkYXJrU3lzdGVtRmlsbEhleF8QGmxpZ2h0VGVydGlhcnlTeXN0ZW1GaWxsSGV4XmxpZ2h0QWNjZW50SGV4XxARbGlnaHRTZXBhcmF0b3JIZXhfEBJsaWdodFN5c3RlbUZpbGxIZXhfEA9saWdodFByaW1hcnlIZXheZGFya1ByaW1hcnlIZXhfEBdkYXJrU3lzdGVtQmFja2dyb3VuZEhleF8QGWRhcmtUZXJ0aWFyeVN5c3RlbUZpbGxIZXhfEBtsaWdodFNlY29uZGFyeVN5c3RlbUZpbGxIZXhYc2VsZWN0ZWRdZGFya0FjY2V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vACcAagBzAD4AallqWWsAeF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYATgQcOgASABIACgQb+gQGYgASAE4EBmoAJgBOBB26BBv0IEu4QJ53TADgAOQAOWW9ZcQBSoQB9gBWhWXKBBv+AMNkAHwAjWXUADgAmWXYAIQBpWXcASgB9AGoAiQAVACcALwB4WX9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBvyAFYATgDaAAIAECIEHANMAOAA5AA5ZgVmLAFKpAJAAkQCSAJMAlACVAJYAlwCYgBiAGYAagBuAHIAdgB6AH4AgqVmMWY1ZjlmPWZBZkVmSWZNZlIEHAYEHA4EHBIEHBoEHB4EHCYEHCoEHDIEHDYAw3xAPAK4ArwCwAB8AsQCyALMAIQC0AA4AIwC1ALYAJgC3ABVZmAAVWXIAeAB4AHgALwB4AMAAkAB4AHgAFQB4gACBBwKAAIEG/wgICAiAJIAYCAiAAAjSADkADlmmAMiggCPfEA8ArgCvALAAHwCxALIAswAhALQADgAjALUAtgAmALcAFQAVABVZcgB4AHgAeAAvAHgAwACRAHgAeAAVAHiAAIAAgACBBv8ICAgIgCSAGQgIgAAI3xAPAK4ArwCwAB8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AACeHAAAniAAAJ4oAACeMAAAnjQAAJ44AACeQAAAnkQAAJ9AAACfSAAAn1AAAJ9YAACfYAAAn2QAAJ9oAACfbAAAn3AAAJ94AACfgAAAn4QAAJ+IAACfkAAAn5QAAKDgAAChcAAAogAAAKKAAACjHAAAo7gAAKQ4AACk1AAApWQAAKXwAACmjAAApxwAAKesAACoPAAAqNgAAKjcAACo5AAAqOwAAKj0AACo/AAAqQgAAKkQAACpGAAAqSQAAKksAACpNAAAqUAAAKlIAACpUAAAqVgAAKlgAACpaAAAqXQAAKmAAACppAAAqdgAAKnkAACp7AAAqfgAAKoAAACqCAAAqpwAAKssAACryAAArFgAAKxgAACsaAAArHAAAKx4AACsgAAArIgAAKyMAACslAAArMgAAK0UAACtHAAArSQAAK0sAACtNAAArTwAAK1EAACtTAAArVQAAK1cAACtqAAArbAAAK24AACtwAAArcgAAK3QAACt2AAAreAAAK3oAACt8AAArfgAAK70AACu/AAArwQAAK8MAACvFAAArxgAAK8cAACvIAAAryQAAK8sAACvNAAArzgAAK88AACvRAAAr0gAAK9sAACvcAAAr3gAALB0AACwfAAAsIQAALCMAACwlAAAsJgAALCcAACwoAAAsKQAALCsAACwtAAAsLgAALC8AACwxAAAsMgAALHEAACxzAAAsdQAALHcAACx5AAAsegAALHsAACx8AAAsfQAALH8AACyBAAAsggAALIMAACyFAAAshgAALI8AACyQAAAskgAALNEAACzTAAAs1QAALNcAACzZAAAs2gAALNsAACzcAAAs3QAALN8AACzhAAAs4gAALOMAACzlAAAs5gAALSUAAC0nAAAtKQAALSsAAC0tAAAtLgAALS8AAC0wAAAtMQAALTMAAC01AAAtNgAALTcAAC05AAAtOgAALUMAAC1EAAAtRgAALYUAAC2HAAAtiQAALYsAAC2NAAAtjgAALY8AAC2QAAAtkQAALZMAAC2VAAAtlgAALZcAAC2ZAAAtmgAALdkAAC3bAAAt3QAALd8AAC3hAAAt4gAALeMAAC3kAAAt5QAALecAAC3pAAAt6gAALesAAC3tAAAt7gAALfsAAC38AAAt/QAALf8AAC4+AAAuQAAALkIAAC5EAAAuRgAALkcAAC5IAAAuSQAALkoAAC5MAAAuTgAALk8AAC5QAAAuUgAALlMAAC6SAAAulAAALpYAAC6YAAAumgAALpsAAC6cAAAunQAALp4AAC6gAAAuogAALqMAAC6kAAAupgAALqcAAC6zAAAuwAAALu0AAC7vAAAu8QAALvMAAC71AAAu9wAALvkAAC77AAAu/QAALv8AAC8BAAAvAwAALwUAAC8HAAAvCQAALwsAAC8NAAAvDwAALxEAAC8TAAAvFQAALxcAAC9EAAAvRgAAL0gAAC9KAAAvTQAAL1AAAC9TAAAvVgAAL1kAAC9cAAAvXwAAL2IAAC9lAAAvaAAAL2sAAC9uAAAvcQAAL3QAAC93AAAvegAAL30AAC+AAAAvggAAL4kAAC+PAAAvnQAAL6YAAC+yAAAvxQAAL8sAAC/VAAAv2gAAL+cAAC/yAAAv/QAAMAIAADAKAAAwEgAAMBwAADAnAAAwOwAAMEUAADBYAAAwZQAAMLAAADDTAAAw8wAAMRMAADEVAAAxFwAAMRkAADEbAAAxHQAAMR4AADEfAAAxIQAAMSIAADEkAAAxJQAAMScAADEpAAAxKgAAMSsAADEtAAAxLgAAMTMAADFAAAAxRQAAMUcAADFJAAAxTgAAMVAAADFSAAAxVAAAMXkAADGdAAAxxAAAMegAADHqAAAx7AAAMe4AADHwAAAx8gAAMfQAADH1AAAx9wAAMgQAADIVAAAyFwAAMhkAADIbAAAyHQAAMh8AADIhAAAyIwAAMiUAADI2AAAyOAAAMjoAADI8AAAyPgAAMkAAADJCAAAyRAAAMkYAADJIAAAyhwAAMokAADKLAAAyjQAAMo8AADKQAAAykQAAMpIAADKTAAAylQAAMpcAADKYAAAymQAAMpsAADKcAAAy2wAAMt0AADLfAAAy4QAAMuMAADLkAAAy5QAAMuYAADLnAAAy6QAAMusAADLsAAAy7QAAMu8AADLwAAAzLwAAMzEAADMzAAAzNQAAMzcAADM4AAAzOQAAMzoAADM7AAAzPQAAMz8AADNAAAAzQQAAM0MAADNEAAAzUQAAM1IAADNTAAAzVQAAM5QAADOWAAAzmAAAM5oAADOcAAAznQAAM54AADOfAAAzoAAAM6IAADOkAAAzpQAAM6YAADOoAAAzqQAAM+gAADPqAAAz7AAAM+4AADPwAAAz8QAAM/IAADPzAAAz9AAAM/YAADP4AAAz+QAAM/oAADP8AAAz/QAANDwAADQ+AAA0QAAANEIAADREAAA0RQAANEYAADRHAAA0SAAANEoAADRMAAA0TQAANE4AADRQAAA0UQAANJAAADSSAAA0lAAANJYAADSYAAA0mQAANJoAADSbAAA0nAAANJ4AADSgAAA0oQAANKIAADSkAAA0pQAANOQAADTmAAA06AAANOoAADTsAAA07QAANO4AADTvAAA08AAANPIAADT0AAA09QAANPYAADT4AAA0+QAANR4AADVCAAA1aQAANY0AADWPAAA1kQAANZMAADWVAAA1lwAANZkAADWaAAA1nAAANakAADW4AAA1ugAANbwAADW+AAA1wAAANcIAADXEAAA1xgAANdUAADXXAAA12QAANdsAADXdAAA13wAANeEAADXjAAA15QAANiQAADYmAAA2KAAANioAADYsAAA2LQAANi4AADYvAAA2MAAANjIAADY0AAA2NQAANjYAADY4AAA2OQAANngAADZ6AAA2fAAANn4AADaAAAA2gQAANoIAADaDAAA2hAAANoYAADaIAAA2iQAANooAADaMAAA2jQAANswAADbOAAA20AAANtIAADbUAAA21QAANtYAADbXAAA22AAANtoAADbcAAA23QAANt4AADbgAAA24QAANyAAADciAAA3JAAANyYAADcoAAA3KQAANyoAADcrAAA3LAAANy4AADcwAAA3MQAANzIAADc0AAA3NQAAN3QAADd2AAA3eAAAN3oAADd8AAA3fQAAN34AADd/AAA3gAAAN4IAADeEAAA3hQAAN4YAADeIAAA3iQAAN8gAADfKAAA3zAAAN84AADfQAAA30QAAN9IAADfTAAA31AAAN9YAADfYAAA32QAAN9oAADfcAAA33QAAOBwAADgeAAA4IAAAOCIAADgkAAA4JQAAOCYAADgnAAA4KAAAOCoAADgsAAA4LQAAOC4AADgwAAA4MQAAODoAADhNAAA4WgAAOG0AADh6AAA4jQAAOKQAADi2AAA5AQAAOSQAADlEAAA5ZAAAOWYAADloAAA5agAAOWwAADluAAA5bwAAOXAAADlyAAA5cwAAOXUAADl2AAA5eAAAOXoAADl7AAA5fAAAOX4AADl/AAA5hAAAOZEAADmWAAA5mAAAOZoAADmfAAA5oQAAOaMAADmlAAA5ugAAOd8AADoDAAA6KgAAOk4AADpQAAA6UgAAOlQAADpWAAA6WAAAOloAADpbAAA6XQAAOmoAADp7AAA6fQAAOn8AADqBAAA6gwAAOoUAADqHAAA6iQAAOosAADqcAAA6ngAAOqAAADqiAAA6pAAAOqYAADqoAAA6qgAAOqwAADquAAA67QAAOu8AADrxAAA68wAAOvUAADr2AAA69wAAOvgAADr5AAA6+wAAOv0AADr+AAA6/wAAOwEAADsCAAA7QQAAO0MAADtFAAA7RwAAO0kAADtKAAA7SwAAO0wAADtNAAA7TwAAO1EAADtSAAA7UwAAO1UAADtWAAA7lQAAO5cAADuZAAA7mwAAO50AADueAAA7nwAAO6AAADuhAAA7owAAO6UAADumAAA7pwAAO6kAADuqAAA7twAAO7gAADu5AAA7uwAAO/oAADv8AAA7/gAAPAAAADwCAAA8AwAAPAQAADwFAAA8BgAAPAgAADwKAAA8CwAAPAwAADwOAAA8DwAAPE4AADxQAAA8UgAAPFQAADxWAAA8VwAAPFgAADxZAAA8WgAAPFwAADxeAAA8XwAAPGAAADxiAAA8YwAAPKIAADykAAA8pgAAPKgAADyqAAA8qwAAPKwAADytAAA8rgAAPLAAADyyAAA8swAAPLQAADy2AAA8twAAPPYAADz4AAA8+gAAPPwAADz+AAA8/wAAPQAAAD0BAAA9AgAAPQQAAD0GAAA9BwAAPQgAAD0KAAA9CwAAPUoAAD1MAAA9TgAAPVAAAD1SAAA9UwAAPVQAAD1VAAA9VgAAPVgAAD1aAAA9WwAAPVwAAD1eAAA9XwAAPYQAAD2oAAA9zwAAPfMAAD31AAA99wAAPfkAAD37AAA9/QAAPf8AAD4AAAA+AgAAPg8AAD4eAAA+IAAAPiIAAD4kAAA+JgAAPigAAD4qAAA+LAAAPjsAAD49AAA+PwAAPkEAAD5DAAA+RQAAPkcAAD5JAAA+SwAAPmsAAD6WAAA+sAAAPskAAD7jAAA/AwAAPyYAAD9lAAA/ZwAAP2kAAD9rAAA/bQAAP24AAD9vAAA/cAAAP3EAAD9zAAA/dQAAP3YAAD93AAA/eQAAP3oAAD+5AAA/uwAAP70AAD+/AAA/wQAAP8IAAD/DAAA/xAAAP8UAAD/HAAA/yQAAP8oAAD/LAAA/zQAAP84AAEANAABADwAAQBEAAEATAABAFQAAQBYAAEAXAABAGAAAQBkAAEAbAABAHQAAQB4AAEAfAABAIQAAQCIAAEBhAABAYwAAQGUAAEBnAABAaQAAQGoAAEBrAABAbAAAQG0AAEBvAABAcQAAQHIAAEBzAABAdQAAQHYAAEB5AABAuAAAQLoAAEC8AABAvgAAQMAAAEDBAABAwgAAQMMAAEDEAABAxgAAQMgAAEDJAABAygAAQMwAAEDNAABBDAAAQQ4AAEEQAABBEgAAQRQAAEEVAABBFgAAQRcAAEEYAABBGgAAQRwAAEEdAABBHgAAQSAAAEEhAABBYAAAQWIAAEFkAABBZgAAQWgAAEFpAABBagAAQWsAAEFsAABBbgAAQXAAAEFxAABBcgAAQXQAAEF1AABBfgAAQYwAAEGZAABBpwAAQbQAAEHHAABB3gAAQfAAAEI7AABCXgAAQn4AAEKeAABCoAAAQqIAAEKkAABCpgAAQqgAAEKpAABCqgAAQqwAAEKtAABCrwAAQrAAAEKyAABCtAAAQrUAAEK2AABCuAAAQrkAAEK+AABCywAAQtAAAELSAABC1AAAQtkAAELbAABC3QAAQt8AAEMEAABDKAAAQ08AAENzAABDdQAAQ3cAAEN5AABDewAAQ30AAEN/AABDgAAAQ4IAAEOPAABDoAAAQ6IAAEOkAABDpgAAQ6gAAEOqAABDrAAAQ64AAEOwAABDwQAAQ8MAAEPFAABDxwAAQ8kAAEPLAABDzQAAQ88AAEPRAABD0wAARBIAAEQUAABEFgAARBgAAEQaAABEGwAARBwAAEQdAABEHgAARCAAAEQiAABEIwAARCQAAEQmAABEJwAARGYAAERoAABEagAARGwAAERuAABEbwAARHAAAERxAABEcgAARHQAAER2AABEdwAARHgAAER6AABEewAARLoAAES8AABEvgAARMAAAETCAABEwwAARMQAAETFAABExgAARMgAAETKAABEywAARMwAAETOAABEzwAARNwAAETdAABE3gAAROAAAEUfAABFIQAARSMAAEUlAABFJwAARSgAAEUpAABFKgAARSsAAEUtAABFLwAARTAAAEUxAABFMwAARTQAAEVzAABFdQAARXcAAEV5AABFewAARXwAAEV9AABFfgAARX8AAEWBAABFgwAARYQAAEWFAABFhwAARYgAAEXHAABFyQAARcsAAEXNAABFzwAARdAAAEXRAABF0gAARdMAAEXVAABF1wAARdgAAEXZAABF2wAARdwAAEYbAABGHQAARh8AAEYhAABGIwAARiQAAEYlAABGJgAARicAAEYpAABGKwAARiwAAEYtAABGLwAARjAAAEZvAABGcQAARnMAAEZ1AABGdwAARngAAEZ5AABGegAARnsAAEZ9AABGfwAARoAAAEaBAABGgwAARoQAAEapAABGzQAARvQAAEcYAABHGgAARxwAAEceAABHIAAARyIAAEckAABHJQAARycAAEc0AABHQwAAR0UAAEdHAABHSQAAR0sAAEdNAABHTwAAR1EAAEdgAABHYgAAR2QAAEdmAABHaAAAR2sAAEduAABHcQAAR3MAAEeyAABHtAAAR7YAAEe4AABHugAAR7sAAEe8AABHvQAAR74AAEfAAABHwgAAR8MAAEfEAABHxgAAR8cAAEgGAABICAAASAoAAEgMAABIDgAASA8AAEgQAABIEQAASBIAAEgUAABIFgAASBcAAEgYAABIGgAASBsAAEgdAABIXAAASF4AAEhgAABIYgAASGQAAEhlAABIZgAASGcAAEhoAABIagAASGwAAEhtAABIbgAASHAAAEhxAABIsAAASLIAAEi0AABItgAASLgAAEi5AABIugAASLsAAEi8AABIvgAASMAAAEjBAABIwgAASMQAAEjFAABJCAAASSwAAElQAABJcwAASZoAAEm6AABJ4QAASggAAEooAABKTAAASnAAAEpyAABKdAAASnYAAEp4AABKegAASnwAAEp/AABKgQAASoMAAEqGAABKiAAASooAAEqNAABKjwAASpAAAEqVAABKogAASqUAAEqnAABKqgAASqwAAEquAABK0wAASvcAAEseAABLQgAAS0QAAEtGAABLSAAAS0oAAEtMAABLTgAAS08AAEtRAABLXgAAS3EAAEtzAABLdQAAS3cAAEt5AABLewAAS30AAEt/AABLgQAAS4MAAEuWAABLmAAAS5oAAEucAABLngAAS6AAAEuiAABLpAAAS6YAAEuoAABLqgAAS+kAAEvrAABL7QAAS+8AAEvxAABL8gAAS/MAAEv0AABL9QAAS/cAAEv5AABL+gAAS/sAAEv9AABL/gAATAcAAEwIAABMCgAATEkAAExLAABMTQAATE8AAExRAABMUgAATFMAAExUAABMVQAATFcAAExZAABMWgAATFsAAExdAABMXgAATJ0AAEyfAABMoQAATKMAAEylAABMpgAATKcAAEyoAABMqQAATKsAAEytAABMrgAATK8AAEyxAABMsgAATLsAAEy8AABMvgAATP0AAEz/AABNAQAATQMAAE0FAABNBgAATQcAAE0IAABNCQAATQsAAE0NAABNDgAATQ8AAE0RAABNEgAATVEAAE1TAABNVQAATVcAAE1ZAABNWgAATVsAAE1cAABNXQAATV8AAE1hAABNYgAATWMAAE1lAABNZgAATW8AAE1wAABNcgAATbEAAE2zAABNtQAATbcAAE25AABNugAATbsAAE28AABNvQAATb8AAE3BAABNwgAATcMAAE3FAABNxgAATgUAAE4HAABOCQAATgsAAE4NAABODgAATg8AAE4QAABOEQAAThMAAE4VAABOFgAAThcAAE4ZAABOGgAATicAAE4oAABOKQAATisAAE5qAABObAAATm4AAE5wAABOcgAATnMAAE50AABOdQAATnYAAE54AABOegAATnsAAE58AABOfgAATn8AAE6+AABOwAAATsIAAE7EAABOxgAATscAAE7IAABOyQAATsoAAE7MAABOzgAATs8AAE7QAABO0gAATtMAAE7hAABO7gAATv0AAE7/AABPAQAATwMAAE8FAABPBwAATwkAAE8LAABPGgAATxwAAE8fAABPIgAATyUAAE8oAABPKwAATy4AAE8wAABPNwAATz4AAE9BAABPTAAAT1cAAE9jAABPrgAAT9EAAE/xAABQEQAAUBMAAFAVAABQFwAAUBkAAFAbAABQHAAAUB0AAFAfAABQIAAAUCIAAFAjAABQJQAAUCcAAFAoAABQKQAAUCsAAFAsAABQNQAAUEIAAFBHAABQSQAAUEsAAFBQAABQUgAAUFUAAFBXAABQfAAAUKAAAFDHAABQ6wAAUO0AAFDvAABQ8QAAUPMAAFD1AABQ9wAAUPgAAFD6AABRBwAAURgAAFEaAABRHAAAUR4AAFEgAABRIgAAUSQAAFEmAABRKAAAUTkAAFE7AABRPQAAUT8AAFFBAABRQwAAUUUAAFFHAABRSgAAUUwAAFGLAABRjQAAUY8AAFGRAABRkwAAUZQAAFGVAABRlgAAUZcAAFGZAABRmwAAUZwAAFGdAABRnwAAUaAAAFHfAABR4QAAUeMAAFHlAABR5wAAUegAAFHpAABR6gAAUesAAFHtAABR7wAAUfAAAFHxAABR8wAAUfQAAFIzAABSNQAAUjcAAFI5AABSOwAAUjwAAFI9AABSPgAAUj8AAFJBAABSQwAAUkQAAFJFAABSRwAAUkgAAFJVAABSVgAAUlcAAFJZAABSmAAAUpoAAFKcAABSngAAUqAAAFKhAABSogAAUqMAAFKkAABSpgAAUqgAAFKpAABSqgAAUqwAAFKtAABS7AAAUu4AAFLwAABS8gAAUvQAAFL1AABS9gAAUvcAAFL4AABS+gAAUvwAAFL9AABS/gAAUwAAAFMBAABTQAAAU0IAAFNEAABTRgAAU0gAAFNJAABTSgAAU0sAAFNMAABTTgAAU1AAAFNRAABTUgAAU1QAAFNVAABTlAAAU5YAAFOYAABTmgAAU5wAAFOdAABTngAAU58AAFOgAABTogAAU6QAAFOlAABTpgAAU6gAAFOpAABT6AAAU+oAAFPsAABT7gAAU/AAAFPxAABT8gAAU/MAAFP0AABT9gAAU/gAAFP5AABT+gAAU/wAAFP9AABUIgAAVEYAAFRtAABUkQAAVJMAAFSVAABUlwAAVJkAAFSbAABUnQAAVJ4AAFShAABUrgAAVL0AAFS/AABUwQAAVMMAAFTFAABUxwAAVMkAAFTLAABU2gAAVN0AAFTgAABU4wAAVOYAAFTpAABU7AAAVO8AAFTxAABVMAAAVTIAAFU1AABVNwAAVToAAFU7AABVPAAAVT0AAFU+AABVQAAAVUIAAFVDAABVRAAAVUYAAFVHAABVSQAAVYgAAFWKAABVjAAAVY4AAFWRAABVkgAAVZMAAFWUAABVlQAAVZcAAFWZAABVmgAAVZsAAFWdAABVngAAVd0AAFXfAABV4QAAVeMAAFXmAABV5wAAVegAAFXpAABV6gAAVewAAFXuAABV7wAAVfAAAFXyAABV8wAAVjIAAFY0AABWNwAAVjkAAFY8AABWPQAAVj4AAFY/AABWQAAAVkIAAFZEAABWRQAAVkYAAFZIAABWSQAAVksAAFaKAABWjAAAVo4AAFaQAABWkwAAVpQAAFaVAABWlgAAVpcAAFaZAABWmwAAVpwAAFadAABWnwAAVqAAAFbfAABW4QAAVuMAAFblAABW6AAAVukAAFbqAABW6wAAVuwAAFbuAABW8AAAVvEAAFbyAABW9AAAVvUAAFc0AABXNgAAVzgAAFc6AABXPQAAVz4AAFc/AABXQAAAV0EAAFdDAABXRQAAV0YAAFdHAABXSQAAV0oAAFeVAABXuAAAV9gAAFf4AABX+gAAV/wAAFf+AABYAAAAWAIAAFgDAABYBAAAWAcAAFgIAABYCgAAWAsAAFgNAABYDwAAWBAAAFgRAABYFAAAWBUAAFgaAABYJwAAWCwAAFguAABYMAAAWDUAAFg4AABYOwAAWD0AAFhiAABYhgAAWK0AAFjRAABY1AAAWNYAAFjYAABY2gAAWNwAAFjeAABY3wAAWOIAAFjvAABZAAAAWQIAAFkEAABZBgAAWQgAAFkKAABZDAAAWQ4AAFkQAABZIQAAWSQAAFknAABZKgAAWS0AAFkwAABZMwAAWTYAAFk5AABZOwAAWXoAAFl8AABZfgAAWYAAAFmDAABZhAAAWYUAAFmGAABZhwAAWYkAAFmLAABZjAAAWY0AAFmPAABZkAAAWc8AAFnRAABZ0wAAWdUAAFnYAABZ2QAAWdoAAFnbAABZ3AAAWd4AAFngAABZ4QAAWeIAAFnkAABZ5QAAWiQAAFomAABaKQAAWisAAFouAABaLwAAWjAAAFoxAABaMgAAWjQAAFo2AABaNwAAWjgAAFo6AABaOwAAWkgAAFpJAABaSgAAWkwAAFqLAABajQAAWo8AAFqRAABalAAAWpUAAFqWAABalwAAWpgAAFqaAABanAAAWp0AAFqeAABaoAAAWqEAAFrgAABa4gAAWuQAAFrmAABa6QAAWuoAAFrrAABa7AAAWu0AAFrvAABa8QAAWvIAAFrzAABa9QAAWvYAAFs1AABbNwAAWzkAAFs7AABbPgAAWz8AAFtAAABbQQAAW0IAAFtEAABbRgAAW0cAAFtIAABbSgAAW0sAAFuKAABbjAAAW44AAFuQAABbkwAAW5QAAFuVAABblgAAW5cAAFuZAABbmwAAW5wAAFudAABbnwAAW6AAAFvfAABb4QAAW+MAAFvlAABb6AAAW+kAAFvqAABb6wAAW+wAAFvuAABb8AAAW/EAAFvyAABb9AAAW/UAAFwaAABcPgAAXGUAAFyJAABcjAAAXI4AAFyQAABckgAAXJQAAFyWAABclwAAXJoAAFynAABctgAAXLgAAFy6AABcvAAAXL4AAFzAAABcwgAAXMQAAFzTAABc1gAAXNkAAFzcAABc3wAAXOIAAFzlAABc6AAAXOoAAF0pAABdKwAAXS0AAF0vAABdMgAAXTMAAF00AABdNQAAXTYAAF04AABdOgAAXTsAAF08AABdPgAAXT8AAF1+AABdgAAAXYIAAF2EAABdhwAAXYgAAF2JAABdigAAXYsAAF2NAABdjwAAXZAAAF2RAABdkwAAXZQAAF3TAABd1QAAXdcAAF3ZAABd3AAAXd0AAF3eAABd3wAAXeAAAF3iAABd5AAAXeUAAF3mAABd6AAAXekAAF4oAABeKgAAXiwAAF4uAABeMQAAXjIAAF4zAABeNAAAXjUAAF43AABeOQAAXjoAAF47AABePQAAXj4AAF59AABefwAAXoEAAF6DAABehgAAXocAAF6IAABeiQAAXooAAF6MAABejgAAXo8AAF6QAABekgAAXpMAAF7SAABe1AAAXtYAAF7YAABe2wAAXtwAAF7dAABe3gAAXt8AAF7hAABe4wAAXuQAAF7lAABe5wAAXugAAF8nAABfKQAAXysAAF8tAABfMAAAXzEAAF8yAABfMwAAXzQAAF82AABfOAAAXzkAAF86AABfPAAAXz0AAF+IAABfqwAAX8sAAF/rAABf7QAAX+8AAF/xAABf8wAAX/UAAF/2AABf9wAAX/oAAF/7AABf/QAAX/4AAGAAAABgAgAAYAMAAGAEAABgBwAAYAgAAGANAABgGgAAYB8AAGAhAABgIwAAYCgAAGArAABgLgAAYDAAAGBVAABgeQAAYKAAAGDEAABgxwAAYMkAAGDLAABgzQAAYM8AAGDRAABg0gAAYNUAAGDiAABg8wAAYPUAAGD3AABg+QAAYPsAAGD9AABg/wAAYQEAAGEDAABhFAAAYRcAAGEaAABhHQAAYSAAAGEjAABhJgAAYSkAAGEsAABhLgAAYW0AAGFvAABhcQAAYXMAAGF2AABhdwAAYXgAAGF5AABhegAAYXwAAGF+AABhfwAAYYAAAGGCAABhgwAAYcIAAGHEAABhxgAAYcgAAGHLAABhzAAAYc0AAGHOAABhzwAAYdEAAGHTAABh1AAAYdUAAGHXAABh2AAAYhcAAGIZAABiHAAAYh4AAGIhAABiIgAAYiMAAGIkAABiJQAAYicAAGIpAABiKgAAYisAAGItAABiLgAAYjsAAGI8AABiPQAAYj8AAGJ+AABigAAAYoIAAGKEAABihwAAYogAAGKJAABiigAAYosAAGKNAABijwAAYpAAAGKRAABikwAAYpQAAGLTAABi1QAAYtcAAGLZAABi3AAAYt0AAGLeAABi3wAAYuAAAGLiAABi5AAAYuUAAGLmAABi6AAAYukAAGMoAABjKgAAYywAAGMuAABjMQAAYzIAAGMzAABjNAAAYzUAAGM3AABjOQAAYzoAAGM7AABjPQAAYz4AAGN9AABjfwAAY4EAAGODAABjhgAAY4cAAGOIAABjiQAAY4oAAGOMAABjjgAAY48AAGOQAABjkgAAY5MAAGPSAABj1AAAY9YAAGPYAABj2wAAY9wAAGPdAABj3gAAY98AAGPhAABj4wAAY+QAAGPlAABj5wAAY+gAAGQNAABkMQAAZFgAAGR8AABkfwAAZIEAAGSDAABkhQAAZIcAAGSJAABkigAAZI0AAGSaAABkqQAAZKsAAGStAABkrwAAZLEAAGSzAABktQAAZLcAAGTGAABkyQAAZMwAAGTPAABk0gAAZNUAAGTYAABk2wAAZN0AAGUcAABlHgAAZSEAAGUjAABlJgAAZScAAGUoAABlKQAAZSoAAGUsAABlLgAAZS8AAGUwAABlMgAAZTMAAGVyAABldAAAZXYAAGV4AABlewAAZXwAAGV9AABlfgAAZX8AAGWBAABlgwAAZYQAAGWFAABlhwAAZYgAAGXHAABlyQAAZcsAAGXNAABl0AAAZdEAAGXSAABl0wAAZdQAAGXWAABl2AAAZdkAAGXaAABl3AAAZd0AAGYcAABmHgAAZiEAAGYjAABmJgAAZicAAGYoAABmKQAAZioAAGYsAABmLgAAZi8AAGYwAABmMgAAZjMAAGY1AABmdAAAZnYAAGZ4AABmegAAZn0AAGZ+AABmfwAAZoAAAGaBAABmgwAAZoUAAGaGAABmhwAAZokAAGaKAABmyQAAZssAAGbNAABmzwAAZtIAAGbTAABm1AAAZtUAAGbWAABm2AAAZtoAAGbbAABm3AAAZt4AAGbfAABnHgAAZyAAAGciAABnJAAAZycAAGcoAABnKQAAZyoAAGcrAABnLQAAZy8AAGcwAABnMQAAZzMAAGc0AABnfwAAZ6IAAGfCAABn4gAAZ+QAAGfmAABn6AAAZ+oAAGfsAABn7QAAZ+4AAGfxAABn8gAAZ/QAAGf1AABn9wAAZ/kAAGf6AABn+wAAZ/4AAGf/AABoBAAAaBEAAGgWAABoGAAAaBoAAGgfAABoIgAAaCUAAGgnAABoTAAAaHAAAGiXAABouwAAaL4AAGjAAABowgAAaMQAAGjGAABoyAAAaMkAAGjMAABo2QAAaOoAAGjsAABo7gAAaPAAAGjyAABo9AAAaPYAAGj4AABo+gAAaQsAAGkOAABpEQAAaRQAAGkXAABpGgAAaR0AAGkgAABpIwAAaSUAAGlkAABpZgAAaWgAAGlqAABpbQAAaW4AAGlvAABpcAAAaXEAAGlzAABpdQAAaXYAAGl3AABpeQAAaXoAAGm5AABpuwAAab0AAGm/AABpwgAAacMAAGnEAABpxQAAacYAAGnIAABpygAAacsAAGnMAABpzgAAac8AAGoOAABqEAAAahMAAGoVAABqGAAAahkAAGoaAABqGwAAahwAAGoeAABqIAAAaiEAAGoiAABqJAAAaiUAAGoyAABqMwAAajQAAGo2AABqdQAAancAAGp5AABqewAAan4AAGp/AABqgAAAaoEAAGqCAABqhAAAaoYAAGqHAABqiAAAaooAAGqLAABqygAAaswAAGrOAABq0AAAatMAAGrUAABq1QAAatYAAGrXAABq2QAAatsAAGrcAABq3QAAat8AAGrgAABrHwAAayEAAGsjAABrJQAAaygAAGspAABrKgAAaysAAGssAABrLgAAazAAAGsxAABrMgAAazQAAGs1AABrdAAAa3YAAGt4AABregAAa30AAGt+AABrfwAAa4AAAGuBAABrgwAAa4UAAGuGAABrhwAAa4kAAGuKAABryQAAa8sAAGvNAABrzwAAa9IAAGvTAABr1AAAa9UAAGvWAABr2AAAa9oAAGvbAABr3AAAa94AAGvfAABsBAAAbCgAAGxPAABscwAAbHYAAGx4AABsegAAbHwAAGx+AABsgAAAbIEAAGyEAABskQAAbKAAAGyiAABspAAAbKYAAGyoAABsqgAAbKwAAGyuAABsvQAAbMAAAGzDAABsxgAAbMkAAGzMAABszwAAbNIAAGzUAABtEwAAbRUAAG0XAABtGQAAbRwAAG0dAABtHgAAbR8AAG0gAABtIgAAbSQAAG0lAABtJgAAbSgAAG0pAABtaAAAbWoAAG1sAABtbgAAbXE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AAH4IAAB+CgAAfgwAAH4NAAB+DgAAfhAAAH4RAAB+FAAAflMAAH5VAAB+VwAAflkAAH5cAAB+XQAAfl4AAH5fAAB+YAAAfmIAAH5kAAB+ZQAAfmYAAH5oAAB+aQAAfqgAAH6qAAB+rAAAfq4AAH6xAAB+sgAAfrMAAH60AAB+tQAAfrcAAH65AAB+ugAAfrsAAH69AAB+vgAAfv0AAH7/AAB/AQAAfwMAAH8GAAB/BwAAfwgAAH8JAAB/CgAAfwwAAH8OAAB/DwAAfxAAAH8SAAB/EwAAf14AAH+BAAB/oQAAf8EAAH/DAAB/xQAAf8cAAH/JAAB/ywAAf8wAAH/NAAB/0AAAf9EAAH/TAAB/1AAAf9YAAH/YAAB/2QAAf9oAAH/dAAB/3gAAf+MAAH/wAAB/9QAAf/cAAH/5AAB//gAAgAEAAIAEAACABgAAgCsAAIBPAACAdgAAgJoAAICdAACAnwAAgKEAAICjAACApQAAgKcAAICoAACAqwAAgLgAAIDJAACAywAAgM0AAIDPAACA0QAAgNMAAIDVAACA1wAAgNkAAIDqAACA7QAAgPAAAIDzAACA9gAAgPkAAID8AACA/wAAgQIAAIEEAACBQwAAgUUAAIFHAACBSQAAgUwAAIFNAACBTgAAgU8AAIFQAACBUgAAgVQAAIFVAACBVgAAgVgAAIFZAACBmAAAgZoAAIGcAACBngAAgaEAAIGiAACBowAAgaQAAIGlAACBpwAAgakAAIGqAACBqwAAga0AAIGuAACB7QAAge8AAIHyAACB9AAAgfcAAIH4AACB+QAAgfoAAIH7AACB/QAAgf8AAIIAAACCAQAAggMAAIIEAACCEQAAghIAAIITAACCFQAAglQAAIJWAACCWAAAgloAAIJdAACCXgAAgl8AAIJgAACCYQAAgmMAAIJlAACCZgAAgmcAAIJpAACCagAAgqkAAIKrAACCrQAAgq8AAIKyAACCswAAgrQAAIK1AACCtgAAgrgAAIK6AACCuwAAgrwAAIK+AACCvwAAgv4AAIMAAACDAgAAgwQAAIMHAACDCAAAgwkAAIMKAACDCwAAgw0AAIMPAACDEAAAgxEAAIMTAACDFAAAg1MAAINVAACDVwAAg1kAAINcAACDXQAAg14AAINfAACDYAAAg2IAAINkAACDZQAAg2YAAINoAACDaQAAg6gAAIOqAACDrAAAg64AAIOxAACDsgAAg7MAAIO0AACDtQAAg7cAAIO5AACDugAAg7sAAIO9AACDvgAAg+MAAIQHAACELgAAhFIAAIRVAACEVwAAhFkAAIRbAACEXQAAhF8AAIRgAACEYwAAhHAAAIR/AACEgQAAhIMAAISFAACEhwAAhIkAAISLAACEjQAAhJwAAISfAACEogAAhKUAAISoAACEqwAAhK4AAISxAACEswAAhPIAAIT0AACE9gAAhPgAAIT7AACE/AAAhP0AAIT+AACE/wAAhQEAAIUDAACFBAAAhQUAAIUHAACFCAAAhUcAAIVJAACFSwAAhU0AAIVQAACFUQAAhVIAAIVTAACFVAAAhVYAAIVYAACFWQAAhVoAAIVcAACFXQAAhZwAAIWeAACFoAAAhaIAAIWlAACFpgAAhacAAIWoAACFqQAAhasAAIWtAACFrgAAha8AAIWxAACFsgAAhfEAAIXzAACF9QAAhfcAAIX6AACF+wAAhfwAAIX9AACF/gAAhgAAAIYCAACGAwAAhgQAAIYGAACGBwAAhkYAAIZIAACGSgAAhkwAAIZPAACGUAAAhlEAAIZSAACGUwAAhlUAAIZXAACGWAAAhlkAAIZbAACGXAAAhpsAAIadAACGnwAAhqEAAIakAACGpQAAhqYAAIanAACGqAAAhqoAAIasAACGrQAAhq4AAIawAACGsQAAhvAAAIbyAACG9AAAhvYAAIb5AACG+gAAhvsAAIb8AACG/QAAhv8AAIcBAACHAgAAhwMAAIcFAACHBgAAhxEAAIcaAACHGwAAhx0AAIcmAACHMQAAh0AAAIdLAACHWQAAh24AAIeCAACHmQAAh6sAAIfqAACH7AAAh+4AAIfwAACH8gAAh/MAAIf0AACH9QAAh/YAAIf4AACH+gAAh/sAAIf8AACH/gAAh/8AAIg+AACIQAAAiEIAAIhEAACIRgAAiEcAAIhIAACISQAAiEoAAIhMAACITgAAiE8AAIhQAACIUgAAiFMAAIiSAACIlAAAiJcAAIiZAACImwAAiJwAAIidAACIngAAiJ8AAIihAACIowAAiKQAAIilAACIpwAAiKgAAIjzAACJFgAAiTYAAIlWAACJWAAAiVoAAIlcAACJXgAAiWAAAIlhAACJYgAAiWUAAIlmAACJaAAAiWkAAIlrAACJbQAAiW4AAIlvAACJcgAAiXMAAIl4AACJhQAAiYoAAImMAACJjgAAiZMAAImWAACJmQAAiZsAAInAAACJ5AAAigsAAIovAACKMgAAijQAAIo2AACKOAAAijoAAIo8AACKPQAAikAAAIpNAACKXgAAimAAAIpiAACKZAAAimYAAIpoAACKagAAimwAAIpuAACKfwAAioIAAIqFAACKiAAAiosAAIqOAACKkQAAipQAAIqXAACKmQAAitgAAIraAACK3AAAit4AAIrhAACK4gAAiuMAAIrkAACK5QAAiucAAIrpAACK6gAAiusAAIrtAACK7gAAiy0AAIsvAACLMQAAizMAAIs2AACLNwAAizgAAIs5AACLOgAAizwAAIs+AACLPwAAi0AAAItCAACLQwAAi4IAAIuEAACLhwAAi4kAAIuMAACLjQAAi44AAIuPAACLkAAAi5IAAIuUAACLlQAAi5YAAIuYAACLmQAAi6YAAIunAACLqAAAi6oAAIvpAACL6wAAi+0AAIvvAACL8gAAi/MAAIv0AACL9QAAi/YAAIv4AACL+gAAi/sAAIv8AACL/gAAi/8AAIw+AACMQAAAjEIAAIxEAACMRwAAjEgAAIxJAACMSgAAjEsAAIxNAACMTwAAjFAAAIxRAACMUwAAjFQAAIyTAACMlQAAjJcAAIyZAACMnAAAjJ0AAIyeAACMnwAAjKAAAIyiAACMpAAAjKUAAIymAACMqAAAjKkAAIzoAACM6gAAjOwAAIzuAACM8QAAjPIAAIzzAACM9AAAjPUAAIz3AACM+QAAjPoAAIz7AACM/QAAjP4AAI09AACNPwAAjUEAAI1DAACNRgAAjUcAAI1IAACNSQAAjUoAAI1MAACNTgAAjU8AAI1QAACNUgAAjVMAAI14AACNnAAAjcMAAI3nAACN6gAAjewAAI3uAACN8AAAjfIAAI30AACN9QAAjfgAAI4FAACOFAAAjhYAAI4YAACOGgAAjhwAAI4eAACOIAAAjiIAAI4xAACONAAAjjcAAI46AACOPQAAjkAAAI5DAACORgAAjkgAAI6HAACOiQAAjowAAI6OAACOkQAAjpIAAI6TAACOlAAAjpUAAI6XAACOmQAAjpoAAI6bAACOnQAAjp4AAI6iAACO4QAAjuMAAI7lAACO5wAAjuoAAI7rAACO7AAAju0AAI7uAACO8AAAjvIAAI7zAACO9AAAjvYAAI73AACPNgAAjzgAAI86AACPPAAAjz8AAI9AAACPQQAAj0IAAI9DAACPRQAAj0cAAI9IAACPSQAAj0sAAI9MAACPiwAAj40AAI+QAACPkgAAj5UAAI+WAACPlwAAj5gAAI+ZAACPmwAAj50AAI+eAACPnwAAj6EAAI+iAACPpQAAj+QAAI/mAACP6AAAj+oAAI/tAACP7gAAj+8AAI/wAACP8QAAj/MAAI/1AACP9gAAj/cAAI/5AACP+gAAkDkAAJA7AACQPQAAkD8AAJBCAACQQwAAkEQAAJBFAACQRgAAkEgAAJBKAACQSwAAkEwAAJBOAACQTwAAkI4AAJCQAACQkgAAkJQAAJCXAACQmAAAkJkAAJCaAACQmwAAkJ0AAJCfAACQoAAAkKEAAJCjAACQpAAAkO8AAJESAACRMgAAkVIAAJFUAACRVgAAkVgAAJFaAACRXAAAkV0AAJFeAACRYQAAkWIAAJFkAACRZQAAkWcAAJFpAACRagAAkWsAAJFuAACRbwAAkXQAAJGBAACRhgAAkYgAAJGKAACRjwAAkZIAAJGVAACRlwAAkbwAAJHgAACSBwAAkisAAJIuAACSMAAAkjIAAJI0AACSNgAAkjgAAJI5AACSPAAAkkkAAJJaAACSXAAAkl4AAJJgAACSYgAAkmQAAJJmAACSaAAAkmoAAJJ7AACSfgAAkoEAAJKEAACShwAAkooAAJKNAACSkAAAkpMAAJKVAACS1AAAktYAAJLYAACS2gAAkt0AAJLeAACS3wAAkuAAAJLhAACS4wAAkuUAAJLmAACS5wAAkukAAJLqAACTKQAAkysAAJMtAACTLwAAkzIAAJMzAACTNAAAkzUAAJM2AACTOAAAkzoAAJM7AACTPAAAkz4AAJM/AACTfgAAk4AAAJODAACThQAAk4gAAJOJAACTigAAk4sAAJOMAACTjgAAk5AAAJORAACTkgAAk5QAAJOVAACTogAAk6MAAJOkAACTpgAAk+UAAJPnAACT6QAAk+sAAJPuAACT7wAAk/AAAJPxAACT8gAAk/QAAJP2AACT9wAAk/gAAJP6AACT+wAAlDoAAJQ8AACUPgAAlEAAAJRDAACURAAAlEUAAJRGAACURwAAlEkAAJRLAACUTAAAlE0AAJRPAACUUAAAlI8AAJSRAACUkwAAlJUAAJSYAACUmQAAlJoAAJSbAACUnAAAlJ4AAJSgAACUoQAAlKIAAJSkAACUpQAAlOQAAJTmAACU6AAAlOoAAJTtAACU7gAAlO8AAJTwAACU8QAAlPMAAJT1AACU9gAAlPcAAJT5AACU+gAAlTkAAJU7AACVPQAAlT8AAJVCAACVQwAAlUQAAJVFAACVRgAAlUgAAJVKAACVSwAAlUwAAJVOAACVTwAAlXQAAJWYAACVvwAAleMAAJXmAACV6AAAleoAAJXsAACV7gAAlfAAAJXxAACV9AAAlgEAAJYQAACWEgAAlhQAAJYWAACWGAAAlhoAAJYcAACWHgAAli0AAJYwAACWMwAAljYAAJY5AACWPAAAlj8AAJZCAACWRAAAloMAAJaFAACWiAAAlooAAJaNAACWjgAAlo8AAJaQAACWkQAAlpMAAJaVAACWlgAAlpcAAJaZAACWmgAAltkAAJbbAACW3QAAlt8AAJbiAACW4wAAluQAAJblAACW5gAAlugAAJbqAACW6wAAluwAAJbuAACW7wAAly4AAJcwAACXMgAAlzQAAJc3AACXOAAAlzkAAJc6AACXOwAAlz0AAJc/AACXQAAAl0EAAJdDAACXRAAAl4MAAJeFAACXiAAAl4oAAJeNAACXjgAAl48AAJeQAACXkQAAl5MAAJeVAACXlgAAl5cAAJeZAACXmgAAl9kAAJfbAACX3QAAl98AAJfiAACX4wAAl+QAAJflAACX5gAAl+gAAJfqAACX6wAAl+wAAJfuAACX7wAAmC4AAJgwAACYMgAAmDQAAJg3AACYOAAAmDkAAJg6AACYOwAAmD0AAJg/AACYQAAAmEEAAJhDAACYRAAAmIMAAJiFAACYhwAAmIkAAJiMAACYjQAAmI4AAJiPAACYkAAAmJIAAJiUAACYlQAAmJYAAJiYAACYmQAAmOQAAJkHAACZJwAAmUcAAJlJAACZSwAAmU0AAJlPAACZUQAAmVIAAJlTAACZVgAAmVcAAJlZAACZWgAAmVwAAJleAACZXwAAmWAAAJljAACZZAAAmW0AAJl6AACZfwAAmYEAAJmDAACZiAAAmYsAAJmOAACZkAAAmbUAAJnZAACaAAAAmiQAAJonAACaKQAAmisAAJotAACaLwAAmjEAAJoyAACaNQAAmkIAAJpTAACaVQAAmlcAAJpZAACaWwAAml0AAJpfAACaYQAAmmMAAJp0AACadwAAmnoAAJp9AACagAAAmoMAAJqGAACaiQAAmowAAJqOAACazQAAms8AAJrRAACa0wAAmtYAAJrXAACa2AAAmtkAAJraAACa3AAAmt4AAJrfAACa4AAAmuIAAJrjAACbIgAAmyQAAJsmAACbKAAAmysAAJssAACbLQAAmy4AAJsvAACbMQAAmzMAAJs0AACbNQAAmzcAAJs4AACbdwAAm3kAAJt8AACbfgAAm4EAAJuCAACbgwAAm4QAAJuFAACbhwAAm4kAAJuKAACbiwAAm40AAJuOAACbmwAAm5wAAJudAACbnwAAm94AAJvgAACb4gAAm+QAAJvnAACb6AAAm+kAAJvqAACb6wAAm+0AAJvvAACb8AAAm/EAAJvzAACb9AAAnDMAAJw1AACcNwAAnDkAAJw8AACcPQAAnD4AAJw/AACcQAAAnEIAAJxEAACcRQAAnEYAAJxIAACcSQAAnIgAAJyKAACcjAAAnI4AAJyRAACckgAAnJMAAJyUAACclQAAnJcAAJyZAACcmgAAnJsAAJydAACcngAAnN0AAJzfAACc4QAAnOMAAJzmAACc5wAAnOgAAJzpAACc6gAAnOwAAJzuAACc7wAAnPAAAJzyAACc8wAAnTIAAJ00AACdNgAAnTgAAJ07AACdPAAAnT0AAJ0+AACdPwAAnUEAAJ1DAACdRAAAnUUAAJ1HAACdSAAAnW0AAJ2RAACduAAAndwAAJ3fAACd4QAAneMAAJ3lAACd5wAAnekAAJ3qAACd7QAAnfoAAJ4JAACeCwAAng0AAJ4PAACeEQAAnhMAAJ4VAACeFwAAniYAAJ4pAACeLAAAni8AAJ4yAACeNQAAnjgAAJ47AACePQAAnnwAAJ5+AACegAAAnoIAAJ6FAACehgAAnocAAJ6IAACeiQAAnosAAJ6NAACejgAAno8AAJ6RAACekgAAntEAAJ7TAACe1QAAntcAAJ7aAACe2wAAntwAAJ7dAACe3gAAnuAAAJ7iAACe4wAAnuQAAJ7mAACe5wAAnyYAAJ8oAACfKgAAnywAAJ8vAACfMAAAnzEAAJ8yAACfMwAAnzUAAJ83AACfOAAAnzkAAJ87AACfPAAAn3sAAJ99AACffwAAn4EAAJ+EAACfhQAAn4YAAJ+HAACfiAAAn4oAAJ+MAACfjQAAn44AAJ+QAACfkQAAn9AAAJ/SAACf1AAAn9YAAJ/ZAACf2gAAn9sAAJ/cAACf3QAAn98AAJ/hAACf4gAAn+MAAJ/lAACf5gAAoCUAAKAnAACgKQAAoCsAAKAuAACgLwAAoDAAAKAxAACgMgAAoDQAAKA2AACgNwAAoDgAAKA6AACgOwAAoHoAAKB8AACgfgAAoIAAAKCDAACghAAAoIUAAKCGAACghwAAoIkAAKCLAACgjAAAoI0AAKCPAACgkAAAoNsAAKD+AAChHgAAoT4AAKFAAAChQgAAoUQAAKFGAAChSAAAoUkAAKFKAAChTQAAoU4AAKFQAAChUQAAoVMAAKFVAAChVgAAoVcAAKFaAAChWwAAoWAAAKFtAAChcgAAoXQAAKF2AAChewAAoX4AAKGBAAChgwAAoagAAKHMAACh8wAAohcAAKIaAACiHAAAoh4AAKIgAACiIgAAoiQAAKIlAACiKAAAojUAAKJGAACiSAAAokoAAKJMAACiTgAAolAAAKJSAACiVAAAolYAAKJnAACiagAAom0AAKJwAACicwAAonYAAKJ5AACifAAAon8AAKKBAACiwAAAosIAAKLEAACixgAAoskAAKLKAACiywAAoswAAKLNAACizwAAotEAAKLSAACi0wAAotUAAKLWAACjFQAAoxcAAKMZAACjGwAAox4AAKMfAACjIAAAoyEAAKMiAACjJAAAoyYAAKMnAACjKAAAoyoAAKMrAACjagAAo2wAAKNvAACjcQAAo3QAAKN1AACjdgAAo3cAAKN4AACjegAAo3wAAKN9AACjfgAAo4AAAKOBAACjjgAAo48AAKOQAACjkgAAo9EAAKPTAACj1QAAo9cAAKPaAACj2wAAo9wAAKPdAACj3gAAo+AAAKPiAACj4wAAo+QAAKPmAACj5wAApCYAAKQoAACkKgAApCwAAKQvAACkMAAApDEAAKQyAACkMwAApDUAAKQ3AACkOAAApDkAAKQ7AACkPAAApHsAAKR9AACkfwAApIEAAKSEAACkhQAApIYAAKSHAACkiAAApIoAAKSMAACkjQAApI4AAKSQAACkkQAApNAAAKTSAACk1AAApNYAAKTZAACk2gAApNsAAKTcAACk3QAApN8AAKThAACk4gAApOMAAKTlAACk5gAApSUAAKUnAAClKQAApSsAAKUuAAClLwAApTAAAKUxAAClMgAApTQAAKU2AAClNwAApTgAAKU6AAClOwAApWAAAKWEAAClqwAApc8AAKXSAACl1AAApdYAAKXYAACl2gAApdwAAKXdAACl4AAApe0AAKX8AACl/gAApgAAAKYCAACmBAAApgYAAKYIAACmCgAAphkAAKYcAACmHwAApiIAAKYlAACmKAAApisAAKYuAACmMAAApm8AAKZxAACmdAAApnYAAKZ5AACmegAApnsAAKZ8AACmfQAApn8AAKaBAACmggAApoMAAKaFAACmhgAApogAAKbHAACmyQAApssAAKbNAACm0AAAptEAAKbSAACm0wAAptQAAKbWAACm2AAAptkAAKbaAACm3AAApt0AAKccAACnHgAApyAAAKciAACnJQAApyYAAKcnAACnKAAApykAAKcrAACnLQAApy4AAKcvAACnMQAApzIAAKdxAACncwAAp3YAAKd4AACnewAAp3wAAKd9AACnfgAAp38AAKeBAACngwAAp4QAAKeFAACnhwAAp4gAAKeLAACnygAAp8wAAKfOAACn0AAAp9MAAKfUAACn1QAAp9YAAKfXAACn2QAAp9sAAKfcAACn3QAAp98AAKfgAACoHwAAqCEAAKgjAACoJQAAqCgAAKgpAACoKgAAqCsAAKgsAACoLgAAqDAAAKgxAACoMgAAqDQAAKg1AACodAAAqHYAAKh4AACoegAAqH0AAKh+AACofwAAqIAAAKiBAACogwAAqIUAAKiGAACohwAAqIkAAKiKAACo1QAAqPgAAKkYAACpOAAAqToAAKk8AACpPgAAqUAAAKlCAACpQwAAqUQAAKlHAACpSAAAqUoAAKlLAACpTQAAqU8AAKlQAACpUQAAqVQAAKlVAACpWgAAqWcAAKlsAACpbgAAqXAAAKl1AACpeAAAqXsAAKl9AACpogAAqcYAAKntAACqEQAAqhQAAKoWAACqGAAAqhoAAKocAACqHgAAqh8AAKoiAACqLwAAqkAAAKpCAACqRAAAqkYAAKpIAACqSgAAqkwAAKpOAACqUAAAqmEAAKpkAACqZwAAqmoAAKptAACqcAAAqnMAAKp2AACqeQAAqnsAAKq6AACqvAAAqr4AAKrAAACqwwAAqsQAAKrFAACqxgAAqscAAKrJAACqywAAqswAAKrNAACqzwAAqtAAAKsPAACrEQAAqxMAAKsVAACrGAAAqxkAAKsaAACrGwAAqxwAAKseAACrIAAAqyEAAKsiAACrJAAAqyUAAKtkAACrZgAAq2kAAKtrAACrbgAAq28AAKtwAACrcQAAq3IAAKt0AACrdgAAq3cAAKt4AACregAAq3sAAKuIAACriQAAq4oAAKuMAACrywAAq80AAKvPAACr0QAAq9QAAKvVAACr1gAAq9cAAKvYAACr2gAAq9wAAKvdAACr3gAAq+AAAKvhAACsIAAArCIAAKwkAACsJgAArCkAAKwqAACsKwAArCwAAKwtAACsLwAArDEAAKwyAACsMwAArDUAAKw2AACsdQAArHcAAKx5AACsewAArH4AAKx/AACsgAAArIEAAKyCAACshAAArIYAAKyHAACsiAAArIoAAKyLAACsygAArMwAAKzOAACs0AAArNMAAKzUAACs1QAArNYAAKzXAACs2QAArNsAAKzcAACs3QAArN8AAKzgAACtHwAArSEAAK0jAACtJQAArSgAAK0pAACtKgAArSsAAK0sAACtLgAArTAAAK0xAACtMgAArTQAAK01AACtWgAArX4AAK2lAACtyQAArcwAAK3OAACt0AAArdIAAK3UAACt1gAArdcAAK3aAACt5wAArfYAAK34AACt+gAArfwAAK3+AACuAAAArgIAAK4EAACuEwAArhYAAK4ZAACuHAAArh8AAK4iAACuJQAArigAAK4qAACuaQAArmsAAK5uAACucAAArnMAAK50AACudQAArnYAAK53AACueQAArnsAAK58AACufQAArn8AAK6AAACuvwAArsEAAK7DAACuxQAArsgAAK7JAACuygAArssAAK7MAACuzgAArtAAAK7RAACu0gAArtQAAK7VAACvFAAArxYAAK8YAACvGgAArx0AAK8eAACvHwAAryAAAK8hAACvIwAAryUAAK8mAACvJwAArykAAK8qAACvaQAAr2sAAK9uAACvcAAAr3MAAK90AACvdQAAr3YAAK93AACveQAAr3sAAK98AACvfQAAr38AAK+AAACvvwAAr8EAAK/DAACvxQAAr8gAAK/JAACvygAAr8sAAK/MAACvzgAAr9AAAK/RAACv0gAAr9QAAK/VAACwFAAAsBYAALAYAACwGgAAsB0AALAeAACwHwAAsCAAALAhAACwIwAAsCUAALAmAACwJwAAsCkAALAqAACwaQAAsGsAALBtAACwbwAAsHIAALBzAACwdAAAsHUAALB2AACweAAAsHoAALB7AACwfAAAsH4AALB/AACwygAAsO0AALENAACxLQAAsS8AALExAACxMwAAsTUAALE3AACxOAAAsTkAALE8AACxPQAAsT8AALFAAACxQgAAsUQAALFFAACxRgAAsUkAALFKAACxTwAAsVwAALFhAACxYwAAsWUAALFqAACxbQAAsXAAALFyAACxlwAAsbsAALHiAACyBgAAsgkAALILAACyDQAAsg8AALIRAACyEwAAshQAALIXAACyJAAAsjUAALI3AACyOQAAsjsAALI9AACyPwAAskEAALJDAACyRQAAslYAALJZAACyXAAAsl8AALJiAACyZQAAsmgAALJrAACybgAAsnAAALKvAACysQAAsrMAALK1AACyuAAAsrkAALK6AACyuwAAsrwAALK+AACywAAAssEAALLCAACyxAAAssUAALMEAACzBgAAswgAALMKAACzDQAAsw4AALMPAACzEAAAsxEAALMTAACzFQAAsxYAALMXAACzGQAAsxoAALNZAACzWwAAs14AALNgAACzYwAAs2QAALNlAACzZgAAs2cAALNpAACzawAAs2wAALNtAACzbwAAs3AAALN9AACzfgAAs38AALOBAACzwAAAs8IAALPEAACzxgAAs8kAALPKAACzywAAs8wAALPNAACzzwAAs9EAALPSAACz0wAAs9UAALPWAAC0FQAAtBcAALQZAAC0GwAAtB4AALQfAAC0IAAAtCEAALQiAAC0JAAAtCYAALQnAAC0KAAAtCoAALQrAAC0agAAtGwAALRuAAC0cAAAtHMAALR0AAC0dQAAtHYAALR3AAC0eQAAtHsAALR8AAC0fQAAtH8AALSAAAC0vwAAtMEAALTDAAC0xQAAtMgAALTJAAC0ygAAtMsAALTMAAC0zgAAtNAAALTRAAC00gAAtNQAALTVAAC1FAAAtRYAALUYAAC1GgAAtR0AALUeAAC1HwAAtSAAALUhAAC1IwAAtSUAALUmAAC1JwAAtSkAALUqAAC1TwAAtXMAALWaAAC1vgAAtcEAALXDAAC1xQAAtccAALXJAAC1ywAAtcwAALXPAAC13AAAtesAALXtAAC17wAAtfEAALXzAAC19QAAtfcAALX5AAC2CAAAtgsAALYOAAC2EQAAthQAALYXAAC2GgAAth0AALYfAAC2XgAAtmAAALZiAAC2ZAAAtmcAALZoAAC2aQAAtmoAALZrAAC2bQAAtm8AALZwAAC2cQAAtnMAALZ0AAC2swAAtrUAALa3AAC2uQAAtrwAALa9AAC2vgAAtr8AALbAAAC2wgAAtsQAALbFAAC2xgAAtsgAALbJAAC3CAAAtwoAALcMAAC3DgAAtxEAALcSAAC3EwAAtxQAALcVAAC3FwAAtxkAALcaAAC3GwAAtx0AALceAAC3XQAAt18AALdhAAC3YwAAt2YAALdnAAC3aAAAt2kAALdqAAC3bAAAt24AALdvAAC3cAAAt3IAALdzAAC3sgAAt7QAALe2AAC3uAAAt7sAALe8AAC3vQAAt74AALe/AAC3wQAAt8MAALfEAAC3xQAAt8cAALfIAAC4BwAAuAkAALgLAAC4DQAAuBAAALgRAAC4EgAAuBMAALgUAAC4FgAAuBgAALgZAAC4GgAAuBwAALgdAAC4XAAAuF4AALhgAAC4YgAAuGUAALhmAAC4ZwAAuGgAALhpAAC4awAAuG0AALhuAAC4bwAAuHEAALhyAAC4vQAAuOAAALkAAAC5IAAAuSIAALkkAAC5JgAAuSgAALkqAAC5KwAAuSwAALkvAAC5MAAAuTIAALkzAAC5NQAAuTcAALk4AAC5OQAAuTwAALk9AAC5RgAAuVMAALlYAAC5WgAAuVwAALlhAAC5ZAAAuWcAALlpAAC5jgAAubIAALnZAAC5/QAAugAAALoCAAC6BAAAugYAALoIAAC6CgAAugsAALoOAAC6GwAAuiwAALouAAC6MAAAujIAALo0AAC6NgAAujgAALo6AAC6PAAAuk0AALpQAAC6UwAAulYAALpZAAC6XAAAul8AALpiAAC6ZQAAumcAALqmAAC6qAAAuqoAALqsAAC6rwAAurAAALqxAAC6sgAAurMAALq1AAC6twAAurgAALq5AAC6uwAAurwAALr7AAC6/QAAuv8AALsBAAC7BAAAuwUAALsGAAC7BwAAuwgAALsKAAC7DAAAuw0AALsOAAC7EAAAuxEAALtQAAC7UgAAu1UAALtXAAC7WgAAu1sAALtcAAC7XQAAu14AALtgAAC7YgAAu2MAALtkAAC7ZgAAu2cAALt0AAC7dQAAu3YAALt4AAC7twAAu7kAALu7AAC7vQAAu8AAALvBAAC7wgAAu8MAALvEAAC7xgAAu8gAALvJAAC7ygAAu8wAALvNAAC8DAAAvA4AALwQAAC8EgAAvBUAALwWAAC8FwAAvBgAALwZAAC8GwAAvB0AALweAAC8HwAAvCEAALwiAAC8YQAAvGMAALxlAAC8ZwAAvGoAALxrAAC8bAAAvG0AALxuAAC8cAAAvHIAALxzAAC8dAAAvHYAALx3AAC8tgAAvLgAALy6AAC8vAAAvL8AALzAAAC8wQAAvMIAALzDAAC8xQAAvMcAALzIAAC8yQAAvMsAALzMAAC9CwAAvQ0AAL0PAAC9EQAAvRQAAL0VAAC9FgAAvRcAAL0YAAC9GgAAvRwAAL0dAAC9HgAAvSAAAL0hAAC9RgAAvWoAAL2RAAC9tQAAvbgAAL26AAC9vAAAvb4AAL3AAAC9wgAAvcMAAL3GAAC90wAAveIAAL3kAAC95gAAvegAAL3qAAC97AAAve4AAL3wAAC9/wAAvgIAAL4FAAC+CAAAvgsAAL4OAAC+EQAAvhQAAL4WAAC+VQAAvlcAAL5ZAAC+WwAAvl4AAL5fAAC+YAAAvmEAAL5iAAC+ZAAAvmYAAL5nAAC+aAAAvmoAAL5rAAC+qgAAvqwAAL6uAAC+sAAAvrMAAL60AAC+tQAAvrYAAL63AAC+uQAAvrsAAL68AAC+vQAAvr8AAL7AAAC+/wAAvwEAAL8DAAC/BQAAvwgAAL8JAAC/CgAAvwsAAL8MAAC/DgAAvxAAAL8RAAC/EgAAvxQAAL8VAAC/VAAAv1YAAL9ZAAC/WwAAv14AAL9fAAC/YAAAv2EAAL9iAAC/ZAAAv2YAAL9nAAC/aAAAv2oAAL9rAAC/bgAAv60AAL+vAAC/sQAAv7MAAL+2AAC/twAAv7gAAL+5AAC/ugAAv7wAAL++AAC/vwAAv8AAAL/CAAC/wwAAwAIAAMAEAADABgAAwAgAAMALAADADAAAwA0AAMAOAADADwAAwBEAAMATAADAFAAAwBUAAMAXAADAGAAAwFcAAMBZAADAWwAAwF0AAMBgAADAYQAAwGIAAMBjAADAZAAAwGYAAMBoAADAaQAAwGoAAMBsAADAbQAAwLgAAMDbAADA+wAAwRsAAMEdAADBHwAAwSEAAMEjAADBJQAAwSYAAMEnAADBKgAAwSsAAMEtAADBLgAAwTAAAMEyAADBMwAAwTQAAME3AADBOAAAwT0AAMFKAADBTwAAwVEAAMFTAADBWAAAwVsAAMFeAADBYAAAwYUAAMGpAADB0AAAwfQAAMH3AADB+QAAwfsAAMH9AADB/wAAwgEAAMICAADCBQAAwhIAAMIjAADCJQAAwicAAMIpAADCKwAAwi0AAMIvAADCMQAAwjMAAMJEAADCRwAAwkoAAMJNAADCUAAAwlMAAMJWAADCWQAAwlwAAMJeAADCnQAAwp8AAMKhAADCowAAwqYAAMKnAADCqAAAwqkAAMKqAADCrAAAwq4AAMKvAADCsAAAwrIAAMKzAADC8gAAwvQAAML2AADC+AAAwvsAAML8AADC/QAAwv4AAML/AADDAQAAwwMAAMMEAADDBQAAwwcAAMMIAADDRwAAw0kAAMNMAADDTgAAw1EAAMNSAADDUwAAw1QAAMNVAADDVwAAw1kAAMNaAADDWwAAw10AAMNeAADDawAAw2wAAMNtAADDbwAAw64AAMOwAADDsgAAw7QAAMO3AADDuAAAw7kAAMO6AADDuwAAw70AAMO/AADDwAAAw8EAAMPDAADDxAAAxAMAAMQFAADEBwAAxAkAAMQMAADEDQAAxA4AAMQPAADEEAAAxBIAAMQUAADEFQAAxBYAAMQYAADEGQAAxFgAAMRaAADEXAAAxF4AAMRhAADEYgAAxGMAAMRkAADEZQAAxGcAAMRpAADEagAAxGsAAMRtAADEbgAAxK0AAMSvAADEsQAAxLMAAMS2AADEtwAAxLgAAMS5AADEugAAxLwAAMS+AADEvwAAxMAAAMTCAADEwwAAxQIAAMUEAADFBgAAxQgAAMULAADFDAAAxQ0AAMUOAADFDwAAxREAAMUTAADFFAAAxRUAAMUXAADFGAAAxT0AAMVhAADFiAAAxawAAMWvAADFsQAAxbMAAMW1AADFtwAAxbkAAMW6AADFvQAAxcoAAMXZAADF2wAAxd0AAMXfAADF4QAAxeMAAMXlAADF5wAAxfYAAMX5AADF/AAAxf8AAMYCAADGBQAAxggAAMYLAADGDQAAxkwAAMZOAADGUAAAxlIAAMZVAADGVgAAxlcAAMZYAADGWQAAxlsAAMZdAADGXgAAxl8AAMZhAADGYgAAxqEAAMajAADGpQAAxqcAAMaqAADGqwAAxqwAAMatAADGrgAAxrAAAMayAADGswAAxrQAAMa2AADGtwAAxvYAAMb4AADG+gAAxvwAAMb/AADHAAAAxwEAAMcCAADHAwAAxwUAAMcHAADHCAAAxwkAAMcLAADHDAAAx0sAAMdNAADHUAAAx1IAAMdVAADHVgAAx1cAAMdYAADHWQAAx1sAAMddAADHXgAAx18AAMdhAADHYgAAx6UAAMfJAADH7QAAyBAAAMg3AADIVwAAyH4AAMilAADIxQAAyOkAAMkNAADJDwAAyRIAAMkUAADJFgAAyRgAAMkbAADJHgAAySAAAMkiAADJJQAAyScAAMkpAADJLAAAyS8AAMkwAADJNQAAyUIAAMlFAADJRwAAyUoAAMlNAADJTwAAyXQAAMmYAADJvwAAyeMAAMnmAADJ6AAAyeoAAMnsAADJ7gAAyfAAAMnxAADJ9AAAygEAAMoUAADKFgAAyhgAAMoaAADKHAAAyh4AAMogAADKIgAAyiQAAMomAADKOQAAyjwAAMo/AADKQgAAykUAAMpIAADKSwAAyk4AAMpRAADKVAAAylYAAMqVAADKlwAAypoAAMqcAADKnwAAyqAAAMqhAADKogAAyqMAAMqlAADKpwAAyqgAAMqpAADKqwAAyqwAAMq1AADKtgAAyrgAAMr3AADK+QAAyvsAAMr9AADLAAAAywEAAMsCAADLAwAAywQAAMsGAADLCAAAywkAAMsKAADLDAAAyw0AAMtMAADLTgAAy1EAAMtTAADLVgAAy1cAAMtYAADLWQAAy1oAAMtcAADLXgAAy18AAMtgAADLYgAAy2MAAMtsAADLbQAAy28AAMuuAADLsAAAy7IAAMu0AADLtwAAy7gAAMu5AADLugAAy7sAAMu9AADLvwAAy8AAAMvBAADLwwAAy8QAAMwDAADMBQAAzAgAAMwKAADMDQAAzA4AAMwPAADMEAAAzBEAAMwTAADMFQAAzBYAAMwXAADMGQAAzBoAAMwjAADMJAAAzCYAAMxlAADMZwAAzGkAAMxrAADMbgAAzG8AAMxwAADMcQAAzHIAAMx0AADMdgAAzHcAAMx4AADMegAAzHsAAMy6AADMvAAAzL8AAMzBAADMxAAAzMUAAMzGAADMxwAAzMgAAMzKAADMzAAAzM0AAMzOAADM0AAAzNEAAMzeAADM3wAAzOAAAMziAADNIQAAzSMAAM0lAADNJwAAzSoAAM0rAADNLAAAzS0AAM0uAADNMAAAzTIAAM0zAADNNAAAzTYAAM03AADNdgAAzXgAAM16AADNfAAAzX8AAM2AAADNgQAAzYIAAM2DAADNhQAAzYcAAM2IAADNiQAAzYsAAM2MAADNmQAAzaIAAM2lAADNpwAAzaoAAM2tAADNtgAAzbkAAM28AADNvwAAzcIAAM3EAADN0wAAzeUAAM3yAADOPQAAzmAAAM6AAADOoAAAzqIAAM6kAADOpgAAzqgAAM6rAADOrAAAzq0AAM6wAADOsQAAzrMAAM60AADOtgAAzrkAAM66AADOuwAAzr4AAM6/AADOxAAAztEAAM7WAADO2AAAztoAAM7fAADO4gAAzuUAAM7nAADPDAAAzzAAAM9XAADPewAAz34AAM+AAADPggAAz4QAAM+GAADPiAAAz4kAAM+MAADPmQAAz6oAAM+sAADPrgAAz7AAAM+yAADPtAAAz7YAAM+4AADPugAAz8sAAM/OAADP0QAAz9QAAM/XAADP2gAAz90AAM/gAADP4wAAz+UAANAkAADQJgAA0CgAANAqAADQLQAA0C4AANAvAADQMAAA0DEAANAzAADQNQAA0DYAANA3AADQOQAA0DoAANB5AADQewAA0H0AANB/AADQggAA0IMAANCEAADQhQAA0IYAANCIAADQigAA0IsAANCMAADQjgAA0I8AANDOAADQ0AAA0NMAANDVAADQ2AAA0NkAANDaAADQ2wAA0NwAANDeAADQ4AAA0OEAANDiAADQ5AAA0OUAANDyAADQ8wAA0PQAAND2AADRNQAA0TcAANE5AADROwAA0T4AANE/AADRQAAA0UEAANFCAADRRAAA0UYAANFHAADRSAAA0UoAANFLAADRigAA0YwAANGOAADRkAAA0ZMAANGUAADRlQAA0ZYAANGXAADRmQAA0ZsAANGcAADRnQAA0Z8AANGgAADR3wAA0eEAANHjAADR5QAA0egAANHpAADR6gAA0esAANHsAADR7gAA0fAAANHxAADR8gAA0fQAANH1AADSNAAA0jYAANI4AADSOgAA0j0AANI+AADSPwAA0kAAANJBAADSQwAA0kUAANJGAADSRwAA0kkAANJKAADSiQAA0osAANKNAADSjwAA0pIAANKTAADSlAAA0pUAANKWAADSmAAA0poAANKbAADSnAAA0p4AANKfAADSxAAA0ugAANMPAADTMwAA0zYAANM4AADTOgAA0zwAANM+AADTQAAA00EAANNEAADTUQAA02AAANNiAADTZAAA02YAANNoAADTagAA02wAANNuAADTfQAA04AAANODAADThgAA04kAANOMAADTjwAA05IAANOUAADT0wAA09UAANPXAADT2QAA09wAANPdAADT3gAA098AANPgAADT4gAA0+QAANPlAADT5gAA0+gAANPpAADUKAAA1CoAANQsAADULgAA1DEAANQyAADUMwAA1DQAANQ1AADUNwAA1DkAANQ6AADUOwAA1D0AANQ+AADUfQAA1H8AANSBAADUgwAA1IYAANSHAADUiAAA1IkAANSKAADUjAAA1I4AANSPAADUkAAA1JIAANSTAADU0gAA1NQAANTWAADU2AAA1NsAANTcAADU3QAA1N4AANTfAADU4QAA1OMAANTkAADU5QAA1OcAANToAADVJwAA1SkAANUrAADVLQAA1TAAANUxAADVMgAA1TMAANU0AADVNgAA1TgAANU5AADVOgAA1TwAANU9AADVfAAA1X4AANWAAADVggAA1YUAANWGAADVhwAA1YgAANWJAADViwAA1Y0AANWOAADVjwAA1ZEAANWSAADV0QAA1dMAANXWAADV2AAA1dsAANXcAADV3QAA1d4AANXfAADV4QAA1eMAANXkAADV5QAA1ecAANXoAADWMwAA1lYAANZ2AADWlgAA1pgAANaaAADWnAAA1p4AANahAADWogAA1qMAANamAADWpwAA1qkAANaqAADWrAAA1q4AANavAADWsAAA1rMAANa0AADWuQAA1sYAANbLAADWzQAA1s8AANbUAADW1wAA1toAANbcAADXAQAA1yUAANdMAADXcAAA13MAANd1AADXdwAA13kAANd7AADXfQAA134AANeBAADXjgAA158AANehAADXowAA16UAANenAADXqQAA16sAANetAADXrwAA18AAANfDAADXxgAA18kAANfMAADXzwAA19IAANfVAADX2AAA19oAANgZAADYGwAA2B0AANgfAADYIgAA2CMAANgkAADYJQAA2CYAANgoAADYKgAA2CsAANgsAADYLgAA2C8AANhuAADYcAAA2HIAANh0AADYdwAA2HgAANh5AADYegAA2HsAANh9AADYfwAA2IAAANiBAADYgwAA2IQAANjDAADYxQAA2MgAANjKAADYzQAA2M4AANjPAADY0AAA2NEAANjTAADY1QAA2NYAANjXAADY2QAA2NoAANjnAADY6AAA2OkAANjrAADZKgAA2SwAANkuAADZMAAA2TMAANk0AADZNQAA2TYAANk3AADZOQAA2TsAANk8AADZPQAA2T8AANlAAADZfwAA2YEAANmDAADZhQAA2YgAANmJAADZigAA2YsAANmMAADZjgAA2ZAAANmRAADZkgAA2ZQAANmVAADZ1AAA2dYAANnYAADZ2gAA2d0AANneAADZ3wAA2eAAANnhAADZ4wAA2eUAANnmAADZ5wAA2ekAANnqAADaKQAA2isAANotAADaLwAA2jIAANozAADaNAAA2jUAANo2AADaOAAA2joAANo7AADaPAAA2j4AANo/AADafgAA2oAAANqCAADahAAA2ocAANqIAADaiQAA2ooAANqLAADajQAA2o8AANqQAADakQAA2pMAANqUAADauQAA2t0AANsEAADbKAAA2ysAANstAADbLwAA2zEAANszAADbNQAA2zYAANs5AADbRgAA21UAANtXAADbWQAA21sAANtdAADbXwAA22EAANtjAADbcgAA23UAANt4AADbewAA234AANuBAADbhAAA24cAANuJAADbyAAA28oAANvMAADbzgAA29EAANvSAADb0wAA29QAANvVAADb1wAA29kAANvaAADb2wAA290AANveAADcHQAA3B8AANwhAADcIwAA3CYAANwnAADcKAAA3CkAANwqAADcLAAA3C4AANwvAADcMAAA3DIAANwzAADccgAA3HQAANx2AADceAAA3HsAANx8AADcfQAA3H4AANx/AADcgQAA3IMAANyEAADchQAA3IcAANyIAADcxwAA3MkAANzLAADczQAA3NAAANzRAADc0gAA3NMAANzUAADc1gAA3NgAANzZAADc2gAA3NwAANzdAADdHAAA3R4AAN0gAADdIgAA3SUAAN0mAADdJwAA3SgAAN0pAADdKwAA3S0AAN0uAADdLwAA3TEAAN0yAADdcQAA3XMAAN11AADddwAA3XoAAN17AADdfAAA3X0AAN1+AADdgAAA3YIAAN2DAADdhAAA3YYAAN2HAADdxgAA3cgAAN3LAADdzQAA3dAAAN3RAADd0gAA3dMAAN3UAADd1gAA3dgAAN3ZAADd2gAA3dwAAN3dAADeKAAA3ksAAN5rAADeiwAA3o0AAN6PAADekQAA3pMAAN6VAADelgAA3pcAAN6aAADemwAA3p0AAN6eAADeoAAA3qIAAN6jAADepAAA3qcAAN6oAADerQAA3roAAN6/AADewQAA3sMAAN7IAADeywAA3s4AAN7QAADe9QAA3xkAAN9AAADfZAAA32cAAN9pAADfawAA320AAN9vAADfcQAA33IAAN91AADfggAA35MAAN+VAADflwAA35kAAN+bAADfnQAA358AAN+hAADfowAA37QAAN+3AADfugAA370AAN/AAADfwwAA38YAAN/JAADfzAAA384AAOANAADgDwAA4BEAAOATAADgFgAA4BcAAOAYAADgGQAA4BoAAOAcAADgHgAA4B8AAOAgAADgIgAA4CMAAOBiAADgZAAA4GYAAOBoAADgawAA4GwAAOBtAADgbgAA4G8AAOBxAADgcwAA4HQAAOB1AADgdwAA4HgAAOC3AADguQAA4LwAAOC+AADgwQAA4MIAAODDAADgxAAA4MUAAODHAADgyQAA4MoAAODLAADgzQAA4M4AAODbAADg3AAA4N0AAODfAADhHgAA4SAAAOEiAADhJAAA4ScAAOEoAADhKQAA4SoAAOErAADhLQAA4S8AAOEwAADhMQAA4TMAAOE0AADhcwAA4XUAAOF3AADheQAA4XwAAOF9AADhfgAA4X8AAOGAAADhggAA4YQAAOGFAADhhgAA4YgAAOGJAADhyAAA4coAAOHMAADhzgAA4dEAAOHSAADh0wAA4dQAAOHVAADh1wAA4dkAAOHaAADh2wAA4d0AAOHeAADiHQAA4h8AAOIhAADiIwAA4iYAAOInAADiKAAA4ikAAOIqAADiLAAA4i4AAOIvAADiMAAA4jIAAOIzAADicgAA4nQAAOJ2AADieAAA4nsAAOJ8AADifQAA4n4AAOJ/AADigQAA4oMAAOKEAADihQAA4ocAAOKIAADirQAA4tEAAOL4AADjHAAA4x8AAOMhAADjIwAA4yUAAOMnAADjKQAA4yoAAOMtAADjOgAA40kAAONLAADjTQAA408AAONRAADjUwAA41UAAONXAADjZgAA42kAAONsAADjbwAA43IAAON1AADjeAAA43sAAON9AADjvAAA474AAOPAAADjwgAA48UAAOPGAADjxwAA48gAAOPJAADjywAA480AAOPOAADjzwAA49EAAOPSAADkEQAA5BMAAOQVAADkFwAA5BoAAOQbAADkHAAA5B0AAOQeAADkIAAA5CIAAOQjAADkJAAA5CYAAOQnAADkZgAA5GgAAORqAADkbAAA5G8AAORwAADkcQAA5HIAAORzAADkdQAA5HcAAOR4AADkeQAA5HsAAOR8AADkuwAA5L0AAOTAAADkwgAA5MUAAOTGAADkxwAA5MgAAOTJAADkywAA5M0AAOTOAADkzwAA5NEAAOTSAADlEQAA5RMAAOUVAADlFwAA5RoAAOUbAADlHAAA5R0AAOUeAADlIAAA5SIAAOUjAADlJAAA5SYAAOUnAADlZgAA5WgAAOVqAADlbAAA5W8AAOVwAADlcQAA5XIAAOVzAADldQAA5XcAAOV4AADleQAA5XsAAOV8AADluwAA5b0AAOXAAADlwgAA5cUAAOXGAADlxwAA5cgAAOXJAADlywAA5c0AAOXOAADlzwAA5dEAAOXSAADmHQAA5kAAAOZgAADmgAAA5oIAAOaEAADmhgAA5ogAAOaLAADmjAAA5o0AAOaQAADmkQAA5pMAAOaUAADmlgAA5pkAAOaaAADmmwAA5p4AAOafAADmqAAA5rUAAOa6AADmvAAA5r4AAObDAADmxgAA5skAAObLAADm8AAA5xQAAOc7AADnXwAA52IAAOdkAADnZgAA52gAAOdqAADnbAAA520AAOdwAADnfQAA544AAOeQAADnkgAA55QAAOeWAADnmAAA55oAAOecAADnngAA568AAOeyAADntQAA57gAAOe7AADnvgAA58EAAOfEAADnxwAA58kAAOgIAADoCgAA6AwAAOgOAADoEQAA6BIAAOgTAADoFAAA6BUAAOgXAADoGQAA6BoAAOgbAADoHQAA6B4AAOhdAADoXwAA6GEAAOhjAADoZgAA6GcAAOhoAADoaQAA6GoAAOhsAADobgAA6G8AAOhwAADocgAA6HMAAOiyAADotAAA6LcAAOi5AADovAAA6L0AAOi+AADovwAA6MAAAOjCAADoxAAA6MUAAOjGAADoyAAA6MkAAOjWAADo1wAA6NgAAOjaAADpGQAA6RsAAOkdAADpHwAA6SIAAOkjAADpJAAA6SUAAOkmAADpKAAA6SoAAOkrAADpLAAA6S4AAOkvAADpbgAA6XAAAOlyAADpdAAA6XcAAOl4AADpeQAA6XoAAOl7AADpfQAA6X8AAOmAAADpgQAA6YMAAOmEAADpwwAA6cUAAOnHAADpyQAA6cwAAOnNAADpzgAA6c8AAOnQAADp0gAA6dQAAOnVAADp1gAA6dgAAOnZAADqGAAA6hoAAOocAADqHgAA6iEAAOoiAADqIwAA6iQAAOolAADqJwAA6ikAAOoqAADqKwAA6i0AAOouAADqbQAA6m8AAOpxAADqcwAA6nYAAOp3AADqeAAA6nkAAOp6AADqfAAA6n4AAOp/AADqgAAA6oIAAOqDAADqqAAA6swAAOrzAADrFwAA6xoAAOscAADrHgAA6yAAAOsiAADrJAAA6yUAAOsoAADrNQAA60QAAOtGAADrSAAA60oAAOtMAADrTgAA61AAAOtSAADrYQAA62QAAOtnAADragAA620AAOtwAADrcwAA63YAAOt4AADrtwAA67kAAOu7AADrvQAA68AAAOvBAADrwgAA68MAAOvEAADrxgAA68gAAOvJAADrygAA68wAAOvNAADsDAAA7A4AAOwQAADsEgAA7BUAAOwWAADsFwAA7BgAAOwZAADsGwAA7B0AAOweAADsHwAA7CEAAOwiAADsYQAA7GMAAOxlAADsZwAA7GoAAOxrAADsbAAA7G0AAOxuAADscAAA7HIAAOxzAADsdAAA7HYAAOx3AADstgAA7LgAAOy7AADsvQAA7MAAAOzBAADswgAA7MMAAOzEAADsxgAA7MgAAOzJAADsygAA7MwAAOzNAADtEAAA7TQAAO1YAADtewAA7aIAAO3CAADt6QAA7hAAAO4wAADuVAAA7ngAAO56AADufQAA7n8AAO6BAADugwAA7oYAAO6JAADuiwAA7o0AAO6QAADukgAA7pQAAO6XAADumgAA7psAAO6gAADurQAA7rAAAO6yAADutQAA7rgAAO66AADu3wAA7wMAAO8qAADvTgAA71EAAO9TAADvVQAA71cAAO9ZAADvWwAA71wAAO9fAADvbAAA738AAO+BAADvgwAA74UAAO+HAADviQAA74sAAO+NAADvjwAA75EAAO+kAADvpwAA76oAAO+tAADvsAAA77MAAO+2AADvuQAA77wAAO+/AADvwQAA8AAAAPACAADwBQAA8Ac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AAQH8AAECOwABAj0AAQI/AAECQQABAkQAAQJFAAECRgABAkcAAQJIAAECSgABAkwAAQJNAAECTgABAlAAAQJRAAECkAABApIAAQKUAAEClgABApkAAQKaAAECmwABApwAAQKdAAECnwABAqEAAQKiAAECowABAqUAAQKmAAEC5QABAucAAQLpAAEC6wABAu4AAQLvAAEC8AABAvEAAQLyAAEC9AABAvYAAQL3AAEC+AABAvoAAQL7AAEDOgABAzwAAQM+AAEDQAABA0MAAQNEAAEDRQABA0YAAQNHAAEDSQABA0sAAQNMAAEDTQABA08AAQNQAAEDdQABA5kAAQPAAAED5AABA+cAAQPpAAED6wABA+0AAQPvAAED8QABA/IAAQP1AAEEAgABBBEAAQQTAAEEFQABBBcAAQQZAAEEGwABBB0AAQQfAAEELgABBDEAAQQ0AAEENwABBDoAAQQ9AAEEQAABBEMAAQRFAAEEhAABBIYAAQSIAAEEigABBI0AAQSOAAEEjwABBJAAAQSRAAEEkwABBJUAAQSWAAEElwABBJkAAQSaAAEE2QABBNsAAQTdAAEE3wABBOIAAQTjAAEE5AABBOUAAQTmAAEE6AABBOoAAQTrAAEE7AABBO4AAQTvAAEFLgABBTAAAQUyAAEFNAABBTcAAQU4AAEFOQABBToAAQU7AAEFPQABBT8AAQVAAAEFQQABBUMAAQVEAAEFgwABBYUAAQWHAAEFiQABBYwAAQWNAAEFjgABBY8AAQWQAAEFkgABBZQAAQWVAAEFlgABBZgAAQWZAAEF2AABBdoAAQXcAAEF3gABBeEAAQXiAAEF4wABBeQAAQXlAAEF5wABBekAAQXqAAEF6wABBe0AAQXuAAEGLQABBi8AAQYxAAEGMwABBjYAAQY3AAEGOAABBjkAAQY6AAEGPAABBj4AAQY/AAEGQAABBkIAAQZDAAEGggABBoQAAQaGAAEGiAABBosAAQaMAAEGjQABBo4AAQaPAAEGkQABBpMAAQaUAAEGlQABBpcAAQaYAAEG4wABBwYAAQcmAAEHRgABB0gAAQdKAAEHTAABB04AAQdRAAEHUgABB1MAAQdWAAEHVwABB1kAAQdaAAEHXAABB18AAQdgAAEHYQABB2QAAQdlAAEHbgABB3sAAQeAAAEHggABB4QAAQeJAAEHjAABB48AAQeRAAEHtgABB9oAAQgBAAEIJQABCCgAAQgqAAEILAABCC4AAQgwAAEIMgABCDMAAQg2AAEIQwABCFQAAQhWAAEIWAABCFoAAQhcAAEIXgABCGAAAQhiAAEIZAABCHUAAQh4AAEIewABCH4AAQiBAAEIhAABCIcAAQiKAAEIjQABCI8AAQjOAAEI0AABCNIAAQjUAAEI1wABCNgAAQjZAAEI2gABCNsAAQjdAAEI3wABCOAAAQjhAAEI4wABCOQAAQkjAAEJJQABCScAAQkpAAEJLAABCS0AAQkuAAEJLwABCTAAAQkyAAEJNAABCTUAAQk2AAEJOAABCTkAAQl4AAEJegABCX0AAQl/AAEJggABCYMAAQmEAAEJhQABCYYAAQmIAAEJigABCYsAAQmMAAEJjgABCY8AAQmcAAEJnQABCZ4AAQmgAAEJ3wABCeEAAQnjAAEJ5QABCegAAQnpAAEJ6gABCesAAQnsAAEJ7gABCfAAAQnxAAEJ8gABCfQAAQn1AAEKNAABCjYAAQo4AAEKOgABCj0AAQo+AAEKPwABCkAAAQpBAAEKQwABCkUAAQpGAAEKRwABCkkAAQpKAAEKiQABCosAAQqNAAEKjwABCpIAAQqTAAEKlAABCpUAAQqWAAEKmAABCpoAAQqbAAEKnAABCp4AAQqfAAEK3gABCuAAAQriAAEK5AABCucAAQroAAEK6QABCuoAAQrrAAEK7QABCu8AAQrwAAEK8QABCvMAAQr0AAELMwABCzUAAQs3AAELOQABCzwAAQs9AAELPgABCz8AAQtAAAELQgABC0QAAQtFAAELRgABC0gAAQtJAAELbgABC5IAAQu5AAEL3QABC+AAAQviAAEL5AABC+YAAQvoAAEL6gABC+sAAQvuAAEL+wABDAoAAQwMAAEMDgABDBAAAQwSAAEMFAABDBYAAQwYAAEMJwABDCoAAQwtAAEMMAABDDMAAQw2AAEMOQABDDwAAQw+AAEMfQABDH8AAQyBAAEMgwABDIYAAQyHAAEMiAABDIkAAQyKAAEMjAABDI4AAQyPAAEMkAABDJIAAQyTAAEM0gABDNQAAQzWAAEM2AABDNsAAQzcAAEM3QABDN4AAQzfAAEM4QABDOMAAQzkAAEM5QABDOcAAQzoAAENJwABDSkAAQ0rAAENLQABDTAAAQ0xAAENMgABDTMAAQ00AAENNgABDTgAAQ05AAENOgABDTwAAQ09AAENfAABDX4AAQ2AAAENggABDYUAAQ2GAAENhwABDYgAAQ2JAAENiwABDY0AAQ2OAAENjwABDZEAAQ2SAAEN0QABDdMAAQ3VAAEN1wABDdoAAQ3bAAEN3AABDd0AAQ3eAAEN4AABDeIAAQ3jAAEN5AABDeYAAQ3nAAEOJgABDigAAQ4qAAEOLAABDi8AAQ4wAAEOMQABDjIAAQ4zAAEONQABDjcAAQ44AAEOOQABDjsAAQ48AAEOewABDn0AAQ5/AAEOgQABDoQAAQ6FAAEOhgABDocAAQ6IAAEOigABDowAAQ6NAAEOjgABDpAAAQ6RAAEO3AABDv8AAQ8fAAEPPwABD0EAAQ9DAAEPRQABD0cAAQ9KAAEPSwABD0wAAQ9PAAEPUAABD1IAAQ9TAAEPVQABD1gAAQ9ZAAEPWgABD10AAQ9eAAEPZwABD3QAAQ95AAEPewABD30AAQ+CAAEPhQABD4gAAQ+KAAEPrwABD9MAAQ/6AAEQHgABECEAARAjAAEQJQABECcAARApAAEQKwABECwAARAvAAEQPAABEE0AARBPAAEQUQABEFMAARBVAAEQVwABEFkAARBbAAEQXQABEG4AARBxAAEQdAABEHcAARB6AAEQfQABEIAAARCDAAEQhgABEIgAARDHAAEQyQABEMsAARDNAAEQ0AABENEAARDSAAEQ0wABENQAARDWAAEQ2AABENkAARDaAAEQ3AABEN0AAREcAAERHgABESAAAREiAAERJQABESYAAREnAAERKAABESkAARErAAERLQABES4AAREvAAERMQABETIAARFxAAERcwABEXYAARF4AAERewABEXwAARF9AAERfgABEX8AARGBAAERgwABEYQAARGFAAERhwABEYgAARGVAAERlgABEZcAARGZAAER2AABEdoAARHcAAER3gABEeEAARHiAAER4wABEeQAARHlAAER5wABEekAARHqAAER6wABEe0AARHuAAESLQABEi8AARIxAAESMwABEjYAARI3AAESOAABEjkAARI6AAESPAABEj4AARI/AAESQAABEkIAARJDAAESggABEoQAARKGAAESiAABEosAARKMAAESjQABEo4AARKPAAESkQABEpMAARKUAAESlQABEpcAARKYAAES1wABEtkAARLcAAES3gABEuEAARLiAAES4wABEuQAARLlAAES5wABEukAARLqAAES6wABEu0AARLuAAETBAABE0MAARNFAAETRwABE0kAARNMAAETTQABE04AARNPAAETUAABE1IAARNUAAETVQABE1YAARNYAAETWQABE34AAROiAAETyQABE+0AARPwAAET8gABE/QAARP2AAET+AABE/oAARP7AAET/gABFAsAARQaAAEUHAABFB4AARQgAAEUIgABFCQAARQmAAEUKAABFDcAARQ6AAEUPQABFEAAARRDAAEURgABFEkAARRMAAEUTgABFI0AARSPAAEUkQABFJMAARSWAAEUlwABFJgAARSZAAEUmgABFJwAARSeAAEUnwABFKAAARSiAAEUowABFOIAARTkAAEU5gABFOgAARTrAAEU7AABFO0AARTuAAEU7wABFPEAARTzAAEU9AABFPUAART3AAEU+AABFTcAARU5AAEVOwABFT0AARVAAAEVQQABFUIAARVDAAEVRAABFUYAARVIAAEVSQABFUoAARVMAAEVTQABFYwAARWOAAEVkAABFZIAARWVAAEVlgABFZcAARWYAAEVmQABFZsAARWdAAEVngABFZ8AARWhAAEVogABFeEAARXjAAEV5QABFecAARXqAAEV6wABFewAARXtAAEV7gABFfAAARXyAAEV8wABFfQAARX2AAEV9wABFjYAARY4AAEWOgABFjwAARY/AAEWQAABFkEAARZCAAEWQwABFkUAARZHAAEWSAABFkkAARZLAAEWTAABFosAARaNAAEWjwABFpEAARaUAAEWlQABFpYAARaXAAEWmAABFpoAARacAAEWnQABFp4AARagAAEWoQABFuwAARcPAAEXLwABF08AARdRAAEXUwABF1UAARdXAAEXWgABF1sAARdcAAEXXwABF2AAARdiAAEXYwABF2UAARdoAAEXaQABF2oAARdtAAEXbgABF3cAAReEAAEXiQABF4sAAReNAAEXkgABF5UAAReYAAEXmgABF78AARfjAAEYCgABGC4AARgxAAEYMwABGDUAARg3AAEYOQABGDsAARg8AAEYPwABGEwAARhdAAEYXwABGGEAARhjAAEYZQABGGcAARhpAAEYawABGG0AARh+AAEYgQABGIQAARiHAAEYigABGI0AARiQAAEYkwABGJYAARiYAAEY1wABGNkAARjbAAEY3QABGOAAARjhAAEY4gABGOMAARjkAAEY5gABGOgAARjpAAEY6gABGOwAARjtAAEZLAABGS4AARkwAAEZMgABGTUAARk2AAEZNwABGTgAARk5AAEZOwABGT0AARk+AAEZPwABGUEAARlCAAEZgQABGYMAARmGAAEZiAABGYsAARmMAAEZjQABGY4AARmPAAEZkQABGZMAARmUAAEZlQABGZcAARmYAAEZpQABGaYAARmnAAEZqQABGegAARnqAAEZ7AABGe4AARnxAAEZ8gABGfMAARn0AAEZ9QABGfcAARn5AAEZ+gABGfsAARn9AAEZ/gABGj0AARo/AAEaQQABGkMAARpGAAEaRwABGkgAARpJAAEaSgABGkwAARpOAAEaTwABGlAAARpSAAEaUwABGpIAARqUAAEalgABGpgAARqbAAEanAABGp0AARqeAAEanwABGqEAARqjAAEapAABGqUAARqnAAEaqAABGucAARrpAAEa6wABGu0AARrwAAEa8QABGvIAARrzAAEa9AABGvYAARr4AAEa+QABGvoAARr8AAEa/QABGzwAARs+AAEbQAABG0IAARtFAAEbRgABG0cAARtIAAEbSQABG0sAARtNAAEbTgABG08AARtRAAEbUgABG3cAARubAAEbwgABG+YAARvpAAEb6wABG+0AARvvAAEb8QABG/MAARv0AAEb9wABHAQAARwTAAEcFQABHBcAARwZAAEcGwABHB0AARwfAAEcIQABHDAAARwzAAEcNgABHDkAARw8AAEcPwABHEIAARxFAAEcRwABHIYAARyIAAEcigABHIwAARyPAAEckAABHJEAARySAAEckwABHJUAARyXAAEcmAABHJkAARybAAEcnAABHNsAARzdAAEc3wABHOEAARzkAAEc5QABHOYAARznAAEc6AABHOoAARzsAAEc7QABHO4AARzwAAEc8QABHTAAAR0yAAEdNAABHTYAAR05AAEdOgABHTsAAR08AAEdPQABHT8AAR1BAAEdQgABHUMAAR1FAAEdRgABHYUAAR2HAAEdiQABHYsAAR2OAAEdjwABHZAAAR2RAAEdkgABHZQAAR2WAAEdlwABHZgAAR2aAAEdmwABHdoAAR3cAAEd3gABHeAAAR3jAAEd5AABHeUAAR3mAAEd5wABHekAAR3rAAEd7AABHe0AAR3vAAEd8AABHi8AAR4xAAEeMwABHjUAAR44AAEeOQABHjoAAR47AAEePAABHj4AAR5AAAEeQQABHkIAAR5EAAEeRQABHoQAAR6GAAEeiAABHooAAR6NAAEejgABHo8AAR6QAAEekQABHpMAAR6VAAEelgABHpcAAR6ZAAEemgABHuUAAR8IAAEfKAABH0gAAR9KAAEfTAABH04AAR9QAAEfUwABH1QAAR9VAAEfWAABH1kAAR9bAAEfXAABH14AAR9hAAEfYgABH2MAAR9mAAEfZwABH2wAAR95AAEffgABH4AAAR+CAAEfhwABH4oAAR+NAAEfjwABH7QAAR/YAAEf/wABICMAASAmAAEgKAABICoAASAsAAEgLgABIDAAASAxAAEgNAABIEEAASBSAAEgVAABIFYAASBYAAEgWgABIFwAASBeAAEgYAABIGIAASBzAAEgdgABIHkAASB8AAEgfwABIIIAASCFAAEgiAABIIsAASCNAAEgzAABIM4AASDQAAEg0gABINUAASDWAAEg1wABINgAASDZAAEg2wABIN0AASDeAAEg3wABIOEAASDiAAEhIQABISMAASElAAEhJwABISoAASErAAEhLAABIS0AASEuAAEhMAABITIAASEzAAEhNAABITYAASE3AAEhdgABIXgAASF7AAEhfQABIYAAASGBAAEhggABIYMAASGEAAEhhgABIYgAASGJAAEhigABIYwAASGNAAEhmgABIZsAASGcAAEhngABId0AASHfAAEh4QABIeMAASHmAAEh5wABIegAASHpAAEh6gABIewAASHuAAEh7wABIfAAASHyAAEh8wABIjIAASI0AAEiNgABIjgAASI7AAEiPAABIj0AASI+AAEiPwABIkEAASJDAAEiRAABIkUAASJHAAEiSAABIocAASKJAAEiiwABIo0AASKQAAEikQABIpIAASKTAAEilAABIpYAASKYAAEimQABIpoAASKcAAEinQABItwAASLeAAEi4AABIuIAASLlAAEi5gABIucAASLoAAEi6QABIusAASLtAAEi7gABIu8AASLxAAEi8gABIzEAASMzAAEjNQABIzcAASM6AAEjOwABIzwAASM9AAEjPgABI0AAASNCAAEjQwABI0QAASNGAAEjRwABI2wAASOQAAEjtwABI9sAASPeAAEj4AABI+IAASPkAAEj5gABI+gAASPpAAEj7AABI/kAASQIAAEkCgABJAwAASQOAAEkEAABJBIAASQUAAEkFgABJCUAASQoAAEkKwABJC4AASQxAAEkNAABJDcAASQ6AAEkPAABJHsAASR9AAEkfwABJIEAASSEAAEkhQABJIYAASSHAAEkiAABJIoAASSMAAEkjQABJI4AASSQAAEkkQABJNAAASTSAAEk1AABJNYAASTZAAEk2gABJNsAASTcAAEk3QABJN8AASThAAEk4gABJOMAASTlAAEk5gABJSUAASUnAAElKQABJSsAASUuAAElLwABJTAAASUxAAElMgABJTQAASU2AAElNwABJTgAASU6AAElOwABJXoAASV8AAElfgABJYAAASWDAAElhAABJYUAASWGAAElhwABJYkAASWLAAEljAABJY0AASWPAAElkAABJc8AASXRAAEl0wABJdUAASXYAAEl2QABJdoAASXbAAEl3AABJd4AASXgAAEl4QABJeIAASXkAAEl5QABJiQAASYmAAEmKAABJioAASYtAAEmLgABJi8AASYwAAEmMQABJjMAASY1AAEmNgABJjcAASY5AAEmOgABJnkAASZ7AAEmfQABJn8AASaCAAEmgwABJoQAASaFAAEmhgABJogAASaKAAEmiwABJowAASaOAAEmjwABJtoAASb9AAEnHQABJz0AASc/AAEnQQABJ0MAASdFAAEnSAABJ0kAASdKAAEnTQABJ04AASdQAAEnUQABJ1MAASdWAAEnVwABJ1gAASdbAAEnXAABJ2EAASduAAEncwABJ3UAASd3AAEnfAABJ38AASeCAAEnhAABJ6kAASfNAAEn9AABKBgAASgbAAEoHQABKB8AASghAAEoIwABKCUAASgmAAEoKQABKDYAAShHAAEoSQABKEsAAShNAAEoTwABKFEAAShTAAEoVQABKFcAAShoAAEoawABKG4AAShxAAEodAABKHcAASh6AAEofQABKIAAASiCAAEowQABKMMAASjFAAEoxwABKMoAASjLAAEozAABKM0AASjOAAEo0AABKNIAASjTAAEo1AABKNYAASjXAAEpFgABKRgAASkaAAEpHAABKR8AASkgAAEpIQABKSIAASkjAAEpJQABKScAASkoAAEpKQABKSsAASksAAEpawABKW0AASlwAAEpcgABKXUAASl2AAEpdwABKXgAASl5AAEpewABKX0AASl+AAEpfwABKYEAASmCAAEpjwABKZAAASmRAAEpkwABKdIAASnUAAEp1gABKdgAASnbAAEp3AABKd0AASneAAEp3wABKeEAASnjAAEp5AABKeUAASnnAAEp6AABKicAASopAAEqKwABKi0AASowAAEqMQABKjIAASozAAEqNAABKjYAASo4AAEqOQABKjoAASo8AAEqPQABKnwAASp+AAEqgAABKoIAASqFAAEqhgABKocAASqIAAEqiQABKosAASqNAAEqjgABKo8AASqRAAEqkgABKtEAASrTAAEq1QABKtcAASraAAEq2wABKtwAASrdAAEq3gABKuAAASriAAEq4wABKuQAASrmAAEq5wABKyYAASsoAAErKgABKywAASsvAAErMAABKzEAASsyAAErMwABKzUAASs3AAErOAABKzkAASs7AAErPAABK2EAASuFAAErrAABK9AAASvTAAEr1QABK9cAASvZAAEr2wABK90AASveAAEr4QABK+4AASv9AAEr/wABLAEAASwDAAEsBQABLAcAASwJAAEsCwABLBoAASwdAAEsIAABLCMAASwmAAEsKQABLCwAASwvAAEsMQABLHAAASxyAAEsdAABLHYAASx5AAEsegABLHsAASx8AAEsfQABLH8AASyBAAEsggABLIMAASyFAAEshgABLMUAASzHAAEsyQABLMsAASzOAAEszwABLNAAASzRAAEs0gABLNQAASzWAAEs1wABLNgAASzaAAEs2wABLRoAAS0cAAEtHgABLSAAAS0jAAEtJAABLSUAAS0mAAEtJwABLSkAAS0rAAEtLAABLS0AAS0vAAEtMAABLW8AAS1xAAEtcwABLXUAAS14AAEteQABLXoAAS17AAEtfAABLX4AAS2AAAEtgQABLYIAAS2EAAEthQABLcQAAS3GAAEtyAABLcoAAS3NAAEtzgABLc8AAS3QAAEt0QABLdMAAS3VAAEt1gABLdcAAS3ZAAEt2gABLhkAAS4bAAEuHQABLh8AAS4iAAEuIwABLiQAAS4lAAEuJgABLigAAS4qAAEuKwABLiwAAS4uAAEuLwABLm4AAS5wAAEucgABLnQAAS53AAEueAABLnkAAS56AAEuewABLn0AAS5/AAEugAABLoEAAS6DAAEuhAABLs8AAS7yAAEvEgABLzIAAS80AAEvNgABLzgAAS86AAEvPQABLz4AAS8/AAEvQgABL0MAAS9FAAEvRgABL0gAAS9LAAEvTAABL00AAS9QAAEvUQABL1YAAS9jAAEvaAABL2oAAS9sAAEvcQABL3QAAS93AAEveQABL54AAS/CAAEv6QABMA0AATAQAAEwEgABMBQAATAWAAEwGAABMBoAATAbAAEwHgABMCsAATA8AAEwPgABMEAAATBCAAEwRAABMEYAATBIAAEwSgABMEwAATBdAAEwYAABMGMAATBmAAEwaQABMGwAATBvAAEwcgABMHUAATB3AAEwtgABMLgAATC6AAEwvAABML8AATDAAAEwwQABMMIAATDDAAEwxQABMMcAATDIAAEwyQABMMsAATDMAAExCwABMQ0AATEPAAExEQABMRQAATEVAAExFgABMRcAATEYAAExGgABMRwAATEdAAExHgABMSAAATEhAAExYAABMWIAATFlAAExZwABMWoAATFrAAExbAABMW0AATFuAAExcAABMXIAATFzAAExdAABMXYAATF3AAExhAABMYUAATGGAAExiAABMccAATHJAAExywABMc0AATHQAAEx0QABMdIAATHTAAEx1AABMdYAATHYAAEx2QABMdoAATHcAAEx3QABMhwAATIeAAEyIAABMiIAATIlAAEyJgABMicAATIoAAEyKQABMisAATItAAEyLgABMi8AATIxAAEyMgABMnEAATJzAAEydQABMncAATJ6AAEyewABMnwAATJ9AAEyfgABMoAAATKCAAEygwABMoQAATKGAAEyhwABMsYAATLIAAEyygABMswAATLPAAEy0AABMtEAATLSAAEy0wABMtUAATLXAAEy2AABMtkAATLbAAEy3AABMxsAATMdAAEzHwABMyEAATMkAAEzJQABMyYAATMnAAEzKAABMyoAATMsAAEzLQABMy4AATMwAAEzMQABM1YAATN6AAEzoQABM8UAATPIAAEzygABM8wAATPOAAEz0AABM9IAATPTAAEz1gABM+MAATPyAAEz9AABM/YAATP4AAEz+gABM/wAATP+AAE0AAABNA8AATQSAAE0FQABNBgAATQbAAE0HgABNCEAATQkAAE0JgABNGUAATRnAAE0aQABNGsAATRuAAE0bwABNHAAATRxAAE0cgABNHQAATR2AAE0dwABNHgAATR6AAE0ewABNLoAATS8AAE0vgABNMAAATTDAAE0xAABNMUAATTGAAE0xwABNMkAATTLAAE0zAABNM0AATTPAAE00AABNQ8AATURAAE1EwABNRUAATUYAAE1GQABNRoAATUbAAE1HAABNR4AATUgAAE1IQABNSIAATUkAAE1JQABNWQAATVmAAE1aAABNWoAATVtAAE1bgABNW8AATVwAAE1cQABNXMAATV1AAE1dgABNXcAATV5AAE1egABNbkAATW7AAE1vQABNb8AATXCAAE1wwABNcQAATXFAAE1xgABNcgAATXKAAE1ywABNcwAATXOAAE1zwABNg4AATYQAAE2EgABNhQAATYXAAE2GAABNhkAATYaAAE2GwABNh0AATYfAAE2IAABNiEAATYjAAE2JAABNmMAATZlAAE2ZwABNmkAATZsAAE2bQABNm4AATZvAAE2cAABNnIAATZ0AAE2dQABNnYAATZ4AAE2eQABNsQAATbnAAE3BwABNycAATcpAAE3KwABNy0AATcvAAE3MgABNzMAATc0AAE3NwABNzgAATc6AAE3OwABNz0AATdAAAE3QQABN0IAATdFAAE3RgABN0sAATdYAAE3XQABN18AATdhAAE3ZgABN2kAATdsAAE3bgABN5MAATe3AAE33gABOAIAATgFAAE4BwABOAkAATgLAAE4DQABOA8AATgQAAE4EwABOCAAATgxAAE4MwABODUAATg3AAE4OQABODsAATg9AAE4PwABOEEAAThSAAE4VQABOFgAAThbAAE4XgABOGEAAThkAAE4ZwABOGoAAThsAAE4qwABOK0AATivAAE4sQABOLQAATi1AAE4tgABOLcAATi4AAE4ugABOLwAATi9AAE4vgABOMAAATjBAAE5AAABOQIAATkEAAE5BgABOQkAATkKAAE5CwABOQwAATkNAAE5DwABOREAATkSAAE5EwABORUAATkWAAE5VQABOVcAATlaAAE5XAABOV8AATlgAAE5YQABOWIAATljAAE5ZQABOWcAATloAAE5aQABOWsAATlsAAE5eQABOXoAATl7AAE5fQABObwAATm+AAE5wAABOcIAATnFAAE5xgABOccAATnIAAE5yQABOcsAATnNAAE5zgABOc8AATnRAAE50gABOhEAAToTAAE6FQABOhcAAToaAAE6GwABOhwAATodAAE6HgABOiAAAToiAAE6IwABOiQAATomAAE6JwABOmYAATpoAAE6agABOmwAATpvAAE6cAABOnEAATpyAAE6cwABOnUAATp3AAE6eAABOnkAATp7AAE6fAABOrsAATq9AAE6vwABOsEAATrEAAE6xQABOsYAATrHAAE6yAABOsoAATrMAAE6zQABOs4AATrQAAE60QABOxAAATsSAAE7FAABOxYAATsZAAE7GgABOxsAATscAAE7HQABOx8AATshAAE7IgABOyMAATslAAE7JgABO0sAATtvAAE7lgABO7oAATu9AAE7vwABO8EAATvDAAE7xQABO8cAATvIAAE7ywABO9gAATvnAAE76QABO+sAATvtAAE77wABO/EAATvzAAE79QABPAQAATwHAAE8CgABPA0AATwQAAE8EwABPBYAATwZAAE8GwABPFoAATxcAAE8XgABPGAAATxjAAE8ZAABPGUAATxmAAE8ZwABPGkAATxrAAE8bAABPG0AATxvAAE8cAABPK8AATyxAAE8swABPLUAATy4AAE8uQABPLoAATy7AAE8vAABPL4AATzAAAE8wQABPMIAATzEAAE8xQABPQQAAT0GAAE9CAABPQoAAT0NAAE9DgABPQ8AAT0QAAE9EQABPRMAAT0VAAE9FgABPRcAAT0ZAAE9GgABPVkAAT1bAAE9XQABPV8AAT1iAAE9YwABPWQAAT1lAAE9ZgABPWgAAT1qAAE9awABPWwAAT1uAAE9bwABPa4AAT2wAAE9sgABPbQAAT23AAE9uAABPbkAAT26AAE9uwABPb0AAT2/AAE9wAABPcEAAT3DAAE9xAABPgMAAT4FAAE+BwABPgkAAT4MAAE+DQABPg4AAT4PAAE+EAABPhIAAT4UAAE+FQABPhYAAT4YAAE+GQABPlgAAT5aAAE+XAABPl4AAT5hAAE+YgABPmMAAT5kAAE+ZQABPmcAAT5pAAE+agABPmsAAT5tAAE+bgABPrkAAT7cAAE+/AABPxwAAT8eAAE/IAABPyIAAT8kAAE/JwABPygAAT8pAAE/LAABPy0AAT8vAAE/MAABPzIAAT81AAE/NgABPzcAAT86AAE/OwABP0QAAT9RAAE/VgABP1gAAT9aAAE/XwABP2IAAT9lAAE/ZwABP4w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AAVu1AAFbtwABW7kAAVu7AAFbvAABW78AAVvMAAFb2wABW90AAVvfAAFb4QABW+MAAVvlAAFb5wABW+kAAVv4AAFb+wABW/4AAVwBAAFcBAABXAcAAVwKAAFcDQABXA8AAVxOAAFcUAABXFIAAVxUAAFcVwABXFgAAVxZAAFcWgABXFsAAVxdAAFcXwABXGAAAVxhAAFcYwABXGQAAVyjAAFcpQABXKcAAVypAAFcrAABXK0AAVyuAAFcrwABXLAAAVyyAAFctAABXLUAAVy2AAFcuAABXLkAAVz4AAFc+gABXPwAAVz+AAFdAQABXQIAAV0DAAFdBAABXQUAAV0HAAFdCQABXQoAAV0LAAFdDQABXQ4AAV1NAAFdTwABXVEAAV1TAAFdVgABXVcAAV1YAAFdWQABXVoAAV1cAAFdXgABXV8AAV1gAAFdYgABXWMAAV2iAAFdpAABXaYAAV2oAAFdqwABXawAAV2tAAFdrgABXa8AAV2xAAFdswABXbQAAV21AAFdtwABXbgAAV33AAFd+QABXfsAAV39AAFeAAABXgEAAV4CAAFeAwABXgQAAV4GAAFeCAABXgkAAV4KAAFeDAABXg0AAV5MAAFeTgABXlAAAV5SAAFeVQABXlYAAV5XAAFeWAABXlkAAV5bAAFeXQABXl4AAV5fAAFeYQABXmIAAV6tAAFe0AABXvAAAV8QAAFfEgABXxQAAV8WAAFfGAABXxsAAV8cAAFfHQABXyAAAV8hAAFfIwABXyQAAV8mAAFfKAABXykAAV8qAAFfLQABXy4AAV83AAFfRAABX0kAAV9LAAFfTQABX1IAAV9VAAFfWAABX1oAAV9/AAFfowABX8oAAV/uAAFf8QABX/MAAV/1AAFf9wABX/kAAV/7AAFf/AABX/8AAWAMAAFgHQABYB8AAWAhAAFgIwABYCUAAWAnAAFgKQABYCsAAWAtAAFgPgABYEEAAWBEAAFgRwABYEoAAWBNAAFgUAABYFMAAWBWAAFgWAABYJcAAWCZAAFgmwABYJ0AAWCgAAFgoQABYKIAAWCjAAFgpAABYKYAAWCoAAFgqQABYKoAAWCsAAFgrQABYOwAAWDuAAFg8AABYPIAAWD1AAFg9gABYPcAAWD4AAFg+QABYPsAAWD9AAFg/gABYP8AAWEBAAFhAgABYUEAAWFDAAFhRgABYUgAAWFLAAFhTAABYU0AAWFOAAFhTwABYVEAAWFTAAFhVAABYVUAAWFXAAFhWAABYWUAAWFmAAFhZwABYWkAAWGoAAFhqgABYawAAWGuAAFhsQABYbIAAWGzAAFhtAABYbUAAWG3AAFhuQABYboAAWG7AAFhvQABYb4AAWH9AAFh/wABYgEAAWIDAAFiBgABYgcAAWIIAAFiCQABYgoAAWIMAAFiDgABYg8AAWIQAAFiEgABYhMAAWJSAAFiVAABYlYAAWJYAAFiWwABYlwAAWJdAAFiXgABYl8AAWJhAAFiYwABYmQAAWJlAAFiZwABYmgAAWKnAAFiqQABYqsAAWKtAAFisAABYrEAAWKyAAFiswABYrQAAWK2AAFiuAABYrkAAWK6AAFivAABYr0AAWL8AAFi/gABYwAAAWMCAAFjBQABYwYAAWMHAAFjCAABYwkAAWMLAAFjDQABYw4AAWMPAAFjEQABYxIAAWM3AAFjWwABY4IAAWOmAAFjqQABY6sAAWOtAAFjrwABY7EAAWOzAAFjtAABY7cAAWPEAAFj0wABY9UAAWPXAAFj2QABY9sAAWPdAAFj3wABY+EAAWPwAAFj8wABY/YAAWP5AAFj/AABY/8AAWQCAAFkBQABZAcAAWRGAAFkSAABZEoAAWRMAAFkTwABZFAAAWRRAAFkUgABZFMAAWRVAAFkVwABZFgAAWRZAAFkWwABZFwAAWSbAAFknQABZJ8AAWShAAFkpAABZKUAAWSmAAFkpwABZKgAAWSqAAFkrAABZK0AAWSuAAFksAABZLEAAWTwAAFk8gABZPQAAWT2AAFk+QABZPoAAWT7AAFk/AABZP0AAWT/AAFlAQABZQIAAWUDAAFlBQABZQYAAWVFAAFlRwABZUkAAWVLAAFlTgABZU8AAWVQAAFlUQABZVIAAWVUAAFlVgABZVcAAWVYAAFlWgABZVsAAWWaAAFlnAABZZ4AAWWgAAFlowABZaQAAWWlAAFlpgABZacAAWWpAAFlqwABZawAAWWtAAFlrwABZbAAAWXvAAFl8QABZfMAAWX1AAFl+AABZfkAAWX6AAFl+wABZfwAAWX+AAFmAAABZgEAAWYCAAFmBAABZgUAAWZEAAFmRgABZkgAAWZKAAFmTQABZk4AAWZPAAFmUAABZlEAAWZTAAFmVQABZlYAAWZXAAFmWQABZloAAWalAAFmyAABZugAAWcIAAFnCgABZwwAAWcOAAFnEAABZxMAAWcUAAFnFQABZxgAAWcZAAFnGwABZxwAAWceAAFnIQABZyIAAWcjAAFnJgABZycAAWcsAAFnOQABZz4AAWdAAAFnQgABZ0cAAWdKAAFnTQABZ08AAWd0AAFnmAABZ78AAWfjAAFn5gABZ+gAAWfqAAFn7AABZ+4AAWfwAAFn8QABZ/QAAWgBAAFoEgABaBQAAWgWAAFoGAABaBoAAWgcAAFoHgABaCAAAWgiAAFoMwABaDYAAWg5AAFoPAABaD8AAWhCAAFoRQABaEgAAWhLAAFoTQABaIwAAWiOAAFokAABaJIAAWiVAAFolgABaJcAAWiYAAFomQABaJsAAWidAAFongABaJ8AAWihAAFoogABaOEAAWjjAAFo5QABaOcAAWjqAAFo6wABaOwAAWjtAAFo7gABaPAAAWjyAAFo8wABaPQAAWj2AAFo9wABaTYAAWk4AAFpOwABaT0AAWlAAAFpQQABaUIAAWlDAAFpRAABaUYAAWlIAAFpSQABaUoAAWlMAAFpTQABaVoAAWlbAAFpXAABaV4AAWmdAAFpnwABaaEAAWmjAAFppgABaacAAWmoAAFpqQABaaoAAWmsAAFprgABaa8AAWmwAAFpsgABabMAAWnyAAFp9AABafYAAWn4AAFp+wABafwAAWn9AAFp/gABaf8AAWoBAAFqAwABagQAAWoFAAFqBwABaggAAWpHAAFqSQABaksAAWpNAAFqUAABalEAAWpSAAFqUwABalQAAWpWAAFqWAABalkAAWpaAAFqXAABal0AAWqcAAFqngABaqEAAWqjAAFqpgABaqcAAWqoAAFqqQABaqoAAWqsAAFqrgABaq8AAWqwAAFqsgABarMAAWrGAAFrBQABawcAAWsJAAFrCwABaw4AAWsPAAFrEAABaxEAAWsSAAFrFAABaxYAAWsXAAFrGAABaxoAAWsbAAFrQAABa2QAAWuLAAFrrwABa7IAAWu0AAFrtgABa7gAAWu6AAFrvAABa70AAWvAAAFrzQABa9wAAWveAAFr4AABa+IAAWvkAAFr5gABa+gAAWvqAAFr+QABa/wAAWv/AAFsAgABbAUAAWwIAAFsCwABbA4AAWwQAAFsTwABbFEAAWxTAAFsVQABbFgAAWxZAAFsWgABbFsAAWxcAAFsXgABbGAAAWxhAAFsYgABbGQAAWxlAAFspAABbKYAAWyoAAFsqgABbK0AAWyuAAFsrwABbLAAAWyxAAFsswABbLUAAWy2AAFstwABbLkAAWy6AAFs+QABbPsAAWz9AAFs/wABbQIAAW0DAAFtBAABbQUAAW0GAAFtCAABbQoAAW0LAAFtDAABbQ4AAW0PAAFtTgABbVAAAW1SAAFtVAABbVcAAW1YAAFtWQABbVoAAW1bAAFtXQABbV8AAW1gAAFtYQABbWMAAW1kAAFtowABbaUAAW2nAAFtqQABbawAAW2tAAFtrgABba8AAW2wAAFtsgABbbQAAW21AAFttgABbbgAAW25AAFt+AABbfoAAW38AAFt/gABbgEAAW4CAAFuAwABbgQAAW4FAAFuBwABbgkAAW4KAAFuCwABbg0AAW4OAAFuTQABbk8AAW5RAAFuUwABblYAAW5XAAFuWAABblkAAW5aAAFuXAABbl4AAW5fAAFuYAABbmIAAW5jAAFurgABbtEAAW7xAAFvEQABbxMAAW8VAAFvFwABbxkAAW8cAAFvHQABbx4AAW8hAAFvIgABbyQAAW8lAAFvJwABbyoAAW8rAAFvLAABby8AAW8wAAFvNQABb0IAAW9HAAFvSQABb0sAAW9QAAFvUwABb1YAAW9YAAFvfQABb6EAAW/IAAFv7AABb+8AAW/xAAFv8wABb/UAAW/3AAFv+QABb/oAAW/9AAFwCgABcBsAAXAdAAFwHwABcCEAAXAjAAFwJQABcCcAAXApAAFwKwABcDwAAXA/AAFwQgABcEUAAXBIAAFwSwABcE4AAXBRAAFwVAABcFYAAXCVAAFwlwABcJkAAXCbAAFwngABcJ8AAXCgAAFwoQABcKIAAXCkAAFwpgABcKcAAXCoAAFwqgABcKsAAXDqAAFw7AABcO4AAXDwAAFw8wABcPQAAXD1AAFw9gABcPcAAXD5AAFw+wABcPwAAXD9AAFw/wABcQAAAXE/AAFxQQABcUQAAXFGAAFxSQABcUoAAXFLAAFxTAABcU0AAXFPAAFxUQABcVIAAXFTAAFxVQABcVYAAXFjAAFxZAABcWUAAXFnAAFxpgABcagAAXGqAAFxrAABca8AAXGwAAFxsQABcbIAAXGzAAFxtQABcbcAAXG4AAFxuQABcbsAAXG8AAFx+wABcf0AAXH/AAFyAQABcgQAAXIFAAFyBgABcgcAAXIIAAFyCgABcgwAAXINAAFyDgABchAAAXIRAAFyUAABclIAAXJUAAFyVgABclkAAXJaAAFyWwABclwAAXJdAAFyXwABcmEAAXJiAAFyYwABcmUAAXJmAAFypQABcqcAAXKpAAFyqwABcq4AAXKvAAFysAABcrEAAXKyAAFytAABcrYAAXK3AAFyuAABcroAAXK7AAFy+gABcvwAAXL+AAFzAAABcwMAAXMEAAFzBQABcwYAAXMHAAFzCQABcwsAAXMMAAFzDQABcw8AAXMQAAFzNQABc1kAAXOAAAFzpAABc6cAAXOpAAFzqwABc60AAXOvAAFzsQABc7IAAXO1AAFzwgABc9EAAXPTAAFz1QABc9cAAXPZAAFz2wABc90AAXPfAAFz7gABc/EAAXP0AAFz9wABc/oAAXP9AAF0AAABdAMAAXQFAAF0RAABdEYAAXRIAAF0SgABdE0AAXROAAF0TwABdFAAAXRRAAF0UwABdFUAAXRWAAF0VwABdFkAAXRaAAF0mQABdJsAAXSdAAF0nwABdKIAAXSjAAF0pAABdKUAAXSmAAF0qAABdKoAAXSrAAF0rAABdK4AAXSvAAF07gABdPAAAXTyAAF09AABdPcAAXT4AAF0+QABdPoAAXT7AAF0/QABdP8AAXUAAAF1AQABdQMAAXUEAAF1QwABdUUAAXVHAAF1SQABdUwAAXVNAAF1TgABdU8AAXVQAAF1UgABdVQAAXVVAAF1VgABdVgAAXVZAAF1mAABdZoAAXWcAAF1ngABdaEAAXWiAAF1owABdaQAAXWlAAF1pwABdakAAXWqAAF1qwABda0AAXWuAAF17QABde8AAXXxAAF18wABdfYAAXX3AAF1+AABdfkAAXX6AAF1/AABdf4AAXX/AAF2AAABdgIAAXYDAAF2QgABdkQAAXZGAAF2SAABdksAAXZMAAF2TQABdk4AAXZPAAF2UQABdlMAAXZUAAF2VQABdlcAAXZYAAF2owABdsYAAXbmAAF3BgABdwgAAXcKAAF3DAABdw4AAXcRAAF3EgABdxMAAXcWAAF3FwABdxkAAXcaAAF3HAABdx4AAXcfAAF3IAABdyMAAXckAAF3KQABdzYAAXc7AAF3PQABdz8AAXdEAAF3RwABd0oAAXdMAAF3cQABd5UAAXe8AAF34AABd+MAAXflAAF35wABd+kAAXfrAAF37QABd+4AAXfxAAF3/gABeA8AAXgRAAF4EwABeBUAAXgXAAF4GQABeBsAAXgdAAF4HwABeDAAAXgzAAF4NgABeDkAAXg8AAF4PwABeEIAAXhFAAF4SAABeEoAAXiJAAF4iwABeI0AAXiPAAF4kgABeJMAAXiUAAF4lQABeJYAAXiYAAF4mgABeJsAAXicAAF4ngABeJ8AAXjeAAF44AABeOIAAXjkAAF45wABeOgAAXjpAAF46gABeOsAAXjtAAF47wABePAAAXjxAAF48wABePQAAXkzAAF5NQABeTgAAXk6AAF5PQABeT4AAXk/AAF5QAABeUEAAXlDAAF5RQABeUYAAXlHAAF5SQABeUoAAXlXAAF5WAABeVkAAXlbAAF5mgABeZwAAXmeAAF5oAABeaMAAXmkAAF5pQABeaYAAXmnAAF5qQABeasAAXmsAAF5rQABea8AAXmwAAF57wABefEAAXnzAAF59QABefgAAXn5AAF5+gABefsAAXn8AAF5/gABegAAAXoBAAF6AgABegQAAXoFAAF6RAABekYAAXpIAAF6SgABek0AAXpOAAF6TwABelAAAXpRAAF6UwABelUAAXpWAAF6VwABelkAAXpaAAF6mQABepsAAXqdAAF6nwABeqIAAXqjAAF6pAABeqUAAXqmAAF6qAABeqoAAXqrAAF6rAABeq4AAXqvAAF67gABevAAAXryAAF69AABevcAAXr4AAF6+QABevoAAXr7AAF6/QABev8AAXsAAAF7AQABewMAAXsEAAF7KQABe00AAXt0AAF7mAABe5sAAXudAAF7nwABe6EAAXujAAF7pQABe6YAAXupAAF7tgABe8UAAXvHAAF7yQABe8sAAXvNAAF7zwABe9EAAXvTAAF74gABe+UAAXvoAAF76wABe+4AAXvxAAF79AABe/cAAXv5AAF8OAABfDoAAXw8AAF8PgABfEEAAXxCAAF8QwABfEQAAXxFAAF8RwABfEkAAXxKAAF8SwABfE0AAXxOAAF8jQABfI8AAXyRAAF8kwABfJYAAXyXAAF8mAABfJkAAXyaAAF8nAABfJ4AAXyfAAF8oAABfKIAAXyjAAF84gABfOQAAXzmAAF86AABfOsAAXzsAAF87QABfO4AAXzvAAF88QABfPMAAXz0AAF89QABfPcAAXz4AAF9NwABfTkAAX08AAF9PgABfUEAAX1CAAF9QwABfUQAAX1FAAF9RwABfUkAAX1KAAF9SwABfU0AAX1OAAF9jQABfY8AAX2RAAF9kwABfZYAAX2XAAF9mAABfZkAAX2aAAF9nAABfZ4AAX2fAAF9oAABfaIAAX2jAAF94gABfeQAAX3mAAF96AABfesAAX3sAAF97QABfe4AAX3vAAF98QABffMAAX30AAF99QABffcAAX34AAF+NwABfjkAAX48AAF+PgABfkEAAX5CAAF+QwABfkQAAX5FAAF+RwABfkkAAX5KAAF+SwABfk0AAX5OAAF+mQABfrwAAX7cAAF+/AABfv4AAX8AAAF/AgABfwQAAX8HAAF/CAABfwkAAX8MAAF/DQABfw8AAX8QAAF/EgABfxUAAX8WAAF/FwABfxoAAX8bAAF/IAABfy0AAX8yAAF/NAABfzYAAX87AAF/PgABf0EAAX9DAAF/aAABf4wAAX+zAAF/1wABf9oAAX/cAAF/3gABf+AAAX/iAAF/5AABf+UAAX/oAAF/9QABgAYAAYAIAAGACgABgAwAAYAOAAGAEAABgBIAAYAUAAGAFgABgCcAAYAqAAGALQABgDAAAYAzAAGANgABgDkAAYA8AAGAPwABgEEAAYCAAAGAggABgIQAAYCGAAGAiQABgIoAAYCLAAGAjAABgI0AAYCPAAGAkQABgJIAAYCTAAGAlQABgJYAAYDVAAGA1wABgNkAAYDbAAGA3gABgN8AAYDgAAGA4QABgOIAAYDkAAGA5gABgOcAAYDoAAGA6gABgOsAAYEqAAGBLAABgS8AAYExAAGBNAABgTUAAYE2AAGBNwABgTgAAYE6AAGBPAABgT0AAYE+AAGBQAABgUEAAYFOAAGBTwABgVAAAYFSAAGBkQABgZMAAYGVAAGBlwABgZoAAYGbAAGBnAABgZ0AAYGeAAGBoAABgaIAAYGjAAGBpAABgaYAAYGnAAGB5gABgegAAYHqAAGB7AABge8AAYHwAAGB8QABgfIAAYHzAAGB9QABgfcAAYH4AAGB+QABgfsAAYH8AAGCOwABgj0AAYI/AAGCQQABgkQAAYJFAAGCRgABgkcAAYJIAAGCSgABgkwAAYJNAAGCTgABglAAAYJRAAGCkAABgpIAAYKUAAGClgABgpkAAYKaAAGCmwABgpwAAYKdAAGCnwABgqEAAYKiAAGCowABgqUAAYKmAAGC5QABgucAAYLpAAGC6wABgu4AAYLvAAGC8AABgvEAAYLyAAGC9AABgvYAAYL3AAGC+AABgvoAAYL7AAGDIAABg0QAAYNrAAGDjwABg5IAAYOUAAGDlgABg5gAAYOaAAGDnAABg50AAYOgAAGDrQABg7wAAYO+AAGDwAABg8IAAYPEAAGDxgABg8gAAYPKAAGD2QABg9wAAYPfAAGD4gABg+UAAYPoAAGD6wABg+4AAYPwAAGELwABhDEAAYQzAAGENQABhDgAAYQ5AAGEOgABhDsAAYQ8AAGEPgABhEAAAYRBAAGEQgABhEQAAYRFAAGEhAABhIYAAYSIAAGEigABhI0AAYSOAAGEjwABhJAAAYSRAAGEkwABhJUAAYSWAAGElwABhJkAAYSaAAGE2QABhNsAAYTdAAGE3wABhOIAAYTjAAGE5AABhOUAAYTmAAGE6AABhOoAAYTrAAGE7AABhO4AAYTvAAGFLgABhTAAAYUyAAGFNAABhTcAAYU4AAGFOQABhToAAYU7AAGFPQABhT8AAYVAAAGFQQABhUMAAYVEAAGFgwABhYUAAYWHAAGFiQABhYwAAYWNAAGFjgABhY8AAYWQAAGFkgABhZQAAYWVAAGFlgABhZgAAYWZAAGF2AABhdoAAYXcAAGF3gABheEAAYXiAAGF4wABheQAAYXlAAGF5wABhekAAYXqAAGF6wABhe0AAYXuAAGGLQABhi8AAYYxAAGGMwABhjYAAYY3AAGGOAABhjkAAYY6AAGGPAABhj4AAYY/AAGGQAABhkIAAYZDAAGGjgABhrEAAYbRAAGG8QABhvMAAYb1AAGG9wABhvkAAYb8AAGG/QABhv4AAYcBAAGHAgABhwQAAYcFAAGHBwABhwoAAYcLAAGHDAABhw8AAYcQAAGHFQABhyIAAYcnAAGHKQABhysAAYcwAAGHMwABhzYAAYc4AAGHXQABh4EAAYeoAAGHzAABh88AAYfRAAGH0wABh9UAAYfXAAGH2QABh9oAAYfdAAGH6gABh/sAAYf9AAGH/wABiAEAAYgDAAGIBQABiAcAAYgJAAGICwABiBwAAYgfAAGIIgABiCUAAYgoAAGIKwABiC4AAYgxAAGINAABiDYAAYh1AAGIdwABiHkAAYh7AAGIfgABiH8AAYiAAAGIgQABiIIAAYiEAAGIhgABiIcAAYiIAAGIigABiIsAAYjKAAGIzAABiM4AAYjQAAGI0wABiNQAAYjVAAGI1gABiNcAAYjZAAGI2wABiNwAAYjdAAGI3wABiOAAAYkfAAGJIQABiSQAAYkmAAGJKQABiSoAAYkrAAGJLAABiS0AAYkvAAGJMQABiTIAAYkzAAGJNQABiTYAAYlDAAGJRAABiUUAAYlHAAGJhgABiYgAAYmKAAGJjAABiY8AAYmQAAGJkQABiZIAAYmTAAGJlQABiZcAAYmYAAGJmQABiZsAAYmcAAGJ2wABid0AAYnfAAGJ4QABieQAAYnlAAGJ5gABiecAAYnoAAGJ6gABiewAAYntAAGJ7gABifAAAYnxAAGKMAABijIAAYo0AAGKNgABijkAAYo6AAGKOwABijwAAYo9AAGKPwABikEAAYpCAAGKQwABikUAAYpGAAGKhQABiocAAYqKAAGKjAABio8AAYqQAAGKkQABipIAAYqTAAGKlQABipcAAYqYAAGKmQABipsAAYqcAAGKsAABiu8AAYrxAAGK8wABivUAAYr4AAGK+QABivoAAYr7AAGK/AABiv4AAYsAAAGLAQABiwIAAYsEAAGLBQABiyoAAYtOAAGLdQABi5kAAYucAAGLngABi6AAAYuiAAGLpAABi6YAAYunAAGLqgABi7cAAYvGAAGLyAABi8oAAYvMAAGLzgABi9AAAYvSAAGL1AABi+MAAYvmAAGL6QABi+wAAYvvAAGL8gABi/UAAYv4AAGL+gABjDkAAYw7AAGMPQABjD8AAYxCAAGMQwABjEQAAYxFAAGMRgABjEgAAYxKAAGMSwABjEwAAYxOAAGMTwABjI4AAYyQAAGMkgABjJQAAYyXAAGMmAABjJkAAYyaAAGMmwABjJ0AAYyfAAGMoAABjKEAAYyjAAGMpAABjOMAAYzlAAGM5wABjOkAAYzsAAGM7QABjO4AAYzvAAGM8AABjPIAAYz0AAGM9QABjPYAAYz4AAGM+QABjTgAAY06AAGNPAABjT4AAY1BAAGNQgABjUMAAY1EAAGNRQABjUcAAY1JAAGNSgABjUsAAY1NAAGNTgABjY0AAY2PAAGNkQABjZMAAY2WAAGNlwABjZgAAY2ZAAGNmgABjZwAAY2eAAGNnwABjaAAAY2iAAGNowABjeIAAY3kAAGN5gABjegAAY3rAAGN7AABje0AAY3uAAGN7wABjfEAAY3zAAGN9AABjfUAAY33AAGN+AABjjcAAY45AAGOOwABjj0AAY5AAAGOQQABjkIAAY5DAAGORAABjkYAAY5IAAGOSQABjkoAAY5MAAGOTQABjpgAAY67AAGO2wABjvsAAY79AAGO/wABjwEAAY8DAAGPBgABjwcAAY8IAAGPCwABjwwAAY8OAAGPDwABjxEAAY8UAAGPFQABjxYAAY8ZAAGPGgABjx8AAY8sAAGPMQABjzMAAY81AAGPOgABjz0AAY9AAAGPQgABj2cAAY+LAAGPsgABj9YAAY/ZAAGP2wABj90AAY/fAAGP4QABj+MAAY/kAAGP5wABj/QAAZAFAAGQBwABkAkAAZALAAGQDQABkA8AAZARAAGQEwABkBUAAZAmAAGQKQABkCwAAZAvAAGQMgABkDUAAZA4AAGQOwABkD4AAZBAAAGQfwABkIEAAZCDAAGQhQABkIgAAZCJAAGQigABkIsAAZCMAAGQjgABkJAAAZCRAAGQkgABkJQAAZCVAAGQ1AABkNYAAZDYAAGQ2gABkN0AAZDeAAGQ3wABkOAAAZDhAAGQ4wABkOUAAZDmAAGQ5wABkOkAAZDqAAGRKQABkSsAAZEuAAGRMAABkTMAAZE0AAGRNQABkTYAAZE3AAGROQABkTsAAZE8AAGRPQABkT8AAZFAAAGRTQABkU4AAZFPAAGRUQABkZAAAZGSAAGRlAABkZYAAZGZAAGRmgABkZsAAZGcAAGRnQABkZ8AAZGhAAGRogABkaMAAZGlAAGRpgABkeUAAZHnAAGR6QABkesAAZHuAAGR7wABkfAAAZHxAAGR8gABkfQAAZH2AAGR9wABkfgAAZH6AAGR+wABkjoAAZI8AAGSPgABkkAAAZJDAAGSRAABkkUAAZJGAAGSRwABkkkAAZJLAAGSTAABkk0AAZJPAAGSUAABko8AAZKRAAGSlAABkpYAAZKZAAGSmgABkpsAAZKcAAGSnQABkp8AAZKhAAGSogABkqMAAZKlAAGSpgABkrUAAZL0AAGS9gABkvgAAZL6AAGS/QABkv4AAZL/AAGTAAABkwEAAZMDAAGTBQABkwYAAZMHAAGTCQABkwoAAZMvAAGTUwABk3oAAZOeAAGToQABk6MAAZOlAAGTpwABk6kAAZOrAAGTrAABk68AAZO8AAGTywABk80AAZPPAAGT0QABk9MAAZPVAAGT1wABk9kAAZPoAAGT6wABk+4AAZPxAAGT9AABk/cAAZP6AAGT/QABk/8AAZQ+AAGUQAABlEIAAZREAAGURwABlEgAAZRJAAGUSgABlEsAAZRNAAGUTwABlFAAAZRRAAGUUwABlFQAAZSTAAGUlQABlJcAAZSZAAGUnAABlJ0AAZSeAAGUnwABlKAAAZSiAAGUpAABlKUAAZSmAAGUqAABlKkAAZToAAGU6gABlOwAAZTuAAGU8QABlPIAAZTzAAGU9AABlPUAAZT3AAGU+QABlPoAAZT7AAGU/QABlP4AAZU9AAGVPwABlUEAAZVDAAGVRgABlUcAAZVIAAGVSQABlUoAAZVMAAGVTgABlU8AAZVQAAGVUgABlVMAAZWSAAGVlAABlZYAAZWYAAGVmwABlZwAAZWdAAGVngABlZ8AAZWhAAGVowABlaQAAZWlAAGVpwABlagAAZXnAAGV6QABlesAAZXtAAGV8AABlfEAAZXyAAGV8wABlfQAAZX2AAGV+AABlfkAAZX6AAGV/AABlf0AAZY8AAGWPgABlkAAAZZCAAGWRQABlkYAAZZHAAGWSAABlkkAAZZLAAGWTQABlk4AAZZPAAGWUQABllIAAZadAAGWwAABluAAAZcAAAGXAgABlwQAAZcGAAGXCAABlwsAAZcMAAGXDQABlxAAAZcRAAGXEwABlxQAAZcWAAGXGQABlxoAAZcbAAGXHgABlx8AAZckAAGXMQABlzYAAZc4AAGXOgABlz8AAZdCAAGXRQABl0cAAZdsAAGXkAABl7cAAZfbAAGX3gABl+AAAZfiAAGX5AABl+YAAZfoAAGX6QABl+wAAZf5AAGYCgABmAwAAZgOAAGYEAABmBIAAZgUAAGYFgABmBgAAZgaAAGYKwABmC4AAZgxAAGYNAABmDcAAZg6AAGYPQABmEAAAZhDAAGYRQABmIQAAZiGAAGYiAABmIoAAZiNAAGYjgABmI8AAZiQAAGYkQABmJMAAZiVAAGYlgABmJcAAZiZAAGYmgABmNkAAZjbAAGY3QABmN8AAZjiAAGY4wABmOQAAZjlAAGY5gABmOgAAZjqAAGY6wABmOwAAZjuAAGY7wABmS4AAZkwAAGZMwABmTUAAZk4AAGZOQABmToAAZk7AAGZPAABmT4AAZlAAAGZQQABmUIAAZlEAAGZRQABmVIAAZlTAAGZVAABmVYAAZmVAAGZlwABmZkAAZmbAAGZngABmZ8AAZmgAAGZoQABmaIAAZmkAAGZpgABmacAAZmoAAGZqgABmasAAZnqAAGZ7AABme4AAZnwAAGZ8wABmfQAAZn1AAGZ9gABmfcAAZn5AAGZ+wABmfwAAZn9AAGZ/wABmgAAAZo/AAGaQQABmkMAAZpFAAGaSAABmkkAAZpKAAGaSwABmkwAAZpOAAGaUAABmlEAAZpSAAGaVAABmlUAAZqUAAGalgABmpkAAZqbAAGangABmp8AAZqgAAGaoQABmqIAAZqkAAGapgABmqcAAZqoAAGaqgABmqsAAZq/AAGa/gABmwAAAZsCAAGbBAABmwcAAZsIAAGbCQABmwoAAZsLAAGbDQABmw8AAZsQAAGbEQABmxMAAZsUAAGbOQABm10AAZuEAAGbqAABm6sAAZutAAGbrwABm7EAAZuzAAGbtQABm7YAAZu5AAGbxgABm9UAAZvXAAGb2QABm9sAAZvdAAGb3wABm+EAAZvjAAGb8gABm/UAAZv4AAGb+wABm/4AAZwBAAGcBAABnAcAAZwJAAGcSAABnEoAAZxMAAGcTgABnFEAAZxSAAGcUwABnFQAAZxVAAGcVwABnFkAAZxaAAGcWwABnF0AAZxeAAGcnQABnJ8AAZyhAAGcowABnKYAAZynAAGcqAABnKkAAZyqAAGcrAABnK4AAZyvAAGcsAABnLIAAZyzAAGc8gABnPQAAZz2AAGc+AABnPsAAZz8AAGc/QABnP4AAZz/AAGdAQABnQMAAZ0EAAGdBQABnQcAAZ0IAAGdRwABnUkAAZ1LAAGdTQABnVAAAZ1RAAGdUgABnVMAAZ1UAAGdVgABnVgAAZ1ZAAGdWgABnVwAAZ1dAAGdnAABnZ4AAZ2gAAGdogABnaUAAZ2mAAGdpwABnagAAZ2pAAGdqwABna0AAZ2uAAGdrwABnbEAAZ2yAAGd8QABnfMAAZ31AAGd9wABnfoAAZ37AAGd/AABnf0AAZ3+AAGeAAABngIAAZ4DAAGeBAABngYAAZ4HAAGeRgABnkgAAZ5KAAGeTAABnk8AAZ5QAAGeUQABnlIAAZ5TAAGeVQABnlcAAZ5YAAGeWQABnlsAAZ5cAAGepwABnsoAAZ7qAAGfCgABnwwAAZ8OAAGfEAABnxIAAZ8VAAGfFgABnxcAAZ8aAAGfGwABnx0AAZ8eAAGfIAABnyMAAZ8kAAGfJQABnygAAZ8pAAGfMgABnz8AAZ9EAAGfRgABn0gAAZ9NAAGfUAABn1MAAZ9VAAGfegABn54AAZ/FAAGf6QABn+wAAZ/uAAGf8AABn/IAAZ/0AAGf9gABn/cAAZ/6AAGgBwABoBgAAaAaAAGgHAABoB4AAaAgAAGgIgABoCQAAaAmAAGgKAABoDkAAaA8AAGgPwABoEIAAaBFAAGgSAABoEsAAaBOAAGgUQABoFMAAaCSAAGglAABoJYAAaCYAAGgmwABoJwAAaCdAAGgngABoJ8AAaChAAGgowABoKQAAaClAAGgpwABoKgAAaDnAAGg6QABoOsAAaDtAAGg8AABoPEAAaDyAAGg8wABoPQAAaD2AAGg+AABoPkAAaD6AAGg/AABoP0AAaE8AAGhPgABoUEAAaFDAAGhRgABoUcAAaFIAAGhSQABoUoAAaFMAAGhTgABoU8AAaFQAAGhUgABoVMAAaFgAAGhYQABoWIAAaFkAAGhowABoaUAAaGnAAGhqQABoawAAaGtAAGhrgABoa8AAaGwAAGhsgABobQAAaG1AAGhtgABobgAAaG5AAGh+AABofoAAaH8AAGh/gABogEAAaICAAGiAwABogQAAaIFAAGiBwABogkAAaIKAAGiCwABog0AAaIOAAGiTQABok8AAaJRAAGiUwABolYAAaJXAAGiWAABolkAAaJaAAGiXAABol4AAaJfAAGiYAABomIAAaJjAAGiogABoqQAAaKmAAGiqAABoqsAAaKsAAGirQABoq4AAaKvAAGisQABorMAAaK0AAGitQABorcAAaK4AAGi9wABovkAAaL7AAGi/QABowAAAaMBAAGjAgABowMAAaMEAAGjBgABowgAAaMJAAGjCgABowwAAaMNAAGjMgABo1YAAaN9AAGjoQABo6QAAaOmAAGjqAABo6oAAaOsAAGjrgABo68AAaOyAAGjvwABo84AAaPQAAGj0gABo9QAAaPWAAGj2AABo9oAAaPcAAGj6wABo+4AAaPxAAGj9AABo/cAAaP6AAGj/QABpAAAAaQCAAGkQQABpEMAAaRFAAGkRwABpEoAAaRLAAGkTAABpE0AAaROAAGkUAABpFIAAaRTAAGkVAABpFYAAaRXAAGklgABpJgAAaSaAAGknAABpJ8AAaSgAAGkoQABpKIAAaSjAAGkpQABpKcAAaSoAAGkqQABpKsAAaSsAAGk6wABpO0AAaTvAAGk8QABpPQAAaT1AAGk9gABpPcAAaT4AAGk+gABpPwAAaT9AAGk/gABpQAAAaUBAAGlQAABpUIAAaVEAAGlRgABpUkAAaVKAAGlSwABpUwAAaVNAAGlTwABpVEAAaVSAAGlUwABpVUAAaVWAAGllQABpZcAAaWZAAGlmwABpZ4AAaWfAAGloAABpaEAAaWiAAGlpAABpaYAAaWnAAGlqAABpaoAAaWrAAGl6gABpewAAaXuAAGl8AABpfMAAaX0AAGl9QABpfYAAaX3AAGl+QABpfsAAaX8AAGl/QABpf8AAaYAAAGmPwABpkEAAaZDAAGmRQABpkgAAaZJAAGmSgABpksAAaZMAAGmTgABplAAAaZRAAGmUgABplQAAaZVAAGmoAABpsMAAabjAAGnAwABpwUAAacHAAGnCQABpwsAAacOAAGnDwABpxAAAacTAAGnFAABpxYAAacXAAGnGQABpxwAAacdAAGnHgABpyEAAaciAAGnJwABpzQAAac5AAGnOwABpz0AAadCAAGnRQABp0gAAadKAAGnbwABp5MAAae6AAGn3gABp+EAAafjAAGn5QABp+cAAafpAAGn6wABp+wAAafvAAGn/AABqA0AAagPAAGoEQABqBMAAagVAAGoFwABqBkAAagbAAGoHQABqC4AAagxAAGoNAABqDcAAag6AAGoPQABqEAAAahDAAGoRgABqEgAAaiHAAGoiQABqIsAAaiNAAGokAABqJEAAaiSAAGokwABqJQAAaiWAAGomAABqJkAAaiaAAGonAABqJ0AAajcAAGo3gABqOAAAajiAAGo5QABqOYAAajnAAGo6AABqOkAAajrAAGo7QABqO4AAajvAAGo8QABqPIAAakxAAGpMwABqTYAAak4AAGpOwABqTwAAak9AAGpPgABqT8AAalBAAGpQwABqUQAAalFAAGpRwABqUgAAalVAAGpVgABqVcAAalZAAGpmAABqZoAAamcAAGpngABqaEAAamiAAGpowABqaQAAamlAAGppwABqakAAamqAAGpqwABqa0AAamuAAGp7QABqe8AAanxAAGp8wABqfYAAan3AAGp+AABqfkAAan6AAGp/AABqf4AAan/AAGqAAABqgIAAaoDAAGqQgABqkQAAapGAAGqSAABqksAAapMAAGqTQABqk4AAapPAAGqUQABqlMAAapUAAGqVQABqlcAAapYAAGqlwABqpkAAaqbAAGqnQABqqAAAaqhAAGqogABqqMAAaqkAAGqpgABqqgAAaqpAAGqqgABqqwAAaqtAAGq7AABqu4AAarwAAGq8gABqvUAAar2AAGq9wABqvgAAar5AAGq+wABqv0AAar+AAGq/wABqwEAAasCAAGrJwABq0sAAatyAAGrlgABq5kAAaubAAGrnQABq58AAauhAAGrowABq6QAAaunAAGrtAABq8MAAavFAAGrxwABq8kAAavLAAGrzQABq88AAavRAAGr4AABq+MAAavmAAGr6QABq+wAAavvAAGr8gABq/UAAav3AAGsNgABrDgAAaw6AAGsPAABrD8AAaxAAAGsQQABrEIAAaxDAAGsRQABrEcAAaxIAAGsSQABrEsAAaxMAAGsiwABrI0AAayPAAGskQABrJQAAayVAAGslgABrJcAAayYAAGsmgABrJwAAaydAAGsngABrKAAAayhAAGs4AABrOIAAazkAAGs5gABrOkAAazqAAGs6wABrOwAAaztAAGs7wABrPEAAazyAAGs8wABrPUAAaz2AAGtNQABrTcAAa05AAGtOwABrT4AAa0/AAGtQAABrUEAAa1CAAGtRAABrUYAAa1HAAGtSAABrUoAAa1LAAGtigABrYwAAa2OAAGtkAABrZMAAa2UAAGtlQABrZYAAa2XAAGtmQABrZsAAa2cAAGtnQABrZ8AAa2gAAGt3wABreEAAa3jAAGt5QABregAAa3pAAGt6gABresAAa3sAAGt7gABrfAAAa3xAAGt8gABrfQAAa31AAGuNAABrjYAAa44AAGuOgABrj0AAa4+AAGuPwABrkAAAa5BAAGuQwABrkUAAa5GAAGuRwABrkkAAa5KAAGulQABrrgAAa7YAAGu+AABrvoAAa78AAGu/gABrwAAAa8DAAGvBAABrwUAAa8IAAGvCQABrwsAAa8MAAGvDgABrxEAAa8SAAGvEwABrxYAAa8XAAGvHAABrykAAa8uAAGvMAABrzIAAa83AAGvOgABrz0AAa8/AAGvZAABr4gAAa+vAAGv0wABr9YAAa/YAAGv2gABr9wAAa/eAAGv4AABr+EAAa/kAAGv8QABsAIAAbAEAAGwBgABsAgAAbAKAAGwDAABsA4AAbAQAAGwEgABsCMAAbAmAAGwKQABsCwAAbAvAAGwMgABsDUAAbA4AAGwOwABsD0AAbB8AAGwfgABsIAAAbCCAAGwhQABsIYAAbCHAAGwiAABsIkAAbCLAAGwjQABsI4AAbCPAAGwkQABsJIAAbDRAAGw0wABsNUAAbDXAAGw2gABsNsAAbDcAAGw3QABsN4AAbDgAAGw4gABsOMAAbDkAAGw5gABsOcAAbEmAAGxKAABsSsAAbEtAAGxMAABsTEAAbEyAAGxMwABsTQAAbE2AAGxOAABsTkAAbE6AAGxPAABsT0AAbFKAAGxSwABsUwAAbFOAAGxjQABsY8AAbGRAAGxkwABsZYAAbGXAAGxmAABsZkAAbGaAAGxnAABsZ4AAbGfAAGxoAABsaIAAbGjAAGx4gABseQAAbHmAAGx6AABsesAAbHsAAGx7QABse4AAbHvAAGx8QABsfMAAbH0AAGx9QABsfcAAbH4AAGyNwABsjkAAbI7AAGyPQABskAAAbJBAAGyQgABskMAAbJEAAGyRgABskgAAbJJAAGySgABskwAAbJNAAGyjAABso4AAbKQAAGykgABspUAAbKWAAGylwABspgAAbKZAAGymwABsp0AAbKeAAGynwABsqEAAbKiAAGy4QABsuMAAbLlAAGy5wABsuoAAbLrAAGy7AABsu0AAbLuAAGy8AABsvIAAbLzAAGy9AABsvYAAbL3AAGzHAABs0AAAbNnAAGziwABs44AAbOQAAGzkgABs5QAAbOWAAGzmAABs5kAAbOcAAGzqQABs7gAAbO6AAGzvAABs74AAbPAAAGzwgABs8QAAbPGAAGz1QABs9gAAbPbAAGz3gABs+EAAbPkAAGz5wABs+oAAbPsAAG0KwABtC0AAbQvAAG0MQABtDQAAbQ1AAG0NgABtDcAAbQ4AAG0OgABtDwAAbQ9AAG0PgABtEAAAbRBAAG0gAABtIIAAbSEAAG0hgABtIkAAbSKAAG0iwABtIwAAbSNAAG0jwABtJEAAbSSAAG0kwABtJUAAbSWAAG01QABtNcAAbTZAAG02wABtN4AAbTfAAG04AABtOEAAbTiAAG05AABtOYAAbTnAAG06AABtOoAAbTrAAG1KgABtSwAAbUvAAG1MQABtTQAAbU1AAG1NgABtTcAAbU4AAG1OgABtTwAAbU9AAG1PgABtUAAAbVBAAG1gAABtYIAAbWEAAG1hgABtYkAAbWKAAG1iwABtYwAAbWNAAG1jwABtZEAAbWSAAG1kwABtZUAAbWWAAG11QABtdcAAbXZAAG12wABtd4AAbXfAAG14AABteEAAbXiAAG15AABteYAAbXnAAG16AABteoAAbXrAAG2KgABtiwAAbYvAAG2MQABtjQAAbY1AAG2NgABtjcAAbY4AAG2OgABtjwAAbY9AAG2PgABtkAAAbZBAAG2jAABtq8AAbbPAAG27wABtvEAAbbzAAG29QABtvcAAbb6AAG2+wABtvwAAbb/AAG3AAABtwIAAbcDAAG3BQABtwgAAbcJAAG3CgABtw0AAbcOAAG3EwABtyAAAbclAAG3JwABtykAAbcuAAG3MQABtzQAAbc2AAG3WwABt38AAbemAAG3ygABt80AAbfPAAG30QABt9MAAbfVAAG31wABt9gAAbfbAAG36AABt/kAAbf7AAG3/QABt/8AAbgBAAG4AwABuAUAAbgHAAG4CQABuBoAAbgdAAG4IAABuCMAAbgmAAG4KQABuCwAAbgvAAG4MgABuDQAAbhzAAG4dQABuHcAAbh5AAG4fAABuH0AAbh+AAG4fwABuIAAAbiCAAG4hAABuIUAAbiGAAG4iAABuIkAAbjIAAG4ygABuMwAAbjOAAG40QABuNIAAbjTAAG41AABuNUAAbjXAAG42QABuNoAAbjbAAG43QABuN4AAbkdAAG5HwABuSIAAbkkAAG5JwABuSgAAbkpAAG5KgABuSsAAbktAAG5LwABuTAAAbkxAAG5MwABuTQAAblBAAG5QgABuUMAAblFAAG5hAABuYYAAbmIAAG5igABuY0AAbmOAAG5jwABuZAAAbmRAAG5kwABuZUAAbmWAAG5lwABuZkAAbmaAAG52QABudsAAbndAAG53wABueIAAbnjAAG55AABueUAAbnmAAG56AABueoAAbnrAAG57AABue4AAbnvAAG6LgABujAAAboyAAG6NAABujcAAbo4AAG6OQABujoAAbo7AAG6PQABuj8AAbpAAAG6QQABukMAAbpEAAG6gwABuoUAAbqHAAG6iQABuowAAbqNAAG6jgABuo8AAbqQAAG6kgABupQAAbqVAAG6lgABupgAAbqZAAG62AAButoAAbrcAAG63gABuuEAAbriAAG64wABuuQAAbrlAAG65wABuukAAbrqAAG66wABuu0AAbruAAG7EwABuzcAAbteAAG7ggABu4UAAbuHAAG7iQABu4sAAbuNAAG7jwABu5AAAbuTAAG7oAABu68AAbuxAAG7swABu7UAAbu3AAG7uQABu7sAAbu9AAG7zAABu88AAbvSAAG71QABu9gAAbvbAAG73gABu+EAAbvjAAG8IgABvCQAAbwmAAG8KAABvCsAAbwsAAG8LQABvC4AAbwvAAG8MQABvDMAAbw0AAG8NQABvDcAAbw4AAG8dwABvHkAAbx7AAG8fQABvIAAAbyBAAG8ggABvIMAAbyEAAG8hgABvIgAAbyJAAG8igABvIwAAbyNAAG8zAABvM4AAbzQAAG80gABvNUAAbzWAAG81wABvNgAAbzZAAG82wABvN0AAbzeAAG83wABvOEAAbziAAG9IQABvSMAAb0mAAG9KAABvSsAAb0sAAG9LQABvS4AAb0vAAG9MQABvTMAAb00AAG9NQABvTcAAb04AAG9dwABvXkAAb17AAG9fQABvYAAAb2BAAG9ggABvYMAAb2EAAG9hgABvYgAAb2JAAG9igABvYwAAb2NAAG9zAABvc4AAb3QAAG90gABvdUAAb3WAAG91wABvdgAAb3ZAAG92wABvd0AAb3eAAG93wABveEAAb3iAAG+IQABviMAAb4mAAG+KAABvisAAb4sAAG+LQABvi4AAb4vAAG+MQABvjMAAb40AAG+NQABvjcAAb44AAG+gwABvqYAAb7GAAG+5gABvugAAb7qAAG+7AABvu4AAb7xAAG+8gABvvMAAb72AAG+9wABvvkAAb76AAG+/AABvv8AAb8AAAG/AQABvwQAAb8FAAG/CgABvxcAAb8cAAG/HgABvyAAAb8lAAG/KAABvysAAb8tAAG/UgABv3YAAb+dAAG/wQABv8QAAb/GAAG/yAABv8oAAb/MAAG/zgABv88AAb/SAAG/3wABv/AAAb/yAAG/9AABv/YAAb/4AAG/+gABv/wAAb/+AAHAAAABwBEAAcAUAAHAFwABwBoAAcAdAAHAIAABwCMAAcAmAAHAKQABwCsAAcBqAAHAbAABwG4AAcBwAAHAcwABwHQAAcB1AAHAdgABwHcAAcB5AAHAewABwHwAAcB9AAHAfwABwIAAAcC/AAHAwQABwMMAAcDFAAHAyAABwMkAAcDKAAHAywABwMwAAcDOAAHA0AABwNEAAcDSAAHA1AABwNUAAcEUAAHBFgABwRkAAcEbAAHBHgABwR8AAcEgAAHBIQABwSIAAcEkAAHBJgABwScAAcEoAAHBKgABwSsAAcE4AAHBOQABwToAAcE8AAHBewABwX0AAcF/AAHBgQABwYQAAcGFAAHBhgABwYcAAcGIAAHBigABwYwAAcGNAAHBjgABwZAAAcGRAAHB0AABwdIAAcHUAAHB1gABwdkAAcHaAAHB2wABwdwAAcHdAAHB3wABweEAAcHiAAHB4wABweUAAcHmAAHCJQABwicAAcIpAAHCKwABwi4AAcIvAAHCMAABwjEAAcIyAAHCNAABwjYAAcI3AAHCOAABwjoAAcI7AAHCegABwnwAAcJ/AAHCgQABwoQAAcKFAAHChgABwocAAcKIAAHCigABwowAAcKNAAHCjgABwpAAAcKRAAHCnwABwt4AAcLgAAHC4gABwuQAAcLnAAHC6AABwukAAcLqAAHC6wABwu0AAcLvAAHC8AABwvEAAcLzAAHC9AABwxkAAcM9AAHDZAABw4gAAcOLAAHDjQABw48AAcORAAHDkwABw5UAAcOWAAHDmQABw6YAAcO1AAHDtwABw7kAAcO7AAHDvQABw78AAcPBAAHDwwABw9IAAcPVAAHD2AABw9sAAcPeAAHD4QABw+QAAcPnAAHD6QABxCgAAcQqAAHELAABxC4AAcQxAAHEMgABxDMAAcQ0AAHENQABxDcAAcQ5AAHEOgABxDsAAcQ9AAHEPgABxH0AAcR/AAHEgQABxIMAAcSGAAHEhwABxIgAAcSJAAHEigABxIwAAcSOAAHEjwABxJAAAcSSAAHEkwABxNIAAcTUAAHE1gABxNgAAcTbAAHE3AABxN0AAcTeAAHE3wABxOEAAcTjAAHE5AABxOUAAcTnAAHE6AABxScAAcUpAAHFKwABxS0AAcUwAAHFMQABxTIAAcUzAAHFNAABxTYAAcU4AAHFOQABxToAAcU8AAHFPQABxXwAAcV+AAHFgAABxYIAAcWFAAHFhgABxYcAAcWIAAHFiQABxYsAAcWNAAHFjgABxY8AAcWRAAHFkgABxdEAAcXTAAHF1QABxdcAAcXaAAHF2wABxdwAAcXdAAHF3gABxeAAAcXiAAHF4wABxeQAAcXmAAHF5wABxiYAAcYoAAHGKgABxiwAAcYvAAHGMAABxjEAAcYyAAHGMwABxjUAAcY3AAHGOAABxjkAAcY7AAHGPAABxocAAcaqAAHGygABxuoAAcbsAAHG7gABxvAAAcbyAAHG9QABxvYAAcb3AAHG+gABxvsAAcb9AAHG/gABxwAAAccDAAHHBAABxwUAAccIAAHHCQABxw4AAccbAAHHIAABxyIAAcckAAHHKQABxywAAccvAAHHMQABx1YAAcd6AAHHoQABx8UAAcfIAAHHygABx8wAAcfOAAHH0AABx9IAAcfTAAHH1gABx+MAAcf0AAHH9gABx/gAAcf6AAHH/AABx/4AAcgAAAHIAgAByAQAAcgVAAHIGAAByBsAAcgeAAHIIQAByCQAAcgnAAHIKgAByC0AAcgvAAHIbgAByHAAAchyAAHIdAAByHcAAch4AAHIeQAByHoAAch7AAHIfQAByH8AAciAAAHIgQAByIMAAciEAAHIwwAByMUAAcjHAAHIyQAByMwAAcjNAAHIzgAByM8AAcjQAAHI0gAByNQAAcjVAAHI1gAByNgAAcjZAAHJGAAByRoAAckdAAHJHwABySIAAckjAAHJJAABySUAAckmAAHJKAABySoAAckrAAHJLAAByS4AAckvAAHJPAAByT0AAck+AAHJQAAByX8AAcmBAAHJgwAByYUAAcmIAAHJiQAByYoAAcmLAAHJjAAByY4AAcmQAAHJkQAByZIAAcmUAAHJlQABydQAAcnWAAHJ2AABydoAAcndAAHJ3gAByd8AAcngAAHJ4QAByeMAAcnlAAHJ5gAByecAAcnpAAHJ6gAByikAAcorAAHKLQAByi8AAcoyAAHKMwAByjQAAco1AAHKNgAByjgAAco6AAHKOwAByjwAAco+AAHKPwAByn4AAcqAAAHKggAByoQAAcqHAAHKiAAByokAAcqKAAHKiwAByo0AAcqPAAHKkAABypEAAcqTAAHKlAABytMAAcrVAAHK1wABytkAAcrcAAHK3QAByt4AAcrfAAHK4AAByuIAAcrkAAHK5QAByuYAAcroAAHK6QAByw4AAcsyAAHLWQABy30AAcuAAAHLggABy4QAAcuGAAHLiAABy4oAAcuLAAHLjgABy5sAAcuqAAHLrAABy64AAcuwAAHLsgABy7QAAcu2AAHLuAABy8cAAcvKAAHLzQABy9AAAcvTAAHL1gABy9kAAcvcAAHL3gABzB0AAcwfAAHMIQABzCMAAcwmAAHMJwABzCgAAcwpAAHMKgABzCwAAcwuAAHMLwABzDAAAcwyAAHMMwABzHIAAcx0AAHMdgABzHgAAcx7AAHMfAABzH0AAcx+AAHMfwABzIEAAcyDAAHMhAABzIUAAcyHAAHMiAABzMcAAczJAAHMywABzM0AAczQAAHM0QABzNIAAczTAAHM1AABzNYAAczYAAHM2QABzNoAAczcAAHM3QABzRwAAc0eAAHNIAABzSIAAc0lAAHNJgABzScAAc0oAAHNKQABzSsAAc0tAAHNLgABzS8AAc0xAAHNMgABzXEAAc1zAAHNdQABzXcAAc16AAHNewABzXwAAc19AAHNfgABzYAAAc2CAAHNgwABzYQAAc2GAAHNhwABzcYAAc3IAAHNygABzcwAAc3PAAHN0AABzdEAAc3SAAHN0wABzdUAAc3XAAHN2AABzdkAAc3bAAHN3AABzhsAAc4dAAHOHwABziEAAc4kAAHOJQABziYAAc4nAAHOKAABzioAAc4sAAHOLQABzi4AAc4wAAHOMQABznwAAc6fAAHOvwABzt8AAc7hAAHO4wABzuUAAc7nAAHO6gABzusAAc7sAAHO7wABzvAAAc7yAAHO8wABzvUAAc74AAHO+QABzvoAAc79AAHO/gABzwMAAc8QAAHPFQABzxcAAc8ZAAHPHgABzyEAAc8kAAHPJgABz0sAAc9vAAHPlgABz7oAAc+9AAHPvwABz8EAAc/DAAHPxQABz8cAAc/IAAHPywABz9gAAc/pAAHP6wABz+0AAc/vAAHP8QABz/MAAc/1AAHP9wABz/kAAdAKAAHQDQAB0BAAAdATAAHQFgAB0BkAAdAcAAHQHwAB0CIAAdAkAAHQYwAB0GUAAdBnAAHQaQAB0GwAAdBtAAHQbgAB0G8AAdBwAAHQcgAB0HQAAdB1AAHQdgAB0HgAAdB5AAHQuAAB0LoAAdC8AAHQvgAB0MEAAdDCAAHQwwAB0MQAAdDFAAHQxwAB0MkAAdDKAAHQywAB0M0AAdDOAAHRDQAB0Q8AAdESAAHRFAAB0RcAAdEYAAHRGQAB0RoAAdEbAAHRHQAB0R8AAdEgAAHRIQAB0SMAAdEkAAHRMQAB0TIAAdEzAAHRNQAB0XQAAdF2AAHReAAB0XoAAdF9AAHRfgAB0X8AAdGAAAHRgQAB0YMAAdGFAAHRhgAB0YcAAdGJAAHRigAB0ckAAdHLAAHRzQAB0c8AAdHSAAHR0wAB0dQAAdHVAAHR1gAB0dgAAdHaAAHR2wAB0dwAAdHeAAHR3wAB0h4AAdIgAAHSIgAB0iQAAdInAAHSKAAB0ikAAdIqAAHSKwAB0i0AAdIvAAHSMAAB0jEAAdIzAAHSNAAB0nMAAdJ1AAHSdwAB0nkAAdJ8AAHSfQAB0n4AAdJ/AAHSgAAB0oIAAdKEAAHShQAB0oYAAdKIAAHSiQAB0sgAAdLKAAHSzAAB0s4AAdLRAAHS0gAB0tMAAdLUAAHS1QAB0tcAAdLZAAHS2gAB0tsAAdLdAAHS3gAB0wMAAdMnAAHTTgAB03IAAdN1AAHTdwAB03kAAdN7AAHTfQAB038AAdOAAAHTgwAB05AAAdOfAAHToQAB06MAAdOlAAHTpwAB06kAAdOrAAHTrQAB07wAAdO/AAHTwgAB08UAAdPIAAHTywAB084AAdPRAAHT0wAB1BIAAdQUAAHUFgAB1BgAAdQbAAHUHAAB1B0AAdQeAAHUHwAB1CEAAdQjAAHUJAAB1CUAAdQnAAHUKAAB1GcAAdRpAAHUawAB1G0AAdRwAAHUcQAB1HIAAdRzAAHUdAAB1HYAAdR4AAHUeQAB1HoAAdR8AAHUfQAB1LwAAdS+AAHUwAAB1MIAAdTFAAHUxgAB1McAAdTIAAHUyQAB1MsAAdTNAAHUzgAB1M8AAdTRAAHU0gAB1REAAdUTAAHVFQAB1RcAAdUaAAHVGwAB1RwAAdUdAAHVHgAB1SAAAdUiAAHVIwAB1SQAAdUmAAHVJwAB1WYAAdVoAAHVagAB1WwAAdVvAAHVcAAB1XEAAdVyAAHVcwAB1XUAAdV3AAHVeAAB1XkAAdV7AAHVfAAB1bsAAdW9AAHVvwAB1cEAAdXEAAHVxQAB1cYAAdXHAAHVyAAB1coAAdXMAAHVzQAB1c4AAdXQAAHV0QAB1hAAAdYSAAHWFAAB1hYAAdYZAAHWGgAB1hsAAdYcAAHWHQAB1h8AAdYhAAHWIgAB1iMAAdYlAAHWJgAB1i8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AAfJYAAHyWQAB8loAAfJbAAHyXQAB8l8AAfJgAAHyYQAB8mMAAfJkAAHyowAB8qUAAfKnAAHyqQAB8qwAAfKtAAHyrgAB8q8AAfKwAAHysgAB8rQAAfK1AAHytgAB8rgAAfK5AAHy+AAB8voAAfL9AAHy/wAB8wIAAfMDAAHzBAAB8wUAAfMGAAHzCAAB8woAAfMLAAHzDAAB8w4AAfMPAAHzHAAB8x0AAfMeAAHzIAAB818AAfNhAAHzYwAB82UAAfNoAAHzaQAB82oAAfNrAAHzbAAB824AAfNwAAHzcQAB83IAAfN0AAHzdQAB87QAAfO2AAHzuAAB87oAAfO9AAHzvgAB878AAfPAAAHzwQAB88MAAfPFAAHzxgAB88cAAfPJAAHzygAB9AkAAfQLAAH0DQAB9A8AAfQSAAH0EwAB9BQAAfQVAAH0FgAB9BgAAfQaAAH0GwAB9BwAAfQeAAH0HwAB9F4AAfRgAAH0YgAB9GQAAfRnAAH0aAAB9GkAAfRqAAH0awAB9G0AAfRvAAH0cAAB9HEAAfRzAAH0dAAB9LMAAfS1AAH0twAB9LkAAfS8AAH0vQAB9L4AAfS/AAH0wAAB9MIAAfTEAAH0xQAB9MYAAfTIAAH0yQAB9O4AAfUSAAH1OQAB9V0AAfVgAAH1YgAB9WQAAfVmAAH1aAAB9WoAAfVrAAH1bgAB9XsAAfWKAAH1jAAB9Y4AAfWQAAH1kgAB9ZQAAfWWAAH1mAAB9acAAfWqAAH1rQAB9bAAAfWzAAH1tgAB9bkAAfW8AAH1vgAB9f0AAfX/AAH2AQAB9gMAAfYGAAH2BwAB9ggAAfYJAAH2CgAB9gwAAfYOAAH2DwAB9hAAAfYSAAH2EwAB9lIAAfZUAAH2VgAB9lgAAfZbAAH2XAAB9l0AAfZeAAH2XwAB9mEAAfZjAAH2ZAAB9mUAAfZnAAH2aAAB9qcAAfapAAH2qwAB9q0AAfawAAH2sQAB9rIAAfazAAH2tAAB9rYAAfa4AAH2uQAB9roAAfa8AAH2vQAB9vwAAfb+AAH3AQAB9wMAAfcGAAH3BwAB9wgAAfcJAAH3CgAB9wwAAfcOAAH3DwAB9xAAAfcSAAH3EwAB91IAAfdUAAH3VgAB91gAAfdbAAH3XAAB910AAfdeAAH3XwAB92EAAfdjAAH3ZAAB92UAAfdnAAH3aAAB96c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AAgL3AAIC+AACAvkAAgL7AAIC/QACAv4AAgL/AAIDAQACAwIAAgMPAAIDEAACAxEAAgMTAAIDUgACA1QAAgNWAAIDWAACA1sAAgNcAAIDXQACA14AAgNfAAIDYQACA2MAAgNkAAIDZQACA2cAAgNoAAIDpwACA6kAAgOrAAIDrQACA7AAAgOxAAIDsgACA7MAAgO0AAIDtgACA7gAAgO5AAIDugACA7wAAgO9AAID/AACA/4AAgQAAAIEAgACBAUAAgQGAAIEBwACBAgAAgQJAAIECwACBA0AAgQOAAIEDwACBBEAAgQSAAIEUQACBFMAAgRVAAIEVwACBFoAAgRbAAIEXAACBF0AAgReAAIEYAACBGIAAgRjAAIEZAACBGYAAgRnAAIEpgACBKgAAgSqAAIErAACBK8AAgSwAAIEsQACBLIAAgSzAAIEtQACBLcAAgS4AAIEuQACBLsAAgS8AAIE4QACBQUAAgUsAAIFUAACBVMAAgVVAAIFVwACBVkAAgVbAAIFXQACBV4AAgVhAAIFbgACBX0AAgV/AAIFgQACBYMAAgWFAAIFhwACBYkAAgWLAAIFmgACBZ0AAgWgAAIFowACBaYAAgWpAAIFrAACBa8AAgWxAAIF8AACBfIAAgX0AAIF9gACBfkAAgX6AAIF+wACBfwAAgX9AAIF/wACBgEAAgYCAAIGAwACBgUAAgYGAAIGRQACBkcAAgZJAAIGSwACBk4AAgZPAAIGUAACBlEAAgZSAAIGVAACBlYAAgZXAAIGWAACBloAAgZbAAIGmgACBpwAAgaeAAIGoAACBqMAAgakAAIGpQACBqYAAganAAIGqQACBqsAAgasAAIGrQACBq8AAgawAAIG7wACBvEAAgb0AAIG9gACBvkAAgb6AAIG+wACBvwAAgb9AAIG/wACBwEAAgcCAAIHAwACBwUAAgcGAAIHSQACB20AAgeRAAIHtAACB9sAAgf7AAIIIgACCEkAAghpAAIIjQACCLEAAgizAAIItgACCLgAAgi6AAIIvAACCL8AAgjCAAIIxAACCMYAAgjJAAIIywACCM0AAgjQAAII0wACCNQAAgjZAAII5gACCOkAAgjrAAII7gACCPEAAgjzAAIJGAACCTwAAgljAAIJhwACCYoAAgmMAAIJjgACCZAAAgmSAAIJlAACCZUAAgmYAAIJpQACCbgAAgm6AAIJvAACCb4AAgnAAAIJwgACCcQAAgnGAAIJyAACCcoAAgndAAIJ4AACCeMAAgnmAAIJ6QACCewAAgnvAAIJ8gACCfUAAgn4AAIJ+gACCjkAAgo7AAIKPgACCkAAAgpDAAIKRAACCkUAAgpGAAIKRwACCkkAAgpLAAIKTAACCk0AAgpPAAIKUAACClkAAgpaAAIKXAACCpsAAgqdAAIKnwACCqEAAgqkAAIKpQACCqYAAgqnAAIKqAACCqoAAgqsAAIKrQACCq4AAgqwAAIKsQACCvAAAgryAAIK9QACCvcAAgr6AAIK+wACCvwAAgr9AAIK/gACCwAAAgsCAAILAwACCwQAAgsGAAILBwACCxAAAgsRAAILEwACC1IAAgtUAAILVgACC1gAAgtbAAILXAACC10AAgteAAILXwACC2EAAgtjAAILZAACC2UAAgtnAAILaAACC6cAAgupAAILrAACC64AAguxAAILsgACC7MAAgu0AAILtQACC7cAAgu5AAILugACC7sAAgu9AAILvgACC8cAAgvIAAILygACDAkAAgwLAAIMDQACDA8AAgwSAAIMEwACDBQAAgwVAAIMFgACDBgAAgwaAAIMGwACDBwAAgweAAIMHwACDF4AAgxgAAIMYwACDGUAAgxoAAIMaQACDGoAAgxrAAIMbAACDG4AAgxwAAIMcQACDHIAAgx0AAIMdQACDIIAAgyDAAIMhAACDIYAAgzFAAIMxwACDMkAAgzLAAIMzgACDM8AAgzQAAIM0QACDNIAAgzUAAIM1gACDNcAAgzYAAIM2gACDNsAAg0aAAINHAACDR8AAg0hAAINJAACDSUAAg0mAAINJwACDSgAAg0qAAINLAACDS0AAg0uAAINMAACDTEAAg1EAAINUQACDWIAAg1lAAINaAACDWsAAg1tAAINcAACDXMAAg12AAINeQACDYoAAg2NAAINkAACDZMAAg2WAAINmQACDZwAAg2fAAINogACDaQAAg2rAAINtgACDcQAAg3RAAIN3AACDekAAg31AAIOQAACDmMAAg6DAAIOowACDqUAAg6nAAIOqQACDqsAAg6uAAIOrwACDrAAAg6zAAIOtAACDrYAAg63AAIOuQACDrwAAg69AAIOvgACDsEAAg7CAAIOxwACDtQAAg7ZAAIO2wACDt0AAg7iAAIO5QACDugAAg7qAAIPDwACDzMAAg9aAAIPfgACD4EAAg+DAAIPhQACD4cAAg+JAAIPiwACD4wAAg+PAAIPnAACD60AAg+vAAIPsQACD7MAAg+1AAIPtwACD7kAAg+7AAIPvQACD84AAg/RAAIP1AACD9cAAg/aAAIP3QACD+AAAg/jAAIP5gACD+gAAhAnAAIQKQACECsAAhAtAAIQMAACEDEAAhAyAAIQMwACEDQAAhA2AAIQOAACEDkAAhA6AAIQPAACED0AAhB8AAIQfgACEIAAAhCCAAIQhQACEIYAAhCHAAIQiAACEIkAAhCLAAIQjQACEI4AAhCPAAIQkQACEJIAAhDRAAIQ0wACENYAAhDYAAIQ2wACENwAAhDdAAIQ3gACEN8AAhDhAAIQ4wACEOQAAhDlAAIQ5wACEOgAAhD1AAIQ9gACEPcAAhD5AAIROAACEToAAhE8AAIRPgACEUEAAhFCAAIRQwACEUQAAhFFAAIRRwACEUkAAhFKAAIRSwACEU0AAhFOAAIRjQACEY8AAhGRAAIRkwACEZYAAhGXAAIRmAACEZkAAhGaAAIRnAACEZ4AAhGfAAIRoAACEaIAAhGjAAIR4gACEeQAAhHmAAIR6AACEesAAhHsAAIR7QACEe4AAhHvAAIR8QACEfMAAhH0AAIR9QACEfcAAhH4AAISNwACEjkAAhI7AAISPQACEkAAAhJBAAISQgACEkMAAhJEAAISRgACEkgAAhJJAAISSgACEkwAAhJNAAISjAACEo4AAhKQAAISkgACEpUAAhKWAAISlwACEpgAAhKZAAISmwACEp0AAhKeAAISnwACEqEAAhKiAAISxwACEusAAhMSAAITNgACEzkAAhM7AAITPQACEz8AAhNBAAITQwACE0QAAhNHAAITVAACE2MAAhNlAAITZwACE2kAAhNrAAITbQACE28AAhNxAAITgAACE4MAAhOGAAITiQACE4wAAhOPAAITkgACE5UAAhOXAAIT1gACE9gAAhPaAAIT3AACE98AAhPgAAIT4QACE+IAAhPjAAIT5QACE+cAAhPoAAIT6QACE+sAAhPsAAIUKwACFC0AAhQvAAIUMQACFDQAAhQ1AAIUNgACFDcAAhQ4AAIUOgACFDwAAhQ9AAIUPgACFEAAAhRBAAIUgAACFIIAAhSEAAIUhgACFIkAAhSKAAIUiwACFIwAAhSNAAIUjwACFJEAAhSSAAIUkwACFJUAAhSWAAIU1QACFNcAAhTZAAIU2wACFN4AAhTfAAIU4AACFOEAAhTiAAIU5AACFOYAAhTnAAIU6AACFOoAAhTrAAIVKgACFSwAAhUuAAIVMAACFTMAAhU0AAIVNQACFTYAAhU3AAIVOQACFTsAAhU8AAIVPQACFT8AAhVAAAIVfwACFYEAAhWDAAIVhQACFYgAAhWJAAIVigACFYsAAhWMAAIVjgACFZAAAhWRAAIVkgACFZQAAhWVAAIV1AACFdYAAhXYAAIV2gACFd0AAhXeAAIV3wACFeAAAhXhAAIV4wACFeUAAhXmAAIV5wACFekAAhXqAAIWNQACFlgAAhZ4AAIWmAACFpoAAhacAAIWngACFqAAAhajAAIWpAACFqUAAhaoAAIWqQACFqsAAhasAAIWrgACFrEAAhayAAIWswACFrYAAha3AAIWwAACFs0AAhbSAAIW1AACFtYAAhbbAAIW3gACFuEAAhbjAAIXCAACFywAAhdTAAIXdwACF3oAAhd8AAIXfgACF4AAAheCAAIXhAACF4UAAheIAAIXlQACF6YAAheoAAIXqgACF6wAAheuAAIXsAACF7IAAhe0AAIXtgACF8cAAhfKAAIXzQACF9AAAhfTAAIX1gACF9kAAhfcAAIX3wACF+EAAhggAAIYIgACGCQAAhgmAAIYKQACGCoAAhgrAAIYLAACGC0AAhgvAAIYMQACGDIAAhgzAAIYNQACGDYAAhh1AAIYdwACGHkAAhh7AAIYfgACGH8AAhiAAAIYgQACGIIAAhiEAAIYhgACGIcAAhiIAAIYigACGIsAAhjKAAIYzAACGM8AAhjRAAIY1AACGNUAAhjWAAIY1wACGNgAAhjaAAIY3AACGN0AAhjeAAIY4AACGOEAAhjuAAIY7wACGPAAAhjyAAIZMQACGTMAAhk1AAIZNwACGToAAhk7AAIZPAACGT0AAhk+AAIZQAACGUIAAhlDAAIZRAACGUYAAhlHAAIZhgACGYgAAhmKAAIZjAACGY8AAhmQAAIZkQACGZIAAhmTAAIZlQACGZcAAhmYAAIZmQACGZsAAhmcAAIZ2wACGd0AAhnfAAIZ4QACGeQAAhnlAAIZ5gACGecAAhnoAAIZ6gACGewAAhntAAIZ7gACGfAAAhnxAAIaMAACGjIAAho0AAIaNgACGjkAAho6AAIaOwACGjwAAho9AAIaPwACGkEAAhpCAAIaQwACGkUAAhpGAAIahQACGocAAhqJAAIaiwACGo4AAhqPAAIakAACGpEAAhqSAAIalAACGpYAAhqXAAIamAACGpoAAhqbAAIawAACGuQAAhsLAAIbLwACGzIAAhs0AAIbNgACGzgAAhs6AAIbPAACGz0AAhtAAAIbTQACG1wAAhteAAIbYAACG2IAAhtkAAIbZgACG2gAAhtqAAIbeQACG3wAAht/AAIbggACG4UAAhuIAAIbiwACG44AAhuQAAIbzwACG9EAAhvTAAIb1QACG9gAAhvZAAIb2gACG9sAAhvcAAIb3gACG+AAAhvhAAIb4gACG+QAAhvlAAIcJAACHCYAAhwoAAIcKgACHC0AAhwuAAIcLwACHDAAAhwxAAIcMwACHDUAAhw2AAIcNwACHDkAAhw6AAIceQACHHsAAhx9AAIcfwACHIIAAhyDAAIchAACHIUAAhyGAAIciAACHIoAAhyLAAIcjAACHI4AAhyPAAIczgACHNAAAhzSAAIc1AACHNcAAhzYAAIc2QACHNoAAhzbAAIc3QACHN8AAhzgAAIc4QACHOMAAhzkAAIdIwACHSUAAh0nAAIdKQACHSwAAh0tAAIdLgACHS8AAh0wAAIdMgACHTQAAh01AAIdNgACHTgAAh05AAIdeAACHXoAAh18AAIdfgACHYEAAh2CAAIdgwACHYQAAh2FAAIdhwACHYkAAh2KAAIdiwACHY0AAh2OAAIdzQACHc8AAh3RAAId0wACHdYAAh3XAAId2AACHdkAAh3aAAId3AACHd4AAh3fAAId4AACHeIAAh3jAAIeLgACHlEAAh5xAAIekQACHpMAAh6VAAIelwACHpkAAh6cAAIenQACHp4AAh6hAAIeogACHqQAAh6lAAIepwACHqoAAh6rAAIerAACHq8AAh6wAAIetQACHsIAAh7HAAIeyQACHssAAh7QAAIe0wACHtYAAh7YAAIe/QACHyEAAh9IAAIfbAACH28AAh9xAAIfcwACH3UAAh93AAIfeQACH3oAAh99AAIfigACH5sAAh+dAAIfnwACH6EAAh+jAAIfpQACH6cAAh+pAAIfqwACH7wAAh+/AAIfwgACH8UAAh/IAAIfywACH84AAh/RAAIf1AACH9YAAiAVAAIgFwACIBkAAiAbAAIgHgACIB8AAiAgAAIgIQACICIAAiAkAAIgJgACICcAAiAoAAIgKgACICsAAiBqAAIgbAACIG4AAiBwAAIgcwACIHQAAiB1AAIgdgACIHcAAiB5AAIgewACIHwAAiB9AAIgfwACIIAAAiC/AAIgwQACIMQAAiDGAAIgyQACIMoAAiDLAAIgzAACIM0AAiDPAAIg0QACINIAAiDTAAIg1QACINYAAiDjAAIg5AACIOUAAiDnAAIhJgACISgAAiEqAAIhLAACIS8AAiEwAAIhMQACITIAAiEzAAIhNQACITcAAiE4AAIhOQACITsAAiE8AAIhewACIX0AAiF/AAIhgQACIYQAAiGFAAIhhgACIYcAAiGIAAIhigACIYwAAiGNAAIhjgACIZAAAiGRAAIh0AACIdIAAiHUAAIh1gACIdkAAiHaAAIh2wACIdwAAiHdAAIh3wACIeEAAiHiAAIh4wACIeUAAiHmAAIiJQACIicAAiIpAAIiKwACIi4AAiIvAAIiMAACIjEAAiIyAAIiNAACIjYAAiI3AAIiOAACIjoAAiI7AAIiegACInwAAiJ+AAIigAACIoMAAiKEAAIihQACIoYAAiKHAAIiiQACIosAAiKMAAIijQACIo8AAiKQAAIitQACItkAAiMAAAIjJAACIycAAiMpAAIjKwACIy0AAiMvAAIjMQACIzIAAiM1AAIjQgACI1EAAiNTAAIjVQACI1cAAiNZAAIjWwACI10AAiNfAAIjbgACI3EAAiN0AAIjdwACI3oAAiN9AAIjgAACI4MAAiOFAAIjxAACI8YAAiPIAAIjygACI80AAiPOAAIjzwACI9AAAiPRAAIj0wACI9UAAiPWAAIj1wACI9kAAiPaAAIkGQACJBsAAiQdAAIkHwACJCIAAiQjAAIkJAACJCUAAiQmAAIkKAACJCoAAiQrAAIkLAACJC4AAiQvAAIkbgACJHAAAiRyAAIkdAACJHcAAiR4AAIkeQACJHoAAiR7AAIkfQACJH8AAiSAAAIkgQACJIMAAiSEAAIkwwACJMUAAiTIAAIkygACJM0AAiTOAAIkzwACJNAAAiTRAAIk0wACJNUAAiTWAAIk1wACJNkAAiTaAAIlGQACJRsAAiUdAAIlHwACJSIAAiUjAAIlJAACJSUAAiUmAAIlKAACJSoAAiUrAAIlLAACJS4AAiUvAAIlbgACJXAAAiVyAAIldAACJXcAAiV4AAIleQACJXoAAiV7AAIlfQACJX8AAiWAAAIlgQACJYMAAiWEAAIlwwACJcUAAiXHAAIlyQACJcwAAiXNAAIlzgACJc8AAiXQAAIl0gACJdQAAiXVAAIl1gACJdgAAiXZAAImJAACJkcAAiZnAAImhwACJokAAiaLAAImjQACJo8AAiaSAAImkwACJpQAAiaXAAImmAACJpoAAiabAAImnQACJp8AAiagAAImoQACJqQAAialAAImqgACJrcAAia8AAImvgACJsAAAibFAAImyAACJssAAibNAAIm8gACJxYAAic9AAInYQACJ2QAAidmAAInaAACJ2oAAidsAAInbgACJ28AAidyAAInfwACJ5AAAieSAAInlAACJ5YAAieYAAInmgACJ5wAAieeAAInoAACJ7EAAie0AAIntwACJ7oAAie9AAInwAACJ8MAAifGAAInyQACJ8sAAigKAAIoDAACKA4AAigQAAIoEwACKBQAAigVAAIoFgACKBcAAigZAAIoGwACKBwAAigdAAIoHwACKCAAAihfAAIoYQACKGMAAihlAAIoaAACKGkAAihqAAIoawACKGwAAihuAAIocAACKHEAAihyAAIodAACKHUAAii0AAIotgACKLkAAii7AAIovgACKL8AAijAAAIowQACKMIAAijEAAIoxgACKMcAAijIAAIoygACKMsAAijYAAIo2QACKNoAAijcAAIpGwACKR0AAikfAAIpIQACKSQAAiklAAIpJgACKScAAikoAAIpKgACKSwAAiktAAIpLgACKTAAAikxAAIpcAACKXIAAil0AAIpdgACKXkAAil6AAIpewACKXwAAil9AAIpfwACKYEAAimCAAIpgwACKYUAAimGAAIpxQACKccAAinJAAIpywACKc4AAinPAAIp0AACKdEAAinSAAIp1AACKdYAAinXAAIp2AACKdoAAinbAAIqGgACKhwAAioeAAIqIAACKiMAAiokAAIqJQACKiYAAionAAIqKQACKisAAiosAAIqLQACKi8AAiowAAIqbwACKnEAAipzAAIqdQACKngAAip5AAIqegACKnsAAip8AAIqfgACKoAAAiqBAAIqggACKoQAAiqFAAIqqgACKs4AAir1AAIrGQACKxwAAiseAAIrIAACKyIAAiskAAIrJgACKycAAisqAAIrNwACK0YAAitIAAIrSgACK0wAAitOAAIrUAACK1IAAitUAAIrYwACK2YAAitpAAIrbAACK28AAityAAIrdQACK3gAAit6AAIruQACK7sAAiu+AAIrwAACK8MAAivEAAIrxQACK8YAAivHAAIryQACK8sAAivMAAIrzQACK88AAivQAAIsDwACLBEAAiwTAAIsFQACLBgAAiwZAAIsGgACLBsAAiwcAAIsHgACLCAAAiwhAAIsIgACLCQAAiwlAAIsZAACLGYAAixoAAIsagACLG0AAixuAAIsbwACLHAAAixxAAIscwACLHUAAix2AAIsdwACLHkAAix6AAIsuQACLLsAAiy+AAIswAACLMMAAizEAAIsxQACLMYAAizHAAIsyQACLMsAAizMAAIszQACLM8AAizQAAItDwACLREAAi0TAAItFQACLRgAAi0ZAAItGgACLRsAAi0cAAItHgACLSAAAi0hAAItIgACLSQAAi0lAAItZAACLWYAAi1oAAItagACLW0AAi1uAAItbwACLXAAAi1xAAItcwACLXUAAi12AAItdwACLXkAAi16AAItuQACLbsAAi29AAItvwACLcIAAi3DAAItxAACLcUAAi3GAAItyAACLcoAAi3LAAItzAACLc4AAi3PAAIuGgACLj0AAi5dAAIufQACLn8AAi6BAAIugwACLoUAAi6IAAIuiQACLooAAi6NAAIujgACLpAAAi6RAAIukwACLpYAAi6XAAIumAACLpsAAi6cAAIuoQACLq4AAi6zAAIutQACLrcAAi68AAIuvwACLsIAAi7EAAIu6QACLw0AAi80AAIvWAACL1sAAi9dAAIvXwACL2EAAi9jAAIvZQACL2YAAi9pAAIvdgACL4cAAi+JAAIviwACL40AAi+PAAIvkQACL5MAAi+VAAIvlwACL6gAAi+rAAIvrgACL7EAAi+0AAIvtwACL7oAAi+9AAIvwAACL8IAAjABAAIwAwACMAUAAjAHAAIwCgACMAsAAjAMAAIwDQACMA4AAjAQAAIwEgACMBMAAjAUAAIwFgACMBcAAjBWAAIwWAACMFoAAjBcAAIwXwACMGAAAjBhAAIwYgACMGMAAjBlAAIwZwACMGgAAjBpAAIwawACMGwAAjCrAAIwrQACMLAAAjCyAAIwtQACMLYAAjC3AAIwuAACMLkAAjC7AAIwvQACML4AAjC/AAIwwQACMMIAAjDPAAIw0AACMNEAAjDTAAIxEgACMRQAAjEWAAIxGAACMRsAAjEcAAIxHQACMR4AAjEfAAIxIQACMSMAAjEkAAIxJQACMScAAjEoAAIxZwACMWkAAjFrAAIxbQACMXAAAjFxAAIxcgACMXMAAjF0AAIxdgACMXgAAjF5AAIxegACMXwAAjF9AAIxvAACMb4AAjHAAAIxwgACMcUAAjHGAAIxxwACMcgAAjHJAAIxywACMc0AAjHOAAIxzwACMdEAAjHSAAIyEQACMhMAAjIVAAIyFwACMhoAAjIbAAIyHAACMh0AAjIeAAIyIAACMiIAAjIjAAIyJAACMiYAAjInAAIyZgACMmgAAjJqAAIybAACMm8AAjJwAAIycQACMnIAAjJzAAIydQACMncAAjJ4AAIyeQACMnsAAjJ8AAIyoQACMsUAAjLsAAIzEAACMxMAAjMVAAIzFwACMxkAAjMbAAIzHQACMx4AAjMhAAIzLgACMz0AAjM/AAIzQQACM0MAAjNFAAIzRwACM0kAAjNLAAIzWgACM10AAjNgAAIzYwACM2YAAjNpAAIzbAACM28AAjNxAAIzsAACM7IAAjO0AAIztgACM7kAAjO6AAIzuwACM7wAAjO9AAIzvwACM8EAAjPCAAIzwwACM8UAAjPGAAI0BQACNAcAAjQJAAI0CwACNA4AAjQPAAI0EAACNBEAAjQSAAI0FAACNBYAAjQXAAI0GAACNBoAAjQbAAI0WgACNFwAAjReAAI0YAACNGMAAjRkAAI0ZQACNGYAAjRnAAI0aQACNGsAAjRsAAI0bQACNG8AAjRwAAI0rwACNLEAAjSzAAI0tQACNLgAAjS5AAI0ugACNLsAAjS8AAI0vgACNMAAAjTBAAI0wgACNMQAAjTFAAI1BAACNQYAAjUIAAI1CgACNQ0AAjUOAAI1DwACNRAAAjURAAI1EwACNRUAAjUWAAI1FwACNRkAAjUaAAI1WQACNVsAAjVdAAI1XwACNWIAAjVjAAI1ZAACNWUAAjVmAAI1aAACNWoAAjVrAAI1bAACNW4AAjVvAAI1rgACNbAAAjWyAAI1tAACNbcAAjW4AAI1uQACNboAAjW7AAI1vQACNb8AAjXAAAI1wQACNcMAAjXEAAI2DwACNjIAAjZSAAI2cgACNnQAAjZ2AAI2eAACNnoAAjZ9AAI2fgACNn8AAjaCAAI2gwACNoUAAjaGAAI2iAACNosAAjaMAAI2jQACNpAAAjaRAAI2mgACNqcAAjasAAI2rgACNrAAAja1AAI2uAACNrsAAja9AAI24gACNwYAAjctAAI3UQACN1QAAjdWAAI3WAACN1oAAjdcAAI3XgACN18AAjdiAAI3bwACN4AAAjeCAAI3hAACN4YAAjeIAAI3igACN4wAAjeOAAI3kAACN6EAAjekAAI3pwACN6oAAjetAAI3sAACN7MAAje2AAI3uQACN7sAAjf6AAI3/AACN/4AAjgAAAI4AwACOAQAAjgFAAI4BgACOAcAAjgJAAI4CwACOAwAAjgNAAI4DwACOBAAAjhPAAI4UQACOFMAAjhVAAI4WAACOFkAAjhaAAI4WwACOFwAAjheAAI4YAACOGEAAjhiAAI4ZAACOGUAAjikAAI4pgACOKkAAjirAAI4rgACOK8AAjiwAAI4sQACOLIAAji0AAI4tgACOLcAAji4AAI4ugACOLsAAjjIAAI4yQACOMoAAjjMAAI5CwACOQ0AAjkPAAI5EQACORQAAjkVAAI5FgACORcAAjkYAAI5GgACORwAAjkdAAI5HgACOSAAAjkhAAI5YAACOWIAAjlkAAI5ZgACOWkAAjlqAAI5awACOWwAAjltAAI5bwACOXEAAjlyAAI5cwACOXUAAjl2AAI5tQACObcAAjm5AAI5uwACOb4AAjm/AAI5wAACOcEAAjnCAAI5xAACOcYAAjnHAAI5yAACOcoAAjnLAAI6CgACOgwAAjoOAAI6EAACOhMAAjoUAAI6FQACOhYAAjoXAAI6GQACOhsAAjocAAI6HQACOh8AAjogAAI6XwACOmEAAjpjAAI6ZQACOmgAAjppAAI6agACOmsAAjpsAAI6bgACOnAAAjpxAAI6cgACOnQAAjp1AAI6mgACOr4AAjrlAAI7CQACOwwAAjsOAAI7EAACOxIAAjsUAAI7FgACOxcAAjsaAAI7JwACOzYAAjs4AAI7OgACOzwAAjs+AAI7QAACO0IAAjtEAAI7UwACO1YAAjtZAAI7XAACO18AAjtiAAI7ZQACO2gAAjtqAAI7qQACO6sAAjutAAI7rwACO7IAAjuzAAI7tAACO7U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AAkccAAJHQAACR0MAAkdFAAJHRwACR0kAAkdLAAJHTQACR04AAkdRAAJHXgACR28AAkdxAAJHcwACR3UAAkd3AAJHeQACR3sAAkd9AAJHfwACR5AAAkeTAAJHlgACR5kAAkecAAJHnwACR6IAAkelAAJHqAACR6oAAkfpAAJH6wACR+0AAkfvAAJH8gACR/MAAkf0AAJH9QACR/YAAkf4AAJH+gACR/sAAkf8AAJH/gACR/8AAkg+AAJIQAACSEIAAkhEAAJIRwACSEgAAkhJAAJISgACSEsAAkhNAAJITwACSFAAAkhRAAJIUwACSFQAAkiTAAJIlQACSJgAAkiaAAJInQACSJ4AAkifAAJIoAACSKEAAkijAAJIpQACSKYAAkinAAJIqQACSKoAAki3AAJIuAACSLkAAki7AAJI+gACSPwAAkj+AAJJAAACSQMAAkkEAAJJBQACSQYAAkkHAAJJCQACSQsAAkkMAAJJDQACSQ8AAkkQAAJJTwACSVEAAklTAAJJVQACSVgAAklZAAJJWgACSVsAAklcAAJJXgACSWAAAklhAAJJYgACSWQAAkllAAJJpAACSaYAAkmoAAJJqgACSa0AAkmuAAJJrwACSbAAAkmxAAJJswACSbUAAkm2AAJJtwACSbkAAkm6AAJJ+QACSfsAAkn9AAJJ/wACSgIAAkoDAAJKBAACSgUAAkoGAAJKCAACSgoAAkoLAAJKDAACSg4AAkoPAAJKTgACSlAAAkpSAAJKVAACSlcAAkpYAAJKWQACSloAAkpbAAJKXQACSl8AAkpgAAJKYQACSmMAAkpkAAJKiQACSq0AAkrUAAJK+AACSvsAAkr9AAJK/wACSwEAAksDAAJLBQACSwYAAksJAAJLFgACSyUAAksnAAJLKQACSysAAkstAAJLLwACSzEAAkszAAJLQgACS0UAAktIAAJLSwACS04AAktRAAJLVAACS1cAAktZAAJLmAACS5oAAkucAAJLngACS6EAAkuiAAJLowACS6QAAkulAAJLpwACS6kAAkuqAAJLqwACS60AAkuuAAJL7QACS+8AAkvxAAJL8wACS/YAAkv3AAJL+AACS/kAAkv6AAJL/AACS/4AAkv/AAJMAAACTAIAAkwDAAJMQgACTEQAAkxGAAJMSAACTEsAAkxMAAJMTQACTE4AAkxPAAJMUQACTFMAAkxUAAJMVQACTFcAAkxYAAJMlwACTJkAAkybAAJMnQACTKAAAkyhAAJMogACTKMAAkykAAJMpgACTKgAAkypAAJMqgACTKwAAkytAAJM7AACTO4AAkzwAAJM8gACTPUAAkz2AAJM9wACTPgAAkz5AAJM+wACTP0AAkz+AAJM/wACTQEAAk0CAAJNQQACTUMAAk1FAAJNRwACTUoAAk1LAAJNTAACTU0AAk1OAAJNUAACTVIAAk1TAAJNVAACTVYAAk1XAAJNlgACTZgAAk2bAAJNnQACTaAAAk2hAAJNogACTaMAAk2kAAJNpgACTagAAk2pAAJNqgACTawAAk2tAAJNtgACTbcAAk25AAJN+AACTfoAAk38AAJN/gACTgEAAk4CAAJOAwACTgQAAk4FAAJOBwACTgkAAk4KAAJOCwACTg0AAk4OAAJOTQACTk8AAk5RAAJOUwACTlYAAk5XAAJOWAACTlkAAk5aAAJOXAACTl4AAk5fAAJOYAACTmIAAk5jAAJOogACTqQAAk6nAAJOqQACTqwAAk6tAAJOrgACTq8AAk6wAAJOsgACTrQAAk61AAJOtgACTrgAAk65AAJPBAACTycAAk9HAAJPZwACT2kAAk9rAAJPbQACT28AAk9xAAJPcgACT3MAAk92AAJPdwACT3kAAk96AAJPfAACT34AAk9/AAJPgAACT4MAAk+EAAJPiQACT5YAAk+bAAJPnQACT58AAk+kAAJPpwACT6oAAk+sAAJP0QACT/UAAlAcAAJQQAACUEMAAlBFAAJQRwACUEkAAlBLAAJQTQACUE4AAlBRAAJQXgACUG8AAlBxAAJQcwACUHUAAlB3AAJQeQACUHsAAlB9AAJQfwACUJAAAlCTAAJQlgACUJkAAlCcAAJQnwACUKIAAlClAAJQqAACUKoAAlDpAAJQ6wACUO0AAlDvAAJQ8gACUPMAAlD0AAJQ9QACUPYAAlD4AAJQ+gACUPsAAlD8AAJQ/gACUP8AAlE+AAJRQAACUUIAAlFEAAJRRwACUUgAAlFJAAJRSgACUUsAAlFNAAJRTwACUVAAAlFRAAJRUwACUVQAAlGTAAJRlQACUZgAAlGaAAJRnQACUZ4AAlGfAAJRoAACUaEAAlGjAAJRpQACUaYAAlGnAAJRqQACUaoAAlG3AAJRuAACUbkAAlG7AAJR+gACUfwAAlH+AAJSAAACUgMAAlIEAAJSBQACUgYAAlIHAAJSCQACUgsAAlIMAAJSDQACUg8AAlIQAAJSTwACUlEAAlJTAAJSVQACUlgAAlJZAAJSWgACUlsAAlJcAAJSXgACUmAAAlJhAAJSYgACUmQAAlJlAAJSpAACUqYAAlKoAAJSqgACUq0AAlKuAAJSrwACUrAAAlKxAAJSswACUrUAAlK2AAJStwACUrkAAlK6AAJS+QACUvsAAlL9AAJS/wACUwIAAlMDAAJTBAACUwUAAlMGAAJTCAACUwoAAlMLAAJTDAACUw4AAlMPAAJTTgACU1AAAlNSAAJTVAACU1cAAlNYAAJTWQACU1oAAlNbAAJTXQACU18AAlNgAAJTYQACU2MAAlNkAAJTiQACU60AAlPUAAJT+AACU/sAAlP9AAJT/wACVAEAAlQDAAJUBQACVAYAAlQJAAJUFgACVCUAAlQnAAJUKQACVCsAAlQtAAJULwACVDEAAlQzAAJUQgACVEUAAlRIAAJUSwACVE4AAlRRAAJUVAACVFcAAlRZAAJUmAACVJoAAlScAAJUngACVKEAAlSiAAJUowACVKQAAlSlAAJUpwACVKkAAlSqAAJUqwACVK0AAlSuAAJU7QACVO8AAlTxAAJU8wACVPYAAlT3AAJU+AACVPkAAlT6AAJU/AACVP4AAlT/AAJVAAACVQIAAlUDAAJVQgACVUQAAlVGAAJVSAACVUsAAlVMAAJVTQACVU4AAlVPAAJVUQACVVMAAlVUAAJVVQACVVcAAlVYAAJVlwACVZkAAlWcAAJVngACVaEAAlWiAAJVowACVaQAAlWlAAJVpwACVakAAlWqAAJVqwACVa0AAlWuAAJV8QACVhUAAlY5AAJWXAACVoMAAlajAAJWygACVvEAAlcRAAJXNQACV1kAAldbAAJXXgACV2AAAldiAAJXZAACV2cAAldqAAJXbAACV24AAldxAAJXcwACV3UAAld4AAJXewACV3wAAleBAAJXjgACV5EAAleTAAJXlgACV5kAAlebAAJXwAACV+QAAlgLAAJYLwACWDIAAlg0AAJYNgACWDgAAlg6AAJYPAACWD0AAlhAAAJYTQACWGAAAlhiAAJYZAACWGYAAlhoAAJYagACWGwAAlhuAAJYcAACWHIAAliFAAJYiAACWIsAAliOAAJYkQACWJQAAliXAAJYmgACWJ0AAligAAJYogACWOEAAljjAAJY5gACWOgAAljrAAJY7AACWO0AAljuAAJY7wACWPEAAljzAAJY9AACWPUAAlj3AAJY+AACWQEAAlkCAAJZBAACWUMAAllFAAJZRwACWUkAAllMAAJZTQACWU4AAllPAAJZUAACWVIAAllUAAJZVQACWVYAAllYAAJZWQACWZgAAlmaAAJZnQACWZ8AAlmiAAJZowACWaQAAlmlAAJZpgACWagAAlmqAAJZqwACWawAAlmuAAJZrwACWbgAAlm5AAJZuwACWfoAAln8AAJZ/gACWgAAAloDAAJaBAACWgUAAloGAAJaBwACWgkAAloLAAJaDAACWg0AAloPAAJaEAACWk8AAlpRAAJaVAACWlYAAlpZAAJaWgACWlsAAlpcAAJaXQACWl8AAlphAAJaYgACWmMAAlplAAJaZgACWm8AAlpwAAJacgACWrEAAlqzAAJatQACWrcAAlq6AAJauwACWrwAAlq9AAJavgACWsAAAlrCAAJawwACWsQAAlrGAAJaxwACWwYAAlsIAAJbCwACWw0AAlsQAAJbEQACWxIAAlsTAAJbFAACWxYAAlsYAAJbGQACWxoAAlscAAJbHQACWyoAAlsrAAJbLAACWy4AAlttAAJbbwACW3EAAltzAAJbdgACW3cAAlt4AAJbeQACW3oAAlt8AAJbfgACW38AAluAAAJbggACW4MAAlvCAAJbxAACW8YAAlvIAAJbywACW8wAAlvNAAJbzgACW88AAlvRAAJb0wACW9QAAlvVAAJb1wACW9gAAlvlAAJb7gACW/EAAlvzAAJb9gACW/kAAlwCAAJcBQACXAgAAlwLAAJcDgACXBAAAlwVAAJcGgACXB8AAlxqAAJcjQACXK0AAlzNAAJczwACXNEAAlzTAAJc1QACXNgAAlzZAAJc2gACXN0AAlzeAAJc4AACXOEAAlzjAAJc5gACXOcAAlzoAAJc6wACXOwAAlzxAAJc/gACXQMAAl0FAAJdBwACXQwAAl0PAAJdEgACXRQAAl05AAJdXQACXYQAAl2oAAJdqwACXa0AAl2vAAJdsQACXbMAAl21AAJdtgACXbkAAl3GAAJd1wACXdkAAl3bAAJd3QACXd8AAl3hAAJd4wACXeUAAl3nAAJd+AACXfsAAl3+AAJeAQACXgQAAl4HAAJeCgACXg0AAl4QAAJeEgACXlEAAl5TAAJeVQACXlcAAl5aAAJeWwACXlwAAl5dAAJeXgACXmAAAl5iAAJeYwACXmQAAl5mAAJeZwACXqYAAl6oAAJeqgACXqwAAl6vAAJesAACXrEAAl6yAAJeswACXrUAAl63AAJeuAACXrkAAl67AAJevAACXvsAAl79AAJfAAACXwIAAl8FAAJfBgACXwcAAl8IAAJfCQACXwsAAl8NAAJfDgACXw8AAl8RAAJfEgACXx8AAl8gAAJfIQACXyMAAl9iAAJfZAACX2YAAl9oAAJfawACX2wAAl9tAAJfbgACX28AAl9xAAJfcwACX3QAAl91AAJfdwACX3gAAl+3AAJfuQACX7sAAl+9AAJfwAACX8EAAl/CAAJfwwACX8QAAl/GAAJfyAACX8kAAl/KAAJfzAACX80AAmAMAAJgDgACYBAAAmASAAJgFQACYBYAAmAXAAJgGAACYBkAAmAbAAJgHQACYB4AAmAfAAJgIQACYCIAAmBhAAJgYwACYGUAAmBnAAJgagACYGsAAmBsAAJgbQACYG4AAmBwAAJgcgACYHMAAmB0AAJgdgACYHcAAmC2AAJguAACYLoAAmC8AAJgvwACYMAAAmDBAAJgwgACYMMAAmDFAAJgxwACYMgAAmDJAAJgywACYMwAAmDxAAJhFQACYTwAAmFgAAJhYwACYWUAAmFnAAJhaQACYWsAAmFtAAJhbgACYXEAAmF+AAJhjQACYY8AAmGRAAJhkwACYZUAAmGXAAJhmQACYZsAAmGqAAJhrQACYbAAAmGzAAJhtgACYbkAAmG8AAJhvwACYcEAAmIAAAJiAgACYgQAAmIGAAJiCQACYgoAAmILAAJiDAACYg0AAmIPAAJiEQACYhIAAmITAAJiFQACYhYAAmJVAAJiVwACYlkAAmJbAAJiXgACYl8AAmJgAAJiYQACYmIAAmJkAAJiZgACYmcAAmJoAAJiagACYmsAAmKqAAJirAACYq4AAmKwAAJiswACYrQAAmK1AAJitgACYrcAAmK5AAJiuwACYrwAAmK9AAJivwACYsAAAmL/AAJjAQACYwMAAmMFAAJjCAACYwkAAmMKAAJjCwACYwwAAmMOAAJjEAACYxEAAmMSAAJjFAACYxUAAmNUAAJjVgACY1gAAmNaAAJjXQACY14AAmNfAAJjYAACY2EAAmNjAAJjZQACY2YAAmNnAAJjaQACY2oAAmOpAAJjqwACY60AAmOvAAJjsgACY7MAAmO0AAJjtQACY7YAAmO4AAJjugACY7sAAmO8AAJjvgACY78AAmP+AAJkAAACZAMAAmQFAAJkCAACZAkAAmQKAAJkCwACZAwAAmQOAAJkEAACZBEAAmQSAAJkFAACZBUAAmRgAAJkgwACZKMAAmTDAAJkxQACZMcAAmTJAAJkywACZM4AAmTPAAJk0AACZNMAAmTUAAJk1gACZNcAAmTZAAJk2wACZNwAAmTdAAJk4AACZOEAAmTqAAJk9wACZPwAAmT+AAJlAAACZQUAAmUIAAJlCwACZQ0AAmUyAAJlVgACZX0AAmWhAAJlpAACZaYAAmWoAAJlqgACZawAAmWuAAJlrwACZbIAAmW/AAJl0AACZdIAAmXUAAJl1gACZdgAAmXaAAJl3AACZd4AAmXgAAJl8QACZfQAAmX3AAJl+gACZf0AAmYAAAJmAwACZgYAAmYJAAJmCwACZkoAAmZMAAJmTgACZlAAAmZTAAJmVAACZlUAAmZWAAJmVwACZlkAAmZbAAJmXAACZl0AAmZfAAJmYAACZp8AAmahAAJmowACZqUAAmaoAAJmqQACZqoAAmarAAJmrAACZq4AAmawAAJmsQACZrIAAma0AAJmtQACZvQAAmb2AAJm+QACZvsAAmb+AAJm/wACZwAAAmcBAAJnAgACZwQAAmcGAAJnBwACZwgAAmcKAAJnCwACZxgAAmcZAAJnGgACZxwAAmdbAAJnXQACZ18AAmdhAAJnZAACZ2UAAmdmAAJnZwACZ2gAAmdqAAJnbAACZ20AAmduAAJncAACZ3EAAmewAAJnsgACZ7QAAme2AAJnuQACZ7oAAme7AAJnvAACZ70AAme/AAJnwQACZ8IAAmfDAAJnxQACZ8YAAmgFAAJoBwACaAkAAmgLAAJoDgACaA8AAmgQAAJoEQACaBIAAmgUAAJoFgACaBcAAmgYAAJoGgACaBsAAmhaAAJoXAACaF4AAmhgAAJoYwACaGQAAmhlAAJoZgACaGcAAmhpAAJoawACaGwAAmhtAAJobwACaHAAAmivAAJosQACaLMAAmi1AAJouAACaLkAAmi6AAJouwACaLwAAmi+AAJowAACaMEAAmjCAAJoxAACaMUAAmjqAAJpDgACaTUAAmlZAAJpXAACaV4AAmlgAAJpYgACaWQAAmlmAAJpZwACaWoAAml3AAJphgACaYgAAmmKAAJpjAACaY4AAmmQAAJpkgACaZQAAmmjAAJppgACaakAAmmsAAJprwACabIAAmm1AAJpuAACaboAAmn5AAJp+wACaf4AAmoAAAJqAwACagQAAmoFAAJqBgACagcAAmoJAAJqCwACagwAAmoNAAJqDwACahAAAmpPAAJqUQACalMAAmpVAAJqWAACalkAAmpaAAJqWwACalwAAmpeAAJqYAACamEAAmpiAAJqZAACamUAAmqkAAJqpgACaqgAAmqqAAJqrQACaq4AAmqvAAJqsAACarEAAmqzAAJqtQACarYAAmq3AAJquQACaroAAmr5AAJq+wACav4AAmsAAAJrAwACawQAAmsFAAJrBgACawcAAmsJAAJrCwACawwAAmsNAAJrDwACaxAAAmtPAAJrUQACa1MAAmtVAAJrWAACa1kAAmtaAAJrWwACa1wAAmteAAJrYAACa2EAAmtiAAJrZAACa2UAAmukAAJrpgACa6gAAmuqAAJrrQACa64AAmuvAAJrsAACa7EAAmuzAAJrtQACa7YAAmu3AAJruQACa7oAAmv5AAJr+wACa/0AAmv/AAJsAgACbAMAAmwEAAJsBQACbAYAAmwIAAJsCgACbAsAAmwMAAJsDgACbA8AAmxaAAJsfQACbJ0AAmy9AAJsvwACbMEAAmzDAAJsxQACbMgAAmzJAAJsygACbM0AAmzOAAJs0AACbNEAAmzTAAJs1gACbNcAAmzYAAJs2wACbNwAAmzlAAJs8gACbPcAAmz5AAJs+wACbQAAAm0DAAJtBgACbQgAAm0tAAJtUQACbXgAAm2cAAJtnwACbaEAAm2jAAJtpQACbacAAm2pAAJtqgACba0AAm26AAJtywACbc0AAm3PAAJt0QACbdMAAm3VAAJt1wACbdkAAm3bAAJt7AACbe8AAm3yAAJt9QACbfgAAm37AAJt/gACbgEAAm4EAAJuBgACbkUAAm5HAAJuSQACbksAAm5OAAJuTwACblAAAm5RAAJuUgACblQAAm5WAAJuVwACblgAAm5aAAJuWwACbpoAAm6cAAJungACbqAAAm6jAAJupAACbqUAAm6mAAJupwACbqkAAm6rAAJurAACbq0AAm6vAAJusAACbu8AAm7xAAJu9AACbvYAAm75AAJu+gACbvsAAm78AAJu/QACbv8AAm8BAAJvAgACbwMAAm8FAAJvBgACbxMAAm8UAAJvFQACbxcAAm9WAAJvWAACb1oAAm9cAAJvXwACb2AAAm9hAAJvYgACb2MAAm9lAAJvZwACb2gAAm9pAAJvawACb2wAAm+rAAJvrQACb68AAm+xAAJvtAACb7UAAm+2AAJvtwACb7gAAm+6AAJvvAACb70AAm++AAJvwAACb8EAAnAAAAJwAgACcAQAAnAGAAJwCQACcAoAAnALAAJwDAACcA0AAnAPAAJwEQACcBIAAnATAAJwFQACcBYAAnBVAAJwVwACcFkAAnBbAAJwXgACcF8AAnBgAAJwYQACcGIAAnBkAAJwZgACcGcAAnBoAAJwagACcGsAAnCqAAJwrAACcK4AAnCwAAJwswACcLQAAnC1AAJwtgACcLcAAnC5AAJwuwACcLwAAnC9AAJwvwACcMAAAnDlAAJxCQACcTAAAnFUAAJxVwACcVkAAnFbAAJxXQACcV8AAnFhAAJxYgACcWUAAnFyAAJxgQACcYMAAnGFAAJxhwACcYkAAnGLAAJxjQACcY8AAnGeAAJxoQACcaQAAnGnAAJxqgACca0AAnGwAAJxswACcbUAAnH0AAJx9gACcfkAAnH7AAJx/gACcf8AAnIAAAJyAQACcgIAAnIEAAJyBgACcgcAAnIIAAJyCgACcgsAAnJKAAJyTAACck4AAnJQAAJyUwACclQAAnJVAAJyVgACclcAAnJZAAJyWwACclwAAnJdAAJyXwACcmAAAnKfAAJyoQACcqMAAnKlAAJyqAACcqkAAnKqAAJyqwACcqwAAnKuAAJysAACcrEAAnKyAAJytAACcrUAAnL0AAJy9gACcvkAAnL7AAJy/gACcv8AAnMAAAJzAQACcwIAAnMEAAJzBgACcwcAAnMIAAJzCgACcwsAAnNKAAJzTAACc04AAnNQAAJzUwACc1QAAnNVAAJzVgACc1cAAnNZAAJzWwACc1wAAnNdAAJzXwACc2AAAnOfAAJzoQACc6MAAnOlAAJzqAACc6kAAnOqAAJzqwACc6wAAnOuAAJzsAACc7EAAnOyAAJztAACc7UAAnP0AAJz9gACc/gAAnP6AAJz/QACc/4AAnP/AAJ0AAACdAEAAnQDAAJ0BQACdAYAAnQHAAJ0CQACdAoAAnRVAAJ0eAACdJgAAnS4AAJ0ugACdLwAAnS+AAJ0wAACdMMAAnTEAAJ0xQACdMgAAnTJAAJ0ywACdMwAAnTOAAJ00QACdNIAAnTTAAJ01gACdNcAAnTcAAJ06QACdO4AAnTwAAJ08gACdPcAAnT6AAJ0/QACdP8AAnUkAAJ1SAACdW8AAnWTAAJ1lgACdZgAAnWaAAJ1nAACdZ4AAnWgAAJ1oQACdaQAAnWxAAJ1wgACdcQAAnXGAAJ1yAACdcoAAnXMAAJ1zgACddAAAnXSAAJ14wACdeYAAnXpAAJ17AACde8AAnXyAAJ19QACdfgAAnX7AAJ1/QACdjwAAnY+AAJ2QAACdkIAAnZFAAJ2RgACdkcAAnZIAAJ2SQACdksAAnZNAAJ2TgACdk8AAnZRAAJ2UgACdpEAAnaTAAJ2lQACdpcAAnaaAAJ2mwACdpwAAnadAAJ2ngACdqAAAnaiAAJ2owACdqQAAnamAAJ2pwACduYAAnboAAJ26wACdu0AAnbwAAJ28QACdvIAAnbzAAJ29AACdvYAAnb4AAJ2+QACdvoAAnb8AAJ2/QACdwoAAncLAAJ3DAACdw4AAndNAAJ3TwACd1EAAndTAAJ3VgACd1cAAndYAAJ3WQACd1oAAndcAAJ3XgACd18AAndgAAJ3YgACd2MAAneiAAJ3pAACd6YAAneoAAJ3qwACd6wAAnetAAJ3rgACd68AAnexAAJ3swACd7QAAne1AAJ3twACd7gAAnf3AAJ3+QACd/sAAnf9AAJ4AAACeAEAAngCAAJ4AwACeAQAAngGAAJ4CAACeAkAAngKAAJ4DAACeA0AAnhMAAJ4TgACeFAAAnhSAAJ4VQACeFYAAnhXAAJ4WAACeFkAAnhbAAJ4XQACeF4AAnhfAAJ4YQACeGIAAnihAAJ4owACeKUAAninAAJ4qgACeKsAAnisAAJ4rQACeK4AAniwAAJ4sgACeLMAAni0AAJ4tgACeLcAAnjcAAJ5AAACeScAAnlLAAJ5TgACeVAAAnlSAAJ5VAACeVYAAnlYAAJ5WQACeVwAAnlpAAJ5eAACeXoAAnl8AAJ5fgACeYAAAnmCAAJ5hAACeYYAAnmVAAJ5mAACeZsAAnmeAAJ5oQACeaQAAnmnAAJ5qgACeawAAnnrAAJ57QACee8AAnnxAAJ59AACefUAAnn2AAJ59wACefgAAnn6AAJ5/AACef0AAnn+AAJ6AAACegEAAnpAAAJ6QgACekQAAnpGAAJ6SQACekoAAnpLAAJ6TAACek0AAnpPAAJ6UQACelIAAnpTAAJ6VQACelYAAnqVAAJ6lwACepkAAnqbAAJ6ngACep8AAnqgAAJ6oQACeqIAAnqkAAJ6pgACeqcAAnqoAAJ6qgACeqsAAnrqAAJ67AACeu4AAnrwAAJ68wACevQAAnr1AAJ69gACevcAAnr5AAJ6+wACevwAAnr9AAJ6/wACewAAAns/AAJ7QQACe0MAAntFAAJ7SAACe0kAAntKAAJ7SwACe0wAAntOAAJ7UAACe1EAAntSAAJ7VAACe1UAAnuUAAJ7lgACe5gAAnuaAAJ7nQACe54AAnufAAJ7oAACe6EAAnujAAJ7pQACe6YAAnunAAJ7qQACe6oAAnvpAAJ76wACe+0AAnvvAAJ78gACe/MAAnv0AAJ79QACe/YAAnv4AAJ7+gACe/sAAnv8AAJ7/gACe/8AAnwIAAJ8CQACfAsAAnxKAAJ8TAACfE4AAnxQAAJ8UwACfFQAAnxVAAJ8VgACfFcAAnxZAAJ8WwACfFwAAnxdAAJ8XwACfGAAAnyfAAJ8oQACfKMAAnylAAJ8qAACfKkAAnyqAAJ8qwACfKwAAnyuAAJ8sAACfLEAAnyyAAJ8tAACfLUAAnz0AAJ89gACfPkAAnz7AAJ8/gACfP8AAn0AAAJ9AQACfQIAAn0EAAJ9BgACfQcAAn0IAAJ9CgACfQsAAn1WAAJ9eQACfZkAAn25AAJ9uwACfb0AAn2/AAJ9wQACfcMAAn3EAAJ9xQACfcgAAn3JAAJ9ywACfcwAAn3OAAJ90AACfdEAAn3SAAJ91QACfdYAAn3bAAJ96AACfe0AAn3vAAJ98QACffYAAn35AAJ9/AACff4AAn4jAAJ+RwACfm4AAn6SAAJ+lQACfpcAAn6ZAAJ+mwACfp0AAn6fAAJ+oAACfqMAAn6wAAJ+wQACfsMAAn7FAAJ+xwACfskAAn7LAAJ+zQACfs8AAn7RAAJ+4gACfuUAAn7oAAJ+6wACfu4AAn7xAAJ+9AACfvcAAn76AAJ+/AACfzsAAn89AAJ/PwACf0EAAn9EAAJ/RQACf0YAAn9HAAJ/SAACf0oAAn9MAAJ/TQACf04AAn9QAAJ/UQACf5AAAn+SAAJ/lAACf5YAAn+ZAAJ/mgACf5sAAn+cAAJ/nQACf58AAn+hAAJ/ogACf6MAAn+lAAJ/pgACf+UAAn/nAAJ/6gACf+wAAn/vAAJ/8AACf/EAAn/yAAJ/8wACf/UAAn/3AAJ/+AACf/kAAn/7AAJ//AACgAkAAoAKAAKACwACgA0AAoBMAAKATgACgFAAAoBSAAKAVQACgFYAAoBXAAKAWAACgFkAAoBbAAKAXQACgF4AAoBfAAKAYQACgGIAAoChAAKAowACgKUAAoCnAAKAqgACgKsAAoCsAAKArQACgK4AAoCwAAKAsgACgLMAAoC0AAKAtgACgLcAAoD2AAKA+AACgPoAAoD8AAKA/wACgQAAAoEBAAKBAgACgQMAAoEFAAKBBwACgQgAAoEJAAKBCwACgQwAAoFLAAKBTQACgU8AAoFRAAKBVAACgVUAAoFWAAKBVwACgVgAAoFaAAKBXAACgV0AAoFeAAKBYAACgWEAAoGgAAKBogACgaQAAoGmAAKBqQACgaoAAoGrAAKBrAACga0AAoGvAAKBsQACgbIAAoGzAAKBtQACgbYAAoHbAAKB/wACgiYAAoJKAAKCTQACgk8AAoJRAAKCUwACglUAAoJXAAKCWAACglsAAoJoAAKCdwACgnkAAoJ7AAKCfQACgn8AAoKBAAKCgwACgoUAAoKUAAKClwACgpoAAoKdAAKCoAACgqMAAoKmAAKCqQACgqsAAoLqAAKC7AACgu8AAoLxAAKC9AACgvUAAoL2AAKC9wACgvgAAoL6AAKC/AACgv0AAoL+AAKDAAACgwEAAoNAAAKDQgACg0QAAoNGAAKDSQACg0oAAoNLAAKDTAACg00AAoNPAAKDUQACg1IAAoNTAAKDVQACg1YAAoOVAAKDlwACg5kAAoObAAKDngACg58AAoOgAAKDoQACg6IAAoOkAAKDpgACg6cAAoOoAAKDqgACg6sAAoPqAAKD7AACg+8AAoPxAAKD9AACg/UAAoP2AAKD9wACg/gAAoP6AAKD/AACg/0AAoP+AAKEAAAChAEAAoRAAAKEQgAChEQAAoRGAAKESQAChEoAAoRLAAKETAAChE0AAoRPAAKEUQAChFIAAoRTAAKEVQAChFYAAoSVAAKElwAChJkAAoSbAAKEngAChJ8AAoSgAAKEoQAChKIAAoSkAAKEpgAChKcAAoSoAAKEqgAChKsAAoTqAAKE7AAChO4AAoTwAAKE8wAChPQAAoT1AAKE9gAChPcAAoT5AAKE+wAChPwAAoT9AAKE/wAChQAAAoVLAAKFbgAChY4AAoWuAAKFsAAChbIAAoW0AAKFtgAChbgAAoW5AAKFugAChb0AAoW+AAKFwAAChcEAAoXDAAKFxQAChcYAAoXHAAKFygAChcsAAoXQAAKF3QACheIAAoXkAAKF5gAChesAAoXuAAKF8QAChfMAAoYYAAKGPAAChmMAAoaHAAKGigAChowAAoaOAAKGkAAChpIAAoaUAAKGlQAChpgAAoalAAKGtgAChrgAAoa6AAKGvAAChr4AAobAAAKGwgAChsQAAobGAAKG1wAChtoAAobdAAKG4AAChuMAAobmAAKG6QAChuwAAobvAAKG8QAChzAAAocyAAKHNAAChzYAAoc5AAKHOgAChzsAAoc8AAKHPQAChz8AAodBAAKHQgACh0MAAodFAAKHRgACh4UAAoeHAAKHiQACh4sAAoeOAAKHjwACh5AAAoeRAAKHkgACh5QAAoeWAAKHlwACh5gAAoeaAAKHmwACh9oAAofcAAKH3wACh+EAAofkAAKH5QACh+YAAofnAAKH6AACh+oAAofsAAKH7QACh+4AAofwAAKH8QACh/4AAof/AAKIAAACiAIAAohBAAKIQwACiEUAAohHAAKISgACiEsAAohMAAKITQACiE4AAohQAAKIUgACiFMAAohUAAKIVgACiFcAAoiWAAKImAACiJoAAoicAAKInwACiKAAAoihAAKIogACiKMAAoilAAKIpwACiKgAAoipAAKIqwACiKwAAojrAAKI7QACiO8AAojxAAKI9AACiPUAAoj2AAKI9wACiPgAAoj6AAKI/AACiP0AAoj+AAKJAAACiQEAAolAAAKJQgACiUQAAolGAAKJSQACiUoAAolLAAKJTAACiU0AAolPAAKJUQACiVIAAolTAAKJVQACiVYAAomVAAKJlwACiZkAAombAAKJngACiZ8AAomgAAKJoQACiaIAAomkAAKJpgACiacAAomoAAKJqgACiasAAonQAAKJ9AACihsAAoo/AAKKQgACikQAAopGAAKKSAACikoAAopMAAKKTQACilAAAopdAAKKbAACim4AAopwAAKKcgACinQAAop2AAKKeAACinoAAoqJAAKKjAACio8AAoqSAAKKlQACipgAAoqbAAKKngACiqAAAorfAAKK4QACiuMAAorlAAKK6AACiukAAorqAAKK6wACiuwAAoruAAKK8AACivEAAoryAAKK9AACivUAAos0AAKLNgACizgAAos6AAKLPQACiz4AAos/AAKLQAACi0EAAotDAAKLRQACi0YAAotHAAKLSQACi0oAAouJAAKLiwACi40AAouPAAKLkgACi5MAAouUAAKLlQACi5YAAouYAAKLmgACi5sAAoucAAKLngACi58AAoveAAKL4AACi+IAAovkAAKL5wACi+gAAovpAAKL6gACi+sAAovtAAKL7wACi/AAAovxAAKL8wACi/QAAowzAAKMNQACjDcAAow5AAKMPAACjD0AAow+AAKMPwACjEAAAoxCAAKMRAACjEUAAoxGAAKMSAACjEkAAoyIAAKMigACjIwAAoyOAAKMkQACjJIAAoyTAAKMlAACjJUAAoyXAAKMmQACjJoAAoybAAKMnQACjJ4AAozdAAKM3wACjOEAAozjAAKM5gACjOcAAozoAAKM6QACjOoAAozsAAKM7gACjO8AAozwAAKM8gACjPMAAoz8AAKM/QACjP8AAo0IAAKNDQACjRAAAo0TAAKNFQACjTIAAo08AAKNRQACjUgAAo1KAAKNTQACjVAAAo1TAAKNVQACjZgAAo28AAKN4AACjgMAAo4qAAKOSgACjnEAAo6YAAKOuAACjtwAAo8AAAKPAgACjwUAAo8HAAKPCQACjwsAAo8OAAKPEQACjxMAAo8VAAKPGAACjxoAAo8cAAKPHwACjyIAAo8jAAKPLAACjzkAAo88AAKPPgACj0EAAo9EAAKPRgACj2sAAo+PAAKPtgACj9oAAo/dAAKP3wACj+EAAo/jAAKP5QACj+cAAo/oAAKP6wACj/gAApALAAKQDQACkA8AApARAAKQEwACkBUAApAXAAKQGQACkBsAApAdAAKQMAACkDMAApA2AAKQOQACkDwAApA/AAKQQgACkEUAApBIAAKQSwACkE0AApCMAAKQjgACkJEAApCTAAKQlgACkJcAApCYAAKQmQACkJoAApCcAAKQngACkJ8AApCgAAKQogACkKMAApCsAAKQrQACkK8AApDuAAKQ8AACkPIAApD0AAKQ9wACkPgAApD5AAKQ+gACkPsAApD9AAKQ/wACkQAAApEBAAKRAwACkQQAApFDAAKRRQACkUgAApFKAAKRTQACkU4AApFPAAKRUAACkVEAApFTAAKRVQACkVYAApFXAAKRWQACkVoAApFjAAKRZAACkWYAApGlAAKRpwACkakAApGrAAKRrgACka8AApGwAAKRsQACkbIAApG0AAKRtgACkbcAApG4AAKRugACkbsAApH6AAKR/AACkf8AApIBAAKSBAACkgUAApIGAAKSBwACkggAApIKAAKSDAACkg0AApIOAAKSEAACkhEAApIaAAKSGwACkh0AApJcAAKSXgACkmAAApJiAAKSZQACkmYAApJnAAKSaAACkmkAApJrAAKSbQACkm4AApJvAAKScQACknIAApKxAAKSswACkrYAApK4AAKSuwACkrwAApK9AAKSvgACkr8AApLBAAKSwwACksQAApLFAAKSxwACksgAApLVAAKS1gACktcAApLZAAKTGAACkxoAApMcAAKTHgACkyEAApMiAAKTIwACkyQAApMlAAKTJwACkykAApMqAAKTKwACky0AApMuAAKTbQACk28AApNxAAKTcwACk3YAApN3AAKTeAACk3kAApN6AAKTfAACk34AApN/AAKTgAACk4IAApODAAKTkAACk5MAApOWAAKTmQACk5wAApOeAAKTpwACk/IAApQVAAKUNQAClFUAApRXAAKUWQAClFsAApRdAAKUYAAClGEAApRiAAKUZQAClGYAApRoAAKUaQAClGsAApRuAAKUbwAClHAAApRzAAKUdAAClH0AApSKAAKUjwAClJEAApSTAAKUmAAClJsAApSeAAKUoAAClMUAApTpAAKVEAAClTQAApU3AAKVOQAClTsAApU9AAKVPwAClUEAApVCAAKVRQAClVIAApVjAAKVZQAClWcAApVpAAKVawAClW0AApVvAAKVcQAClXMAApWEAAKVhwAClYoAApWNAAKVkAAClZMAApWWAAKVmQAClZwAApWeAAKV3QACld8AApXhAAKV4wACleYAApXnAAKV6AAClekAApXqAAKV7AACle4AApXvAAKV8AAClfIAApXzAAKWMgACljQAApY2AAKWOAACljsAApY8AAKWPQAClj4AApY/AAKWQQAClkMAApZEAAKWRQAClkcAApZIAAKWhwAClokAApaMAAKWjgAClpEAApaSAAKWkwAClpQAApaVAAKWlwAClpkAApaaAAKWmwAClp0AApaeAAKWqwAClqwAApatAAKWrwAClu4AApbwAAKW8gAClvQAApb3AAKW+AAClvkAApb6AAKW+wAClv0AApb/AAKXAAAClwEAApcDAAKXBAACl0MAApdFAAKXRwACl0kAApdMAAKXTQACl04AApdPAAKXUAACl1IAApdUAAKXVQACl1YAApdYAAKXWQACl5gAApeaAAKXnAACl54AApehAAKXogACl6MAApekAAKXpQACl6cAApepAAKXqgACl6sAApetAAKXrgACl+0AApfvAAKX8QACl/MAApf2AAKX9wACl/gAApf5AAKX+gACl/wAApf+AAKX/wACmAAAApgCAAKYAwACmEIAAphEAAKYRgACmEgAAphLAAKYTAACmE0AAphOAAKYTwACmFEAAphTAAKYVAACmFUAAphXAAKYWAACmH0AApihAAKYyAACmOwAApjvAAKY8QACmPMAApj1AAKY9wACmPkAApj6AAKY/QACmQoAApkZAAKZGwACmR0AApkfAAKZIQACmSMAApklAAKZJwACmTYAApk5AAKZPAACmT8AAplCAAKZRQACmUgAAplLAAKZTQACmYwAApmOAAKZkAACmZIAApmVAAKZlgACmZcAApmYAAKZmQACmZsAApmdAAKZngACmZ8AApmhAAKZogACmeEAApnjAAKZ5QACmecAApnqAAKZ6wACmewAApntAAKZ7gACmfAAApnyAAKZ8wACmfQAApn2AAKZ9wACmjYAApo4AAKaOgACmjwAApo/AAKaQAACmkEAAppCAAKaQwACmkUAAppHAAKaSAACmkkAAppLAAKaTAACmosAApqNAAKakAACmpIAApqVAAKalgACmpcAApqYAAKamQACmpsAApqdAAKangACmp8AApqhAAKaogACmuUAApsJAAKbLQACm1AAApt3AAKblwACm74AApvlAAKcBQACnCkAApxNAAKcTwACnFIAApxUAAKcVgACnFgAApxbAAKcXgACnGAAApxiAAKcZQACnGcAApxpAAKcbAACnG8AApxwAAKcdQACnIIAApyFAAKchwACnIoAApyNAAKcjwACnLQAApzYAAKc/wACnSMAAp0mAAKdKAACnSoAAp0sAAKdLgACnTAAAp0xAAKdNAACnUEAAp1UAAKdVgACnVgAAp1aAAKdXAACnV4AAp1gAAKdYgACnWQAAp1mAAKdeQACnXwAAp1/AAKdggACnYUAAp2IAAKdiwACnY4AAp2RAAKdlAACnZYAAp3VAAKd1wACndoAAp3cAAKd3wACneAAAp3hAAKd4gACneMAAp3lAAKd5wACnegAAp3pAAKd6wACnewAAp31AAKd9gACnfgAAp43AAKeOQACnjsAAp49AAKeQAACnkEAAp5CAAKeQwACnkQAAp5GAAKeSAACnkkAAp5KAAKeTAACnk0AAp6MAAKejgACnpEAAp6TAAKelgACnpcAAp6YAAKemQACnpoAAp6cAAKengACnp8AAp6gAAKeogACnqMAAp6sAAKerQACnq8AAp7uAAKe8AACnvIAAp70AAKe9wACnvgAAp75AAKe+gACnvsAAp79AAKe/wACnwAAAp8BAAKfAwACnwQAAp9DAAKfRQACn0gAAp9KAAKfTQACn04AAp9PAAKfUAACn1EAAp9TAAKfVQACn1YAAp9XAAKfWQACn1oAAp9jAAKfZAACn2YAAp+lAAKfpwACn6kAAp+rAAKfrgACn68AAp+wAAKfsQACn7IAAp+0AAKftgACn7cAAp+4AAKfugACn7sAAp/6AAKf/AACn/8AAqABAAKgBAACoAUAAqAGAAKgBwACoAgAAqAKAAKgDAACoA0AAqAOAAKgEAACoBEAAqAeAAKgHwACoCAAAqAiAAKgYQACoGMAAqBlAAKgZwACoGoAAqBrAAKgbAACoG0AAqBuAAKgcAACoHIAAqBzAAKgdAACoHYAAqB3AAKgtgACoLgAAqC6AAKgvAACoL8AAqDAAAKgwQACoMIAAqDDAAKgxQACoMcAAqDIAAKgyQACoMsAAqDMAAKg2QACoOQAAqDmAAKg6QACoOsAAqDuAAKg8QACoPwAAqD/AAKhAgACoQUAAqEIAAKhCwACoQ0AAqETAAKhGAACoR4AAqFpAAKhjAACoawAAqHMAAKhzgACodAAAqHSAAKh1AACodcAAqHYAAKh2QACodwAAqHdAAKh3wACoeAAAqHiAAKh5AACoeUAAqHmAAKh6QACoeoAAqHvAAKh/AACogEAAqIDAAKiBQACogoAAqINAAKiEAACohIAAqI3AAKiWwACooIAAqKmAAKiqQACoqsAAqKtAAKirwACorEAAqKzAAKitAACorcAAqLEAAKi1QACotcAAqLZAAKi2wACot0AAqLfAAKi4QACouMAAqLlAAKi9gACovkAAqL8AAKi/wACowIAAqMFAAKjCAACowsAAqMOAAKjEAACo08AAqNRAAKjUwACo1UAAqNYAAKjWQACo1oAAqNbAAKjXAACo14AAqNgAAKjYQACo2IAAqNkAAKjZQACo6QAAqOmAAKjqAACo6oAAqOtAAKjrgACo68AAqOwAAKjsQACo7MAAqO1AAKjtgACo7cAAqO5AAKjugACo/kAAqP7AAKj/gACpAAAAqQDAAKkBAACpAUAAqQGAAKkBwACpAkAAqQLAAKkDAACpA0AAqQPAAKkEAACpB0AAqQeAAKkHwACpCEAAqRgAAKkYgACpGQAAqRmAAKkaQACpGoAAqRrAAKkbAACpG0AAqRvAAKkcQACpHIAAqRzAAKkdQACpHYAAqS1AAKktwACpLkAAqS7AAKkvgACpL8AAqTAAAKkwQACpMIAAqTEAAKkxgACpMcAAqTIAAKkygACpMsAAqUKAAKlDAACpQ4AAqUQAAKlEwACpRQAAqUVAAKlFgACpRcAAqUZAAKlGwACpRwAAqUdAAKlHwACpSAAAqVfAAKlYQACpWMAAqVlAAKlaAACpWkAAqVqAAKlawACpWwAAqVuAAKlcAACpXEAAqVyAAKldAACpXUAAqW0AAKltgACpbgAAqW6AAKlvQACpb4AAqW/AAKlwAACpcEAAqXDAAKlxQACpcYAAqXHAAKlyQACpcoAAqXvAAKmEwACpjoAAqZeAAKmYQACpmMAAqZlAAKmZwACpmkAAqZrAAKmbAACpm8AAqZ8AAKmiwACpo0AAqaPAAKmkQACppMAAqaVAAKmlwACppkAAqaoAAKmqwACpq4AAqaxAAKmtAACprcAAqa6AAKmvQACpr8AAqb+AAKnAAACpwMAAqcFAAKnCAACpwkAAqcKAAKnCwACpwwAAqcOAAKnEAACpxEAAqcSAAKnFAACpxUAAqdUAAKnVgACp1gAAqdaAAKnXQACp14AAqdfAAKnYAACp2EAAqdjAAKnZQACp2YAAqdnAAKnaQACp2oAAqepAAKnqwACp60AAqevAAKnsgACp7MAAqe0AAKntQACp7YAAqe4AAKnugACp7sAAqe8AAKnvgACp78AAqf+AAKoAAACqAMAAqgFAAKoCAACqAkAAqgKAAKoCwACqAwAAqgOAAKoEAACqBEAAqgSAAKoFAACqBUAAqhUAAKoVgACqFgAAqhaAAKoXQACqF4AAqhfAAKoYAACqGEAAqhjAAKoZQACqGYAAqhnAAKoaQACqGoAAqipAAKoqwACqK0AAqivAAKosgACqLMAAqi0AAKotQACqLYAAqi4AAKougACqLsAAqi8AAKovgACqL8AAqj+AAKpAAACqQIAAqkEAAKpBwACqQgAAqkJAAKpCgACqQsAAqkNAAKpDwACqRAAAqkRAAKpEwACqRQAAqlfAAKpggACqaIAAqnCAAKpxAACqcYAAqnIAAKpygACqc0AAqnOAAKpzwACqdIAAqnTAAKp1QACqdYAAqnYAAKp2wACqdwAAqndAAKp4AACqeEAAqnmAAKp8wACqfgAAqn6AAKp/AACqgEAAqoEAAKqBwACqgkAAqouAAKqUgACqnkAAqqdAAKqoAACqqIAAqqkAAKqpgACqqgAAqqqAAKqqwACqq4AAqq7AAKqzAACqs4AAqrQAAKq0gACqtQAAqrWAAKq2AACqtoAAqrcAAKq7QACqvAAAqrzAAKq9gACqvkAAqr8AAKq/wACqwIAAqsFAAKrBwACq0YAAqtIAAKrSgACq0wAAqtPAAKrUAACq1EAAqtSAAKrUwACq1UAAqtXAAKrWAACq1kAAqtbAAKrXAACq5sAAqudAAKrnwACq6EAAqukAAKrpQACq6YAAqunAAKrqAACq6oAAqusAAKrrQACq64AAquwAAKrsQACq/AAAqvyAAKr9QACq/cAAqv6AAKr+wACq/wAAqv9AAKr/gACrAAAAqwCAAKsAwACrAQAAqwGAAKsBwACrBQAAqwVAAKsFgACrBgAAqxXAAKsWQACrFsAAqxdAAKsYAACrGEAAqxiAAKsYwACrGQAAqxmAAKsaAACrGkAAqxqAAKsbAACrG0AAqysAAKsrgACrLAAAqyyAAKstQACrLYAAqy3AAKsuAACrLkAAqy7AAKsvQACrL4AAqy/AAKswQACrMIAAq0BAAKtAwACrQUAAq0HAAKtCgACrQsAAq0MAAKtDQACrQ4AAq0QAAKtEgACrRMAAq0UAAKtFgACrRcAAq1WAAKtWAACrVoAAq1cAAKtXwACrWAAAq1hAAKtYgACrWMAAq1lAAKtZwACrWgAAq1pAAKtawACrWwAAq2rAAKtrQACra8AAq2xAAKttAACrbUAAq22AAKttwACrbgAAq26AAKtvAACrb0AAq2+AAKtwAACrcEAAq3mAAKuCgACrjEAAq5VAAKuWAACrloAAq5cAAKuXgACrmAAAq5iAAKuYwACrmYAAq5zAAKuggACroQAAq6GAAKuiAACrooAAq6MAAKujgACrpAAAq6fAAKuogACrqUAAq6oAAKuqwACrq4AAq6xAAKutAACrrYAAq71AAKu9wACrvoAAq78AAKu/wACrwAAAq8BAAKvAgACrwMAAq8FAAKvBwACrwgAAq8JAAKvCwACrwwAAq9LAAKvTQACr08AAq9RAAKvVAACr1UAAq9WAAKvVwACr1gAAq9aAAKvXAACr10AAq9eAAKvYAACr2EAAq+gAAKvogACr6QAAq+mAAKvqQACr6oAAq+rAAKvrAACr60AAq+vAAKvsQACr7IAAq+zAAKvtQACr7YAAq/1AAKv9wACr/oAAq/8AAKv/wACsAAAArABAAKwAgACsAMAArAFAAKwBwACsAgAArAJAAKwCwACsAwAArBLAAKwTQACsE8AArBRAAKwVAACsFUAArBWAAKwVwACsFgAArBaAAKwXAACsF0AArBeAAKwYAACsGEAArCgAAKwogACsKQAArCmAAKwqQACsKoAArCrAAKwrAACsK0AArCvAAKwsQACsLIAArCzAAKwtQACsLYAArD1AAKw9wACsPkAArD7AAKw/gACsP8AArEAAAKxAQACsQIAArEEAAKxBgACsQcAArEIAAKxCgACsQsAArFWAAKxeQACsZkAArG5AAKxuwACsb0AArG/AAKxwQACscQAArHFAAKxxgACsckAArHKAAKxzAACsc0AArHPAAKx0QACsdIAArHTAAKx1gACsdcAArHgAAKx7QACsfIAArH0AAKx9gACsfsAArH+AAKyAQACsgMAArIoAAKyTAACsnMAArKXAAKymgACspwAArKeAAKyoAACsqIAArKkAAKypQACsqgAArK1AAKyxgACssgAArLKAAKyzAACss4AArLQAAKy0gACstQAArLWAAKy5wACsuoAArLtAAKy8AACsvMAArL2AAKy+QACsvwAArL/AAKzAQACs0AAArNCAAKzRAACs0YAArNJAAKzSgACs0sAArNMAAKzTQACs08AArNRAAKzUgACs1MAArNVAAKzVgACs5UAArOXAAKzmQACs5sAArOeAAKznwACs6AAArOhAAKzogACs6QAArOmAAKzpwACs6gAArOqAAKzqwACs+oAArPsAAKz7wACs/EAArP0AAKz9QACs/YAArP3AAKz+AACs/oAArP8AAKz/QACs/4AArQAAAK0AQACtA4AArQPAAK0EAACtBIAArRRAAK0UwACtFUAArRXAAK0WgACtFsAArRcAAK0XQACtF4AArRgAAK0YgACtGMAArRkAAK0ZgACtGcAArSmAAK0qAACtKoAArSsAAK0rwACtLAAArSxAAK0sgACtLMAArS1AAK0twACtLgAArS5AAK0uwACtLwAArT7AAK0/QACtP8AArUBAAK1BAACtQUAArUGAAK1BwACtQgAArUKAAK1DAACtQ0AArUOAAK1EAACtREAArVQAAK1UgACtVQAArVWAAK1WQACtVoAArVbAAK1XAACtV0AArVfAAK1YQACtWIAArVjAAK1ZQACtWYAArWlAAK1pwACtakAArWrAAK1rgACta8AArWwAAK1sQACtbIAArW0AAK1tgACtbcAArW4AAK1ugACtbsAArXgAAK2BAACtisAArZPAAK2UgACtlQAArZWAAK2WAACtloAArZcAAK2XQACtmAAArZtAAK2fAACtn4AAraAAAK2ggACtoQAAraGAAK2iAACtooAAraZAAK2nAACtp8AAraiAAK2pQACtqgAArarAAK2rgACtrAAArbvAAK28QACtvMAArb1AAK2+AACtvkAArb6AAK2+wACtvwAArb+AAK3AAACtwEAArcCAAK3BAACtwUAArdEAAK3RgACt0gAArdKAAK3TQACt04AArdPAAK3UAACt1EAArdTAAK3VQACt1YAArdXAAK3WQACt1oAAreZAAK3mwACt50AArefAAK3ogACt6MAArekAAK3pQACt6YAAreoAAK3qgACt6sAAresAAK3rgACt68AArfuAAK38AACt/IAArf0AAK39wACt/gAArf5AAK3+gACt/sAArf9AAK3/wACuAAAArgBAAK4AwACuAQAArhDAAK4RQACuEcAArhJAAK4TAACuE0AArhOAAK4TwACuFAAArhSAAK4VAACuFUAArhWAAK4WAACuFkAAriYAAK4mgACuJwAArieAAK4oQACuKIAArijAAK4pAACuKUAArinAAK4qQACuKoAArirAAK4rQACuK4AArjtAAK47wACuPEAArjzAAK49gACuPcAArj4AAK4+QACuPoAArj8AAK4/gACuP8AArkAAAK5AgACuQMAArlOAAK5cQACuZEAArmxAAK5swACubUAArm3AAK5uQACubwAArm9AAK5vgACucEAArnCAAK5xAACucUAArnHAAK5ygACucsAArnMAAK5zwACudAAArnVAAK54gACuecAArnpAAK56wACufAAArnzAAK59gACufgAArodAAK6QQACumgAArqMAAK6jwACupEAArqTAAK6lQACupcAArqZAAK6mgACup0AArqqAAK6uwACur0AArq/AAK6wQACusMAArrFAAK6xwACuskAArrLAAK63AACut8AArriAAK65QACuugAArrrAAK67gACuvEAArr0AAK69gACuzUAArs3AAK7OQACuzsAArs+AAK7PwACu0AAArtBAAK7QgACu0QAArtGAAK7RwACu0gAArtKAAK7SwACu4oAAruMAAK7jgACu5AAAruTAAK7lAACu5UAAruWAAK7lwACu5kAArubAAK7nAACu50AArufAAK7oAACu98AArvhAAK75AACu+YAArvpAAK76gACu+sAArvsAAK77QACu+8AArvxAAK78gACu/MAArv1AAK79gACvAMAArwEAAK8BQACvAcAArxGAAK8SAACvEoAArxMAAK8TwACvFAAArxRAAK8UgACvFMAArxVAAK8VwACvFgAArxZAAK8WwACvFwAArybAAK8nQACvJ8AAryhAAK8pAACvKUAArymAAK8pwACvKgAAryqAAK8rAACvK0AAryuAAK8sAACvLEAArzwAAK88gACvPQAArz2AAK8+QACvPoAArz7AAK8/AACvP0AArz/AAK9AQACvQIAAr0DAAK9BQACvQYAAr1FAAK9RwACvUkAAr1LAAK9TgACvU8AAr1QAAK9UQACvVIAAr1UAAK9VgACvVcAAr1YAAK9WgACvVsAAr2aAAK9nAACvZ4AAr2gAAK9owACvaQAAr2lAAK9pgACvacAAr2pAAK9qwACvawAAr2tAAK9rwACvbAAAr3VAAK9+QACviAAAr5EAAK+RwACvkkAAr5LAAK+TQACvk8AAr5RAAK+UgACvlUAAr5iAAK+cQACvnMAAr51AAK+dwACvnkAAr57AAK+fQACvn8AAr6OAAK+kQACvpQAAr6XAAK+mgACvp0AAr6gAAK+owACvqUAAr7kAAK+5gACvugAAr7qAAK+7QACvu4AAr7vAAK+8AACvvEAAr7zAAK+9QACvvYAAr73AAK++QACvvoAAr85AAK/OwACvz0AAr8/AAK/QgACv0MAAr9EAAK/RQACv0YAAr9IAAK/SgACv0sAAr9MAAK/TgACv08AAr+OAAK/kAACv5IAAr+UAAK/lwACv5gAAr+ZAAK/mgACv5sAAr+dAAK/nwACv6AAAr+hAAK/owACv6QAAr/jAAK/5QACv+gAAr/qAAK/7QACv+4AAr/vAAK/8AACv/EAAr/zAAK/9QACv/YAAr/3AAK/+QACv/oAAsA5AALAOwACwD0AAsA/AALAQgACwEMAAsBEAALARQACwEYAAsBIAALASgACwEsAAsBMAALATgACwE8AAsCOAALAkAACwJIAAsCUAALAlwACwJgAAsCZAALAmgACwJsAAsCdAALAnwACwKAAAsChAALAowACwKQAAsDjAALA5QACwOgAAsDqAALA7QACwO4AAsDvAALA8AACwPEAAsDzAALA9QACwPYAAsD3AALA+QACwPoAAsFFAALBaAACwYgAAsGoAALBqgACwawAAsGuAALBsAACwbMAAsG0AALBtQACwbgAAsG5AALBuwACwbwAAsG+AALBwQACwcIAAsHDAALBxgACwccAAsHMAALB2QACwd4AAsHgAALB4gACwecAAsHqAALB7QACwe8AAsIUAALCOAACwl8AAsKDAALChgACwogAAsKKAALCjAACwo4AAsKQAALCkQACwpQAAsKhAALCsgACwrQAAsK2AALCuAACwroAAsK8AALCvgACwsAAAsLCAALC0wACwtYAAsLZAALC3AACwt8AAsLiAALC5QACwugAAsLrAALC7QACwywAAsMuAALDMAACwzIAAsM1AALDNgACwzcAAsM4AALDOQACwzsAAsM9AALDPgACwz8AAsNBAALDQgACw4EAAsODAALDhQACw4cAAsOKAALDiwACw4wAAsONAALDjgACw5AAAsOSAALDkwACw5QAAsOWAALDlwACw9YAAsPYAALD2wACw90AAsPgAALD4QACw+IAAsPjAALD5AACw+YAAsPoAALD6QACw+oAAsPsAALD7QACw/oAAsP7AALD/AACw/4AAsQ9AALEPwACxEEAAsRDAALERgACxEcAAsRIAALESQACxEoAAsRMAALETgACxE8AAsRQAALEUgACxFMAAsSSAALElAACxJYAAsSYAALEmwACxJwAAsSdAALEngACxJ8AAsShAALEowACxKQAAsSlAALEpwACxKgAAsTnAALE6QACxOsAAsTtAALE8AACxPEAAsTyAALE8wACxPQAAsT2AALE+AACxPkAAsT6AALE/AACxP0AAsU8AALFPgACxUAAAsVCAALFRQACxUYAAsVHAALFSAACxUkAAsVLAALFTQACxU4AAsVPAALFUQACxVIAAsWRAALFkwACxZUAAsWXAALFmgACxZsAAsWcAALFnQACxZ4AAsWgAALFogACxaMAAsWkAALFpgACxacAAsXMAALF8AACxhcAAsY7AALGPgACxkAAAsZCAALGRAACxkYAAsZIAALGSQACxkwAAsZZAALGaAACxmoAAsZsAALGbgACxnAAAsZyAALGdAACxnYAAsaFAALGiAACxosAAsaOAALGkQACxpQAAsaXAALGmgACxpwAAsbbAALG3QACxuAAAsbiAALG5QACxuYAAsbnAALG6AACxukAAsbrAALG7QACxu4AAsbvAALG8QACxvIAAscxAALHMwACxzUAAsc3AALHOgACxzsAAsc8AALHPQACxz4AAsdAAALHQgACx0MAAsdEAALHRgACx0cAAseGAALHiAACx4oAAseMAALHjwACx5AAAseRAALHkgACx5MAAseVAALHlwACx5gAAseZAALHmwACx5wAAsfbAALH3QACx+AAAsfiAALH5QACx+YAAsfnAALH6AACx+kAAsfrAALH7QACx+4AAsfvAALH8QACx/IAAsgxAALIMwACyDUAAsg3AALIOgACyDsAAsg8AALIPQACyD4AAshAAALIQgACyEMAAshEAALIRgACyEcAAsiGAALIiAACyIoAAsiMAALIjwACyJAAAsiRAALIkgACyJMAAsiVAALIlwACyJgAAsiZAALImwACyJwAAsjbAALI3QACyN8AAsjhAALI5AACyOUAAsjmAALI5wACyOgAAsjqAALI7AACyO0AAsjuAALI8AACyPEAAsj6AALI+wACyP0AAsk8AALJPgACyUAAAslCAALJRQACyUYAAslHAALJSAACyUkAAslLAALJTQACyU4AAslPAALJUQACyVIAAsmRAALJkwACyZUAAsmXAALJmgACyZsAAsmcAALJnQACyZ4AAsmgAALJogACyaMAAsmkAALJpgACyacAAsnmAALJ6AACyesAAsntAALJ8AACyfEAAsnyAALJ8wACyfQAAsn2AALJ+AACyfkAAsn6AALJ/AACyf0AAsoGAALKCQACygwAAsoOAALKEwACyhwAAso1AALKPgACylcAAspuAALKgAACyp0AAsqgAALKogACyqQAAsqmAALKqQACyqsAAsqwAALK7wACyvEAAsrzAALK9QACyvcAAsr4AALK+QACyvoAAsr7AALK/QACyv8AAssAAALLAQACywMAAssEAALLQwACy0UAAstHAALLSQACy0sAAstMAALLTQACy04AAstPAALLUQACy1MAAstUAALLVQACy1cAAstYAALLlwACy5kAAsubAALLnQACy58AAsugAALLoQACy6IAAsujAALLpQACy6cAAsuoAALLqQACy6sAAsusAALLtQACy7gAAsu7AALLvQACzAAAAswkAALMSAACzGsAAsySAALMsgACzNkAAs0AAALNIAACzUQAAs1oAALNagACzW0AAs1vAALNcQACzXMAAs12AALNeQACzXsAAs19AALNgAACzYIAAs2EAALNhwACzYoAAs2LAALNkAACzZ0AAs2gAALNogACzaUAAs2oAALNqgACzc8AAs3zAALOGgACzj4AAs5BAALOQwACzkUAAs5HAALOSQACzksAAs5MAALOTwACzlwAAs5vAALOcQACznMAAs51AALOdwACznkAAs57AALOfQACzn8AAs6BAALOlAACzpcAAs6aAALOnQACzqAAAs6jAALOpgACzqkAAs6sAALOrwACzrEAAs7wAALO8gACzvUAAs73AALO+gACzvsAAs78AALO/QACzv4AAs8AAALPAgACzwMAAs8EAALPBgACzwcAAs8QAALPEQACzxMAAs9SAALPVAACz1YAAs9YAALPWwACz1wAAs9dAALPXgACz18AAs9hAALPYwACz2QAAs9lAALPZwACz2gAAs+nAALPqQACz6wAAs+uAALPsQACz7IAAs+zAALPtAACz7UAAs+3AALPuQACz7oAAs+7AALPvQACz74AAs/HAALPyAACz8oAAtAJAALQCwAC0A0AAtAPAALQEgAC0BMAAtAUAALQFQAC0BYAAtAYAALQGgAC0BsAAtAcAALQHgAC0B8AAtBeAALQYAAC0GMAAtBlAALQaAAC0GkAAtBqAALQawAC0GwAAtBuAALQcAAC0HEAAtByAALQdAAC0HUAAtB+AALQfwAC0IEAAtDAAALQwgAC0MQAAtDGAALQyQAC0MoAAtDLAALQzAAC0M0AAtDPAALQ0QAC0NIAAtDTAALQ1QAC0NYAAtEVAALRFwAC0RoAAtEcAALRHwAC0SAAAtEhAALRIgAC0SMAAtElAALRJwAC0SgAAtEpAALRKwAC0SwAAtE5AALROgAC0TsAAtE9AALRfAAC0X4AAtGAAALRggAC0YUAAtGGAALRhwAC0YgAAtGJAALRiwAC0Y0AAtGOAALRjwAC0ZEAAtGSAALR0QAC0dMAAtHVAALR1wAC0doAAtHbAALR3AAC0d0AAtHeAALR4AAC0eIAAtHjAALR5AAC0eYAAtHnAALR9AAC0f0AAtIAAALSAwAC0gUAAtIIAALSEQAC0hQAAtIXAALSGgAC0h0AAtIfAALSJQAC0jcAAtJEAALSjwAC0rIAAtLSAALS8gAC0vQAAtL2AALS+AAC0voAAtL9AALS/gAC0v8AAtMCAALTAwAC0wUAAtMGAALTCAAC0wsAAtMMAALTDQAC0xAAAtMRAALTFgAC0yMAAtMoAALTKgAC0ywAAtMxAALTNAAC0zcAAtM5AALTXgAC04IAAtOpAALTzQAC09AAAtPSAALT1AAC09YAAtPYAALT2gAC09sAAtPeAALT6wAC0/wAAtP+AALUAAAC1AIAAtQEAALUBgAC1AgAAtQKAALUDAAC1B0AAtQgAALUIwAC1CYAAtQpAALULAAC1C8AAtQyAALUNQAC1DcAAtR2AALUeAAC1HoAAtR8AALUfwAC1IAAAtSBAALUggAC1IMAAtSFAALUhwAC1IgAAtSJAALUiwAC1IwAAtTLAALUzQAC1M8AAtTRAALU1AAC1NUAAtTWAALU1wAC1NgAAtTaAALU3AAC1N0AAtTeAALU4AAC1OEAAtUgAALVIgAC1SUAAtUnAALVKgAC1SsAAtUsAALVLQAC1S4AAtUwAALVMgAC1TMAAtU0AALVNgAC1TcAAtVEAALVRQAC1UYAAtVIAALVhwAC1YkAAtWLAALVjQAC1ZAAAtWRAALVkgAC1ZMAAtWUAALVlgAC1ZgAAtWZAALVmgAC1ZwAAtWdAALV3AAC1d4AAtXgAALV4gAC1eUAAtXmAALV5wAC1egAAtXpAALV6wAC1e0AAtXuAALV7wAC1fEAAtXyAALWMQAC1jMAAtY1AALWNwAC1joAAtY7AALWPAAC1j0AAtY+AALWQAAC1kIAAtZDAALWRAAC1kYAAtZHAALWhgAC1ogAAtaKAALWjAAC1o8AAtaQAALWkQAC1pIAAtaTAALWlQAC1pcAAtaYAALWmQAC1psAAtacAALW2wAC1t0AAtbfAALW4QAC1uQAAtblAALW5gAC1ucAAtboAALW6gAC1uwAAtbtAALW7gAC1vAAAtbxAALXFgAC1zoAAtdhAALXhQAC14gAAteKAALXjAAC144AAteQAALXkgAC15MAAteWAALXowAC17IAAte0AALXtgAC17gAAte6AALXvAAC174AAtfAAALXzwAC19IAAtfVAALX2AAC19sAAtfeAALX4QAC1+QAAtfmAALYJQAC2CcAAtgpAALYKwAC2C4AAtgvAALYMAAC2DEAAtgyAALYNAAC2DYAAtg3AALYOAAC2DoAAtg7AALYegAC2HwAAth+AALYgAAC2IMAAtiEAALYhQAC2IYAAtiHAALYiQAC2IsAAtiMAALYjQAC2I8AAtiQAALYzwAC2NEAAtjTAALY1QAC2NgAAtjZAALY2gAC2NsAAtjcAALY3gAC2OAAAtjhAALY4gAC2OQAAtjlAALZJAAC2SYAAtkoAALZKgAC2S0AAtkuAALZLwAC2TAAAtkxAALZMwAC2TUAAtk2AALZNwAC2TkAAtk6AALZeQAC2XsAAtl9AALZfwAC2YIAAtmDAALZhAAC2YUAAtmGAALZiAAC2YoAAtmLAALZjAAC2Y4AAtmPAALZzgAC2dAAAtnSAALZ1AAC2dcAAtnYAALZ2QAC2doAAtnbAALZ3QAC2d8AAtngAALZ4QAC2eMAAtnkAALaIwAC2iUAAtonAALaKQAC2iwAAtotAALaLgAC2i8AAtowAALaMgAC2jQAAto1AALaNgAC2jgAAto5AALahAAC2qcAAtrHAALa5wAC2ukAAtrrAALa7QAC2u8AAtryAALa8wAC2vQAAtr3AALa+AAC2vo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AAuYfAALmIQAC5iQAAuYlAALmJgAC5icAAuYoAALmKgAC5iwAAuYtAALmLgAC5jAAAuYxAALmcAAC5nIAAuZ0AALmdgAC5nkAAuZ6AALmewAC5nwAAuZ9AALmfwAC5oEAAuaCAALmgwAC5oUAAuaGAALmxQAC5scAAubJAALmywAC5s4AAubPAALm0AAC5tEAAubSAALm1AAC5tYAAubXAALm2AAC5toAAubbAALnAAAC5yQAAudLAALnbwAC53IAAud0AALndgAC53gAAud6AALnfAAC530AAueAAALnjQAC55wAAueeAALnoAAC56IAAuekAALnpgAC56gAAueqAALnuQAC57wAAue/AALnwgAC58UAAufIAALnywAC584AAufQAALoDwAC6BEAAugTAALoFQAC6BgAAugZAALoGgAC6BsAAugcAALoHgAC6CAAAughAALoIgAC6CQAAuglAALoZAAC6GYAAuhoAALoagAC6G0AAuhuAALobwAC6HAAAuhxAALocwAC6HUAAuh2AALodwAC6HkAAuh6AALouQAC6LsAAui9AALovwAC6MIAAujDAALoxAAC6MUAAujGAALoyAAC6MoAAujLAALozAAC6M4AAujPAALpDgAC6RAAAukSAALpFAAC6RcAAukYAALpGQAC6RoAAukbAALpHQAC6R8AAukgAALpIQAC6SMAAukkAALpYwAC6WUAAulnAALpaQAC6WwAAultAALpbgAC6W8AAulwAALpcgAC6XQAAul1AALpdgAC6XgAAul5AALpuAAC6boAAum8AALpvgAC6cEAAunCAALpwwAC6cQAAunFAALpxwAC6ckAAunKAALpywAC6c0AAunOAALqDQAC6g8AAuoRAALqEwAC6hYAAuoXAALqGAAC6hkAAuoaAALqHAAC6h4AAuofAALqIAAC6iIAAuojAALqbgAC6pEAAuqxAALq0QAC6tMAAurVAALq1wAC6tkAAurcAALq3QAC6t4AAurhAALq4gAC6uQAAurlAALq5wAC6uoAAurrAALq7AAC6u8AAurwAALq9QAC6wIAAusHAALrCQAC6wsAAusQAALrEwAC6xYAAusYAALrPQAC62EAAuuIAALrrAAC668AAuuxAALrswAC67UAAuu3AALruQAC67oAAuu9AALrygAC69sAAuvdAALr3wAC6+EAAuvjAALr5QAC6+cAAuvpAALr6wAC6/wAAuv/AALsAgAC7AUAAuwIAALsCwAC7A4AAuwRAALsFAAC7BYAAuxVAALsVwAC7FkAAuxbAALsXgAC7F8AAuxgAALsYQAC7GIAAuxkAALsZgAC7GcAAuxoAALsagAC7GsAAuyqAALsrAAC7K4AAuywAALsswAC7LQAAuy1AALstgAC7LcAAuy5AALsuwAC7LwAAuy9AALsvwAC7MAAAuz/AALtAQAC7QQAAu0GAALtCQAC7QoAAu0LAALtDAAC7Q0AAu0PAALtEQAC7RIAAu0TAALtFQAC7RYAAu0jAALtJAAC7SUAAu0nAALtZgAC7WgAAu1qAALtbAAC7W8AAu1wAALtcQAC7XIAAu1zAALtdQAC7XcAAu14AALteQAC7XsAAu18AALtuwAC7b0AAu2/AALtwQAC7cQAAu3FAALtxgAC7ccAAu3IAALtygAC7cwAAu3NAALtzgAC7dAAAu3RAALuEAAC7hIAAu4UAALuFgAC7hkAAu4aAALuGwAC7hwAAu4dAALuHwAC7iEAAu4iAALuIwAC7iUAAu4mAALuZQAC7mcAAu5pAALuawAC7m4AAu5vAALucAAC7nEAAu5yAALudAAC7nYAAu53AALueAAC7noAAu57AALuugAC7rwAAu6+AALuwAAC7sMAAu7EAALuxQAC7sYAAu7HAALuyQAC7ssAAu7MAALuzQAC7s8AAu7QAALu9QAC7xkAAu9AAALvZAAC72cAAu9pAALvawAC720AAu9vAALvcQAC73IAAu91AALvggAC75EAAu+TAALvlQAC75cAAu+ZAALvmwAC750AAu+fAALvrgAC77EAAu+0AALvtwAC77oAAu+9AALvwAAC78MAAu/FAALwBAAC8AYAAvAIAALwCgAC8A0AAvAOAALwDwAC8BAAAvARAALwEwAC8BUAAvAWAALwFwAC8BkAAvAaAALwWQAC8FsAAvBdAALwXwAC8GIAAvBjAALwZAAC8GUAAvBmAALwaAAC8GoAAvBrAALwbAAC8G4AAvBvAALwrgAC8LAAAvCyAALwtAAC8LcAAvC4AALwuQAC8LoAAvC7AALwvQAC8L8AAvDAAALwwQAC8MMAAvDEAALxAwAC8QUAAvEIAALxCgAC8Q0AAvEOAALxDwAC8RAAAvERAALxEwAC8RUAAvEWAALxFwAC8RkAAvEaAALxWQAC8VsAAvFdAALxXwAC8WIAAvFjAALxZAAC8WUAAvFmAALxaAAC8WoAAvFrAALxbAAC8W4AAvFvAALxrgAC8bAAAvGyAALxtAAC8bcAAvG4AALxuQAC8boAAvG7AALxvQAC8b8AAvHAAALxwQAC8cMAAvHEAALyAwAC8gUAAvIHAALyCQAC8gwAAvINAALyDgAC8g8AAvIQAALyEgAC8hQAAvIVAALyFgAC8hgAAvIZAALyIgAC8iMAAvIlAALyaAAC8owAAvKwAALy0wAC8voAAvMaAALzQQAC82gAAvOIAALzrAAC89AAAvPSAALz1QAC89cAAvPZAALz2wAC894AAvPhAALz4wAC8+UAAvPoAALz6gAC8+wAAvPvAALz8gAC8/MAAvP8AAL0CQAC9AwAAvQOAAL0EQAC9BQAAvQWAAL0OwAC9F8AAvSGAAL0qgAC9K0AAvSvAAL0sQAC9LMAAvS1AAL0twAC9LgAAvS7AAL0yAAC9NsAAvTdAAL03wAC9OEAAvTjAAL05QAC9OcAAvTpAAL06wAC9O0AAvUAAAL1AwAC9QYAAvUJAAL1DAAC9Q8AAvUSAAL1FQAC9RgAAvUbAAL1HQAC9VwAAvVeAAL1YQAC9WMAAvVmAAL1ZwAC9WgAAvVpAAL1agAC9WwAAvVuAAL1bwAC9XAAAvVyAAL1cwAC9XwAAvV9AAL1fwAC9b4AAvXAAAL1wgAC9cQAAvXHAAL1yAAC9ckAAvXKAAL1ywAC9c0AAvXPAAL10AAC9dEAAvXTAAL11AAC9hMAAvYVAAL2GAAC9hoAAvYdAAL2HgAC9h8AAvYgAAL2IQAC9iMAAvYlAAL2JgAC9icAAvYpAAL2KgAC9jMAAvY0AAL2NgAC9nUAAvZ3AAL2eQAC9nsAAvZ+AAL2fwAC9oAAAvaBAAL2ggAC9oQAAvaGAAL2hwAC9ogAAvaKAAL2iwAC9soAAvbMAAL2zwAC9tEAAvbUAAL21QAC9tYAAvbXAAL22AAC9toAAvbcAAL23QAC9t4AAvbgAAL24QAC9uoAAvbrAAL27QAC9ywAAvcuAAL3MAAC9zIAAvc1AAL3NgAC9zcAAvc4AAL3OQAC9zsAAvc9AAL3PgAC9z8AAvdBAAL3QgAC94EAAveDAAL3hgAC94gAAveLAAL3jAAC940AAveOAAL3jwAC95EAAveTAAL3lAAC95UAAveXAAL3mAAC96UAAvemAAL3pwAC96kAAvfoAAL36gAC9+wAAvfuAAL38QAC9/IAAvfzAAL39AAC9/UAAvf3AAL3+QAC9/oAAvf7AAL3/QAC9/4AAvg9AAL4PwAC+EIAAvhEAAL4RwAC+EgAAvhJAAL4SgAC+EsAAvhNAAL4TwAC+FAAAvhRAAL4UwAC+FQAAvhjAAL4cAAC+HUAAvh4AAL4ewAC+IAAAviDAAL4hgAC+IgAAviNAAL42AAC+PsAAvkbAAL5OwAC+T0AAvk/AAL5QQAC+UMAAvlGAAL5RwAC+UgAAvlLAAL5TAAC+U4AAvlPAAL5UQAC+VQAAvlVAAL5VgAC+VkAAvlaAAL5XwAC+WwAAvlxAAL5cwAC+XUAAvl6AAL5fQAC+YAAAvmCAAL5pwAC+csAAvnyAAL6FgAC+hkAAvobAAL6HQAC+h8AAvohAAL6IwAC+iQAAvonAAL6NAAC+kUAAvpHAAL6SQAC+ksAAvpNAAL6TwAC+lEAAvpTAAL6VQAC+mYAAvppAAL6bAAC+m8AAvpyAAL6dQAC+ngAAvp7AAL6fgAC+oAAAvq/AAL6wQAC+sMAAvrFAAL6yAAC+skAAvrKAAL6ywAC+swAAvrOAAL60AAC+tEAAvrSAAL61AAC+tUAAvsUAAL7FgAC+xgAAvsaAAL7HQAC+x4AAvsfAAL7IAAC+yEAAvsjAAL7JQAC+yYAAvsnAAL7KQAC+yoAAvtpAAL7awAC+24AAvtwAAL7cwAC+3QAAvt1AAL7dgAC+3cAAvt5AAL7ewAC+3wAAvt9AAL7fwAC+4AAAvuNAAL7jgAC+48AAvuRAAL70AAC+9IAAvvUAAL71gAC+9kAAvvaAAL72wAC+9wAAvvdAAL73wAC++EAAvviAAL74wAC++UAAvvmAAL8JQAC/CcAAvwpAAL8KwAC/C4AAvwvAAL8MAAC/DEAAvwyAAL8NAAC/DYAAvw3AAL8OAAC/DoAAvw7AAL8egAC/HwAAvx+AAL8gAAC/IMAAvyEAAL8hQAC/IYAAvyHAAL8iQAC/IsAAvyMAAL8jQAC/I8AAvyQAAL8zwAC/NEAAvzTAAL81QAC/NgAAvzZAAL82gAC/NsAAvzcAAL83gAC/OAAAvzhAAL84gAC/OQAAvzlAAL9JAAC/SY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 + + - - 1 - hardcoverBook - + + id + - lightSecondarySystemBackgroundHex - + index + - - lightPrimaryHex - + + Chapter + Undefined + 2 + Chapter + 1 + + + - lightTertiarySystemFillHex - + isFinished + - - lightQuaternarySystemFillHex - + + Book + Undefined + 6 + Book + 1 + + + - lightSystemGroupedBackgroundHex - + orderRank + - lightSecondarySystemFillHex - + isFinished + - status - + currentTime + - + + Theme + Undefined + 4 + Theme 1 - library - + + + - + + Bookmark + Undefined + 10 + Bookmark 1 - currentTheme - + + + - + + Account + Undefined + 5 + Account 1 - extractedThemes - + + + - - 1 - items - + + originalFileName + - title - + providerName + - - 1 - lastPlayedItem - + + syncStatus + - hostId - + type + - lastSyncedAt - + darkSystemFillHex + - providerId - + darkTertiarySystemBackgroundHex + - syncStatus - + id + - - 1 - library - + + title + - - Bookmark - Undefined - 8 - Bookmark - 1 - - - + + lastSyncedAt + - - HardcoverBook - Undefined - 6 - HardcoverBook + 1 - - - + lastPlayed + - - Book - Undefined - 3 - Book - 1 - - - + + speed + - darkTertiarySystemFillHex - + type + - - uuid - + + 1 + items + - - details - + + 1 + library + - type - + percentCompleted + - index - + speed + - - remoteURL - + + 1 + externalResources + - - Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 11.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 -cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEIMwALAAwAGQA1ADYANwBRAFIAUwBUAFUAVgBXAFgAWQBaAFsAdgB3AHgAfgB/AIsAoQCiAKMApAClAKYApwCoAKkAqgDDAMYAzQDTAOIA4wDyAPUBBAETARYAdQEmATUBOQE9AUwBUgFTAVsBagFzAXkBegGPAZABmAGZAZoBpgG6AbsBvAG9Ab4BvwHAAcEBwgHRAeAB7wHzAgICEQISAiECMAIxAkACTAJeAl8CYAJhAmICYwJkAmUALwJ0AoMChAKTAqICxALFAssC1wLtAvwC/wMOAx0DIAMvAz4DQQNQA18DYwNyA4EDggOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPXA9gD4APsBAAEDwQeBC0EMQRABE8EXgRtBHwEiASaBKkEuATHBNYE5QT0BQMFCwUgBSEFKQUqBTYFSgVZBWgFdwV7BYoFmQWoBbcFxgXSBeQF5QXmBecF6AXpBeoF6wX6BgkGGAYnBigGNwZGBlUGXQZyBnMGewaHBpsGqga5BsgGzAbbBuoG+QcIBxcHIwc1B0QHUwdUB2MHcgeMB40HkwefB7UHxAfHB9YH5QfoB/cIBggJCBgIJwgrCDoISQhKCFwIXQheCF8IYAhhCGIIdwh4CIAIjAigCK8IvgjNCNEI4AjvCP4JDQkcCSgJOglJCUoJWQloCXcJeAmHCZYJpQm6CbsJwwnPCeMJ8goBChAKFAojCjIKQQpQCl8Kawp9CowKmwqqCrkKyArXCuYK+wr8CwQLEAskCzMLQgtRC1ULZAtzC4ILkQugC6wLvgvNC9wL6wv6C/sMCgwZDCgMPQw+DEYMUgxmDHUMhAyTDJcMpgy1DMQM0wziDO4NAA0PDR4NLQ08DUsNWg1pDX4Nfw2HDZMNpw22DcUN1A3YDecN9g4FDhQOIw4vDkEOUA5fDm4OfQ6MDpsOqg6/DsAOyA7UDugO9w8GDxUPGQ8oDzcPRg9VD2QPcA+CD5EPoA+vD74Pvw/OD90P7BABEAIQChAWECoQORBIEFcQWxBqEHkQiBCXEKYQshDEENMQ4hDxEQARDxEeES0RLhExEToRSRFYEWcRfBF9EYURkRGlEbQRwxHSEdYR5RH0EgMSEhIhEi0SPxJOEk8SXhJtEnwSfRKMEpsSqhK/EsASyBLUEugS9xMGExUTGRMoEzcTRhNVE2QTcBOCE5EToBOvE74TzRPcE+sUABQBFAkUFRQpFDgURxRWFFoUaRR4FIcUlhSlFLEUwxTSFOEU8BT/FQ4VHRUsFUEVQhVKFVYVahV5FYgVlxWbFaoVuRXIFdcV5hXyFgQWExYUFiMWMhZBFkIWURZgFm8WhBaFFo0WmRatFrwWyxbaFt4W7Rb8FwsXGhcpFzUXRxdWF2UXdBeDF5IXoRewF8UXxhfOF9oX7hf9GAwYGxgfGC4YPRhMGFsYahh2GIgYlximGLUYxBjTGOIY8RkGGQcZDxkbGS8ZPhlNGVwZYBlvGX4ZjRmcGasZtxnJGdgZ5xn2GgUaBhoVGiQaMxpIGkkaURpdGnEagBqPGp4aohqxGsAazxreGu0a+RsLGxobKRs4G0cbYRtiG2gbdBuKG5kbnBurG7obvRvMG9sb3hvtG/wcABwPHB4cKhwrHCwcLRxCHEMcSxxXHGscehyJHJgcnByrHLocyRzYHOcc8x0FHRQdIx0yHUEdUB1fHW4dgx2EHYwdmB2sHbsdyh3ZHd0d7B37HgoeGR4oHjQeRh5VHmQecx6CHpEeoB6vHsQexR7NHtke7R78HwsfGh8eHy0fPB9LH1ofaR91H4cflh+lH7Qfwx/SH+Ef8CAFIAYgDiAaIC4gPSBMIFsgXyBuIH0gjCCbIKogtiDIINcg5iD1IQQhHiEfISUhMSFHIVYhWSFoIWkheCF7IYohmSGcIashuiG+Ic0h3CIWIhciGCIZIhoiGyIcIh0iHiIfIiAiISIiIiMiJCIlIiYiJyIoIikiKiIrIiwiLSIuIi8iRCJFIk0iWSJtInwiiyKaIp4irSK8Issi2iLbIuoi9iMIIxcjJiM1I0QjUyNiI3EjhiOHI48jmyOvI74jzSPcI+Aj7yP+JA0kHCQrJDckSSRYJGckdiSFJJQkoySyJMckyCTQJNwk8CT/JQ4lHSUhJTAlPyVOJV0lbCV4JYolmSWoJbclxiXVJeQl8yYIJgkmESYdJjEmQCZPJl4mYiZxJoAmjyaeJp8mria6Jswm2ybqJvknCCcXJyYnNSdKJ0snUydfJ3MngieRJ6AnpCezJ8In0SfgJ+8n+ygNKBwoKyg6KEkoWChnKHYoiyiMKJQooCi0KMMo0ijh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WJVYqlirWLNYv1jTWOJY8VkAWQRZE1kiWTFZQFlPWVtZbVl8WYtZmlmpWbhZx1nWWetZ7Fn0WgBaFFojWjJaQVpFWlRaY1pyWoFakFqcWq5avVrMWtta6lr5WwhbF1ssWy1bNVtBW1VbZFtzW4JbhluVW6Rbs1vCW9Fb3VvvW/5cDVwcXCtcOlxJXFhcbVxuXHZcglyWXKVctFzDXMdc1lzlXPRdA10SXR5dMF0/XU5dXV1sXXtdil2ZXa5dr123XcNd113mXfVeBF4IXhdeJl41XkReU15fXnFegF6PXp5erV68Xste2l7dXuxe+18KXw5fD18VXxxfHV8sXztfSl9OX2hfaV9vX3tfkV+gX6Nfsl/BX8Rf01/iX+Vf9GADYAdgFmAlYDFgMmAzYDRgSWBKYFJgXmByYIFgkGCfYKNgsmDBYNBg32DuYPphDGEbYSphOWFIYVdhZmF1YYphi2GTYZ9hs2HCYdFh4GHkYfNiAmIRYiBiL2I7Yk1iXGJrYnpiiWKYYqditmLLYsxi1GLgYvRjA2MSYyFjJWM0Y0NjUmNhY3BjfGOOY51jrGO7Y8pj2WPoY/dkDGQNZBVkIWQ1ZERkU2RiZGZkdWSEZJNkomSxZL1kz2TeZO1k/GULZRplKWU4ZTtlVWVWZVxlaGV+ZY1lkGWfZa5lsWXAZc9l0mXhZfBl9GYDZhJmE2YbZhxmMWYyZjpmRmZaZmlmeGaHZotmmmapZrhmx2bWZuJm9GcDZxJnIWcwZz9nTmddZ3Jnc2d7Z4dnm2eqZ7lnyGfMZ9tn6mf5aAhoF2gjaDVoRGhTaGJocWiAaI9onmihaKVoqWitaLVouGi8aL1VJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCDKAAIEIL4EIMIEIMd4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEILYEIK4ABgASAAIEILIEILhAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEUAUFdOUy5rZXlzWk5TLm9iamVjdHOqADsAPAA9AD4APwBAAEEAQgBDAESABoAHgAiACYAKgAuADIANgA6AD6oARgBHAEgASQBKAEsATABNAE4AT4AQgNeBBraBBg+BBt6AYYEHdIEH54ECVoECxYAvVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbVdBY2NvdW50XlBsYXliYWNrUmVjb3JkV0xpYnJhcnlVVGhlbWXfEBAAXABdAF4AXwAfAGAAYQAhAGIAYwAOACMAZABlACYAZgBnAGgAJwAnABMAbABtAC8AJwBnAHAAOwBnAHMAdAB1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gBKANoAEgASAAoATgQGWgASAEoEBmIAGgBKBB3OAEQgS1//+FVdvcmRlcmVk0wA4ADkADgB5AHsAUKEAeoAUoQB8gBWAL15YRF9QU3RlcmVvdHlwZdkAHwAjAIAADgAmAIEAIQBmAIIARgB6AGcAhgAVACcALwB1AIpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAEIAUgBKANYAAgAQIgBbTADgAOQAOAIwAlgBQqQCNAI4AjwCQAJEAkgCTAJQAlYAXgBiAGYAagBuAHIAdgB6AH6kAlwCYAJkAmgCbAJwAnQCeAJ+AIIAkgCaAKIApgCuALYAwgDSAL18QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAZWERfUFNLX2ZldGNoUmVxdWVzdHNBcnJheV8QEVhEX1BTS19pc0Fic3RyYWN0XxAPWERfUFNLX3VzZXJJbmZvXxATWERfUFNLX2NsYXNzTWFwcGluZ18QFlhEX1BTS19lbnRpdHlDbGFzc05hbWXfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQC2ABUAfAB1AHUAdQAvAHUAvQCNAHUAdQAVAHVVX3R5cGVYX2RlZmF1bHRcX2Fzc29jaWF0aW9uW19pc1JlYWRPbmx5WV9pc1N0YXRpY1lfaXNVbmlxdWVaX2lzRGVyaXZlZFpfaXNPcmRlcmVkXF9pc0NvbXBvc2l0ZVdfaXNMZWFmgACAIYAAgBUICAgIgCOAFwgIgAAI0gA5AA4AxADFoIAi0gDHAMgAyQDKWiRjbGFzc25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjAMkAywDMV05TQXJyYXlYTlNPYmplY3TSAMcAyADOAM9fEBBYRFVNTFByb3BlcnR5SW1wpADQANEA0gDMXxAQWERVTUxQcm9wZXJ0eUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUA1QAVAHwAdQB1AHUALwB1AL0AjgB1AHUAFQB1gACAJYAAgBUICAgIgCOAGAgIgAAIWlBsYXlsaXN0VjPfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQDlABUAfAB1AHUAdQAvAHUAvQCPAHUAdQAVAHWAAIAngACAFQgICAiAI4AZCAiAAAjSADkADgDzAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABUAfAB1AHUAdQAvAHUAvQCQAHUAdQAVAHWAAIAAgACAFQgICAiAI4AaCAiAAAjfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEGABUAfAB1AHUAdQAvAHUAvQCRAHUAdQAVAHWAAIAqgACAFQgICAiAI4AbCAiAAAjSADkADgEUAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQEYABUAfAB1AHUAdQAvAHUAvQCSAHUAdQAVAHWAAIAsgACAFQgICAiAI4AcCAiAAAgI3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABUBKAAVAHwAdQB1AHUALwB1AL0AkwB1AHUAFQB1gACALoAAgBUICAgIgCOAHQgIgAAI0wA4ADkADgE2ATcAUKCggC/SAMcAyAE6ATtfEBNOU011dGFibGVEaWN0aW9uYXJ5owE6ATwAzFxOU0RpY3Rpb25hcnnfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQE/ABUAfAB1AHUAdQAvAHUAvQCUAHUAdQAVAHWAAIAxgACAFQgICAiAI4AeCAiAAAjWACMADgAmAGYAHwAhAU0BTgAVAHUAFQAvgDKAM4AACIAAXxAUWERHZW5lcmljUmVjb3JkQ2xhc3PSAMcAyAFUAVVdWERVTUxDbGFzc0ltcKYBVgFXAVgBWQFaAMxdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQA7ABUAfAB1AHUAdQAvAHUAvQCVAHUAdQAVAHWAAIAGgACAFQgICAiAI4AfCAiAAAjSAMcAyAFrAWxfEBJYRFVNTFN0ZXJlb3R5cGVJbXCnAW0BbgFvAXABcQFyAMxfEBJYRFVNTFN0ZXJlb3R5cGVJbXBdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDTADgAOQAOAXQBdgBQoQF1gDehAXeAOIAvVWl0ZW1z3xASAKsArACtAXsAHwCvALABfAAhAK4BfQCxAA4AIwCyALMAJgC0ABUAFQAVACcARgB1AHUBhQAvAHUAZwB1AYkBdQB1AHUBjQB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAEAgIgDoIgBIIgKCANwgIgDkIEraNFeTTADgAOQAOAZEBlABQogGSAZOAO4A8ogGVAZaAPYBSgC9fEBJYRF9QUHJvcFN0ZXJlb3R5cGVfEBBYRF9QUl9TdGVyZW90eXBl2QAfACMBmwAOACYBnAAhAGYBnQF3AZIAZwCGABUAJwAvAHUBpV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYA4gDuAEoA1gACABAiAPtMAOAA5AA4BpwGwAFCoAagBqQGqAasBrAGtAa4Br4A/gECAQYBCgEOARIBFgEaoAbEBsgGzAbQBtQG2AbcBuIBHgEiASYBLgEyAToBPgFGAL18QG1hEX1BQU0tfaXNTdG9yZWRJblRydXRoRmlsZV8QG1hEX1BQU0tfdmVyc2lvbkhhc2hNb2RpZmllcl8Q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eF8QHmRhcmtTeXN0ZW1Hcm91cGVkQmFja2dyb3VuZEhleF8QIGRhcmtTZWNvbmRhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAYbGlnaHRTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAQZGFya1NlcGFyYXRvckhleF8QEWRhcmtTeXN0ZW1GaWxsSGV4XxAabGlnaHRUZXJ0aWFyeVN5c3RlbUZpbGxIZXhebGlnaHRBY2NlbnRIZXhfEBFsaWdodFNlcGFyYXRvckhleF8QEmxpZ2h0U3lzdGVtRmlsbEhleF8QD2xpZ2h0UHJpbWFyeUhleF5kYXJrUHJpbWFyeUhleF8QF2RhcmtTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAZZGFya1RlcnRpYXJ5U3lzdGVtRmlsbEhleF8QG2xpZ2h0U2Vjb25kYXJ5U3lzdGVtRmlsbEhleFhzZWxlY3RlZF1kYXJrQWNjZW50SGV4XxAgbGlnaHRUZXJ0aWFyeVN5c3RlbUJhY2tncm91bmRIZXhfEB9saWdodFN5c3RlbUdyb3VwZWRCYWNrZ3JvdW5kSGV43xASAKsArACtIjAAHwCvALAiMQAhAK4iMgCxAA4AIwCyALMAJgC0ABUAFQAVACcATwB1AHUiOgAvAHUAZwB1BRoh3gB1AHUiQgB1XxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAsUICIEC9AiAEgiAwYEC2QgIgQLzCBKq7Q8g0wA4ADkADiJGIkkAUKIBkgUkgDuApKIiSiJLgQL1gQMBgC/ZAB8AIyJOAA4AJiJPACEAZiJQIfoBkgBnAIYAFQAnAC8AdSJYXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQLygDuAEoA1gACABAiBAvbTADgAOQAOIloiYwBQqAGoAakBqgGrAawBrQGuAa+AP4BAgEGAQoBDgESARYBGqCJkImUiZiJnImgiaSJq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ACcAJwATTR4AbQAvACcAZwBwAD4AZ00lTSYAdV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZYASgQYhgASABIACgQYRgQGWgASAEoEBmIAJgBKBBoGBBhAIEkDOVkLTADgAOQAOTSpNLABQoQB6gBShTS2BBhKAL9kAHwAjTTAADgAmTTEAIQBmTTIASQB6AGcAhgAVACcALwB1TTpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBBg+AFIASgDWAAIAECIEGE9MAOAA5AA5NPE1GAFCpAI0AjgCPAJAAkQCSAJMAlACVgBeAGIAZgBqAG4AcgB2AHoAfqU1HTUhNSU1KTUtNTE1NTU5NT4EGFIEGFoEGF4EGGYEGGoEGHIEGHYEGH4EGIIAv3xAPAKsArACtAB8ArgCvALAAIQCxAA4AIwCyALMAJgC0ABVNUwAVTS0AdQB1AHUALwB1AL0AjQB1AHUAFQB1gACBBhWAAIEGEggICAiAI4AXCAiAAAjSADkADk1hAMWggCLfEA8AqwCsAK0AHwCuAK8AsAAhALEADgAjALIAswAmALQAFQAVABVNLQB1AHUAdQAvAHUAvQCOAHUAdQAVAHWAAIAAgACBBhIICAgIgCOAGAgIgAAI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TUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDSADkADmi2AMWggCLTADgAOQAOaLlougBQoKCAL1DSAMcAyGi+aL9ZWERQTU1vZGVso2i+aMAAzFdYRE1vZGVsAAAACAAAABkAAAAiAAAALAAAADEAAAA6AAAAPwAAAFEAAABWAAAAWwAAAF0AABDHAAAQzQAAEOYAABD4AAAQ/wAAEQ0AABEaAAARMgAAEUwAABFOAAARUQAAEVMAABFWAAARWQAAEVwAABGVAAARtAAAEdEAABHwAAASAgAAEiIAABIpAAASRwAAElMAABJvAAASdQAAEpcAABK4AAASywAAEs0AABLQAAAS0wAAEtUAABLXAAAS2QAAEtwAABLfAAAS4QAAEuMAABLlAAAS5wAAEukAABLrAAAS7AAAEvAAABL9AAATBQAAExAAABMlAAATJwAAEykAABMrAAATLQAAEy8AABMxAAATMwAAEzUAABM3AAATOQAAE04AABNQAAATUgAAE1UAABNYAAATWwAAE10AABNgAAATYwAAE2YAABNpAAATawAAE3IAABOAAAAThQAAE44AABOWAAATogAAE6oAABO5AAATwQAAE8cAABQKAAAULgAAFFIAABR1AAAUnAAAFLwAABTjAAAVCgAAFSoAABVOAAAVcgAAFX4AABWAAAAVggAAFYQAABWGAAAViAAAFYoAABWNAAAVjwAAFZEAABWUAAAVlgAAFZgAABWbAAAVnQAAFZ4AABWjAAAVqwAAFbgAABW7AAAVvQAAFcAAABXCAAAVxAAAFdMAABX4AAAWHAAAFkMAABZnAAAWaQAAFmsAABZtAAAWbwAAFnEAABZzAAAWdAAAFnYAABaDAAAWlgAAFpgAABaaAAAWnAAAFp4AABagAAAWogAAFqQAABamAAAWqAAAFrsAABa9AAAWvwAAFsEAABbDAAAWxQAAFscAABbJAAAWywAAFs0AABbPAAAW5QAAFvgAABcUAAAXMQAAF00AABdhAAAXcwAAF4kAABeiAAAX4QAAF+cAABfwAAAX/QAAGAkAABgTAAAYHQAAGCgAABgzAAAYQAAAGEgAABhKAAAYTAAAGE4AABhQAAAYUQAAGFIAABhTAAAYVAAAGFYAABhYAAAYWQAAGFoAABhcAAAYXQAAGGYAABhnAAAYaQAAGHIAABh9AAAYhgAAGJUAABicAAAYpAAAGK0AABi2AAAYyQAAGNIAABjlAAAY/AAAGQ4AABlNAAAZTwAAGVEAABlTAAAZVQAAGVYAABlXAAAZWAAAGVkAABlbAAAZXQAAGV4AABlfAAAZYQAAGWIAABltAAAZrAAAGa4AABmwAAAZsgAAGbQAABm1AAAZtgAAGbcAABm4AAAZugAAGbwAABm9AAAZvgAAGcAAABnBAAAZygAAGcsAABnNAAAaDAAAGg4AABoQAAAaEgAAGhQAABoVAAAaFgAAGhcAABoYAAAaGgAAGhwAABodAAAaHgAAGiAAABohAAAaYAAAGmIAABpkAAAaZgAAGmgAABppAAAaagAAGmsAABpsAAAabgAAGnAAABpxAAAacgAAGnQAABp1AAAafgAAGn8AABqBAAAawAAAGsIAABrEAAAaxgAAGsgAABrJAAAaygAAGssAABrMAAAazgAAGtAAABrRAAAa0gAAGtQAABrVAAAa1gAAGxUAABsXAAAbGQAAGxsAABsdAAAbHgAAGx8AABsgAAAbIQAAGyMAABslAAAbJgAAGycAABspAAAbKgAAGzcAABs4AAAbOQAAGzsAABtEAAAbWgAAG2EAABtuAAAbrQAAG68AABuxAAAbswAAG7UAABu2AAAbtwAAG7gAABu5AAAbuwAAG70AABu+AAAbvwAAG8EAABvCAAAb2wAAG90AABvfAAAb4QAAG+IAABvkAAAb+wAAHAQAABwSAAAcHwAAHC0AABxCAAAcVgAAHG0AABx/AAAcvgAAHMAAABzCAAAcxAAAHMYAABzHAAAcyAAAHMkAABzKAAAczAAAHM4AABzPAAAc0AAAHNIAABzTAAAc3AAAHPEAAB0AAAAdFQAAHSMAAB04AAAdTAAAHWMAAB11AAAdggAAHYUAAB2HAAAdigAAHYwAAB2OAAAdlAAAHd8AAB4CAAAeIgAAHkIAAB5EAAAeRgAAHkgAAB5KAAAeTAAAHk0AAB5OAAAeUAAAHlEAAB5TAAAeVAAAHlYAAB5YAAAeWQAAHloAAB5cAAAeXQAAHmIAAB5vAAAedAAAHnYAAB54AAAefQAAHn8AAB6BAAAegwAAHpgAAB6rAAAe0AAAHvQAAB8bAAAfPwAAH0EAAB9DAAAfRQAAH0cAAB9JAAAfSwAAH0wAAB9OAAAfWwAAH2wAAB9uAAAfcAAAH3IAAB90AAAfdgAAH3gAAB96AAAffAAAH40AAB+PAAAfkQAAH5MAAB+VAAAflwAAH5kAAB+bAAAfnQAAH58AAB+9AAAf2wAAH+4AACACAAAgFwAAIDQAACBIAAAgXgAAIJ0AACCfAAAgoQAAIKMAACClAAAgpgAAIKcAACCoAAAgqQAAIKsAACCtAAAgrgAAIK8AACCxAAAgsgAAIPEAACDzAAAg9QAAIPcAACD5AAAg+gAAIPsAACD8AAAg/QAAIP8AACEBAAAhAgAAIQMAACEFAAAhBgAAIUUAACFHAAAhSQAAIUsAACFNAAAhTgAAIU8AACFQAAAhUQAAIVMAACFVAAAhVgAAIVcAACFZAAAhWgAAIWcAACFoAAAhaQAAIWsAACGqAAAhrAAAIa4AACGwAAAhsgAAIbMAACG0AAAhtQAAIbYAACG4AAAhugAAIbsAACG8AAAhvgAAIb8AACH+AAAiAAAAIgIAACIEAAAiBgAAIgcAACIIAAAiCQAAIgoAACIMAAAiDgAAIg8AACIQAAAiEgAAIhMAACIUAAAiUwAAIlUAACJXAAAiWQAAIlsAACJcAAAiXQAAIl4AACJfAAAiYQAAImMAACJkAAAiZQAAImcAACJoAAAipwAAIqkAACKrAAAirQAAIq8AACKwAAAisQAAIrIAACKzAAAitQAAIrcAACK4AAAiuQAAIrsAACK8AAAiywAAIwoAACMMAAAjDgAAIxAAACMSAAAjEwAAIxQAACMVAAAjFgAAIxgAACMaAAAjGwAAIxwAACMeAAAjHwAAI0QAACNoAAAjjwAAI7MAACO1AAAjtwAAI7kAACO7AAAjvQAAI78AACPAAAAjwgAAI88AACPeAAAj4AAAI+IAACPkAAAj5gAAI+gAACPqAAAj7AAAI/sAACP9AAAj/wAAJAEAACQDAAAkBgAAJAkAACQMAAAkDgAAJCAAACQ0AAAkRgAAJFsAACRtAAAkfAAAJJkAACTYAAAk2gAAJNwAACTeAAAk4AAAJOEAACTiAAAk4wAAJOQAACTmAAAk6AAAJOkAACTqAAAk7AAAJO0AACUsAAAlLgAAJTAAACUyAAAlNAAAJTUAACU2AAAlNwAAJTgAACU6AAAlPAAAJT0AACU+AAAlQAAAJUEAACVDAAAlggAAJYQAACWGAAAliAAAJYoAACWLAAAljAAAJY0AACWOAAAlkAAAJZIAACWTAAAllAAAJZYAACWXAAAl1gAAJdgAACXaAAAl3AAAJd4AACXfAAAl4AAAJeEAACXiAAAl5AAAJeYAACXnAAAl6AAAJeoAACXrAAAmPgAAJmIAACaGAAAmpgAAJs0AACb0AAAnFAAAJzsAACdfAAAnggAAJ6kAACfNAAAn8QAAKBUAACg8AAAoPQAAKD8AAChBAAAoQwAAKEUAAChIAAAoSgAAKEwAAChPAAAoUQAAKFMAAChWAAAoWAAAKFoAAChcAAAoXgAAKGAAAChjAAAoZgAAKGsAACh4AAAoewAAKH0AACiAAAAoggAAKIQAACipAAAozQAAKPQAACkYAAApGgAAKRwAACkeAAApIAAAKSIAACkkAAApJQAAKScAACk0AAApRwAAKUkAAClLAAApTQAAKU8AAClRAAApUwAAKVUAAClXAAApWQAAKWwAACluAAApcAAAKXIAACl0AAApdgAAKXgAACl6AAApfAAAKX4AACmAAAApvwAAKcEAACnDAAApxQAAKccAACnIAAApyQAAKcoAACnLAAApzQAAKc8AACnQAAAp0QAAKdMAACnUAAAp3QAAKd4AACngAAAqHwAAKiEAACojAAAqJQAAKicAACooAAAqKQAAKioAACorAAAqLQAAKi8AACowAAAqMQAAKjMAACo0AAAqcwAAKnUAACp3AAAqeQAAKnsAACp8AAAqfQAAKn4AACp/AAAqgQAAKoMAACqEAAAqhQAAKocAACqIAAAqkQAAKpIAACqUAAAq0wAAKtUAACrXAAAq2QAAKtsAACrcAAAq3QAAKt4AACrfAAAq4QAAKuMAACrkAAAq5QAAKucAACroAAArJwAAKykAACsrAAArLQAAKy8AACswAAArMQAAKzIAACszAAArNQAAKzcAACs4AAArOQAAKzsAACs8AAArRQAAK0YAACtIAAArhwAAK4kAACuLAAArjQAAK48AACuQAAArkQAAK5IAACuTAAArlQAAK5cAACuYAAArmQAAK5sAACucAAAr2wAAK90AACvfAAAr4QAAK+MAACvkAAAr5QAAK+YAACvnAAAr6QAAK+sAACvsAAAr7QAAK+8AACvwAAAr/QAAK/4AACv/AAAsAQAALEAAACxCAAAsRAAALEYAACxIAAAsSQAALEoAACxLAAAsTAAALE4AACxQAAAsUQAALFIAACxUAAAsVQAALJQAACyWAAAsmAAALJoAACycAAAsnQAALJ4AACyfAAAsoAAALKIAACykAAAspQAALKYAACyoAAAsqQAALLUAACzCAAAs7QAALO8AACzxAAAs8wAALPUAACz3AAAs+QAALPsAACz9AAAs/wAALQEAAC0DAAAtBQAALQcAAC0JAAAtCwAALQ0AAC0PAAAtEQAALRMAAC0VAAAtQAAALUIAAC1EAAAtRgAALUkAAC1MAAAtTwAALVIAAC1VAAAtWAAALVsAAC1eAAAtYQAALWQAAC1nAAAtagAALW0AAC1wAAAtcwAALXYAAC15AAAtewAALYIAAC2IAAAtlgAALZ8AAC2rAAAtvgAALcQAAC3OAAAt0wAALeAAAC3rAAAt9gAALfsAAC4DAAAuCwAALhUAAC4gAAAuKgAALj0AAC5KAAAulQAALrgAAC7YAAAu+AAALvoAAC78AAAu/gAALwAAAC8CAAAvAwAALwQAAC8GAAAvBwAALwkAAC8KAAAvDAAALw4AAC8PAAAvEAAALxIAAC8TAAAvHAAALykAAC8uAAAvMAAALzIAAC83AAAvOQAALzsAAC89AAAvYgAAL4YAAC+tAAAv0QAAL9MAAC/VAAAv1wAAL9kAAC/bAAAv3QAAL94AAC/gAAAv7QAAL/4AADAAAAAwAgAAMAQAADAGAAAwCAAAMAoAADAMAAAwDgAAMB8AADAhAAAwIwAAMCUAADAnAAAwKQAAMCsAADAtAAAwLwAAMDEAADBwAAAwcgAAMHQAADB2AAAweAAAMHkAADB6AAAwewAAMHwAADB+AAAwgAAAMIEAADCCAAAwhAAAMIUAADDEAAAwxgAAMMgAADDKAAAwzAAAMM0AADDOAAAwzwAAMNAAADDSAAAw1AAAMNUAADDWAAAw2AAAMNkAADEYAAAxGgAAMRwAADEeAAAxIAAAMSEAADEiAAAxIwAAMSQAADEmAAAxKAAAMSkAADEqAAAxLAAAMS0AADE6AAAxOwAAMTwAADE+AAAxfQAAMX8AADGBAAAxgwAAMYUAADGGAAAxhwAAMYgAADGJAAAxiwAAMY0AADGOAAAxjwAAMZEAADGSAAAx0QAAMdMAADHVAAAx1wAAMdkAADHaAAAx2wAAMdwAADHdAAAx3wAAMeEAADHiAAAx4wAAMeUAADHmAAAyJQAAMicAADIpAAAyKwAAMi0AADIuAAAyLwAAMjAAADIxAAAyMwAAMjUAADI2AAAyNwAAMjkAADI6AAAyeQAAMnsAADJ9AAAyfwAAMoEAADKCAAAygwAAMoQAADKFAAAyhwAAMokAADKKAAAyiwAAMo0AADKOAAAyzQAAMs8AADLRAAAy0wAAMtUAADLWAAAy1wAAMtgAADLZAAAy2wAAMt0AADLeAAAy3wAAMuEAADLiAAAzBwAAMysAADNSAAAzdgAAM3gAADN6AAAzfAAAM34AADOAAAAzggAAM4MAADOFAAAzkgAAM6EAADOjAAAzpQAAM6cAADOpAAAzqwAAM60AADOvAAAzvgAAM8AAADPCAAAzxAAAM8YAADPIAAAzygAAM8wAADPOAAA0DQAANA8AADQRAAA0EwAANBUAADQWAAA0FwAANBgAADQZAAA0GwAANB0AADQeAAA0HwAANCEAADQiAAA0YQAANGMAADRlAAA0ZwAANGkAADRqAAA0awAANGwAADRtAAA0bwAANHEAADRyAAA0cwAANHUAADR2AAA0tQAANLcAADS5AAA0uwAANL0AADS+AAA0vwAANMAAADTBAAA0wwAANMUAADTGAAA0xwAANMkAADTKAAA1CQAANQsAADUNAAA1DwAANREAADUSAAA1EwAANRQAADUVAAA1FwAANRkAADUaAAA1GwAANR0AADUeAAA1XQAANV8AADVhAAA1YwAANWUAADVmAAA1ZwAANWgAADVpAAA1awAANW0AADVuAAA1bwAANXEAADVyAAA1sQAANbMAADW1AAA1twAANbkAADW6AAA1uwAANbwAADW9AAA1vwAANcEAADXCAAA1wwAANcUAADXGAAA2BQAANgcAADYJAAA2CwAANg0AADYOAAA2DwAANhAAADYRAAA2EwAANhUAADYWAAA2FwAANhkAADYaAAA2IwAANjYAADZDAAA2VgAANmMAADZ2AAA2jQAANp8AADbqAAA3DQAANy0AADdNAAA3TwAAN1EAADdTAAA3VQAAN1cAADdYAAA3WQAAN1sAADdcAAA3XgAAN18AADdhAAA3YwAAN2QAADdlAAA3ZwAAN2gAADdtAAA3egAAN38AADeBAAA3gwAAN4gAADeKAAA3jAAAN44AADejAAA3yAAAN+wA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AEO4AABDuQAAQ7oAAEO7AABDvAAAQ74AAEPAAABDwQAAQ8IAAEPEAABDxQAARAQAAEQGAABECAAARAoAAEQMAABEDQAARA4AAEQPAABEEAAARBIAAEQUAABEFQAARBYAAEQYAABEGQAARFgAAERaAABEXAAARF4AAERgAABEYQAARGIAAERjAABEZAAARGYAAERoAABEaQAARGoAAERsAABEbQAARJIAAES2AABE3QAARQEAAEUDAABFBQAARQcAAEUJAABFCwAARQ0AAEUOAABFEAAARR0AAEUsAABFLgAARTAAAEUyAABFNAAARTYAAEU4AABFOgAARUkAAEVLAABFTQAARU8AAEVRAABFVAAARVcAAEVaAABFXAAARZsAAEWdAABFnwAARaEAAEWjAABFpAAARaUAAEWmAABFpwAARakAAEWrAABFrAAARa0AAEWvAABFsAAARe8AAEXxAABF8wAARfUAAEX3AABF+AAARfkAAEX6AABF+wAARf0AAEX/AABGAAAARgEAAEYDAABGBAAARgYAAEZFAABGRwAARkkAAEZLAABGTQAARk4AAEZPAABGUAAARlEAAEZTAABGVQAARlYAAEZXAABGWQAARloAAEaZAABGmwAARp0AAEafAABGoQAARqIAAEajAABGpAAARqUAAEanAABGqQAARqoAAEarAABGrQAARq4AAEbxAABHFQAARzkAAEdcAABHgwAAR6MAAEfKAABH8QAASBEAAEg1AABIWQAASFsAAEhdAABIXwAASGEAAEhjAABIZQAASGgAAEhqAABIbAAASG8AAEhxAABIcwAASHYAAEh4AABIeQAASH4AAEiLAABIjgAASJAAAEiTAABIlQAASJcAAEi8AABI4AAASQcAAEkrAABJLQAASS8AAEkxAABJMwAASTUAAEk3AABJOAAASToAAElHAABJWgAASVwAAEleAABJYAAASWIAAElkAABJZgAASWgAAElqAABJbAAASX8AAEmBAABJgwAASYUAAEmHAABJiQAASYsAAEmNAABJjwAASZEAAEmTAABJ0gAASdQAAEnWAABJ2AAASdoAAEnbAABJ3AAASd0AAEneAABJ4AAASeIAAEnjAABJ5AAASeYAAEnnAABJ8AAASfEAAEnzAABKMgAASjQAAEo2AABKOAAASjoAAEo7AABKPAAASj0AAEo+AABKQAAASkIAAEpDAABKRAAASkYAAEpHAABKhgAASogAAEqKAABKjAAASo4AAEqPAABKkAAASpEAAEqSAABKlAAASpYAAEqXAABKmAAASpoAAEqbAABKpAAASqUAAEqnAABK5gAASugAAErqAABK7AAASu4AAErvAABK8AAASvEAAEryAABK9AAASvYAAEr3AABK+AAASvoAAEr7AABLOgAASzwAAEs+AABLQAAAS0IAAEtDAABLRAAAS0UAAEtGAABLSAAAS0oAAEtLAABLTAAAS04AAEtPAABLWAAAS1kAAEtbAABLmgAAS5wAAEueAABLoAAAS6IAAEujAABLpAAAS6UAAEumAABLqAAAS6oAAEurAABLrAAAS64AAEuvAABL7gAAS/AAAEvyAABL9AAAS/YAAEv3AABL+AAAS/kAAEv6AABL/AAAS/4AAEv/AABMAAAATAIAAEwDAABMEAAATBEAAEwSAABMFAAATFMAAExVAABMVwAATFkAAExbAABMXAAATF0AAExeAABMXwAATGEAAExjAABMZAAATGUAAExnAABMaAAATKcAAEypAABMqwAATK0AAEyvAABMsAAATLEAAEyyAABMswAATLUAAEy3AABMuAAATLkAAEy7AABMvAAATMoAAEzXAABM5gAATOgAAEzqAABM7AAATO4AAEzwAABM8gAATPQAAE0DAABNBQAATQgAAE0LAABNDgAATREAAE0UAABNFwAATRkAAE0gAABNJwAATSoAAE01AABNQAAATUwAAE2XAABNugAATdoAAE36AABN/AAATf4AAE4AAABOAgAATgQAAE4FAABOBgAATggAAE4JAABOCwAATgwAAE4OAABOEAAAThEAAE4SAABOFAAAThUAAE4aAABOJwAATiwAAE4uAABOMAAATjUAAE43AABOOQAATjsAAE5gAABOhAAATqsAAE7PAABO0QAATtMAAE7VAABO1wAATtkAAE7bAABO3AAATt4AAE7rAABO/AAATv4AAE8AAABPAgAATwQAAE8GAABPCAAATwoAAE8MAABPHQAATx8AAE8hAABPIwAATyUAAE8nAABPKQAATysAAE8tAABPLwAAT24AAE9wAABPcgAAT3QAAE92AABPdwAAT3gAAE95AABPegAAT3wAAE9+AABPfwAAT4AAAE+CAABPgwAAT8IAAE/EAABPxgAAT8gAAE/KAABPywAAT8wAAE/NAABPzgAAT9AAAE/SAABP0wAAT9QAAE/WAABP1wAAUBYAAFAYAABQGgAAUBwAAFAeAABQHwAAUCAAAFAhAABQIgAAUCQAAFAmAABQJwAAUCgAAFAqAABQKwAAUDgAAFA5AABQOgAAUDwAAFB7AABQfQAAUH8AAFCBAABQgwAAUIQAAFCFAABQhgAAUIcAAFCJAABQiwAAUIwAAFCNAABQjwAAUJAAAFDPAABQ0QAAUNMAAFDVAABQ1wAAUNgAAFDZAABQ2gAAUNsAAFDdAABQ3wAAUOAAAFDhAABQ4wAAUOQAAFEjAABRJQAAUScAAFEpAABRKwAAUSwAAFEtAABRLgAAUS8AAFExAABRMwAAUTQAAFE1AABRNwAAUTgAAFF3AABReQAAUXsAAFF9AABRfwAAUYAAAFGBAABRggAAUYMAAFGFAABRhwAAUYgAAFGJAABRiwAAUYwAAFHLAABRzQAAUc8AAFHRAABR0wAAUdQAAFHVAABR1gAAUdcAAFHZAABR2wAAUdwAAFHdAABR3wAAUeAAAFIFAABSKQAAUlAAAFJ0AABSdgAAUngAAFJ6AABSfAAAUn4AAFKAAABSgQAAUoQAAFKRAABSoAAAUqIAAFKkAABSpgAAUqgAAFKqAABSrAAAUq4AAFK9AABSwAAAUsMAAFLGAABSyQAAUswAAFLPAABS0gAAUtQAAFMTAABTFQAAUxgAAFMaAABTHAAAUx0AAFMeAABTHwAAUyAAAFMiAABTJAAAUyUAAFMmAABTKAAAUykAAFMrAABTagAAU2wAAFNuAABTcAAAU3IAAFNzAABTdAAAU3UAAFN2AABTeAAAU3oAAFN7AABTfAAAU34AAFN/AABTvgAAU8AAAFPCAABTxAAAU8YAAFPHAABTyAAAU8kAAFPKAABTzAAAU84AAFPPAABT0AAAU9IAAFPTAABUEgAAVBQAAFQXAABUGQAAVBsAAFQcAABUHQAAVB4AAFQfAABUIQAAVCMAAFQkAABUJQAAVCcAAFQoAABUKgAAVGkAAFRrAABUbQAAVG8AAFRxAABUcgAAVHMAAFR0AABUdQAAVHcAAFR5AABUegAAVHsAAFR9AABUfgAAVL0AAFS/AABUwQAAVMMAAFTFAABUxgAAVMcAAFTIAABUyQAAVMsAAFTNAABUzgAAVM8AAFTRAABU0gAAVREAAFUTAABVFQAAVRcAAFUZAABVGgAAVRsAAFUcAABVHQAAVR8AAFUhAABVIgAAVSMAAFUlAABVJgAAVXEAAFWUAABVtAAAVdQAAFXWAABV2AAAVdoAAFXcAABV3gAAVd8AAFXgAABV4wAAVeQAAFXmAABV5wAAVekAAFXrAABV7AAAVe0AAFXwAABV8QAAVfoAAFYHAABWDAAAVg4AAFYQAABWFQAAVhgAAFYbAABWHQAAVkIAAFZmAABWjQAAVrEAAFa0AABWtgAAVrgAAFa6AABWvAAAVr4AAFa/AABWwgAAVs8AAFbgAABW4gAAVuQAAFbmAABW6AAAVuoAAFbsAABW7gAAVvAAAFcBAABXBAAAVwcAAFcKAABXDQAAVxAAAFcTAABXFgAAVxkAAFcbAABXWgAAV1wAAFdeAABXYAAAV2MAAFdkAABXZQAAV2YAAFdnAABXaQAAV2sAAFdsAABXbQAAV28AAFdwAABXrwAAV7EAAFezAABXtQAAV7gAAFe5AABXugAAV7sAAFe8AABXvgAAV8AAAFfBAABXwgAAV8QAAFfFAABYBAAAWAYAAFgJAABYCwAAWA4AAFgPAABYEAAAWBEAAFgSAABYFAAAWBYAAFgXAABYGAAAWBoAAFgbAABYKAAAWCkAAFgqAABYLAAAWGsAAFhtAABYbwAAWHEAAFh0AABYdQAAWHYAAFh3AABYeAAAWHoAAFh8AABYfQAAWH4AAFiAAABYgQAAWMAAAFjCAABYxAAAWMYAAFjJAABYygAAWMsAAFjMAABYzQAAWM8AAFjRAABY0gAAWNMAAFjVAABY1gAAWRUAAFkXAABZGQAAWRsAAFkeAABZHwAAWSAAAFkhAABZIgAAWSQAAFkmAABZJwAAWSgAAFkqAABZKwAAWWoAAFlsAABZbgAAWXAAAFlzAABZdAAAWXUAAFl2AABZdwAAWXkAAFl7AABZfAAAWX0AAFl/AABZgAAAWb8AAFnBAABZwwAAWcUAAFnIAABZyQAAWcoAAFnLAABZzAAAWc4AAFnQAABZ0QAAWdIAAFnUAABZ1QAAWfoAAFoeAABaRQAAWmkAAFpsAABabgAAWnAAAFpyAABadAAAWnYAAFp3AABaegAAWocAAFqWAABamAAAWpoAAFqcAABangAAWqAAAFqiAABapAAAWrMAAFq2AABauQAAWrwAAFq/AABawgAAWsUAAFrIAABaygAAWwkAAFsLAABbDQAAWw8AAFsSAABbEwAAWxQAAFsVAABbFgAAWxgAAFsaAABbGwAAWxwAAFseAABbHwAAW14AAFtgAABbYgAAW2QAAFtnAABbaAAAW2kAAFtqAABbawAAW20AAFtvAABbcAAAW3EAAFtzAABbdAAAW7MAAFu1AABbtwAAW7kAAFu8AABbvQAAW74AAFu/AABbwAAAW8IAAFvEAABbxQAAW8YAAFvIAABbyQAAXAgAAFwKAABcDAAAXA4AAFwRAABcEgAAXBMAAFwUAABcFQAAXBcAAFwZAABcGgAAXBsAAFwdAABcHgAAXF0AAFxfAABcYQAAXGMAAFxmAABcZwAAXGgAAFxpAABcagAAXGwAAFxuAABcbwAAXHAAAFxyAABccwAAXLIAAFy0AABctgAAXLgAAFy7AABcvAAAXL0AAFy+AABcvwAAXMEAAFzDAABcxAAAXMUAAFzHAABcyAAAXQcAAF0JAABdCwAAXQ0AAF0QAABdEQAAXRIAAF0TAABdFAAAXRYAAF0YAABdGQAAXRoAAF0cAABdHQAAXWgAAF2LAABdqwAAXcsAAF3NAABdzwAAXdEAAF3TAABd1QAAXdYAAF3XAABd2gAAXdsAAF3dAABd3gAAXeAAAF3iAABd4wAAXeQAAF3nAABd6AAAXe0AAF36AABd/wAAXgEAAF4DAABeCAAAXgsAAF4OAABeEAAAXjUAAF5ZAABegAAAXqQAAF6nAABeqQAAXqsAAF6tAABerwAAXrEAAF6yAABetQAAXsIAAF7TAABe1QAAXtcAAF7ZAABe2wAAXt0AAF7fAABe4QAAXuMAAF70AABe9wAAXvoAAF79AABfAAAAXwMAAF8GAABfCQAAXwwAAF8OAABfTQAAX08AAF9RAABfUwAAX1YAAF9XAABfWAAAX1kAAF9aAABfXAAAX14AAF9fAABfYAAAX2IAAF9jAABfogAAX6QAAF+mAABfqAAAX6sAAF+sAABfrQAAX64AAF+vAABfsQAAX7MAAF+0AABftQAAX7cAAF+4AABf9wAAX/kAAF/8AABf/gAAYAEAAGACAABgAwAAYAQAAGAFAABgBwAAYAkAAGAKAABgCwAAYA0AAGAOAABgGwAAYBwAAGAdAABgHwAAYF4AAGBgAABgYgAAYGQAAGBnAABgaAAAYGkAAGBqAABgawAAYG0AAGBvAABgcAAAYHEAAGBzAABgdAAAYLMAAGC1AABgtwAAYLkAAGC8AABgvQAAYL4AAGC/AABgwAAAYMIAAGDEAABgxQAAYMYAAGDIAABgyQAAYQgAAGEKAABhDAAAYQ4AAGERAABhEgAAYRMAAGEUAABhFQAAYRcAAGEZAABhGgAAYRsAAGEdAABhHgAAYV0AAGFfAABhYQAAYWMAAGFmAABhZwAAYWgAAGFpAABhagAAYWwAAGFuAABhbwAAYXAAAGFyAABhcwAAYbIAAGG0AABhtgAAYbgAAGG7AABhvAAAYb0AAGG+AABhvwAAYcEAAGHDAABhxAAAYcUAAGHHAABhyAAAYe0AAGIRAABiOAAAYlwAAGJfAABiYQAAYmMAAGJlAABiZwAAYmkAAGJqAABibQAAYnoAAGKJAABiiwAAYo0AAGKPAABikQAAYpMAAGKVAABilwAAYqYAAGKpAABirAAAYq8AAGKyAABitQAAYrgAAGK7AABivQAAYvwAAGL+AABjAQAAYwMAAGMGAABjBwAAYwgAAGMJAABjCgAAYwwAAGMOAABjDwAAYxAAAGMSAABjEwAAY1IAAGNUAABjVgAAY1gAAGNbAABjXAAAY10AAGNeAABjXwAAY2EAAGNjAABjZAAAY2UAAGNnAABjaAAAY6cAAGOpAABjqwAAY60AAGOwAABjsQAAY7IAAGOzAABjtAAAY7YAAGO4AABjuQAAY7oAAGO8AABjvQAAY/wAAGP+AABkAQAAZAMAAGQGAABkBwAAZAgAAGQJAABkCgAAZAwAAGQOAABkDwAAZBAAAGQSAABkEwAAZBUAAGRUAABkVgAAZFgAAGRaAABkXQAAZF4AAGRfAABkYAAAZGEAAGRjAABkZQAAZGYAAGRnAABkaQAAZGoAAGSpAABkqwAAZK0AAGSvAABksgAAZLMAAGS0AABktQAAZLYAAGS4AABkugAAZLsAAGS8AABkvgAAZL8AAGT+AABlAAAAZQIAAGUEAABlBwAAZQgAAGUJAABlCgAAZQsAAGUNAABlDwAAZRAAAGURAABlEwAAZRQAAGVfAABlggAAZaIAAGXCAABlxAAAZcYAAGXIAABlygAAZcwAAGXNAABlzgAAZdEAAGXSAABl1AAAZdUAAGXXAABl2QAAZdoAAGXbAABl3gAAZd8AAGXkAABl8QAAZfYAAGX4AABl+gAAZf8AAGYCAABmBQAAZgcAAGYsAABmUAAAZncAAGabAABmngAAZqAAAGaiAABmpAAAZqYAAGaoAABmqQAAZqwAAGa5AABmygAAZswAAGbOAABm0AAAZtIAAGbUAABm1gAAZtgAAGbaAABm6wAAZu4AAGbxAABm9AAAZvcAAGb6AABm/QAAZwAAAGcDAABnBQAAZ0QAAGdGAABnSAAAZ0oAAGdNAABnTgAAZ08AAGdQAABnUQAAZ1MAAGdVAABnVgAAZ1cAAGdZAABnWgAAZ5kAAGebAABnnQAAZ58AAGeiAABnowAAZ6QAAGelAABnpgAAZ6gAAGeqAABnqwAAZ6wAAGeuAABnrwAAZ+4AAGfwAABn8wAAZ/UAAGf4AABn+QAAZ/oAAGf7AABn/AAAZ/4AAGgAAABoAQAAaAIAAGgEAABoBQAAaBIAAGgTAABoFAAAaBYAAGhVAABoVwAAaFkAAGhbAABoXgAAaF8AAGhgAABoYQAAaGIAAGhkAABoZgAAaGcAAGhoAABoagAAaGsAAGiqAABorAAAaK4AAGiwAABoswAAaLQAAGi1AABotgAAaLcAAGi5AABouwAAaLwAAGi9AABovwAAaMAAAGj/AABpAQAAaQMAAGkFAABpCAAAaQkAAGkKAABpCwAAaQwAAGkOAABpEAAAaREAAGkSAABpFAAAaRUAAGlUAABpVgAAaVgAAGlaAABpXQAAaV4AAGlfAABpYAAAaWEAAGljAABpZQAAaWYAAGlnAABpaQAAaWoAAGmpAABpqwAAaa0AAGmvAABpsgAAabMAAGm0AABptQAAabYAAGm4AABpugAAabsAAGm8AABpvgAAab8AAGnkAABqCAAAai8AAGpTAABqVgAAalgAAGpaAABqXAAAal4AAGpgAABqYQAAamQAAGpxAABqgAAAaoIAAGqEAABqhgAAaogAAGqKAABqjAAAao4AAGqdAABqoAAAaqMAAGqmAABqqQAAaqwAAGqvAABqsgAAarQAAGrzAABq9QAAavcAAGr5AABq/AAAav0AAGr+AABq/wAAawAAAGsCAABrBAAAawUAAGsGAABrCAAAawkAAGtIAABrSgAAa0wAAGtOAABrUQAAa1IAAGtTAABrVAAAa1UAAGtXAABrWQAAa1oAAGtbAABrXQAAa14AAGudAABrnwAAa6EAAGujAABrpgAAa6cAAGuoAABrqQAAa6oAAGusAABrrgAAa68AAGuwAABrsgAAa7MAAGvyAABr9AAAa/YAAGv4AABr+wAAa/wAAGv9AABr/gAAa/8AAGwBAABsAwAAbAQAAGwFAABsBwAAbAgAAGxHAABsSQAAbEsAAGxNAABsUAAAbFEAAGxSAABsUwAAbFQAAGxWAABsWAAAbFkAAGxaAABsXAAAbF0AAGycAABsngAAbKAAAGyiAABspQAAbKYAAGynAABsqAAAbKkAAGyrAABsrQAAbK4AAGyvAABssQAAbLIAAGzxAABs8wAAbPUAAGz3AABs+gAAbPsAAGz8AABs/QAAbP4AAG0AAABtAgAAbQMAAG0EAABtBgAAbQcAAG1SAABtdQAAbZUAAG21AABttwAAbbkAAG27AABtvQAAbb8AAG3AAABtwQAAbcQAAG3FAABtxwAAbcgAAG3KAABtzAAAbc0AAG3OAABt0QAAbdIAAG3XAABt5AAAbekAAG3rAABt7QAAbfIAAG31AABt+AAAbfoAAG4fAABuQwAAbmoAAG6OAABukQAAbpMAAG6VAABulwAAbpkAAG6bAABunAAAbp8AAG6sAABuvQAAbr8AAG7BAABuwwAAbsUAAG7HAABuyQAAbssAAG7NAABu3gAAbuEAAG7kAABu5wAAbuoAAG7tAABu8AAAbvMAAG72AABu+AAAbzcAAG85AABvOwAAbz0AAG9AAABvQQAAb0IAAG9DAABvRAAAb0YAAG9IAABvSQAAb0oAAG9MAABvTQAAb4wAAG+OAABvkAAAb5IAAG+VAABvlgAAb5cAAG+YAABvmQAAb5sAAG+dAABvngAAb58AAG+hAABvogAAb+EAAG/jAABv5gAAb+gAAG/rAABv7AAAb+0AAG/uAABv7wAAb/EAAG/zAABv9AAAb/UAAG/3AABv+AAAcAUAAHAGAABwBwAAcAkAAHBIAABwSgAAcEwAAHBOAABwUQAAcFIAAHBTAABwVAAAcFUAAHBXAABwWQAAcFoAAHBbAABwXQAAcF4AAHCdAABwnwAAcKEAAHCjAABwpgAAcKcAAHCoAABwqQAAcKoAAHCsAABwrgAAcK8AAHCwAABwsgAAcLMAAHDyAABw9AAAcPYAAHD4AABw+wAAcPwAAHD9AABw/gAAcP8AAHEBAABxAwAAcQQAAHEFAABxBwAAcQgAAHFHAABxSQAAcUsAAHFNAABxUAAAcVEAAHFSAABxUwAAcVQAAHFWAABxWAAAcVkAAHFaAABxXAAAcV0AAHGcAABxngAAcaAAAHGiAABxpQAAcaYAAHGnAABxqAAAcakAAHGrAABxrQAAca4AAHGvAABxsQAAcbIAAHHXAABx+wAAciIAAHJGAABySQAAcksAAHJNAAByTwAAclEAAHJTAAByVAAAclcAAHJkAABycwAAcnUAAHJ3AAByeQAAcnsAAHJ9AAByfwAAcoEAAHKQAABykwAAcpYAAHKZAABynAAAcp8AAHKiAABypQAAcqcAAHLmAABy6AAAcusAAHLtAABy8AAAcvEAAHLyAABy8wAAcvQAAHL2AABy+AAAcvkAAHL6AABy/AAAcv0AAHM8AABzPgAAc0AAAHNCAABzRQAAc0YAAHNHAABzSAAAc0kAAHNLAABzTQAAc04AAHNPAABzUQAAc1IAAHORAABzkwAAc5UAAHOXAABzmgAAc5sAAHOcAABznQAAc54AAHOgAABzogAAc6MAAHOkAABzpgAAc6cAAHPmAABz6AAAc+sAAHPtAABz8AAAc/EAAHPyAABz8wAAc/QAAHP2AABz+AAAc/kAAHP6AABz/AAAc/0AAHQ8AAB0PgAAdEAAAHRCAAB0RQAAdEYAAHRHAAB0SAAAdEkAAHRLAAB0TQAAdE4AAHRPAAB0UQAAdFIAAHSRAAB0kwAAdJUAAHSXAAB0mgAAdJsAAHScAAB0nQAAdJ4AAHSgAAB0ogAAdKMAAHSkAAB0pgAAdKcAAHTmAAB06AAAdOoAAHTsAAB07wAAdPAAAHTxAAB08gAAdPMAAHT1AAB09wAAdPgAAHT5AAB0+wAAdPwAAHVHAAB1agAAdYoAAHWqAAB1rAAAda4AAHWwAAB1sgAAdbQAAHW1AAB1tgAAdbkAAHW6AAB1vAAAdb0AAHW/AAB1wQAAdcIAAHXDAAB1xgAAdccAAHXMAAB12QAAdd4AAHXgAAB14gAAdecAAHXqAAB17QAAde8AAHYUAAB2OAAAdl8AAHaDAAB2hgAAdogAAHaKAAB2jAAAdo4AAHaQAAB2kQAAdpQAAHahAAB2sgAAdrQAAHa2AAB2uAAAdroAAHa8AAB2vgAAdsAAAHbCAAB20wAAdtYAAHbZAAB23AAAdt8AAHbiAAB25QAAdugAAHbrAAB27QAAdywAAHcuAAB3MAAAdzIAAHc1AAB3NgAAdzcAAHc4AAB3OQAAdzsAAHc9AAB3PgAAdz8AAHdBAAB3QgAAd4EAAHeDAAB3hQAAd4cAAHeKAAB3iwAAd4wAAHeNAAB3jgAAd5AAAHeSAAB3kwAAd5QAAHeWAAB3lwAAd9YAAHfYAAB32wAAd90AAHfgAAB34QAAd+IAAHfjAAB35AAAd+YAAHfoAAB36QAAd+oAAHfsAAB37QAAd/oAAHf7AAB3/AAAd/4AAHg9AAB4PwAAeEEAAHhDAAB4RgAAeEcAAHhIAAB4SQAAeEoAAHhMAAB4TgAAeE8AAHhQAAB4UgAAeFMAAHiSAAB4lAAAeJYAAHiYAAB4mwAAeJwAAHidAAB4ngAAeJ8AAHihAAB4owAAeKQAAHilAAB4pwAAeKgAAHjnAAB46QAAeOsAAHjtAAB48AAAePEAAHjyAAB48wAAePQAAHj2AAB4+AAAePkAAHj6AAB4/AAAeP0AAHk8AAB5PgAAeUAAAHlCAAB5RQAAeUYAAHlHAAB5SAAAeUkAAHlLAAB5TQAAeU4AAHlPAAB5UQAAeVIAAHmRAAB5kwAAeZUAAHmXAAB5mgAAeZsAAHmcAAB5nQAAeZ4AAHmgAAB5ogAAeaMAAHmkAAB5pgAAeacAAHnMAAB58AAAehcAAHo7AAB6PgAAekAAAHpCAAB6RAAAekYAAHpIAAB6SQAAekwAAHpZAAB6aAAAemoAAHpsAAB6bgAAenAAAHpyAAB6dAAAenYAAHqFAAB6iAAAeosAAHqOAAB6kQAAepQAAHqXAAB6mgAAepwAAHrbAAB63QAAet8AAHrhAAB65AAAeuUAAHrmAAB65wAAeugAAHrqAAB67AAAeu0AAHruAAB68AAAevEAAHswAAB7MgAAezQAAHs2AAB7OQAAezoAAHs7AAB7PAAAez0AAHs/AAB7QQAAe0IAAHtDAAB7RQAAe0YAAHuFAAB7hwAAe4kAAHuLAAB7jgAAe48AAHuQAAB7kQAAe5IAAHuUAAB7lgAAe5cAAHuYAAB7mgAAe5sAAHvaAAB73AAAe98AAHvhAAB75AAAe+UAAHvmAAB75wAAe+gAAHvqAAB77AAAe+0AAHvuAAB78AAAe/EAAHv0AAB8MwAAfDUAAHw3AAB8OQAAfDwAAHw9AAB8PgAAfD8AAHxAAAB8QgAAfEQAAHxFAAB8RgAAfEgAAHxJAAB8iAAAfIoAAHyMAAB8jgAAfJEAAHySAAB8kwAAfJQAAHyVAAB8lwAAfJkAAHyaAAB8mwAAfJ0AAHyeAAB83QAAfN8AAHzhAAB84wAAfOYAAHznAAB86AAAfOkAAHzqAAB87AAAfO4AAHzvAAB88AAAfPIAAHzzAAB9PgAAfWEAAH2BAAB9oQAAfaMAAH2lAAB9pwAAfakAAH2rAAB9rAAAfa0AAH2wAAB9sQAAfbMAAH20AAB9tgAAfbgAAH25AAB9ugAAfb0AAH2+AAB9wwAAfdAAAH3VAAB91wAAfdkAAH3eAAB94QAAfeQAAH3mAAB+CwAAfi8AAH5WAAB+egAAfn0AAH5/AAB+gQAAfoMAAH6FAAB+hwAAfogAAH6LAAB+mAAAfqkAAH6rAAB+rQAAfq8AAH6xAAB+swAAfrUAAH63AAB+uQAAfsoAAH7NAAB+0AAAftMAAH7WAAB+2QAAftwAAH7fAAB+4gAAfuQAAH8jAAB/JQAAfycAAH8pAAB/LAAAfy0AAH8uAAB/LwAAfzAAAH8yAAB/NAAAfzUAAH82AAB/OAAAfzkAAH94AAB/egAAf3wAAH9+AAB/gQAAf4IAAH+DAAB/hAAAf4UAAH+HAAB/iQAAf4oAAH+LAAB/jQAAf44AAH/NAAB/zwAAf9IAAH/UAAB/1wAAf9gAAH/ZAAB/2gAAf9sAAH/dAAB/3wAAf+AAAH/hAAB/4wAAf+QAAH/xAAB/8gAAf/MAAH/1AACANAAAgDYAAIA4AACAOgAAgD0AAIA+AACAPwAAgEAAAIBBAACAQwAAgEUAAIBGAACARwAAgEkAAIBKAACAiQAAgIsAAICNAACAjwAAgJIAAICTAACAlAAAgJUAAICWAACAmAAAgJoAAICbAACAnAAAgJ4AAICfAACA3gAAgOAAAIDiAACA5AAAgOcAAIDoAACA6QAAgOoAAIDrAACA7QAAgO8AAIDwAACA8QAAgPMAAID0AACBMwAAgTUAAIE3AACBOQAAgTwAAIE9AACBPgAAgT8AAIFAAACBQgAAgUQAAIFFAACBRgAAgUgAAIFJAACBiAAAgYoAAIGMAACBjgAAgZEAAIGSAACBkwAAgZQAAIGVAACBlwAAgZkAAIGaAACBmwAAgZ0AAIGeAACBwwAAgecAAIIOAACCMgAAgjUAAII3AACCOQAAgjsAAII9AACCPwAAgkAAAIJDAACCUAAAgl8AAIJhAACCYwAAgmUAAIJnAACCaQAAgmsAAIJtAACCfAAAgn8AAIKCAACChQAAgogAAIKLAACCjgAAgpEAAIKTAACC0gAAgtQAAILWAACC2AAAgtsAAILcAACC3QAAgt4AAILfAACC4QAAguMAAILkAACC5QAAgucAAILoAACDJwAAgykAAIMrAACDLQAAgzAAAIMxAACDMgAAgzMAAIM0AACDNgAAgzgAAIM5AACDOgAAgzwAAIM9AACDfAAAg34AAIOAAACDggAAg4UAAIOGAACDhwAAg4gAAIOJAACDiwAAg40AAIOOAACDjwAAg5EAAIOSAACD0QAAg9MAAIPVAACD1wAAg9oAAIPbAACD3AAAg90AAIPeAACD4AAAg+IAAIPjAACD5AAAg+YAAIPnAACEJgAAhCgAAIQqAACELAAAhC8AAIQwAACEMQAAhDIAAIQzAACENQAAhDcAAIQ4AACEOQAAhDsAAIQ8AACEewAAhH0AAIR/AACEgQAAhIQAAISFAACEhgAAhIcAAISIAACEigAAhIwAAISNAACEjgAAhJAAAISRAACE0AAAhNIAAITUAACE1gAAhNkAAITaAACE2wAAhNwAAITdAACE3wAAhOEAAITiAACE4wAAhOUAAITmAACE8QAAhPoAAIT7AACE/QAAhQYAAIURAACFIAAAhSsAAIU5AACFTgAAhWIAAIV5AACFiwAAhcoAAIXMAACFzgAAhdAAAIXSAACF0wAAhdQAAIXVAACF1gAAhdgAAIXaAACF2wAAhdwAAIXeAACF3wAAhh4AAIYgAACGIgAAhiQAAIYmAACGJwAAhigAAIYpAACGKgAAhiwAAIYuAACGLwAAhjAAAIYyAACGMwAAhnIAAIZ0AACGdwAAhnkAAIZ7AACGfAAAhn0AAIZ+AACGfwAAhoEAAIaDAACGhAAAhoUAAIaHAACGiAAAhtMAAIb2AACHFgAAhzYAAIc4AACHOgAAhzwAAIc+AACHQAAAh0EAAIdCAACHRQAAh0YAAIdIAACHSQAAh0sAAIdNAACHTgAAh08AAIdSAACHUwAAh1gAAIdlAACHagAAh2wAAIduAACHcwAAh3YAAId5AACHewAAh6AAAIfEAACH6wAAiA8AAIgSAACIFAAAiBYAAIgYAACIGgAAiBwAAIgdAACIIAAAiC0AAIg+AACIQAAAiEIAAIhEAACIRgAAiEgAAIhKAACITAAAiE4AAIhfAACIYgAAiGUAAIhoAACIawAAiG4AAIhxAACIdAAAiHcAAIh5AACIuAAAiLoAAIi8AACIvgAAiMEAAIjCAACIwwAAiMQAAIjFAACIxwAAiMkAAIjKAACIywAAiM0AAIjOAACJDQAAiQ8AAIkRAACJEwAAiRYAAIkXAACJGAAAiRkAAIkaAACJHAAAiR4AAIkfAACJIAAAiSIAAIkjAACJYgAAiWQAAIlnAACJaQAAiWwAAIltAACJbgAAiW8AAIlwAACJcgAAiXQAAIl1AACJdgAAiXgAAIl5AACJhgAAiYcAAImIAACJigAAickAAInLAACJzQAAic8AAInSAACJ0wAAidQAAInVAACJ1gAAidgAAInaAACJ2wAAidwAAIneAACJ3wAAih4AAIogAACKIgAAiiQAAIonAACKKAAAiikAAIoqAACKKwAAii0AAIovAACKMAAAijEAAIozAACKNAAAinMAAIp1AACKdwAAinkAAIp8AACKfQAAin4AAIp/AACKgAAAioIAAIqEAACKhQAAioYAAIqIAACKiQAAisgAAIrKAACKzAAAis4AAIrRAACK0gAAitMAAIrUAACK1QAAitcAAIrZAACK2gAAitsAAIrdAACK3gAAix0AAIsfAACLIQAAiyMAAIsmAACLJwAAiygAAIspAACLKgAAiywAAIsuAACLLwAAizAAAIsyAACLMwAAi1gAAIt8AACLowAAi8cAAIvKAACLzAAAi84AAIvQAACL0gAAi9QAAIvVAACL2AAAi+UAAIv0AACL9gAAi/gAAIv6AACL/AAAi/4AAIwAAACMAgAAjBEAAIwUAACMFwAAjBoAAIwdAACMIAAAjCMAAIwmAACMKAAAjGcAAIxpAACMbAAAjG4AAIxxAACMcgAAjHMAAIx0AACMdQAAjHcAAIx5AACMegAAjHsAAIx9AACMfgAAjIIAAIzBAACMwwAAjMUAAIzHAACMygAAjMsAAIzMAACMzQAAjM4AAIzQAACM0gAAjNMAAIzUAACM1gAAjNcAAI0WAACNGAAAjRoAAI0cAACNHwAAjSAAAI0hAACNIgAAjSMAAI0lAACNJwAAjSgAAI0pAACNKwAAjSwAAI1rAACNbQAAjXAAAI1yAACNdQAAjXYAAI13AACNeAAAjXkAAI17AACNfQAAjX4AAI1/AACNgQAAjYIAAI2FAACNxAAAjcYAAI3IAACNygAAjc0AAI3OAACNzwAAjdAAAI3RAACN0wAAjdUAAI3WAACN1wAAjdkAAI3aAACOGQAAjhsAAI4dAACOHwAAjiIAAI4jAACOJAAAjiUAAI4mAACOKAAAjioAAI4rAACOLAAAji4AAI4vAACObgAAjnAAAI5yAACOdAAAjncAAI54AACOeQAAjnoAAI57AACOfQAAjn8AAI6AAACOgQAAjoMAAI6EAACOzwAAjvIAAI8SAACPMgAAjzQAAI82AACPOAAAjzoAAI88AACPPQAAjz4AAI9BAACPQgAAj0QAAI9FAACPRwAAj0kAAI9KAACPSwAAj04AAI9PAACPVAAAj2EAAI9mAACPaAAAj2oAAI9vAACPcgAAj3UAAI93AACPnAAAj8AAAI/nAACQCwAAkA4AAJAQAACQEgAAkBQAAJAWAACQGAAAkBkAAJAcAACQKQAAkDoAAJA8AACQPgAAkEAAAJBCAACQRAAAkEYAAJBIAACQSgAAkFsAAJBeAACQYQAAkGQAAJBnAACQagAAkG0AAJBwAACQcwAAkHUAAJC0AACQtgAAkLgAAJC6AACQvQAAkL4AAJC/AACQwAAAkMEAAJDDAACQxQAAkMYAAJDHAACQyQAAkMoAAJEJAACRCwAAkQ0AAJEPAACREgAAkRMAAJEUAACRFQAAkRYAAJEYAACRGgAAkRsAAJEcAACRHgAAkR8AAJFeAACRYAAAkWMAAJFlAACRaAAAkWkAAJFqAACRawAAkWwAAJFuAACRcAAAkXEAAJFyAACRdAAAkXUAAJGCAACRgwAAkYQAAJGGAACRxQAAkccAAJHJAACRywAAkc4AAJHPAACR0AAAkdEAAJHSAACR1AAAkdYAAJHXAACR2AAAkdoAAJHbAACSGgAAkhwAAJIeAACSIAAAkiMAAJIkAACSJQAAkiYAAJInAACSKQAAkisAAJIsAACSLQAAki8AAJIwAACSbwAAknEAAJJzAACSdQAAkngAAJJ5AACSegAAknsAAJJ8AACSfgAAkoAAAJKBAACSggAAkoQAAJKFAACSxAAAksYAAJLIAACSygAAks0AAJLOAACSzwAAktAAAJLRAACS0wAAktUAAJLWAACS1wAAktkAAJLaAACTGQAAkxsAAJMdAACTHwAAkyIAAJMjAACTJAAAkyUAAJMmAACTKAAAkyoAAJMrAACTLAAAky4AAJMvAACTVAAAk3gAAJOfAACTwwAAk8YAAJPIAACTygAAk8wAAJPOAACT0AAAk9EAAJPUAACT4QAAk/AAAJPyAACT9AAAk/YAAJP4AACT+gAAk/wAAJP+AACUDQAAlBAAAJQTAACUFgAAlBkAAJQcAACUHwAAlCIAAJQkAACUYwAAlGUAAJRoAACUagAAlG0AAJRuAACUbwAAlHAAAJRxAACUcwAAlHUAAJR2AACUdwAAlHkAAJR6AACUuQAAlLsAAJS9AACUvwAAlMIAAJTDAACUxAAAlMUAAJTGAACUyAAAlMoAAJTLAACUzAAAlM4AAJTPAACVDgAAlRAAAJUSAACVFAAAlRcAAJUYAACVGQAAlRoAAJUbAACVHQAAlR8AAJUgAACVIQAAlSMAAJUkAACVYwAAlWUAAJVoAACVagAAlW0AAJVuAACVbwAAlXAAAJVxAACVcwAAlXUAAJV2AACVdwAAlXkAAJV6AACVuQAAlbsAAJW9AACVvwAAlcIAAJXDAACVxAAAlcUAAJXGAACVyAAAlcoAAJXLAACVzAAAlc4AAJXPAACWDgAAlhAAAJYSAACWFAAAlhcAAJYYAACWGQAAlhoAAJYbAACWHQAAlh8AAJYgAACWIQAAliMAAJYkAACWYwAAlmUAAJZnAACWaQAAlmwAAJZtAACWbgAAlm8AAJZwAACWcgAAlnQAAJZ1AACWdgAAlngAAJZ5AACWxAAAlucAAJcHAACXJwAAlykAAJcrAACXLQAAly8AAJcxAACXMgAAlzMAAJc2AACXNwAAlzkAAJc6AACXPAAAlz4AAJc/AACXQAAAl0MAAJdEAACXSQAAl1YAAJdbAACXXQAAl18AAJdkAACXZwAAl2oAAJdsAACXkQAAl7UAAJfcAACYAAAAmAMAAJgFAACYBwAAmAkAAJgLAACYDQAAmA4AAJgRAACYHgAAmC8AAJgxAACYMwAAmDUAAJg3AACYOQAAmDsAAJg9AACYPwAAmFAAAJhTAACYVgAAmFkAAJhcAACYXwAAmGIAAJhlAACYaAAAmGoAAJipAACYqwAAmK0AAJivAACYsgAAmLMAAJi0AACYtQAAmLYAAJi4AACYugAAmLsAAJi8AACYvgAAmL8AAJj+AACZAAAAmQIAAJkEAACZBwAAmQgAAJkJAACZCgAAmQsAAJkNAACZDwAAmRAAAJkRAACZEwAAmRQAAJlTAACZVQAAmVgAAJlaAACZXQAAmV4AAJlfAACZYAAAmWEAAJljAACZZQAAmWYAAJlnAACZaQAAmWoAAJl3AACZeAAAmXkAAJl7AACZugAAmbwAAJm+AACZwAAAmcMAAJnEAACZxQAAmcYAAJnHAACZyQAAmcsAAJnMAACZzQAAmc8AAJnQAACaDwAAmhEAAJoTAACaFQAAmhgAAJoZAACaGgAAmhsAAJocAACaHgAAmiAAAJohAACaIgAAmiQAAJolAACaZAAAmmYAAJpoAACaagAAmm0AAJpuAACabwAAmnAAAJpxAACacwAAmnUAAJp2AACadwAAmnkAAJp6AACauQAAmrsAAJq9AACavwAAmsIAAJrDAACaxAAAmsUAAJrGAACayAAAmsoAAJrLAACazAAAms4AAJrPAACbDgAAmxAAAJsSAACbFAAAmxcAAJsYAACbGQAAmxoAAJsbAACbHQAAmx8AAJsgAACbIQAAmyMAAJskAACbSQAAm20AAJuUAACbuAAAm7sAAJu9AACbvwAAm8EAAJvDAACbxQAAm8YAAJvJAACb1gAAm+UAAJvnAACb6QAAm+sAAJvtAACb7wAAm/EAAJvzAACcAgAAnAUAAJwIAACcCwAAnA4AAJwRAACcFAAAnBcAAJwZAACcWAAAnFoAAJxcAACcXgAAnGEAAJxiAACcYwAAnGQAAJxlAACcZwAAnGkAAJxqAACcawAAnG0AAJxuAACcrQAAnK8AAJyxAACcswAAnLYAAJy3AACcuAAAnLkAAJy6AACcvAAAnL4AAJy/AACcwAAAnMIAAJzDAACdAgAAnQQAAJ0GAACdCAAAnQsAAJ0MAACdDQAAnQ4AAJ0PAACdEQAAnRMAAJ0UAACdFQAAnRcAAJ0YAACdVwAAnVkAAJ1bAACdXQAAnWAAAJ1hAACdYgAAnWMAAJ1kAACdZgAAnWgAAJ1pAACdagAAnWwAAJ1tAACdrAAAna4AAJ2wAACdsgAAnbUAAJ22AACdtwAAnbgAAJ25AACduwAAnb0AAJ2+AACdvwAAncEAAJ3CAACeAQAAngMAAJ4FAACeBwAAngoAAJ4LAACeDAAAng0AAJ4OAACeEAAAnhIAAJ4TAACeFAAAnhYAAJ4XAACeVgAAnlgAAJ5aAACeXAAAnl8AAJ5gAACeYQAAnmIAAJ5jAACeZQAAnmcAAJ5oAACeaQAAnmsAAJ5sAACetwAAntoAAJ76AACfGgAAnxwAAJ8eAACfIAAAnyIAAJ8kAACfJQAAnyYAAJ8pAACfKgAAnywAAJ8tAACfLwAAnzEAAJ8yAACfMwAAnzYAAJ83AACfPAAAn0kAAJ9OAACfUAAAn1IAAJ9XAACfWgAAn10AAJ9fAACfhAAAn6gAAJ/PAACf8wAAn/YAAJ/4AACf+gAAn/wAAJ/+AACgAAAAoAEAAKAEAACgEQAAoCIAAKAkAACgJgAAoCgAAKAqAACgLAAAoC4AAKAwAACgMgAAoEMAAKBGAACgSQAAoEwAAKBPAACgUgAAoFUAAKBYAACgWwAAoF0AAKCcAACgngAAoKAAAKCiAACgpQAAoKYAAKCnAACgqAAAoKkAAKCrAACgrQAAoK4AAKCvAACgsQAAoLIAAKDxAACg8wAAoPUAAKD3AACg+gAAoPsAAKD8AACg/QAAoP4AAKEAAAChAgAAoQMAAKEEAAChBgAAoQcAAKFGAAChSAAAoUsAAKFNAAChUAAAoVEAAKFSAAChUwAAoVQAAKFWAAChWAAAoVkAAKFaAAChXAAAoV0AAKFqAAChawAAoWwAAKFuAAChrQAAoa8AAKGxAAChswAAobYAAKG3AAChuAAAobkAAKG6AAChvAAAob4AAKG/AAChwAAAocIAAKHDAACiAgAAogQAAKIGAACiCAAAogsAAKIMAACiDQAAog4AAKIPAACiEQAAohMAAKIUAACiFQAAohcAAKIYAACiVwAAolkAAKJbAACiXQAAomAAAKJhAACiYgAAomMAAKJkAACiZgAAomgAAKJpAACiagAAomwAAKJtAACirAAAoq4AAKKwAACisgAAorUAAKK2AACitwAAorgAAKK5AACiuwAAor0AAKK+AACivwAAosEAAKLCAACjAQAAowMAAKMFAACjBwAAowoAAKMLAACjDAAAow0AAKMOAACjEAAAoxIAAKMTAACjFAAAoxYAAKMXAACjPAAAo2AAAKOHAACjqwAAo64AAKOwAACjsgAAo7QAAKO2AACjuAAAo7kAAKO8AACjyQAAo9gAAKPaAACj3AAAo94AAKPgAACj4gAAo+QAAKPmAACj9QAAo/gAAKP7AACj/gAApAEAAKQEAACkBwAApAoAAKQMAACkSwAApE0AAKRQAACkUgAApFUAAKRWAACkVwAApFgAAKRZAACkWwAApF0AAKReAACkXwAApGEAAKRiAACkZAAApKMAAKSlAACkpwAApKkAAKSsAACkrQAApK4AAKSvAACksAAApLIAAKS0AACktQAApLYAAKS4AACkuQAApPgAAKT6AACk/AAApP4AAKUBAAClAgAApQMAAKUEAAClBQAApQcAAKUJAAClCgAApQsAAKUNAAClDgAApU0AAKVPAAClUgAApVQAAKVXAAClWAAApVkAAKVaAAClWwAApV0AAKVfAAClYAAApWEAAKVjAAClZAAApWcAAKWmAAClqAAApaoAAKWsAAClrwAApbAAAKWxAAClsgAApbMAAKW1AACltwAApbgAAKW5AACluwAApbwAAKX7AACl/QAApf8AAKYBAACmBAAApgUAAKYGAACmBwAApggAAKYKAACmDAAApg0AAKYOAACmEAAAphEAAKZQAACmUgAAplQAAKZWAACmWQAAploAAKZbAACmXAAApl0AAKZfAACmYQAApmIAAKZjAACmZQAApmYAAKaxAACm1AAApvQAAKcUAACnFgAApxgAAKcaAACnHAAApx4AAKcfAACnIAAApyMAAKckAACnJgAApycAAKcpAACnKwAApywAAKctAACnMAAApzEAAKc6AACnRwAAp0wAAKdOAACnUAAAp1UAAKdYAACnWwAAp10AAKeCAACnpgAAp80AAKfxAACn9AAAp/YAAKf4AACn+gAAp/wAAKf+AACn/wAAqAIAAKgPAACoIAAAqCIAAKgkAACoJgAAqCgAAKgqAACoLAAAqC4AAKgwAACoQQAAqEQAAKhHAACoSgAAqE0AAKhQAACoUwAAqFYAAKhZAACoWwAAqJoAAKicAACongAAqKAAAKijAACopAAAqKUAAKimAACopwAAqKkAAKirAACorAAAqK0AAKivAACosAAAqO8AAKjxAACo8wAAqPUAAKj4AACo+QAAqPoAAKj7AACo/AAAqP4AAKkAAACpAQAAqQIAAKkEAACpBQAAqUQAAKlGAACpSQAAqUsAAKlOAACpTwAAqVAAAKlRAACpUgAAqVQAAKlWAACpVwAAqVgAAKlaAACpWwAAqWgAAKlpAACpagAAqWwAAKmrAACprQAAqa8AAKmxAACptAAAqbUAAKm2AACptwAAqbgAAKm6AACpvAAAqb0AAKm+AACpwAAAqcEAAKoAAACqAgAAqgQAAKoGAACqCQAAqgoAAKoLAACqDAAAqg0AAKoPAACqEQAAqhIAAKoTAACqFQAAqhYAAKpVAACqVwAAqlkAAKpbAACqXgAAql8AAKpgAACqYQAAqmIAAKpkAACqZgAAqmcAAKpoAACqagAAqmsAAKqqAACqrAAAqq4AAKqwAACqswAAqrQAAKq1AACqtgAAqrcAAKq5AACquwAAqrwAAKq9AACqvwAAqsAAAKr/AACrAQAAqwMAAKsFAACrCAAAqwkAAKsKAACrCwAAqwwAAKsOAACrEAAAqxEAAKsSAACrFAAAqxUAAKs6AACrXgAAq4UAAKupAACrrAAAq64AAKuwAACrsgAAq7QAAKu2AACrtwAAq7oAAKvHAACr1gAAq9gAAKvaAACr3AAAq94AAKvgAACr4gAAq+QAAKvzAACr9gAAq/kAAKv8AACr/wAArAIAAKwFAACsCAAArAoAAKxJAACsSwAArE4AAKxQAACsUwAArFQAAKxVAACsVgAArFcAAKxZAACsWwAArFwAAKxdAACsXwAArGAAAKyfAACsoQAArKMAAKylAACsqAAArKkAAKyqAACsqwAArKwAAKyuAACssAAArLEAAKyyAACstAAArLUAAKz0AACs9gAArPgAAKz6AACs/QAArP4AAKz/AACtAAAArQEAAK0DAACtBQAArQYAAK0HAACtCQAArQoAAK1JAACtSwAArU4AAK1QAACtUwAArVQAAK1VAACtVgAArVcAAK1ZAACtWwAArVwAAK1dAACtXwAArWAAAK2fAACtoQAAraMAAK2lAACtqAAArakAAK2qAACtqwAArawAAK2uAACtsAAArbEAAK2yAACttAAArbUAAK30AACt9gAArfgAAK36AACt/QAArf4AAK3/AACuAAAArgEAAK4DAACuBQAArgYAAK4HAACuCQAArgoAAK5JAACuSwAArk0AAK5PAACuUgAArlMAAK5UAACuVQAArlYAAK5YAACuWgAArlsAAK5cAACuXgAArl8AAK6qAACuzQAAru0AAK8NAACvDwAArxEAAK8TAACvFQAArxcAAK8YAACvGQAArxwAAK8dAACvHwAAryAAAK8iAACvJAAAryUAAK8mAACvKQAAryoAAK8zAACvQAAAr0UAAK9HAACvSQAAr04AAK9RAACvVAAAr1YAAK97AACvnwAAr8YAAK/qAACv7QAAr+8AAK/xAACv8wAAr/UAAK/3AACv+AAAr/sAALAIAACwGQAAsBsAALAdAACwHwAAsCEAALAjAACwJQAAsCcAALApAACwOgAAsD0AALBAAACwQwAAsEYAALBJAACwTAAAsE8AALBSAACwVAAAsJMAALCVAACwlwAAsJkAALCcAACwnQAAsJ4AALCfAACwoAAAsKIAALCkAACwpQAAsKYAALCoAACwqQAAsOgAALDqAACw7AAAsO4AALDxAACw8gAAsPMAALD0AACw9QAAsPcAALD5AACw+gAAsPsAALD9AACw/gAAsT0AALE/AACxQgAAsUQAALFHAACxSAAAsUkAALFKAACxSwAAsU0AALFPAACxUAAAsVEAALFTAACxVAAAsWEAALFiAACxYwAAsWUAALGkAACxpgAAsagAALGqAACxrQAAsa4AALGvAACxsAAAsbEAALGzAACxtQAAsbYAALG3AACxuQAAsboAALH5AACx+wAAsf0AALH/AACyAgAAsgMAALIEAACyBQAAsgYAALIIAACyCgAAsgsAALIMAACyDgAAsg8AALJOAACyUAAAslIAALJUAACyVwAAslgAALJZAACyWgAAslsAALJdAACyXwAAsmAAALJhAACyYwAAsmQAALKjAACypQAAsqcAALKpAACyrAAAsq0AALKuAACyrwAAsrAAALKyAACytAAAsrUAALK2AACyuAAAsrkAALL4AACy+gAAsvwAALL+AACzAQAAswIAALMDAACzBAAAswUAALMHAACzCQAAswoAALMLAACzDQAAsw4AALMzAACzVwAAs34AALOiAACzpQAAs6cAALOpAACzqwAAs60AALOvAACzsAAAs7MAALPAAACzzwAAs9EAALPTAACz1QAAs9cAALPZAACz2wAAs90AALPsAACz7wAAs/IAALP1AACz+AAAs/sAALP+AAC0AQAAtAMAALRCAAC0RAAAtEYAALRIAAC0SwAAtEwAALRNAAC0TgAAtE8AALRRAAC0UwAAtFQAALRVAAC0VwAAtFgAALSXAAC0mQAAtJsAALSdAAC0oAAAtKEAALSiAAC0owAAtKQAALSmAAC0qAAAtKkAALSqAAC0rAAAtK0AALTsAAC07gAAtPAAALTyAAC09QAAtPYAALT3AAC0+AAAtPkAALT7AAC0/QAAtP4AALT/AAC1AQAAtQIAALVBAAC1QwAAtUUAALVHAAC1SgAAtUsAALVMAAC1TQAAtU4AALVQAAC1UgAAtVMAALVUAAC1VgAAtVcAALWWAAC1mAAAtZoAALWcAAC1nwAAtaAAALWhAAC1ogAAtaMAALWlAAC1pwAAtagAALWpAAC1qwAAtawAALXrAAC17QAAte8AALXxAAC19AAAtfUAALX2AAC19wAAtfgAALX6AAC1/AAAtf0AALX+AAC2AAAAtgEAALZAAAC2QgAAtkQAALZGAAC2SQAAtkoAALZLAAC2TAAAtk0AALZPAAC2UQAAtlIAALZTAAC2VQAAtlYAALahAAC2xAAAtuQAALcEAAC3BgAAtwgAALcKAAC3DAAAtw4AALcPAAC3EAAAtxMAALcUAAC3FgAAtxcAALcZAAC3GwAAtxwAALcdAAC3IAAAtyEAALcmAAC3MwAAtzgAALc6AAC3PAAAt0EAALdEAAC3RwAAt0kAALduAAC3kgAAt7kAALfdAAC34AAAt+IAALfkAAC35gAAt+gAALfqAAC36wAAt+4AALf7AAC4DAAAuA4AALgQAAC4EgAAuBQAALgWAAC4GAAAuBoAALgcAAC4LQAAuDAAALgzAAC4NgAAuDkAALg8AAC4PwAAuEIAALhFAAC4RwAAuIYAALiIAAC4igAAuIwAALiPAAC4kAAAuJEAALiSAAC4kwAAuJUAALiXAAC4mAAAuJkAALibAAC4nAAAuNsAALjdAAC43wAAuOEAALjkAAC45QAAuOYAALjnAAC46AAAuOoAALjsAAC47QAAuO4AALjwAAC48QAAuTAAALkyAAC5NQAAuTcAALk6AAC5OwAAuTwAALk9AAC5PgAAuUAAALlCAAC5QwAAuUQAALlGAAC5RwAAuVQAALlVAAC5VgAAuVgAALmXAAC5mQAAuZsAALmdAAC5oAAAuaEAALmiAAC5owAAuaQAALmmAAC5qAAAuakAALmqAAC5rAAAua0AALnsAAC57gAAufAAALnyAAC59QAAufYAALn3AAC5+AAAufkAALn7AAC5/QAAuf4AALn/AAC6AQAAugIAALpBAAC6QwAAukUAALpHAAC6SgAAuksAALpMAAC6TQAAuk4AALpQAAC6UgAAulMAALpUAAC6VgAAulcAALqWAAC6mAAAupoAALqcAAC6nwAAuqAAALqhAAC6ogAAuqMAALqlAAC6pwAAuqgAALqpAAC6qwAAuqwAALrrAAC67QAAuu8AALrxAAC69AAAuvUAALr2AAC69wAAuvgAALr6AAC6/AAAuv0AALr+AAC7AAAAuwEAALsmAAC7SgAAu3EAALuVAAC7mAAAu5oAALucAAC7ngAAu6AAALuiAAC7owAAu6YAALuzAAC7wgAAu8QAALvGAAC7yAAAu8oAALvMAAC7zgAAu9AAALvfAAC74gAAu+UAALvoAAC76wAAu+4AALvxAAC79AAAu/YAALw1AAC8NwAAvDkAALw7AAC8PgAAvD8AALxAAAC8QQAAvEIAALxEAAC8RgAAvEcAALxIAAC8SgAAvEsAALyKAAC8jAAAvI4AALyQAAC8kwAAvJQAALyVAAC8lgAAvJcAALyZAAC8mwAAvJwAALydAAC8nwAAvKAAALzfAAC84QAAvOMAALzlAAC86AAAvOkAALzqAAC86wAAvOwAALzuAAC88AAAvPEAALzyAAC89AAAvPUAAL00AAC9NgAAvTkAAL07AAC9PgAAvT8AAL1AAAC9QQAAvUIAAL1EAAC9RgAAvUcAAL1IAAC9SgAAvUsAAL1OAAC9jQAAvY8AAL2RAAC9kwAAvZYAAL2XAAC9mAAAvZkAAL2aAAC9nAAAvZ4AAL2fAAC9oAAAvaIAAL2jAAC94gAAveQAAL3mAAC96AAAvesAAL3sAAC97QAAve4AAL3vAAC98QAAvfMAAL30AAC99QAAvfcAAL34AAC+NwAAvjkAAL47AAC+PQAAvkAAAL5BAAC+QgAAvkMAAL5EAAC+RgAAvkgAAL5JAAC+SgAAvkwAAL5NAAC+mAAAvrsAAL7bAAC++wAAvv0AAL7/AAC/AQAAvwMAAL8FAAC/BgAAvwcAAL8KAAC/CwAAvw0AAL8OAAC/EAAAvxIAAL8TAAC/FAAAvxcAAL8YAAC/HQAAvyoAAL8vAAC/MQAAvzMAAL84AAC/OwAAvz4AAL9AAAC/ZQAAv4kAAL+wAAC/1AAAv9cAAL/ZAAC/2wAAv90AAL/fAAC/4QAAv+IAAL/lAAC/8gAAwAMAAMAFAADABwAAwAkAAMALAADADQAAwA8AAMARAADAEwAAwCQAAMAnAADAKgAAwC0AAMAwAADAMwAAwDYAAMA5AADAPAAAwD4AAMB9AADAfwAAwIEAAMCDAADAhgAAwIcAAMCIAADAiQAAwIoAAMCMAADAjgAAwI8AAMCQAADAkgAAwJMAAMDSAADA1AAAwNYAAMDYAADA2wAAwNwAAMDdAADA3gAAwN8AAMDhAADA4wAAwOQAAMDlAADA5wAAwOgAAMEnAADBKQAAwSwAAMEuAADBMQAAwTIAAMEzAADBNAAAwTUAAME3AADBOQAAwToAAME7AADBPQAAwT4AAMFLAADBTAAAwU0AAMFPAADBjgAAwZAAAMGSAADBlAAAwZcAAMGYAADBmQAAwZoAAMGbAADBnQAAwZ8AAMGgAADBoQAAwaMAAMGkAADB4wAAweUAAMHnAADB6QAAwewAAMHtAADB7gAAwe8AAMHwAADB8gAAwfQAAMH1AADB9gAAwfgAAMH5AADCOAAAwjoAAMI8AADCPgAAwkEAAMJCAADCQwAAwkQAAMJFAADCRwAAwkkAAMJKAADCSwAAwk0AAMJOAADCjQAAwo8AAMKRAADCkwAAwpYAAMKXAADCmAAAwpkAAMKaAADCnAAAwp4AAMKfAADCoAAAwqIAAMKjAADC4gAAwuQAAMLmAADC6AAAwusAAMLsAADC7QAAwu4AAMLvAADC8QAAwvMAAML0AADC9QAAwvcAAML4AADDHQAAw0EAAMNoAADDjAAAw48AAMORAADDkwAAw5UAAMOXAADDmQAAw5oAAMOdAADDqgAAw7kAAMO7AADDvQAAw78AAMPBAADDwwAAw8UAAMPHAADD1gAAw9kAAMPcAADD3wAAw+IAAMPlAADD6AAAw+sAAMPtAADELAAAxC4AAMQwAADEMgAAxDUAAMQ2AADENwAAxDgAAMQ5AADEOwAAxD0AAMQ+AADEPwAAxEEAAMRCAADEgQAAxIMAAMSFAADEhwAAxIoAAMSLAADEjAAAxI0AAMSOAADEkAAAxJIAAMSTAADElAAAxJYAAMSXAADE1gAAxNgAAMTaAADE3AAAxN8AAMTgAADE4QAAxOIAAMTjAADE5QAAxOcAAMToAADE6QAAxOsAAMTsAADFKwAAxS0AAMUwAADFMgAAxTUAAMU2AADFNwAAxTgAAMU5AADFOwAAxT0AAMU+AADFPwAAxUEAAMVCAADFhQAAxakAAMXNAADF8AAAxhcAAMY3AADGXgAAxoUAAMalAADGyQAAxu0AAMbvAADG8gAAxvQAAMb2AADG+AAAxvsAAMb+AADHAAAAxwIAAMcFAADHBwAAxwkAAMcMAADHDwAAxxAAAMcVAADHIgAAxyUAAMcnAADHKgAAxy0AAMcvAADHVAAAx3gAAMefAADHwwAAx8YAAMfIAADHygAAx8wAAMfOAADH0AAAx9EAAMfUAADH4QAAx/QAAMf2AADH+AAAx/oAAMf8AADH/gAAyAAAAMgCAADIBAAAyAYAAMgZAADIHAAAyB8AAMgiAADIJQAAyCgAAMgrAADILgAAyDEAAMg0AADINgAAyHUAAMh3AADIegAAyHwAAMh/AADIgAAAyIEAAMiCAADIgwAAyIUAAMiHAADIiAAAyIkAAMiLAADIjAAAyJUAAMiWAADImAAAyNcAAMjZAADI2wAAyN0AAMjgAADI4QAAyOIAAMjjAADI5AAAyOYAAMjoAADI6QAAyOoAAMjsAADI7QAAySwAAMkuAADJMQAAyTMAAMk2AADJNwAAyTgAAMk5AADJOgAAyTwAAMk+AADJPwAAyUAAAMlCAADJQwAAyUwAAMlNAADJTwAAyY4AAMmQAADJkgAAyZQAAMmXAADJmAAAyZkAAMmaAADJmwAAyZ0AAMmfAADJoAAAyaEAAMmjAADJpAAAyeMAAMnlAADJ6AAAyeoAAMntAADJ7gAAye8AAMnwAADJ8QAAyfMAAMn1AADJ9gAAyfcAAMn5AADJ+gAAygMAAMoEAADKBgAAykUAAMpHAADKSQAAyksAAMpOAADKTwAAylAAAMpRAADKUgAAylQAAMpWAADKVwAAylgAAMpaAADKWwAAypoAAMqcAADKnwAAyqEAAMqkAADKpQAAyqYAAMqnAADKqAAAyqoAAMqsAADKrQAAyq4AAMqwAADKsQAAyr4AAMq/AADKwAAAysIAAMsBAADLAwAAywUAAMsHAADLCgAAywsAAMsMAADLDQAAyw4AAMsQAADLEgAAyxMAAMsUAADLFgAAyxcAAMtWAADLWAAAy1oAAMtcAADLXwAAy2AAAMthAADLYgAAy2MAAMtlAADLZwAAy2gAAMtpAADLawAAy2wAAMt5AADLggAAy4UAAMuHAADLigAAy40AAMuWAADLmQAAy5wAAMufAADLogAAy6QAAMuzAADLxQAAy9IAAMwdAADMQAAAzGAAAMyAAADMggAAzIQAAMyGAADMiAAAzIsAAMyMAADMjQAAzJAAAMyRAADMkwAAzJQAAMyWAADMmQAAzJoAAMybAADMngAAzJ8AAMykAADMsQAAzLYAAMy4AADMugAAzL8AAMzCAADMxQAAzMcAAMzsAADNEAAAzTcAAM1bAADNXgAAzWAAAM1iAADNZAAAzWYAAM1oAADNaQAAzWwAAM15AADNigAAzYwAAM2OAADNkAAAzZIAAM2UAADNlgAAzZgAAM2aAADNqwAAza4AAM2xAADNtAAAzbcAAM26AADNvQAAzcAAAM3DAADNxQAAzgQAAM4GAADOCAAAzgoAAM4NAADODgAAzg8AAM4QAADOEQAAzhMAAM4VAADOFgAAzhcAAM4ZAADOGgAAzlkAAM5bAADOXQAAzl8AAM5iAADOYwAAzmQAAM5lAADOZgAAzmgAAM5qAADOawAAzmwAAM5uAADObwAAzq4AAM6wAADOswAAzrUAAM64AADOuQAAzroAAM67AADOvAAAzr4AAM7AAADOwQAAzsIAAM7EAADOxQAAztIAAM7TAADO1AAAztYAAM8VAADPFwAAzxkAAM8bAADPHgAAzx8AAM8gAADPIQAAzyIAAM8kAADPJgAAzycAAM8oAADPKgAAzysAAM9qAADPbAAAz24AAM9wAADPcwAAz3QAAM91AADPdgAAz3cAAM95AADPewAAz3wAAM99AADPfwAAz4AAAM+/AADPwQAAz8MAAM/FAADPyAAAz8kAAM/KAADPywAAz8wAAM/OAADP0AAAz9EAAM/SAADP1AAAz9UAANAUAADQFgAA0BgAANAaAADQHQAA0B4AANAfAADQIAAA0CEAANAjAADQJQAA0CYAANAnAADQKQAA0CoAANBpAADQawAA0G0AANBvAADQcgAA0HMAANB0AADQdQAA0HYAANB4AADQegAA0HsAANB8AADQfgAA0H8AANCkAADQyAAA0O8AANETAADRFgAA0RgAANEaAADRHAAA0R4AANEgAADRIQAA0SQAANExAADRQAAA0UIAANFEAADRRgAA0UgAANFKAADRTAAA0U4AANFdAADRYAAA0WMAANFmAADRaQAA0WwAANFvAADRcgAA0XQAANGzAADRtQAA0bcAANG5AADRvAAA0b0AANG+AADRvwAA0cAAANHCAADRxAAA0cUAANHGAADRyAAA0ckAANIIAADSCgAA0gwAANIOAADSEQAA0hIAANITAADSFAAA0hUAANIXAADSGQAA0hoAANIbAADSHQAA0h4AANJdAADSXwAA0mEAANJjAADSZgAA0mcAANJoAADSaQAA0moAANJsAADSbgAA0m8AANJwAADScgAA0nMAANKyAADStAAA0rYAANK4AADSuwAA0rwAANK9AADSvgAA0r8AANLBAADSwwAA0sQAANLFAADSxwAA0sgAANMHAADTCQAA0wsAANMNAADTEAAA0xEAANMSAADTEwAA0xQAANMWAADTGAAA0xkAANMaAADTHAAA0x0AANNcAADTXgAA02AAANNiAADTZQAA02YAANNnAADTaAAA02kAANNrAADTbQAA024AANNvAADTcQAA03IAANOxAADTswAA07YAANO4AADTuwAA07wAANO9AADTvgAA078AANPBAADTwwAA08QAANPFAADTxwAA08gAANQTAADUNgAA1FYAANR2AADUeAAA1HoAANR8AADUfgAA1IEAANSCAADUgwAA1IYAANSHAADUiQAA1IoAANSMAADUjgAA1I8AANSQAADUkwAA1JQAANSdAADUqgAA1K8AANSxAADUswAA1LgAANS7AADUvgAA1MAAANTlAADVCQAA1TAAANVUAADVVwAA1VkAANVbAADVXQAA1V8AANVhAADVYgAA1WUAANVyAADVgwAA1YUAANWHAADViQAA1YsAANWNAADVjwAA1ZEAANWTAADVpAAA1acAANWqAADVrQAA1bAAANWzAADVtgAA1bkAANW8AADVvgAA1f0AANX/AADWAQAA1gMAANYGAADWBwAA1ggAANYJAADWCgAA1gwAANYOAADWDwAA1hAAANYSAADWEwAA1lIAANZUAADWVgAA1lgAANZbAADWXAAA1l0AANZeAADWXwAA1mEAANZjAADWZAAA1mUAANZnAADWaAAA1qcAANapAADWrAAA1q4AANaxAADWsgAA1rMAANa0AADWtQAA1rcAANa5AADWugAA1rsAANa9AADWvgAA1ssAANbMAADWzQAA1s8AANcOAADXEAAA1xIAANcUAADXFwAA1xgAANcZAADXGgAA1xsAANcdAADXHwAA1yAAANchAADXIwAA1yQAANdjAADXZQAA12cAANdpAADXbAAA120AANduAADXbwAA13AAANdyAADXdAAA13UAANd2AADXeAAA13kAANe4AADXugAA17wAANe+AADXwQAA18IAANfDAADXxAAA18UAANfHAADXyQAA18oAANfLAADXzQAA184AANgNAADYDwAA2BEAANgTAADYFgAA2BcAANgYAADYGQAA2BoAANgcAADYHgAA2B8AANggAADYIgAA2CMAANhiAADYZAAA2GYAANhoAADYawAA2GwAANhtAADYbgAA2G8AANhxAADYcwAA2HQAANh1AADYdwAA2HgAANidAADYwQAA2OgAANkMAADZDwAA2REAANkTAADZFQAA2RcAANkZAADZGgAA2R0AANkqAADZOQAA2TsAANk9AADZPwAA2UEAANlDAADZRQAA2UcAANlWAADZWQAA2VwAANlfAADZYgAA2WUAANloAADZawAA2W0AANmsAADZrgAA2bAAANmyAADZtQAA2bYAANm3AADZuAAA2bkAANm7AADZvQAA2b4AANm/AADZwQAA2cIAANoBAADaAwAA2gUAANoHAADaCgAA2gsAANoMAADaDQAA2g4AANoQAADaEgAA2hMAANoUAADaFgAA2hcAANpWAADaWAAA2loAANpcAADaXwAA2mAAANphAADaYgAA2mMAANplAADaZwAA2mgAANppAADaawAA2mwAANqrAADarQAA2q8AANqxAADatAAA2rUAANq2AADatwAA2rgAANq6AADavAAA2r0AANq+AADawAAA2sEAANsAAADbAgAA2wQAANsGAADbCQAA2woAANsLAADbDAAA2w0AANsPAADbEQAA2xIAANsTAADbFQAA2xYAANtVAADbVwAA21kAANtbAADbXgAA218AANtgAADbYQAA22IAANtkAADbZgAA22cAANtoAADbagAA22sAANuqAADbrAAA268AANuxAADbtAAA27UAANu2AADbtwAA27gAANu6AADbvAAA270AANu+AADbwAAA28EAANwMAADcLwAA3E8AANxvAADccQAA3HMAANx1AADcdwAA3HkAANx6AADcewAA3H4AANx/AADcgQAA3IIAANyEAADchgAA3IcAANyIAADciwAA3IwAANyRAADcngAA3KMAANylAADcpwAA3KwAANyvAADcsgAA3LQAANzZAADc/QAA3SQAAN1IAADdSwAA3U0AAN1PAADdUQAA3VMAAN1VAADdVgAA3VkAAN1mAADddwAA3XkAAN17AADdfQAA3X8AAN2BAADdgwAA3YUAAN2HAADdmAAA3ZsAAN2eAADdoQAA3aQAAN2nAADdqgAA3a0AAN2wAADdsgAA3fEAAN3zAADd9QAA3fcAAN36AADd+wAA3fwAAN39AADd/gAA3gAAAN4CAADeAwAA3gQAAN4GAADeBwAA3kYAAN5IAADeSgAA3kwAAN5PAADeUAAA3lEAAN5SAADeUwAA3lUAAN5XAADeWAAA3lkAAN5bAADeXAAA3psAAN6dAADeoAAA3qIAAN6lAADepgAA3qcAAN6oAADeqQAA3qsAAN6tAADergAA3q8AAN6xAADesgAA3r8AAN7AAADewQAA3sMAAN8CAADfBAAA3wYAAN8IAADfCwAA3wwAAN8NAADfDgAA3w8AAN8RAADfEwAA3xQAAN8VAADfFwAA3xgAAN9XAADfWQAA31sAAN9dAADfYAAA32EAAN9iAADfYwAA32QAAN9mAADfaAAA32kAAN9qAADfbAAA320AAN+sAADfrgAA37AAAN+yAADftQAA37YAAN+3AADfuAAA37kAAN+7AADfvQAA374AAN+/AADfwQAA38IAAOABAADgAwAA4AUAAOAHAADgCgAA4AsAAOAMAADgDQAA4A4AAOAQAADgEgAA4BMAAOAUAADgFgAA4BcAAOBWAADgWAAA4FoAAOBcAADgXwAA4GAAAOBhAADgYgAA4GMAAOBlAADgZwAA4GgAAOBpAADgawAA4GwAAOCRAADgtQAA4NwAAOEAAADhAwAA4QUAAOEHAADhCQAA4QsAAOENAADhDgAA4REAAOEeAADhLQAA4S8AAOExAADhMwAA4TUAAOE3AADhOQAA4TsAAOFKAADhTQAA4VAAAOFTAADhVgAA4VkAAOFcAADhXwAA4WEAAOGgAADhogAA4aQAAOGmAADhqQAA4aoAAOGrAADhrAAA4a0AAOGvAADhsQAA4bIAAOGzAADhtQAA4bYAAOH1AADh9wAA4fkAAOH7AADh/gAA4f8AAOIAAADiAQAA4gIAAOIEAADiBgAA4gcAAOIIAADiCgAA4gsAAOJKAADiTAAA4k4AAOJQAADiUwAA4lQAAOJVAADiVgAA4lcAAOJZAADiWwAA4lwAAOJdAADiXwAA4mAAAOKfAADioQAA4qQAAOKmAADiqQAA4qoAAOKrAADirAAA4q0AAOKvAADisQAA4rIAAOKzAADitQAA4rYAAOL1AADi9wAA4vkAAOL7AADi/gAA4v8AAOMAAADjAQAA4wIAAOMEAADjBgAA4wcAAOMIAADjCgAA4wsAAONKAADjTAAA404AAONQAADjUwAA41QAAONVAADjVgAA41cAAONZAADjWwAA41wAAONdAADjXwAA42AAAOOfAADjoQAA46QAAOOmAADjqQAA46oAAOOrAADjrAAA460AAOOvAADjsQAA47IAAOOzAADjtQAA47YAAOQBAADkJAAA5EQAAORkAADkZgAA5GgAAORqAADkbAAA5G8AAORwAADkcQAA5HQAAOR1AADkdwAA5HgAAOR6AADkfQAA5H4AAOR/AADkggAA5IMAAOSIAADklQAA5JoAAOScAADkngAA5KMAAOSmAADkqQAA5KsAAOTQAADk9AAA5RsAAOU/AADlQgAA5UQAAOVGAADlSAAA5UoAAOVMAADlTQAA5VAAAOVdAADlbgAA5XAAAOVyAADldAAA5XYAAOV4AADlegAA5XwAAOV+AADljwAA5ZIAAOWVAADlmAAA5ZsAAOWeAADloQAA5aQAAOWnAADlqQAA5egAAOXqAADl7AAA5e4AAOXxAADl8gAA5fMAAOX0AADl9QAA5fcAAOX5AADl+gAA5fsAAOX9AADl/gAA5j0AAOY/AADmQQAA5kMAAOZGAADmRwAA5kgAAOZJAADmSgAA5kwAAOZOAADmTwAA5lAAAOZSAADmUwAA5pIAAOaUAADmlwAA5pkAAOacAADmnQAA5p4AAOafAADmoAAA5qIAAOakAADmpQAA5qYAAOaoAADmqQAA5rYAAOa3AADmuAAA5roAAOb5AADm+wAA5v0AAOb/AADnAgAA5wMAAOcEAADnBQAA5wYAAOcIAADnCgAA5wsAAOcMAADnDgAA5w8AAOdOAADnUAAA51IAAOdUAADnVwAA51gAAOdZAADnWgAA51sAAOddAADnXwAA52AAAOdhAADnYwAA52QAAOejAADnpQAA56cAAOepAADnrAAA560AAOeuAADnrwAA57AAAOeyAADntAAA57UAAOe2AADnuAAA57kAAOf4AADn+gAA5/wAAOf+AADoAQAA6AIAAOgDAADoBAAA6AUAAOgHAADoCQAA6AoAAOgLAADoDQAA6A4AAOhNAADoTwAA6FEAAOhTAADoVgAA6FcAAOhYAADoWQAA6FoAAOhcAADoXgAA6F8AAOhgAADoYgAA6GMAAOiIAADorAAA6NMAAOj3AADo+gAA6PwAAOj+AADpAAAA6QIAAOkEAADpBQAA6QgAAOkVAADpJAAA6SYAAOkoAADpKgAA6SwAAOkuAADpMAAA6TIAAOlBAADpRAAA6UcAAOlKAADpTQAA6VAAAOlTAADpVgAA6VgAAOmXAADpmQAA6ZsAAOmdAADpoAAA6aEAAOmiAADpowAA6aQAAOmmAADpqAAA6akAAOmqAADprAAA6a0AAOnsAADp7gAA6fAAAOnyAADp9QAA6fYAAOn3AADp+AAA6fkAAOn7AADp/QAA6f4AAOn/AADqAQAA6gIAAOpBAADqQwAA6kUAAOpHAADqSgAA6ksAAOpMAADqTQAA6k4AAOpQAADqUgAA6lMAAOpUAADqVgAA6lcAAOqWAADqmAAA6psAAOqdAADqoAAA6qEAAOqiAADqowAA6qQAAOqmAADqqAAA6qkAAOqqAADqrAAA6q0AAOrwAADrFAAA6zgAAOtbAADrggAA66IAAOvJAADr8AAA7BAAAOw0AADsWAAA7FoAAOxdAADsXwAA7GEAAOxjAADsZgAA7GkAAOxrAADsbQAA7HAAAOxyAADsdAAA7HcAAOx6AADsewAA7IAAAOyNAADskAAA7JIAAOyVAADsmAAA7JoAAOy/AADs4wAA7QoAAO0uAADtMQAA7TMAAO01AADtNwAA7TkAAO07AADtPAAA7T8AAO1MAADtXwAA7WEAAO1jAADtZQAA7WcAAO1pAADtawAA7W0AAO1vAADtcQAA7YQAAO2HAADtigAA7Y0AAO2QAADtkwAA7ZYAAO2ZAADtnAAA7Z8AAO2hAADt4AAA7eIAAO3lAADt5wAA7eoAAO3rAADt7AAA7e0AAO3uAADt8AAA7fIAAO3zAADt9AAA7fYAAO33AADuAAAA7gEAAO4DAADuQgAA7kQAAO5HAADuSQAA7kwAAO5NAADuTgAA7k8AAO5QAADuUgAA7lQAAO5VAADuVgAA7lgAAO5ZAADuZwAA7qYAAO6oAADuqwAA7q0AAO6wAADusQAA7rIAAO6zAADutAAA7rYAAO64AADuuQAA7roAAO68AADuvQAA7sYAAO7HAADuyQAA7wgAAO8KAADvDAAA7w4AAO8RAADvEgAA7xMAAO8UAADvFQAA7xcAAO8ZAADvGgAA7xsAAO8dAADvHgAA710AAO9fAADvYgAA72QAAO9nAADvaAAA72kAAO9qAADvawAA720AAO9vAADvcAAA73EAAO9zAADvdAAA730AAO9+AADvgAAA778AAO/BAADvwwAA78UAAO/IAADvyQAA78oAAO/LAADvzAAA784AAO/QAADv0QAA79IAAO/UAADv1QAA8BQAAPAWAADwGQAA8BsAAPAeAADwHwAA8CAAAPAhAADwIgAA8CQAAPAmAADwJwAA8CgAAPAqAADwKwAA8DgAAPA5AADwOgAA8DwAAPB7AADwfQAA8H8AAPCBAADwhAAA8IUAAPCGAADwhwAA8IgAAPCKAADwjAAA8I0AAPCOAADwkAAA8JEAAPDQAADw0gAA8NQAAPDWAADw2QAA8NoAAPDbAADw3AAA8N0AAPDfAADw4QAA8OIAAPDjAADw5QAA8OYAAPDzAADxLAAA8S8AAPEyAADxNQAA8TgAAPE7AADxPgAA8UEAAPFEAADxRwAA8UoAAPFNAADxUAAA8VMAAPFVAADxWAAA8VsAAPFdAADxYAAA8WMAAPFmAADxaQAA8WwAAPFvAADxcgAA8XUAAPF4AADxewAA8bQAAPG3AADxugAA8b0AAPHAAADxwwAA8cYAAPHJAADxzAAA8c8AAPHSAADx1QAA8dgAAPHbAADx3gAA8eEAAPHkAADx5wAA8eoAAPHtAADx8AAA8fMAAPH2AADx+QAA8fwAAPH/AADyAgAA8gUAAPIHAADyGgAA8jwAAPJbAADybwAA8o0AAPKqAADyzgAA8u8AAPMSAADzLQAA80AAAPNUAADzcQAA84AAAPOUAADzqQAA87sAAPPKAADz5AAA9AAAAPQeAAD0JwAA9DUA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ARC2AAEQuQABELoAARC7AAEQvAABEL0AARC/AAEQwQABEMIAARDDAAEQxQABEMYAARDcAAERGwABER0AAREfAAERIQABESQAARElAAERJgABEScAAREoAAERKgABESwAAREtAAERLgABETAAARExAAERVgABEXoAARGhAAERxQABEcgAARHKAAERzAABEc4AARHQAAER0gABEdMAARHWAAER4wABEfIAARH0AAER9gABEfgAARH6AAER/AABEf4AARIAAAESDwABEhIAARIVAAESGAABEhsAARIeAAESIQABEiQAARImAAESZQABEmcAARJpAAESawABEm4AARJvAAEScAABEnEAARJyAAESdAABEnYAARJ3AAESeAABEnoAARJ7AAESugABErwAARK+AAESwAABEsMAARLEAAESxQABEsYAARLHAAESyQABEssAARLMAAESzQABEs8AARLQAAETDwABExEAARMTAAETFQABExgAARMZAAETGgABExsAARMcAAETHgABEyAAARMhAAETIgABEyQAARMlAAETZAABE2YAARNoAAETagABE20AARNuAAETbwABE3AAARNxAAETcwABE3UAARN2AAETdwABE3kAARN6AAETuQABE7sAARO9AAETvwABE8IAARPDAAETxAABE8UAARPGAAETyAABE8oAARPLAAETzAABE84AARPPAAEUDgABFBAAARQSAAEUFAABFBcAARQYAAEUGQABFBoAARQbAAEUHQABFB8AARQgAAEUIQABFCMAARQkAAEUYwABFGUAARRnAAEUaQABFGwAARRtAAEUbgABFG8AARRwAAEUcgABFHQAARR1AAEUdgABFHgAARR5AAEUxAABFOcAARUHAAEVJwABFSkAARUrAAEVLQABFS8AARUyAAEVMwABFTQAARU3AAEVOAABFToAARU7AAEVPQABFUAAARVBAAEVQgABFUUAARVGAAEVTwABFVwAARVhAAEVYwABFWUAARVqAAEVbQABFXAAARVyAAEVlwABFbsAARXiAAEWBgABFgkAARYLAAEWDQABFg8AARYRAAEWEwABFhQAARYXAAEWJAABFjUAARY3AAEWOQABFjsAARY9AAEWPwABFkEAARZDAAEWRQABFlYAARZZAAEWXAABFl8AARZiAAEWZQABFmgAARZrAAEWbgABFnAAARavAAEWsQABFrMAARa1AAEWuAABFrkAARa6AAEWuwABFrwAARa+AAEWwAABFsEAARbCAAEWxAABFsUAARcEAAEXBgABFwgAARcKAAEXDQABFw4AARcPAAEXEAABFxEAARcTAAEXFQABFxYAARcXAAEXGQABFxoAARdZAAEXWwABF14AARdgAAEXYwABF2QAARdlAAEXZgABF2cAARdpAAEXawABF2wAARdtAAEXbwABF3AAARd9AAEXfgABF38AAReBAAEXwAABF8IAARfEAAEXxgABF8kAARfKAAEXywABF8wAARfNAAEXzwABF9EAARfSAAEX0wABF9UAARfWAAEYFQABGBcAARgZAAEYGwABGB4AARgfAAEYIAABGCEAARgiAAEYJAABGCYAARgnAAEYKAABGCoAARgrAAEYagABGGwAARhuAAEYcAABGHMAARh0AAEYdQABGHYAARh3AAEYeQABGHsAARh8AAEYfQABGH8AARiAAAEYvwABGMEAARjDAAEYxQABGMgAARjJAAEYygABGMsAARjMAAEYzgABGNAAARjRAAEY0gABGNQAARjVAAEZFAABGRYAARkYAAEZGgABGR0AARkeAAEZHwABGSAAARkhAAEZIwABGSUAARkmAAEZJwABGSkAARkqAAEZTwABGXMAARmaAAEZvgABGcEAARnDAAEZxQABGccAARnJAAEZywABGcwAARnPAAEZ3AABGesAARntAAEZ7wABGfEAARnzAAEZ9QABGfcAARn5AAEaCAABGgsAARoOAAEaEQABGhQAARoXAAEaGgABGh0AARofAAEaXgABGmAAARpiAAEaZAABGmcAARpoAAEaaQABGmoAARprAAEabQABGm8AARpwAAEacQABGnMAARp0AAEaswABGrUAARq3AAEauQABGrwAARq9AAEavgABGr8AARrAAAEawgABGsQAARrFAAEaxgABGsgAARrJAAEbCAABGwoAARsMAAEbDgABGxEAARsSAAEbEwABGxQAARsVAAEbFwABGxkAARsaAAEbGwABGx0AARseAAEbXQABG18AARthAAEbYwABG2YAARtnAAEbaAABG2kAARtqAAEbbAABG24AARtvAAEbcAABG3IAARtzAAEbsgABG7QAARu2AAEbuAABG7sAARu8AAEbvQABG74AARu/AAEbwQABG8MAARvEAAEbxQABG8cAARvIAAEcBwABHAkAARwLAAEcDQABHBAAARwRAAEcEgABHBMAARwUAAEcFgABHBgAARwZAAEcGgABHBwAARwdAAEcXAABHF4AARxgAAEcYgABHGUAARxmAAEcZwABHGgAARxpAAEcawABHG0AARxuAAEcbwABHHEAARxyAAEcvQABHOAAAR0AAAEdIAABHSIAAR0kAAEdJgABHSgAAR0rAAEdLAABHS0AAR0wAAEdMQABHTMAAR00AAEdNgABHTkAAR06AAEdOwABHT4AAR0/AAEdSAABHVUAAR1aAAEdXAABHV4AAR1jAAEdZgABHWkAAR1rAAEdkAABHbQAAR3bAAEd/wABHgIAAR4EAAEeBgABHggAAR4KAAEeDAABHg0AAR4QAAEeHQABHi4AAR4wAAEeMgABHjQAAR42AAEeOAABHjoAAR48AAEePgABHk8AAR5SAAEeVQABHlgAAR5bAAEeXgABHmEAAR5kAAEeZwABHmkAAR6oAAEeqgABHqwAAR6uAAEesQABHrIAAR6zAAEetAABHrUAAR63AAEeuQABHroAAR67AAEevQABHr4AAR79AAEe/wABHwEAAR8DAAEfBgABHwcAAR8IAAEfCQABHwoAAR8MAAEfDgABHw8AAR8QAAEfEgABHxMAAR9SAAEfVAABH1cAAR9ZAAEfXAABH10AAR9eAAEfXwABH2AAAR9iAAEfZAABH2UAAR9mAAEfaAABH2kAAR92AAEfdwABH3gAAR96AAEfuQABH7sAAR+9AAEfvwABH8IAAR/DAAEfxAABH8UAAR/GAAEfyAABH8oAAR/LAAEfzAABH84AAR/PAAEgDgABIBAAASASAAEgFAABIBcAASAYAAEgGQABIBoAASAbAAEgHQABIB8AASAgAAEgIQABICMAASAkAAEgYwABIGUAASBnAAEgaQABIGwAASBtAAEgbgABIG8AASBwAAEgcgABIHQAASB1AAEgdgABIHgAASB5AAEguAABILoAASC8AAEgvgABIMEAASDCAAEgwwABIMQAASDFAAEgxwABIMkAASDKAAEgywABIM0AASDOAAEhDQABIQ8AASERAAEhEwABIRYAASEXAAEhGAABIRkAASEaAAEhHAABIR4AASEfAAEhIAABISIAASEjAAEhSAABIWwAASGTAAEhtwABIboAASG8AAEhvgABIcAAASHCAAEhxAABIcUAASHIAAEh1QABIeQAASHmAAEh6AABIeoAASHsAAEh7gABIfAAASHyAAEiAQABIgQAASIHAAEiCgABIg0AASIQAAEiEwABIhYAASIYAAEiVwABIlkAASJbAAEiXQABImAAASJhAAEiYgABImMAASJkAAEiZgABImgAASJpAAEiagABImwAASJtAAEirAABIq4AASKwAAEisgABIrUAASK2AAEitwABIrgAASK5AAEiuwABIr0AASK+AAEivwABIsEAASLCAAEjAQABIwMAASMFAAEjBwABIwoAASMLAAEjDAABIw0AASMOAAEjEAABIxIAASMTAAEjFAABIxYAASMXAAEjVgABI1gAASNaAAEjXAABI18AASNgAAEjYQABI2IAASNjAAEjZQABI2cAASNoAAEjaQABI2sAASNsAAEjqwABI60AASOvAAEjsQABI7QAASO1AAEjtgABI7cAASO4AAEjugABI7wAASO9AAEjvgABI8AAASPBAAEkAAABJAIAASQEAAEkBgABJAkAASQKAAEkCwABJAwAASQNAAEkDwABJBEAASQSAAEkEwABJBUAASQWAAEkVQABJFcAASRZAAEkWwABJF4AASRfAAEkYAABJGEAASRiAAEkZAABJGYAASRnAAEkaAABJGoAASRrAAEktgABJNkAAST5AAElGQABJRsAASUdAAElHwABJSEAASUkAAElJQABJSYAASUpAAElKgABJSwAASUtAAElLwABJTIAASUzAAElNAABJTcAASU4AAElPQABJUoAASVPAAElUQABJVMAASVYAAElWwABJV4AASVgAAElhQABJakAASXQAAEl9AABJfcAASX5AAEl+wABJf0AASX/AAEmAQABJgIAASYFAAEmEgABJiMAASYlAAEmJwABJikAASYrAAEmLQABJi8AASYxAAEmMwABJkQAASZHAAEmSgABJk0AASZQAAEmUwABJlYAASZZAAEmXAABJl4AASadAAEmnwABJqEAASajAAEmpgABJqcAASaoAAEmqQABJqoAASasAAEmrgABJq8AASawAAEmsgABJrMAASbyAAEm9AABJvYAASb4AAEm+wABJvwAASb9AAEm/gABJv8AAScBAAEnAwABJwQAAScFAAEnBwABJwgAASdHAAEnSQABJ0wAASdOAAEnUQABJ1IAASdTAAEnVAABJ1UAASdXAAEnWQABJ1oAASdbAAEnXQABJ14AASdrAAEnbAABJ20AASdvAAEnrgABJ7AAASeyAAEntAABJ7cAASe4AAEnuQABJ7oAASe7AAEnvQABJ78AASfAAAEnwQABJ8MAASfEAAEoAwABKAUAASgHAAEoCQABKAwAASgNAAEoDgABKA8AASgQAAEoEgABKBQAASgVAAEoFgABKBgAASgZAAEoWAABKFoAAShcAAEoXgABKGEAAShiAAEoYwABKGQAAShlAAEoZwABKGkAAShqAAEoawABKG0AAShuAAEorQABKK8AASixAAEoswABKLYAASi3AAEouAABKLkAASi6AAEovAABKL4AASi/AAEowAABKMIAASjDAAEpAgABKQQAASkGAAEpCAABKQsAASkMAAEpDQABKQ4AASkPAAEpEQABKRMAASkUAAEpFQABKRcAASkYAAEpPQABKWEAASmIAAEprAABKa8AASmxAAEpswABKbUAASm3AAEpuQABKboAASm9AAEpygABKdkAASnbAAEp3QABKd8AASnhAAEp4wABKeUAASnnAAEp9gABKfkAASn8AAEp/wABKgIAASoFAAEqCAABKgsAASoNAAEqTAABKk4AASpQAAEqUgABKlUAASpWAAEqVwABKlgAASpZAAEqWwABKl0AASpeAAEqXwABKmEAASpiAAEqoQABKqMAASqlAAEqpwABKqoAASqrAAEqrAABKq0AASquAAEqsAABKrIAASqzAAEqtAABKrYAASq3AAEq9gABKvgAASr6AAEq/AABKv8AASsAAAErAQABKwIAASsDAAErBQABKwcAASsIAAErCQABKwsAASsMAAErSwABK00AAStPAAErUQABK1QAAStVAAErVgABK1cAAStYAAErWgABK1wAAStdAAErXgABK2AAASthAAEroAABK6IAASukAAErpgABK6kAASuqAAErqwABK6wAASutAAErrwABK7EAASuyAAErswABK7UAASu2AAEr9QABK/cAASv5AAEr+wABK/4AASv/AAEsAAABLAEAASwCAAEsBAABLAYAASwHAAEsCAABLAoAASwLAAEsSgABLEwAASxOAAEsUAABLFMAASxUAAEsVQABLFYAASxXAAEsWQABLFsAASxcAAEsXQABLF8AASxgAAEsqwABLM4AASzuAAEtDgABLRAAAS0SAAEtFAABLRYAAS0ZAAEtGgABLRsAAS0eAAEtHwABLSEAAS0iAAEtJAABLScAAS0oAAEtKQABLSwAAS0tAAEtMgABLT8AAS1EAAEtRgABLUgAAS1NAAEtUAABLVMAAS1VAAEtegABLZ4AAS3FAAEt6QABLewAAS3uAAEt8AABLfIAAS30AAEt9gABLfcAAS36AAEuBwABLhgAAS4aAAEuHAABLh4AAS4gAAEuIgABLiQAAS4mAAEuKAABLjkAAS48AAEuPwABLkIAAS5FAAEuSAABLksAAS5OAAEuUQABLlMAAS6SAAEulAABLpYAAS6YAAEumwABLpwAAS6dAAEungABLp8AAS6hAAEuowABLqQAAS6lAAEupwABLqgAAS7nAAEu6QABLusAAS7tAAEu8AABLvEAAS7yAAEu8wABLvQAAS72AAEu+AABLvkAAS76AAEu/AABLv0AAS88AAEvPgABL0EAAS9DAAEvRgABL0cAAS9IAAEvSQABL0oAAS9MAAEvTgABL08AAS9QAAEvUgABL1MAAS9gAAEvYQABL2IAAS9kAAEvowABL6UAAS+nAAEvqQABL6wAAS+tAAEvrgABL68AAS+wAAEvsgABL7QAAS+1AAEvtgABL7gAAS+5AAEv+AABL/oAAS/8AAEv/gABMAEAATACAAEwAwABMAQAATAFAAEwBwABMAkAATAKAAEwCwABMA0AATAOAAEwTQABME8AATBRAAEwUwABMFYAATBXAAEwWAABMFkAATBaAAEwXAABMF4AATBfAAEwYAABMGIAATBjAAEwogABMKQAATCmAAEwqAABMKsAATCsAAEwrQABMK4AATCvAAEwsQABMLMAATC0AAEwtQABMLcAATC4AAEw9wABMPkAATD7AAEw/QABMQAAATEBAAExAgABMQMAATEEAAExBgABMQgAATEJAAExCgABMQwAATENAAExMgABMVYAATF9AAExoQABMaQAATGmAAExqAABMaoAATGsAAExrgABMa8AATGyAAExvwABMc4AATHQAAEx0gABMdQAATHWAAEx2AABMdoAATHcAAEx6wABMe4AATHxAAEx9AABMfcAATH6AAEx/QABMgAAATICAAEyQQABMkMAATJFAAEyRwABMkoAATJLAAEyTAABMk0AATJOAAEyUAABMlIAATJTAAEyVAABMlYAATJXAAEylgABMpgAATKaAAEynAABMp8AATKgAAEyoQABMqIAATKjAAEypQABMqcAATKoAAEyqQABMqsAATKsAAEy6wABMu0AATLvAAEy8QABMvQAATL1AAEy9gABMvcAATL4AAEy+gABMvwAATL9AAEy/gABMwAAATMBAAEzQAABM0IAATNEAAEzRgABM0kAATNKAAEzSwABM0wAATNNAAEzTwABM1EAATNSAAEzUwABM1UAATNWAAEzlQABM5cAATOZAAEzmwABM54AATOfAAEzoAABM6EAATOiAAEzpAABM6YAATOnAAEzqAABM6oAATOrAAEz6gABM+wAATPuAAEz8AABM/MAATP0AAEz9QABM/YAATP3AAEz+QABM/sAATP8AAEz/QABM/8AATQAAAE0PwABNEEAATRDAAE0RQABNEgAATRJAAE0SgABNEsAATRMAAE0TgABNFAAATRRAAE0UgABNFQAATRVAAE0oAABNMMAATTjAAE1AwABNQUAATUHAAE1CQABNQsAATUOAAE1DwABNRAAATUTAAE1FAABNRYAATUXAAE1GQABNRwAATUdAAE1HgABNSEAATUiAAE1JwABNTQAATU5AAE1OwABNT0AATVCAAE1RQABNUgAATVKAAE1bwABNZMAATW6AAE13gABNeEAATXjAAE15QABNecAATXpAAE16wABNewAATXvAAE1/AABNg0AATYPAAE2EQABNhMAATYVAAE2FwABNhkAATYbAAE2HQABNi4AATYxAAE2NAABNjcAATY6AAE2PQABNkAAATZDAAE2RgABNkgAATaHAAE2iQABNosAATaNAAE2kAABNpEAATaSAAE2kwABNpQAATaWAAE2mAABNpkAATaaAAE2nAABNp0AATbcAAE23gABNuAAATbiAAE25QABNuYAATbnAAE26AABNukAATbrAAE27QABNu4AATbvAAE28QABNvIAATcxAAE3MwABNzYAATc4AAE3OwABNzwAATc9AAE3PgABNz8AATdBAAE3QwABN0QAATdFAAE3RwABN0gAATdVAAE3VgABN1cAATdZAAE3mAABN5oAATecAAE3ngABN6EAATeiAAE3owABN6QAATelAAE3pwABN6kAATeqAAE3qwABN60AATeuAAE37QABN+8AATfxAAE38wABN/YAATf3AAE3+AABN/kAATf6AAE3/AABN/4AATf/AAE4AAABOAIAATgDAAE4QgABOEQAAThGAAE4SAABOEsAAThMAAE4TQABOE4AAThPAAE4UQABOFMAAThUAAE4VQABOFcAAThYAAE4lwABOJkAATibAAE4nQABOKAAATihAAE4ogABOKMAATikAAE4pgABOKgAATipAAE4qgABOKwAATitAAE47AABOO4AATjwAAE48gABOPUAATj2AAE49wABOPgAATj5AAE4+wABOP0AATj+AAE4/wABOQEAATkCAAE5JwABOUsAATlyAAE5lgABOZkAATmbAAE5nQABOZ8AATmhAAE5owABOaQAATmnAAE5tAABOcMAATnFAAE5xwABOckAATnLAAE5zQABOc8AATnRAAE54AABOeMAATnmAAE56QABOewAATnvAAE58gABOfUAATn3AAE6NgABOjgAATo6AAE6PAABOj8AATpAAAE6QQABOkIAATpDAAE6RQABOkcAATpIAAE6SQABOksAATpMAAE6iwABOo0AATqPAAE6kQABOpQAATqVAAE6lgABOpcAATqYAAE6mgABOpwAATqdAAE6ngABOqAAATqhAAE64AABOuIAATrkAAE65gABOukAATrqAAE66wABOuwAATrtAAE67wABOvEAATryAAE68wABOvUAATr2AAE7NQABOzcAATs5AAE7OwABOz4AATs/AAE7QAABO0EAATtCAAE7RAABO0YAATtHAAE7SAABO0oAATtLAAE7igABO4wAATuOAAE7kAABO5MAATuUAAE7lQABO5YAATuXAAE7mQABO5sAATucAAE7nQABO58AATugAAE73wABO+EAATvjAAE75QABO+gAATvpAAE76gABO+sAATvsAAE77gABO/AAATvxAAE78gABO/QAATv1AAE8NAABPDYAATw4AAE8OgABPD0AATw+AAE8PwABPEAAATxBAAE8QwABPEUAATxGAAE8RwABPEkAATxKAAE8lQABPLgAATzYAAE8+AABPPoAATz8AAE8/gABPQAAAT0DAAE9BAABPQUAAT0IAAE9CQABPQsAAT0MAAE9DgABPREAAT0SAAE9EwABPRYAAT0XAAE9HAABPSkAAT0uAAE9MAABPTIAAT03AAE9OgABPT0AAT0/AAE9ZAABPYgA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AU6GAAFOiAABTosAAU6MAAFOjQABTo4AAU6PAAFOkQABTpMAAU6UAAFOlQABTpcAAU6YAAFO1wABTtkAAU7bAAFO3QABTuAAAU7hAAFO4gABTuMAAU7kAAFO5gABTugAAU7pAAFO6gABTuwAAU7tAAFPLAABTy4AAU8xAAFPMwABTzYAAU83AAFPOAABTzkAAU86AAFPPAABTz4AAU8/AAFPQAABT0IAAU9DAAFPUAABT1EAAU9SAAFPVAABT5MAAU+VAAFPlwABT5kAAU+cAAFPnQABT54AAU+fAAFPoAABT6IAAU+kAAFPpQABT6YAAU+oAAFPqQABT+gAAU/qAAFP7AABT+4AAU/xAAFP8gABT/MAAU/0AAFP9QABT/cAAU/5AAFP+gABT/sAAU/9AAFP/gABUD0AAVA/AAFQQQABUEMAAVBGAAFQRwABUEgAAVBJAAFQSgABUEwAAVBOAAFQTwABUFAAAVBSAAFQUwABUJIAAVCUAAFQlgABUJgAAVCbAAFQnAABUJ0AAVCeAAFQnwABUKEAAVCjAAFQpAABUKUAAVCnAAFQqAABUOcAAVDpAAFQ6wABUO0AAVDwAAFQ8QABUPIAAVDzAAFQ9AABUPYAAVD4AAFQ+QABUPoAAVD8AAFQ/QABUSIAAVFGAAFRbQABUZEAAVGUAAFRlgABUZgAAVGaAAFRnAABUZ4AAVGfAAFRogABUa8AAVG+AAFRwAABUcIAAVHEAAFRxgABUcgAAVHKAAFRzAABUdsAAVHeAAFR4QABUeQAAVHnAAFR6gABUe0AAVHwAAFR8gABUjEAAVIzAAFSNQABUjcAAVI6AAFSOwABUjwAAVI9AAFSPgABUkAAAVJCAAFSQwABUkQAAVJGAAFSRwABUoYAAVKIAAFSigABUowAAVKPAAFSkAABUpEAAVKSAAFSkwABUpUAAVKXAAFSmAABUpkAAVKbAAFSnAABUtsAAVLdAAFS3wABUuEAAVLkAAFS5QABUuYAAVLnAAFS6AABUuoAAVLsAAFS7QABUu4AAVLwAAFS8QABUzAAAVMyAAFTNAABUzYAAVM5AAFTOgABUzsAAVM8AAFTPQABUz8AAVNBAAFTQgABU0MAAVNFAAFTRgABU4UAAVOHAAFTiQABU4sAAVOOAAFTjwABU5AAAVORAAFTkgABU5QAAVOWAAFTlwABU5gAAVOaAAFTmwABU9oAAVPcAAFT3gABU+AAAVPjAAFT5AABU+UAAVPmAAFT5wABU+kAAVPrAAFT7AABU+0AAVPvAAFT8AABVC8AAVQxAAFUMwABVDUAAVQ4AAFUOQABVDoAAVQ7AAFUPAABVD4AAVRAAAFUQQABVEIAAVREAAFURQABVJAAAVSzAAFU0wABVPMAAVT1AAFU9wABVPkAAVT7AAFU/gABVP8AAVUAAAFVAwABVQQAAVUGAAFVBwABVQkAAVUMAAFVDQABVQ4AAVURAAFVEgABVRsAAVUoAAFVLQABVS8AAVUxAAFVNgABVTkAAVU8AAFVPgABVWMAAVWHAAFVrgABVdIAAVXVAAFV1wABVdkAAVXbAAFV3QABVd8AAVXgAAFV4wABVfAAAVYBAAFWAwABVgUAAVYHAAFWCQABVgsAAVYNAAFWDwABVhEAAVYiAAFWJQABVigAAVYrAAFWLgABVjEAAVY0AAFWNwABVjoAAVY8AAFWewABVn0AAVZ/AAFWgQABVoQAAVaFAAFWhgABVocAAVaIAAFWigABVowAAVaNAAFWjgABVpAAAVaRAAFW0AABVtIAAVbUAAFW1gABVtkAAVbaAAFW2wABVtwAAVbdAAFW3wABVuEAAVbiAAFW4wABVuUAAVbmAAFXJQABVycAAVcqAAFXLAABVy8AAVcwAAFXMQABVzIAAVczAAFXNQABVzcAAVc4AAFXOQABVzsAAVc8AAFXSQABV0oAAVdLAAFXTQABV4wAAVeOAAFXkAABV5IAAVeVAAFXlgABV5cAAVeYAAFXmQABV5sAAVedAAFXngABV58AAVehAAFXogABV+EAAVfjAAFX5QABV+cAAVfqAAFX6wABV+wAAVftAAFX7gABV/AAAVfyAAFX8wABV/QAAVf2AAFX9wABWDYAAVg4AAFYOgABWDwAAVg/AAFYQAABWEEAAVhCAAFYQwABWEUAAVhHAAFYSAABWEkAAVhLAAFYTAABWIsAAViNAAFYjwABWJEAAViUAAFYlQABWJYAAViXAAFYmAABWJoAAVicAAFYnQABWJ4AAVigAAFYoQABWOAAAVjiAAFY5AABWOYAAVjpAAFY6gABWOsAAVjsAAFY7QABWO8AAVjxAAFY8gABWPMAAVj1AAFY9gABWRsAAVk/AAFZZgABWYoAAVmNAAFZjwABWZEAAVmTAAFZlQABWZcAAVmYAAFZmwABWagAAVm3AAFZuQABWbsAAVm9AAFZvwABWcEAAVnDAAFZxQABWdQAAVnXAAFZ2gABWd0AAVngAAFZ4wABWeYAAVnpAAFZ6wABWioAAVosAAFaLgABWjAAAVozAAFaNAABWjUAAVo2AAFaNwABWjkAAVo7AAFaPAABWj0AAVo/AAFaQAABWn8AAVqBAAFagwABWoUAAVqIAAFaiQABWooAAVqLAAFajAABWo4AAVqQAAFakQABWpIAAVqUAAFalQABWtQAAVrWAAFa2AABWtoAAVrdAAFa3gABWt8AAVrgAAFa4QABWuMAAVrlAAFa5gABWucAAVrpAAFa6gABWykAAVsrAAFbLQABWy8AAVsyAAFbMwABWzQAAVs1AAFbNgABWzgAAVs6AAFbOwABWzwAAVs+AAFbPwABW34AAVuAAAFbggABW4QAAVuHAAFbiAABW4kAAVuKAAFbiwABW40AAVuPAAFbkAABW5EAAVuTAAFblAABW9MAAVvVAAFb1wABW9kAAVvcAAFb3QABW94AAVvfAAFb4AABW+IAAVvkAAFb5QABW+YAAVvoAAFb6QABXCgAAVwqAAFcLAABXC4AAVwxAAFcMgABXDMAAVw0AAFcNQABXDcAAVw5AAFcOgABXDsAAVw9AAFcPgABXIkAAVysAAFczAABXOwAAVzuAAFc8AABXPIAAVz0AAFc9wABXPgAAVz5AAFc/AABXP0AAVz/AAFdAAABXQIAAV0EAAFdBQABXQYAAV0JAAFdCgABXQ8AAV0cAAFdIQABXSMAAV0lAAFdKgABXS0AAV0wAAFdMgABXVcAAV17AAFdogABXcYAAV3JAAFdywABXc0AAV3PAAFd0QABXdMAAV3UAAFd1wABXeQAAV31AAFd9wABXfkAAV37AAFd/QABXf8AAV4BAAFeAwABXgUAAV4WAAFeGQABXhwAAV4fAAFeIgABXiUAAV4oAAFeKwABXi4AAV4wAAFebwABXnEAAV5zAAFedQABXngAAV55AAFeegABXnsAAV58AAFefgABXoAAAV6BAAFeggABXoQAAV6FAAFexAABXsYAAV7IAAFeygABXs0AAV7OAAFezwABXtAAAV7RAAFe0wABXtUAAV7WAAFe1wABXtkAAV7aAAFfGQABXxsAAV8eAAFfIAABXyMAAV8kAAFfJQABXyYAAV8nAAFfKQABXysAAV8sAAFfLQABXy8AAV8wAAFfPQABXz4AAV8/AAFfQQABX4AAAV+CAAFfhAABX4YAAV+JAAFfigABX4sAAV+MAAFfjQABX48AAV+RAAFfkgABX5MAAV+VAAFflgABX9UAAV/XAAFf2QABX9sAAV/eAAFf3wABX+AAAV/hAAFf4gABX+QAAV/mAAFf5wABX+gAAV/qAAFf6wABYCoAAWAsAAFgLgABYDAAAWAzAAFgNAABYDUAAWA2AAFgNwABYDkAAWA7AAFgPAABYD0AAWA/AAFgQAABYH8AAWCBAAFggwABYIUAAWCIAAFgiQABYIoAAWCLAAFgjAABYI4AAWCQAAFgkQABYJIAAWCUAAFglQABYNQAAWDWAAFg2AABYNoAAWDdAAFg3gABYN8AAWDgAAFg4QABYOMAAWDlAAFg5gABYOcAAWDpAAFg6gABYQ8AAWEzAAFhWgABYX4AAWGBAAFhgwABYYUAAWGHAAFhiQABYYsAAWGMAAFhjwABYZwAAWGrAAFhrQABYa8AAWGxAAFhswABYbUAAWG3AAFhuQABYcgAAWHLAAFhzgABYdEAAWHUAAFh1wABYdoAAWHdAAFh3wABYh4AAWIgAAFiIgABYiQAAWInAAFiKAABYikAAWIqAAFiKwABYi0AAWIvAAFiMAABYjEAAWIzAAFiNAABYnMAAWJ1AAFidwABYnkAAWJ8AAFifQABYn4AAWJ/AAFigAABYoIAAWKEAAFihQABYoYAAWKIAAFiiQABYsgAAWLKAAFizAABYs4AAWLRAAFi0gABYtMAAWLUAAFi1QABYtcAAWLZAAFi2gABYtsAAWLdAAFi3gABYx0AAWMfAAFjIQABYyMAAWMmAAFjJwABYygAAWMpAAFjKgABYywAAWMuAAFjLwABYzAAAWMyAAFjMwABY3IAAWN0AAFjdgABY3gAAWN7AAFjfAABY30AAWN+AAFjfwABY4EAAWODAAFjhAABY4UAAWOHAAFjiAABY8cAAWPJAAFjywABY80AAWPQAAFj0QABY9IAAWPTAAFj1AABY9YAAWPYAAFj2QABY9oAAWPcAAFj3QABZBwAAWQeAAFkIAABZCIAAWQlAAFkJgABZCcAAWQoAAFkKQABZCsAAWQtAAFkLgABZC8AAWQxAAFkMgABZH0AAWSgAAFkwAABZOAAAWTiAAFk5AABZOYAAWToAAFk6wABZOwAAWTtAAFk8AABZPEAAWTzAAFk9AABZPYAAWT5AAFk+gABZPsAAWT+AAFk/wABZQQAAWURAAFlFgABZRgAAWUaAAFlHwABZSIAAWUlAAFlJwABZUwAAWVwAAFllwABZbsAAWW+AAFlwAABZcIAAWXEAAFlxgABZcgAAWXJAAFlzAABZdkAAWXqAAFl7AABZe4AAWXwAAFl8gABZfQAAWX2AAFl+AABZfoAAWYLAAFmDgABZhEAAWYUAAFmFwABZhoAAWYdAAFmIAABZiMAAWYlAAFmZAABZmYAAWZoAAFmagABZm0AAWZuAAFmbwABZnAAAWZxAAFmcwABZnUAAWZ2AAFmdwABZnkAAWZ6AAFmuQABZrsAAWa9AAFmvwABZsIAAWbDAAFmxAABZsUAAWbGAAFmyAABZsoAAWbLAAFmzAABZs4AAWbPAAFnDgABZxAAAWcTAAFnFQABZxgAAWcZAAFnGgABZxsAAWccAAFnHgABZyAAAWchAAFnIgABZyQAAWclAAFnMgABZzMAAWc0AAFnNgABZ3UAAWd3AAFneQABZ3sAAWd+AAFnfwABZ4AAAWeBAAFnggABZ4QAAWeGAAFnhwABZ4gAAWeKAAFniwABZ8oAAWfMAAFnzgABZ9AAAWfTAAFn1AABZ9UAAWfWAAFn1wABZ9kAAWfbAAFn3AABZ90AAWffAAFn4AABaB8AAWghAAFoIwABaCUAAWgoAAFoKQABaCoAAWgrAAFoLAABaC4AAWgwAAFoMQABaDIAAWg0AAFoNQABaHQAAWh2AAFoeQABaHsAAWh+AAFofwABaIAAAWiBAAFoggABaIQAAWiGAAFohwABaIgAAWiKAAFoiwABaJ4AAWjdAAFo3wABaOEAAWjjAAFo5gABaOcAAWjoAAFo6QABaOoAAWjsAAFo7gABaO8AAWjwAAFo8gABaPMAAWkYAAFpPAABaWMAAWmHAAFpigABaYwAAWmOAAFpkAABaZIAAWmUAAFplQABaZgAAWmlAAFptAABabYAAWm4AAFpugABabwAAWm+AAFpwAABacIAAWnRAAFp1AABadcAAWnaAAFp3QABaeAAAWnjAAFp5gABaegAAWonAAFqKQABaisAAWotAAFqMAABajEAAWoyAAFqMwABajQAAWo2AAFqOAABajkAAWo6AAFqPAABaj0AAWp8AAFqfgABaoAAAWqCAAFqhQABaoYAAWqHAAFqiAABaokAAWqLAAFqjQABao4AAWqPAAFqkQABapIAAWrRAAFq0wABatUAAWrXAAFq2gABatsAAWrcAAFq3QABat4AAWrgAAFq4gABauMAAWrkAAFq5gABaucAAWsmAAFrKAABayoAAWssAAFrLwABazAAAWsxAAFrMgABazMAAWs1AAFrNwABazgAAWs5AAFrOwABazwAAWt7AAFrfQABa38AAWuBAAFrhAABa4UAAWuGAAFrhwABa4gAAWuKAAFrjAABa40AAWuOAAFrkAABa5EAAWvQAAFr0gABa9QAAWvWAAFr2QABa9oAAWvbAAFr3AABa90AAWvfAAFr4QABa+IAAWvjAAFr5QABa+YAAWwlAAFsJwABbCkAAWwrAAFsLgABbC8AAWwwAAFsMQABbDIAAWw0AAFsNgABbDcAAWw4AAFsOgABbDsAAWyGAAFsqQABbMkAAWzpAAFs6wABbO0AAWzvAAFs8QABbPQAAWz1AAFs9gABbPkAAWz6AAFs/AABbP0AAWz/AAFtAgABbQMAAW0EAAFtBwABbQgAAW0NAAFtGgABbR8AAW0hAAFtIwABbSgAAW0rAAFtLgABbTAAAW1VAAFteQABbaAAAW3EAAFtxwABbckAAW3LAAFtzQABbc8AAW3RAAFt0gABbdUAAW3iAAFt8wABbfUAAW33AAFt+QABbfsAAW39AAFt/wABbgEAAW4DAAFuFAABbhcAAW4aAAFuHQABbiAAAW4jAAFuJgABbikAAW4sAAFuLgABbm0AAW5vAAFucQABbnMAAW52AAFudwABbngAAW55AAFuegABbnwAAW5+AAFufwABboAAAW6CAAFugwABbsIAAW7EAAFuxgABbsgAAW7LAAFuzAABbs0AAW7OAAFuzwABbtEAAW7TAAFu1AABbtUAAW7XAAFu2AABbxcAAW8ZAAFvHAABbx4AAW8hAAFvIgABbyMAAW8kAAFvJQABbycAAW8pAAFvKgABbysAAW8tAAFvLgABbzsAAW88AAFvPQABbz8AAW9+AAFvgAABb4IAAW+EAAFvhwABb4gAAW+JAAFvigABb4sAAW+NAAFvjwABb5AAAW+RAAFvkwABb5QAAW/TAAFv1QABb9cAAW/ZAAFv3AABb90AAW/eAAFv3wABb+AAAW/iAAFv5AABb+UAAW/mAAFv6AABb+kAAXAoAAFwKgABcCwAAXAuAAFwMQABcDIAAXAzAAFwNAABcDUAAXA3AAFwOQABcDoAAXA7AAFwPQABcD4AAXB9AAFwfwABcIEAAXCDAAFwhgABcIcAAXCIAAFwiQABcIoAAXCMAAFwjgABcI8AAXCQAAFwkgABcJMAAXDSAAFw1AABcNYAAXDYAAFw2wABcNwAAXDdAAFw3gABcN8AAXDhAAFw4wABcOQAAXDlAAFw5wABcOgAAXENAAFxMQABcVgAAXF8AAFxfwABcYEAAXGDAAFxhQABcYcAAXGJAAFxigABcY0AAXGaAAFxqQABcasAAXGtAAFxrwABcbEAAXGzAAFxtQABcbcAAXHGAAFxyQABccwAAXHPAAFx0gABcdUAAXHYAAFx2wABcd0AAXIcAAFyHgABciAAAXIiAAFyJQABciYAAXInAAFyKAABcikAAXIrAAFyLQABci4AAXIvAAFyMQABcjIAAXJxAAFycwABcnUAAXJ3AAFyegABcnsAAXJ8AAFyfQABcn4AAXKAAAFyggABcoMAAXKEAAFyhgABcocAAXLGAAFyyAABcsoAAXLMAAFyzwABctAAAXLRAAFy0gABctMAAXLVAAFy1wABctgAAXLZAAFy2wABctwAAXMbAAFzHQABcx8AAXMhAAFzJAABcyUAAXMmAAFzJwABcygAAXMqAAFzLAABcy0AAXMuAAFzMAABczEAAXNwAAFzcgABc3QAAXN2AAFzeQABc3oAAXN7AAFzfAABc30AAXN/AAFzgQABc4IAAXODAAFzhQABc4YAAXPFAAFzxwABc8kAAXPLAAFzzgABc88AAXPQAAFz0QABc9IAAXPUAAFz1gABc9cAAXPYAAFz2gABc9sAAXQaAAF0HAABdB4AAXQgAAF0IwABdCQAAXQlAAF0JgABdCcAAXQpAAF0KwABdCwAAXQtAAF0LwABdDAAAXR7AAF0ngABdL4AAXTeAAF04AABdOIAAXTkAAF05gABdOkAAXTqAAF06wABdO4AAXTvAAF08QABdPIAAXT0AAF09gABdPcAAXT4AAF0+wABdPwAAXUBAAF1DgABdRMAAXUVAAF1FwABdRwAAXUfAAF1IgABdSQAAXVJAAF1bQABdZQAAXW4AAF1uwABdb0AAXW/AAF1wQABdcMAAXXFAAF1xgABdckAAXXWAAF15wABdekAAXXrAAF17QABde8AAXXxAAF18wABdfUAAXX3AAF2CAABdgsAAXYOAAF2EQABdhQAAXYXAAF2GgABdh0AAXYgAAF2IgABdmEAAXZjAAF2ZQABdmcAAXZqAAF2awABdmwAAXZtAAF2bgABdnAAAXZyAAF2cwABdnQAAXZ2AAF2dwABdrYAAXa4AAF2ugABdrwAAXa/AAF2wAABdsEAAXbCAAF2wwABdsUAAXbHAAF2yAABdskAAXbLAAF2zAABdwsAAXcNAAF3EAABdxIAAXcVAAF3FgABdxcAAXcYAAF3GQABdxsAAXcdAAF3HgABdx8AAXchAAF3IgABdy8AAXcwAAF3MQABdzMAAXdyAAF3dAABd3YAAXd4AAF3ewABd3wAAXd9AAF3fgABd38AAXeBAAF3gwABd4QAAXeFAAF3hwABd4gAAXfHAAF3yQABd8sAAXfNAAF30AABd9EAAXfSAAF30wABd9QAAXfWAAF32AABd9kAAXfaAAF33AABd90AAXgcAAF4HgABeCAAAXgiAAF4JQABeCYAAXgnAAF4KAABeCkAAXgrAAF4LQABeC4AAXgvAAF4MQABeDIAAXhxAAF4cwABeHUAAXh3AAF4egABeHsAAXh8AAF4fQABeH4AAXiAAAF4ggABeIMAAXiEAAF4hgABeIcAAXjGAAF4yAABeMoAAXjMAAF4zwABeNAAAXjRAAF40gABeNMAAXjVAAF41wABeNgAAXjZAAF42wABeNwAAXkBAAF5JQABeUwAAXlwAAF5cwABeXUAAXl3AAF5eQABeXsAAXl9AAF5fgABeYEAAXmOAAF5nQABeZ8AAXmhAAF5owABeaUAAXmnAAF5qQABeasAAXm6AAF5vQABecAAAXnDAAF5xgABeckAAXnMAAF5zwABedEAAXoQAAF6EgABehQAAXoWAAF6GQABehoAAXobAAF6HAABeh0AAXofAAF6IQABeiIAAXojAAF6JQABeiYAAXplAAF6ZwABemkAAXprAAF6bgABem8AAXpwAAF6cQABenIAAXp0AAF6dgABencAAXp4AAF6egABensAAXq6AAF6vAABer4AAXrAAAF6wwABesQAAXrFAAF6xgABescAAXrJAAF6ywABeswA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AYZaAAGGWwABhlwAAYZdAAGGXgABhmAAAYZiAAGGYwABhmQAAYZmAAGGZwABhqYAAYaoAAGGqgABhqwAAYavAAGGsAABhrEAAYayAAGGswABhrUAAYa3AAGGuAABhrkAAYa7AAGGvAABhvsAAYb9AAGHAAABhwIAAYcFAAGHBgABhwcAAYcIAAGHCQABhwsAAYcNAAGHDgABhw8AAYcRAAGHEgABhx8AAYcgAAGHIQABhyMAAYdiAAGHZAABh2YAAYdoAAGHawABh2wAAYdtAAGHbgABh28AAYdxAAGHcwABh3QAAYd1AAGHdwABh3gAAYe3AAGHuQABh7sAAYe9AAGHwAABh8EAAYfCAAGHwwABh8QAAYfGAAGHyAABh8kAAYfKAAGHzAABh80AAYgMAAGIDgABiBAAAYgSAAGIFQABiBYAAYgXAAGIGAABiBkAAYgbAAGIHQABiB4AAYgfAAGIIQABiCIAAYhhAAGIYwABiGYAAYhoAAGIawABiGwAAYhtAAGIbgABiG8AAYhxAAGIcwABiHQAAYh1AAGIdwABiHgAAYiMAAGIywABiM0AAYjPAAGI0QABiNQAAYjVAAGI1gABiNcAAYjYAAGI2gABiNwAAYjdAAGI3gABiOAAAYjhAAGJBgABiSoAAYlRAAGJdQABiXgAAYl6AAGJfAABiX4AAYmAAAGJggABiYMAAYmGAAGJkwABiaIAAYmkAAGJpgABiagAAYmqAAGJrAABia4AAYmwAAGJvwABicIAAYnFAAGJyAABicsAAYnOAAGJ0QABidQAAYnWAAGKFQABihcAAYoZAAGKGwABih4AAYofAAGKIAABiiEAAYoiAAGKJAABiiYAAYonAAGKKAABiioAAYorAAGKagABimwAAYpuAAGKcAABinMAAYp0AAGKdQABinYAAYp3AAGKeQABinsAAYp8AAGKfQABin8AAYqAAAGKvwABisEAAYrDAAGKxQABisgAAYrJAAGKygABissAAYrMAAGKzgABitAAAYrRAAGK0gABitQAAYrVAAGLFAABixYAAYsYAAGLGgABix0AAYseAAGLHwABiyAAAYshAAGLIwABiyUAAYsmAAGLJwABiykAAYsqAAGLaQABi2sAAYttAAGLbwABi3IAAYtzAAGLdAABi3UAAYt2AAGLeAABi3oAAYt7AAGLfAABi34AAYt/AAGLvgABi8AAAYvCAAGLxAABi8cAAYvIAAGLyQABi8oAAYvLAAGLzQABi88AAYvQAAGL0QABi9MAAYvUAAGMEwABjBUAAYwXAAGMGQABjBwAAYwdAAGMHgABjB8AAYwgAAGMIgABjCQAAYwlAAGMJgABjCgAAYwpAAGMdAABjJcAAYy3AAGM1wABjNkAAYzbAAGM3QABjN8AAYziAAGM4wABjOQAAYznAAGM6AABjOoAAYzrAAGM7QABjPAAAYzxAAGM8gABjPUAAYz2AAGM+wABjQgAAY0NAAGNDwABjREAAY0WAAGNGQABjRwAAY0eAAGNQwABjWcAAY2OAAGNsgABjbUAAY23AAGNuQABjbsAAY29AAGNvwABjcAAAY3DAAGN0AABjeEAAY3jAAGN5QABjecAAY3pAAGN6wABje0AAY3vAAGN8QABjgIAAY4FAAGOCAABjgsAAY4OAAGOEQABjhQAAY4XAAGOGgABjhwAAY5bAAGOXQABjl8AAY5hAAGOZAABjmUAAY5mAAGOZwABjmgAAY5qAAGObAABjm0AAY5uAAGOcAABjnEAAY6wAAGOsgABjrQAAY62AAGOuQABjroAAY67AAGOvAABjr0AAY6/AAGOwQABjsIAAY7DAAGOxQABjsYAAY8FAAGPBwABjwoAAY8MAAGPDwABjxAAAY8RAAGPEgABjxMAAY8VAAGPFwABjxgAAY8ZAAGPGwABjxwAAY8pAAGPKgABjysAAY8tAAGPbAABj24AAY9wAAGPcgABj3UAAY92AAGPdwABj3gAAY95AAGPewABj30AAY9+AAGPfwABj4EAAY+CAAGPwQABj8MAAY/FAAGPxwABj8oAAY/LAAGPzAABj80AAY/OAAGP0AABj9IAAY/TAAGP1AABj9YAAY/XAAGQFgABkBgAAZAaAAGQHAABkB8AAZAgAAGQIQABkCIAAZAjAAGQJQABkCcAAZAoAAGQKQABkCsAAZAsAAGQawABkG0AAZBwAAGQcgABkHUAAZB2AAGQdwABkHgAAZB5AAGQewABkH0AAZB+AAGQfwABkIEAAZCCAAGQkQABkNAAAZDSAAGQ1AABkNYAAZDZAAGQ2gABkNsAAZDcAAGQ3QABkN8AAZDhAAGQ4gABkOMAAZDlAAGQ5gABkQsAAZEvAAGRVgABkXoAAZF9AAGRfwABkYEAAZGDAAGRhQABkYcAAZGIAAGRiwABkZgAAZGnAAGRqQABkasAAZGtAAGRrwABkbEAAZGzAAGRtQABkcQAAZHHAAGRygABkc0AAZHQAAGR0wABkdYAAZHZAAGR2wABkhoAAZIcAAGSHgABkiAAAZIjAAGSJAABkiUAAZImAAGSJwABkikAAZIrAAGSLAABki0AAZIvAAGSMAABkm8AAZJxAAGScwABknUAAZJ4AAGSeQABknoAAZJ7AAGSfAABkn4AAZKAAAGSgQABkoIAAZKEAAGShQABksQAAZLGAAGSyAABksoAAZLNAAGSzgABks8AAZLQAAGS0QABktMAAZLVAAGS1gABktcAAZLZAAGS2gABkxkAAZMbAAGTHQABkx8AAZMiAAGTIwABkyQAAZMlAAGTJgABkygAAZMqAAGTKwABkywAAZMuAAGTLwABk24AAZNwAAGTcgABk3QAAZN3AAGTeAABk3kAAZN6AAGTewABk30AAZN/AAGTgAABk4EAAZODAAGThAABk8MAAZPFAAGTxwABk8kAAZPMAAGTzQABk84AAZPPAAGT0AABk9IAAZPUAAGT1QABk9YAAZPYAAGT2QABlBgAAZQaAAGUHAABlB4AAZQhAAGUIgABlCMAAZQkAAGUJQABlCcAAZQpAAGUKgABlCsAAZQtAAGULgABlHkAAZScAAGUvAABlNwAAZTeAAGU4AABlOIAAZTkAAGU5wABlOgAAZTpAAGU7AABlO0AAZTvAAGU8AABlPIAAZT1AAGU9gABlPcAAZT6AAGU+wABlQAAAZUNAAGVEgABlRQAAZUWAAGVGwABlR4AAZUhAAGVIwABlUgAAZVsAAGVkwABlbcAAZW6AAGVvAABlb4AAZXAAAGVwgABlcQAAZXFAAGVyAABldUAAZXmAAGV6AABleoAAZXsAAGV7gABlfAAAZXyAAGV9AABlfYAAZYHAAGWCgABlg0AAZYQAAGWEwABlhYAAZYZAAGWHAABlh8AAZYhAAGWYAABlmIAAZZkAAGWZgABlmkAAZZqAAGWawABlmwAAZZtAAGWbwABlnEAAZZyAAGWcwABlnUAAZZ2AAGWtQABlrcAAZa5AAGWuwABlr4AAZa/AAGWwAABlsEAAZbCAAGWxAABlsYAAZbHAAGWyAABlsoAAZbLAAGXCgABlwwAAZcPAAGXEQABlxQAAZcVAAGXFgABlxcAAZcYAAGXGgABlxwAAZcdAAGXHgABlyAAAZchAAGXLgABly8AAZcwAAGXMgABl3EAAZdzAAGXdQABl3cAAZd6AAGXewABl3wAAZd9AAGXfgABl4AAAZeCAAGXgwABl4QAAZeGAAGXhwABl8YAAZfIAAGXygABl8wAAZfPAAGX0AABl9EAAZfSAAGX0wABl9UAAZfXAAGX2AABl9kAAZfbAAGX3AABmBsAAZgdAAGYHwABmCEAAZgkAAGYJQABmCYAAZgnAAGYKAABmCoAAZgsAAGYLQABmC4AAZgwAAGYMQABmHAAAZhyAAGYdQABmHcAAZh6AAGYewABmHwAAZh9AAGYfgABmIAAAZiCAAGYgwABmIQAAZiGAAGYhwABmJsAAZjaAAGY3AABmN4AAZjgAAGY4wABmOQAAZjlAAGY5gABmOcAAZjpAAGY6wABmOwAAZjtAAGY7wABmPAAAZkVAAGZOQABmWAAAZmEAAGZhwABmYkAAZmLAAGZjQABmY8AAZmRAAGZkgABmZUAAZmiAAGZsQABmbMAAZm1AAGZtwABmbkAAZm7AAGZvQABmb8AAZnOAAGZ0QABmdQAAZnXAAGZ2gABmd0AAZngAAGZ4wABmeUAAZokAAGaJgABmigAAZoqAAGaLQABmi4AAZovAAGaMAABmjEAAZozAAGaNQABmjYAAZo3AAGaOQABmjoAAZp5AAGaewABmn0AAZp/AAGaggABmoMAAZqEAAGahQABmoYAAZqIAAGaigABmosAAZqMAAGajgABmo8AAZrOAAGa0AABmtIAAZrUAAGa1wABmtgAAZrZAAGa2gABmtsAAZrdAAGa3wABmuAAAZrhAAGa4wABmuQAAZsjAAGbJQABmycAAZspAAGbLAABmy0AAZsuAAGbLwABmzAAAZsyAAGbNAABmzUAAZs2AAGbOAABmzkAAZt4AAGbegABm3wAAZt+AAGbgQABm4IAAZuDAAGbhAABm4UAAZuHAAGbiQABm4oAAZuLAAGbjQABm44AAZvNAAGbzwABm9EAAZvTAAGb1gABm9cAAZvYAAGb2QABm9oAAZvcAAGb3gABm98AAZvgAAGb4gABm+MAAZwiAAGcJAABnCYAAZwoAAGcKwABnCwAAZwtAAGcLgABnC8AAZwxAAGcMwABnDQAAZw1AAGcNwABnDgAAZyDAAGcpgABnMYAAZzmAAGc6AABnOoAAZzsAAGc7gABnPEAAZzyAAGc8wABnPYAAZz3AAGc+QABnPoAAZz8AAGc/wABnQAAAZ0BAAGdBAABnQUAAZ0KAAGdFwABnRwAAZ0eAAGdIAABnSUAAZ0oAAGdKwABnS0AAZ1SAAGddgABnZ0AAZ3BAAGdxAABncYAAZ3IAAGdygABncwAAZ3OAAGdzwABndIAAZ3fAAGd8AABnfIAAZ30AAGd9gABnfgAAZ36AAGd/AABnf4AAZ4AAAGeEQABnhQAAZ4XAAGeGgABnh0AAZ4gAAGeIwABniYAAZ4pAAGeKwABnmoAAZ5sAAGebgABnnAAAZ5zAAGedAABnnUAAZ52AAGedwABnnkAAZ57AAGefAABnn0AAZ5/AAGegAABnr8AAZ7BAAGewwABnsUAAZ7IAAGeyQABnsoAAZ7LAAGezAABns4AAZ7QAAGe0QABntIAAZ7UAAGe1QABnxQAAZ8WAAGfGQABnxsAAZ8eAAGfHwABnyAAAZ8hAAGfIgABnyQAAZ8mAAGfJwABnygAAZ8qAAGfKwABnzgAAZ85AAGfOgABnzwAAZ97AAGffQABn38AAZ+BAAGfhAABn4UAAZ+GAAGfhwABn4gAAZ+KAAGfjAABn40AAZ+OAAGfkAABn5EAAZ/QAAGf0gABn9QAAZ/WAAGf2QABn9oAAZ/bAAGf3AABn90AAZ/fAAGf4QABn+IAAZ/jAAGf5QABn+YAAaAlAAGgJwABoCkAAaArAAGgLgABoC8AAaAwAAGgMQABoDIAAaA0AAGgNgABoDcAAaA4AAGgOgABoDsAAaB6AAGgfAABoH4AAaCAAAGggwABoIQAAaCFAAGghgABoIcAAaCJAAGgiwABoIwAAaCNAAGgjwABoJAAAaDPAAGg0QABoNMAAaDVAAGg2AABoNkAAaDaAAGg2wABoNwAAaDeAAGg4AABoOEAAaDiAAGg5AABoOUAAaEKAAGhLgABoVUAAaF5AAGhfAABoX4AAaGAAAGhggABoYQAAaGGAAGhhwABoYoAAaGXAAGhpgABoagAAaGqAAGhrAABoa4AAaGwAAGhsgABobQAAaHDAAGhxgABockAAaHMAAGhzwABodIAAaHVAAGh2AABodoAAaIZAAGiGwABoh0AAaIfAAGiIgABoiMAAaIkAAGiJQABoiYAAaIoAAGiKgABoisAAaIsAAGiLgABoi8AAaJuAAGicAABonIAAaJ0AAGidwABongAAaJ5AAGiegABonsAAaJ9AAGifwABooAAAaKBAAGigwABooQAAaLDAAGixQABoscAAaLJAAGizAABos0AAaLOAAGizwABotAAAaLSAAGi1AABotUAAaLWAAGi2AABotkAAaMYAAGjGgABoxwAAaMeAAGjIQABoyIAAaMjAAGjJAABoyUAAaMnAAGjKQABoyoAAaMrAAGjLQABoy4AAaNtAAGjbwABo3EAAaNzAAGjdgABo3cAAaN4AAGjeQABo3oAAaN8AAGjfgABo38AAaOAAAGjggABo4MAAaPCAAGjxAABo8YAAaPIAAGjywABo8wAAaPNAAGjzgABo88AAaPRAAGj0wABo9QAAaPVAAGj1wABo9gAAaQXAAGkGQABpBsAAaQdAAGkIAABpCEAAaQiAAGkIwABpCQAAaQmAAGkKAABpCkAAaQqAAGkLAABpC0AAaR4AAGkmwABpLsAAaTbAAGk3QABpN8AAaThAAGk4wABpOYAAaTnAAGk6AABpOsAAaTsAAGk7gABpO8AAaTxAAGk9AABpPUAAaT2AAGk+QABpPoAAaT/AAGlDAABpREAAaUTAAGlFQABpRoAAaUdAAGlIAABpSIAAaVHAAGlawABpZIAAaW2AAGluQABpbsAAaW9AAGlvwABpcEAAaXDAAGlxAABpccAAaXUAAGl5QABpecAAaXpAAGl6wABpe0AAaXvAAGl8QABpfMAAaX1AAGmBgABpgkAAaYMAAGmDwABphIAAaYVAAGmGAABphsAAaYeAAGmIAABpl8AAaZhAAGmYwABpmUAAaZoAAGmaQABpmoAAaZrAAGmbAABpm4AAaZwAAGmcQABpnIAAaZ0AAGmdQABprQAAaa2AAGmuAABproAAaa9AAGmvgABpr8AAabAAAGmwQABpsMAAabFAAGmxgABpscAAabJAAGmygABpwkAAacLAAGnDgABpxAAAacTAAGnFAABpxUAAacWAAGnFwABpxkAAacbAAGnHAABpx0AAacfAAGnIAABpy0AAacuAAGnLwABpzEAAadwAAGncgABp3QAAad2AAGneQABp3oAAad7AAGnfAABp30AAad/AAGngQABp4IAAaeDAAGnhQABp4YAAafFAAGnxwABp8kAAafLAAGnzgABp88AAafQAAGn0QABp9IAAafUAAGn1gABp9cAAafYAAGn2gABp9sAAagaAAGoHAABqB4AAaggAAGoIwABqCQAAaglAAGoJgABqCcAAagpAAGoKwABqCwAAagtAAGoLwABqDAAAahvAAGocQABqHMAAah1AAGoeAABqHkAAah6AAGoewABqHwAAah+AAGogAABqIEAAaiCAAGohAABqIUAAajEAAGoxgABqMgAAajKAAGozQABqM4AAajPAAGo0AABqNEAAajTAAGo1QABqNYAAajXAAGo2QABqNoAAaj/AAGpIwABqUoAAaluAAGpcQABqXMAAal1AAGpdwABqXkAAal7AAGpfAABqX8AAamMAAGpmwABqZ0AAamfAAGpoQABqaMAAamlAAGppwABqakAAam4AAGpuwABqb4AAanBAAGpxAABqccAAanKAAGpzQABqc8AAaoOAAGqEAABqhIAAaoUAAGqFwABqhgAAaoZAAGqGgABqhsAAaodAAGqHwABqiAAAaohAAGqIwABqiQAAapjAAGqZQABqmcAAappAAGqbAABqm0AAapuAAGqbwABqnAAAapyAAGqdAABqnUAAap2AAGqeAABqnkAAaq4AAGqugABqrwAAaq+AAGqwQABqsIAAarDAAGqxAABqsUAAarHAAGqyQABqsoAAarLAAGqzQABqs4AAasNAAGrDwABqxEAAasTAAGrFgABqxcAAasYAAGrGQABqxoAAascAAGrHgABqx8AAasgAAGrIgABqyMAAatiAAGrZAABq2YAAatoAAGrawABq2wAAattAAGrbgABq28AAatxAAGrcwABq3QAAat1AAGrdwABq3gAAau3AAGruQABq7sAAau9AAGrwAABq8EAAavCAAGrwwABq8QAAavGAAGryAABq8kAAavKAAGrzAABq80AAawMAAGsDgABrBAAAawSAAGsFQABrBYAAawXAAGsGAABrBkAAawbAAGsHQABrB4AAawfAAGsIQABrCIAAaxtAAGskAABrLAAAazQAAGs0gABrNQAAazWAAGs2AABrNsAAazcAAGs3QABrOAAAazhAAGs4wABrOQAAazmAAGs6QABrOoAAazrAAGs7gABrO8AAaz0AAGtAQABrQYAAa0IAAGtCgABrQ8AAa0SAAGtFQABrRcAAa08AAGtYAABrYcAAa2rAAGtrgABrbAAAa2yAAGttAABrbYAAa24AAGtuQABrbwAAa3JAAGt2gABrdwAAa3eAAGt4AABreIAAa3kAAGt5gABregAAa3qAAGt+wABrf4AAa4BAAGuBAABrgcAAa4KAAGuDQABrhAAAa4TAAGuFQABrlQAAa5WAAGuWAABrloAAa5dAAGuXgABrl8AAa5gAAGuYQABrmMAAa5lAAGuZgABrmcAAa5pAAGuagABrqkAAa6rAAGurQABrq8AAa6yAAGuswABrrQAAa61AAGutgABrrgAAa66AAGuuwABrrwAAa6+AAGuvwABrv4AAa8AAAGvAwABrwUAAa8IAAGvCQABrwoAAa8LAAGvDAABrw4AAa8QAAGvEQABrxIAAa8UAAGvFQABryIAAa8jAAGvJAABryYAAa9lAAGvZwABr2kAAa9rAAGvbgABr28AAa9wAAGvcQABr3IAAa90AAGvdgABr3cAAa94AAGvegABr3sAAa+6AAGvvAABr74AAa/AAAGvwwABr8QAAa/FAAGvxgABr8cAAa/JAAGvywABr8wAAa/NAAGvzwABr9AAAbAPAAGwEQABsBMAAbAVAAGwGAABsBkAAbAaAAGwGwABsBwAAbAeAAGwIAABsCEAAbAiAAGwJAABsCUAAbBkAAGwZgABsGgAAbBqAAGwbQABsG4AAbBvAAGwcAABsHEAAbBzAAGwdQABsHYAAbB3AAGweQABsHoAAbC5AAGwuwABsL0AAbC/AAGwwgABsMMAAbDEAAGwxQABsMYAAbDIAAGwygABsMsAAbDMAAGwzgABsM8AAbD0AAGxGAABsT8AAbFjAAGxZgABsWgAAbFqAAGxbAABsW4AAbFwAAGxcQABsXQAAbGBAAGxkAABsZIAAbGUAAGxlgABsZgAAbGaAAGxnAABsZ4AAbGtAAGxsAABsbMAAbG2AAGxuQABsbwAAbG/AAGxwgABscQAAbIDAAGyBQABsgcAAbIJAAGyDAABsg0AAbIOAAGyDwABshAAAbISAAGyFAABshUAAbIWAAGyGAABshkAAbJYAAGyWgABslwAAbJeAAGyYQABsmIAAbJjAAGyZAABsmUAAbJnAAGyaQABsmoAAbJrAAGybQABsm4AAbKtAAGyrwABsrEAAbKzAAGytgABsrcAAbK4AAGyuQABsroAAbK8AAGyvgABsr8AAbLAAAGywgABssMAAbMCAAGzBAABswcAAbMJAAGzDAABsw0AAbMOAAGzDwABsxAAAbMSAAGzFAABsxUAAbMWAAGzGAABsxkAAbNYAAGzWgABs1wAAbNeAAGzYQABs2IAAbNjAAGzZAABs2UAAbNnAAGzaQABs2oAAbNrAAGzbQABs24AAbOtAAGzrwABs7EAAbOzAAGztgABs7cAAbO4AAGzuQABs7oAAbO8AAGzvgABs78AAbPAAAGzwgABs8MAAbQCAAG0BAABtAcAAbQJAAG0DAABtA0AAbQOAAG0DwABtBAAAbQSAAG0FAABtBUAAbQWAAG0GAABtBkAAbRkAAG0hwABtKcAAbTHAAG0yQABtMsAAbTNAAG0zwABtNIAAbTTAAG01AABtNcAAbTYAAG02gABtNsAAbTdAAG04AABtOEAAbTiAAG05QABtOYAAbTrAAG0+AABtP0AAbT/AAG1AQABtQYAAbUJAAG1DAABtQ4AAbUzAAG1VwABtX4AAbWiAAG1pQABtacAAbWpAAG1qwABta0AAbWvAAG1sAABtbMAAbXAAAG10QABtdMAAbXVAAG11wABtdkAAbXbAAG13QABtd8AAbXhAAG18gABtfUAAbX4AAG1+wABtf4AAbYBAAG2BAABtgcAAbYKAAG2DAABtksAAbZNAAG2TwABtlEAAbZUAAG2VQABtlYAAbZXAAG2WAABtloAAbZcAAG2XQABtl4AAbZgAAG2YQABtqAAAbaiAAG2pAABtqYAAbapAAG2qgABtqsAAbasAAG2rQABtq8AAbaxAAG2sgABtrMAAba1AAG2tgABtvUAAbb3AAG2+gABtvwAAbb/AAG3AAABtwEAAbcCAAG3AwABtwUAAbcHAAG3CAABtwkAAbcLAAG3DAABtxkAAbcaAAG3GwABtx0AAbdcAAG3XgABt2AAAbdiAAG3ZQABt2YAAbdnAAG3aAABt2kAAbdrAAG3bQABt24AAbdvAAG3cQABt3IAAbexAAG3swABt7UAAbe3AAG3ugABt7sAAbe8AAG3vQABt74AAbfAAAG3wgABt8MAAbfEAAG3xgABt8cAAbgGAAG4CAABuAoAAbgMAAG4DwABuBAAAbgRAAG4EgABuBMAAbgVAAG4FwABuBgAAbgZAAG4GwABuBwAAbhbAAG4XQABuF8AAbhhAAG4ZAABuGUAAbhmAAG4ZwABuGgAAbhqAAG4bAABuG0AAbhuAAG4cAABuHEAAbiwAAG4sgABuLQAAbi2AAG4uQABuLoAAbi7AAG4vAABuL0AAbi/AAG4wQABuMIAAbjDAAG4xQABuMYAAbjrAAG5DwABuTYAAblaAAG5XQABuV8AAblhAAG5YwABuWUAAblnAAG5aAABuWsAAbl4AAG5hwABuYkAAbmLAAG5jQABuY8AAbmRAAG5kwABuZUAAbmkAAG5pwABuaoAAbmtAAG5sAABubMAAbm2AAG5uQABubsAAbn6AAG5/AABuf4AAboAAAG6AwABugQAAboFAAG6BgABugcAAboJAAG6CwABugwAAboNAAG6DwABuhAAAbpPAAG6UQABulMAAbpVAAG6WAABulkAAbpaAAG6WwABulwAAbpeAAG6YAABumEAAbpiAAG6ZAABumUAAbqkAAG6pgABuqgAAbqqAAG6rQABuq4AAbqvAAG6sAABurEAAbqzAAG6tQABurYAAbq3AAG6uQABuroAAbr5AAG6+wABuv4AAbsAAAG7AwABuwQAAbsFAAG7BgABuwcAAbsJAAG7CwABuwwAAbsNAAG7DwABuxAAAbtPAAG7UQABu1MAAbtVAAG7WAABu1kAAbtaAAG7WwABu1wAAbteAAG7YAABu2EAAbtiAAG7ZAABu2UAAbukAAG7pgABu6gAAbuqAAG7rQABu64AAbuvAAG7sAABu7EAAbuzAAG7tQABu7YAAbu3AAG7uQABu7oAAbv5AAG7+wABu/4AAbwAAAG8AwABvAQAAbwFAAG8BgABvAcAAbwJAAG8CwABvAwAAbwNAAG8DwABvBAAAbxbAAG8fgABvJ4AAby+AAG8wAABvMIAAbzEAAG8xgABvMkAAbzKAAG8ywABvM4AAbzPAAG80QABvNIAAbzUAAG81wABvNgAAbzZAAG83AABvN0AAbziAAG87wABvPQAAbz2AAG8+AABvP0AAb0AAAG9AwABvQUAAb0qAAG9TgABvXUAAb2ZAAG9nAABvZ4AAb2gAAG9ogABvaQAAb2mAAG9pwABvaoAAb23AAG9yAABvcoAAb3MAAG9zgABvdAAAb3SAAG91AABvdYAAb3YAAG96QABvewAAb3vAAG98gABvfUAAb34AAG9+wABvf4AAb4BAAG+AwABvkIAAb5EAAG+RgABvkgAAb5LAAG+TAABvk0AAb5OAAG+TwABvlEAAb5TAAG+VAABvlUAAb5XAAG+WAABvpcAAb6ZAAG+mwABvp0AAb6gAAG+oQABvqIAAb6jAAG+pAABvqYAAb6oAAG+qQABvqoAAb6sAAG+rQABvuwAAb7uAAG+8QABvvMAAb72AAG+9wABvvgAAb75AAG++gABvvwAAb7+AAG+/wABvwAAAb8CAAG/AwABvxAAAb8RAAG/EgABvxQAAb9TAAG/VQABv1cAAb9ZAAG/XAABv10AAb9eAAG/XwABv2AAAb9iAAG/ZAABv2UAAb9mAAG/aAABv2kAAb+oAAG/qgABv6wAAb+uAAG/sQABv7IAAb+zAAG/tAABv7UAAb+3AAG/uQABv7oAAb+7AAG/vQABv74AAb/9AAG//wABwAEAAcADAAHABgABwAcAAcAIAAHACQABwAoAAcAMAAHADgABwA8AAcAQAAHAEgABwBMAAcBSAAHAVAABwFcAAcBZAAHAXAABwF0AAcBeAAHAXwABwGAAAcBiAAHAZAABwGUAAcBmAAHAaAABwGkAAcB3AAHAtgABwLgAAcC6AAHAvAABwL8AAcDAAAHAwQABwMIAAcDDAAHAxQABwMcAAcDIAAHAyQABwMsAAcDMAAHA8QABwRUAAcE8AAHBYAABwWMAAcFlAAHBZwABwWkAAcFrAAHBbQABwW4AAcFxAAHBfgABwY0AAcGPAAHBkQABwZMAAcGVAAHBlwABwZkAAcGbAAHBqgABwa0AAcGwAAHBswABwbYAAcG5AAHBvAABwb8AAcHBAAHCAAABwgIAAcIEAAHCBgABwgkAAcIKAAHCCwABwgwAAcINAAHCDwABwhEAAcISAAHCEwABwhUAAcIWAAHCVQABwlcAAcJZAAHCWwABwl4AAcJfAAHCYAABwmEAAcJiAAHCZAABwmYAAcJnAAHCaAABwmoAAcJrAAHCqgABwqwAAcKuAAHCsAABwrMAAcK0AAHCtQABwrYAAcK3AAHCuQABwrsAAcK8AAHCvQABwr8AAcLAAAHC/wABwwEAAcMDAAHDBQABwwgAAcMJAAHDCgABwwsAAcMMAAHDDgABwxAAAcMRAAHDEgABwxQAAcMVAAHDVAABw1YAAcNYAAHDWgABw10AAcNeAAHDXwABw2AAAcNhAAHDYwABw2UAAcNmAAHDZwABw2kAAcNqAAHDqQABw6sAAcOtAAHDrwABw7IAAcOzAAHDtAABw7UAAcO2AAHDuAABw7oAAcO7AAHDvAABw74AAcO/AAHD/gABxAAAAcQCAAHEBAABxAcAAcQIAAHECQABxAoAAcQLAAHEDQABxA8AAcQQAAHEEQABxBMAAcQUAAHEXwABxIIAAcSiAAHEwgABxMQAAcTGAAHEyAABxMoAAcTNAAHEzgABxM8AAcTSAAHE0wABxNUAAcTWAAHE2AABxNsAAcTcAAHE3QABxOAAAcThAAHE6gABxPcAAcT8AAHE/gABxQAAAcUFAAHFCAABxQsAAcUNAAHFMgABxVYAAcV9AAHFoQABxaQAAcWmAAHFqAABxaoAAcWsAAHFrgABxa8AAcWyAAHFvwABxdAAAcXSAAHF1AABxdYAAcXYAAHF2gABxdwAAcXeAAHF4AABxfEAAcX0AAHF9wABxfoAAcX9AAHGAAABxgMAAcYGAAHGCQABxgsAAcZKAAHGTAABxk4AAcZQAAHGUwABxlQAAcZVAAHGVgABxlcAAcZZAAHGWwABxlwAAcZdAAHGXwABxmAAAcafAAHGoQABxqMAAcalAAHGqAABxqkAAcaqAAHGqwABxqwAAcauAAHGsAABxrEAAcayAAHGtAABxrUAAcb0AAHG9gABxvkAAcb7AAHG/gABxv8AAccAAAHHAQABxwIAAccEAAHHBgABxwcAAccIAAHHCgABxwsAAccYAAHHGQABxxoAAcccAAHHWwABx10AAcdfAAHHYQABx2QAAcdlAAHHZgABx2cAAcdoAAHHagABx2wAAcdtAAHHbgABx3AAAcdxAAHHsAABx7IAAce0AAHHtgABx7kAAce6AAHHuwABx7wAAce9AAHHvwABx8EAAcfCAAHHwwABx8UAAcfGAAHIBQAByAcAAcgJAAHICwAByA4AAcgPAAHIEAAByBEAAcgSAAHIFAAByBYAAcgXAAHIGAAByBoAAcgbAAHIWgAByFwAAcheAAHIYAAByGMAAchkAAHIZQAByGYAAchnAAHIaQAByGsAAchsAAHIbQAByG8AAchwAAHIrwAByLEAAcizAAHItQAByLgAAci5AAHIugAByLsAAci8AAHIvgAByMAAAcjBAAHIwgAByMQAAcjFAAHI6gAByQ4AAck1AAHJWQAByVwAAcleAAHJYAAByWIAAclkAAHJZgAByWcAAclqAAHJdwAByYYAAcmIAAHJigAByYwAAcmOAAHJkAAByZIAAcmUAAHJowAByaYAAcmpAAHJrAABya8AAcmyAAHJtQABybgAAcm6AAHJ+QAByfsAAcn9AAHJ/wABygIAAcoDAAHKBAABygUAAcoGAAHKCAABygoAAcoLAAHKDAAByg4AAcoPAAHKTgABylAAAcpSAAHKVAABylcAAcpYAAHKWQAByloAAcpbAAHKXQAByl8AAcpgAAHKYQABymMAAcpkAAHKowAByqUAAcqnAAHKqQAByqwAAcqtAAHKrgAByq8AAcqwAAHKsgAByrQAAcq1AAHKtgAByrgAAcq5AAHK+AAByvoAAcr8AAHK/gABywEAAcsCAAHLAwABywQAAcsFAAHLBwABywkAAcsKAAHLCwAByw0AAcsOAAHLTQABy08AActRAAHLUwABy1YAActXAAHLWAABy1kAActaAAHLXAABy14AActfAAHLYAABy2IAActjAAHLogABy6QAAcumAAHLqAABy6sAAcusAAHLrQABy64AAcuvAAHLsQABy7MAAcu0AAHLtQABy7cAAcu4AAHL9wABy/kAAcv7AAHL/QABzAAAAcwBAAHMAgABzAMAAcwEAAHMBgABzAgAAcwJAAHMCgABzAwAAcwNAAHMWAABzHsAAcybAAHMuwABzL0AAcy/AAHMwQABzMMAAczGAAHMxwABzMgAAczLAAHMzAABzM4AAczPAAHM0QABzNQAAczVAAHM1gABzNkAAczaAAHM3wABzOwAAczxAAHM8wABzPUAAcz6AAHM/QABzQAAAc0CAAHNJwABzUsAAc1yAAHNlgABzZkAAc2bAAHNnQABzZ8AAc2hAAHNowABzaQAAc2nAAHNtAABzcUAAc3HAAHNyQABzcsAAc3NAAHNzwABzdEAAc3TAAHN1QABzeYAAc3pAAHN7AABze8AAc3yAAHN9QABzfgAAc37AAHN/gABzgAAAc4/AAHOQQABzkMAAc5FAAHOSAABzkkAAc5KAAHOSwABzkwAAc5OAAHOUAABzlEAAc5SAAHOVAABzlUAAc6UAAHOlgABzpgAAc6aAAHOnQABzp4AAc6fAAHOoAABzqEAAc6jAAHOpQABzqYAAc6nAAHOqQABzqoAAc7pAAHO6wABzu4AAc7wAAHO8wABzvQAAc71AAHO9gABzvcAAc75AAHO+wABzvwAAc79AAHO/wABzwAAAc8NAAHPDgABzw8AAc8RAAHPUAABz1IAAc9UAAHPVgABz1kAAc9aAAHPWwABz1wAAc9dAAHPXwABz2EAAc9iAAHPYwABz2UAAc9mAAHPpQABz6cAAc+pAAHPqwABz64AAc+vAAHPsAABz7EAAc+yAAHPtAABz7YAAc+3AAHPuAABz7oAAc+7AAHP+gABz/wAAc/+AAHQAAAB0AMAAdAEAAHQBQAB0AYAAdAHAAHQCQAB0AsAAdAMAAHQDQAB0A8AAdAQAAHQTwAB0FEAAdBTAAHQVQAB0FgAAdBZAAHQWgAB0FsAAdBcAAHQXgAB0GAAAdBhAAHQYgAB0GQAAdBlAAHQpAAB0KYAAdCoAAHQqgAB0K0AAdCuAAHQrwAB0LAAAdCxAAHQswAB0LUAAdC2AAHQtwAB0LkAAdC6AAHQ3wAB0QMAAdEqAAHRTgAB0VEAAdFTAAHRVQAB0VcAAdFZAAHRWwAB0VwAAdFfAAHRbAAB0XsAAdF9AAHRfwAB0YEAAdGDAAHRhQAB0YcAAdGJAAHRmAAB0ZsAAdGeAAHRoQAB0aQAAdGnAAHRqgAB0a0AAdGvAAHR7gAB0fAAAdHyAAHR9AAB0fcAAdH4AAHR+QAB0foAAdH7AAHR/QAB0f8AAdIAAAHSAQAB0gMAAdIEAAHSQwAB0kUAAdJHAAHSSQAB0kwAAdJNAAHSTgAB0k8AAdJQAAHSUgAB0lQAAdJVAAHSVgAB0lgAAdJZAAHSmAAB0poAAdKcAAHSngAB0qEAAdKiAAHSowAB0qQAAdKlAAHSpwAB0qkAAdKqAAHSqwAB0q0AAdKuAAHS7QAB0u8AAdLxAAHS8wAB0vYAAdL3AAHS+AAB0vkAAdL6AAHS/AAB0v4AAdL/AAHTAAAB0wIAAdMDAAHTQgAB00QAAdNGAAHTSAAB00sAAdNMAAHTTQAB004AAdNPAAHTUQAB01MAAdNUAAHTVQAB01cAAdNYAAHTlwAB05kAAdObAAHTnQAB06AAAdOhAAHTogAB06MAAdOkAAHTpgAB06gAAdOpAAHTqgAB06wAAdOtAAHT7AAB0+4AAdPwAAHT8gAB0/UAAdP2AAHT9wAB0/gAAdP5AAHT+wAB0/0AAdP+AAHT/wAB1AEAAdQCAAHUCwAB1AwAAdQOAAHUTQAB1E8AAdRRAAHUUwAB1FYAAdRXAAHUWAAB1FkAAdRaAAHUXAAB1F4AAdRfAAHUYAAB1GIAAdRjAAHUogAB1KQAAdSmAAHUqAAB1KsAAdSsAAHUrQAB1K4AAdSvAAHUsQAB1LMAAdS0AAHUtQAB1LcAAdS4AAHU9wAB1PkAAdT8AAHU/gAB1QEAAdUCAAHVAwAB1QQAAdUFAAHVBwAB1QkAAdUKAAHVCwAB1Q0AAdUOAAHVFwAB1RgAAdUaAAHVWQAB1VsAAdVdAAHVXwAB1WIAAdVjAAHVZAAB1WUAAdVmAAHVaAAB1WoAAdVrAAHVbAAB1W4AAdVvAAHVrgAB1bAAAdWyAAHVtAAB1bcAAdW4AAHVuQAB1boAAdW7AAHVvQAB1b8AAdXAAAHVwQAB1cMAAdXEAAHWAwAB1gUAAdYIAAHWCgAB1g0AAdYOAAHWDwAB1hAAAdYRAAHWEwAB1hUAAdYWAAHWFwAB1hkAAdYaAAHWZQAB1ogAAdaoAAHWyAAB1soAAdbMAAHWzgAB1tAAAdbSAAHW0wAB1tQAAdbXAAHW2AAB1toAAdbbAAHW3QAB1t8AAdbgAAHW4QAB1uQAAdblAAHW6gAB1vcAAdb8AAHW/gAB1wAAAdcFAAHXCAAB1wsAAdcNAAHXMgAB11YAAdd9AAHXoQAB16QAAdemAAHXqAAB16oAAdesAAHXrgAB168AAdeyAAHXvwAB19AAAdfSAAHX1AAB19YAAdfYAAHX2gAB19wAAdfeAAHX4AAB1/EAAdf0AAHX9wAB1/oAAdf9AAHYAAAB2AMAAdgGAAHYCQAB2AsAAdhKAAHYTAAB2E4AAdhQAAHYUwAB2FQAAdhVAAHYVgAB2FcAAdhZAAHYWwAB2FwAAdhdAAHYXwAB2GAAAdifAAHYoQAB2KMAAdilAAHYqAAB2KkAAdiqAAHYqwAB2KwAAdiuAAHYsAAB2LEAAdiyAAHYtAAB2LUAAdj0AAHY9gAB2PkAAdj7AAHY/gAB2P8AAdkAAAHZAQAB2QIAAdkEAAHZBgAB2QcAAdkIAAHZCgAB2QsAAdkYAAHZGQAB2RoAAdkcAAHZWwAB2V0AAdlfAAHZYQAB2WQAAdllAAHZZgAB2WcAAdloAAHZagAB2WwAAdltAAHZbgAB2XAAAdlxAAHZsAAB2bIAAdm0AAHZtgAB2bkAAdm6AAHZuwAB2bwAAdm9AAHZvwAB2cEAAdnCAAHZwwAB2cUAAdnGAAHaBQAB2gcAAdoJAAHaCwAB2g4AAdoPAAHaEAAB2hEAAdoSAAHaFAAB2hYAAdoXAAHaGAAB2hoAAdobAAHaWgAB2lwAAdpeAAHaYAAB2mMAAdpkAAHaZQAB2mYAAdpnAAHaaQAB2msAAdpsAAHabQAB2m8AAdpwAAHarwAB2rEAAdqzAAHatQAB2rgAAdq5AAHaugAB2rsAAdq8AAHavgAB2sAAAdrBAAHawgAB2sQAAdrFAAHa6gAB2w4AAds1AAHbWQAB21wAAdteAAHbYAAB22IAAdtkAAHbZgAB22cAAdtqAAHbdwAB24YAAduIAAHbigAB24wAAduOAAHbkAAB25IAAduUAAHbowAB26YAAdupAAHbrAAB268AAduyAAHbtQAB27gAAdu6AAHb+QAB2/sAAdv9AAHb/wAB3AIAAdwDAAHcBAAB3AUAAdwGAAHcCAAB3AoAAdwLAAHcDAAB3A4AAdwPAAHcTgAB3FAAAdxSAAHcVAAB3FcAAdxYAAHcWQAB3FoAAdxbAAHcXQAB3F8AAdxgAAHcYQAB3GMAAdxkAAHcowAB3KUAAdynAAHcqQAB3KwAAdytAAHcrgAB3K8AAdywAAHcsgAB3LQAAdy1AAHctgAB3LgAAdy5AAHc+AAB3PoAAdz9AAHc/wAB3QIAAd0DAAHdBAAB3QUAAd0GAAHdCAAB3QoAAd0LAAHdDAAB3Q4AAd0PAAHdTgAB3VAAAd1SAAHdVAAB3VcAAd1YAAHdWQAB3VoAAd1bAAHdXQAB3V8AAd1gAAHdYQAB3WMAAd1kAAHdowAB3aUAAd2nAAHdqQAB3awAAd2tAAHdrgAB3a8AAd2wAAHdsgAB3bQAAd21AAHdtgAB3bgAAd25AAHd+AAB3foAAd38AAHd/gAB3gEAAd4CAAHeAwAB3gQAAd4FAAHeBwAB3gkAAd4KAAHeCwAB3g0AAd4OAAHeWQAB3nwAAd6cAAHevAAB3r4AAd7AAAHewgAB3sQAAd7GAAHexwAB3sgAAd7LAAHezAAB3s4AAd7PAAHe0QAB3tMAAd7UAAHe1QAB3tgAAd7ZAAHe3gAB3usAAd7wAAHe8gAB3vQAAd75AAHe/AAB3v8AAd8BAAHfJgAB30oAAd9xAAHflQAB35gAAd+aAAHfnAAB354AAd+gAAHfogAB36MAAd+mAAHfswAB38QAAd/GAAHfyAAB38oAAd/MAAHfzgAB39AAAd/SAAHf1AAB3+UAAd/oAAHf6wAB3+4AAd/xAAHf9AAB3/cAAd/6AAHf/QAB3/8AAeA+AAHgQAAB4EIAAeBEAAHgRwAB4EgAAeBJAAHgSgAB4EsAAeBNAAHgTwAB4FAAAeBRAAHgUwAB4FQAAeCTAAHglQAB4JcAAeCZAAHgnAAB4J0AAeCeAAHgnwAB4KAAAeCiAAHgpAAB4KUAAeCmAAHgqAAB4KkAAeDoAAHg6gAB4O0AAeDvAAHg8gAB4PMAAeD0AAHg9QAB4PYAAeD4AAHg+gAB4PsAAeD8AAHg/gAB4P8AAeEMAAHhDQAB4Q4AAeEQAAHhTwAB4VEAAeFTAAHhVQAB4VgAAeFZAAHhWgAB4VsAAeFcAAHhXgAB4WAAAeFhAAHhYgAB4WQAAeFlAAHhpAAB4aYAAeGoAAHhqgAB4a0AAeGuAAHhrwAB4bAAAeGxAAHhswAB4bUAAeG2AAHhtwAB4bkAAeG6AAHh+QAB4fsAAeH9AAHh/wAB4gIAAeIDAAHiBAAB4gUAAeIGAAHiCAAB4goAAeILAAHiDAAB4g4AAeIPAAHiTgAB4lAAAeJSAAHiVAAB4lcAAeJYAAHiWQAB4loAAeJbAAHiXQAB4l8AAeJgAAHiYQAB4mMAAeJkAAHiowAB4qUAAeKnAAHiqQAB4qwAAeKtAAHirgAB4q8AAeKwAAHisgAB4rQAAeK1AAHitgAB4rgAAeK5AAHi3gAB4wIAAeMpAAHjTQAB41AAAeNSAAHjVAAB41YAAeNYAAHjWgAB41sAAeNeAAHjawAB43oAAeN8AAHjfgAB44AAAeOCAAHjhAAB44YAAeOIAAHjlwAB45oAAeOdAAHjoAAB46MAAeOmAAHjqQAB46wAAeOuAAHj7QAB4+8AAePyAAHj9AAB4/cAAeP4AAHj+QAB4/oAAeP7AAHj/QAB4/8AAeQAAAHkAQAB5AMAAeQEAAHkQwAB5EUAAeRHAAHkSQAB5EwAAeRNAAHkTgAB5E8AAeRQAAHkUgAB5FQAAeRVAAHkVgAB5FgAAeRZAAHkmAAB5JoAAeScAAHkngAB5KEAAeSiAAHkowAB5KQAAeSlAAHkpwAB5KkAAeSqAAHkqwAB5K0A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AfA1AAHwNgAB8DcAAfA5AAHwOwAB8DwAAfA9AAHwPwAB8EAAAfB/AAHwgQAB8IMAAfCFAAHwiAAB8IkAAfCKAAHwiwAB8IwAAfCOAAHwkAAB8JEAAfCSAAHwlAAB8JUAAfDUAAHw1gAB8NkAAfDbAAHw3gAB8N8AAfDgAAHw4QAB8OIAAfDkAAHw5gAB8OcAAfDoAAHw6gAB8OsAAfD4AAHw+QAB8PoAAfD8AAHxOwAB8T0AAfE/AAHxQQAB8UQAAfFFAAHxRgAB8UcAAfFIAAHxSgAB8UwAAfFNAAHxTgAB8VAAAfFRAAHxkAAB8ZIAAfGUAAHxlgAB8ZkAAfGaAAHxmwAB8ZwAAfGdAAHxnwAB8aEAAfGiAAHxowAB8aUAAfGmAAHx5QAB8ecAAfHpAAHx6wAB8e4AAfHvAAHx8AAB8fEAAfHyAAHx9AAB8fYAAfH3AAHx+AAB8foAAfH7AAHyOgAB8jwAAfI+AAHyQAAB8kMAAfJEAAHyRQAB8kYAAfJHAAHySQAB8ksAAfJMAAHyTQAB8k8AAfJQAAHyjwAB8pEAAfKTAAHylQAB8pgAAfKZAAHymgAB8psAAfKcAAHyngAB8qAAAfKhAAHyogAB8qQAAfKlAAHyygAB8u4AAfMVAAHzOQAB8zwAAfM+AAHzQAAB80IAAfNEAAHzRgAB80cAAfNKAAHzVwAB82YAAfNoAAHzagAB82wAAfNuAAHzcAAB83IAAfN0AAHzgwAB84YAAfOJAAHzjAAB848AAfOSAAHzlQAB85gAAfOaAAHz2QAB89sAAfPdAAHz3wAB8+IAAfPjAAHz5AAB8+UAAfPmAAHz6AAB8+oAAfPrAAHz7AAB8+4AAfPvAAH0LgAB9DAAAfQyAAH0NAAB9DcAAfQ4AAH0OQAB9DoAAfQ7AAH0PQAB9D8AAfRAAAH0QQAB9EMAAfREAAH0gwAB9IUAAfSHAAH0iQAB9IwAAfSNAAH0jgAB9I8AAfSQAAH0kgAB9JQAAfSVAAH0lgAB9JgAAfSZAAH02AAB9NoAAfTdAAH03wAB9OIAAfTjAAH05AAB9OUAAfTmAAH06AAB9OoAAfTrAAH07AAB9O4AAfTvAAH1LgAB9TAAAfUyAAH1NAAB9TcAAfU4AAH1OQAB9ToAAfU7AAH1PQAB9T8AAfVAAAH1QQAB9UMAAfVEAAH1gwAB9YUA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AgDQAAIA0QACANMAAgDVAAIA1gACANcAAgDZAAIA2gACAOcAAgDoAAIA6QACAOsAAgEqAAIBLAACAS4AAgEwAAIBMwACATQAAgE1AAIBNgACATcAAgE5AAIBOwACATwAAgE9AAIBPwACAUAAAgF/AAIBgQACAYMAAgGFAAIBiAACAYkAAgGKAAIBiwACAYwAAgGOAAIBkAACAZEAAgGSAAIBlAACAZUAAgHUAAIB1gACAdgAAgHaAAIB3QACAd4AAgHfAAIB4AACAeEAAgHjAAIB5QACAeYAAgHnAAIB6QACAeoAAgIpAAICKwACAi0AAgIvAAICMgACAjMAAgI0AAICNQACAjYAAgI4AAICOgACAjsAAgI8AAICPgACAj8AAgJ+AAICgAACAoIAAgKEAAIChwACAogAAgKJAAICigACAosAAgKNAAICjwACApAAAgKRAAICkwACApQAAgK5AAIC3QACAwQAAgMoAAIDKwACAy0AAgMvAAIDMQACAzMAAgM1AAIDNgACAzkAAgNGAAIDVQACA1cAAgNZAAIDWwACA10AAgNfAAIDYQACA2MAAgNyAAIDdQACA3gAAgN7AAIDfgACA4EAAgOEAAIDhwACA4kAAgPIAAIDygACA8wAAgPOAAID0QACA9IAAgPTAAID1AACA9UAAgPXAAID2QACA9oAAgPbAAID3QACA94AAgQdAAIEHwACBCEAAgQjAAIEJgACBCcAAgQoAAIEKQACBCoAAgQsAAIELgACBC8AAgQwAAIEMgACBDMAAgRyAAIEdAACBHYAAgR4AAIEewACBHwAAgR9AAIEfgACBH8AAgSBAAIEgwACBIQAAgSFAAIEhwACBIgAAgTHAAIEyQACBMwAAgTOAAIE0QACBNIAAgTTAAIE1AACBNUAAgTXAAIE2QACBNoAAgTbAAIE3QACBN4AAgUhAAIFRQACBWkAAgWMAAIFswACBdMAAgX6AAIGIQACBkEAAgZlAAIGiQACBosAAgaOAAIGkAACBpIAAgaUAAIGlwACBpoAAgacAAIGngACBqEAAgajAAIGpQACBqgAAgarAAIGrAACBrEAAga+AAIGwQACBsMAAgbGAAIGyQACBssAAgbwAAIHFAACBzsAAgdfAAIHYgACB2QAAgdmAAIHaAACB2oAAgdsAAIHbQACB3AAAgd9AAIHkAACB5IAAgeUAAIHlgACB5gAAgeaAAIHnAACB54AAgegAAIHogACB7UAAge4AAIHuwACB74AAgfBAAIHxAACB8cAAgfKAAIHzQACB9AAAgfSAAIIEQACCBMAAggWAAIIGAACCBsAAggcAAIIHQACCB4AAggfAAIIIQACCCMAAggkAAIIJQACCCcAAggoAAIIMQACCDIAAgg0AAIIcwACCHUAAgh3AAIIeQACCHwAAgh9AAIIfgACCH8AAgiAAAIIggACCIQAAgiFAAIIhgACCIgAAgiJAAIIyAACCMoAAgjNAAIIzwACCNIAAgjTAAII1AACCNUAAgjWAAII2AACCNoAAgjbAAII3AACCN4AAgjfAAII6AACCOkAAgjrAAIJKgACCSwAAgkuAAIJMAACCTMAAgk0AAIJNQACCTYAAgk3AAIJOQACCTsAAgk8AAIJPQACCT8AAglAAAIJfwACCYEAAgmEAAIJhgACCYkAAgmKAAIJiwACCYwAAgmNAAIJjwACCZEAAgmSAAIJkwACCZUAAgmWAAIJnwACCaAAAgmiAAIJ4QACCeMAAgnlAAIJ5wACCeoAAgnrAAIJ7AACCe0AAgnuAAIJ8AACCfIAAgnzAAIJ9AACCfYAAgn3AAIKNgACCjgAAgo7AAIKPQACCkAAAgpBAAIKQgACCkMAAgpEAAIKRgACCkgAAgpJAAIKSgACCkwAAgpNAAIKWgACClsAAgpcAAIKXgACCp0AAgqfAAIKoQACCqMAAgqmAAIKpwACCqgAAgqpAAIKqgACCqwAAgquAAIKrwACCrAAAgqyAAIKswACCvIAAgr0AAIK9gACCvgAAgr7AAIK/AACCv0AAgr+AAIK/wACCwEAAgsDAAILBAACCwUAAgsHAAILCAACCxUAAgseAAILIQACCyMAAgsmAAILKQACCzIAAgs1AAILOAACCzsAAgs+AAILQAACC0UAAgtKAAILTwACC5oAAgu9AAIL3QACC/0AAgv/AAIMAQACDAMAAgwFAAIMCAACDAkAAgwKAAIMDQACDA4AAgwQAAIMEQACDBMAAgwWAAIMFwACDBgAAgwbAAIMHAACDCEAAgwuAAIMMwACDDUAAgw3AAIMPAACDD8AAgxCAAIMRAACDGkAAgyNAAIMtAACDNgAAgzbAAIM3QACDN8AAgzhAAIM4wACDOUAAgzmAAIM6QACDPYA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AhfhAAIX4wACF+UAAhfoAAIX6QACF+oAAhfrAAIX7AACF+4AAhfwAAIX8QACF/IAAhf0AAIX9QACGBoAAhg+AAIYZQACGIkAAhiMAAIYjgACGJAAAhiSAAIYlAACGJYAAhiXAAIYmgACGKcAAhi2AAIYuAACGLoAAhi8AAIYvgACGMAAAhjCAAIYxAACGNMAAhjWAAIY2QACGNwAAhjfAAIY4gACGOUAAhjoAAIY6gACGSkAAhkrAAIZLgACGTAAAhkzAAIZNAACGTUAAhk2AAIZNwACGTkAAhk7AAIZPAACGT0AAhk/AAIZQAACGX8AAhmBAAIZgwACGYUAAhmIAAIZiQACGYoAAhmLAAIZjAACGY4AAhmQAAIZkQACGZIAAhmUAAIZlQACGdQAAhnWAAIZ2AACGdoAAhndAAIZ3gACGd8AAhngAAIZ4QACGeMAAhnlAAIZ5gACGecAAhnpAAIZ6gACGikAAhorAAIaLgACGjAAAhozAAIaNAACGjUAAho2AAIaNwACGjkAAho7AAIaPAACGj0AAho/AAIaQAACGn8AAhqBAAIagwACGoUAAhqIAAIaiQACGooAAhqLAAIajAACGo4AAhqQAAIakQACGpIAAhqUAAIalQACGtQAAhrWAAIa2AACGtoAAhrdAAIa3gACGt8AAhrgAAIa4QACGuMAAhrlAAIa5gACGucAAhrpAAIa6gACGykAAhsrAAIbLQACGy8AAhsyAAIbMwACGzQAAhs1AAIbNgACGzgAAhs6AAIbOwACGzwAAhs+AAIbPwACG4oAAhutAAIbzQACG+0AAhvvAAIb8QACG/MAAhv1AAIb+AACG/kAAhv6AAIb/QACG/4AAhwAAAIcAQACHAMAAhwGAAIcBwACHAgAAhwLAAIcDAACHBUAAhwiAAIcJwACHCkAAhwrAAIcMAACHDMAAhw2AAIcOAACHF0AAhyBAAIcqAACHMwAAhzPAAIc0QACHNMAAhzVAAIc1wACHNkAAhzaAAIc3QACHOoAAhz7AAIc/QACHP8AAh0BAAIdAwACHQUAAh0HAAIdCQACHQsAAh0cAAIdHwACHSIAAh0lAAIdKAACHSsAAh0uAAIdMQACHTQAAh02AAIddQACHXcAAh15AAIdewACHX4AAh1/AAIdgAACHYEAAh2CAAIdhAACHYYAAh2HAAIdiAACHYoAAh2LAAIdygACHcwAAh3OAAId0AACHdMAAh3UAAId1QACHdYAAh3XAAId2QACHdsAAh3cAAId3QACHd8AAh3gAAIeHwACHiEAAh4kAAIeJgACHikAAh4qAAIeKwACHiwAAh4tAAIeLwACHjEAAh4yAAIeMwACHjUAAh42AAIeQwACHkQAAh5FAAIeRwACHoYAAh6IAAIeigACHowAAh6PAAIekAACHpEAAh6SAAIekwACHpUAAh6XAAIemAACHpkAAh6bAAIenAACHtsAAh7dAAIe3wACHuEAAh7kAAIe5QACHuYAAh7nAAIe6AACHuoAAh7sAAIe7QACHu4AAh7wAAIe8QACHzAAAh8yAAIfNAACHzYAAh85AAIfOgACHzsAAh88AAIfPQACHz8AAh9BAAIfQgACH0MAAh9FAAIfRgACH4UAAh+HAAIfiQACH4sAAh+OAAIfjwACH5AAAh+RAAIfkgACH5QAAh+WAAIflwACH5gAAh+aAAIfmwACH9oAAh/cAAIf3gACH+AAAh/jAAIf5AACH+UAAh/mAAIf5wACH+kAAh/rAAIf7AACH+0AAh/vAAIf8AACIBUAAiA5AAIgYAACIIQAAiCHAAIgiQACIIsAAiCNAAIgjwACIJEAAiCSAAIglQACIKIAAiCxAAIgswACILUAAiC3AAIguQACILsAAiC9AAIgvwACIM4AAiDRAAIg1AACINcAAiDaAAIg3QACIOAAAiDjAAIg5QACISQAAiEmAAIhKQACISsAAiEuAAIhLwACITAAAiExAAIhMgACITQAAiE2AAIhNwACITgAAiE6AAIhOwACIXoAAiF8AAIhfgACIYAAAiGDAAIhhAACIYUAAiGGAAIhhwACIYkAAiGLAAIhjAACIY0AAiGPAAIhkAACIc8AAiHRAAIh0wACIdUAAiHYAAIh2QACIdoAAiHbAAIh3AACId4AAiHgAAIh4QACIeIAAiHkAAIh5QACIiQAAiImAAIiKQACIisAAiIuAAIiLwACIjAAAiIxAAIiMgACIjQAAiI2AAIiNwACIjgAAiI6AAIiOwACInoAAiJ8AAIifgACIoAAAiKDAAIihAACIoUAAiKGAAIihwACIokAAiKLAAIijAACIo0AAiKPAAIikAACIs8AAiLRAAIi0wACItUAAiLYAAIi2QACItoAAiLbAAIi3AACIt4AAiLgAAIi4QACIuIAAiLkAAIi5QACIyQAAiMmAAIjKAACIyoAAiMtAAIjLgACIy8AAiMwAAIjMQACIzMAAiM1AAIjNgACIzcAAiM5AAIjOgACI4UAAiOoAAIjyAACI+gAAiPqAAIj7AACI+4AAiPwAAIj8wACI/QAAiP1AAIj+AACI/kAAiP7AAIj/AACI/4AAiQBAAIkAgACJAMAAiQGAAIkBwACJAwAAiQZAAIkHgACJCAAAiQiAAIkJwACJCoAAiQtAAIkLwACJFQAAiR4AAIknwACJMMAAiTGAAIkyAACJMoAAiTMAAIkzgACJNAAAiTRAAIk1AACJOEAAiTyAAIk9AACJPYAAiT4AAIk+gACJPwAAiT+AAIlAAACJQIAAiUTAAIlFgACJRkAAiUcAAIlHwACJSIAAiUlAAIlKAACJSsAAiUtAAIlbAACJW4AAiVwAAIlcgACJXUAAiV2AAIldwACJXgAAiV5AAIlewACJX0AAiV+AAIlfwACJYEAAiWCAAIlwQACJcMAAiXFAAIlxwACJcoAAiXLAAIlzAACJc0AAiXOAAIl0AACJdIAAiXTAAIl1AACJdYAAiXXAAImFgACJhgAAiYbAAImHQACJiAAAiYhAAImIgACJiMAAiYkAAImJgACJigAAiYpAAImKgACJiwAAiYtAAImOgACJjsAAiY8AAImPgACJn0AAiZ/AAImgQACJoMAAiaGAAImhwACJogAAiaJAAImigACJowAAiaOAAImjwACJpAAAiaSAAImkwACJtIAAibUAAIm1gACJtgAAibbAAIm3AACJt0AAibeAAIm3wACJuEAAibjAAIm5AACJuUAAibnAAIm6AACJycAAicpAAInKwACJy0AAicwAAInMQACJzIAAiczAAInNAACJzYAAic4AAInOQACJzoAAic8AAInPQACJ3wAAid+AAIngAACJ4IAAieFAAInhgACJ4cAAieIAAIniQACJ4sAAieNAAInjgACJ48AAieRAAInkgACJ9EAAifTAAIn1QACJ9cAAifaAAIn2wACJ9wAAifdAAIn3gACJ+AAAifiAAIn4wACJ+QAAifmAAIn5wACKAwAAigwAAIoVwACKHsAAih+AAIogAACKIIAAiiEAAIohgACKIgAAiiJAAIojAACKJkAAiioAAIoqgACKKwAAiiuAAIosAACKLIAAii0AAIotgACKMUAAijIAAIoywACKM4AAijRAAIo1AACKNcAAijaAAIo3AACKRsAAikdAAIpHwACKSEAAikkAAIpJQACKSYAAiknAAIpKAACKSoAAiksAAIpLQACKS4AAikwAAIpMQACKXAAAilyAAIpdAACKXYAAil5AAIpegACKXsAAil8AAIpfQACKX8AAimBAAIpggACKYMAAimFAAIphgACKcUAAinHAAIpyQACKcsAAinOAAIpzwACKdAAAinRAAIp0gACKdQAAinWAAIp1wACKdgAAinaAAIp2wACKhoAAiocAAIqHgACKiAAAiojAAIqJAACKiUAAiomAAIqJwACKikAAiorAAIqLAACKi0AAiovAAIqMAACKm8AAipxAAIqcwACKnUAAip4AAIqeQACKnoAAip7AAIqfAACKn4AAiqAAAIqgQACKoIAAiqEAAIqhQACKsQAAirGAAIqyAACKsoAAirNAAIqzgACKs8AAirQAAIq0QACKtMAAirVAAIq1gACKtcAAirZAAIq2gACKxkAAisbAAIrHQACKx8AAisiAAIrIwACKyQAAislAAIrJgACKygAAisqAAIrKwACKywAAisuAAIrLwACKzgAAis5AAIrOwACK3oAAit8AAIrfgACK4AAAiuDAAIrhAACK4UAAiuGAAIrhwACK4kAAiuLAAIrjAACK40AAiuPAAIrkAACK88AAivRAAIr0wACK9UAAivYAAIr2QACK9oAAivbAAIr3AACK94AAivgAAIr4QACK+IAAivkAAIr5QACLCQAAiwmAAIsKQACLCsAAiwuAAIsLwACLDAAAiwxAAIsMgACLDQAAiw2AAIsNwACLDgAAiw6AAIsOwACLIYAAiypAAIsyQACLOkAAizrAAIs7QACLO8AAizxAAIs8wACLPQAAiz1AAIs+AACLPkAAiz7AAIs/AACLP4AAi0AAAItAQACLQIAAi0FAAItBgACLQsAAi0YAAItHQACLR8AAi0hAAItJgACLSkAAi0sAAItLgACLVMAAi13AAItngACLcIAAi3FAAItxwACLckAAi3LAAItzQACLc8AAi3QAAIt0wACLeAAAi3xAAIt8wACLfUAAi33AAIt+QACLfsAAi39AAIt/wACLgEAAi4SAAIuFQACLhgAAi4bAAIuHgACLiEAAi4kAAIuJwACLioAAi4sAAIuawACLm0AAi5vAAIucQACLnQAAi51AAIudgACLncAAi54AAIuegACLnwAAi59AAIufgACLoAAAi6BAAIuwAACLsIAAi7EAAIuxgACLskAAi7KAAIuywACLswAAi7NAAIuzwACLtEAAi7SAAIu0wACLtUAAi7WAAIvFQACLxcAAi8aAAIvHAACLx8AAi8gAAIvIQACLyIAAi8jAAIvJQACLycAAi8oAAIvKQACLysAAi8sAAIvOQACLzoAAi87AAIvPQACL3wAAi9+AAIvgAACL4IAAi+FAAIvhgACL4cAAi+IAAIviQACL4sAAi+NAAIvjgACL48AAi+RAAIvkgACL9EAAi/TAAIv1QACL9cAAi/aAAIv2wACL9wAAi/dAAIv3gACL+AAAi/iAAIv4wACL+QAAi/mAAIv5wACMCYAAjAoAAIwKgACMCwAAjAvAAIwMAACMDEAAjAyAAIwMwACMDUAAjA3AAIwOAACMDkAAjA7AAIwPAACMHsAAjB9AAIwfwACMIEAAjCEAAIwhQACMIYAAjCHAAIwiAACMIoAAjCMAAIwjQACMI4AAjCQAAIwkQACMNAAAjDSAAIw1AACMNYAAjDZAAIw2gACMNsAAjDcAAIw3QACMN8AAjDhAAIw4gACMOMAAjDlAAIw5gACMQsAAjEvAAIxVgACMXoAAjF9AAIxfwACMYEAAjGDAAIxhQACMYcAAjGIAAIxiwACMZgAAjGnAAIxqQACMasAAjGtAAIxrwACMbEAAjGzAAIxtQACMcQAAjHHAAIxygACMc0AAjHQAAIx0wACMdYAAjHZAAIx2wACMhoAAjIcAAIyHwACMiEAAjIkAAIyJQACMiYAAjInAAIyKAACMioAAjIsAAIyLQACMi4AAjIwAAIyMQACMnAAAjJyAAIydAACMnYAAjJ5AAIyegACMnsAAjJ8AAIyfQACMn8AAjKBAAIyggACMoMAAjKFAAIyhgACMsUAAjLHAAIyyQACMssAAjLOAAIyzwACMtAAAjLRAAIy0gACMtQAAjLWAAIy1wACMtgAAjLaAAIy2wACMxoAAjMcAAIzHwACMyEAAjMkAAIzJQACMyYAAjMnAAIzKAACMyoAAjMsAAIzLQACMy4AAjMwAAIzMQACM3AAAjNyAAIzdAACM3YAAjN5AAIzegACM3sAAjN8AAIzfQACM38AAjOBAAIzggACM4MAAjOFAAIzhgACM8UAAjPHAAIzyQACM8sAAjPOAAIzzwACM9AAAjPRAAIz0gACM9QAAjPWAAIz1wACM9gAAjPaAAIz2wACNBoAAjQcAAI0HgACNCAAAjQjAAI0JAACNCUAAjQmAAI0JwACNCkAAjQrAAI0LAACNC0AAjQvAAI0MAACNHsAAjSeAAI0vgACNN4AAjTgAAI04gACNOQAAjTmAAI06AACNOkAAjTqAAI07QACNO4AAjTwAAI08QACNPMAAjT1AAI09gACNPcAAjT6AAI0+wACNQQAAjURAAI1FgACNRgAAjUaAAI1HwACNSIAAjUlAAI1JwACNUwAAjVwAAI1lwACNbsAAjW+AAI1wAACNcIAAjXEAAI1xgACNcgAAjXJAAI1zAACNdkAAjXqAAI17AACNe4AAjXwAAI18gACNfQAAjX2AAI1+AACNfoAAjYLAAI2DgACNhEAAjYUAAI2FwACNhoAAjYdAAI2IAACNiMAAjYlAAI2ZAACNmYAAjZoAAI2agACNm0AAjZuAAI2bwACNnAAAjZxAAI2cwACNnUAAjZ2AAI2dwACNnkAAjZ6AAI2uQACNrsAAja9AAI2vwACNsIAAjbDAAI2xAACNsUAAjbGAAI2yAACNsoAAjbLAAI2zAACNs4AAjbPAAI3DgACNxAAAjcTAAI3FQACNxgAAjcZAAI3GgACNxsAAjccAAI3HgACNyAAAjchAAI3IgACNyQAAjclAAI3MgACNzMAAjc0AAI3NgACN3UAAjd3AAI3eQACN3sAAjd+AAI3fwACN4AAAjeBAAI3ggACN4QAAjeGAAI3hwACN4gAAjeKAAI3iwACN8oAAjfMAAI3zgACN9AAAjfTAAI31AACN9UAAjfWAAI31wACN9kAAjfbAAI33AACN90AAjffAAI34AACOB8AAjghAAI4IwACOCUAAjgoAAI4KQACOCoAAjgrAAI4LAACOC4AAjgwAAI4MQACODIAAjg0AAI4NQACOHQAAjh2AAI4eAACOHoAAjh9AAI4fgACOH8AAjiAAAI4gQACOIMAAjiFAAI4hgACOIcAAjiJAAI4igACOMkAAjjLAAI4zQACOM8AAjjSAAI40wACONQAAjjVAAI41gACONgAAjjaAAI42wACONwAAjjeAAI43wACOQQAAjkoAAI5TwACOXMAAjl2AAI5eAACOXoAAjl8AAI5fgACOYAAAjmBAAI5hAACOZEAAjmgAAI5ogACOaQAAjmmAAI5qAACOaoAAjmsAAI5rgACOb0AAjnAAAI5wwACOcYAAjnJAAI5zAACOc8AAjnSAAI51AACOhMAAjoVAAI6FwACOhkAAjocAAI6HQACOh4AAjofAAI6IAACOiIAAjokAAI6JQACOiYAAjooAAI6KQACOmgAAjpqAAI6bAACOm4AAjpxAAI6cgACOnMAAjp0AAI6dQACOncAAjp5AAI6egACOnsAAjp9AAI6fgACOr0AAjq/AAI6wQACOsMAAjrGAAI6xwACOsgAAjrJAAI6ygACOswAAjrOAAI6zwACOtAAAjrSAAI60wACOxIAAjsUAAI7FgACOxgAAjsbAAI7HAACOx0AAjseAAI7HwACOyEAAjsjAAI7JAACOyUAAjsnAAI7KAACO2cAAjtpAAI7awACO20AAjtwAAI7cQACO3IAAjtzAAI7dAACO3YAAjt4AAI7eQACO3oAAjt8AAI7fQACO7wAAju+AAI7wAACO8IAAjvFAAI7xgACO8cAAjvIAAI7yQACO8sAAjvNAAI7zgACO88AAjvRAAI70gACPBEAAjwTAAI8FQACPBcAAjwaAAI8GwACPBwAAjwdAAI8HgACPCAAAjwiAAI8IwACPCQAAjwmAAI8JwACPDAAAjwxAAI8MwACPDwAAjxBAAI8RAACPEcAAjxJAAI8ZgACPHAAAjx5AAI8fAACPH4AAjyBAAI8hAACPIcAAjyJAAI8zAACPPAAAj0UAAI9NwACPV4AAj1+AAI9pQACPcwAAj3sAAI+EAACPjQAAj42AAI+OQACPjsAAj49AAI+PwACPkIAAj5FAAI+RwACPkkAAj5MAAI+TgACPlAAAj5TAAI+VgACPlcAAj5cAAI+aQACPmwAAj5uAAI+cQACPnQAAj52AAI+mwACPr8AAj7mAAI/CgACPw0AAj8PAAI/EQACPxMAAj8VAAI/FwACPxgAAj8bAAI/KAACPzsAAj89AAI/PwACP0EAAj9DAAI/RQACP0cAAj9JAAI/SwACP00AAj9gAAI/YwACP2YAAj9pAAI/bAACP28AAj9yAAI/dQACP3gAAj97AAI/fQACP7wAAj++AAI/wQACP8MAAj/GAAI/xwACP8gAAj/JAAI/ygACP8wAAj/OAAI/zwACP9AAAj/SAAI/0wACP9wAAj/dAAI/3wACQB4AAkAgAAJAIgACQCQAAkAnAAJAKAACQCkAAkAqAAJAKwACQC0AAkAvAAJAMAACQDEAAkAzAAJANAACQHMAAkB1AAJAeAACQHoAAkB9AAJAfgACQH8AAkCAAAJAgQACQIMAAkCFAAJAhgACQIcAAkCJAAJAigACQJMAAkCUAAJAlgACQNUAAkDXAAJA2QACQNsAAkDeAAJA3wACQOAAAkDhAAJA4gACQOQAAkDmAAJA5wACQOgAAkDqAAJA6wACQSoAAkEsAAJBLwACQTEAAkE0AAJBNQACQTYAAkE3AAJBOAACQToAAkE8AAJBPQACQT4AAkFAAAJBQQACQUoAAkFLAAJBTQACQYwAAkGOAAJBkAACQZIAAkGVAAJBlgACQZcAAkGYAAJBmQACQZsAAkGdAAJBngACQZ8AAkGhAAJBogACQeEAAkHjAAJB5gACQegAAkHrAAJB7AACQe0AAkHuAAJB7wACQfEAAkHzAAJB9AACQfUAAkH3AAJB+AACQgUAAkIGAAJCBwACQgkAAkJIAAJCSgACQkwAAkJOAAJCUQACQlIAAkJTAAJCVAACQlUAAkJXAAJCWQACQloAAkJbAAJCXQACQl4AAkKdAAJCnwACQqEAAkKjAAJCpgACQqcAAkKoAAJCqQACQqoAAkKsAAJCrgACQq8AAkKwAAJCsgACQrMAAkLAAAJCwwACQsYAAkLJAAJCzAACQs4AAkLXAAJDIgACQ0UAAkNlAAJDhQACQ4cAAkOJAAJDiwACQ40AAkOQAAJDkQACQ5IAAkOVAAJDlgACQ5gAAkOZAAJDmwACQ54AAkOfAAJDoAACQ6MAAkOkAAJDrQACQ7oAAkO/AAJDwQACQ8MAAkPIAAJDywACQ84AAkPQAAJD9QACRBkAAkRAAAJEZAACRGcAAkRpAAJEawACRG0AAkRvAAJEcQACRHIAAkR1AAJEggACRJMAAkSVAAJElwACRJkAAkSbAAJEnQACRJ8AAkShAAJEowACRLQAAkS3AAJEugACRL0AAkTAAAJEwwACRMYAAkTJAAJEzAACRM4AAkUNAAJFDwACRREAAkUTAAJFFgACRRcAAkUYAAJFGQACRRoAAkUcAAJFHgACRR8AAkUgAAJFIgACRSMAAkViAAJFZAACRWYAAkVoAAJFawACRWwAAkVtAAJFbgACRW8AAkVxAAJFcwACRXQAAkV1AAJFdwACRXgAAkW3AAJFuQACRbwAAkW+AAJFwQACRcIAAkXDAAJFxAACRcUAAkXHAAJFyQACRcoAAkXLAAJFzQACRc4AAkXbAAJF3AACRd0AAkXfAAJGHgACRiAAAkYiAAJGJAACRicAAkYoAAJGKQACRioAAkYrAAJGLQACRi8AAkYwAAJGMQACRjMAAkY0AAJGcwACRnUAAkZ3AAJGeQACRnwAAkZ9AAJGfgACRn8AAkaAAAJGggACRoQAAkaFAAJGhgACRogAAkaJAAJGyAACRsoAAkbMAAJGzgACRtEAAkbSAAJG0wACRtQAAkbVAAJG1wACRtkAAkbaAAJG2wACRt0AAkbeAAJHHQACRx8AAkchAAJHIwACRyYAAkcnAAJHKAACRykAAkcqAAJHLAACRy4AAkcvAAJHMAACRzIAAkczAAJHcgACR3QAAkd2AAJHeAACR3sAAkd8AAJHfQACR34AAkd/AAJHgQACR4MAAkeEAAJHhQACR4cAAkeIAAJHrQACR9EAAkf4AAJIHAACSB8AAkghAAJIIwACSCUAAkgnAAJIKQACSCoAAkgtAAJIOgACSEkAAkhLAAJITQACSE8AAkhRAAJIUwACSFUAAkhXAAJIZgACSGkAAkhsAAJIbwACSHIAAkh1AAJIeAACSHsAAkh9AAJIvAACSL4AAkjAAAJIwgACSMUAAkjGAAJIxwACSMgAAkjJAAJIywACSM0AAkjOAAJIzwACSNEAAkjSAAJJEQACSRMAAkkVAAJJFwACSRoAAkkbAAJJHAACSR0AAkkeAAJJIAACSSIAAkkjAAJJJAACSSYAAkknAAJJZgACSWgAAklqAAJJbAACSW8AAklwAAJJcQACSXIAAklzAAJJdQACSXcAAkl4AAJJeQACSXsAAkl8AAJJuwACSb0AAknAAAJJwgACScUAAknGAAJJxwACScgAAknJAAJJywACSc0AAknOAAJJzwACSdEAAknSAAJKFQACSjkAAkpdAAJKgAACSqcAAkrHAAJK7gACSxUAAks1AAJLWQACS30AAkt/AAJLggACS4QAAkuGAAJLiAACS4sAAkuOAAJLkAACS5IAAkuVAAJLlwACS5kAAkucAAJLnwACS6AAAkupAAJLtgACS7kAAku7AAJLvgACS8EAAkvDAAJL6AACTAwAAkwzAAJMVwACTFoAAkxcAAJMXgACTGAAAkxiAAJMZAACTGUAAkxoAAJMdQACTIgAAkyKAAJMjAACTI4AAkyQAAJMkgACTJQAAkyWAAJMmAACTJoAAkytAAJMsAACTLMAAky2AAJMuQACTLwAAky/AAJMwgACTMUAAkzIAAJMygACTQkAAk0LAAJNDgACTRAAAk0TAAJNFAACTRUAAk0WAAJNFwACTRkAAk0bAAJNHAACTR0AAk0fAAJNIAACTSkAAk0qAAJNLAACTWsAAk1tAAJNbwACTXEAAk10AAJNdQACTXYAAk13AAJNeAACTXoAAk18AAJNfQACTX4AAk2AAAJNgQACTcAAAk3CAAJNxQACTccAAk3KAAJNywACTcwAAk3NAAJNzgACTdAAAk3SAAJN0wACTdQAAk3WAAJN1wACTeAAAk3hAAJN4wACTiIAAk4kAAJOJgACTigAAk4rAAJOLAACTi0AAk4uAAJOLwACTjEAAk4zAAJONAACTjUAAk43AAJOOAACTncAAk55AAJOfAACTn4AAk6BAAJOggACToMAAk6EAAJOhQACTocAAk6JAAJOigACTosAAk6NAAJOjgACTpcAAk6YAAJOmgACTtkAAk7bAAJO3QACTt8AAk7iAAJO4wACTuQAAk7lAAJO5gACTugAAk7qAAJO6wACTuwAAk7uAAJO7wACTy4AAk8wAAJPMwACTzUAAk84AAJPOQACTzoAAk87AAJPPAACTz4AAk9AAAJPQQACT0IAAk9EAAJPRQACT1IAAk9TAAJPVAACT1YAAk+VAAJPlwACT5kAAk+bAAJPngACT58AAk+gAAJPoQACT6IAAk+kAAJPpgACT6cAAk+oAAJPqgACT6sAAk/qAAJP7AACT+4AAk/wAAJP8wACT/QAAk/1AAJP9gACT/cAAk/5AAJP+wACT/wAAk/9AAJP/wACUAAAAlANAAJQGAACUBoAAlAdAAJQHwACUCIAAlAlAAJQMAACUDMAAlA2AAJQOQACUDwAAlA/AAJQQQACUEcAAlBMAAJQUgACUJ0AAlDAAAJQ4AACUQAAAlECAAJRBAACUQYAAlEIAAJRCwACUQwAAlENAAJREAACUREAAlETAAJRFAACURYAAlEYAAJRGQACURoAAlEdAAJRHgACUScAAlE0AAJROQACUTsAAlE9AAJRQgACUUUAAlFIAAJRSgACUW8AAlGTAAJRugACUd4AAlHhAAJR4wACUeUAAlHnAAJR6QACUesAAlHsAAJR7wACUfwAAlINAAJSDwACUhEAAlITAAJSFQACUhcAAlIZAAJSGwACUh0AAlIuAAJSMQACUjQAAlI3AAJSOgACUj0AAlJAAAJSQwACUkYAAlJIAAJShwACUokAAlKLAAJSjQACUpAAAlKRAAJSkgACUpMAAlKUAAJSlgACUpgAAlKZAAJSmgACUpwAAlKdAAJS3AACUt4AAlLgAAJS4gACUuUAAlLmAAJS5wACUugAAlLpAAJS6wACUu0AAlLuAAJS7wACUvEAAlLyAAJTMQACUzMAAlM2AAJTOAACUzsAAlM8AAJTPQACUz4AAlM/AAJTQQACU0MAAlNEAAJTRQACU0cAAlNIAAJTVQACU1YAAlNXAAJTWQACU5gAAlOaAAJTnAACU54AAlOhAAJTogACU6MAAlOkAAJTpQACU6cAAlOpAAJTqgACU6sAAlOtAAJTrgACU+0AAlPvAAJT8QACU/MAAlP2AAJT9wACU/gAAlP5AAJT+gACU/wAAlP+AAJT/wACVAAAAlQCAAJUAwACVEIAAlREAAJURgACVEgAAlRLAAJUTAACVE0AAlROAAJUTwACVFEAAlRTAAJUVAACVFUAAlRXAAJUWAACVJcAAlSZAAJUmwACVJ0AAlSgAAJUoQACVKIAAlSjAAJUpAACVKYAAlSoAAJUqQACVKoAAlSsAAJUrQACVOwAAlTuAAJU8AACVPIAAlT1AAJU9gACVPcAAlT4AAJU+QACVPsAAlT9AAJU/gACVP8AAlUBAAJVAgACVScAAlVLAAJVcgACVZYAAlWZAAJVmwACVZ0AAlWfAAJVoQACVaMAAlWkAAJVpwACVbQAAlXDAAJVxQACVccAAlXJAAJVywACVc0AAlXPAAJV0QACVeAAAlXjAAJV5gACVekAAlXsAAJV7wACVfIAAlX1AAJV9wACVjYAAlY4AAJWOwACVj0AAlZAAAJWQQACVkIAAlZDAAJWRAACVkYAAlZIAAJWSQACVkoAAlZMAAJWTQACVowAAlaOAAJWkAACVpIAAlaVAAJWlgACVpcAAlaYAAJWmQACVpsAAladAAJWngACVp8AAlahAAJWogACVuEAAlbjAAJW5QACVucAAlbqAAJW6wACVuwAAlbtAAJW7gACVvAAAlbyAAJW8wACVvQAAlb2AAJW9wACVzYAAlc4AAJXOwACVz0AAldAAAJXQQACV0IAAldDAAJXRAACV0YAAldIAAJXSQACV0oAAldMAAJXTQACV4wAAleOAAJXkAACV5IAAleVAAJXlgACV5cAAleYAAJXmQACV5sAAledAAJXngACV58AAlehAAJXogACV+EAAlfjAAJX5QACV+cAAlfqAAJX6wACV+wAAlftAAJX7gACV/AAAlfyAAJX8wACV/QAAlf2AAJX9wACWDYAAlg4AAJYOgACWDwAAlg/AAJYQAACWEEAAlhCAAJYQwACWEUAAlhHAAJYSAACWEkAAlhLAAJYTAACWJcAAli6AAJY2gACWPoAAlj8AAJY/gACWQAAAlkCAAJZBQACWQYAAlkHAAJZCgACWQsAAlkNAAJZDgACWRAAAlkTAAJZFAACWRUAAlkYAAJZGQACWSIAAlkvAAJZNAACWTYAAlk4AAJZPQACWUAAAllDAAJZRQACWWoAAlmOAAJZtQACWdkAAlncAAJZ3gACWeAAAlniAAJZ5AACWeYAAlnnAAJZ6gACWfcAAloIAAJaCgACWgwAAloOAAJaEAACWhIAAloUAAJaFgACWhgAAlopAAJaLAACWi8AAloyAAJaNQACWjgAAlo7AAJaPgACWkEAAlpDAAJaggACWoQAAlqGAAJaiAACWosAAlqMAAJajQACWo4AAlqPAAJakQACWpMAAlqUAAJalQACWpcAAlqYAAJa1wACWtkAAlrbAAJa3QACWuAAAlrhAAJa4gACWuMAAlrkAAJa5gACWugAAlrpAAJa6gACWuwAAlrtAAJbLAACWy4AAlsxAAJbMwACWzYAAls3AAJbOAACWzkAAls6AAJbPAACWz4AAls/AAJbQAACW0IAAltDAAJbUAACW1EAAltSAAJbVAACW5MAAluVAAJblwACW5kAAlucAAJbnQACW54AAlufAAJboAACW6IAAlukAAJbpQACW6YAAluoAAJbqQACW+gAAlvqAAJb7AACW+4AAlvxAAJb8gACW/MAAlv0AAJb9QACW/cAAlv5AAJb+gACW/sAAlv9AAJb/gACXD0AAlw/AAJcQQACXEMAAlxGAAJcRwACXEgAAlxJAAJcSgACXEwAAlxOAAJcTwACXFAAAlxSAAJcUwACXJIAAlyUAAJclgACXJgAAlybAAJcnAACXJ0AAlyeAAJcnwACXKEAAlyjAAJcpAACXKUAAlynAAJcqAACXOcAAlzpAAJc6wACXO0AAlzwAAJc8QACXPIAAlzzAAJc9AACXPYAAlz4AAJc+QACXPoAAlz8AAJc/QACXSIAAl1GAAJdbQACXZEAAl2UAAJdlgACXZgAAl2aAAJdnAACXZ4AAl2fAAJdogACXa8AAl2+AAJdwAACXcIAAl3EAAJdxgACXcgAAl3KAAJdzAACXdsAAl3eAAJd4QACXeQAAl3nAAJd6gACXe0AAl3wAAJd8gACXjEAAl4zAAJeNgACXjgAAl47AAJePAACXj0AAl4+AAJePwACXkEAAl5DAAJeRAACXkUAAl5HAAJeSAACXocAAl6JAAJeiwACXo0AAl6QAAJekQACXpIAAl6TAAJelAACXpYAAl6YAAJemQACXpoAAl6cAAJenQACXtwAAl7eAAJe4AACXuIAAl7lAAJe5gACXucAAl7oAAJe6QACXusAAl7tAAJe7gACXu8AAl7xAAJe8gACXzEAAl8zAAJfNgACXzgAAl87AAJfPAACXz0AAl8+AAJfPwACX0EAAl9DAAJfRAACX0UAAl9HAAJfSAACX4cAAl+JAAJfiwACX40AAl+QAAJfkQACX5IAAl+TAAJflAACX5YAAl+YAAJfmQACX5oAAl+cAAJfnQACX9wAAl/eAAJf4AACX+IAAl/lAAJf5gACX+cAAl/oAAJf6QACX+sAAl/tAAJf7gACX+8AAl/xAAJf8gACYDEAAmAzAAJgNQACYDcAAmA6AAJgOwACYDwAAmA9AAJgPgACYEAAAmBCAAJgQwACYEQAAmBGAAJgRwACYJIAAmC1AAJg1QACYPUAAmD3AAJg+QACYPsAAmD9AAJhAAACYQEAAmECAAJhBQACYQYAAmEIAAJhCQACYQsAAmENAAJhDgACYQ8AAmESAAJhEwACYRgAAmElAAJhKgACYSwAAmEuAAJhMwACYTYAAmE5AAJhOwACYWAAAmGEAAJhqwACYc8AAmHSAAJh1AACYdYAAmHYAAJh2gACYdwAAmHdAAJh4AACYe0AAmH+AAJiAAACYgIAAmIEAAJiBgACYggAAmIKAAJiDAACYg4AAmIfAAJiIgACYiUAAmIoAAJiKwACYi4AAmIxAAJiNAACYjcAAmI5AAJieAACYnoAAmJ8AAJifgACYoEAAmKCAAJigwACYoQAAmKFAAJihwACYokAAmKKAAJiiwACYo0AAmKOAAJizQACYs8AAmLRAAJi0wACYtYAAmLXAAJi2AACYtkAAmLaAAJi3AACYt4AAmLfAAJi4AACYuIAAmLjAAJjIgACYyQAAmMnAAJjKQACYywAAmMtAAJjLgACYy8AAmMwAAJjMgACYzQAAmM1AAJjNgACYzgAAmM5AAJjRgACY0cAAmNIAAJjSgACY4kAAmOLAAJjjQACY48AAmOSAAJjkwACY5QAAmOVAAJjlgACY5gAAmOaAAJjmwACY5wAAmOeAAJjnwACY94AAmPgAAJj4gACY+QAAmPnAAJj6AACY+kAAmPqAAJj6wACY+0AAmPvAAJj8AACY/EAAmPzAAJj9AACZDMAAmQ1AAJkNwACZDkAAmQ8AAJkPQACZD4AAmQ/AAJkQAACZEIAAmREAAJkRQACZEYAAmRIAAJkSQACZIgAAmSKAAJkjAACZI4AAmSRAAJkkgACZJMAAmSUAAJklQACZJcAAmSZAAJkmgACZJsAAmSdAAJkngACZN0AAmTfAAJk4QACZOMAAmTmAAJk5wACZOgAAmTpAAJk6gACZOwAAmTuAAJk7wACZPAAAmTyAAJk8wACZRgAAmU8AAJlYwACZYcAAmWKAAJljAACZY4AAmWQAAJlkgACZZQAAmWVAAJlmAACZaUAAmW0AAJltgACZbgAAmW6AAJlvAACZb4AAmXAAAJlwgACZdEAAmXUAAJl1wACZdoAAmXdAAJl4AACZeMAAmXmAAJl6AACZicAAmYpAAJmKwACZi0AAmYwAAJmMQACZjIAAmYzAAJmNAACZjYAAmY4AAJmOQACZjoAAmY8AAJmPQACZnwAAmZ+AAJmgAACZoIAAmaFAAJmhgACZocAAmaIAAJmiQACZosAAmaNAAJmjgACZo8AAmaRAAJmkgACZtEAAmbTAAJm1QACZtcAAmbaAAJm2wACZtwAAmbdAAJm3gACZuAAAmbiAAJm4wACZuQAAmbmAAJm5wACZyYAAmcoAAJnKgACZywAAmcvAAJnMAACZzEAAmcyAAJnMwACZzUAAmc3AAJnOAACZzkAAmc7AAJnPAACZ3sAAmd9AAJnfwACZ4EAAmeEAAJnhQACZ4YAAmeHAAJniAACZ4oAAmeMAAJnjQACZ44AAmeQAAJnkQACZ9AAAmfSAAJn1AACZ9YAAmfZAAJn2gACZ9sAAmfcAAJn3QACZ98AAmfhAAJn4gACZ+MAAmflAAJn5gACaCUAAmgnAAJoKQACaCsAAmguAAJoLwACaDAAAmgxAAJoMgACaDQAAmg2AAJoNwACaDgAAmg6AAJoOwACaIYAAmipAAJoyQACaOkAAmjrAAJo7QACaO8AAmjxAAJo9AACaPUAAmj2AAJo+QACaPoAAmj8AAJo/QACaP8AAmkCAAJpAwACaQQAAmkHAAJpCAACaREAAmkeAAJpIwACaSUAAmknAAJpLAACaS8AAmkyAAJpNAACaVkAAml9AAJppAACacgAAmnLAAJpzQACac8AAmnRAAJp0wACadUAAmnWAAJp2QACaeYAAmn3AAJp+QACafsAAmn9AAJp/wACagEAAmoDAAJqBQACagcAAmoYAAJqGwACah4AAmohAAJqJAACaicAAmoqAAJqLQACajAAAmoyAAJqcQACanMAAmp1AAJqdwACanoAAmp7AAJqfAACan0AAmp+AAJqgAACaoIAAmqDAAJqhAACaoYAAmqHAAJqxgACasgAAmrKAAJqzAACas8AAmrQAAJq0QACatIAAmrTAAJq1QACatcAAmrYAAJq2QACatsAAmrcAAJrGwACax0AAmsgAAJrIgACayUAAmsmAAJrJwACaygAAmspAAJrKwACay0AAmsuAAJrLwACazEAAmsyAAJrPwACa0AAAmtBAAJrQwACa4IAAmuEAAJrhgACa4gAAmuLAAJrjAACa40AAmuOAAJrjwACa5EAAmuTAAJrlAACa5UAAmuXAAJrmAACa9cAAmvZAAJr2wACa90AAmvgAAJr4QACa+IAAmvjAAJr5AACa+YAAmvoAAJr6QACa+oAAmvsAAJr7QACbCwAAmwuAAJsMAACbDIAAmw1AAJsNgACbDcAAmw4AAJsOQACbDsAAmw9AAJsPgACbD8AAmxBAAJsQgACbIEAAmyDAAJshQACbIcAAmyKAAJsiwACbIwAAmyNAAJsjgACbJAAAmySAAJskwACbJQAAmyWAAJslwACbNYAAmzYAAJs2gACbNwAAmzfAAJs4AACbOEAAmziAAJs4wACbOUAAmznAAJs6AACbOkAAmzrAAJs7AACbREAAm01AAJtXAACbYAAAm2DAAJthQACbYcAAm2JAAJtiwACbY0AAm2OAAJtkQACbZ4AAm2tAAJtrwACbbEAAm2zAAJttQACbbcAAm25AAJtuwACbcoAAm3NAAJt0AACbdMAAm3WAAJt2QACbdwAAm3fAAJt4QACbiAAAm4iAAJuJAACbiYAAm4pAAJuKgACbisAAm4sAAJuLQACbi8AAm4xAAJuMgACbjMAAm41AAJuNgACbnUAAm53AAJueQACbnsAAm5+AAJufwACboAAAm6BAAJuggACboQAAm6GAAJuhwACbogAAm6KAAJuiwACbsoAAm7MAAJuzgACbtAAAm7TAAJu1AACbtUAAm7WAAJu1wACbtkAAm7bAAJu3AACbt0AAm7fAAJu4AACbx8AAm8hAAJvJAACbyYAAm8pAAJvKgACbysAAm8sAAJvLQACby8AAm8xAAJvMgACbzMAAm81AAJvNgACb3UAAm93AAJveQACb3sAAm9+AAJvfwACb4AAAm+BAAJvggACb4QAAm+GAAJvhwACb4gAAm+KAAJviwACb8oAAm/MAAJvzgACb9AAAm/TAAJv1AACb9UAAm/WAAJv1wACb9kAAm/bAAJv3AACb90AAm/fAAJv4AACcB8AAnAhAAJwJAACcCYAAnApAAJwKgACcCsAAnAsAAJwLQACcC8AAnAxAAJwMgACcDMAAnA1AAJwNgACcIEAAnCkAAJwxAACcOQAAnDmAAJw6AACcOoAAnDsAAJw7wACcPAAAnDxAAJw9AACcPUAAnD3AAJw+AACcPoAAnD9AAJw/gACcP8AAnECAAJxAwACcQgAAnEVAAJxGgACcRwAAnEeAAJxIwACcSYAAnEpAAJxKwACcVAAAnF0AAJxmwACcb8AAnHCAAJxxAACccYAAnHIAAJxygACccwAAnHNAAJx0AACcd0AAnHuAAJx8AACcfIAAnH0AAJx9gACcfgAAnH6AAJx/AACcf4AAnIPAAJyEgACchUAAnIYAAJyGwACch4AAnIhAAJyJAACcicAAnIpAAJyaAACcmoAAnJsAAJybgACcnEAAnJyAAJycwACcnQAAnJ1AAJydwACcnkAAnJ6AAJyewACcn0AAnJ+AAJyvQACcr8AAnLBAAJywwACcsYAAnLHAAJyyAACcskAAnLKAAJyzAACcs4AAnLPAAJy0AACctIAAnLTAAJzEgACcxQAAnMXAAJzGQACcxwAAnMdAAJzHgACcx8AAnMgAAJzIgACcyQAAnMlAAJzJgACcygAAnMpAAJzNgACczcAAnM4AAJzOgACc3kAAnN7AAJzfQACc38AAnOCAAJzgwACc4QAAnOFAAJzhgACc4gAAnOKAAJziwACc4wAAnOOAAJzjwACc84AAnPQAAJz0gACc9QAAnPXAAJz2AACc9kAAnPaAAJz2wACc90AAnPfAAJz4AACc+EAAnPjAAJz5AACdCMAAnQlAAJ0JwACdCkAAnQsAAJ0LQACdC4AAnQvAAJ0MAACdDIAAnQ0AAJ0NQACdDYAAnQ4AAJ0OQACdHgAAnR6AAJ0fAACdH4AAnSBAAJ0ggACdIMAAnSEAAJ0hQACdIcAAnSJAAJ0igACdIsAAnSNAAJ0jgACdM0AAnTPAAJ00QACdNMAAnTWAAJ01wACdNgAAnTZAAJ02gACdNwAAnTeAAJ03wACdOAAAnTiAAJ04wACdQgAAnUsAAJ1UwACdXcAAnV6AAJ1fAACdX4AAnWAAAJ1ggACdYQAAnWFAAJ1iAACdZUAAnWkAAJ1pgACdagAAnWqAAJ1rAACda4AAnWwAAJ1sgACdcEAAnXEAAJ1xwACdcoAAnXNAAJ10AACddMAAnXWAAJ12AACdhcAAnYZAAJ2HAACdh4AAnYhAAJ2IgACdiMAAnYkAAJ2JQACdicAAnYpAAJ2KgACdisAAnYtAAJ2LgACdm0AAnZvAAJ2cQACdnMAAnZ2AAJ2dwACdngAAnZ5AAJ2egACdnwAAnZ+AAJ2fwACdoAAAnaCAAJ2gwACdsIAAnbEAAJ2xgACdsgAAnbLAAJ2zAACds0AAnbOAAJ2zwACdtEAAnbTAAJ21AACdtUAAnbXAAJ22AACdxcAAncZAAJ3HAACdx4AAnchAAJ3IgACdyMAAnckAAJ3JQACdycAAncpAAJ3KgACdysAAnctAAJ3LgACd20AAndvAAJ3cQACd3MAAnd2AAJ3dwACd3gAAnd5AAJ3egACd3wAAnd+AAJ3fwACd4AAAneCAAJ3gwACd8IAAnfEAAJ3xgACd8gAAnfLAAJ3zAACd80AAnfOAAJ3zwACd9EAAnfTAAJ31AACd9UAAnfXAAJ32AACeBcAAngZAAJ4GwACeB0AAnggAAJ4IQACeCIAAngjAAJ4JAACeCYAAngoAAJ4KQACeCoAAngsAAJ4LQACeDYAAng3AAJ4OQACeHgAAnh6AAJ4fAACeH4AAniBAAJ4ggACeIMAAniEAAJ4hQACeIcAAniJAAJ4igACeIsAAniNAAJ4jgACeM0AAnjPAAJ40QACeNMAAnjWAAJ41wACeNgAAnjZAAJ42gACeNwAAnjeAAJ43wACeOAAAnjiAAJ44wACeSIAAnkkAAJ5JwACeSkAAnksAAJ5LQACeS4AAnkvAAJ5MAACeTIAAnk0AAJ5NQACeTYAAnk4AAJ5OQACeUIAAnlFAAJ5SAACeUoAAnlPAAJ5WAACeXEAAnl6AAJ5kwACeaoAAnm8AAJ52QACedwAAnneAAJ54AACeeIAAnnlAAJ55wACeewAAnorAAJ6LQACei8AAnoxAAJ6MwACejQAAno1AAJ6NgACejcAAno5AAJ6OwACejwAAno9AAJ6PwACekAAAnp/AAJ6gQACeoMAAnqFAAJ6hwACeogAAnqJAAJ6igACeosAAnqNAAJ6jwACepAAAnqRAAJ6kwACepQAAnrTAAJ61QACetcAAnrZAAJ62wACetwAAnrdAAJ63gACet8AAnrhAAJ64wACeuQAAnrlAAJ65wACeugAAnrxAAJ69AACevcAAnr5AAJ7PAACe2AAAnuEAAJ7pwACe84AAnvuAAJ8FQACfDwAAnxcAAJ8gAACfKQAAnymAAJ8qQACfKsAAnytAAJ8rwACfLIAAny1AAJ8twACfLkAAny8AAJ8vgACfMAAAnzDAAJ8xgACfMcAAnzMAAJ82QACfNwAAnzeAAJ84QACfOQAAnzmAAJ9CwACfS8AAn1WAAJ9egACfX0AAn1/AAJ9gQACfYMAAn2FAAJ9hwACfYgAAn2LAAJ9mAACfasAAn2tAAJ9rwACfbEAAn2zAAJ9tQACfbcAAn25AAJ9uwACfb0AAn3QAAJ90wACfdYAAn3ZAAJ93AACfd8AAn3iAAJ95QACfegAAn3rAAJ97QACfiwAAn4uAAJ+MQACfjMAAn42AAJ+NwACfjgAAn45AAJ+OgACfjwAAn4+AAJ+PwACfkAAAn5CAAJ+QwACfkwAAn5NAAJ+TwACfo4AAn6QAAJ+kgACfpQAAn6XAAJ+mAACfpkAAn6aAAJ+mwACfp0AAn6fAAJ+oAACfqEAAn6jAAJ+pAACfuMAAn7lAAJ+6AACfuoAAn7tAAJ+7gACfu8AAn7wAAJ+8QACfvMAAn71AAJ+9gACfvcAAn75AAJ++gACfwMAAn8EAAJ/BgACf0UAAn9HAAJ/SQACf0sAAn9OAAJ/TwACf1AAAn9RAAJ/UgACf1QAAn9WAAJ/VwACf1gAAn9aAAJ/WwACf5oAAn+cAAJ/nwACf6EAAn+kAAJ/pQACf6YAAn+nAAJ/qAACf6oAAn+sAAJ/rQACf64AAn+wAAJ/sQACf7oAAn+7AAJ/vQACf/wAAn/+AAKAAAACgAIAAoAFAAKABgACgAcAAoAIAAKACQACgAsAAoANAAKADgACgA8AAoARAAKAEgACgFEAAoBTAAKAVgACgFgAAoBbAAKAXAACgF0AAoBeAAKAXwACgGEAAoBjAAKAZAACgGUAAoBnAAKAaAACgHUAAoB2AAKAdwACgHkAAoC4AAKAugACgLwAAoC+AAKAwQACgMIAAoDDAAKAxAACgMUAAoDHAAKAyQACgMoAAoDLAAKAzQACgM4AAoENAAKBDwACgREAAoETAAKBFgACgRcAAoEYAAKBGQACgRoAAoEcAAKBHgACgR8AAoEgAAKBIgACgSMAAoEwAAKBOQACgTwAAoE/AAKBQQACgUQAAoFNAAKBUAACgVMAAoFWAAKBWQACgVsAAoFhAAKBcwACgYAAAoHLAAKB7gACgg4AAoIuAAKCMAACgjIAAoI0AAKCNgACgjkAAoI6AAKCOwACgj4AAoI/AAKCQQACgkIAAoJEAAKCRwACgkgAAoJJAAKCTAACgk0AAoJSAAKCXwACgmQAAoJmAAKCaAACgm0AAoJwAAKCcwACgnUAAoKaAAKCvgACguUAAoMJAAKDDAACgw4AAoMQAAKDEgACgxQAAoMWAAKDFwACgxoAAoMnAAKDOAACgzoAAoM8AAKDPgACg0AAAoNCAAKDRAACg0YAAoNIAAKDWQACg1wAAoNfAAKDYgACg2UAAoNoAAKDawACg24AAoNxAAKDcwACg7IAAoO0AAKDtgACg7gAAoO7AAKDvAACg70AAoO+AAKDvwACg8EAAoPDAAKDxAACg8UAAoPHAAKDyAAChAcAAoQJAAKECwAChA0AAoQQAAKEEQAChBIAAoQTAAKEFAAChBYAAoQYAAKEGQAChBoAAoQcAAKEHQAChFwAAoReAAKEYQAChGMAAoRmAAKEZwAChGgAAoRpAAKEagAChGwAAoRuAAKEbwAChHAAAoRyAAKEcwAChIAAAoSBAAKEggAChIQAAoTDAAKExQAChMcAAoTJAAKEzAAChM0AAoTOAAKEzwAChNAAAoTSAAKE1AAChNUAAoTWAAKE2AAChNkAAoUYAAKFGgAChRwAAoUeAAKFIQAChSIAAoUjAAKFJAAChSUAAoUnAAKFKQAChSoAAoUrAAKFLQAChS4AAoVtAAKFbwAChXEAAoVzAAKFdgAChXcAAoV4AAKFeQAChXoAAoV8AAKFfgAChX8AAoWAAAKFggAChYMAAoXCAAKFxAAChcYAAoXIAAKFywAChcwAAoXNAAKFzgAChc8AAoXRAAKF0wAChdQAAoXVAAKF1wAChdgAAoYXAAKGGQAChhsAAoYdAAKGIAAChiEAAoYiAAKGIwAChiQAAoYmAAKGKAAChikAAoYqAAKGLAAChi0AAoZSAAKGdgAChp0AAobBAAKGxAAChsYAAobIAAKGygAChswAAobOAAKGzwAChtIAAobfAAKG7gAChvAAAobyAAKG9AAChvYAAob4AAKG+gAChvwAAocLAAKHDgAChxEAAocUAAKHFwAChxoAAocdAAKHIAAChyIAAodhAAKHYwACh2UAAodnAAKHagACh2sAAodsAAKHbQACh24AAodwAAKHcgACh3MAAod0AAKHdgACh3cAAoe2AAKHuAACh7oAAoe8AAKHvwACh8AAAofBAAKHwgACh8MAAofFAAKHxwACh8gAAofJAAKHywACh8wAAogLAAKIDQACiA8AAogRAAKIFAACiBUAAogWAAKIFwACiBgAAogaAAKIHAACiB0AAogeAAKIIAACiCEAAohgAAKIYgACiGQAAohmAAKIaQACiGoAAohrAAKIbAACiG0AAohvAAKIcQACiHIAAohzAAKIdQACiHYAAoi1AAKItwACiLkAAoi7AAKIvgACiL8AAojAAAKIwQACiMIAAojEAAKIxgACiMcAAojIAAKIygACiMsAAokKAAKJDAACiQ4AAokQAAKJEwACiRQAAokVAAKJFgACiRcAAokZAAKJGwACiRwAAokdAAKJHwACiSAAAolfAAKJYQACiWMAAollAAKJaAACiWkAAolqAAKJawACiWwAAoluAAKJcAACiXEAAolyAAKJdAACiXUAAonAAAKJ4wACigMAAoojAAKKJQACiicAAoopAAKKKwACii4AAoovAAKKMAACijMAAoo0AAKKNgACijcAAoo5AAKKPAACij0AAoo+AAKKQQACikIAAopHAAKKVAACilkAAopbAAKKXQACimIAAoplAAKKaAACimoAAoqPAAKKswACitoAAor+AAKLAQACiwMAAosFAAKLBwACiwkAAosLAAKLDAACiw8AAoscAAKLLQACiy8AAosxAAKLMwACizUAAos3AAKLOQACizsAAos9AAKLTgACi1EAAotUAAKLVwACi1oAAotdAAKLYAACi2MAAotmAAKLaAACi6cAAoupAAKLqwACi60AAouwAAKLsQACi7IAAouzAAKLtAACi7YAAou4AAKLuQACi7oAAou8AAKLvQACi/wAAov+AAKMAAACjAIAAowFAAKMBgACjAcAAowIAAKMCQACjAsAAowNAAKMDgACjA8AAowRAAKMEgACjFEAAoxTAAKMVgACjFgAAoxbAAKMXAACjF0AAoxeAAKMXwACjGEAAoxjAAKMZAACjGUAAoxnAAKMaAACjHUAAox2AAKMdwACjHkAAoy4AAKMugACjLwAAoy+AAKMwQACjMIAAozDAAKMxAACjMUAAozHAAKMyQACjMoAAozLAAKMzQACjM4AAo0NAAKNDwACjREAAo0TAAKNFgACjRcAAo0YAAKNGQACjRoAAo0cAAKNHgACjR8AAo0gAAKNIgACjSMAAo1iAAKNZAACjWYAAo1oAAKNawACjWwAAo1tAAKNbgACjW8AAo1xAAKNcwACjXQAAo11AAKNdwACjXgAAo23AAKNuQACjbsAAo29AAKNwAACjcEAAo3CAAKNwwACjcQAAo3GAAKNyAACjckAAo3KAAKNzAACjc0AAo4MAAKODgACjhAAAo4SAAKOFQACjhYAAo4XAAKOGAACjhkAAo4bAAKOHQACjh4AAo4fAAKOIQACjiIAAo5HAAKOawACjpIAAo62AAKOuQACjrsAAo69AAKOvwACjsEAAo7DAAKOxAACjscAAo7UAAKO4wACjuUAAo7nAAKO6QACjusAAo7tAAKO7wACjvEAAo8AAAKPAwACjwYAAo8JAAKPDAACjw8AAo8SAAKPFQACjxcAAo9WAAKPWAACj1oAAo9cAAKPXwACj2AAAo9hAAKPYgACj2MAAo9lAAKPZwACj2gAAo9pAAKPawACj2wAAo+rAAKPrQACj68AAo+xAAKPtAACj7UAAo+2AAKPtwACj7gAAo+6AAKPvAACj70AAo++AAKPwAACj8EAApAAAAKQAgACkAQAApAGAAKQCQACkAoAApALAAKQDAACkA0AApAPAAKQEQACkBIAApATAAKQFQACkBYAApBVAAKQVwACkFoAApBcAAKQXwACkGAAApBhAAKQYgACkGMAApBlAAKQZwACkGgAApBpAAKQawACkGwAApCrAAKQrQACkK8AApCxAAKQtAACkLUAApC2AAKQtwACkLgAApC6AAKQvAACkL0AApC+AAKQwAACkMEAApEAAAKRAgACkQQAApEGAAKRCQACkQoAApELAAKRDAACkQ0AApEPAAKREQACkRIAApETAAKRFQACkRYAApFVAAKRVwACkVkAApFbAAKRXgACkV8AApFgAAKRYQACkWIAApFkAAKRZgACkWcAApFoAAKRagACkWsAApG2AAKR2QACkfkAApIZAAKSGwACkh0AApIfAAKSIQACkiQAApIlAAKSJgACkikAApIqAAKSLAACki0AApIvAAKSMQACkjIAApIzAAKSNgACkjcAApI8AAKSSQACkk4AApJQAAKSUgACklcAApJaAAKSXQACkl8AApKEAAKSqAACks8AApLzAAKS9gACkvgAApL6AAKS/AACkv4AApMAAAKTAQACkwQAApMRAAKTIgACkyQAApMmAAKTKAACkyoAApMsAAKTLgACkzAAApMyAAKTQwACk0YAApNJAAKTTAACk08AApNSAAKTVQACk1gAApNbAAKTXQACk5wAApOeAAKToAACk6IAApOlAAKTpgACk6cAApOoAAKTqQACk6sAApOtAAKTrgACk68AApOxAAKTsgACk/EAApPzAAKT9QACk/cAApP6AAKT+wACk/wAApP9AAKT/gAClAAAApQCAAKUAwAClAQAApQGAAKUBwAClEYAApRIAAKUSwAClE0AApRQAAKUUQAClFIAApRTAAKUVAAClFYAApRYAAKUWQAClFoAApRcAAKUXQAClGoAApRrAAKUbAAClG4AApStAAKUrwAClLEAApSzAAKUtgAClLcAApS4AAKUuQAClLoAApS8AAKUvgAClL8AApTAAAKUwgAClMMAApUCAAKVBAAClQYAApUIAAKVCwAClQwAApUNAAKVDgAClQ8AApURAAKVEwAClRQAApUVAAKVFwAClRgAApVXAAKVWQAClVsAApVdAAKVYAAClWEAApViAAKVYwAClWQAApVmAAKVaAAClWkAApVqAAKVbAAClW0AApWsAAKVrgAClbAAApWyAAKVtQAClbYAApW3AAKVuAAClbkAApW7AAKVvQAClb4AApW/AAKVwQAClcIAApYBAAKWAwAClgUAApYHAAKWCgAClgsAApYMAAKWDQAClg4AApYQAAKWEgAClhMAApYUAAKWFgAClhcAApY8AAKWYAAClocAAparAAKWrgAClrAAApayAAKWtAAClrYAApa4AAKWuQAClrwAApbJAAKW2AACltoAApbcAAKW3gACluAAApbiAAKW5AACluYAApb1AAKW+AAClvsAApb+AAKXAQAClwQAApcHAAKXCgAClwwAApdLAAKXTQACl08AApdRAAKXVAACl1UAApdWAAKXVwACl1gAApdaAAKXXAACl10AApdeAAKXYAACl2EAApegAAKXogACl6QAApemAAKXqQACl6oAAperAAKXrAACl60AApevAAKXsQACl7IAApezAAKXtQACl7YAApf1AAKX9wACl/kAApf7AAKX/gACl/8AApgAAAKYAQACmAIAApgEAAKYBgACmAcAApgIAAKYCgACmAsAAphKAAKYTAACmE4AAphQAAKYUwACmFQAAphVAAKYVgACmFcAAphZAAKYWwACmFwAAphdAAKYXwACmGAAApifAAKYoQACmKMAApilAAKYqAACmKkAApiqAAKYqwACmKwAApiuAAKYsAACmLEAApiyAAKYtAACmLUAApj0AAKY9gACmPgAApj6AAKY/QACmP4AApj/AAKZAAACmQEAApkDAAKZBQACmQYAApkHAAKZCQACmQoAAplJAAKZSwACmU0AAplPAAKZUgACmVMAAplUAAKZVQACmVYAAplYAAKZWgACmVsAAplcAAKZXgACmV8AApmqAAKZzQACme0AApoNAAKaDwACmhEAApoTAAKaFQACmhgAApoZAAKaGgACmh0AApoeAAKaIAACmiEAApojAAKaJgACmicAApooAAKaKwACmiwAApoxAAKaPgACmkMAAppFAAKaRwACmkwAAppPAAKaUgACmlQAApp5AAKanQACmsQAAproAAKa6wACmu0AAprvAAKa8QACmvMAApr1AAKa9gACmvkAApsGAAKbFwACmxkAApsbAAKbHQACmx8AApshAAKbIwACmyUAApsnAAKbOAACmzsAAps+AAKbQQACm0QAAptHAAKbSgACm00AAptQAAKbUgACm5EAApuTAAKblQACm5cAApuaAAKbmwACm5wAApudAAKbngACm6AAApuiAAKbowACm6QAApumAAKbpwACm+YAApvoAAKb6gACm+wAApvvAAKb8AACm/EAApvyAAKb8wACm/UAApv3AAKb+AACm/kAApv7AAKb/AACnDsAApw9AAKcQAACnEIAApxFAAKcRgACnEcAApxIAAKcSQACnEsAApxNAAKcTgACnE8AApxRAAKcUgACnF8AApxgAAKcYQACnGMAApyiAAKcpAACnKYAApyoAAKcqwACnKwAApytAAKcrgACnK8AApyxAAKcswACnLQAApy1AAKctwACnLgAApz3AAKc+QACnPsAApz9AAKdAAACnQEAAp0CAAKdAwACnQQAAp0GAAKdCAACnQkAAp0KAAKdDAACnQ0AAp1MAAKdTgACnVAAAp1SAAKdVQACnVYAAp1XAAKdWAACnVkAAp1bAAKdXQACnV4AAp1fAAKdYQACnWIAAp2hAAKdowACnaUAAp2nAAKdqgACnasAAp2sAAKdrQACna4AAp2wAAKdsgACnbMAAp20AAKdtgACnbcAAp32AAKd+AACnfoAAp38AAKd/wACngAAAp4BAAKeAgACngMAAp4FAAKeBwACnggAAp4JAAKeCwACngwAAp4xAAKeVQACnnwAAp6gAAKeowACnqUAAp6nAAKeqQACnqsAAp6tAAKergACnrEAAp6+AAKezQACns8AAp7RAAKe0wACntUAAp7XAAKe2QACntsAAp7qAAKe7QACnvAAAp7zAAKe9gACnvkAAp78AAKe/wACnwEAAp9AAAKfQgACn0QAAp9GAAKfSQACn0oAAp9LAAKfTAACn00AAp9PAAKfUQACn1IAAp9TAAKfVQACn1YAAp+VAAKflwACn5kAAp+bAAKfngACn58AAp+gAAKfoQACn6IAAp+kAAKfpgACn6cAAp+oAAKfqgACn6sAAp/qAAKf7AACn+4AAp/wAAKf8wACn/QAAp/1AAKf9gACn/cAAp/5AAKf+wACn/wAAp/9AAKf/wACoAAAAqA/AAKgQQACoEQAAqBGAAKgSQACoEoAAqBLAAKgTAACoE0AAqBPAAKgUQACoFIAAqBTAAKgVQACoFYAAqCVAAKglwACoJkAAqCbAAKgngACoJ8AAqCgAAKgoQACoKIAAqCkAAKgpgACoKcAAqCoAAKgqgACoKsAAqDqAAKg7AACoO4AAqDwAAKg8wACoPQAAqD1AAKg9gACoPcAAqD5AAKg+wACoPwAAqD9AAKg/wACoQAAAqE/AAKhQQACoUMAAqFFAAKhSAACoUkAAqFKAAKhSwACoUwAAqFOAAKhUAACoVEAAqFSAAKhVAACoVUAAqFeAAKhXwACoWEAAqGkAAKhyAACoewAAqIPAAKiNgAColYAAqJ9AAKipAACosQAAqLoAAKjDAACow4AAqMRAAKjEwACoxUAAqMXAAKjGgACox0AAqMfAAKjIQACoyQAAqMmAAKjKAACoysAAqMuAAKjLwACozQAAqNBAAKjRAACo0YAAqNJAAKjTAACo04AAqNzAAKjlwACo74AAqPiAAKj5QACo+cAAqPpAAKj6wACo+0AAqPvAAKj8AACo/MAAqQAAAKkEwACpBUAAqQXAAKkGQACpBsAAqQdAAKkHwACpCEAAqQjAAKkJQACpDgAAqQ7AAKkPgACpEEAAqREAAKkRwACpEoAAqRNAAKkUAACpFMAAqRVAAKklAACpJYAAqSZAAKkmwACpJ4AAqSfAAKkoAACpKEAAqSiAAKkpAACpKYAAqSnAAKkqAACpKoAAqSrAAKktAACpLUAAqS3AAKk9gACpPgAAqT6AAKk/AACpP8AAqUAAAKlAQACpQIAAqUDAAKlBQACpQcAAqUIAAKlCQACpQsAAqUMAAKlSwACpU0AAqVQAAKlUgACpVUAAqVWAAKlVwACpVgAAqVZAAKlWwACpV0AAqVeAAKlXwACpWEAAqViAAKlawACpWwAAqVuAAKlrQACpa8AAqWxAAKlswACpbYAAqW3AAKluAACpbkAAqW6AAKlvAACpb4AAqW/AAKlwAACpcIAAqXDAAKmAgACpgQAAqYHAAKmCQACpgwAAqYNAAKmDgACpg8AAqYQAAKmEgACphQAAqYVAAKmFgACphgAAqYZAAKmIgACpiMAAqYlAAKmZAACpmYAAqZoAAKmagACpm0AAqZuAAKmbwACpnAAAqZxAAKmcwACpnUAAqZ2AAKmdwACpnkAAqZ6AAKmuQACprsAAqa+AAKmwAACpsMAAqbEAAKmxQACpsYAAqbHAAKmyQACpssAAqbMAAKmzQACps8AAqbQAAKm3QACpt4AAqbfAAKm4QACpyAAAqciAAKnJAACpyYAAqcpAAKnKgACpysAAqcsAAKnLQACpy8AAqcxAAKnMgACpzMAAqc1AAKnNgACp3UAAqd3AAKnegACp3wAAqd/AAKngAACp4EAAqeCAAKngwACp4UAAqeHAAKniAACp4kAAqeLAAKnjAACp5sAAqeoAAKnrQACp7AAAqezAAKnuAACp7sAAqe+AAKnwAACp8UAAqgQAAKoMwACqFMAAqhzAAKodQACqHcAAqh5AAKoewACqH4AAqh/AAKogAACqIMAAqiEAAKohgACqIcAAqiJAAKojAACqI0AAqiOAAKokQACqJIAAqiXAAKopAACqKkAAqirAAKorQACqLIAAqi1AAKouAACqLoAAqjfAAKpAwACqSoAAqlOAAKpUQACqVMAAqlVAAKpVwACqVkAAqlbAAKpXAACqV8AAqlsAAKpfQACqX8AAqmBAAKpgwACqYUAAqmHAAKpiQACqYsAAqmNAAKpngACqaEAAqmkAAKppwACqaoAAqmtAAKpsAACqbMAAqm2AAKpuAACqfcAAqn5AAKp+wACqf0AAqoAAAKqAQACqgIAAqoDAAKqBAACqgYAAqoIAAKqCQACqgoAAqoMAAKqDQACqkwAAqpOAAKqUAACqlIAAqpVAAKqVgACqlcAAqpYAAKqWQACqlsAAqpdAAKqXgACql8AAqphAAKqYgACqqEAAqqjAAKqpgACqqgAAqqrAAKqrAACqq0AAqquAAKqrwACqrEAAqqzAAKqtAACqrUAAqq3AAKquAACqsUAAqrGAAKqxwACqskAAqsIAAKrCgACqwwAAqsOAAKrEQACqxIAAqsTAAKrFAACqxUAAqsXAAKrGQACqxoAAqsbAAKrHQACqx4AAqtdAAKrXwACq2EAAqtjAAKrZgACq2cAAqtoAAKraQACq2oAAqtsAAKrbgACq28AAqtwAAKrcgACq3MAAquyAAKrtAACq7YAAqu4AAKruwACq7wAAqu9AAKrvgACq78AAqvBAAKrwwACq8QAAqvFAAKrxwACq8gAAqwHAAKsCQACrAsAAqwNAAKsEAACrBEAAqwSAAKsEwACrBQAAqwWAAKsGAACrBkAAqwaAAKsHAACrB0AAqxcAAKsXgACrGAAAqxiAAKsZQACrGYAAqxnAAKsaAACrGkAAqxrAAKsbQACrG4AAqxvAAKscQACrHIAAqyXAAKsuwACrOIAAq0GAAKtCQACrQsAAq0NAAKtDwACrREAAq0TAAKtFAACrRcAAq0kAAKtMwACrTUAAq03AAKtOQACrTsAAq09AAKtPwACrUEAAq1QAAKtUwACrVYAAq1ZAAKtXAACrV8AAq1iAAKtZQACrWcAAq2mAAKtqAACraoAAq2sAAKtrwACrbAAAq2xAAKtsgACrbMAAq21AAKttwACrbgAAq25AAKtuwACrbwAAq37AAKt/QACrf8AAq4BAAKuBAACrgUAAq4GAAKuBwACrggAAq4KAAKuDAACrg0AAq4OAAKuEAACrhEAAq5QAAKuUgACrlQAAq5WAAKuWQACrloAAq5bAAKuXAACrl0AAq5fAAKuYQACrmIAAq5jAAKuZQACrmYAAq6lAAKupwACrqoAAq6sAAKurwACrrAAAq6xAAKusgACrrMAAq61AAKutwACrrgAAq65AAKuuwACrrwAAq77AAKu/QACrv8AAq8BAAKvBAACrwUAAq8GAAKvBwACrwgAAq8KAAKvDAACrw0AAq8OAAKvEAACrxEAAq9QAAKvUgACr1QAAq9WAAKvWQACr1oAAq9bAAKvXAACr10AAq9fAAKvYQACr2IAAq9jAAKvZQACr2YAAq+lAAKvpwACr6kAAq+rAAKvrgACr68AAq+wAAKvsQACr7IAAq+0AAKvtgACr7cAAq+4AAKvugACr7sAArAGAAKwKQACsEkAArBpAAKwawACsG0AArBvAAKwcQACsHQAArB1AAKwdgACsHkAArB6AAKwfAACsH0AArB/AAKwggACsIMAArCEAAKwhwACsIgAArCNAAKwmgACsJ8AArChAAKwowACsKgAArCrAAKwrgACsLAAArDVAAKw+QACsSAAArFEAAKxRwACsUkAArFLAAKxTQACsU8AArFRAAKxUgACsVUAArFiAAKxcwACsXUAArF3AAKxeQACsXsAArF9AAKxfwACsYEAArGDAAKxlAACsZcAArGaAAKxnQACsaAAArGjAAKxpgACsakAArGsAAKxrgACse0AArHvAAKx8QACsfMAArH2AAKx9wACsfgAArH5AAKx+gACsfwAArH+AAKx/wACsgAAArICAAKyAwACskIAArJEAAKyRgACskgAArJLAAKyTAACsk0AArJOAAKyTwACslEAArJTAAKyVAACslUAArJXAAKyWAACspcAArKZAAKynAACsp4AArKhAAKyogACsqMAArKkAAKypQACsqcAArKpAAKyqgACsqsAArKtAAKyrgACsrsAArK8AAKyvQACsr8AArL+AAKzAAACswIAArMEAAKzBwACswgAArMJAAKzCgACswsAArMNAAKzDwACsxAAArMRAAKzEwACsxQAArNTAAKzVQACs1cAArNZAAKzXAACs10AArNeAAKzXwACs2AAArNiAAKzZAACs2UAArNmAAKzaAACs2kAArOoAAKzqgACs6wAArOuAAKzsQACs7IAArOzAAKztAACs7UAArO3AAKzuQACs7oAArO7AAKzvQACs74AArP9AAKz/wACtAEAArQDAAK0BgACtAcAArQIAAK0CQACtAoAArQMAAK0DgACtA8AArQQAAK0EgACtBMAArRSAAK0VAACtFYAArRYAAK0WwACtFwAArRdAAK0XgACtF8AArRhAAK0YwACtGQAArRlAAK0ZwACtGgAArSNAAK0sQACtNgAArT8AAK0/wACtQEAArUDAAK1BQACtQcAArUJAAK1CgACtQ0AArUaAAK1KQACtSsAArUtAAK1LwACtTEAArUzAAK1NQACtTcAArVGAAK1SQACtUwAArVPAAK1UgACtVUAArVYAAK1WwACtV0AArWcAAK1ngACtaEAArWjAAK1pgACtacAArWoAAK1qQACtaoAArWsAAK1rgACta8AArWwAAK1sgACtbMAArXyAAK19AACtfYAArX4AAK1+wACtfwAArX9AAK1/gACtf8AArYBAAK2AwACtgQAArYFAAK2BwACtggAArZHAAK2SQACtksAArZNAAK2UAACtlEAArZSAAK2UwACtlQAArZWAAK2WAACtlkAArZaAAK2XAACtl0AAracAAK2ngACtqEAArajAAK2pgACtqcAAraoAAK2qQACtqoAArasAAK2rgACtq8AArawAAK2sgACtrMAArbyAAK29AACtvYAArb4AAK2+wACtvwAArb9AAK2/gACtv8AArcBAAK3AwACtwQAArcFAAK3BwACtwgAArdHAAK3SQACt0sAArdNAAK3UAACt1EAArdSAAK3UwACt1QAArdWAAK3WAACt1kAArdaAAK3XAACt10AArecAAK3ngACt6AAAreiAAK3pQACt6YAArenAAK3qAACt6kAArerAAK3rQACt64AArevAAK3sQACt7IAAre7AAK3vAACt74AArfLAAK3zAACt80AArfPAAK33AACt90AArfeAAK34AACt+0AArfuAAK37wACt/EAArf6AAK4CQACuBYAArglAAK4NwACuEsAArhiAAK4dAACuH0AArh+AAK4gAACuI0AAriOAAK4jwACuJEAAriSAAK4mwACuKUAArisAAAAAAAABAIAAAAAAABowQAAAAAAAAAAAAAAAAACuLQ= - - Shared/CoreData/BookPlayer.xcdatamodeld/Audiobook Player 12.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 -cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEJIAALAAwAGQA1ADYANwBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgB5AHoAewCBAIIAjgCkAKUApgCnAKgAqQCqAKsArACtAMYAyQDQANYA5QDmAPUA+AEHARYBGQB4ASkBOAE8AUABTwFVAVYBXgFtAXYBfAF9AZIBkwGbAZwBnQGpAb0BvgG/AcABwQHCAcMBxAHFAdQB4wHyAfYCBQIUAhUCJAIzAjQCQwJPAmECYgJjAmQCZQJmAmcCaAAvAncChgKHApYCpQLHAsgCzgLaAvAC/wMCAxEDIAMjAzIDQQNEA1MDYgNmA3UDhAOFA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gD3QPeA+YD8gQGBBUEJAQzBDcERgRVBGQEcwSCBI4EoASvBL4EzQTcBOsE+gUJBREFJgUnBS8FMAU8BVAFXwVuBX0FgQWQBZ8FrgW9BcwF2AXqBesF7AXtBe4F7wXwBfEGAAYPBh4GLQYuBj0GTAZbBmMGeAZ5BoEGjQahBrAGvwbOBtIG4QbwBv8HDgcdBykHOwdKB1kHWgdpB3gHkgeTB5kHpQe7B8oHzQfcB+sH7gf9CAwIDwgeCC0IMQhACE8IUAhiCGMIZAhlCGYIZwhoCH0IfgiGCJIIpgi1CMQI0wjXCOYI9QkECRMJIgkuCUAJTwlQCV8Jbgl9CX4JjQmcCasJwAnBCckJ1QnpCfgKBwoWChoKKQo4CkcKVgplCnEKgwqSCqEKsAq/Cs4K3QrsCwELAgsKCxYLKgs5C0gLVwtbC2oLeQuIC5cLpguyC8QL0wviC/EMAAwBDBAMHwwuDEMMRAxMDFgMbAx7DIoMmQydDKwMuwzKDNkM6Az0DQYNFQ0kDTMNQg1RDWANbw2EDYUNjQ2ZDa0NvA3LDdoN3g3tDfwOCw4aDikONQ5HDlYOZQ50DoMOkg6hDrAOxQ7GDs4O2g7uDv0PDA8bDx8PLg89D0wPWw9qD3YPiA+XD6YPtQ/ED8UP1A/jD/IQBxAIEBAQHBAwED8QThBdEGEQcBB/EI4QnRCsELgQyhDZEOgQ9xEGERURJBEzETQRNxFAEU8RXhFtEYIRgxGLEZcRqxG6EckR2BHcEesR+hIJEhgSJxIzEkUSVBJVEmQScxKCEoMSkhKhErASxRLGEs4S2hLuEv0TDBMbEx8TLhM9E0wTWxNqE3YTiBOXE6YTtRPEE9MT4hPxFAYUBxQPFBsULxQ+FE0UXBRgFG8UfhSNFJwUqxS3FMkU2BTnFPYVBRUUFSMVMhVHFUgVUBVcFXAVfxWOFZ0VoRWwFb8VzhXdFewV+BYKFhkWGhYpFjgWRxZIFlcWZhZ1FooWixaTFp8WsxbCFtEW4BbkFvMXAhcRFyAXLxc7F00XXBdrF3oXiReYF6cXthfLF8wX1BfgF/QYAxgSGCEYJRg0GEMYUhhhGHAYfBiOGJ0YrBi7GMoY2RjoGPcZDBkNGRUZIRk1GUQZUxliGWYZdRmEGZMZohmxGb0ZzxneGe0Z/BoLGgwaGxoqGjkaThpPGlcaYxp3GoYalRqkGqgatxrGGtUa5BrzGv8bERsgGy8bPhtNG2cbaBtuG3obkBufG6IbsRvAG8Mb0hvhG+Qb8xwCHAYcFRwkHDAcMRwyHDMcSBxJHFEcXRxxHIAcjxyeHKIcsRzAHM8c3hztHPkdCx0aHSkdOB1HHVYdZR10HYkdih2SHZ4dsh3BHdAd3x3jHfIeAR4QHh8eLh46HkweWx5qHnkeiB6XHqYetR7KHsse0x7fHvMfAh8RHyAfJB8zH0IfUR9gH28fex+NH5wfqx+6H8kf2B/nH/YgCyAMIBQgICA0IEMgUiBhIGUgdCCDIJIgoSCwILwgziDdIOwg+yEKISQhJSErITchTSFcIV8hbiFvIX4hgSGQIZ8hoiGxIcAhxCHTIeIiHCIdIh4iHyIgIiEiIiIjIiQiJSImIiciKCIpIioiKyIsIi0iLiIvIjAiMSIyIjMiNCI1IkoiSyJTIl8icyKCIpEioCKkIrMiwiLRIuAi4SLwIvwjDiMdIywjOyNKI1kjaCN3I4wjjSOVI6EjtSPEI9Mj4iPmI/UkBCQTJCIkMSQ9JE8kXiRtJHwkiySaJKkkuCTNJM4k1iTiJPYlBSUUJSMlJyU2JUUlVCVjJXIlfiWQJZ8lriW9Jcwl2yXqJfkmDiYPJhcmIyY3JkYmVSZkJmgmdyaGJpUmpCalJrQmwCbSJuEm8Cb/Jw4nHScsJzsnUCdRJ1knZSd5J4gnlyemJ6onuSfIJ9cn5if1KAEoEygiKDEoQChPKF4obSh8KJEokiiaKKYouijJ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WNtY6lj5WQVZF1kmWTVZRFlTWW1Zbll0WYBZllmlWahZt1nGWclZ2FnnWepZ+VoIWgxaG1oqWjZaN1o4WjlaTlpPWldaY1p3WoZalVqkWqhat1rGWtVa5FrzWv9bEVsgWy9bPltNW1xba1t6W49bkFuYW6RbuFvHW9Zb5VvpW/hcB1wWXCVcNFxAXFJcYVxwXH9cjlydXKxcu1zQXNFc2VzlXPldCF0XXSZdKl05XUhdV11mXXVdgV2TXaJdsV3AXc9d3l3tXfxeEV4SXhpeJl46XkleWF5nXmteel6JXphep162XsJe1F7jXvJfAV8QXx9fLl89X0BfT19eX21fgl+DX4tfl1+rX7pfyV/YX9xf61/6YAlgGGAnYDNgRWBUYGNgcmCBYJBgn2CuYMNgxGDMYNhg7GD7YQphGWEdYSxhO2FKYVlhaGF0YYZhlWGkYbNhwmHRYeBh72HyYfdiAGIaYhtiIWItYkNiUmJVYmRic2J2YoVilGKXYqZitWK5Yshi12LdYt5i82L0YvxjCGMcYytjOmNJY01jXGNrY3pjiWOYY6RjtmPFY9Rj42PyZAxkDWQTZB9kNWREZEdkVmRlZGhkd2SGZIlkmGSnZKtkumTJZNdk2GTZZNpk72TwZPhlBGUYZSdlNmVFZUllWGVnZXZlhWWUZaBlsmXBZdBl32XuZf1mDGYbZjBmMWY5ZkVmWWZoZndmhmaKZplmqGa3ZsZm1WbhZvNnAmcRZyBnL2c+Z01nXGdxZ3JnemeGZ5pnqWe4Z8dny2faZ+ln+GgHaBZoImg0aENoUmhhaHBof2iOaJ1osmizaLtox2jbaOpo+WkIaQxpG2kqaTlpSGlXaWNpdWmEaZNpommxacBpz2neafNp9Gn8aghqHGorajpqSWpNalxqa2p6aolqmGqkarZqxWrUauNq8msBaxBrH2siazFrQGtPa1NrVGtaa2FrYmtxa4Brj2uTa61rrmu0a8Br1mvla+hr92wGbAlsGGwnbCpsOWxIbExsW2xqbHZsd2x4bHlsjmyPbJdso2y3bMZs1WzkbOhs920GbRVtJG0zbT9tUW1gbW9tfm2NbZxtq226bc9t0G3YbeRt+G4HbhZuJW4pbjhuR25WbmVudG6AbpJuoW6wbr9uzm7dbuxu+28QbxFvGW8lbzlvSG9Xb2Zvam95b4hvl2+mb7VvwW/Tb+Jv8XAAcA9wHnAtcDxwUXBScFpwZnB6cIlwmHCncKtwunDJcNhw53D2cQJxFHEjcTJxQXFQcV9xbnF9cYBxmnGbcaFxrXHDcdJx1XHkcfNx9nIFchRyF3ImcjVyOXJIcldyWHJgcmFydnJ3cn9yi3Kfcq5yvXLMctBy33Lucv1zDHMbcydzOXNIc1dzZnN1c4Rzk3Oic7dzuHPAc8xz4HPvc/50DXQRdCB0L3Q+dE10XHRodHp0iXSYdKd0tnTFdNR043TmdOp07nTydPp0/XUBdQJVJG51bGzWAA0ADgAPABAAEQASABMAFAAVABYAFwAYXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc11feGRfbW9kZWxOYW1lXF94ZF9jb21tZW50c18QFV9jb25maWd1cmF0aW9uc0J5TmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBCR+AAIEJHIEJHYEJHt4AGgAbABwAHQAeAB8AIAAOACEAIgAjACQAJQAmACcAKAApAAkAJwAVAC0ALgAvADAAMQAnACcAFV8QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEJGoEJGIABgASAAIEJGYEJGxAAgAWAA4AEgASAAFBTWUVT0wA4ADkADgA6AEYAUldOUy5rZXlzWk5TLm9iamVjdHOrADsAPAA9AD4APwBAAEEAQgBDAEQARYAGgAeACIAJgAqAC4AMgA2ADoAPgBCrAEcASABJAEoASwBMAE0ATgBPAFAAUYARgNmBB6OBBvyBB8uAYoEGEYEIYYECWIEI1IECx4AwVkZvbGRlcl1IYXJkY292ZXJCb29rVEJvb2tYQm9va21hcmtXQ2hhcHRlcltMaWJyYXJ5SXRlbV8QEEV4dGVybmFsUmVzb3VyY2VXQWNjb3VudFdMaWJyYXJ5XlBsYXliYWNrUmVjb3JkVVRoZW1l3xAQAF8AYABhAGIAHwBjAGQAIQBlAGYADgAjAGcAaAAmAGkAagBrACcAJwATAG8AcAAvACcAagBzADsAagB2AHcAeF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZV8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc2R1cGxpY2F0ZXNfECRYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zb3JkZXJlZF8QIVhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zc3RvcmFnZVtfaXNBYnN0cmFjdIATgDeABIAEgAKAFIEBmIAEgBOBAZqABoATgQhggBIIEslD2+xXb3JkZXJlZNMAOAA5AA4AfAB+AFKhAH2AFaEAf4AWgDBeWERfUFN0ZXJlb3R5cGXZAB8AIwCDAA4AJgCEACEAaQCFAEcAfQBqAIkAFQAnAC8AeACNXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgBGAFYATgDaAAIAECIAX0wA4ADkADgCPAJkAUqkAkACRAJIAkwCUAJUAlgCXAJiAGIAZgBqAG4AcgB2AHoAfgCCpAJoAmwCcAJ0AngCfAKAAoQCigCGAJYAngCmAKoAsgC6AMYA1gDBfEBNYRFBNQ29tcG91bmRJ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DwCuAK8AsAAfALEAsgCzACEAtAAOACMAtQC2ACYAtwAVAnkAFQGZAHgAeAB4AC8AeADAAlIAeAB4ABUAeIAAgF+AAIBTCAgICIAkgFYICIAACBAB3xAPAK4ArwCwAB8AsQCyALMAIQC0AA4AIwC1ALYAJgC3ABUCagAVAZkAeAB4AHgALwB4AMACUwB4AHgAFQB4gACAXYAAgFMICAgIgCSAVwgIgAAI3xAPAK4ArwCwAB8AsQCyALMAIQC0AA4AIwC1ALYAJgC3ABUATAAVAZkAeAB4AHgALwB4AMACVAB4AHgAFQB4gACAYoAAgFMICAgIgCSAWAgIgAAI3xAUAGkCpgKnAqgCqQKqAqsAHwAOAqwAIwKtACYCrgKvArACsQKyArMAIQIUAGoAagK3ACcAcABqABMAcwAnAEACvwLAACcAJwBqAsQCxQBwAC9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc29yZGVyZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECFYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc3N0b3JhZ2VfECRYREJ1Y2tldEZvclNwZWNpYWxpemF0aW9uc2R1cGxpY2F0ZXMJgBOAE4BkgASBAZiAE4ACgQGagASAC4EHoIBjgASABIATgHWBB6GBAZgTAAAAASZ6YGvTADgA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twAVAEUAFSEpAHgAeAB4AC8AeADAAJgAeAB4ABUAeIAAgBCAAIECyggICAiAJIAgCAiAAAjTADgAOQAOIeMh/wBSrxAbIeQh5SHmIech6CHpIeoh6yHsIe0h7iHvIfADiCHyIfMDlSH1IfYh9yH4Ifkh+iH7Ifwh/SH+gQLbgQLcgQLdgQLegQLfgQLggQLhgQLigQLjgQLkgQLlgQLmgQLngHeBAuiBAumAhIEC6oEC64EC7IEC7YEC7oEC74EC8IEC8YEC8oEC868QGyIAIgEiAiIDIgQiBSIGIgciCCIJIgoiCyIMIg0iDiIPIhAiESISIhMiFCIVIhYiFyIYIhkiGoEC9IEDDIEDI4EDOoEDUoEDaYEDgIEDl4EDroEDxYED3YED9IEEC4EEIoEEOYEEUYEEaIEEf4EEloEEroEExoEE3oEE9YEFDIEFOoEFUoEFaYAwXxAQZGFya1NlY29uZGFyeUhleF8QH2RhcmtUZXJ0aWFyeVN5c3RlbUJhY2tncm91bmRIZXhfEBxsaWdodFF1YXRlcm5hcnlTeXN0ZW1GaWxsSGV4XxARbGlnaHRTZWNvbmRhcnlIZXhfEBtkYXJrUXVhdGVybmFyeVN5c3RlbUZpbGxIZXhfEBpkYXJrU2Vjb25kYXJ5U3lzdGVtRmlsbEhleF8QIWxpZ2h0U2Vjb25kYXJ5U3lzdGVtQmFja2dyb3VuZEhleF8QHmRhcmtTeXN0ZW1Hcm91cGVkQmFja2dyb3VuZEhleF8QIGRhcmtTZWNvbmRhcnlTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAYbGlnaHRTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAQZGFya1NlcGFyYXRvckhleF8QEWRhcmtTeXN0ZW1GaWxsSGV4XxAabGlnaHRUZXJ0aWFyeVN5c3RlbUZpbGxIZXhebGlnaHRBY2NlbnRIZXhfEBFsaWdodFNlcGFyYXRvckhleF8QEmxpZ2h0U3lzdGVtRmlsbEhleF8QD2xpZ2h0UHJpbWFyeUhleF5kYXJrUHJpbWFyeUhleF8QF2RhcmtTeXN0ZW1CYWNrZ3JvdW5kSGV4XxAZZGFya1RlcnRpYXJ5U3lzdGVtRmlsbEhleF8QG2xpZ2h0U2Vjb25kYXJ5U3lzdGVtRmlsbEhleFhzZWxlY3RlZF1kYXJrQWNjZW50SGV4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ABqsAAAavwAAGsgAABrbAAAa8gAAGwQAABtDAAAbRQAAG0cAABtJAAAbSwAAG0wAABtNAAAbTgAAG08AABtRAAAbUwAAG1QAABtVAAAbVwAAG1gAABtjAAAbogAAG6QAABumAAAbqAAAG6oAABurAAAbrAAAG60AABuuAAAbsAAAG7IAABuzAAAbtAAAG7YAABu3AAAbwAAAG8EAABvDAAAcAgAAHAQAABwGAAAcCAAAHAoAABwLAAAcDAAAHA0AABwOAAAcEAAAHBIAABwTAAAcFAAAHBYAABwXAAAcVgAAHFgAABxaAAAcXAAAHF4AABxfAAAcYAAAHGEAABxiAAAcZAAAHGYAABxnAAAcaAAAHGoAABxrAAAcdAAAHHUAABx3AAActgAAHLgAABy6AAAcvAAAHL4AABy/AAAcwAAAHMEAABzCAAAcxAAAHMYAABzHAAAcyAAAHMoAABzLAAAczAAAHQsAAB0NAAAdDwAAHREAAB0TAAAdFAAAHRUAAB0WAAAdFwAAHRkAAB0bAAAdHAAAHR0AAB0fAAAdIAAAHS0AAB0uAAAdLwAAHTEAAB06AAAdUAAAHVcAAB1kAAAdowAAHaUAAB2nAAAdqQAAHasAAB2sAAAdrQAAHa4AAB2vAAAdsQAAHbMAAB20AAAdtQAAHbcAAB24AAAd0QAAHdMAAB3VAAAd1wAAHdgAAB3aAAAd8QAAHfoAAB4IAAAeFQAAHiMAAB44AAAeTAAAHmMAAB51AAAetAAAHrYAAB64AAAeugAAHrwAAB69AAAevgAAHr8AAB7AAAAewgAAHsQAAB7FAAAexgAAHsgAAB7JAAAe0gAAHucAAB72AAAfCwAAHxkAAB8uAAAfQgAAH1kAAB9rAAAfeAAAH3sAAB99AAAfgAAAH4IAAB+EAAAfigAAH9UAAB/4AAAgGAAAIDgAACA6AAAgPAAAID4AACBAAAAgQgAAIEMAACBEAAAgRgAAIEcAACBJAAAgSgAAIEwAACBOAAAgTwAAIFAAACBSAAAgUwAAIFgAACBlAAAgagAAIGwAACBuAAAgcwAAIHUAACB3AAAgeQAAII4AACChAAAgxgAAIOoAACERAAAhNQAAITcAACE5AAAhOwAAIT0AACE/AAAhQQAAIUIAACFEAAAhUQAAIWIAACFkAAAhZgAAIWgAACFqAAAhbAAAIW4AACFwAAAhcgAAIYMAACGFAAAhhwAAIYkAACGLAAAhjQAAIY8AACGRAAAhkwAAIZUAACGzAAAh0QAAIeQAACH4AAAiDQAAIioAACI+AAAiVAAAIpMAACKVAAAilwAAIpkAACKbAAAinAAAIp0AACKeAAAinwAAIqEAACKjAAAipAAAIqUAACKnAAAiqAAAIucAACLpAAAi6wAAIu0AACLvAAAi8AAAIvEAACLyAAAi8wAAIvUAACL3AAAi+AAAIvkAACL7AAAi/AAAIzsAACM9AAAjPwAAI0EAACNDAAAjRAAAI0UAACNGAAAjRwAAI0kAACNLAAAjTAAAI00AACNPAAAjUAAAI10AACNeAAAjXwAAI2EAACOgAAAjogAAI6QAACOmAAAjqAAAI6kAACOqAAAjqwAAI6wAACOuAAAjsAAAI7EAACOyAAAjtAAAI7UAACP0AAAj9gAAI/gAACP6AAAj/AAAI/0AACP+AAAj/wAAJAAAACQCAAAkBAAAJAUAACQGAAAkCAAAJAkAACQKAAAkSQAAJEsAACRNAAAkTwAAJFEAACRSAAAkUwAAJFQAACRVAAAkVwAAJFkAACRaAAAkWwAAJF0AACReAAAknQAAJJ8AACShAAAkowAAJKUAACSmAAAkpwAAJKgAACSpAAAkqwAAJK0AACSuAAAkrwAAJLEAACSyAAAkwQAAJQAAACUCAAAlBAAAJQYAACUIAAAlCQAAJQoAACULAAAlDAAAJQ4AACUQAAAlEQAAJRIAACUUAAAlFQAAJToAACVeAAAlhQAAJakAACWrAAAlrQAAJa8AACWxAAAlswAAJbUAACW2AAAluAAAJcUAACXUAAAl1gAAJdgAACXaAAAl3AAAJd4AACXgAAAl4gAAJfEAACXzAAAl9QAAJfcAACX5AAAl/AAAJf8AACYCAAAmBAAAJhYAACYqAAAmPAAAJlEAACZjAAAmcgAAJo8AACbOAAAm0AAAJtIAACbUAAAm1gAAJtcAACbYAAAm2QAAJtoAACbcAAAm3gAAJt8AACbgAAAm4gAAJuMAACciAAAnJAAAJyYAACcoAAAnKgAAJysAACcsAAAnLQAAJy4AACcwAAAnMgAAJzMAACc0AAAnNgAAJzcAACc5AAAneAAAJ3oAACd8AAAnfgAAJ4AAACeBAAAnggAAJ4MAACeEAAAnhgAAJ4gAACeJAAAnigAAJ4wAACeNAAAnzAAAJ84AACfQAAAn0gAAJ9QAACfVAAAn1gAAJ9cAACfYAAAn2gAAJ9wAACfdAAAn3gAAJ+AAACfhAAAoNAAAKFgAACh8AAAonAAAKMMAACjqAAApCgAAKTEAAClVAAApeAAAKZ8AACnDAAAp5wAAKgsAACoyAAAqMwAAKjUAACo3AAAqOQAAKjsAACo+AAAqQAAAKkIAACpFAAAqRwAAKkkAACpMAAAqTgAAKlAAACpSAAAqVAAAKlYAACpZAAAqXAAAKmUAACpyAAAqdQAAKncAACp6AAAqfAAAKn4AACqjAAAqxwAAKu4AACsSAAArFAAAKxYAACsYAAArGgAAKxwAACseAAArHwAAKyEAACsuAAArQQAAK0MAACtFAAArRwAAK0kAACtLAAArTQAAK08AACtRAAArUwAAK2YAACtoAAAragAAK2wAACtuAAArcAAAK3IAACt0AAArdgAAK3gAACt6AAAruQAAK7sAACu9AAArvwAAK8EAACvCAAArwwAAK8QAACvFAAArxwAAK8kAACvKAAArywAAK80AACvOAAAr1wAAK9gAACvaAAAsGQAALBsAACwdAAAsHwAALCEAACwiAAAsIwAALCQAACwlAAAsJwAALCkAACwqAAAsKwAALC0AACwuAAAsbQAALG8AACxxAAAscwAALHUAACx2AAAsdwAALHgAACx5AAAsewAALH0AACx+AAAsfwAALIEAACyCAAAsiwAALIwAACyOAAAszQAALM8AACzRAAAs0wAALNUAACzWAAAs1wAALNgAACzZAAAs2wAALN0AACzeAAAs3wAALOEAACziAAAtIQAALSMAAC0lAAAtJwAALSkAAC0qAAAtKwAALSwAAC0tAAAtLwAALTEAAC0yAAAtMwAALTUAAC02AAAtPwAALUAAAC1CAAAtgQAALYMAAC2FAAAthwAALYkAAC2KAAAtiwAALYwAAC2NAAAtjwAALZEAAC2SAAAtkwAALZUAAC2WAAAt1QAALdcAAC3ZAAAt2wAALd0AAC3eAAAt3wAALeAAAC3hAAAt4wAALeUAAC3mAAAt5wAALekAAC3qAAAt9wAALfgAAC35AAAt+wAALjoAAC48AAAuPgAALkAAAC5CAAAuQwAALkQAAC5FAAAuRgAALkgAAC5KAAAuSwAALkwAAC5OAAAuTwAALo4AAC6QAAAukgAALpQAAC6WAAAulwAALpgAAC6ZAAAumgAALpwAAC6eAAAunwAALqAAAC6iAAAuowAALq8AAC68AAAu6QAALusAAC7tAAAu7wAALvEAAC7zAAAu9QAALvcAAC75AAAu+wAALv0AAC7/AAAvAQAALwMAAC8FAAAvBwAALwkAAC8LAAAvDQAALw8AAC8RAAAvEwAAL0AAAC9CAAAvRAAAL0YAAC9JAAAvTAAAL08AAC9SAAAvVQAAL1gAAC9bAAAvXgAAL2EAAC9kAAAvZwAAL2oAAC9tAAAvcAAAL3MAAC92AAAveQAAL3wAAC9+AAAvhQAAL4sAAC+ZAAAvogAAL64AAC/BAAAvxwAAL9EAAC/WAAAv4wAAL+4AAC/5AAAv/gAAMAYAADAOAAAwGAAAMCMAADA3AAAwQQAAMFQAADBhAAAwrAAAMM8AADDvAAAxDwAAMREAADETAAAxFQAAMRcAADEZAAAxGgAAMRsAADEdAAAxHgAAMSAAADEhAAAxIwAAMSUAADEmAAAxJwAAMSkAADEqAAAxLwAAMTwAADFBAAAxQwAAMUUAADFKAAAxTAAAMU4AADFQAAAxdQAAMZkAADHAAAAx5AAAMeYAADHoAAAx6gAAMewAADHuAAAx8AAAMfEAADHzAAAyAAAAMhEAADITAAAyFQAAMhcAADIZAAAyGwAAMh0AADIfAAAyIQAAMjIAADI0AAAyNgAAMjgAADI6AAAyPAAAMj4AADJAAAAyQgAAMkQAADKDAAAyhQAAMocAADKJAAAyiwAAMowAADKNAAAyjgAAMo8AADKRAAAykwAAMpQAADKVAAAylwAAMpgAADLXAAAy2QAAMtsAADLdAAAy3wAAMuAAADLhAAAy4gAAMuMAADLlAAAy5wAAMugAADLpAAAy6wAAMuwAADMrAAAzLQAAMy8AADMxAAAzMwAAMzQAADM1AAAzNgAAMzcAADM5AAAzOwAAMzwAADM9AAAzPwAAM0AAADNNAAAzTgAAM08AADNRAAAzkAAAM5IAADOUAAAzlgAAM5gAADOZAAAzmgAAM5sAADOcAAAzngAAM6AAADOhAAAzogAAM6QAADOlAAAz5AAAM+YAADPoAAAz6gAAM+wAADPtAAAz7gAAM+8AADPwAAAz8gAAM/QAADP1AAAz9gAAM/gAADP5AAA0OAAANDoAADQ8AAA0PgAANEAAADRBAAA0QgAANEMAADREAAA0RgAANEgAADRJAAA0SgAANEwAADRNAAA0jAAANI4AADSQAAA0kgAANJQAADSVAAA0lgAANJcAADSYAAA0mgAANJwAADSdAAA0ngAANKAAADShAAA04AAANOIAADTkAAA05gAANOgAADTpAAA06gAANOsAADTsAAA07gAANPAAADTxAAA08gAANPQAADT1AAA1GgAANT4AADVlAAA1iQAANYsAADWNAAA1jwAANZEAADWTAAA1lQAANZYAADWYAAA1pQAANbQAADW2AAA1uAAANboAADW8AAA1vgAANcAAADXCAAA10QAANdMAADXVAAA11wAANdkAADXbAAA13QAANd8AADXhAAA2IAAANiIAADYkAAA2JgAANigAADYpAAA2KgAANisAADYsAAA2LgAANjAAADYxAAA2MgAANjQAADY1AAA2dAAANnYAADZ4AAA2egAANnwAADZ9AAA2fgAANn8AADaAAAA2ggAANoQAADaFAAA2hgAANogAADaJAAA2yAAANsoAADbMAAA2zgAANtAAADbRAAA20gAANtMAADbUAAA21gAANtgAADbZAAA22gAANtwAADbdAAA3HAAANx4AADcgAAA3IgAANyQAADclAAA3JgAANycAADcoAAA3KgAANywAADctAAA3LgAANzAAADcxAAA3cAAAN3IAADd0AAA3dgAAN3gAADd5AAA3egAAN3sAADd8AAA3fgAAN4AAADeBAAA3ggAAN4QAADeFAAA3xAAAN8YAADfIAAA3ygAAN8wAADfNAAA3zgAAN88AADfQAAA30gAAN9QAADfVAAA31gAAN9gAADfZAAA4GAAAOBoAADgcAAA4HgAAOCAAADghAAA4IgAAOCMAADgkAAA4JgAAOCgAADgpAAA4KgAAOCwAADgtAAA4NgAAOEkAADhWAAA4aQAAOHYAADiJAAA4oAAAOLIAADj9AAA5IAAAOUAAADlgAAA5YgAAOWQAADlmAAA5aAAAOWoAADlrAAA5bAAAOW4AADlvAAA5cQAAOXIAADl0AAA5dgAAOXcAADl4AAA5egAAOXsAADmAAAA5jQAAOZIAADmUAAA5lgAAOZsAADmdAAA5nwAAOaEAADm2AAA52wAAOf8AADomAAA6SgAAOkwAADpOAAA6UAAAOlIAADpUAAA6VgAAOlcAADpZAAA6ZgAAOncAADp5AAA6ewAAOn0AADp/AAA6gQAAOoMAADqFAAA6hwAAOpgAADqaAAA6nAAAOp4AADqgAAA6ogAAOqQAADqmAAA6qAAAOqoAADrpAAA66wAAOu0AADrvAAA68QAAOvIAADrzAAA69AAAOvUAADr3AAA6+QAAOvoAADr7AAA6/QAAOv4AADs9AAA7PwAAO0EAADtDAAA7RQAAO0YAADtHAAA7SAAAO0kAADtLAAA7TQAAO04AADtPAAA7UQAAO1IAADuRAAA7kwAAO5UAADuXAAA7mQAAO5oAADubAAA7nAAAO50AADufAAA7oQAAO6IAADujAAA7pQAAO6YAADuzAAA7tAAAO7UAADu3AAA79gAAO/gAADv6AAA7/AAAO/4AADv/AAA8AAAAPAEAADwCAAA8BAAAPAYAADwHAAA8CAAAPAoAADwLAAA8SgAAPEwAADxOAAA8UAAAPFIAADxTAAA8VAAAPFUAADxWAAA8WAAAPFoAADxbAAA8XAAAPF4AADxfAAA8ngAAPKAAADyiAAA8pAAAPKYAADynAAA8qAAAPKkAADyqAAA8rAAAPK4AADyvAAA8sAAAPLIAADyzAAA88gAAPPQAADz2AAA8+AAAPPoAADz7AAA8/AAAPP0AADz+AAA9AAAAPQIAAD0DAAA9BAAAPQYAAD0HAAA9RgAAPUgAAD1KAAA9TAAAPU4AAD1PAAA9UAAAPVEAAD1SAAA9VAAAPVYAAD1XAAA9WAAAPVoAAD1bAAA9gAAAPaQAAD3LAAA97wAAPfEAAD3zAAA99QAAPfcAAD35AAA9+wAAPfwAAD3+AAA+CwAAPhoAAD4cAAA+HgAAPiAAAD4iAAA+JAAAPiYAAD4oAAA+NwAAPjkAAD47AAA+PQAAPj8AAD5BAAA+QwAAPkUAAD5HAAA+ZwAAPpIAAD6sAAA+xQAAPt8AAD7/AAA/IgAAP2EAAD9jAAA/ZQAAP2cAAD9pAAA/agAAP2sAAD9sAAA/bQAAP28AAD9xAAA/cgAAP3MAAD91AAA/dgAAP7UAAD+3AAA/uQAAP7sAAD+9AAA/vgAAP78AAD/AAAA/wQAAP8MAAD/FAAA/xgAAP8cAAD/JAAA/ygAAQAkAAEALAABADQAAQA8AAEARAABAEgAAQBMAAEAUAABAFQAAQBcAAEAZAABAGgAAQBsAAEAdAABAHgAAQF0AAEBfAABAYQAAQGMAAEBlAABAZgAAQGcAAEBoAABAaQAAQGsAAEBtAABAbgAAQG8AAEBxAABAcgAAQHUAAEC0AABAtgAAQLgAAEC6AABAvAAAQL0AAEC+AABAvwAAQMAAAEDCAABAxAAAQMUAAEDGAABAyAAAQMkAAEEIAABBCgAAQQwAAEEOAABBEAAAQREAAEESAABBEwAAQRQAAEEWAABBGAAAQRkAAEEaAABBHAAAQR0AAEFcAABBXgAAQWAAAEFiAABBZAAAQWUAAEFmAABBZwAAQWgAAEFqAABBbAAAQW0AAEFuAABBcAAAQXEAAEF6AABBiAAAQZUAAEGjAABBsAAAQcMAAEHaAABB7AAAQjcAAEJaAABCegAAQpoAAEKcAABCngAAQqAAAEKiAABCpAAAQqUAAEKmAABCqAAAQqkAAEKrAABCrAAAQq4AAEKwAABCsQAAQrIAAEK0AABCtQAAQroAAELHAABCzAAAQs4AAELQAABC1QAAQtcAAELZAABC2wAAQwAAAEMkAABDSwAAQ28AAENxAABDcwAAQ3UAAEN3AABDeQAAQ3sAAEN8AABDfgAAQ4sAAEOcAABDngAAQ6AAAEOiAABDpAAAQ6YAAEOoAABDqgAAQ6wAAEO9AABDvwAAQ8EAAEPDAABDxQAAQ8cAAEPJAABDywAAQ80AAEPPAABEDgAARBAAAEQSAABEFAAARBYAAEQXAABEGAAARBkAAEQaAABEHAAARB4AAEQfAABEIAAARCIAAEQjAABEYgAARGQAAERmAABEaAAARGoAAERrAABEbAAARG0AAERuAABEcAAARHIAAERzAABEdAAARHYAAER3AABEtgAARLgAAES6AABEvAAARL4AAES/AABEwAAARMEAAETCAABExAAARMYAAETHAABEyAAARMoAAETLAABE2AAARNkAAETaAABE3AAARRsAAEUdAABFHwAARSEAAEUjAABFJAAARSUAAEUmAABFJwAARSkAAEUrAABFLAAARS0AAEUvAABFMAAARW8AAEVxAABFcwAARXUAAEV3AABFeAAARXkAAEV6AABFewAARX0AAEV/AABFgAAARYEAAEWDAABFhAAARcMAAEXFAABFxwAARckAAEXLAABFzAAARc0AAEXOAABFzwAARdEAAEXTAABF1AAARdUAAEXXAABF2AAARhcAAEYZAABGGwAARh0AAEYfAABGIAAARiEAAEYiAABGIwAARiUAAEYnAABGKAAARikAAEYrAABGLAAARmsAAEZtAABGbwAARnEAAEZzAABGdAAARnUAAEZ2AABGdwAARnkAAEZ7AABGfAAARn0AAEZ/AABGgAAARqUAAEbJAABG8AAARxQAAEcWAABHGAAARxoAAEccAABHHgAARyAAAEchAABHIwAARzAAAEc/AABHQQAAR0MAAEdFAABHRwAAR0kAAEdLAABHTQAAR1wAAEdeAABHYAAAR2IAAEdkAABHZwAAR2oAAEdtAABHbwAAR64AAEewAABHsgAAR7QAAEe2AABHtwAAR7gAAEe5AABHugAAR7wAAEe+AABHvwAAR8AAAEfCAABHwwAASAIAAEgEAABIBgAASAgAAEgKAABICwAASAwAAEgNAABIDgAASBAAAEgSAABIEwAASBQAAEgWAABIFwAASBkAAEhYAABIWgAASFwAAEheAABIYAAASGEAAEhiAABIYwAASGQAAEhmAABIaAAASGkAAEhqAABIbAAASG0AAEisAABIrgAASLAAAEiyAABItAAASLUAAEi2AABItwAASLgAAEi6AABIvAAASL0AAEi+AABIwAAASMEAAEkEAABJKAAASUwAAElvAABJlgAASbYAAEndAABKBAAASiQAAEpIAABKbAAASm4AAEpwAABKcgAASnQAAEp2AABKeAAASnsAAEp9AABKfwAASoIAAEqEAABKhgAASokAAEqLAABKjAAASpEAAEqeAABKoQAASqMAAEqmAABKqAAASqoAAErPAABK8wAASxoAAEs+AABLQAAAS0IAAEtEAABLRgAAS0gAAEtKAABLSwAAS00AAEtaAABLbQAAS28AAEtxAABLcwAAS3UAAEt3AABLeQAAS3sAAEt9AABLfwAAS5IAAEuUAABLlgAAS5gAAEuaAABLnAAAS54AAEugAABLogAAS6QAAEumAABL5QAAS+cAAEvpAABL6wAAS+0AAEvuAABL7wAAS/AAAEvxAABL8wAAS/UAAEv2AABL9wAAS/kAAEv6AABMAwAATAQAAEwGAABMRQAATEcAAExJAABMSwAATE0AAExOAABMTwAATFAAAExRAABMUwAATFUAAExWAABMVwAATFkAAExaAABMmQAATJsAAEydAABMnwAATKEAAEyiAABMowAATKQAAEylAABMpwAATKkAAEyqAABMqwAATK0AAEyuAABMtwAATLgAAEy6AABM+QAATPsAAEz9AABM/wAATQEAAE0CAABNAwAATQQAAE0FAABNBwAATQkAAE0KAABNCwAATQ0AAE0OAABNTQAATU8AAE1RAABNUwAATVUAAE1WAABNVwAATVgAAE1ZAABNWwAATV0AAE1eAABNXwAATWEAAE1iAABNawAATWwAAE1uAABNrQAATa8AAE2xAABNswAATbUAAE22AABNtwAATbgAAE25AABNuwAATb0AAE2+AABNvwAATcEAAE3CAABOAQAATgMAAE4FAABOBwAATgkAAE4KAABOCwAATgwAAE4NAABODwAAThEAAE4SAABOEwAAThUAAE4WAABOIwAATiQAAE4lAABOJwAATmYAAE5oAABOagAATmwAAE5uAABObwAATnAAAE5xAABOcgAATnQAAE52AABOdwAATngAAE56AABOewAATroAAE68AABOvgAATsAAAE7CAABOwwAATsQAAE7FAABOxgAATsgAAE7KAABOywAATswAAE7OAABOzwAATt0AAE7qAABO+QAATvsAAE79AABO/wAATwEAAE8DAABPBQAATwcAAE8WAABPGAAATxsAAE8eAABPIQAATyQAAE8nAABPKgAATywAAE8zAABPOgAATz0AAE9IAABPUwAAT18AAE+qAABPzQAAT+0AAFANAABQDwAAUBEAAFATAABQFQAAUBcAAFAYAABQGQAAUBsAAFAcAABQHgAAUB8AAFAhAABQIwAAUCQAAFAlAABQJwAAUCgAAFAtAABQOgAAUD8AAFBBAABQQwAAUEgAAFBKAABQTQAAUE8AAFB0AABQmAAAUL8AAFDjAABQ5QAAUOcAAFDpAABQ6wAAUO0AAFDvAABQ8AAAUPIAAFD/AABREAAAURIAAFEUAABRFgAAURgAAFEaAABRHAAAUR4AAFEgAABRMQAAUTMAAFE1AABRNwAAUTkAAFE7AABRPQAAUT8AAFFCAABRRAAAUYMAAFGFAABRhwAAUYkAAFGLAABRjAAAUY0AAFGOAABRjwAAUZEAAFGTAABRlAAAUZUAAFGXAABRmAAAUdcAAFHZAABR2wAAUd0AAFHfAABR4AAAUeEAAFHiAABR4wAAUeUAAFHnAABR6AAAUekAAFHrAABR7AAAUisAAFItAABSLwAAUjEAAFIzAABSNAAAUjUAAFI2AABSNwAAUjkAAFI7AABSPAAAUj0AAFI/AABSQAAAUk0AAFJOAABSTwAAUlEAAFKQAABSkgAAUpQAAFKWAABSmAAAUpkAAFKaAABSmwAAUpwAAFKeAABSoAAAUqEAAFKiAABSpAAAUqUAAFLkAABS5gAAUugAAFLqAABS7AAAUu0AAFLuAABS7wAAUvAAAFLyAABS9AAAUvUAAFL2AABS+AAAUvkAAFM4AABTOgAAUzwAAFM+AABTQAAAU0EAAFNCAABTQwAAU0QAAFNGAABTSAAAU0kAAFNKAABTTAAAU00AAFOMAABTjgAAU5AAAFOSAABTlAAAU5UAAFOWAABTlwAAU5gAAFOaAABTnAAAU50AAFOeAABToAAAU6EAAFPgAABT4gAAU+QAAFPmAABT6AAAU+kAAFPqAABT6wAAU+wAAFPuAABT8AAAU/EAAFPyAABT9AAAU/UAAFQaAABUPgAAVGUAAFSJAABUiwAAVI0AAFSPAABUkQAAVJMAAFSVAABUlgAAVJkAAFSmAABUtQAAVLcAAFS5AABUuwAAVL0AAFS/AABUwQAAVMMAAFTSAABU1QAAVNgAAFTbAABU3gAAVOEAAFTkAABU5wAAVOkAAFUoAABVKgAAVS0AAFUvAABVMgAAVTMAAFU0AABVNQAAVTYAAFU4AABVOgAAVTsAAFU8AABVPgAAVT8AAFVBAABVgAAAVYIAAFWEAABVhgAAVYkAAFWKAABViwAAVYwAAFWNAABVjwAAVZEAAFWSAABVkwAAVZUAAFWWAABV1QAAVdcAAFXZAABV2wAAVd4AAFXfAABV4AAAVeEAAFXiAABV5AAAVeYAAFXnAABV6AAAVeoAAFXrAABWKgAAViwAAFYvAABWMQAAVjQAAFY1AABWNgAAVjcAAFY4AABWOgAAVjwAAFY9AABWPgAAVkAAAFZBAABWQwAAVoIAAFaEAABWhgAAVogAAFaLAABWjAAAVo0AAFaOAABWjwAAVpEAAFaTAABWlAAAVpUAAFaXAABWmAAAVtcAAFbZAABW2wAAVt0AAFbgAABW4QAAVuIAAFbjAABW5AAAVuYAAFboAABW6QAAVuoAAFbsAABW7QAAVywAAFcuAABXMAAAVzIAAFc1AABXNgAAVzcAAFc4AABXOQAAVzsAAFc9AABXPgAAVz8AAFdBAABXQgAAV40AAFewAABX0AAAV/AAAFfyAABX9AAAV/YAAFf4AABX+gAAV/sAAFf8AABX/wAAWAAAAFgCAABYAwAAWAUAAFgHAABYCAAAWAkAAFgMAABYDQAAWBIAAFgfAABYJAAAWCYAAFgoAABYLQAAWDAAAFgzAABYNQAAWFoAAFh+AABYpQAAWMkAAFjMAABYzgAAWNAAAFjSAABY1AAAWNYAAFjXAABY2gAAWOcAAFj4AABY+gAAWPwAAFj+AABZAAAAWQIAAFkEAABZBgAAWQgAAFkZAABZHAAAWR8AAFkiAABZJQAAWSgAAFkrAABZLgAAWTEAAFkzAABZcgAAWXQAAFl2AABZeAAAWXsAAFl8AABZfQAAWX4AAFl/AABZgQAAWYMAAFmEAABZhQAAWYcAAFmIAABZxwAAWckAAFnLAABZzQAAWdAAAFnRAABZ0gAAWdMAAFnUAABZ1gAAWdgAAFnZAABZ2gAAWdwAAFndAABaHAAAWh4AAFohAABaIwAAWiYAAFonAABaKAAAWikAAFoqAABaLAAAWi4AAFovAABaMAAAWjIAAFozAABaQAAAWkEAAFpCAABaRAAAWoMAAFqFAABahwAAWokAAFqMAABajQAAWo4AAFqPAABakAAAWpIAAFqUAABalQAAWpYAAFqYAABamQAAWtgAAFraAABa3AAAWt4AAFrhAABa4gAAWuMAAFrkAABa5QAAWucAAFrpAABa6gAAWusAAFrtAABa7gAAWy0AAFsvAABbMQAAWzMAAFs2AABbNwAAWzgAAFs5AABbOgAAWzwAAFs+AABbPwAAW0AAAFtCAABbQwAAW4IAAFuEAABbhgAAW4gAAFuLAABbjAAAW40AAFuOAABbjwAAW5EAAFuTAABblAAAW5UAAFuXAABbmAAAW9cAAFvZAABb2wAAW90AAFvgAABb4QAAW+IAAFvjAABb5AAAW+YAAFvoAABb6QAAW+oAAFvsAABb7QAAXBIAAFw2AABcXQAAXIEAAFyEAABchgAAXIgAAFyKAABcjAAAXI4AAFyPAABckgAAXJ8AAFyuAABcsAAAXLIAAFy0AABctgAAXLgAAFy6AABcvAAAXMsAAFzOAABc0QAAXNQAAFzXAABc2gAAXN0AAFzgAABc4gAAXSEAAF0jAABdJQAAXScAAF0qAABdKwAAXSwAAF0tAABdLgAAXTAAAF0yAABdMwAAXTQAAF02AABdNwAAXXYAAF14AABdegAAXXwAAF1/AABdgAAAXYEAAF2CAABdgwAAXYUAAF2HAABdiAAAXYkAAF2LAABdjAAAXcsAAF3NAABdzwAAXdEAAF3UAABd1QAAXdYAAF3XAABd2AAAXdoAAF3cAABd3QAAXd4AAF3gAABd4QAAXiAAAF4iAABeJAAAXiYAAF4pAABeKgAAXisAAF4sAABeLQAAXi8AAF4xAABeMgAAXjMAAF41AABeNgAAXnUAAF53AABeeQAAXnsAAF5+AABefwAAXoAAAF6BAABeggAAXoQAAF6GAABehwAAXogAAF6KAABeiwAAXsoAAF7MAABezgAAXtAAAF7TAABe1AAAXtUAAF7WAABe1wAAXtkAAF7bAABe3AAAXt0AAF7fAABe4AAAXx8AAF8hAABfIwAAXyUAAF8oAABfKQAAXyoAAF8rAABfLAAAXy4AAF8wAABfMQAAXzIAAF80AABfNQAAX4AAAF+jAABfwwAAX+MAAF/lAABf5wAAX+kAAF/rAABf7QAAX+4AAF/vAABf8gAAX/MAAF/1AABf9gAAX/gAAF/6AABf+wAAX/wAAF//AABgAAAAYAUAAGASAABgFwAAYBkAAGAbAABgIAAAYCMAAGAmAABgKAAAYE0AAGBxAABgmAAAYLwAAGC/AABgwQAAYMMAAGDFAABgxwAAYMkAAGDKAABgzQAAYNoAAGDrAABg7QAAYO8AAGDxAABg8wAAYPUAAGD3AABg+QAAYPsAAGEMAABhDwAAYRIAAGEVAABhGAAAYRsAAGEeAABhIQAAYSQAAGEmAABhZQAAYWcAAGFpAABhawAAYW4AAGFvAABhcAAAYXEAAGFyAABhdAAAYXYAAGF3AABheAAAYXoAAGF7AABhugAAYbwAAGG+AABhwAAAYcMAAGHEAABhxQAAYcYAAGHHAABhyQAAYcsAAGHMAABhzQAAYc8AAGHQAABiDwAAYhEAAGIUAABiFgAAYhkAAGIaAABiGwAAYhwAAGIdAABiHwAAYiEAAGIiAABiIwAAYiUAAGImAABiMwAAYjQAAGI1AABiNwAAYnYAAGJ4AABiegAAYnwAAGJ/AABigAAAYoEAAGKCAABigwAAYoUAAGKHAABiiAAAYokAAGKLAABijAAAYssAAGLNAABizwAAYtEAAGLUAABi1QAAYtYAAGLXAABi2AAAYtoAAGLcAABi3QAAYt4AAGLgAABi4QAAYyAAAGMiAABjJAAAYyYAAGMpAABjKgAAYysAAGMsAABjLQAAYy8AAGMxAABjMgAAYzMAAGM1AABjNgAAY3UAAGN3AABjeQAAY3sAAGN+AABjfwAAY4AAAGOBAABjggAAY4QAAGOGAABjhwAAY4gAAGOKAABjiwAAY8oAAGPMAABjzgAAY9AAAGPTAABj1AAAY9UAAGPWAABj1wAAY9kAAGPbAABj3AAAY90AAGPfAABj4AAAZAUAAGQpAABkUAAAZHQAAGR3AABkeQAAZHsAAGR9AABkfwAAZIEAAGSCAABkhQAAZJIAAGShAABkowAAZKUAAGSnAABkqQAAZKsAAGStAABkrwAAZL4AAGTBAABkxAAAZMcAAGTKAABkzQAAZNAAAGTTAABk1QAAZRQAAGUWAABlGQAAZRsAAGUeAABlHwAAZSAAAGUhAABlIgAAZSQAAGUmAABlJwAAZSgAAGUqAABlKwAAZWoAAGVsAABlbgAAZXAAAGVzAABldAAAZXUAAGV2AABldwAAZXkAAGV7AABlfAAAZX0AAGV/AABlgAAAZb8AAGXBAABlwwAAZcUAAGXIAABlyQAAZcoAAGXLAABlzAAAZc4AAGXQAABl0QAAZdIAAGXUAABl1QAAZhQAAGYWAABmGQAAZhsAAGYeAABmHwAAZiAAAGYhAABmIgAAZiQAAGYmAABmJwAAZigAAGYqAABmKwAAZi0AAGZsAABmbgAAZnAAAGZyAABmdQAAZnYAAGZ3AABmeAAAZnkAAGZ7AABmfQAAZn4AAGZ/AABmgQAAZoIAAGbBAABmwwAAZsUAAGbHAABmygAAZssAAGbMAABmzQAAZs4AAGbQAABm0gAAZtMAAGbUAABm1gAAZtcAAGcWAABnGAAAZxoAAGccAABnHwAAZyAAAGchAABnIgAAZyMAAGclAABnJwAAZygAAGcpAABnKwAAZywAAGd3AABnmgAAZ7oAAGfaAABn3AAAZ94AAGfgAABn4gAAZ+QAAGflAABn5gAAZ+kAAGfqAABn7AAAZ+0AAGfvAABn8QAAZ/IAAGfzAABn9gAAZ/cAAGf8AABoCQAAaA4AAGgQAABoEgAAaBcAAGgaAABoHQAAaB8AAGhEAABoaAAAaI8AAGizAABotgAAaLgAAGi6AABovAAAaL4AAGjAAABowQAAaMQAAGjRAABo4gAAaOQAAGjmAABo6AAAaOoAAGjsAABo7gAAaPAAAGjyAABpAwAAaQYAAGkJAABpDAAAaQ8AAGkSAABpFQAAaRgAAGkbAABpHQAAaVwAAGleAABpYAAAaWIAAGllAABpZgAAaWcAAGloAABpaQAAaWsAAGltAABpbgAAaW8AAGlxAABpcgAAabEAAGmzAABptQAAabcAAGm6AABpuwAAabwAAGm9AABpvgAAacAAAGnCAABpwwAAacQAAGnGAABpxwAAagYAAGoIAABqCwAAag0AAGoQAABqEQAAahIAAGoTAABqFAAAahYAAGoYAABqGQAAahoAAGocAABqHQAAaioAAGorAABqLAAAai4AAGptAABqbwAAanEAAGpzAABqdgAAancAAGp4AABqeQAAanoAAGp8AABqfgAAan8AAGqAAABqggAAaoMAAGrCAABqxAAAasYAAGrIAABqywAAaswAAGrNAABqzgAAas8AAGrRAABq0wAAatQAAGrVAABq1wAAatgAAGsXAABrGQAAaxsAAGsdAABrIAAAayEAAGsiAABrIwAAayQAAGsmAABrKAAAaykAAGsqAABrLAAAay0AAGtsAABrbgAAa3AAAGtyAABrdQAAa3YAAGt3AABreAAAa3kAAGt7AABrfQAAa34AAGt/AABrgQAAa4IAAGvBAABrwwAAa8UAAGvHAABrygAAa8sAAGvMAABrzQAAa84AAGvQAABr0gAAa9MAAGvUAABr1gAAa9cAAGv8AABsIAAAbEcAAGxrAABsbgAAbHAAAGxyAABsdAAAbHYAAGx4AABseQAAbHwAAGyJAABsmAAAbJoAAGycAABsngAAbKAAAGyiAABspAAAbKYAAGy1AABsuAAAbLsAAGy+AABswQAAbMQAAGzHAABsygAAbMwAAG0LAABtDQAAbQ8AAG0RAABtFAAAbRUAAG0WAABtFwAAbRgAAG0aAABtHAAAbR0AAG0eAABtIAAAbSEAAG1gAABtYgAAbWQAAG1mAABtaQAAbWoAAG1rAABtbAAAbW0AAG1vAABtcQAAbXIAAG1zAABtdQAAbXYAAG21AABttwAAbbkAAG27AABtvgAAbb8AAG3AAABtwQAAbcIAAG3EAABtxgAAbccAAG3IAABtygAAbcsAAG4KAABuDAAAbg4AAG4QAABuEwAAbhQAAG4VAABuFgAAbhcAAG4ZAABuGwAAbhwAAG4dAABuHwAAbiAAAG5fAABuYQAAbmMAAG5lAABuaAAAbmkAAG5qAABuawAAbmwAAG5uAABucAAAbnEAAG5yAABudAAAbnUAAG60AAButgAAbrgAAG66AABuvQAAbr4AAG6/AABuwAAAbsEAAG7DAABuxQAAbsYAAG7HAABuyQAAbsoAAG8JAABvCwAAbw0AAG8PAABvEgAAbxMAAG8UAABvFQAAbxYAAG8YAABvGgAAbxsAAG8cAABvHgAAbx8AAG9qAABvjQAAb60AAG/NAABvzwAAb9EAAG/TAABv1QAAb9cAAG/YAABv2QAAb9wAAG/dAABv3wAAb+AAAG/iAABv5AAAb+UAAG/mAABv6QAAb+oAAG/zAABwAAAAcAUAAHAHAABwCQAAcA4AAHARAABwFAAAcBYAAHA7AABwXwAAcIYAAHCqAABwrQAAcK8AAHCxAABwswAAcLUAAHC3AABwuAAAcLsAAHDIAABw2QAAcNsAAHDdAABw3wAAcOEAAHDjAABw5QAAcOcAAHDpAABw+gAAcP0AAHEAAABxAwAAcQYAAHEJAABxDAAAcQ8AAHESAABxFAAAcVMAAHFVAABxVwAAcVkAAHFcAABxXQAAcV4AAHFfAABxYAAAcWIAAHFkAABxZQAAcWYAAHFoAABxaQAAcagAAHGqAABxrAAAca4AAHGxAABxsgAAcbMAAHG0AABxtQAAcbcAAHG5AABxugAAcbsAAHG9AABxvgAAcf0AAHH/AAByAgAAcgQAAHIHAAByCAAAcgkAAHIKAAByCwAAcg0AAHIPAAByEAAAchEAAHITAAByFAAAciEAAHIiAAByIwAAciUAAHJkAAByZgAAcmgAAHJqAABybQAAcm4AAHJvAABycAAAcnEAAHJzAABydQAAcnYAAHJ3AAByeQAAcnoAAHK5AAByuwAAcr0AAHK/AABywgAAcsMAAHLEAAByxQAAcsYAAHLIAAByygAAcssAAHLMAAByzgAAcs8AAHMOAABzEAAAcxIAAHMUAABzFwAAcxgAAHMZAABzGgAAcxsAAHMdAABzHwAAcyAAAHMhAABzIwAAcyQAAHNjAABzZQAAc2cAAHNpAABzbAAAc20AAHNuAABzbwAAc3AAAHNyAABzdAAAc3UAAHN2AABzeAAAc3kAAHO4AABzugAAc7wAAHO+AABzwQAAc8IAAHPDAABzxAAAc8UAAHPHAABzyQAAc8oAAHPLAABzzQAAc84AAHPzAAB0FwAAdD4AAHRiAAB0ZQAAdGcAAHRpAAB0awAAdG0AAHRvAAB0cAAAdHMAAHSAAAB0jwAAdJEAAHSTAAB0lQAAdJcAAHSZAAB0mwAAdJ0AAHSsAAB0rwAAdLIAAHS1AAB0uAAAdLsAAHS+AAB0wQAAdMMAAHUCAAB1BAAAdQcAAHUJAAB1DAAAdQ0AAHUOAAB1DwAAdRAAAHUSAAB1FAAAdRUAAHUWAAB1GAAAdRkAAHVYAAB1WgAAdVwAAHVeAAB1YQAAdWIAAHVjAAB1ZAAAdWUAAHVnAAB1aQAAdWoAAHVrAAB1bQAAdW4AAHWtAAB1rwAAdbEAAHWzAAB1tgAAdbcAAHW4AAB1uQAAdboAAHW8AAB1vgAAdb8AAHXAAAB1wgAAdcMAAHYCAAB2BAAAdgcAAHYJAAB2DAAAdg0AAHYOAAB2DwAAdhAAAHYSAAB2FAAAdhUAAHYWAAB2GAAAdhkAAHZYAAB2WgAAdlwAAHZeAAB2YQAAdmIAAHZjAAB2ZAAAdmUAAHZnAAB2aQAAdmoAAHZrAAB2bQAAdm4AAHatAAB2rwAAdrEAAHazAAB2tgAAdrcAAHa4AAB2uQAAdroAAHa8AAB2vgAAdr8AAHbAAAB2wgAAdsMAAHcCAAB3BAAAdwYAAHcIAAB3CwAAdwwAAHcNAAB3DgAAdw8AAHcRAAB3EwAAdxQAAHcVAAB3FwAAdxgAAHdjAAB3hgAAd6YAAHfGAAB3yAAAd8oAAHfMAAB3zgAAd9AAAHfRAAB30gAAd9UAAHfWAAB32AAAd9kAAHfbAAB33QAAd94AAHffAAB34gAAd+MAAHfoAAB39QAAd/oAAHf8AAB3/gAAeAMAAHgGAAB4CQAAeAsAAHgwAAB4VAAAeHsAAHifAAB4ogAAeKQAAHimAAB4qAAAeKoAAHisAAB4rQAAeLAAAHi9AAB4zgAAeNAAAHjSAAB41AAAeNYAAHjYAAB42gAAeNwAAHjeAAB47wAAePIAAHj1AAB4+AAAePsAAHj+AAB5AQAAeQQAAHkHAAB5CQAAeUgAAHlKAAB5TAAAeU4AAHlRAAB5UgAAeVMAAHlUAAB5VQAAeVcAAHlZAAB5WgAAeVsAAHldAAB5XgAAeZ0AAHmfAAB5oQAAeaMAAHmmAAB5pwAAeagAAHmpAAB5qgAAeawAAHmuAAB5rwAAebAAAHmyAAB5swAAefIAAHn0AAB59wAAefkAAHn8AAB5/QAAef4AAHn/AAB6AAAAegIAAHoEAAB6BQAAegYAAHoIAAB6CQAAehYAAHoXAAB6GAAAehoAAHpZAAB6WwAAel0AAHpfAAB6YgAAemMAAHpkAAB6ZQAAemYAAHpoAAB6agAAemsAAHpsAAB6bgAAem8AAHquAAB6sAAAerIAAHq0AAB6twAAergAAHq5AAB6ugAAersAAHq9AAB6vwAAesAAAHrBAAB6wwAAesQAAHsDAAB7BQAAewcAAHsJAAB7DAAAew0AAHsOAAB7DwAAexAAAHsSAAB7FAAAexUAAHsWAAB7GAAAexkAAHtYAAB7WgAAe1wAAHteAAB7YQAAe2IAAHtjAAB7ZAAAe2UAAHtnAAB7aQAAe2oAAHtrAAB7bQAAe24AAHutAAB7rwAAe7EAAHuzAAB7tgAAe7cAAHu4AAB7uQAAe7oAAHu8AAB7vgAAe78AAHvAAAB7wgAAe8MAAHvoAAB8DAAAfDMAAHxXAAB8WgAAfFwAAHxeAAB8YAAAfGIAAHxkAAB8ZQAAfGgAAHx1AAB8hAAAfIYAAHyIAAB8igAAfIwAAHyOAAB8kAAAfJIAAHyhAAB8pAAAfKcAAHyqAAB8rQAAfLAAAHyzAAB8tgAAfLgAAHz3AAB8+QAAfPsAAHz9AAB9AAAAfQEAAH0CAAB9AwAAfQQAAH0GAAB9CAAAfQkAAH0KAAB9DAAAfQ0AAH1MAAB9TgAAfVAAAH1SAAB9VQAAfVYAAH1XAAB9WAAAfVkAAH1bAAB9XQAAfV4AAH1fAAB9YQAAfWIAAH2hAAB9owAAfaUAAH2nAAB9qgAAfasAAH2sAAB9rQAAfa4AAH2wAAB9sgAAfbMAAH20AAB9tgAAfbcAAH32AAB9+AAAffsAAH39AAB+AAAAfgEAAH4CAAB+AwAAfgQAAH4GAAB+CAAAfgkAAH4KAAB+DAAAfg0AAH4QAAB+TwAAflEAAH5TAAB+VQAAflgAAH5ZAAB+WgAAflsAAH5cAAB+XgAAfmAAAH5hAAB+YgAAfmQAAH5lAAB+pAAAfqYAAH6oAAB+qgAAfq0AAH6uAAB+rwAAfrAAAH6xAAB+swAAfrUAAH62AAB+twAAfrkAAH66AAB++QAAfvsAAH79AAB+/wAAfwIAAH8DAAB/BAAAfwUAAH8GAAB/CAAAfwoAAH8LAAB/DAAAfw4AAH8PAAB/WgAAf30AAH+dAAB/vQAAf78AAH/BAAB/wwAAf8UAAH/HAAB/yAAAf8kAAH/MAAB/zQAAf88AAH/QAAB/0gAAf9QAAH/VAAB/1gAAf9kAAH/aAAB/3wAAf+wAAH/xAAB/8wAAf/UAAH/6AAB//QAAgAAAAIACAACAJwAAgEsAAIByAACAlgAAgJkAAICbAACAnQAAgJ8AAIChAACAowAAgKQAAICnAACAtAAAgMUAAIDHAACAyQAAgMsAAIDNAACAzwAAgNEAAIDTAACA1QAAgOYAAIDpAACA7AAAgO8AAIDyAACA9QAAgPgAAID7AACA/gAAgQAAAIE/AACBQQAAgUMAAIFFAACBSAAAgUkAAIFKAACBSwAAgUwAAIFOAACBUAAAgVEAAIFSAACBVAAAgVUAAIGUAACBlgAAgZgAAIGaAACBnQAAgZ4AAIGfAACBoAAAgaEAAIGjAACBpQAAgaYAAIGnAACBqQAAgaoAAIHpAACB6wAAge4AAIHwAACB8wAAgfQAAIH1AACB9gAAgfcAAIH5AACB+wAAgfwAAIH9AACB/wAAggAAAIINAACCDgAAgg8AAIIRAACCUAAAglIAAIJUAACCVgAAglkAAIJaAACCWwAAglwAAIJdAACCXwAAgmEAAIJiAACCYwAAgmUAAIJmAACCpQAAgqcAAIKpAACCqwAAgq4AAIKvAACCsAAAgrEAAIKyAACCtAAAgrYAAIK3AACCuAAAgroAAIK7AACC+gAAgvwAAIL+AACDAAAAgwMAAIMEAACDBQAAgwYAAIMHAACDCQAAgwsAAIMMAACDDQAAgw8AAIMQAACDTwAAg1EAAINTAACDVQAAg1gAAINZAACDWgAAg1sAAINcAACDXgAAg2AAAINhAACDYgAAg2QAAINlAACDpAAAg6YAAIOoAACDqgAAg60AAIOuAACDrwAAg7AAAIOxAACDswAAg7UAAIO2AACDtwAAg7kAAIO6AACD3wAAhAMAAIQqAACETgAAhFEAAIRTAACEVQAAhFcAAIRZAACEWwAAhFwAAIRfAACEbAAAhHsAAIR9AACEfwAAhIEAAISDAACEhQAAhIcAAISJAACEmAAAhJsAAISeAACEoQAAhKQAAISnAACEqgAAhK0AAISvAACE7gAAhPAAAITyAACE9AAAhPcAAIT4AACE+QAAhPoAAIT7AACE/QAAhP8AAIUAAACFAQAAhQMAAIUEAACFQwAAhUUAAIVHAACFSQAAhUwAAIVNAACFTgAAhU8AAIVQAACFUgAAhVQAAIVVAACFVgAAhVgAAIVZAACFmAAAhZoAAIWcAACFngAAhaEAAIWiAACFowAAhaQAAIWlAACFpwAAhakAAIWqAACFqwAAha0AAIWuAACF7QAAhe8AAIXxAACF8wAAhfYAAIX3AACF+AAAhfkAAIX6AACF/AAAhf4AAIX/AACGAAAAhgIAAIYDAACGQgAAhkQAAIZGAACGSAAAhksAAIZMAACGTQAAhk4AAIZPAACGUQAAhlMAAIZUAACGVQAAhlcAAIZYAACGlwAAhpkAAIabAACGnQAAhqAAAIahAACGogAAhqMAAIakAACGpgAAhqgAAIapAACGqgAAhqwAAIatAACG7AAAhu4AAIbwAACG8gAAhvUAAIb2AACG9wAAhvgAAIb5AACG+wAAhv0AAIb+AACG/wAAhwEAAIcCAACHDQAAhxYAAIcXAACHGQAAhyIAAIctAACHPAAAh0cAAIdVAACHagAAh34AAIeVAACHpwAAh+YAAIfoAACH6gAAh+wAAIfuAACH7wAAh/AAAIfxAACH8gAAh/QAAIf2AACH9wAAh/gAAIf6AACH+wAAiDoAAIg8AACIPgAAiEAAAIhCAACIQwAAiEQAAIhFAACIRgAAiEgAAIhKAACISwAAiEwAAIhOAACITwAAiI4AAIiQAACIkwAAiJUAAIiXAACImAAAiJkAAIiaAACImwAAiJ0AAIifAACIoAAAiKEAAIijAACIpAAAiO8AAIkSAACJMgAAiVIAAIlUAACJVgAAiVgAAIlaAACJXAAAiV0AAIleAACJYQAAiWIAAIlkAACJZQAAiWcAAIlpAACJagAAiWsAAIluAACJbwAAiXQAAImBAACJhgAAiYgAAImKAACJjwAAiZIAAImVAACJlwAAibwAAIngAACKBwAAiisAAIouAACKMAAAijIAAIo0AACKNgAAijgAAIo5AACKPAAAikkAAIpaAACKXAAAil4AAIpgAACKYgAAimQAAIpmAACKaAAAimoAAIp7AACKfgAAioEAAIqEAACKhwAAiooAAIqNAACKkAAAipMAAIqVAACK1AAAitYAAIrYAACK2gAAit0AAIreAACK3wAAiuAAAIrhAACK4wAAiuUAAIrmAACK5wAAiukAAIrqAACLKQAAiysAAIstAACLLwAAizIAAIszAACLNAAAizUAAIs2AACLOAAAizoAAIs7AACLPAAAiz4AAIs/AACLfgAAi4AAAIuDAACLhQAAi4gAAIuJAACLigAAi4sAAIuMAACLjgAAi5AAAIuRAACLkgAAi5QAAIuVAACLogAAi6MAAIukAACLpgAAi+UAAIvnAACL6QAAi+sAAIvuAACL7wAAi/AAAIvxAACL8gAAi/QAAIv2AACL9wAAi/gAAIv6AACL+wAAjDoAAIw8AACMPgAAjEAAAIxDAACMRAAAjEUAAIxGAACMRwAAjEkAAIxLAACMTAAAjE0AAIxPAACMUAAAjI8AAIyRAACMkwAAjJUAAIyYAACMmQAAjJoAAIybAACMnAAAjJ4AAIygAACMoQAAjKIAAIykAACMpQAAjOQAAIzmAACM6AAAjOoAAIztAACM7gAAjO8AAIzwAACM8QAAjPMAAIz1AACM9gAAjPcAAIz5AACM+gAAjTkAAI07AACNPQAAjT8AAI1CAACNQwAAjUQAAI1FAACNRgAAjUgAAI1KAACNSwAAjUwAAI1OAACNTwAAjXQAAI2YAACNvwAAjeMAAI3mAACN6AAAjeoAAI3sAACN7gAAjfAAAI3xAACN9AAAjgEAAI4QAACOEgAAjhQAAI4WAACOGAAAjhoAAI4cAACOHgAAji0AAI4wAACOMwAAjjYAAI45AACOPAAAjj8AAI5CAACORAAAjoMAAI6FAACOiAAAjooAAI6NAACOjgAAjo8AAI6QAACOkQAAjpMAAI6VAACOlgAAjpcAAI6ZAACOmgAAjp4AAI7dAACO3wAAjuEAAI7jAACO5gAAjucAAI7oAACO6QAAjuoAAI7sAACO7gAAju8AAI7wAACO8gAAjvMAAI8yAACPNAAAjzYAAI84AACPOwAAjzwAAI89AACPPgAAjz8AAI9BAACPQwAAj0QAAI9FAACPRwAAj0gAAI+HAACPiQAAj4wAAI+OAACPkQAAj5IAAI+TAACPlAAAj5UAAI+XAACPmQAAj5oAAI+bAACPnQAAj54AAI+hAACP4AAAj+IAAI/kAACP5gAAj+kAAI/qAACP6wAAj+wAAI/tAACP7wAAj/EAAI/yAACP8wAAj/UAAI/2AACQNQAAkDcAAJA5AACQOwAAkD4AAJA/AACQQAAAkEEAAJBCAACQRAAAkEYAAJBHAACQSAAAkEoAAJBLAACQigAAkIwAAJCOAACQkAAAkJMAAJCUAACQlQAAkJYAAJCXAACQmQAAkJsAAJCcAACQnQAAkJ8AAJCgAACQ6wAAkQ4AAJEuAACRTgAAkVAAAJFSAACRVAAAkVYAAJFYAACRWQAAkVoAAJFdAACRXgAAkWAAAJFhAACRYwAAkWUAAJFmAACRZwAAkWoAAJFrAACRdAAAkYEAAJGGAACRiAAAkYoAAJGPAACRkgAAkZUAAJGXAACRvAAAkeAAAJIHAACSKwAAki4AAJIwAACSMgAAkjQAAJI2AACSOAAAkjkAAJI8AACSSQAAkloAAJJcAACSXgAAkmAAAJJiAACSZAAAkmYAAJJoAACSagAAknsAAJJ+AACSgQAAkoQAAJKHAACSigAAko0AAJKQAACSkwAAkpUAAJLUAACS1gAAktgAAJLaAACS3QAAkt4AAJLfAACS4AAAkuEAAJLjAACS5QAAkuYAAJLnAACS6QAAkuoAAJMpAACTKwAAky0AAJMvAACTMgAAkzMAAJM0AACTNQAAkzYAAJM4AACTOgAAkzsAAJM8AACTPgAAkz8AAJN+AACTgAAAk4MAAJOFAACTiAAAk4kAAJOKAACTiwAAk4wAAJOOAACTkAAAk5EAAJOSAACTlAAAk5UAAJOiAACTowAAk6QAAJOmAACT5QAAk+cAAJPpAACT6wAAk+4AAJPvAACT8AAAk/EAAJPyAACT9AAAk/YAAJP3AACT+AAAk/oAAJP7AACUOgAAlDwAAJQ+AACUQAAAlEMAAJREAACURQAAlEYAAJRHAACUSQAAlEsAAJRMAACUTQAAlE8AAJRQAACUjwAAlJEAAJSTAACUlQAAlJgAAJSZAACUmgAAlJsAAJScAACUngAAlKAAAJShAACUogAAlKQAAJSlAACU5AAAlOYAAJToAACU6gAAlO0AAJTuAACU7wAAlPAAAJTxAACU8wAAlPUAAJT2AACU9wAAlPkAAJT6AACVOQAAlTsAAJU9AACVPwAAlUIAAJVDAACVRAAAlUUAAJVGAACVSAAAlUoAAJVLAACVTAAAlU4AAJVPAACVdAAAlZgAAJW/AACV4wAAleYAAJXoAACV6gAAlewAAJXuAACV8AAAlfEAAJX0AACWAQAAlhAAAJYSAACWFAAAlhYAAJYYAACWGgAAlhwAAJYeAACWLQAAljAAAJYzAACWNgAAljkAAJY8AACWPwAAlkIAAJZEAACWgwAAloUAAJaIAACWigAAlo0AAJaOAACWjwAAlpAAAJaRAACWkwAAlpUAAJaWAACWlwAAlpkAAJaaAACW2QAAltsAAJbdAACW3wAAluIAAJbjAACW5AAAluUAAJbmAACW6AAAluoAAJbrAACW7AAAlu4AAJbvAACXLgAAlzAAAJcyAACXNAAAlzcAAJc4AACXOQAAlzoAAJc7AACXPQAAlz8AAJdAAACXQQAAl0MAAJdEAACXgwAAl4UAAJeIAACXigAAl40AAJeOAACXjwAAl5AAAJeRAACXkwAAl5UAAJeWAACXlwAAl5kAAJeaAACX2QAAl9sAAJfdAACX3wAAl+IAAJfjAACX5AAAl+UAAJfmAACX6AAAl+oAAJfrAACX7AAAl+4AAJfvAACYLgAAmDAAAJgyAACYNAAAmDcAAJg4AACYOQAAmDoAAJg7AACYPQAAmD8AAJhAAACYQQAAmEMAAJhEAACYgwAAmIUAAJiHAACYiQAAmIwAAJiNAACYjgAAmI8AAJiQAACYkgAAmJQAAJiVAACYlgAAmJgAAJiZAACY5AAAmQcAAJknAACZRwAAmUkAAJlLAACZTQAAmU8AAJlRAACZUgAAmVMAAJlWAACZVwAAmVkAAJlaAACZXAAAmV4AAJlfAACZYAAAmWMAAJlkAACZaQAAmXYAAJl7AACZfQAAmX8AAJmEAACZhwAAmYoAAJmMAACZsQAAmdUAAJn8AACaIAAAmiMAAJolAACaJwAAmikAAJorAACaLQAAmi4AAJoxAACaPgAAmk8AAJpRAACaUwAAmlUAAJpXAACaWQAAmlsAAJpdAACaXwAAmnAAAJpzAACadgAAmnkAAJp8AACafwAAmoIAAJqFAACaiAAAmooAAJrJAACaywAAms0AAJrPAACa0gAAmtMAAJrUAACa1QAAmtYAAJrYAACa2gAAmtsAAJrcAACa3gAAmt8AAJseAACbIAAAmyIAAJskAACbJwAAmygAAJspAACbKgAAmysAAJstAACbLwAAmzAAAJsxAACbMwAAmzQAAJtzAACbdQAAm3gAAJt6AACbfQAAm34AAJt/AACbgAAAm4EAAJuDAACbhQAAm4YAAJuHAACbiQAAm4oAAJuXAACbmAAAm5kAAJubAACb2gAAm9wAAJveAACb4AAAm+MAAJvkAACb5QAAm+YAAJvnAACb6QAAm+sAAJvsAACb7QAAm+8AAJvwAACcLwAAnDEAAJwzAACcNQAAnDgAAJw5AACcOgAAnDsAAJw8AACcPgAAnEAAAJxBAACcQgAAnEQAAJxFAACchAAAnIYAAJyIAACcigAAnI0AAJyOAACcjwAAnJAAAJyRAACckwAAnJUAAJyWAACclwAAnJkAAJyaAACc2QAAnNsAAJzdAACc3wAAnOIAAJzjAACc5AAAnOUAAJzmAACc6AAAnOoAAJzrAACc7AAAnO4AAJzvAACdLgAAnTAAAJ0yAACdNAAAnTcAAJ04AACdOQAAnToAAJ07AACdPQAAnT8AAJ1AAACdQQAAnUMAAJ1EAACdaQAAnY0AAJ20AACd2AAAndsAAJ3dAACd3wAAneEAAJ3jAACd5QAAneYAAJ3pAACd9gAAngUAAJ4HAACeCQAAngsAAJ4NAACeDwAAnhEAAJ4TAACeIgAAniUAAJ4oAACeKwAAni4AAJ4xAACeNAAAnjcAAJ45AACeeAAAnnoAAJ58AACefgAAnoEAAJ6CAACegwAAnoQAAJ6FAACehwAAnokAAJ6KAACeiwAAno0AAJ6OAACezQAAns8AAJ7RAACe0wAAntYAAJ7XAACe2AAAntkAAJ7aAACe3AAAnt4AAJ7fAACe4AAAnuIAAJ7jAACfIgAAnyQAAJ8mAACfKAAAnysAAJ8sAACfLQAAny4AAJ8vAACfMQAAnzMAAJ80AACfNQAAnzcAAJ84AACfdwAAn3kAAJ97AACffQAAn4AAAJ+BAACfggAAn4MAAJ+EAACfhgAAn4gAAJ+JAACfigAAn4wAAJ+NAACfzAAAn84AAJ/QAACf0gAAn9UAAJ/WAACf1wAAn9gAAJ/ZAACf2wAAn90AAJ/eAACf3wAAn+EAAJ/iAACgIQAAoCMAAKAlAACgJwAAoCoAAKArAACgLAAAoC0AAKAuAACgMAAAoDIAAKAzAACgNAAAoDYAAKA3AACgdgAAoHgAAKB6AACgfAAAoH8AAKCAAACggQAAoIIAAKCDAACghQAAoIcAAKCIAACgiQAAoIsAAKCMAACg1wAAoPoAAKEaAAChOgAAoTwAAKE+AAChQAAAoUIAAKFEAAChRQAAoUYAAKFJAAChSgAAoUwAAKFNAAChTwAAoVEAAKFSAAChUwAAoVYAAKFXAAChXAAAoWkAAKFuAAChcAAAoXIAAKF3AAChegAAoX0AAKF/AAChpAAAocgAAKHvAACiEwAAohYAAKIYAACiGgAAohwAAKIeAACiIAAAoiEAAKIkAACiMQAAokIAAKJEAACiRgAAokgAAKJKAACiTAAAok4AAKJQAACiUgAAomMAAKJmAACiaQAAomwAAKJvAACicgAAonUAAKJ4AACiewAAon0AAKK8AACivgAAosAAAKLCAACixQAAosYAAKLHAACiyAAAoskAAKLLAACizQAAos4AAKLPAACi0QAAotIAAKMRAACjEwAAoxUAAKMXAACjGgAAoxsAAKMcAACjHQAAox4AAKMgAACjIgAAoyMAAKMkAACjJgAAoycAAKNmAACjaAAAo2sAAKNtAACjcAAAo3EAAKNyAACjcwAAo3QAAKN2AACjeAAAo3kAAKN6AACjfAAAo30AAKOKAACjiwAAo4wAAKOOAACjzQAAo88AAKPRAACj0wAAo9YAAKPXAACj2AAAo9kAAKPaAACj3AAAo94AAKPfAACj4AAAo+IAAKPjAACkIgAApCQAAKQmAACkKAAApCsAAKQsAACkLQAApC4AAKQvAACkMQAApDMAAKQ0AACkNQAApDcAAKQ4AACkdwAApHkAAKR7AACkfQAApIAAAKSBAACkggAApIMAAKSEAACkhgAApIgAAKSJAACkigAApIwAAKSNAACkzAAApM4AAKTQAACk0gAApNUAAKTWAACk1wAApNgAAKTZAACk2wAApN0AAKTeAACk3wAApOEAAKTiAAClIQAApSMAAKUlAAClJwAApSoAAKUrAAClLAAApS0AAKUuAAClMAAApTIAAKUzAAClNAAApTYAAKU3AAClXAAApYAAAKWnAAClywAApc4AAKXQAACl0gAApdQAAKXWAACl2AAApdkAAKXcAACl6QAApfgAAKX6AACl/AAApf4AAKYAAACmAgAApgQAAKYGAACmFQAAphgAAKYbAACmHgAApiEAAKYkAACmJwAApioAAKYsAACmawAApm0AAKZwAACmcgAApnUAAKZ2AACmdwAApngAAKZ5AACmewAApn0AAKZ+AACmfwAApoEAAKaCAACmhAAApsMAAKbFAACmxwAApskAAKbMAACmzQAAps4AAKbPAACm0AAAptIAAKbUAACm1QAAptYAAKbYAACm2QAApxgAAKcaAACnHAAApx4AAKchAACnIgAApyMAAKckAACnJQAApycAAKcpAACnKgAApysAAKctAACnLgAAp20AAKdvAACncgAAp3QAAKd3AACneAAAp3kAAKd6AACnewAAp30AAKd/AACngAAAp4EAAKeDAACnhAAAp4cAAKfGAACnyAAAp8oAAKfMAACnzwAAp9AAAKfRAACn0gAAp9MAAKfVAACn1wAAp9gAAKfZAACn2wAAp9wAAKgbAACoHQAAqB8AAKghAACoJAAAqCUAAKgmAACoJwAAqCgAAKgqAACoLAAAqC0AAKguAACoMAAAqDEAAKhwAACocgAAqHQAAKh2AACoeQAAqHoAAKh7AACofAAAqH0AAKh/AACogQAAqIIAAKiDAACohQAAqIYAAKjRAACo9AAAqRQAAKk0AACpNgAAqTgAAKk6AACpPAAAqT4AAKk/AACpQAAAqUMAAKlEAACpRgAAqUcAAKlJAACpSwAAqUwAAKlNAACpUAAAqVEAAKlWAACpYwAAqWgAAKlqAACpbAAAqXEAAKl0AACpdwAAqXkAAKmeAACpwgAAqekAAKoNAACqEAAAqhIAAKoUAACqFgAAqhgAAKoaAACqGwAAqh4AAKorAACqPAAAqj4AAKpAAACqQgAAqkQAAKpGAACqSAAAqkoAAKpMAACqXQAAqmAAAKpjAACqZgAAqmkAAKpsAACqbwAAqnIAAKp1AACqdwAAqrYAAKq4AACqugAAqrwAAKq/AACqwAAAqsEAAKrCAACqwwAAqsUAAKrHAACqyAAAqskAAKrLAACqzAAAqwsAAKsNAACrDwAAqxEAAKsUAACrFQAAqxYAAKsXAACrGAAAqxoAAKscAACrHQAAqx4AAKsgAACrIQAAq2AAAKtiAACrZQAAq2cAAKtqAACrawAAq2wAAKttAACrbgAAq3AAAKtyAACrcwAAq3QAAKt2AACrdwAAq4QAAKuFAACrhgAAq4gAAKvHAACryQAAq8sAAKvNAACr0AAAq9EAAKvSAACr0wAAq9QAAKvWAACr2AAAq9kAAKvaAACr3AAAq90AAKwcAACsHgAArCAAAKwiAACsJQAArCYAAKwnAACsKAAArCkAAKwrAACsLQAArC4AAKwvAACsMQAArDIAAKxxAACscwAArHUAAKx3AACsegAArHsAAKx8AACsfQAArH4AAKyAAACsggAArIMAAKyEAACshgAArIcAAKzGAACsyAAArMoAAKzMAACszwAArNAAAKzRAACs0gAArNMAAKzVAACs1wAArNgAAKzZAACs2wAArNwAAK0bAACtHQAArR8AAK0hAACtJAAArSUAAK0mAACtJwAArSgAAK0qAACtLAAArS0AAK0uAACtMAAArTEAAK1WAACtegAAraEAAK3FAACtyAAArcoAAK3MAACtzgAArdAAAK3SAACt0wAArdYAAK3jAACt8gAArfQAAK32AACt+AAArfoAAK38AACt/gAArgAAAK4PAACuEgAArhUAAK4YAACuGwAArh4AAK4hAACuJAAAriYAAK5lAACuZwAArmoAAK5sAACubwAArnAAAK5xAACucgAArnMAAK51AACudwAArngAAK55AACuewAArnwAAK67AACuvQAArr8AAK7BAACuxAAArsUAAK7GAACuxwAArsgAAK7KAACuzAAArs0AAK7OAACu0AAArtEAAK8QAACvEgAArxQAAK8WAACvGQAArxoAAK8bAACvHAAArx0AAK8fAACvIQAAryIAAK8jAACvJQAAryYAAK9lAACvZwAAr2oAAK9sAACvbwAAr3AAAK9xAACvcgAAr3MAAK91AACvdwAAr3gAAK95AACvewAAr3wAAK+7AACvvQAAr78AAK/BAACvxAAAr8UAAK/GAACvxwAAr8gAAK/KAACvzAAAr80AAK/OAACv0AAAr9EAALAQAACwEgAAsBQAALAWAACwGQAAsBoAALAbAACwHAAAsB0AALAfAACwIQAAsCIAALAjAACwJQAAsCYAALBlAACwZwAAsGkAALBrAACwbgAAsG8AALBwAACwcQAAsHIAALB0AACwdgAAsHcAALB4AACwegAAsHsAALDGAACw6QAAsQkAALEpAACxKwAAsS0AALEvAACxMQAAsTMAALE0AACxNQAAsTgAALE5AACxOwAAsTwAALE+AACxQAAAsUEAALFCAACxRQAAsUYAALFLAACxWAAAsV0AALFfAACxYQAAsWYAALFpAACxbAAAsW4AALGTAACxtwAAsd4AALICAACyBQAAsgcAALIJAACyCwAAsg0AALIPAACyEAAAshMAALIgAACyMQAAsjMAALI1AACyNwAAsjkAALI7AACyPQAAsj8AALJBAACyUgAAslUAALJYAACyWwAAsl4AALJhAACyZAAAsmcAALJqAACybAAAsqsAALKtAACyrwAAsrEAALK0AACytQAAsrYAALK3AACyuAAAsroAALK8AACyvQAAsr4AALLAAACywQAAswAAALMCAACzBAAAswYAALMJAACzCgAAswsAALMMAACzDQAAsw8AALMRAACzEgAAsxMAALMVAACzFgAAs1UAALNXAACzWgAAs1wAALNfAACzYAAAs2EAALNiAACzYwAAs2UAALNnAACzaAAAs2kAALNrAACzbAAAs3kAALN6AACzewAAs30AALO8AACzvgAAs8AAALPCAACzxQAAs8YAALPHAACzyAAAs8kAALPLAACzzQAAs84AALPPAACz0QAAs9IAALQRAAC0EwAAtBUAALQXAAC0GgAAtBsAALQcAAC0HQAAtB4AALQgAAC0IgAAtCMAALQkAAC0JgAAtCcAALRmAAC0aAAAtGoAALRsAAC0bwAAtHAAALRxAAC0cgAAtHMAALR1AAC0dwAAtHgAALR5AAC0ewAAtHwAALS7AAC0vQAAtL8AALTBAAC0xAAAtMUAALTGAAC0xwAAtMgAALTKAAC0zAAAtM0AALTOAAC00AAAtNEAALUQAAC1EgAAtRQAALUWAAC1GQAAtRoAALUbAAC1HAAAtR0AALUfAAC1IQAAtSIAALUjAAC1JQAAtSYAALVLAAC1bwAAtZYAALW6AAC1vQAAtb8AALXBAAC1wwAAtcUAALXHAAC1yAAAtcsAALXYAAC15wAAtekAALXrAAC17QAAte8AALXxAAC18wAAtfUAALYEAAC2BwAAtgoAALYNAAC2EAAAthMAALYWAAC2GQAAthsAALZaAAC2XAAAtl4AALZgAAC2YwAAtmQAALZlAAC2ZgAAtmcAALZpAAC2awAAtmwAALZtAAC2bwAAtnAAALavAAC2sQAAtrMAALa1AAC2uAAAtrkAALa6AAC2uwAAtrwAALa+AAC2wAAAtsEAALbCAAC2xAAAtsUAALcEAAC3BgAAtwgAALcKAAC3DQAAtw4AALcPAAC3EAAAtxEAALcTAAC3FQAAtxYAALcXAAC3GQAAtxoAALdZAAC3WwAAt10AALdfAAC3YgAAt2MAALdkAAC3ZQAAt2YAALdoAAC3agAAt2sAALdsAAC3bgAAt28AALeuAAC3sAAAt7IAALe0AAC3twAAt7gAALe5AAC3ugAAt7sAALe9AAC3vwAAt8AAALfBAAC3wwAAt8QAALgDAAC4BQAAuAcAALgJAAC4DAAAuA0AALgOAAC4DwAAuBAAALgSAAC4FAAAuBUAALgWAAC4GAAAuBkAALhYAAC4WgAAuFwAALheAAC4YQAAuGIAALhjAAC4ZAAAuGUAALhnAAC4aQAAuGoAALhrAAC4bQAAuG4AALi5AAC43AAAuPwAALkcAAC5HgAAuSAAALkiAAC5JAAAuSYAALknAAC5KAAAuSsAALksAAC5LgAAuS8AALkxAAC5MwAAuTQAALk1AAC5OAAAuTkAALk+AAC5SwAAuVAAALlSAAC5VAAAuVkAALlcAAC5XwAAuWEAALmGAAC5qgAAudEAALn1AAC5+AAAufoAALn8AAC5/gAAugAAALoCAAC6AwAAugYAALoTAAC6JAAAuiYAALooAAC6KgAAuiwAALouAAC6MAAAujIAALo0AAC6RQAAukgAALpLAAC6TgAAulEAALpUAAC6VwAAuloAALpdAAC6XwAAup4AALqgAAC6ogAAuqQAALqnAAC6qAAAuqkAALqqAAC6qwAAuq0AALqvAAC6sAAAurEAALqzAAC6tAAAuvMAALr1AAC69wAAuvkAALr8AAC6/QAAuv4AALr/AAC7AAAAuwIAALsEAAC7BQAAuwYAALsIAAC7CQAAu0gAALtKAAC7TQAAu08AALtSAAC7UwAAu1QAALtVAAC7VgAAu1gAALtaAAC7WwAAu1wAALteAAC7XwAAu2wAALttAAC7bgAAu3AAALuvAAC7sQAAu7MAALu1AAC7uAAAu7kAALu6AAC7uwAAu7wAALu+AAC7wAAAu8EAALvCAAC7xAAAu8UAALwEAAC8BgAAvAgAALwKAAC8DQAAvA4AALwPAAC8EAAAvBEAALwTAAC8FQAAvBYAALwXAAC8GQAAvBoAALxZAAC8WwAAvF0AALxfAAC8YgAAvGMAALxkAAC8ZQAAvGYAALxoAAC8agAAvGsAALxsAAC8bgAAvG8AALyuAAC8sAAAvLIAALy0AAC8twAAvLgAALy5AAC8ugAAvLsAALy9AAC8vwAAvMAAALzBAAC8wwAAvMQAAL0DAAC9BQAAvQcAAL0JAAC9DAAAvQ0AAL0OAAC9DwAAvRAAAL0SAAC9FAAAvRUAAL0WAAC9GAAAvRkAAL0+AAC9YgAAvYkAAL2tAAC9sAAAvbIAAL20AAC9tgAAvbgAAL26AAC9uwAAvb4AAL3LAAC92gAAvdwAAL3eAAC94AAAveIAAL3kAAC95gAAvegAAL33AAC9+gAAvf0AAL4AAAC+AwAAvgYAAL4JAAC+DAAAvg4AAL5NAAC+TwAAvlEAAL5TAAC+VgAAvlcAAL5YAAC+WQAAvloAAL5cAAC+XgAAvl8AAL5gAAC+YgAAvmMAAL6iAAC+pAAAvqYAAL6oAAC+qwAAvqwAAL6tAAC+rgAAvq8AAL6xAAC+swAAvrQAAL61AAC+twAAvrgAAL73AAC++QAAvvsAAL79AAC/AAAAvwEAAL8CAAC/AwAAvwQAAL8GAAC/CAAAvwkAAL8KAAC/DAAAvw0AAL9MAAC/TgAAv1EAAL9TAAC/VgAAv1cAAL9YAAC/WQAAv1oAAL9cAAC/XgAAv18AAL9gAAC/YgAAv2MAAL9mAAC/pQAAv6cAAL+pAAC/qwAAv64AAL+vAAC/sAAAv7EAAL+yAAC/tAAAv7YAAL+3AAC/uAAAv7oAAL+7AAC/+gAAv/wAAL/+AADAAAAAwAMAAMAEAADABQAAwAYAAMAHAADACQAAwAsAAMAMAADADQAAwA8AAMAQAADATwAAwFEAAMBTAADAVQAAwFgAAMBZAADAWgAAwFsAAMBcAADAXgAAwGAAAMBhAADAYgAAwGQAAMBlAADAsAAAwNMAAMDzAADBEwAAwRUAAMEXAADBGQAAwRsAAMEdAADBHgAAwR8AAMEiAADBIwAAwSUAAMEmAADBKAAAwSoAAMErAADBLAAAwS8AAMEwAADBNQAAwUIAAMFHAADBSQAAwUsAAMFQAADBUwAAwVYAAMFYAADBfQAAwaEAAMHIAADB7AAAwe8AAMHxAADB8wAAwfUAAMH3AADB+QAAwfoAAMH9AADCCgAAwhsAAMIdAADCHwAAwiEAAMIjAADCJQAAwicAAMIpAADCKwAAwjwAAMI/AADCQgAAwkUAAMJIAADCSwAAwk4AAMJRAADCVAAAwlYAAMKVAADClwAAwpkAAMKbAADCngAAwp8AAMKgAADCoQAAwqIAAMKkAADCpgAAwqcAAMKoAADCqgAAwqsAAMLqAADC7AAAwu4AAMLwAADC8wAAwvQAAML1AADC9gAAwvcAAML5AADC+wAAwvwAAML9AADC/wAAwwAAAMM/AADDQQAAw0QAAMNGAADDSQAAw0oAAMNLAADDTAAAw00AAMNPAADDUQAAw1IAAMNTAADDVQAAw1YAAMNjAADDZAAAw2UAAMNnAADDpgAAw6gAAMOqAADDrAAAw68AAMOwAADDsQAAw7IAAMOzAADDtQAAw7cAAMO4AADDuQAAw7sAAMO8AADD+wAAw/0AAMP/AADEAQAAxAQAAMQFAADEBgAAxAcAAMQIAADECgAAxAwAAMQNAADEDgAAxBAAAMQRAADEUAAAxFIAAMRUAADEVgAAxFkAAMRaAADEWwAAxFwAAMRdAADEXwAAxGEAAMRiAADEYwAAxGUAAMRmAADEpQAAxKcAAMSpAADEqwAAxK4AAMSvAADEsAAAxLEAAMSyAADEtAAAxLYAAMS3AADEuAAAxLoAAMS7AADE+gAAxPwAAMT+AADFAAAAxQMAAMUEAADFBQAAxQYAAMUHAADFCQAAxQsAAMUMAADFDQAAxQ8AAMUQAADFNQAAxVkAAMWAAADFpAAAxacAAMWpAADFqwAAxa0AAMWvAADFsQAAxbIAAMW1AADFwgAAxdEAAMXTAADF1QAAxdcAAMXZAADF2wAAxd0AAMXfAADF7gAAxfEAAMX0AADF9wAAxfoAAMX9AADGAAAAxgMAAMYFAADGRAAAxkYAAMZIAADGSgAAxk0AAMZOAADGTwAAxlAAAMZRAADGUwAAxlUAAMZWAADGVwAAxlkAAMZaAADGmQAAxpsAAMadAADGnwAAxqIAAMajAADGpAAAxqUAAMamAADGqAAAxqoAAMarAADGrAAAxq4AAMavAADG7gAAxvAAAMbyAADG9AAAxvcAAMb4AADG+QAAxvoAAMb7AADG/QAAxv8AAMcAAADHAQAAxwMAAMcEAADHQwAAx0UAAMdIAADHSgAAx00AAMdOAADHTwAAx1AAAMdRAADHUwAAx1UAAMdWAADHVwAAx1kAAMdaAADHnQAAx8EAAMflAADICAAAyC8AAMhPAADIdgAAyJ0AAMi9AADI4QAAyQUAAMkHAADJCgAAyQwAAMkOAADJEAAAyRMAAMkWAADJGAAAyRoAAMkdAADJHwAAySEAAMkkAADJJwAAySgAAMktAADJOgAAyT0AAMk/AADJQgAAyUUAAMlHAADJbAAAyZAAAMm3AADJ2wAAyd4AAMngAADJ4gAAyeQAAMnmAADJ6AAAyekAAMnsAADJ+QAAygwAAMoOAADKEAAAyhIAAMoUAADKFgAAyhgAAMoaAADKHAAAyh4AAMoxAADKNAAAyjcAAMo6AADKPQAAykAAAMpDAADKRgAAykkAAMpMAADKTgAAyo0AAMqPAADKkgAAypQAAMqXAADKmAAAypkAAMqaAADKmwAAyp0AAMqfAADKoAAAyqEAAMqjAADKpAAAyq0AAMquAADKsAAAyu8AAMrxAADK8wAAyvUAAMr4AADK+QAAyvoAAMr7AADK/AAAyv4AAMsAAADLAQAAywIAAMsEAADLBQAAy0QAAMtGAADLSQAAy0sAAMtOAADLTwAAy1AAAMtRAADLUgAAy1QAAMtWAADLVwAAy1gAAMtaAADLWwAAy2QAAMtlAADLZwAAy6YAAMuoAADLqgAAy6wAAMuvAADLsAAAy7EAAMuyAADLswAAy7UAAMu3AADLuAAAy7kAAMu7AADLvAAAy/sAAMv9AADMAAAAzAIAAMwFAADMBgAAzAcAAMwIAADMCQAAzAsAAMwNAADMDgAAzA8AAMwRAADMEgAAzBsAAMwcAADMHgAAzF0AAMxfAADMYQAAzGMAAMxmAADMZwAAzGgAAMxpAADMagAAzGwAAMxuAADMbwAAzHAAAMxyAADMcwAAzLIAAMy0AADMtwAAzLkAAMy8AADMvQAAzL4AAMy/AADMwAAAzMIAAMzEAADMxQAAzMYAAMzIAADMyQAAzNYAAMzXAADM2AAAzNoAAM0ZAADNGwAAzR0AAM0fAADNIgAAzSMAAM0kAADNJQAAzSYAAM0oAADNKgAAzSsAAM0sAADNLgAAzS8AAM1uAADNcAAAzXIAAM10AADNdwAAzXgAAM15AADNegAAzXsAAM19AADNfwAAzYAAAM2BAADNgwAAzYQAAM2RAADNmgAAzZ0AAM2fAADNogAAzaUAAM2uAADNsQAAzbQAAM23AADNugAAzbwAAM3LAADN3QAAzeoAAM41AADOWAAAzngAAM6YAADOmgAAzpwAAM6eAADOoAAAzqMAAM6kAADOpQAAzqgAAM6pAADOqwAAzqwAAM6uAADOsQAAzrIAAM6zAADOtgAAzrcAAM68AADOyQAAzs4AAM7QAADO0gAAztcAAM7aAADO3QAAzt8AAM8EAADPKAAAz08AAM9zAADPdgAAz3gAAM96AADPfAAAz34AAM+AAADPgQAAz4QAAM+RAADPogAAz6QAAM+mAADPqAAAz6oAAM+sAADPrgAAz7AAAM+yAADPwwAAz8YAAM/JAADPzAAAz88AAM/SAADP1QAAz9gAAM/bAADP3QAA0BwAANAeAADQIAAA0CIAANAlAADQJgAA0CcAANAoAADQKQAA0CsAANAtAADQLgAA0C8AANAxAADQMgAA0HEAANBzAADQdQAA0HcAANB6AADQewAA0HwAANB9AADQfgAA0IAAANCCAADQgwAA0IQAANCGAADQhwAA0MYAANDIAADQywAA0M0AANDQAADQ0QAA0NIAANDTAADQ1AAA0NYAANDYAADQ2QAA0NoAANDcAADQ3QAA0OoAANDrAADQ7AAA0O4AANEtAADRLwAA0TEAANEzAADRNgAA0TcAANE4AADROQAA0ToAANE8AADRPgAA0T8AANFAAADRQgAA0UMAANGCAADRhAAA0YYAANGIAADRiwAA0YwAANGNAADRjgAA0Y8AANGRAADRkwAA0ZQAANGVAADRlwAA0ZgAANHXAADR2QAA0dsAANHdAADR4AAA0eEAANHiAADR4wAA0eQAANHmAADR6AAA0ekAANHqAADR7AAA0e0AANIsAADSLgAA0jAAANIyAADSNQAA0jYAANI3AADSOAAA0jkAANI7AADSPQAA0j4AANI/AADSQQAA0kIAANKBAADSgwAA0oUAANKHAADSigAA0osAANKMAADSjQAA0o4AANKQAADSkgAA0pMAANKUAADSlgAA0pcAANK8AADS4AAA0wcAANMrAADTLgAA0zAAANMyAADTNAAA0zYAANM4AADTOQAA0zwAANNJAADTWAAA01oAANNcAADTXgAA02AAANNiAADTZAAA02YAANN1AADTeAAA03sAANN+AADTgQAA04QAANOHAADTigAA04wAANPLAADTzQAA088AANPRAADT1AAA09UAANPWAADT1wAA09gAANPaAADT3AAA090AANPeAADT4AAA0+EAANQgAADUIgAA1CQAANQmAADUKQAA1CoAANQrAADULAAA1C0AANQvAADUMQAA1DIAANQzAADUNQAA1DYAANR1AADUdwAA1HkAANR7AADUfgAA1H8AANSAAADUgQAA1IIAANSEAADUhgAA1IcAANSIAADUigAA1IsAANTKAADUzAAA1M4AANTQAADU0wAA1NQAANTVAADU1gAA1NcAANTZAADU2wAA1NwAANTdAADU3wAA1OAAANUfAADVIQAA1SMAANUlAADVKAAA1SkAANUqAADVKwAA1SwAANUuAADVMAAA1TEAANUyAADVNAAA1TUAANV0AADVdgAA1XgAANV6AADVfQAA1X4AANV/AADVgAAA1YEAANWDAADVhQAA1YYAANWHAADViQAA1YoAANXJAADVywAA1c4AANXQAADV0wAA1dQAANXVAADV1gAA1dcAANXZAADV2wAA1dwAANXdAADV3wAA1eAAANYrAADWTgAA1m4AANaOAADWkAAA1pIAANaUAADWlgAA1pkAANaaAADWmwAA1p4AANafAADWoQAA1qIAANakAADWpgAA1qcAANaoAADWqwAA1qwAANaxAADWvgAA1sMAANbFAADWxwAA1swAANbPAADW0gAA1tQAANb5AADXHQAA10QAANdoAADXawAA120AANdvAADXcQAA13MAANd1AADXdgAA13kAANeGAADXlwAA15kAANebAADXnQAA158AANehAADXowAA16UAANenAADXuAAA17sAANe+AADXwQAA18QAANfHAADXygAA180AANfQAADX0gAA2BEAANgTAADYFQAA2BcAANgaAADYGwAA2BwAANgdAADYHgAA2CAAANgiAADYIwAA2CQAANgmAADYJwAA2GYAANhoAADYagAA2GwAANhvAADYcAAA2HEAANhyAADYcwAA2HUAANh3AADYeAAA2HkAANh7AADYfAAA2LsAANi9AADYwAAA2MIAANjFAADYxgAA2McAANjIAADYyQAA2MsAANjNAADYzgAA2M8AANjRAADY0gAA2N8AANjgAADY4QAA2OMAANkiAADZJAAA2SYAANkoAADZKwAA2SwAANktAADZLgAA2S8AANkxAADZMwAA2TQAANk1AADZNwAA2TgAANl3AADZeQAA2XsAANl9AADZgAAA2YEAANmCAADZgwAA2YQAANmGAADZiAAA2YkAANmKAADZjAAA2Y0AANnMAADZzgAA2dAAANnSAADZ1QAA2dYAANnXAADZ2AAA2dkAANnbAADZ3QAA2d4AANnfAADZ4QAA2eIAANohAADaIwAA2iUAANonAADaKgAA2isAANosAADaLQAA2i4AANowAADaMgAA2jMAANo0AADaNgAA2jcAANp2AADaeAAA2noAANp8AADafwAA2oAAANqBAADaggAA2oMAANqFAADahwAA2ogAANqJAADaiwAA2owAANqxAADa1QAA2vwAANsgAADbIwAA2yUAANsnAADbKQAA2ysAANstAADbLgAA2zEAANs+AADbTQAA208AANtRAADbUwAA21UAANtXAADbWQAA21sAANtqAADbbQAA23AAANtzAADbdgAA23kAANt8AADbfwAA24EAANvAAADbwgAA28QAANvGAADbyQAA28oAANvLAADbzAAA280AANvPAADb0QAA29IAANvTAADb1QAA29YAANwVAADcFwAA3BkAANwbAADcHgAA3B8AANwgAADcIQAA3CIAANwkAADcJgAA3CcAANwoAADcKgAA3CsAANxqAADcbAAA3G4AANxwAADccwAA3HQAANx1AADcdgAA3HcAANx5AADcewAA3HwAANx9AADcfwAA3IAAANy/AADcwQAA3MMAANzFAADcyAAA3MkAANzKAADcywAA3MwAANzOAADc0AAA3NEAANzSAADc1AAA3NUAAN0UAADdFgAA3RgAAN0aAADdHQAA3R4AAN0fAADdIAAA3SEAAN0jAADdJQAA3SYAAN0nAADdKQAA3SoAAN1pAADdawAA3W0AAN1vAADdcgAA3XMAAN10AADddQAA3XYAAN14AADdegAA3XsAAN18AADdfgAA3X8AAN2+AADdwAAA3cMAAN3FAADdyAAA3ckAAN3KAADdywAA3cwAAN3OAADd0AAA3dEAAN3SAADd1AAA3dUAAN4gAADeQwAA3mMAAN6DAADehQAA3ocAAN6JAADeiwAA3o0AAN6OAADejwAA3pIAAN6TAADelQAA3pYAAN6YAADemgAA3psAAN6cAADenwAA3qAAAN6pAADetgAA3rsAAN69AADevwAA3sQAAN7HAADeygAA3swAAN7xAADfFQAA3zwAAN9gAADfYwAA32UAAN9nAADfaQAA32sAAN9tAADfbgAA33EAAN9+AADfjwAA35EAAN+TAADflQAA35cAAN+ZAADfmwAA350AAN+fAADfsAAA37MAAN+2AADfuQAA37wAAN+/AADfwgAA38UAAN/IAADfygAA4AkAAOALAADgDQAA4A8AAOASAADgEwAA4BQAAOAVAADgFgAA4BgAAOAaAADgGwAA4BwAAOAeAADgHwAA4F4AAOBgAADgYgAA4GQAAOBnAADgaAAA4GkAAOBqAADgawAA4G0AAOBvAADgcAAA4HEAAOBzAADgdAAA4LMAAOC1AADguAAA4LoAAOC9AADgvgAA4L8AAODAAADgwQAA4MMAAODFAADgxgAA4McAAODJAADgygAA4NcAAODYAADg2QAA4NsAAOEaAADhHAAA4R4AAOEgAADhIwAA4SQAAOElAADhJgAA4ScAAOEpAADhKwAA4SwAAOEtAADhLwAA4TAAAOFvAADhcQAA4XMAAOF1AADheAAA4XkAAOF6AADhewAA4XwAAOF+AADhgAAA4YEAAOGCAADhhAAA4YUAAOHEAADhxgAA4cgAAOHKAADhzQAA4c4AAOHPAADh0AAA4dEAAOHTAADh1QAA4dYAAOHXAADh2QAA4doAAOIZAADiGwAA4h0AAOIfAADiIgAA4iMAAOIkAADiJQAA4iYAAOIoAADiKgAA4isAAOIsAADiLgAA4i8AAOJuAADicAAA4nIAAOJ0AADidwAA4ngAAOJ5AADiegAA4nsAAOJ9AADifwAA4oAAAOKBAADigwAA4oQAAOKpAADizQAA4vQAAOMYAADjGwAA4x0AAOMfAADjIQAA4yMAAOMlAADjJgAA4ykAAOM2AADjRQAA40cAAONJAADjSwAA400AAONPAADjUQAA41MAAONiAADjZQAA42gAAONrAADjbgAA43EAAON0AADjdwAA43kAAOO4AADjugAA47wAAOO+AADjwQAA48IAAOPDAADjxAAA48UAAOPHAADjyQAA48oAAOPLAADjzQAA484AAOQNAADkDwAA5BEAAOQTAADkFgAA5BcAAOQYAADkGQAA5BoAAOQcAADkHgAA5B8AAOQgAADkIgAA5CMAAORiAADkZAAA5GYAAORoAADkawAA5GwAAORtAADkbgAA5G8AAORxAADkcwAA5HQAAOR1AADkdwAA5HgAAOS3AADkuQAA5LwAAOS+AADkwQAA5MIAAOTDAADkxAAA5MUAAOTHAADkyQAA5MoAAOTLAADkzQAA5M4AAOUNAADlDwAA5REAAOUTAADlFgAA5RcAAOUYAADlGQAA5RoAAOUcAADlHgAA5R8AAOUgAADlIgAA5SMAAOViAADlZAAA5WYAAOVoAADlawAA5WwAAOVtAADlbgAA5W8AAOVxAADlcwAA5XQAAOV1AADldwAA5XgAAOW3AADluQAA5bwAAOW+AADlwQAA5cIAAOXDAADlxAAA5cUAAOXHAADlyQAA5coAAOXLAADlzQAA5c4AAOYZAADmPAAA5lwAAOZ8AADmfgAA5oAAAOaCAADmhAAA5ocAAOaIAADmiQAA5owAAOaNAADmjwAA5pAAAOaSAADmlQAA5pYAAOaXAADmmgAA5psAAOagAADmrQAA5rIAAOa0AADmtgAA5rsAAOa+AADmwQAA5sMAAOboAADnDAAA5zMAAOdXAADnWgAA51wAAOdeAADnYAAA52IAAOdkAADnZQAA52gAAOd1AADnhgAA54gAAOeKAADnjAAA544AAOeQAADnkgAA55QAAOeWAADnpwAA56oAAOetAADnsAAA57MAAOe2AADnuQAA57wAAOe/AADnwQAA6AAAAOgCAADoBAAA6AYAAOgJAADoCgAA6AsAAOgMAADoDQAA6A8AAOgRAADoEgAA6BMAAOgVAADoFgAA6FUAAOhXAADoWQAA6FsAAOheAADoXwAA6GAAAOhhAADoYgAA6GQAAOhmAADoZwAA6GgAAOhqAADoawAA6KoAAOisAADorwAA6LEAAOi0AADotQAA6LYAAOi3AADouAAA6LoAAOi8AADovQAA6L4AAOjAAADowQAA6M4AAOjPAADo0AAA6NIAAOkRAADpEwAA6RUAAOkXAADpGgAA6RsAAOkcAADpHQAA6R4AAOkgAADpIgAA6SMAAOkkAADpJgAA6ScAAOlmAADpaAAA6WoAAOlsAADpbwAA6XAAAOlxAADpcgAA6XMAAOl1AADpdwAA6XgAAOl5AADpewAA6XwAAOm7AADpvQAA6b8AAOnBAADpxAAA6cUAAOnGAADpxwAA6cgAAOnKAADpzAAA6c0AAOnOAADp0AAA6dEAAOoQAADqEgAA6hQAAOoWAADqGQAA6hoAAOobAADqHAAA6h0AAOofAADqIQAA6iIAAOojAADqJQAA6iYAAOplAADqZwAA6mkAAOprAADqbgAA6m8AAOpwAADqcQAA6nIAAOp0AADqdgAA6ncAAOp4AADqegAA6nsAAOqgAADqxAAA6usAAOsPAADrEgAA6xQAAOsWAADrGAAA6xoAAOscAADrHQAA6yAAAOstAADrPAAA6z4AAOtAAADrQgAA60QAAOtGAADrSAAA60oAAOtZAADrXAAA618AAOtiAADrZQAA62gAAOtrAADrbgAA63AAAOuvAADrsQAA67MAAOu1AADruAAA67kAAOu6AADruwAA67wAAOu+AADrwAAA68EAAOvCAADrxAAA68UAAOwEAADsBgAA7AgAAOwKAADsDQAA7A4AAOwPAADsEAAA7BEAAOwTAADsFQAA7BYAAOwXAADsGQAA7BoAAOxZAADsWwAA7F0AAOxfAADsYgAA7GMAAOxkAADsZQAA7GYAAOxoAADsagAA7GsAAOxsAADsbgAA7G8AAOyuAADssAAA7LMAAOy1AADsuAAA7LkAAOy6AADsuwAA7LwAAOy+AADswAAA7MEAAOzCAADsxAAA7MUAAO0IAADtLAAA7VAAAO1zAADtmgAA7boAAO3hAADuCAAA7igAAO5MAADucAAA7nIAAO51AADudwAA7nkAAO57AADufgAA7oEAAO6DAADuhQAA7ogAAO6KAADujAAA7o8AAO6SAADukwAA7pwAAO6pAADurAAA7q4AAO6xAADutAAA7rYAAO7bAADu/wAA7yYAAO9KAADvTQAA708AAO9RAADvUwAA71UAAO9XAADvWAAA71sAAO9oAADvewAA730AAO9/AADvgQAA74MAAO+FAADvhwAA74kAAO+LAADvjQAA76AAAO+jAADvpgAA76kAAO+sAADvrwAA77IAAO+1AADvuAAA77sAAO+9AADv/AAA7/4AAPABAADwAwAA8AYAAPAHAADwCAAA8AkAAPAKAADwDAAA8A4AAPAPAADwEAAA8BIAAPATAADwHAAA8B0AAPAfAADwXgAA8GAAAPBjAADwZQAA8GgAAPBpAADwagAA8GsAAPBsAADwbgAA8HAAAPBxAADwcgAA8HQAAPB1AADwgwAA8MIAAPDEAADwxwAA8MkAAPDMAADwzQAA8M4AAPDPAADw0AAA8NIAAPDUAADw1QAA8NYAAPDYAADw2QAA8OIAAPDjAADw5QAA8SQAAPEmAADxKAAA8SoAAPEtAADxLgAA8S8AAPEwAADxMQAA8TMAAPE1AADxNgAA8TcAAPE5AADxOgAA8XkAAPF7AADxfgAA8YAAAPGDAADxhAAA8YUAAPGGAADxhwAA8YkAAPGLAADxjAAA8Y0AAPGPAADxkAAA8ZkAAPGaAADxnAAA8dsAAPHdAADx3wAA8eEAAPHkAADx5QAA8eYAAPHnAADx6AAA8eoAAPHsAADx7QAA8e4AAPHwAADx8QAA8jAAAPIyAADyNQAA8jcAAPI6AADyOwAA8jwAAPI9AADyPgAA8kAAAPJCAADyQwAA8kQAAPJGAADyRwAA8lQAAPJVAADyVgAA8lgAAPKXAADymQAA8psAAPKdAADyoAAA8qEAAPKiAADyowAA8qQAAPKmAADyqAAA8qkAAPKqAADyrAAA8q0AAPLsAADy7gAA8vAAAPLyAADy9QAA8vYAAPL3AADy+AAA8vkAAPL7AADy/QAA8v4AAPL/AADzAQAA8wIAAPMPAADzSAAA80sAAPNOAADzUQAA81QAAPNXAADzWgAA810AAPNgAADzYwAA82YAAPNpAADzbAAA828AAPNxAADzdAAA83cAAPN5AADzfAAA838AAPOCAADzhQAA84gAAPOLAADzjgAA85EAAPOUAADzlwAA89AAAPPTAADz1gAA89kAAPPcAADz3wAA8+IAAPPlAADz6AAA8+sAAPPuAADz8QAA8/QAAPP3AADz+gAA8/0AAPQAAAD0AwAA9AYAAPQJAAD0DAAA9A8AAPQSAAD0FQAA9BgAAPQbAAD0HgAA9CEAAPQjAAD0NgAA9FgAAPR3AAD0iwAA9KkAAPTGAAD06gAA9QsAAPUuAAD1SQAA9VwAAPVwAAD1jQAA9ZwAAPWwAAD1xQAA9dcAAPXmAAD2AAAA9hwAAPY6AAD2QwAA9lEAAPZ0AAD2lgAA9uEA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AQI9AAECQAABAkEAAQJCAAECQwABAkQAAQJGAAECSAABAkkAAQJKAAECTAABAk0AAQKMAAECjgABApAAAQKSAAEClQABApYAAQKXAAECmAABApkAAQKbAAECnQABAp4AAQKfAAECoQABAqIAAQLhAAEC4wABAuUAAQLnAAEC6gABAusAAQLsAAEC7QABAu4AAQLwAAEC8gABAvMAAQL0AAEC9gABAvcAAQM2AAEDOAABAzoAAQM8AAEDPwABA0AAAQNBAAEDQgABA0MAAQNFAAEDRwABA0gAAQNJAAEDSwABA0wAAQNxAAEDlQABA7wAAQPgAAED4wABA+UAAQPnAAED6QABA+sAAQPtAAED7gABA/EAAQP+AAEEDQABBA8AAQQRAAEEEwABBBUAAQQXAAEEGQABBBsAAQQqAAEELQABBDAAAQQzAAEENgABBDkAAQQ8AAEEPwABBEEAAQSAAAEEggABBIQAAQSGAAEEiQABBIoAAQSLAAEEjAABBI0AAQSPAAEEkQABBJIAAQSTAAEElQABBJYAAQTVAAEE1wABBNkAAQTbAAEE3gABBN8AAQTgAAEE4QABBOIAAQTkAAEE5gABBOcAAQToAAEE6gABBOsAAQUqAAEFLAABBS4AAQUwAAEFMwABBTQAAQU1AAEFNgABBTcAAQU5AAEFOwABBTwAAQU9AAEFPwABBUAAAQV/AAEFgQABBYMAAQWFAAEFiAABBYkAAQWKAAEFiwABBYwAAQWOAAEFkAABBZEAAQWSAAEFlAABBZUAAQXUAAEF1gABBdgAAQXaAAEF3QABBd4AAQXfAAEF4AABBeEAAQXjAAEF5QABBeYAAQXnAAEF6QABBeoAAQYpAAEGKwABBi0AAQYvAAEGMgABBjMAAQY0AAEGNQABBjYAAQY4AAEGOgABBjsAAQY8AAEGPgABBj8AAQZ+AAEGgAABBoIAAQaEAAEGhwABBogAAQaJAAEGigABBosAAQaNAAEGjwABBpAAAQaRAAEGkwABBpQAAQbfAAEHAgABByIAAQdCAAEHRAABB0YAAQdIAAEHSgABB00AAQdOAAEHTwABB1IAAQdTAAEHVQABB1YAAQdYAAEHWwABB1wAAQddAAEHYAABB2EAAQdmAAEHcwABB3gAAQd6AAEHfAABB4EAAQeEAAEHhwABB4kAAQeuAAEH0gABB/kAAQgdAAEIIAABCCIAAQgkAAEIJgABCCgAAQgqAAEIKwABCC4AAQg7AAEITAABCE4AAQhQAAEIUgABCFQAAQhWAAEIWAABCFoAAQhcAAEIbQABCHAAAQhzAAEIdgABCHkAAQh8AAEIfwABCIIAAQiFAAEIhwABCMYAAQjIAAEIygABCMwAAQjPAAEI0AABCNEAAQjSAAEI0wABCNUAAQjXAAEI2AABCNkAAQjbAAEI3AABCRsAAQkdAAEJHwABCSEAAQkkAAEJJQABCSYAAQknAAEJKAABCSoAAQksAAEJLQABCS4AAQkwAAEJMQABCXAAAQlyAAEJdQABCXcAAQl6AAEJewABCXwAAQl9AAEJfgABCYAAAQmCAAEJgwABCYQAAQmGAAEJhwABCZQAAQmVAAEJlgABCZgAAQnXAAEJ2QABCdsAAQndAAEJ4AABCeEAAQniAAEJ4wABCeQAAQnmAAEJ6AABCekAAQnqAAEJ7AABCe0AAQosAAEKLgABCjAAAQoyAAEKNQABCjYAAQo3AAEKOAABCjkAAQo7AAEKPQABCj4AAQo/AAEKQQABCkIAAQqBAAEKgwABCoUAAQqHAAEKigABCosAAQqMAAEKjQABCo4AAQqQAAEKkgABCpMAAQqUAAEKlgABCpcAAQrWAAEK2AABCtoAAQrcAAEK3wABCuAAAQrhAAEK4gABCuMAAQrlAAEK5wABCugAAQrpAAEK6wABCuwAAQsrAAELLQABCy8AAQsxAAELNAABCzUAAQs2AAELNwABCzgAAQs6AAELPAABCz0AAQs+AAELQAABC0EAAQtmAAELigABC7EAAQvVAAEL2AABC9oAAQvcAAEL3gABC+AAAQviAAEL4wABC+YAAQvzAAEMAgABDAQAAQwGAAEMCAABDAoAAQwMAAEMDgABDBAAAQwfAAEMIgABDCUAAQwoAAEMKwABDC4AAQwxAAEMNAABDDYAAQx1AAEMdwABDHkAAQx7AAEMfgABDH8AAQyAAAEMgQABDIIAAQyEAAEMhgABDIcAAQyIAAEMigABDIsAAQzKAAEMzAABDM4AAQzQAAEM0wABDNQAAQzVAAEM1gABDNcAAQzZAAEM2wABDNwAAQzdAAEM3wABDOAAAQ0fAAENIQABDSMAAQ0lAAENKAABDSkAAQ0qAAENKwABDSwAAQ0uAAENMAABDTEAAQ0yAAENNAABDTUAAQ10AAENdgABDXgAAQ16AAENfQABDX4AAQ1/AAENgAABDYEAAQ2DAAENhQABDYYAAQ2HAAENiQABDYoAAQ3JAAENywABDc0AAQ3PAAEN0gABDdMAAQ3UAAEN1QABDdYAAQ3YAAEN2gABDdsAAQ3cAAEN3gABDd8AAQ4eAAEOIAABDiIAAQ4kAAEOJwABDigAAQ4pAAEOKgABDisAAQ4tAAEOLwABDjAAAQ4xAAEOMwABDjQAAQ5zAAEOdQABDncAAQ55AAEOfAABDn0AAQ5+AAEOfwABDoAAAQ6CAAEOhAABDoUAAQ6GAAEOiAABDokAAQ7UAAEO9wABDxcAAQ83AAEPOQABDzsAAQ89AAEPPwABD0IAAQ9DAAEPRAABD0cAAQ9IAAEPSgABD0sAAQ9NAAEPUAABD1EAAQ9SAAEPVQABD1YAAQ9fAAEPbAABD3EAAQ9zAAEPdQABD3oAAQ99AAEPgAABD4IAAQ+nAAEPywABD/IAARAWAAEQGQABEBsAARAdAAEQHwABECEAARAjAAEQJAABECcAARA0AAEQRQABEEcAARBJAAEQSwABEE0AARBPAAEQUQABEFMAARBVAAEQZgABEGkAARBsAAEQbwABEHIAARB1AAEQeAABEHsAARB+AAEQgAABEL8AARDBAAEQwwABEMUAARDIAAEQyQABEMoAARDLAAEQzAABEM4AARDQAAEQ0QABENIAARDUAAEQ1QABERQAAREWAAERGAABERoAAREdAAERHgABER8AAREgAAERIQABESMAARElAAERJgABEScAAREpAAERKgABEWkAARFrAAERbgABEXAAARFzAAERdAABEXUAARF2AAERdwABEXkAARF7AAERfAABEX0AARF/AAERgAABEY0AARGOAAERjwABEZEAARHQAAER0gABEdQAARHWAAER2QABEdoAARHbAAER3AABEd0AARHfAAER4QABEeIAARHjAAER5QABEeYAARIlAAESJwABEikAARIrAAESLgABEi8AARIwAAESMQABEjIAARI0AAESNgABEjcAARI4AAESOgABEjsAARJ6AAESfAABEn4AARKAAAESgwABEoQAARKFAAEShgABEocAARKJAAESiwABEowAARKNAAESjwABEpAAARLPAAES0QABEtQAARLWAAES2QABEtoAARLbAAES3AABEt0AARLfAAES4QABEuIAARLjAAES5QABEuYAARL8AAETOwABEz0AARM/AAETQQABE0QAARNFAAETRgABE0cAARNIAAETSgABE0wAARNNAAETTgABE1AAARNRAAETdgABE5oAARPBAAET5QABE+gAARPqAAET7AABE+4AARPwAAET8gABE/MAARP2AAEUAwABFBIAARQUAAEUFgABFBgAARQaAAEUHAABFB4AARQgAAEULwABFDIAARQ1AAEUOAABFDsAARQ+AAEUQQABFEQAARRGAAEUhQABFIcAARSJAAEUiwABFI4AARSPAAEUkAABFJEAARSSAAEUlAABFJYAARSXAAEUmAABFJoAARSbAAEU2gABFNwAARTeAAEU4AABFOMAARTkAAEU5QABFOYAARTnAAEU6QABFOsAARTsAAEU7QABFO8AARTwAAEVLwABFTEAARUzAAEVNQABFTgAARU5AAEVOgABFTsAARU8AAEVPgABFUAAARVBAAEVQgABFUQAARVFAAEVhAABFYYAARWIAAEVigABFY0AARWOAAEVjwABFZAAARWRAAEVkwABFZUAARWWAAEVlwABFZkAARWaAAEV2QABFdsAARXdAAEV3wABFeIAARXjAAEV5AABFeUAARXmAAEV6AABFeoAARXrAAEV7AABFe4AARXvAAEWLgABFjAAARYyAAEWNAABFjcAARY4AAEWOQABFjoAARY7AAEWPQABFj8AARZAAAEWQQABFkMAARZEAAEWgwABFoUAARaHAAEWiQABFowAARaNAAEWjgABFo8AARaQAAEWkgABFpQAARaVAAEWlgABFpgAARaZAAEW5AABFwcAARcnAAEXRwABF0kAARdLAAEXTQABF08AARdSAAEXUwABF1QAARdXAAEXWAABF1oAARdbAAEXXQABF2AAARdhAAEXYgABF2UAARdmAAEXawABF3gAARd9AAEXfwABF4EAAReGAAEXiQABF4wAAReOAAEXswABF9cAARf+AAEYIgABGCUAARgnAAEYKQABGCsAARgtAAEYLwABGDAAARgzAAEYQAABGFEAARhTAAEYVQABGFcAARhZAAEYWwABGF0AARhfAAEYYQABGHIAARh1AAEYeAABGHsAARh+AAEYgQABGIQAARiHAAEYigABGIwAARjLAAEYzQABGM8AARjRAAEY1AABGNUAARjWAAEY1wABGNgAARjaAAEY3AABGN0AARjeAAEY4AABGOEAARkgAAEZIgABGSQAARkmAAEZKQABGSoAARkrAAEZLAABGS0AARkvAAEZMQABGTIAARkzAAEZNQABGTYAARl1AAEZdwABGXoAARl8AAEZfwABGYAAARmBAAEZggABGYMAARmFAAEZhwABGYgAARmJAAEZiwABGYwAARmZAAEZmgABGZsAARmdAAEZ3AABGd4AARngAAEZ4gABGeUAARnmAAEZ5wABGegAARnpAAEZ6wABGe0AARnuAAEZ7wABGfEAARnyAAEaMQABGjMAARo1AAEaNwABGjoAARo7AAEaPAABGj0AARo+AAEaQAABGkIAARpDAAEaRAABGkYAARpHAAEahgABGogAARqKAAEajAABGo8AARqQAAEakQABGpIAARqTAAEalQABGpcAARqYAAEamQABGpsAARqcAAEa2wABGt0AARrfAAEa4QABGuQAARrlAAEa5gABGucAARroAAEa6gABGuwAARrtAAEa7gABGvAAARrxAAEbMAABGzIAARs0AAEbNgABGzkAARs6AAEbOwABGzwAARs9AAEbPwABG0EAARtCAAEbQwABG0UAARtGAAEbawABG48AARu2AAEb2gABG90AARvfAAEb4QABG+MAARvlAAEb5wABG+gAARvrAAEb+AABHAcAARwJAAEcCwABHA0AARwPAAEcEQABHBMAARwVAAEcJAABHCcAARwqAAEcLQABHDAAARwzAAEcNgABHDkAARw7AAEcegABHHwAARx+AAEcgAABHIMAARyEAAEchQABHIYAARyHAAEciQABHIsAARyMAAEcjQABHI8AARyQAAEczwABHNEAARzTAAEc1QABHNgAARzZAAEc2gABHNsAARzcAAEc3gABHOAAARzhAAEc4gABHOQAARzlAAEdJAABHSYAAR0oAAEdKgABHS0AAR0uAAEdLwABHTAAAR0xAAEdMwABHTUAAR02AAEdNwABHTkAAR06AAEdeQABHXsAAR19AAEdfwABHYIAAR2DAAEdhAABHYUAAR2GAAEdiAABHYoAAR2LAAEdjAABHY4AAR2PAAEdzgABHdAAAR3SAAEd1AABHdcAAR3YAAEd2QABHdoAAR3bAAEd3QABHd8AAR3gAAEd4QABHeMAAR3kAAEeIwABHiUAAR4nAAEeKQABHiwAAR4tAAEeLgABHi8AAR4wAAEeMgABHjQAAR41AAEeNgABHjgAAR45AAEeeAABHnoAAR58AAEefgABHoEAAR6CAAEegwABHoQAAR6FAAEehwABHokAAR6KAAEeiwABHo0AAR6OAAEe2QABHvwAAR8cAAEfPAABHz4AAR9AAAEfQgABH0QAAR9HAAEfSAABH0kAAR9MAAEfTQABH08AAR9QAAEfUgABH1UAAR9WAAEfVwABH1oAAR9bAAEfYAABH20AAR9yAAEfdAABH3YAAR97AAEffgABH4EAAR+DAAEfqAABH8wAAR/zAAEgFwABIBoAASAcAAEgHgABICAAASAiAAEgJAABICUAASAoAAEgNQABIEYAASBIAAEgSgABIEwAASBOAAEgUAABIFIAASBUAAEgVgABIGcAASBqAAEgbQABIHAAASBzAAEgdgABIHkAASB8AAEgfwABIIEAASDAAAEgwgABIMQAASDGAAEgyQABIMoAASDLAAEgzAABIM0AASDPAAEg0QABINIAASDTAAEg1QABINYAASEVAAEhFwABIRkAASEbAAEhHgABIR8AASEgAAEhIQABISIAASEkAAEhJgABIScAASEoAAEhKgABISsAASFqAAEhbAABIW8AASFxAAEhdAABIXUAASF2AAEhdwABIXgAASF6AAEhfAABIX0AASF+AAEhgAABIYEAASGOAAEhjwABIZAAASGSAAEh0QABIdMAASHVAAEh1wABIdoAASHbAAEh3AABId0AASHeAAEh4AABIeIAASHjAAEh5AABIeYAASHnAAEiJgABIigAASIqAAEiLAABIi8AASIwAAEiMQABIjIAASIzAAEiNQABIjcAASI4AAEiOQABIjsAASI8AAEiewABIn0AASJ/AAEigQABIoQAASKFAAEihgABIocAASKIAAEiigABIowAASKNAAEijgABIpAAASKRAAEi0AABItIAASLUAAEi1gABItkAASLaAAEi2wABItwAASLdAAEi3wABIuEAASLiAAEi4wABIuUAASLmAAEjJQABIycAASMpAAEjKwABIy4AASMvAAEjMAABIzEAASMyAAEjNAABIzYAASM3AAEjOAABIzoAASM7AAEjYAABI4QAASOrAAEjzwABI9IAASPUAAEj1gABI9gAASPaAAEj3AABI90AASPgAAEj7QABI/wAASP+AAEkAAABJAIAASQEAAEkBgABJAgAASQKAAEkGQABJBwAASQfAAEkIgABJCUAASQoAAEkKwABJC4AASQwAAEkbwABJHEAASRzAAEkdQABJHgAASR5AAEkegABJHsAASR8AAEkfgABJIAAASSBAAEkggABJIQAASSFAAEkxAABJMYAASTIAAEkygABJM0AASTOAAEkzwABJNAAASTRAAEk0wABJNUAASTWAAEk1wABJNkAASTaAAElGQABJRsAASUdAAElHwABJSIAASUjAAElJAABJSUAASUmAAElKAABJSoAASUrAAElLAABJS4AASUvAAElbgABJXAAASVyAAEldAABJXcAASV4AAEleQABJXoAASV7AAElfQABJX8AASWAAAElgQABJYMAASWEAAElwwABJcUAASXHAAElyQABJcwAASXNAAElzgABJc8AASXQAAEl0gABJdQAASXVAAEl1gABJdgAASXZAAEmGAABJhoAASYcAAEmHgABJiEAASYiAAEmIwABJiQAASYlAAEmJwABJikAASYqAAEmKwABJi0AASYuAAEmbQABJm8AASZxAAEmcwABJnYAASZ3AAEmeAABJnkAASZ6AAEmfAABJn4AASZ/AAEmgAABJoIAASaDAAEmzgABJvEAAScRAAEnMQABJzMAASc1AAEnNwABJzkAASc8AAEnPQABJz4AASdBAAEnQgABJ0QAASdFAAEnRwABJ0oAASdLAAEnTAABJ08AASdQAAEnWQABJ2YAASdrAAEnbQABJ28AASd0AAEndwABJ3oAASd8AAEnoQABJ8UAASfsAAEoEAABKBMAASgVAAEoFwABKBkAASgbAAEoHQABKB4AASghAAEoLgABKD8AAShBAAEoQwABKEUAAShHAAEoSQABKEsAAShNAAEoTwABKGAAAShjAAEoZgABKGkAAShsAAEobwABKHIAASh1AAEoeAABKHoAASi5AAEouwABKL0AASi/AAEowgABKMMAASjEAAEoxQABKMYAASjIAAEoygABKMsAASjMAAEozgABKM8AASkOAAEpEAABKRIAASkUAAEpFwABKRgAASkZAAEpGgABKRsAASkdAAEpHwABKSAAASkhAAEpIwABKSQAASljAAEpZQABKWgAASlqAAEpbQABKW4AASlvAAEpcAABKXEAASlzAAEpdQABKXYAASl3AAEpeQABKXoAASmHAAEpiAABKYkAASmLAAEpygABKcwAASnOAAEp0AABKdMAASnUAAEp1QABKdYAASnXAAEp2QABKdsAASncAAEp3QABKd8AASngAAEqHwABKiEAASojAAEqJQABKigAASopAAEqKgABKisAASosAAEqLgABKjAAASoxAAEqMgABKjQAASo1AAEqdAABKnYAASp4AAEqegABKn0AASp+AAEqfwABKoAAASqBAAEqgwABKoUAASqGAAEqhwABKokAASqKAAEqyQABKssAASrNAAEqzwABKtIAASrTAAEq1AABKtUAASrWAAEq2AABKtoAASrbAAEq3AABKt4AASrfAAErHgABKyAAASsiAAErJAABKycAASsoAAErKQABKyoAASsrAAErLQABKy8AASswAAErMQABKzMAASs0AAErWQABK30AASukAAEryAABK8sAASvNAAErzwABK9EAASvTAAEr1QABK9YAASvZAAEr5gABK/UAASv3AAEr+QABK/sAASv9AAEr/wABLAEAASwDAAEsEgABLBUAASwYAAEsGwABLB4AASwhAAEsJAABLCcAASwpAAEsaAABLGoAASxsAAEsbgABLHEAASxyAAEscwABLHQAASx1AAEsdwABLHkAASx6AAEsewABLH0AASx+AAEsvQABLL8AASzBAAEswwABLMYAASzHAAEsyAABLMkAASzKAAEszAABLM4AASzPAAEs0AABLNIAASzTAAEtEgABLRQAAS0WAAEtGAABLRsAAS0cAAEtHQABLR4AAS0fAAEtIQABLSMAAS0kAAEtJQABLScAAS0oAAEtZwABLWkAAS1rAAEtbQABLXAAAS1xAAEtcgABLXMAAS10AAEtdgABLXgAAS15AAEtegABLXwAAS19AAEtvAABLb4AAS3AAAEtwgABLcUAAS3GAAEtxwABLcgAAS3JAAEtywABLc0AAS3OAAEtzwABLdEAAS3SAAEuEQABLhMAAS4VAAEuFwABLhoAAS4bAAEuHAABLh0AAS4eAAEuIAABLiIAAS4jAAEuJAABLiYAAS4nAAEuZgABLmgAAS5qAAEubAABLm8AAS5wAAEucQABLnIAAS5zAAEudQABLncAAS54AAEueQABLnsAAS58AAEuxwABLuoAAS8KAAEvKgABLywAAS8uAAEvMAABLzIAAS81AAEvNgABLzcAAS86AAEvOwABLz0AAS8+AAEvQAABL0MAAS9EAAEvRQABL0gAAS9JAAEvTgABL1sAAS9gAAEvYgABL2QAAS9pAAEvbAABL28AAS9xAAEvlgABL7oAAS/hAAEwBQABMAgAATAKAAEwDAABMA4AATAQAAEwEgABMBMAATAWAAEwIwABMDQAATA2AAEwOAABMDoAATA8AAEwPgABMEAAATBCAAEwRAABMFUAATBYAAEwWwABMF4AATBhAAEwZAABMGcAATBqAAEwbQABMG8AATCuAAEwsAABMLIAATC0AAEwtwABMLgAATC5AAEwugABMLsAATC9AAEwvwABMMAAATDBAAEwwwABMMQAATEDAAExBQABMQcAATEJAAExDAABMQ0AATEOAAExDwABMRAAATESAAExFAABMRUAATEWAAExGAABMRkAATFYAAExWgABMV0AATFfAAExYgABMWMAATFkAAExZQABMWYAATFoAAExagABMWsAATFsAAExbgABMW8AATF8AAExfQABMX4AATGAAAExvwABMcEAATHDAAExxQABMcgAATHJAAExygABMcsAATHMAAExzgABMdAAATHRAAEx0gABMdQAATHVAAEyFAABMhYAATIYAAEyGgABMh0AATIeAAEyHwABMiAAATIhAAEyIwABMiUAATImAAEyJwABMikAATIqAAEyaQABMmsAATJtAAEybwABMnIAATJzAAEydAABMnUAATJ2AAEyeAABMnoAATJ7AAEyfAABMn4AATJ/AAEyvgABMsAAATLCAAEyxAABMscAATLIAAEyyQABMsoAATLLAAEyzQABMs8AATLQAAEy0QABMtMAATLUAAEzEwABMxUAATMXAAEzGQABMxwAATMdAAEzHgABMx8AATMgAAEzIgABMyQAATMlAAEzJgABMygAATMpAAEzTgABM3IAATOZAAEzvQABM8AAATPCAAEzxAABM8YAATPIAAEzygABM8sAATPOAAEz2wABM+oAATPsAAEz7gABM/AAATPyAAEz9AABM/YAATP4AAE0BwABNAoAATQNAAE0EAABNBMAATQWAAE0GQABNBwAATQeAAE0XQABNF8AATRhAAE0YwABNGYAATRnAAE0aAABNGkAATRqAAE0bAABNG4AATRvAAE0cAABNHIAATRzAAE0sgABNLQAATS2AAE0uAABNLsAATS8AAE0vQABNL4AATS/AAE0wQABNMMAATTEAAE0xQABNMcAATTIAAE1BwABNQkAATULAAE1DQABNRAAATURAAE1EgABNRMAATUUAAE1FgABNRgAATUZAAE1GgABNRwAATUdAAE1XAABNV4AATVgAAE1YgABNWUAATVmAAE1ZwABNWgAATVpAAE1awABNW0AATVuAAE1bwABNXEAATVyAAE1sQABNbMAATW1AAE1twABNboAATW7AAE1vAABNb0AATW+AAE1wAABNcIAATXDAAE1xAABNcYAATXHAAE2BgABNggAATYKAAE2DAABNg8AATYQAAE2EQABNhIAATYTAAE2FQABNhcAATYYAAE2GQABNhsAATYcAAE2WwABNl0AATZfAAE2YQABNmQAATZlAAE2ZgABNmcAATZoAAE2agABNmwAATZtAAE2bgABNnAAATZxAAE2vAABNt8AATb/AAE3HwABNyEAATcjAAE3JQABNycAATcqAAE3KwABNywAATcvAAE3MAABNzIAATczAAE3NQABNzgAATc5AAE3OgABNz0AATc+AAE3QwABN1AAATdVAAE3VwABN1kAATdeAAE3YQABN2QAATdmAAE3iwABN68AATfWAAE3+gABN/0AATf/AAE4AQABOAMAATgFAAE4BwABOAgAATgLAAE4GAABOCkAATgrAAE4LQABOC8AATgxAAE4MwABODUAATg3AAE4OQABOEoAAThNAAE4UAABOFMAAThWAAE4WQABOFwAAThfAAE4YgABOGQAATijAAE4pQABOKcAATipAAE4rAABOK0AATiuAAE4rwABOLAAATiyAAE4tAABOLUAATi2AAE4uAABOLkAATj4AAE4+gABOPwAATj+AAE5AQABOQIAATkDAAE5BAABOQUAATkHAAE5CQABOQoAATkLAAE5DQABOQ4AATlNAAE5TwABOVIAATlUAAE5VwABOVgAATlZAAE5WgABOVsAATldAAE5XwABOWAAATlhAAE5YwABOWQAATlxAAE5cgABOXMAATl1AAE5tAABObYAATm4AAE5ugABOb0AATm+AAE5vwABOcAAATnBAAE5wwABOcUAATnGAAE5xwABOckAATnKAAE6CQABOgsAAToNAAE6DwABOhIAAToTAAE6FAABOhUAAToWAAE6GAABOhoAATobAAE6HAABOh4AATofAAE6XgABOmAAATpiAAE6ZAABOmcAATpoAAE6aQABOmoAATprAAE6bQABOm8AATpwAAE6cQABOnMAATp0AAE6swABOrUAATq3AAE6uQABOrwAATq9AAE6vgABOr8AATrAAAE6wgABOsQAATrFAAE6xgABOsgAATrJAAE7CAABOwoAATsMAAE7DgABOxEAATsSAAE7EwABOxQAATsVAAE7FwABOxkAATsaAAE7GwABOx0AATseAAE7QwABO2cAATuOAAE7sgABO7UAATu3AAE7uQABO7sAATu9AAE7vwABO8AAATvDAAE70AABO98AATvhAAE74wABO+UAATvnAAE76QABO+sAATvtAAE7/AABO/8AATwCAAE8BQABPAgAATwLAAE8DgABPBEAATwTAAE8UgABPFQAATxWAAE8WAABPFsAATxcAAE8XQABPF4AATxfAAE8YQABPGMAATxkAAE8ZQABPGcAATxoAAE8pwABPKkAATyrAAE8rQABPLAAATyxAAE8sgABPLMAATy0AAE8tgABPLgAATy5AAE8ugABPLwAATy9AAE8/AABPP4AAT0AAAE9AgABPQUAAT0GAAE9BwABPQgAAT0JAAE9CwABPQ0AAT0OAAE9DwABPREAAT0SAAE9UQABPVMAAT1VAAE9VwABPVoAAT1bAAE9XAABPV0AAT1eAAE9YAABPWIAAT1jAAE9ZAABPWYAAT1nAAE9pgABPagAAT2qAAE9rAABPa8AAT2wAAE9sQABPbIAAT2zAAE9tQABPbcAAT24AAE9uQABPbsAAT28AAE9+wABPf0AAT3/AAE+AQABPgQAAT4FAAE+BgABPgcAAT4IAAE+CgABPgwAAT4NAAE+DgABPhAAAT4RAAE+UAABPlIAAT5UAAE+VgABPlkAAT5aAAE+WwABPlwAAT5dAAE+XwABPmEAAT5iAAE+YwABPmUAAT5mAAE+sQABPtQAAT70AAE/FAABPxYAAT8YAAE/GgABPxwAAT8fAAE/IAABPyEAAT8kAAE/JQABPycAAT8oAAE/KgABPy0AAT8uAAE/LwABPzIAAT8zAAE/PAABP0kAAT9OAAE/UAABP1IAAT9XAAE/WgABP10AAT9fAAE/hAABP6gAAT/PAAE/8wABP/YA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AVYAAAFWAgABVgQAAVYHAAFWCAABVgkAAVYKAAFWCwABVg0AAVYPAAFWEAABVhEAAVYTAAFWFAABVlMAAVZVAAFWVwABVlkAAVZcAAFWXQABVl4AAVZfAAFWYAABVmIAAVZkAAFWZQABVmYAAVZoAAFWaQABVrQAAVbXAAFW9wABVxcAAVcZAAFXGwABVx0AAVcfAAFXIgABVyMAAVckAAFXJwABVygAAVcqAAFXKwABVy0AAVcwAAFXMQABVzIAAVc1AAFXNgABVzsAAVdIAAFXTQABV08AAVdRAAFXVgABV1kAAVdcAAFXXgABV4MAAVenAAFXzgABV/IAAVf1AAFX9wABV/kAAVf7AAFX/QABV/8AAVgAAAFYAwABWBAAAVghAAFYIwABWCUAAVgnAAFYKQABWCsAAVgtAAFYLwABWDEAAVhCAAFYRQABWEgAAVhLAAFYTgABWFEAAVhUAAFYVwABWFoAAVhcAAFYmwABWJ0AAVifAAFYoQABWKQAAVilAAFYpgABWKcAAVioAAFYqgABWKwAAVitAAFYrgABWLAAAVixAAFY8AABWPIAAVj0AAFY9gABWPkAAVj6AAFY+wABWPwAAVj9AAFY/wABWQEAAVkCAAFZAwABWQUAAVkGAAFZRQABWUcAAVlKAAFZTAABWU8AAVlQAAFZUQABWVIAAVlTAAFZVQABWVcAAVlYAAFZWQABWVsAAVlcAAFZaQABWWoAAVlrAAFZbQABWawAAVmuAAFZsAABWbIAAVm1AAFZtgABWbcAAVm4AAFZuQABWbsAAVm9AAFZvgABWb8AAVnBAAFZwgABWgEAAVoDAAFaBQABWgcAAVoKAAFaCwABWgwAAVoNAAFaDgABWhAAAVoSAAFaEwABWhQAAVoWAAFaFwABWlYAAVpYAAFaWgABWlwAAVpfAAFaYAABWmEAAVpiAAFaYwABWmUAAVpnAAFaaAABWmkAAVprAAFabAABWqsAAVqtAAFarwABWrEAAVq0AAFatQABWrYAAVq3AAFauAABWroAAVq8AAFavQABWr4AAVrAAAFawQABWwAAAVsCAAFbBAABWwYAAVsJAAFbCgABWwsAAVsMAAFbDQABWw8AAVsRAAFbEgABWxMAAVsVAAFbFgABWzsAAVtfAAFbhgABW6oAAVutAAFbrwABW7EAAVuzAAFbtQABW7cAAVu4AAFbuwABW8gAAVvXAAFb2QABW9sAAVvdAAFb3wABW+EAAVvjAAFb5QABW/QAAVv3AAFb+gABW/0AAVwAAAFcAwABXAYAAVwJAAFcCwABXEoAAVxMAAFcTgABXFAAAVxTAAFcVAABXFUAAVxWAAFcVwABXFkAAVxbAAFcXAABXF0AAVxfAAFcYAABXJ8AAVyhAAFcowABXKUAAVyoAAFcqQABXKoAAVyrAAFcrAABXK4AAVywAAFcsQABXLIAAVy0AAFctQABXPQAAVz2AAFc+AABXPoAAVz9AAFc/gABXP8AAV0AAAFdAQABXQMAAV0FAAFdBgABXQcAAV0JAAFdCgABXUkAAV1LAAFdTQABXU8AAV1SAAFdUwABXVQAAV1VAAFdVgABXVgAAV1aAAFdWwABXVwAAV1eAAFdXwABXZ4AAV2gAAFdogABXaQAAV2nAAFdqAABXakAAV2qAAFdqwABXa0AAV2vAAFdsAABXbEAAV2zAAFdtAABXfMAAV31AAFd9wABXfkAAV38AAFd/QABXf4AAV3/AAFeAAABXgIAAV4EAAFeBQABXgYAAV4IAAFeCQABXkgAAV5KAAFeTAABXk4AAV5RAAFeUgABXlMAAV5UAAFeVQABXlcAAV5ZAAFeWgABXlsAAV5dAAFeXgABXqkAAV7MAAFe7AABXwwAAV8OAAFfEAABXxIAAV8UAAFfFwABXxgAAV8ZAAFfHAABXx0AAV8fAAFfIAABXyIAAV8kAAFfJQABXyYAAV8pAAFfKgABXy8AAV88AAFfQQABX0MAAV9FAAFfSgABX00AAV9QAAFfUgABX3cAAV+bAAFfwgABX+YAAV/pAAFf6wABX+0AAV/vAAFf8QABX/MAAV/0AAFf9wABYAQAAWAVAAFgFwABYBkAAWAbAAFgHQABYB8AAWAhAAFgIwABYCUAAWA2AAFgOQABYDwAAWA/AAFgQgABYEUAAWBIAAFgSwABYE4AAWBQAAFgjwABYJEAAWCTAAFglQABYJgAAWCZAAFgmgABYJsAAWCcAAFgngABYKAAAWChAAFgogABYKQAAWClAAFg5AABYOYAAWDoAAFg6gABYO0AAWDuAAFg7wABYPAAAWDxAAFg8wABYPUAAWD2AAFg9wABYPkAAWD6AAFhOQABYTsAAWE+AAFhQAABYUMAAWFEAAFhRQABYUYAAWFHAAFhSQABYUsAAWFMAAFhTQABYU8AAWFQAAFhXQABYV4AAWFfAAFhYQABYaAAAWGiAAFhpAABYaYAAWGpAAFhqgABYasAAWGsAAFhrQABYa8AAWGxAAFhsgABYbMAAWG1AAFhtgABYfUAAWH3AAFh+QABYfsAAWH+AAFh/wABYgAAAWIBAAFiAgABYgQAAWIGAAFiBwABYggAAWIKAAFiCwABYkoAAWJMAAFiTgABYlAAAWJTAAFiVAABYlUAAWJWAAFiVwABYlkAAWJbAAFiXAABYl0AAWJfAAFiYAABYp8AAWKhAAFiowABYqUAAWKoAAFiqQABYqoAAWKrAAFirAABYq4AAWKwAAFisQABYrIAAWK0AAFitQABYvQAAWL2AAFi+AABYvoAAWL9AAFi/gABYv8AAWMAAAFjAQABYwMAAWMFAAFjBgABYwcAAWMJAAFjCgABYy8AAWNTAAFjegABY54AAWOhAAFjowABY6UAAWOnAAFjqQABY6sAAWOsAAFjrwABY7wAAWPLAAFjzQABY88AAWPRAAFj0wABY9UAAWPXAAFj2QABY+gAAWPrAAFj7gABY/EAAWP0AAFj9wABY/oAAWP9AAFj/wABZD4AAWRAAAFkQgABZEQAAWRHAAFkSAABZEkAAWRKAAFkSwABZE0AAWRPAAFkUAABZFEAAWRTAAFkVAABZJMAAWSVAAFklwABZJkAAWScAAFknQABZJ4AAWSfAAFkoAABZKIAAWSkAAFkpQABZKYAAWSoAAFkqQABZOgAAWTqAAFk7AABZO4AAWTxAAFk8gABZPMAAWT0AAFk9QABZPcAAWT5AAFk+gABZPsAAWT9AAFk/gABZT0AAWU/AAFlQQABZUMAAWVGAAFlRwABZUgAAWVJAAFlSgABZUwAAWVOAAFlTwABZVAAAWVSAAFlUwABZZIAAWWUAAFllgABZZgAAWWbAAFlnAABZZ0AAWWeAAFlnwABZaEAAWWjAAFlpAABZaUAAWWnAAFlqAABZecAAWXpAAFl6wABZe0AAWXwAAFl8QABZfIAAWXzAAFl9AABZfYAAWX4AAFl+QABZfoAAWX8AAFl/QABZjwAAWY+AAFmQAABZkIAAWZFAAFmRgABZkcAAWZIAAFmSQABZksAAWZNAAFmTgABZk8AAWZRAAFmUgABZp0AAWbAAAFm4AABZwAAAWcCAAFnBAABZwYAAWcIAAFnCwABZwwAAWcNAAFnEAABZxEAAWcTAAFnFAABZxYAAWcZAAFnGgABZxsAAWceAAFnHwABZyQAAWcxAAFnNgABZzgAAWc6AAFnPwABZ0IAAWdFAAFnRwABZ2wAAWeQAAFntwABZ9sAAWfeAAFn4AABZ+IAAWfkAAFn5gABZ+gAAWfpAAFn7AABZ/kAAWgKAAFoDAABaA4AAWgQAAFoEgABaBQAAWgWAAFoGAABaBoAAWgrAAFoLgABaDEAAWg0AAFoNwABaDoAAWg9AAFoQAABaEMAAWhFAAFohAABaIYAAWiIAAFoigABaI0AAWiOAAFojwABaJAAAWiRAAFokwABaJUAAWiWAAFolwABaJkAAWiaAAFo2QABaNsAAWjdAAFo3wABaOIAAWjjAAFo5AABaOUAAWjmAAFo6AABaOoAAWjrAAFo7AABaO4AAWjvAAFpLgABaTAAAWkzAAFpNQABaTgAAWk5AAFpOgABaTsAAWk8AAFpPgABaUAAAWlBAAFpQgABaUQAAWlFAAFpUgABaVMAAWlUAAFpVgABaZUAAWmXAAFpmQABaZsAAWmeAAFpnwABaaAAAWmhAAFpogABaaQAAWmmAAFppwABaagAAWmqAAFpqwABaeoAAWnsAAFp7gABafAAAWnzAAFp9AABafUAAWn2AAFp9wABafkAAWn7AAFp/AABaf0AAWn/AAFqAAABaj8AAWpBAAFqQwABakUAAWpIAAFqSQABakoAAWpLAAFqTAABak4AAWpQAAFqUQABalIAAWpUAAFqVQABapQAAWqWAAFqmQABapsAAWqeAAFqnwABaqAAAWqhAAFqogABaqQAAWqmAAFqpwABaqgAAWqqAAFqqwABar4AAWr9AAFq/wABawEAAWsDAAFrBgABawcAAWsIAAFrCQABawoAAWsMAAFrDgABaw8AAWsQAAFrEgABaxMAAWs4AAFrXAABa4MAAWunAAFrqgABa6wAAWuuAAFrsAABa7IAAWu0AAFrtQABa7gAAWvFAAFr1AABa9YAAWvYAAFr2gABa9wAAWveAAFr4AABa+IAAWvxAAFr9AABa/cAAWv6AAFr/QABbAAAAWwDAAFsBgABbAgAAWxHAAFsSQABbEsAAWxNAAFsUAABbFEAAWxSAAFsUwABbFQAAWxWAAFsWAABbFkAAWxaAAFsXAABbF0AAWycAAFsngABbKAAAWyiAAFspQABbKYAAWynAAFsqAABbKkAAWyrAAFsrQABbK4AAWyvAAFssQABbLIAAWzxAAFs8wABbPUAAWz3AAFs+gABbPsAAWz8AAFs/QABbP4AAW0AAAFtAgABbQMAAW0EAAFtBgABbQcAAW1GAAFtSAABbUoAAW1MAAFtTwABbVAAAW1RAAFtUgABbVMAAW1VAAFtVwABbVgAAW1ZAAFtWwABbVwAAW2bAAFtnQABbZ8AAW2hAAFtpAABbaUAAW2mAAFtpwABbagAAW2qAAFtrAABba0AAW2uAAFtsAABbbEAAW3wAAFt8gABbfQAAW32AAFt+QABbfoAAW37AAFt/AABbf0AAW3/AAFuAQABbgIAAW4DAAFuBQABbgYAAW5FAAFuRwABbkkAAW5LAAFuTgABbk8AAW5QAAFuUQABblIAAW5UAAFuVgABblcAAW5YAAFuWgABblsAAW6mAAFuyQABbukAAW8JAAFvCwABbw0AAW8PAAFvEQABbxQAAW8VAAFvFgABbxkAAW8aAAFvHAABbx0AAW8fAAFvIgABbyMAAW8kAAFvJwABbygAAW8xAAFvPgABb0MAAW9FAAFvRwABb0wAAW9PAAFvUgABb1QAAW95AAFvnQABb8QAAW/oAAFv6wABb+0AAW/vAAFv8QABb/MAAW/1AAFv9gABb/kAAXAGAAFwFwABcBkAAXAbAAFwHQABcB8AAXAhAAFwIwABcCUAAXAnAAFwOAABcDsAAXA+AAFwQQABcEQAAXBHAAFwSgABcE0AAXBQAAFwUgABcJEAAXCTAAFwlQABcJcAAXCaAAFwmwABcJwAAXCdAAFwngABcKAAAXCiAAFwowABcKQAAXCmAAFwpwABcOYAAXDoAAFw6gABcOwAAXDvAAFw8AABcPEAAXDyAAFw8wABcPUAAXD3AAFw+AABcPkAAXD7AAFw/AABcTsAAXE9AAFxQAABcUIAAXFFAAFxRgABcUcAAXFIAAFxSQABcUsAAXFNAAFxTgABcU8AAXFRAAFxUgABcV8AAXFgAAFxYQABcWMAAXGiAAFxpAABcaYAAXGoAAFxqwABcawAAXGtAAFxrgABca8AAXGxAAFxswABcbQAAXG1AAFxtwABcbgAAXH3AAFx+QABcfsAAXH9AAFyAAABcgEAAXICAAFyAwABcgQAAXIGAAFyCAABcgkAAXIKAAFyDAABcg0AAXJMAAFyTgABclAAAXJSAAFyVQABclYAAXJXAAFyWAABclkAAXJbAAFyXQABcl4AAXJfAAFyYQABcmIAAXKhAAFyowABcqUAAXKnAAFyqgABcqsAAXKsAAFyrQABcq4AAXKwAAFysgABcrMAAXK0AAFytgABcrcAAXL2AAFy+AABcvoAAXL8AAFy/wABcwAAAXMBAAFzAgABcwMAAXMFAAFzBwABcwgAAXMJAAFzCwABcwwAAXMxAAFzVQABc3wAAXOgAAFzowABc6UAAXOnAAFzqQABc6sAAXOtAAFzrgABc7EAAXO+AAFzzQABc88AAXPRAAFz0wABc9UAAXPXAAFz2QABc9sAAXPqAAFz7QABc/AAAXPzAAFz9gABc/kAAXP8AAFz/wABdAEAAXRAAAF0QgABdEQAAXRGAAF0SQABdEoAAXRLAAF0TAABdE0AAXRPAAF0UQABdFIAAXRTAAF0VQABdFYAAXSVAAF0lwABdJkAAXSbAAF0ngABdJ8AAXSgAAF0oQABdKIAAXSkAAF0pgABdKcAAXSoAAF0qgABdKsAAXTqAAF07AABdO4AAXTwAAF08wABdPQAAXT1AAF09gABdPcAAXT5AAF0+wABdPwAAXT9AAF0/wABdQAAAXU/AAF1QQABdUMAAXVFAAF1SAABdUkAAXVKAAF1SwABdUwAAXVOAAF1UAABdVEAAXVSAAF1VAABdVUAAXWUAAF1lgABdZgAAXWaAAF1nQABdZ4AAXWfAAF1oAABdaEAAXWjAAF1pQABdaYAAXWnAAF1qQABdaoAAXXpAAF16wABde0AAXXvAAF18gABdfMAAXX0AAF19QABdfYAAXX4AAF1+gABdfsAAXX8AAF1/gABdf8AAXY+AAF2QAABdkIAAXZEAAF2RwABdkgAAXZJAAF2SgABdksAAXZNAAF2TwABdlAAAXZRAAF2UwABdlQAAXafAAF2wgABduIAAXcCAAF3BAABdwYAAXcIAAF3CgABdw0AAXcOAAF3DwABdxIAAXcTAAF3FQABdxYAAXcYAAF3GgABdxsAAXccAAF3HwABdyAAAXclAAF3MgABdzcAAXc5AAF3OwABd0AAAXdDAAF3RgABd0gAAXdtAAF3kQABd7gAAXfcAAF33wABd+EAAXfjAAF35QABd+cAAXfpAAF36gABd+0AAXf6AAF4CwABeA0AAXgPAAF4EQABeBMAAXgVAAF4FwABeBkAAXgbAAF4LAABeC8AAXgyAAF4NQABeDgAAXg7AAF4PgABeEEAAXhEAAF4RgABeIUAAXiHAAF4iQABeIsAAXiOAAF4jwABeJAAAXiRAAF4kgABeJQAAXiWAAF4lwABeJgAAXiaAAF4mwABeNoAAXjcAAF43gABeOAAAXjjAAF45AABeOUAAXjmAAF45wABeOkAAXjrAAF47AABeO0AAXjvAAF48AABeS8AAXkxAAF5NAABeTYAAXk5AAF5OgABeTsAAXk8AAF5PQABeT8AAXlBAAF5QgABeUMAAXlFAAF5RgABeVMAAXlUAAF5VQABeVcAAXmWAAF5mAABeZoAAXmcAAF5nwABeaAAAXmhAAF5ogABeaMAAXmlAAF5pwABeagAAXmpAAF5qwABeawAAXnrAAF57QABee8AAXnxAAF59AABefUAAXn2AAF59wABefgAAXn6AAF5/AABef0AAXn+AAF6AAABegEAAXpAAAF6QgABekQAAXpGAAF6SQABekoAAXpLAAF6TAABek0AAXpPAAF6UQABelIAAXpTAAF6VQABelYAAXqVAAF6lwABepkAAXqbAAF6ngABep8AAXqgAAF6oQABeqIAAXqkAAF6pgABeqcAAXqoAAF6qgABeqsAAXrqAAF67AABeu4AAXrwAAF68wABevQAAXr1AAF69gABevcAAXr5AAF6+wABevwAAXr9AAF6/wABewAAAXslAAF7SQABe3AAAXuUAAF7lwABe5kAAXubAAF7nQABe58AAXuhAAF7ogABe6UAAXuyAAF7wQABe8MAAXvFAAF7xwABe8kAAXvLAAF7zQABe88AAXveAAF74QABe+QAAXvnAAF76gABe+0AAXvwAAF78wABe/UAAXw0AAF8NgABfDgAAXw6AAF8PQABfD4AAXw/AAF8QAABfEEAAXxDAAF8RQABfEYAAXxHAAF8SQABfEoAAXyJAAF8iwABfI0AAXyPAAF8kgABfJMAAXyUAAF8lQABfJYAAXyYAAF8mgABfJsAAXycAAF8ngABfJ8AAXzeAAF84AABfOIAAXzkAAF85wABfOgAAXzpAAF86gABfOsAAXztAAF87wABfPAAAXzxAAF88wABfPQAAX0zAAF9NQABfTgAAX06AAF9PQABfT4AAX0/AAF9QAABfUEAAX1DAAF9RQABfUYAAX1HAAF9SQABfUoAAX2JAAF9iwABfY0AAX2PAAF9kgABfZMAAX2UAAF9lQABfZYAAX2YAAF9mgABfZsAAX2cAAF9ngABfZ8AAX3eAAF94AABfeIAAX3kAAF95wABfegAAX3pAAF96gABfesAAX3tAAF97wABffAAAX3xAAF98wABffQAAX4zAAF+NQABfjgAAX46AAF+PQABfj4AAX4/AAF+QAABfkEAAX5DAAF+RQABfkYAAX5HAAF+SQABfkoAAX6VAAF+uAABftgAAX74AAF++gABfvwAAX7+AAF/AAABfwMAAX8EAAF/BQABfwgAAX8JAAF/CwABfwwAAX8OAAF/EQABfxIAAX8TAAF/FgABfxcAAX8gAAF/LQABfzIAAX80AAF/NgABfzsAAX8+AAF/QQABf0MAAX9oAAF/jAABf7MAAX/XAAF/2gABf9wAAX/eAAF/4AABf+IAAX/kAAF/5QABf+gAAX/1AAGABgABgAgAAYAKAAGADAABgA4AAYAQAAGAEgABgBQAAYAWAAGAJwABgCoAAYAtAAGAMAABgDMAAYA2AAGAOQABgDwAAYA/AAGAQQABgIAAAYCCAAGAhAABgIYAAYCJAAGAigABgIsAAYCMAAGAjQABgI8AAYCRAAGAkgABgJMAAYCVAAGAlgABgNUAAYDXAAGA2QABgNsAAYDeAAGA3wABgOAAAYDhAAGA4gABgOQAAYDmAAGA5wABgOgAAYDqAAGA6wABgSoAAYEsAAGBLwABgTEAAYE0AAGBNQABgTYAAYE3AAGBOAABgToAAYE8AAGBPQABgT4AAYFAAAGBQQABgU4AAYFPAAGBUAABgVIAAYGRAAGBkwABgZUAAYGXAAGBmgABgZsAAYGcAAGBnQABgZ4AAYGgAAGBogABgaMAAYGkAAGBpgABgacAAYHmAAGB6AABgeoAAYHsAAGB7wABgfAAAYHxAAGB8gABgfMAAYH1AAGB9wABgfgAAYH5AAGB+wABgfwAAYI7AAGCPQABgj8AAYJBAAGCRAABgkUAAYJGAAGCRwABgkgAAYJKAAGCTAABgk0AAYJOAAGCUAABglEAAYKQAAGCkgABgpQAAYKWAAGCmQABgpoAAYKbAAGCnAABgp0AAYKfAAGCoQABgqIAAYKjAAGCpQABgqYAAYLlAAGC5wABgukAAYLrAAGC7gABgu8AAYLwAAGC8QABgvIAAYL0AAGC9gABgvcAAYL4AAGC+gABgvsAAYMgAAGDRAABg2sAAYOPAAGDkgABg5QAAYOWAAGDmAABg5oAAYOcAAGDnQABg6AAAYOtAAGDvAABg74AAYPAAAGDwgABg8QAAYPGAAGDyAABg8oAAYPZAAGD3AABg98AAYPiAAGD5QABg+gAAYPrAAGD7gABg/AAAYQvAAGEMQABhDMAAYQ1AAGEOAABhDkAAYQ6AAGEOwABhDwAAYQ+AAGEQAABhEEAAYRCAAGERAABhEUAAYSEAAGEhgABhIgAAYSKAAGEjQABhI4AAYSPAAGEkAABhJEAAYSTAAGElQABhJYAAYSXAAGEmQABhJoAAYTZAAGE2wABhN0AAYTfAAGE4gABhOMAAYTkAAGE5QABhOYAAYToAAGE6gABhOsAAYTsAAGE7gABhO8AAYUuAAGFMAABhTIAAYU0AAGFNwABhTgAAYU5AAGFOgABhTsAAYU9AAGFPwABhUAAAYVBAAGFQwABhUQAAYWDAAGFhQABhYcAAYWJAAGFjAABhY0AAYWOAAGFjwABhZAAAYWSAAGFlAABhZUAAYWWAAGFmAABhZkAAYXYAAGF2gABhdwAAYXeAAGF4QABheIAAYXjAAGF5AABheUAAYXnAAGF6QABheoAAYXrAAGF7QABhe4AAYYtAAGGLwABhjEAAYYzAAGGNgABhjcAAYY4AAGGOQABhjoAAYY8AAGGPgABhj8AAYZAAAGGQgABhkMAAYaOAAGGsQABhtEAAYbxAAGG8wABhvUAAYb3AAGG+QABhvwAAYb9AAGG/gABhwEAAYcCAAGHBAABhwUAAYcHAAGHCgABhwsAAYcMAAGHDwABhxAAAYcVAAGHIgABhycAAYcpAAGHKwABhzAAAYczAAGHNgABhzgAAYddAAGHgQABh6gAAYfMAAGHzwABh9EAAYfTAAGH1QABh9cAAYfZAAGH2gABh90AAYfqAAGH+wABh/0AAYf/AAGIAQABiAMAAYgFAAGIBwABiAkAAYgLAAGIHAABiB8AAYgiAAGIJQABiCgAAYgrAAGILgABiDEAAYg0AAGINgABiHUAAYh3AAGIeQABiHsAAYh+AAGIfwABiIAAAYiBAAGIggABiIQAAYiGAAGIhwABiIgAAYiKAAGIiwABiMoAAYjMAAGIzgABiNAAAYjTAAGI1AABiNUAAYjWAAGI1wABiNkAAYjbAAGI3AABiN0AAYjfAAGI4AABiR8AAYkhAAGJJAABiSYAAYkpAAGJKgABiSsAAYksAAGJLQABiS8AAYkxAAGJMgABiTMAAYk1AAGJNgABiUMAAYlEAAGJRQABiUcAAYmGAAGJiAABiYoAAYmMAAGJjwABiZAAAYmRAAGJkgABiZMAAYmVAAGJlwABiZgAAYmZAAGJmwABiZwAAYnbAAGJ3QABid8AAYnhAAGJ5AABieUAAYnmAAGJ5wABiegAAYnqAAGJ7AABie0AAYnuAAGJ8AABifEAAYowAAGKMgABijQAAYo2AAGKOQABijoAAYo7AAGKPAABij0AAYo/AAGKQQABikIAAYpDAAGKRQABikYAAYqFAAGKhwABiooAAYqMAAGKjwABipAAAYqRAAGKkgABipMAAYqVAAGKlwABipgAAYqZAAGKmwABipwAAYqwAAGK7wABivEAAYrzAAGK9QABivgAAYr5AAGK+gABivsAAYr8AAGK/gABiwAAAYsBAAGLAgABiwQAAYsFAAGLKgABi04AAYt1AAGLmQABi5wAAYueAAGLoAABi6IAAYukAAGLpgABi6cAAYuqAAGLtwABi8YAAYvIAAGLygABi8wAAYvOAAGL0AABi9IAAYvUAAGL4wABi+YAAYvpAAGL7AABi+8AAYvyAAGL9QABi/gAAYv6AAGMOQABjDsAAYw9AAGMPwABjEIAAYxDAAGMRAABjEUAAYxGAAGMSAABjEoAAYxLAAGMTAABjE4AAYxPAAGMjgABjJAAAYySAAGMlAABjJcAAYyYAAGMmQABjJoAAYybAAGMnQABjJ8AAYygAAGMoQABjKMAAYykAAGM4wABjOUAAYznAAGM6QABjOwAAYztAAGM7gABjO8AAYzwAAGM8gABjPQAAYz1AAGM9gABjPgAAYz5AAGNOAABjToAAY08AAGNPgABjUEAAY1CAAGNQwABjUQAAY1FAAGNRwABjUkAAY1KAAGNSwABjU0AAY1OAAGNjQABjY8AAY2RAAGNkwABjZYAAY2XAAGNmAABjZkAAY2aAAGNnAABjZ4AAY2fAAGNoAABjaIAAY2jAAGN4gABjeQAAY3mAAGN6AABjesAAY3sAAGN7QABje4AAY3vAAGN8QABjfMAAY30AAGN9QABjfcAAY34AAGONwABjjkAAY47AAGOPQABjkAAAY5BAAGOQgABjkMAAY5EAAGORgABjkgAAY5JAAGOSgABjkwAAY5NAAGOmAABjrsAAY7bAAGO+wABjv0AAY7/AAGPAQABjwMAAY8GAAGPBwABjwgAAY8LAAGPDAABjw4AAY8PAAGPEQABjxQAAY8VAAGPFgABjxkAAY8aAAGPHwABjywAAY8xAAGPMwABjzUAAY86AAGPPQABj0AAAY9CAAGPZwABj4sAAY+yAAGP1gABj9kAAY/bAAGP3QABj98AAY/hAAGP4wABj+QAAY/nAAGP9AABkAUAAZAHAAGQCQABkAsAAZANAAGQDwABkBEAAZATAAGQFQABkCYAAZApAAGQLAABkC8AAZAyAAGQNQABkDgAAZA7AAGQPgABkEAAAZB/AAGQgQABkIMAAZCFAAGQiAABkIkAAZCKAAGQiwABkIwAAZCOAAGQkAABkJEAAZCSAAGQlAABkJUAAZDUAAGQ1gABkNgAAZDaAAGQ3QABkN4AAZDfAAGQ4AABkOEAAZDjAAGQ5QABkOYAAZDnAAGQ6QABkOoAAZEpAAGRKwABkS4AAZEwAAGRMwABkTQAAZE1AAGRNgABkTcAAZE5AAGROwABkTwAAZE9AAGRPwABkUAAAZFNAAGRTgABkU8AAZFRAAGRkAABkZIAAZGUAAGRlgABkZkAAZGaAAGRmwABkZwAAZGdAAGRnwABkaEAAZGiAAGRowABkaUAAZGmAAGR5QABkecAAZHpAAGR6wABke4AAZHvAAGR8AABkfEAAZHyAAGR9AABkfYAAZH3AAGR+AABkfoAAZH7AAGSOgABkjwAAZI+AAGSQAABkkMAAZJEAAGSRQABkkYAAZJHAAGSSQABkksAAZJMAAGSTQABkk8AAZJQAAGSjwABkpEAAZKUAAGSlgABkpkAAZKaAAGSmwABkpwAAZKdAAGSnwABkqEAAZKiAAGSowABkqUAAZKmAAGStQABkvQAAZL2AAGS+AABkvoAAZL9AAGS/gABkv8AAZMAAAGTAQABkwMAAZMFAAGTBgABkwcAAZMJAAGTCgABky8AAZNTAAGTegABk54AAZOhAAGTowABk6UAAZOnAAGTqQABk6sAAZOsAAGTrwABk7wAAZPLAAGTzQABk88AAZPRAAGT0wABk9UAAZPXAAGT2QABk+gAAZPrAAGT7gABk/EAAZP0AAGT9wABk/oAAZP9AAGT/wABlD4AAZRAAAGUQgABlEQAAZRHAAGUSAABlEkAAZRKAAGUSwABlE0AAZRPAAGUUAABlFEAAZRTAAGUVAABlJMAAZSVAAGUlwABlJkAAZScAAGUnQABlJ4AAZSfAAGUoAABlKIAAZSkAAGUpQABlKYAAZSoAAGUqQABlOgAAZTqAAGU7AABlO4AAZTxAAGU8gABlPMAAZT0AAGU9QABlPcAAZT5AAGU+gABlPsAAZT9AAGU/gABlT0AAZU/AAGVQQABlUMAAZVGAAGVRwABlUgAAZVJAAGVSgABlUwAAZVOAAGVTwABlVAAAZVSAAGVUwABlZIAAZWUAAGVlgABlZgAAZWbAAGVnAABlZ0AAZWeAAGVnwABlaEAAZWjAAGVpAABlaUAAZWnAAGVqAABlecAAZXpAAGV6wABle0AAZXwAAGV8QABlfIAAZXzAAGV9AABlfYAAZX4AAGV+QABlfoAAZX8AAGV/QABljwAAZY+AAGWQAABlkIAAZZFAAGWRgABlkcAAZZIAAGWSQABlksAAZZNAAGWTgABlk8AAZZRAAGWUgABlp0AAZbAAAGW4AABlwAAAZcCAAGXBAABlwYAAZcIAAGXCwABlwwAAZcNAAGXEAABlxEAAZcTAAGXFAABlxYAAZcZAAGXGgABlxsAAZceAAGXHwABlyQAAZcxAAGXNgABlzgAAZc6AAGXPwABl0IAAZdFAAGXRwABl2wAAZeQAAGXtwABl9sAAZfeAAGX4AABl+IAAZfkAAGX5gABl+gAAZfpAAGX7AABl/kAAZgKAAGYDAABmA4AAZgQAAGYEgABmBQAAZgWAAGYGAABmBoAAZgrAAGYLgABmDEAAZg0AAGYNwABmDoAAZg9AAGYQAABmEMAAZhFAAGYhAABmIYAAZiIAAGYigABmI0AAZiOAAGYjwABmJAAAZiRAAGYkwABmJUAAZiWAAGYlwABmJkAAZiaAAGY2QABmNsAAZjdAAGY3wABmOIAAZjjAAGY5AABmOUAAZjmAAGY6AABmOoAAZjrAAGY7AABmO4AAZjvAAGZLgABmTAAAZkzAAGZNQABmTgAAZk5AAGZOgABmTsAAZk8AAGZPgABmUAAAZlBAAGZQgABmUQAAZlFAAGZUgABmVMAAZlUAAGZVgABmZUAAZmXAAGZmQABmZsAAZmeAAGZnwABmaAAAZmhAAGZogABmaQAAZmmAAGZpwABmagAAZmqAAGZqwABmeoAAZnsAAGZ7gABmfAAAZnzAAGZ9AABmfUAAZn2AAGZ9wABmfkAAZn7AAGZ/AABmf0AAZn/AAGaAAABmj8AAZpBAAGaQwABmkUAAZpIAAGaSQABmkoAAZpLAAGaTAABmk4AAZpQAAGaUQABmlIAAZpUAAGaVQABmpQAAZqWAAGamQABmpsAAZqeAAGanwABmqAAAZqhAAGaogABmqQAAZqmAAGapwABmqgAAZqqAAGaqwABmr8AAZr+AAGbAAABmwIAAZsEAAGbBwABmwgAAZsJAAGbCgABmwsAAZsNAAGbDwABmxAAAZsRAAGbEwABmxQAAZs5AAGbXQABm4QAAZuoAAGbqwABm60AAZuvAAGbsQABm7MAAZu1AAGbtgABm7kAAZvGAAGb1QABm9cAAZvZAAGb2wABm90AAZvfAAGb4QABm+MAAZvyAAGb9QABm/gAAZv7AAGb/gABnAEAAZwEAAGcBwABnAkAAZxIAAGcSgABnEwAAZxOAAGcUQABnFIAAZxTAAGcVAABnFUAAZxXAAGcWQABnFoAAZxbAAGcXQABnF4AAZydAAGcnwABnKEAAZyjAAGcpgABnKcAAZyoAAGcqQABnKoAAZysAAGcrgABnK8AAZywAAGcsgABnLMAAZzyAAGc9AABnPYAAZz4AAGc+wABnPwAAZz9AAGc/gABnP8AAZ0BAAGdAwABnQQAAZ0FAAGdBwABnQgAAZ1HAAGdSQABnUsAAZ1NAAGdUAABnVEAAZ1SAAGdUwABnVQAAZ1WAAGdWAABnVkAAZ1aAAGdXAABnV0AAZ2cAAGdngABnaAAAZ2iAAGdpQABnaYAAZ2nAAGdqAABnakAAZ2rAAGdrQABna4AAZ2vAAGdsQABnbIAAZ3xAAGd8wABnfUAAZ33AAGd+gABnfsAAZ38AAGd/QABnf4AAZ4AAAGeAgABngMAAZ4EAAGeBgABngcAAZ5GAAGeSAABnkoAAZ5MAAGeTwABnlAAAZ5RAAGeUgABnlMAAZ5VAAGeVwABnlgAAZ5ZAAGeWwABnlwAAZ6nAAGeygABnuoAAZ8KAAGfDAABnw4AAZ8QAAGfEgABnxUAAZ8WAAGfFwABnxoAAZ8bAAGfHQABnx4AAZ8gAAGfIwABnyQAAZ8lAAGfKAABnykAAZ8uAAGfOwABn0AAAZ9CAAGfRAABn0kAAZ9MAAGfTwABn1EAAZ92AAGfmgABn8EAAZ/lAAGf6AABn+oAAZ/sAAGf7gABn/AAAZ/yAAGf8wABn/YAAaADAAGgFAABoBYAAaAYAAGgGgABoBwAAaAeAAGgIAABoCIAAaAkAAGgNQABoDgAAaA7AAGgPgABoEEAAaBEAAGgRwABoEoAAaBNAAGgTwABoI4AAaCQAAGgkgABoJQAAaCXAAGgmAABoJkAAaCaAAGgmwABoJ0AAaCfAAGgoAABoKEAAaCjAAGgpAABoOMAAaDlAAGg5wABoOkAAaDsAAGg7QABoO4AAaDvAAGg8AABoPIAAaD0AAGg9QABoPYAAaD4AAGg+QABoTgAAaE6AAGhPQABoT8AAaFCAAGhQwABoUQAAaFFAAGhRgABoUgAAaFKAAGhSwABoUwAAaFOAAGhTwABoVwAAaFdAAGhXgABoWAAAaGfAAGhoQABoaMAAaGlAAGhqAABoakAAaGqAAGhqwABoawAAaGuAAGhsAABobEAAaGyAAGhtAABobUAAaH0AAGh9gABofgAAaH6AAGh/QABof4AAaH/AAGiAAABogEAAaIDAAGiBQABogYAAaIHAAGiCQABogoAAaJJAAGiSwABok0AAaJPAAGiUgABolMAAaJUAAGiVQABolYAAaJYAAGiWgABolsAAaJcAAGiXgABol8AAaKeAAGioAABoqIAAaKkAAGipwABoqgAAaKpAAGiqgABoqsAAaKtAAGirwABorAAAaKxAAGiswABorQAAaLzAAGi9QABovcAAaL5AAGi/AABov0AAaL+AAGi/wABowAAAaMCAAGjBAABowUAAaMGAAGjCAABowkAAaMuAAGjUgABo3kAAaOdAAGjoAABo6IAAaOkAAGjpgABo6gAAaOqAAGjqwABo64AAaO7AAGjygABo8wAAaPOAAGj0AABo9IAAaPUAAGj1gABo9gAAaPnAAGj6gABo+0AAaPwAAGj8wABo/YAAaP5AAGj/AABo/4AAaQ9AAGkPwABpEEAAaRDAAGkRgABpEcAAaRIAAGkSQABpEoAAaRMAAGkTgABpE8AAaRQAAGkUgABpFMAAaSSAAGklAABpJYAAaSYAAGkmwABpJwAAaSdAAGkngABpJ8AAaShAAGkowABpKQAAaSlAAGkpwABpKgAAaTnAAGk6QABpOsAAaTtAAGk8AABpPEAAaTyAAGk8wABpPQAAaT2AAGk+AABpPkAAaT6AAGk/AABpP0AAaU8AAGlPgABpUAAAaVCAAGlRQABpUYAAaVHAAGlSAABpUkAAaVLAAGlTQABpU4AAaVPAAGlUQABpVIAAaWRAAGlkwABpZUAAaWXAAGlmgABpZsAAaWcAAGlnQABpZ4AAaWgAAGlogABpaMAAaWkAAGlpgABpacAAaXmAAGl6AABpeoAAaXsAAGl7wABpfAAAaXxAAGl8gABpfMAAaX1AAGl9wABpfgAAaX5AAGl+wABpfwAAaY7AAGmPQABpj8AAaZBAAGmRAABpkUAAaZGAAGmRwABpkgAAaZKAAGmTAABpk0AAaZOAAGmUAABplEAAaacAAGmvwABpt8AAab/AAGnAQABpwMAAacFAAGnBwABpwoAAacLAAGnDAABpw8AAacQAAGnEgABpxMAAacVAAGnGAABpxkAAacaAAGnHQABpx4AAacnAAGnNAABpzkAAac7AAGnPQABp0IAAadFAAGnSAABp0oAAadvAAGnkwABp7oAAafeAAGn4QABp+MAAaflAAGn5wABp+kAAafrAAGn7AABp+8AAaf8AAGoDQABqA8AAagRAAGoEwABqBUAAagXAAGoGQABqBsAAagdAAGoLgABqDEAAag0AAGoNwABqDoAAag9AAGoQAABqEMAAahGAAGoSAABqIcAAaiJAAGoiwABqI0AAaiQAAGokQABqJIAAaiTAAGolAABqJYAAaiYAAGomQABqJoAAaicAAGonQABqNwAAajeAAGo4AABqOIAAajlAAGo5gABqOcAAajoAAGo6QABqOsAAajtAAGo7gABqO8AAajxAAGo8gABqTEAAakzAAGpNgABqTgAAak7AAGpPAABqT0AAak+AAGpPwABqUEAAalDAAGpRAABqUUAAalHAAGpSAABqVUAAalWAAGpVwABqVkAAamYAAGpmgABqZwAAameAAGpoQABqaIAAamjAAGppAABqaUAAamnAAGpqQABqaoAAamrAAGprQABqa4AAantAAGp7wABqfEAAanzAAGp9gABqfcAAan4AAGp+QABqfoAAan8AAGp/gABqf8AAaoAAAGqAgABqgMAAapCAAGqRAABqkYAAapIAAGqSwABqkwAAapNAAGqTgABqk8AAapRAAGqUwABqlQAAapVAAGqVwABqlgAAaqXAAGqmQABqpsAAaqdAAGqoAABqqEAAaqiAAGqowABqqQAAaqmAAGqqAABqqkAAaqqAAGqrAABqq0AAarsAAGq7gABqvAAAaryAAGq9QABqvYAAar3AAGq+AABqvkAAar7AAGq/QABqv4AAar/AAGrAQABqwIAAasnAAGrSwABq3IAAauWAAGrmQABq5sAAaudAAGrnwABq6EAAaujAAGrpAABq6cAAau0AAGrwwABq8UAAavHAAGryQABq8sAAavNAAGrzwABq9EAAavgAAGr4wABq+YAAavpAAGr7AABq+8AAavyAAGr9QABq/cAAaw2AAGsOAABrDoAAaw8AAGsPwABrEAAAaxBAAGsQgABrEMAAaxFAAGsRwABrEgAAaxJAAGsSwABrEwAAayLAAGsjQABrI8AAayRAAGslAABrJUAAayWAAGslwABrJgAAayaAAGsnAABrJ0AAayeAAGsoAABrKEAAazgAAGs4gABrOQAAazmAAGs6QABrOoAAazrAAGs7AABrO0AAazvAAGs8QABrPIAAazzAAGs9QABrPYAAa01AAGtNwABrTkAAa07AAGtPgABrT8AAa1AAAGtQQABrUIAAa1EAAGtRgABrUcAAa1IAAGtSgABrUsAAa2KAAGtjAABrY4AAa2QAAGtkwABrZQAAa2VAAGtlgABrZcAAa2ZAAGtmwABrZwAAa2dAAGtnwABraAAAa3fAAGt4QABreMAAa3lAAGt6AABrekAAa3qAAGt6wABrewAAa3uAAGt8AABrfEAAa3yAAGt9AABrfUAAa40AAGuNgABrjgAAa46AAGuPQABrj4AAa4/AAGuQAABrkEAAa5DAAGuRQABrkYAAa5HAAGuSQABrkoAAa6VAAGuuAABrtgAAa74AAGu+gABrvwAAa7+AAGvAAABrwMAAa8EAAGvBQABrwgAAa8JAAGvCwABrwwAAa8OAAGvEQABrxIAAa8TAAGvFgABrxcAAa8cAAGvKQABry4AAa8wAAGvMgABrzcAAa86AAGvPQABrz8AAa9kAAGviAABr68AAa/TAAGv1gABr9gAAa/aAAGv3AABr94AAa/gAAGv4QABr+QAAa/xAAGwAgABsAQAAbAGAAGwCAABsAoAAbAMAAGwDgABsBAAAbASAAGwIwABsCYAAbApAAGwLAABsC8AAbAyAAGwNQABsDgAAbA7AAGwPQABsHwAAbB+AAGwgAABsIIAAbCFAAGwhgABsIcAAbCIAAGwiQABsIsAAbCNAAGwjgABsI8AAbCRAAGwkgABsNEAAbDTAAGw1QABsNcAAbDaAAGw2wABsNwAAbDdAAGw3gABsOAAAbDiAAGw4wABsOQAAbDmAAGw5wABsSYAAbEoAAGxKwABsS0AAbEwAAGxMQABsTIAAbEzAAGxNAABsTYAAbE4AAGxOQABsToAAbE8AAGxPQABsUoAAbFLAAGxTAABsU4AAbGNAAGxjwABsZEAAbGTAAGxlgABsZcAAbGYAAGxmQABsZoAAbGcAAGxngABsZ8AAbGgAAGxogABsaMAAbHiAAGx5AABseYAAbHoAAGx6wABsewAAbHtAAGx7gABse8AAbHxAAGx8wABsfQAAbH1AAGx9wABsfgAAbI3AAGyOQABsjsAAbI9AAGyQAABskEAAbJCAAGyQwABskQAAbJGAAGySAABskkAAbJKAAGyTAABsk0AAbKMAAGyjgABspAAAbKSAAGylQABspYAAbKXAAGymAABspkAAbKbAAGynQABsp4AAbKfAAGyoQABsqIAAbLhAAGy4wABsuUAAbLnAAGy6gABsusAAbLsAAGy7QABsu4AAbLwAAGy8gABsvMAAbL0AAGy9gABsvcAAbMcAAGzQAABs2cAAbOLAAGzjgABs5AAAbOSAAGzlAABs5YAAbOYAAGzmQABs5wAAbOpAAGzuAABs7oAAbO8AAGzvgABs8AAAbPCAAGzxAABs8YAAbPVAAGz2AABs9sAAbPeAAGz4QABs+QAAbPnAAGz6gABs+wAAbQrAAG0LQABtC8AAbQxAAG0NAABtDUAAbQ2AAG0NwABtDgAAbQ6AAG0PAABtD0AAbQ+AAG0QAABtEEAAbSAAAG0ggABtIQAAbSGAAG0iQABtIoAAbSLAAG0jAABtI0AAbSPAAG0kQABtJIAAbSTAAG0lQABtJYAAbTVAAG01wABtNkAAbTbAAG03gABtN8AAbTgAAG04QABtOIAAbTkAAG05gABtOcAAbToAAG06gABtOsAAbUqAAG1LAABtS8AAbUxAAG1NAABtTUAAbU2AAG1NwABtTgAAbU6AAG1PAABtT0AAbU+AAG1QAABtUEAAbWAAAG1ggABtYQAAbWGAAG1iQABtYoAAbWLAAG1jAABtY0AAbWPAAG1kQABtZIAAbWTAAG1lQABtZYAAbXVAAG11wABtdkAAbXbAAG13gABtd8AAbXgAAG14QABteIAAbXkAAG15gABtecAAbXoAAG16gABtesAAbYqAAG2LAABti8AAbYxAAG2NAABtjUAAbY2AAG2NwABtjgAAbY6AAG2PAABtj0AAbY+AAG2QAABtkEAAbaMAAG2rwABts8AAbbvAAG28QABtvMAAbb1AAG29wABtvoAAbb7AAG2/AABtv8AAbcAAAG3AgABtwMAAbcFAAG3CAABtwkAAbcKAAG3DQABtw4AAbcTAAG3IAABtyUAAbcnAAG3KQABty4AAbcxAAG3NAABtzYAAbdbAAG3fwABt6YAAbfKAAG3zQABt88AAbfRAAG30wABt9UAAbfXAAG32AABt9sAAbfoAAG3+QABt/sAAbf9AAG3/wABuAEAAbgDAAG4BQABuAcAAbgJAAG4GgABuB0AAbggAAG4IwABuCYAAbgpAAG4LAABuC8AAbgyAAG4NAABuHMAAbh1AAG4dwABuHkAAbh8AAG4fQABuH4AAbh/AAG4gAABuIIAAbiEAAG4hQABuIYAAbiIAAG4iQABuMgAAbjKAAG4zAABuM4AAbjRAAG40gABuNMAAbjUAAG41QABuNcAAbjZAAG42gABuNsAAbjdAAG43gABuR0AAbkfAAG5IgABuSQAAbknAAG5KAABuSkAAbkqAAG5KwABuS0AAbkvAAG5MAABuTEAAbkzAAG5NAABuUEAAblCAAG5QwABuUUAAbmEAAG5hgABuYgAAbmKAAG5jQABuY4AAbmPAAG5kAABuZEAAbmTAAG5lQABuZYAAbmXAAG5mQABuZoAAbnZAAG52wABud0AAbnfAAG54gABueMAAbnkAAG55QABueYAAbnoAAG56gABuesAAbnsAAG57gABue8AAbouAAG6MAABujIAAbo0AAG6NwABujgAAbo5AAG6OgABujsAAbo9AAG6PwABukAAAbpBAAG6QwABukQAAbqDAAG6hQABuocAAbqJAAG6jAABuo0AAbqOAAG6jwABupAAAbqSAAG6lAABupUAAbqWAAG6mAABupkAAbrYAAG62gAButwAAbreAAG64QABuuIAAbrjAAG65AABuuUAAbrnAAG66QABuuoAAbrrAAG67QABuu4AAbsTAAG7NwABu14AAbuCAAG7hQABu4cAAbuJAAG7iwABu40AAbuPAAG7kAABu5MAAbugAAG7rwABu7EAAbuzAAG7tQABu7cAAbu5AAG7uwABu70AAbvMAAG7zwABu9IAAbvVAAG72AABu9sAAbveAAG74QABu+MAAbwiAAG8JAABvCYAAbwoAAG8KwABvCwAAbwtAAG8LgABvC8AAbwxAAG8MwABvDQAAbw1AAG8NwABvDgAAbx3AAG8eQABvHsAAbx9AAG8gAABvIEAAbyCAAG8gwABvIQAAbyGAAG8iAABvIkAAbyKAAG8jAABvI0AAbzMAAG8zgABvNAAAbzSAAG81QABvNYAAbzXAAG82AABvNkAAbzbAAG83QABvN4AAbzfAAG84QABvOIAAb0hAAG9IwABvSYAAb0oAAG9KwABvSwAAb0tAAG9LgABvS8AAb0xAAG9MwABvTQAAb01AAG9NwABvTgAAb13AAG9eQABvXsAAb19AAG9gAABvYEAAb2CAAG9gwABvYQAAb2GAAG9iAABvYkAAb2KAAG9jAABvY0AAb3MAAG9zgABvdAAAb3SAAG91QABvdYAAb3XAAG92AABvdkAAb3bAAG93QABvd4AAb3fAAG94QABveIAAb4hAAG+IwABviYAAb4oAAG+KwABviwAAb4tAAG+LgABvi8AAb4xAAG+MwABvjQAAb41AAG+NwABvjgAAb6DAAG+pgABvsYAAb7mAAG+6AABvuoAAb7sAAG+7gABvvEAAb7yAAG+8wABvvYAAb73AAG++QABvvoAAb78AAG+/wABvwAAAb8BAAG/BAABvwUAAb8OAAG/GwABvyAAAb8iAAG/JAABvykAAb8sAAG/LwABvzEAAb9WAAG/egABv6EAAb/FAAG/yAABv8oAAb/MAAG/zgABv9AAAb/SAAG/0wABv9YAAb/jAAG/9AABv/YAAb/4AAG/+gABv/wAAb/+AAHAAAABwAIAAcAEAAHAFQABwBgAAcAbAAHAHgABwCEAAcAkAAHAJwABwCoAAcAtAAHALwABwG4AAcBwAAHAcgABwHQAAcB3AAHAeAABwHkAAcB6AAHAewABwH0AAcB/AAHAgAABwIEAAcCDAAHAhAABwMMAAcDFAAHAxwABwMkAAcDMAAHAzQABwM4AAcDPAAHA0AABwNIAAcDUAAHA1QABwNYAAcDYAAHA2QABwRgAAcEaAAHBHQABwR8AAcEiAAHBIwABwSQAAcElAAHBJgABwSgAAcEqAAHBKwABwSwAAcEuAAHBLwABwTwAAcE9AAHBPgABwUAAAcF/AAHBgQABwYMAAcGFAAHBiAABwYkAAcGKAAHBiwABwYwAAcGOAAHBkAABwZEAAcGSAAHBlAABwZUAAcHUAAHB1gABwdgAAcHaAAHB3QABwd4AAcHfAAHB4AABweEAAcHjAAHB5QABweYAAcHnAAHB6QABweoAAcIpAAHCKwABwi0AAcIvAAHCMgABwjMAAcI0AAHCNQABwjYAAcI4AAHCOgABwjsAAcI8AAHCPgABwj8AAcJ+AAHCgAABwoMAAcKFAAHCiAABwokAAcKKAAHCiwABwowAAcKOAAHCkAABwpEAAcKSAAHClAABwpUAAcKjAAHC4gABwuQAAcLmAAHC6AABwusAAcLsAAHC7QABwu4AAcLvAAHC8QABwvMAAcL0AAHC9QABwvcAAcL4AAHDHQABw0EAAcNoAAHDjAABw48AAcORAAHDkwABw5UAAcOXAAHDmQABw5oAAcOdAAHDqgABw7kAAcO7AAHDvQABw78AAcPBAAHDwwABw8UAAcPHAAHD1gABw9kAAcPcAAHD3wABw+IAAcPlAAHD6AABw+sAAcPtAAHELAABxC4AAcQwAAHEMgABxDUAAcQ2AAHENwABxDgAAcQ5AAHEOwABxD0AAcQ+AAHEPwABxEEAAcRCAAHEgQABxIMAAcSFAAHEhwABxIoAAcSLAAHEjAABxI0AAcSOAAHEkAABxJIAAcSTAAHElAABxJYAAcSXAAHE1gABxNgAAcTaAAHE3AABxN8AAcTgAAHE4QABxOIAAcTjAAHE5QABxOcAAcToAAHE6QABxOsAAcTsAAHFKwABxS0AAcUvAAHFMQABxTQAAcU1AAHFNgABxTcAAcU4AAHFOgABxTwAAcU9AAHFPgABxUAAAcVBAAHFgAABxYIAAcWEAAHFhgABxYkAAcWKAAHFiwABxYwAAcWNAAHFjwABxZEAAcWSAAHFkwABxZUAAcWWAAHF1QABxdcAAcXZAAHF2wABxd4AAcXfAAHF4AABxeEAAcXiAAHF5AABxeYAAcXnAAHF6AABxeoAAcXrAAHGKgABxiwAAcYuAAHGMAABxjMAAcY0AAHGNQABxjYAAcY3AAHGOQABxjsAAcY8AAHGPQABxj8AAcZAAAHGiwABxq4AAcbOAAHG7gABxvAAAcbyAAHG9AABxvYAAcb5AAHG+gABxvsAAcb+AAHG/wABxwEAAccCAAHHBAABxwcAAccIAAHHCQABxwwAAccNAAHHFgABxyMAAccoAAHHKgABxywAAccxAAHHNAABxzcAAcc5AAHHXgABx4IAAcepAAHHzQABx9AAAcfSAAHH1AABx9YAAcfYAAHH2gABx9sAAcfeAAHH6wABx/wAAcf+AAHIAAAByAIAAcgEAAHIBgAByAgAAcgKAAHIDAAByB0AAcggAAHIIwAByCYAAcgpAAHILAAByC8AAcgyAAHINQAByDcAAch2AAHIeAAByHoAAch8AAHIfwAByIAAAciBAAHIggAByIMAAciFAAHIhwAByIgAAciJAAHIiwAByIwAAcjLAAHIzQAByM8AAcjRAAHI1AAByNUAAcjWAAHI1wAByNgAAcjaAAHI3AAByN0AAcjeAAHI4AAByOEAAckgAAHJIgABySUAAcknAAHJKgABySsAAcksAAHJLQAByS4AAckwAAHJMgAByTMAAck0AAHJNgAByTcAAclEAAHJRQAByUYAAclIAAHJhwAByYkAAcmLAAHJjQAByZAAAcmRAAHJkgAByZMAAcmUAAHJlgAByZgAAcmZAAHJmgAByZwAAcmdAAHJ3AAByd4AAcngAAHJ4gAByeUAAcnmAAHJ5wAByegAAcnpAAHJ6wABye0AAcnuAAHJ7wAByfEAAcnyAAHKMQAByjMAAco1AAHKNwAByjoAAco7AAHKPAAByj0AAco+AAHKQAABykIAAcpDAAHKRAABykYAAcpHAAHKhgAByogAAcqKAAHKjAAByo8AAcqQAAHKkQABypIAAcqTAAHKlQABypcAAcqYAAHKmQABypsAAcqcAAHK2wAByt0AAcrfAAHK4QAByuQAAcrlAAHK5gAByucAAcroAAHK6gAByuwAAcrtAAHK7gAByvAAAcrxAAHLFgAByzoAActhAAHLhQABy4gAAcuKAAHLjAABy44AAcuQAAHLkgABy5MAAcuWAAHLowABy7IAAcu0AAHLtgABy7gAAcu6AAHLvAABy74AAcvAAAHLzwABy9IAAcvVAAHL2AABy9sAAcveAAHL4QABy+QAAcvmAAHMJQABzCcAAcwpAAHMKwABzC4AAcwvAAHMMAABzDEAAcwyAAHMNAABzDYAAcw3AAHMOAABzDoAAcw7AAHMegABzHwAAcx+AAHMgAABzIMAAcyEAAHMhQABzIYAAcyHAAHMiQABzIsAAcyMAAHMjQABzI8AAcyQAAHMzwABzNEAAczTAAHM1QABzNgAAczZAAHM2gABzNsAAczcAAHM3gABzOAAAczhAAHM4gABzOQAAczlAAHNJAABzSYAAc0oAAHNKgABzS0AAc0uAAHNLwABzTAAAc0xAAHNMwABzTUAAc02AAHNNwABzTkAAc06AAHNeQABzXsAAc19AAHNfwABzYIAAc2DAAHNhAABzYUAAc2GAAHNiAABzYoAAc2LAAHNjAABzY4AAc2PAAHNzgABzdAAAc3SAAHN1AABzdcAAc3YAAHN2QABzdoAAc3bAAHN3QABzd8AAc3gAAHN4QABzeMAAc3kAAHOIwABziUAAc4nAAHOKQABziwAAc4tAAHOLgABzi8AAc4wAAHOMgABzjQAAc41AAHONgABzjgAAc45AAHOhAABzqcAAc7HAAHO5wABzukAAc7rAAHO7QABzu8AAc7yAAHO8wABzvQAAc73AAHO+AABzvoAAc77AAHO/QABzwAAAc8BAAHPAgABzwUAAc8GAAHPCwABzxgAAc8dAAHPHwABzyEAAc8mAAHPKQABzywAAc8uAAHPUwABz3cAAc+eAAHPwgABz8UAAc/HAAHPyQABz8sAAc/NAAHPzwABz9AAAc/TAAHP4AABz/EAAc/zAAHP9QABz/cAAc/5AAHP+wABz/0AAc//AAHQAQAB0BIAAdAVAAHQGAAB0BsAAdAeAAHQIQAB0CQAAdAnAAHQKgAB0CwAAdBrAAHQbQAB0G8AAdBxAAHQdAAB0HUAAdB2AAHQdwAB0HgAAdB6AAHQfAAB0H0AAdB+AAHQgAAB0IEAAdDAAAHQwgAB0MQAAdDGAAHQyQAB0MoAAdDLAAHQzAAB0M0AAdDPAAHQ0QAB0NIAAdDTAAHQ1QAB0NYAAdEVAAHRFwAB0RoAAdEcAAHRHwAB0SAAAdEhAAHRIgAB0SMAAdElAAHRJwAB0SgAAdEpAAHRKwAB0SwAAdE5AAHROgAB0TsAAdE9AAHRfAAB0X4AAdGAAAHRggAB0YUAAdGGAAHRhwAB0YgAAdGJAAHRiwAB0Y0AAdGOAAHRjwAB0ZEAAdGSAAHR0QAB0dMAAdHVAAHR1wAB0doAAdHbAAHR3AAB0d0AAdHeAAHR4AAB0eIAAdHjAAHR5AAB0eYAAdHnAAHSJgAB0igAAdIqAAHSLAAB0i8AAdIwAAHSMQAB0jIAAdIzAAHSNQAB0jcAAdI4AAHSOQAB0jsAAdI8AAHSewAB0n0AAdJ/AAHSgQAB0oQAAdKFAAHShgAB0ocAAdKIAAHSigAB0owAAdKNAAHSjgAB0pAAAdKRAAHS0AAB0tIAAdLUAAHS1gAB0tkAAdLaAAHS2wAB0twAAdLdAAHS3wAB0uEAAdLiAAHS4wAB0uUAAdLmAAHTCwAB0y8AAdNWAAHTegAB030AAdN/AAHTgQAB04MAAdOFAAHThwAB04gAAdOLAAHTmAAB06cAAdOpAAHTqwAB060AAdOvAAHTsQAB07MAAdO1AAHTxAAB08cAAdPKAAHTzQAB09AAAdPTAAHT1gAB09kAAdPbAAHUGgAB1BwAAdQeAAHUIAAB1CMAAdQkAAHUJQAB1CYAAdQnAAHUKQAB1CsAAdQsAAHULQAB1C8AAdQwAAHUbwAB1HEAAdRzAAHUdQAB1HgAAdR5AAHUegAB1HsAAdR8AAHUfgAB1IAAAdSBAAHUggAB1IQAAdSFAAHUxAAB1MYAAdTIAAHUygAB1M0AAdTOAAHUzwAB1NAAAdTRAAHU0wAB1NUAAdTWAAHU1wAB1NkAAdTaAAHVGQAB1RsAAdUdAAHVHwAB1SIAAdUjAAHVJAAB1SUAAdUmAAHVKAAB1SoAAdUrAAHVLAAB1S4AAdUvAAHVbgAB1XAAAdVyAAHVdAAB1XcAAdV4AAHVeQAB1XoAAdV7AAHVfQAB1X8AAdWAAAHVgQAB1YMAAdWEAAHVwwAB1cUAAdXHAAHVyQAB1cwAAdXNAAHVzgAB1c8AAdXQAAHV0gAB1dQAAdXVAAHV1gAB1dgAAdXZAAHWGAAB1hoAAdYcAAHWHgAB1iEAAdYiAAHWIwAB1iQAAdYlAAHWJwAB1ikAAdYqAAHWKwAB1i0AAdYuAAHWNwAB1jgAAdY6AAHWeQAB1nsAAdZ9AAHWfwAB1oIAAdaDAAHWhAAB1oUAAdaGAAHWiAAB1ooAAdaLAAHWjAAB1o4AAdaPAAHWzgAB1tAAAdbSAAHW1AAB1tcAAdbYAAHW2QAB1toAAdbbAAHW3QAB1t8AAdbgAAHW4QAB1uMAAdbkAAHXIwAB1yUAAdcoAAHXKgAB1y0AAdcuAAHXLwAB1zAAAdcxAAHXMwAB1zUAAdc2AAHXNwAB1zkAAdc6AAHXQwAB10QAAddGAAHXhQAB14cAAdeJAAHXiwAB144AAdePAAHXkAAB15EAAdeSAAHXlAAB15YAAdeXAAHXmAAB15oAAdebAAHX2gAB19wAAdfeAAHX4AAB1+MAAdfkAAHX5QAB1+YAAdfnAAHX6QAB1+sAAdfsAAHX7QAB1+8AAdfwAAHYLwAB2DEAAdg0AAHYNgAB2DkAAdg6AAHYOwAB2DwAAdg9AAHYPwAB2EEAAdhCAAHYQwAB2EUAAdhGAAHYkQAB2LQAAdjUAAHY9AAB2PYAAdj4AAHY+gAB2PwAAdj+AAHY/wAB2QAAAdkDAAHZBAAB2QYAAdkHAAHZCQAB2QsAAdkMAAHZDQAB2RAAAdkRAAHZFgAB2SMAAdkoAAHZKgAB2SwAAdkxAAHZNAAB2TcAAdk5AAHZXgAB2YIAAdmpAAHZzQAB2dAAAdnSAAHZ1AAB2dYAAdnYAAHZ2gAB2dsAAdneAAHZ6wAB2fwAAdn+AAHaAAAB2gIAAdoEAAHaBgAB2ggAAdoKAAHaDAAB2h0AAdogAAHaIwAB2iYAAdopAAHaLAAB2i8AAdoyAAHaNQAB2jcAAdp2AAHaeAAB2noAAdp8AAHafwAB2oAAAdqBAAHaggAB2oMAAdqFAAHahwAB2ogAAdqJAAHaiwAB2owAAdrLAAHazQAB2s8AAdrRAAHa1AAB2tUAAdrWAAHa1wAB2tgAAdraAAHa3AAB2t0AAdreAAHa4AAB2uEAAdsgAAHbIgAB2yUAAdsnAAHbKgAB2ysAAdssAAHbLQAB2y4AAdswAAHbMgAB2zMAAds0AAHbNgAB2zcAAdtEAAHbRQAB20YAAdtIAAHbhwAB24kAAduLAAHbjQAB25AAAduRAAHbkgAB25MAAduUAAHblgAB25gAAduZAAHbmgAB25wAAdudAAHb3AAB294AAdvgAAHb4gAB2+UAAdvmAAHb5wAB2+gAAdvpAAHb6wAB2+0AAdvuAAHb7wAB2/EAAdvyAAHcMQAB3DMAAdw1AAHcNwAB3DoAAdw7AAHcPAAB3D0AAdw+AAHcQAAB3EIAAdxDAAHcRAAB3EYAAdxHAAHchgAB3IgAAdyKAAHcjAAB3I8AAdyQAAHckQAB3JIAAdyTAAHclQAB3JcAAdyYAAHcmQAB3JsAAdycAAHc2wAB3N0AAdzfAAHc4QAB3OQAAdzlAAHc5gAB3OcAAdzoAAHc6gAB3OwAAdztAAHc7gAB3PAAAdzxAAHdFgAB3ToAAd1hAAHdhQAB3YgAAd2KAAHdjAAB3Y4AAd2QAAHdkgAB3ZMAAd2WAAHdowAB3bIAAd20AAHdtgAB3bgAAd26AAHdvAAB3b4AAd3AAAHdzwAB3dIAAd3VAAHd2AAB3dsAAd3eAAHd4QAB3eQAAd3mAAHeJQAB3icAAd4pAAHeKwAB3i4AAd4vAAHeMAAB3jEAAd4yAAHeNAAB3jYAAd43AAHeOAAB3joAAd47AAHeegAB3nwAAd5+AAHegAAB3oMAAd6EAAHehQAB3oYAAd6HAAHeiQAB3osAAd6MAAHejQAB3o8AAd6QAAHezwAB3tEAAd7TAAHe1QAB3tgAAd7ZAAHe2gAB3tsAAd7cAAHe3gAB3uAAAd7hAAHe4gAB3uQAAd7lAAHfJAAB3yYAAd8pAAHfKwAB3y4AAd8vAAHfMAAB3zEAAd8yAAHfNAAB3zYAAd83AAHfOAAB3zoAAd87AAHfegAB33wAAd9+AAHfgAAB34MAAd+EAAHfhQAB34YAAd+HAAHfiQAB34sAAd+MAAHfjQAB348AAd+QAAHfzwAB39EAAd/TAAHf1QAB39gAAd/ZAAHf2gAB39sAAd/cAAHf3gAB3+AAAd/hAAHf4gAB3+QAAd/lAAHgJAAB4CYAAeAoAAHgKgAB4C0AAeAuAAHgLwAB4DAAAeAxAAHgMwAB4DUAAeA2AAHgNwAB4DkAAeA6AAHghQAB4KgAAeDIAAHg6AAB4OoAAeDsAAHg7gAB4PAAAeDyAAHg8wAB4PQAAeD3AAHg+AAB4PoAAeD7AAHg/QAB4P8AAeEAAAHhAQAB4QQAAeEFAAHhCgAB4RcAAeEcAAHhHgAB4SAAAeElAAHhKAAB4SsAAeEtAAHhUgAB4XYAAeGdAAHhwQAB4cQAAeHGAAHhyAAB4coAAeHMAAHhzgAB4c8AAeHSAAHh3wAB4fAAAeHyAAHh9AAB4fYAAeH4AAHh+gAB4fwAAeH+AAHiAAAB4hEAAeIUAAHiFwAB4hoAAeIdAAHiIAAB4iMAAeImAAHiKQAB4isAAeJqAAHibAAB4m4AAeJwAAHicwAB4nQAAeJ1AAHidgAB4ncAAeJ5AAHiewAB4nwAAeJ9AAHifwAB4oAAAeK/AAHiwQAB4sMAAeLFAAHiyAAB4skAAeLKAAHiywAB4swAAeLOAAHi0AAB4tEAAeLSAAHi1AAB4tUAAeMUAAHjFgAB4xkAAeMbAAHjHgAB4x8AAeMgAAHjIQAB4yIAAeMkAAHjJgAB4ycAAeMoAAHjKgAB4ysAAeM4AAHjOQAB4zoAAeM8AAHjewAB430AAeN/AAHjgQAB44QAAeOFAAHjhgAB44cAAeOIAAHjigAB44wAAeONAAHjjgAB45AAAeORAAHj0AAB49IAAePUAAHj1gAB49kAAePaAAHj2wAB49wAAePdAAHj3wAB4+EAAePiAAHj4wAB4+UAAePmAAHkJQAB5CcAAeQpAAHkKwAB5C4AAeQvAAHkMAAB5DEAAeQyAAHkNAAB5DYAAeQ3AAHkOAAB5DoAAeQ7AAHkegAB5HwAAeR+AAHkgAAB5IMAAeSEAAHkhQAB5IYAAeSHAAHkiQAB5IsAAeSMAAHkjQAB5I8AAeSQAAHkzwAB5NEAAeTTAAHk1QAB5NgAAeTZAAHk2gAB5NsAAeTcAAHk3gAB5OAAAeThAAHk4gAB5OQAAeTlAAHlCgAB5S4AAeVVAAHleQAB5XwAAeV+AAHlgAAB5YIAAeWEAAHlhgAB5YcAAeWKAAHllwAB5aYAAeWoAAHlqgAB5awAAeWuAAHlsAAB5bIAAeW0AAHlwwAB5cYAAeXJAAHlzAAB5c8AAeXSAAHl1QAB5dgAAeXaAAHmGQAB5hsAAeYeAAHmIAAB5iMAAeYkAAHmJQAB5iYAAeYnAAHmKQAB5isAAeYsAAHmLQAB5i8AAeYwAAHmbwAB5nEAAeZzAAHmdQAB5ngAAeZ5AAHmegAB5nsAAeZ8AAHmfgAB5oAAAeaBAAHmggAB5oQAAeaFAAHmxAAB5sYAAebIAAHmygAB5s0AAebOAAHmzwAB5tAAAebRAAHm0wAB5tUAAebWAAHm1wAB5tkAAebaAAHnGQAB5xsAAeceAAHnIAAB5yMAAeckAAHnJQAB5yYAAecnAAHnKQAB5ysAAecsAAHnLQAB5y8AAecwAAHnbwAB53EAAedzAAHndQAB53gAAed5AAHnegAB53sAAed8AAHnfgAB54AAAeeBAAHnggAB54QAAeeFAAHnxAAB58YAAefIAAHnygAB580AAefOAAHnzwAB59AAAefRAAHn0wAB59UAAefWAAHn1wAB59kAAefaAAHoGQAB6BsAAegdAAHoHwAB6CIAAegjAAHoJAAB6CUAAegmAAHoKAAB6CoAAegrAAHoLAAB6C4AAegvAAHoegAB6J0AAei9AAHo3QAB6N8AAejhAAHo4wAB6OUAAejnAAHo6AAB6OkAAejsAAHo7QAB6O8AAejwAAHo8gAB6PQAAej1AAHo9gAB6PkAAej6AAHo/wAB6QwAAekRAAHpEwAB6RUAAekaAAHpHQAB6SAAAekiAAHpRwAB6WsAAemSAAHptgAB6bkAAem7AAHpvQAB6b8AAenBAAHpwwAB6cQAAenHAAHp1AAB6eUAAennAAHp6QAB6esAAentAAHp7wAB6fEAAenzAAHp9QAB6gYAAeoJAAHqDAAB6g8AAeoSAAHqFQAB6hgAAeobAAHqHgAB6iAAAepfAAHqYQAB6mMAAeplAAHqaAAB6mkAAepqAAHqawAB6mwAAepuAAHqcAAB6nEAAepyAAHqdAAB6nUAAeq0AAHqtgAB6rgAAeq6AAHqvQAB6r4AAeq/AAHqwAAB6sEAAerDAAHqxQAB6sYAAerHAAHqyQAB6soAAesJAAHrCwAB6w4AAesQAAHrEwAB6xQAAesVAAHrFgAB6xcAAesZAAHrGwAB6xwAAesdAAHrHwAB6yAAAestAAHrLgAB6y8AAesxAAHrcAAB63IAAet0AAHrdgAB63kAAet6AAHrewAB63wAAet9AAHrfwAB64EAAeuCAAHrgwAB64UAAeuGAAHrxQAB68cAAevJAAHrywAB684AAevPAAHr0AAB69EAAevSAAHr1AAB69YAAevXAAHr2AAB69oAAevbAAHsGgAB7BwAAeweAAHsIAAB7CMAAewkAAHsJQAB7CYAAewnAAHsKQAB7CsAAewsAAHsLQAB7C8AAewwAAHsbwAB7HEAAexzAAHsdQAB7HgAAex5AAHsegAB7HsAAex8AAHsfgAB7IAAAeyBAAHsggAB7IQAAeyFAAHsxAAB7MYAAezIAAHsygAB7M0AAezOAAHszwAB7NAAAezRAAHs0wAB7NUAAezWAAHs1wAB7NkAAezaAAHs/wAB7SMAAe1KAAHtbgAB7XEAAe1zAAHtdQAB7XcAAe15AAHtewAB7XwAAe1/AAHtjAAB7ZsAAe2dAAHtnwAB7aEAAe2jAAHtpQAB7acAAe2pAAHtuAAB7bsAAe2+AAHtwQAB7cQAAe3HAAHtygAB7c0AAe3PAAHuDgAB7hAAAe4SAAHuFAAB7hcAAe4YAAHuGQAB7hoAAe4bAAHuHQAB7h8AAe4gAAHuIQAB7iMAAe4kAAHuYwAB7mUAAe5nAAHuaQAB7mwAAe5tAAHubgAB7m8AAe5wAAHucgAB7nQAAe51AAHudgAB7ngAAe55AAHuuAAB7roAAe68AAHuvgAB7sEAAe7CAAHuwwAB7sQAAe7FAAHuxwAB7skAAe7KAAHuywAB7s0AAe7OAAHvDQAB7w8AAe8RAAHvEwAB7xYAAe8XAAHvGAAB7xkAAe8aAAHvHAAB7x4AAe8fAAHvIAAB7yIAAe8jAAHvYgAB72QAAe9mAAHvaAAB72sAAe9sAAHvbQAB724AAe9vAAHvcQAB73MAAe90AAHvdQAB73cAAe94AAHvtwAB77kAAe+7AAHvvQAB78AAAe/BAAHvwgAB78MAAe/EAAHvxgAB78gAAe/JAAHvygAB78wAAe/NAAHwDAAB8A4AAfAQAAHwEgAB8BUAAfAWAAHwFwAB8BgAAfAZAAHwGwAB8B0AAfAeAAHwHwAB8CEAAfAiAAHwbQAB8JAAAfCwAAHw0AAB8NIAAfDUAAHw1gAB8NgAAfDaAAHw2wAB8NwAAfDfAAHw4AAB8OIAAfDjAAHw5QAB8OcAAfDoAAHw6QAB8OwAAfDtAAHw8gAB8P8AAfEEAAHxBgAB8QgAAfENAAHxEAAB8RMAAfEVAAHxOgAB8V4AAfGFAAHxqQAB8awAAfGuAAHxsAAB8bIAAfG0AAHxtgAB8bcAAfG6AAHxxwAB8dgAAfHaAAHx3AAB8d4AAfHgAAHx4gAB8eQAAfHmAAHx6AAB8fkAAfH8AAHx/wAB8gIAAfIFAAHyCAAB8gsAAfIOAAHyEQAB8hMAAfJSAAHyVAAB8lYAAfJYAAHyWwAB8lwAAfJdAAHyXgAB8l8AAfJhAAHyYwAB8mQAAfJlAAHyZwAB8mgAAfKnAAHyqQAB8qsAAfKtAAHysAAB8rEAAfKyAAHyswAB8rQAAfK2AAHyuAAB8rkAAfK6AAHyvAAB8r0AAfL8AAHy/gAB8wEAAfMDAAHzBgAB8wcAAfMIAAHzCQAB8woAAfMMAAHzDgAB8w8AAfMQAAHzEgAB8xMAAfMgAAHzIQAB8yIAAfMkAAHzYwAB82UAAfNnAAHzaQAB82wAAfNtAAHzbgAB828AAfNwAAHzcgAB83QAAfN1AAHzdgAB83gAAfN5AAHzuAAB87oAAfO8AAHzvgAB88EAAfPCAAHzwwAB88QAAfPFAAHzxwAB88kAAfPKAAHzywAB880AAfPOAAH0DQAB9A8AAfQRAAH0EwAB9BYAAfQXAAH0GAAB9BkAAfQaAAH0HAAB9B4AAfQfAAH0IAAB9CIAAfQjAAH0YgAB9GQAAfRmAAH0aAAB9GsAAfRsAAH0bQAB9G4AAfRvAAH0cQAB9HMAAfR0AAH0dQAB9HcAAfR4AAH0twAB9LkAAfS7AAH0vQAB9MAAAfTBAAH0wgAB9MMAAfTEAAH0xgAB9MgAAfTJAAH0ygAB9MwAAfTNAAH08gAB9RYAAfU9AAH1YQAB9WQAAfVmAAH1aAAB9WoAAfVsAAH1bgAB9W8AAfVyAAH1fwAB9Y4AAfWQAAH1kgAB9ZQAAfWWAAH1mAAB9ZoAAfWcAAH1qwAB9a4AAfWxAAH1tAAB9bcAAfW6AAH1vQAB9cAAAfXCAAH2AQAB9gMAAfYFAAH2BwAB9goAAfYLAAH2DAAB9g0AAfYOAAH2EAAB9hIAAfYTAAH2FAAB9hYAAfYXAAH2VgAB9lgAAfZaAAH2XAAB9l8AAfZgAAH2YQAB9mIAAfZjAAH2ZQAB9mcAAfZoAAH2aQAB9msAAfZsAAH2qwAB9q0AAfavAAH2sQAB9rQAAfa1AAH2tgAB9rcAAfa4AAH2ugAB9rwAAfa9AAH2vgAB9sAAAfbBAAH3AAAB9wIAAfcFAAH3BwAB9woAAfcLAAH3DAAB9w0AAfcOAAH3EAAB9xIAAfcTAAH3FAAB9xYAAfcXAAH3VgAB91gAAfdaAAH3XAAB918AAfdgAAH3YQAB92IAAfdjAAH3ZQAB92cAAfdoAAH3aQAB92sAAfdsAAH3qwAB960AAfevAAH3sQAB97QA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AgL9AAIC/gACAv8AAgMBAAIDAgACAw8AAgMQAAIDEQACAxMAAgNSAAIDVAACA1YAAgNYAAIDWwACA1wAAgNdAAIDXgACA18AAgNhAAIDYwACA2QAAgNlAAIDZwACA2gAAgOnAAIDqQACA6sAAgOtAAIDsAACA7EAAgOyAAIDswACA7QAAgO2AAIDuAACA7kAAgO6AAIDvAACA70AAgP8AAID/gACBAAAAgQCAAIEBQACBAYAAgQHAAIECAACBAkAAgQLAAIEDQACBA4AAgQPAAIEEQACBBIAAgRRAAIEUwACBFUAAgRXAAIEWgACBFsAAgRcAAIEXQACBF4AAgRgAAIEYgACBGMAAgRkAAIEZgACBGcAAgSmAAIEqAACBKoAAgSsAAIErwACBLAAAgSxAAIEsgACBLMAAgS1AAIEtwACBLgAAgS5AAIEuwACBLwAAgThAAIFBQACBSwAAgVQAAIFUwACBVUAAgVXAAIFWQACBVsAAgVdAAIFXgACBWEAAgVuAAIFfQACBX8AAgWBAAIFgwACBYUAAgWHAAIFiQACBYsAAgWaAAIFnQACBaAAAgWjAAIFpgACBakAAgWsAAIFrwACBbEAAgXwAAIF8gACBfQAAgX2AAIF+QACBfoAAgX7AAIF/AACBf0AAgX/AAIGAQACBgIAAgYDAAIGBQACBgYAAgZFAAIGRwACBkkAAgZLAAIGTgACBk8AAgZQAAIGUQACBlIAAgZUAAIGVgACBlcAAgZYAAIGWgACBlsAAgaaAAIGnAACBp4AAgagAAIGowACBqQAAgalAAIGpgACBqcAAgapAAIGqwACBqwAAgatAAIGrwACBrAAAgbvAAIG8QACBvQAAgb2AAIG+QACBvoAAgb7AAIG/AACBv0AAgb/AAIHAQACBwIAAgcDAAIHBQACBwYAAgdJAAIHbQACB5EAAge0AAIH2wACB/sAAggiAAIISQACCGkAAgiNAAIIsQACCLMAAgi2AAIIuAACCLoAAgi8AAIIvwACCMIAAgjEAAIIxgACCMkAAgjLAAIIzQACCNAAAgjTAAII1AACCNkAAgjmAAII6QACCOsAAgjuAAII8QACCPMAAgkYAAIJPAACCWMAAgmHAAIJigACCYwAAgmOAAIJkAACCZIAAgmUAAIJlQACCZgAAgmlAAIJuAACCboAAgm8AAIJvgACCcAAAgnCAAIJxAACCcYAAgnIAAIJygACCd0AAgngAAIJ4wACCeYAAgnpAAIJ7AACCe8AAgnyAAIJ9QACCfgAAgn6AAIKOQACCjsAAgo+AAIKQAACCkMAAgpEAAIKRQACCkYAAgpHAAIKSQACCksAAgpMAAIKTQACCk8AAgpQAAIKWQACCloAAgpcAAIKmwACCp0AAgqfAAIKoQACCqQAAgqlAAIKpgACCqcAAgqoAAIKqgACCqwAAgqtAAIKrgACCrAAAgqxAAIK8AACCvIAAgr1AAIK9wACCvoAAgr7AAIK/AACCv0AAgr+AAILAAACCwIAAgsDAAILBAACCwYAAgsHAAILEAACCxEAAgsTAAILUgACC1QAAgtWAAILWAACC1sAAgtcAAILXQACC14AAgtfAAILYQACC2MAAgtkAAILZQACC2cAAgtoAAILpwACC6kAAgusAAILrgACC7EAAguyAAILswACC7QAAgu1AAILtwACC7kAAgu6AAILuwACC70AAgu+AAILxwACC8gAAgvKAAIMCQACDAsAAgwNAAIMDwACDBIAAgwTAAIMFAACDBUAAgwWAAIMGAACDBoAAgwbAAIMHAACDB4AAgwfAAIMXgACDGAAAgxjAAIMZQACDGgAAgxpAAIMagACDGsAAgxsAAIMbgACDHAAAgxxAAIMcgACDHQAAgx1AAIMggACDIMAAgyEAAIMhgACDMUAAgzHAAIMyQACDMsAAgzOAAIMzwACDNAAAgzRAAIM0gACDNQAAgzWAAIM1wACDNgAAgzaAAIM2wACDRoAAg0cAAINHwACDSEAAg0kAAINJQACDSYAAg0nAAINKAACDSoAAg0sAAINLQACDS4AAg0wAAINMQACDUQAAg1RAAINYgACDWUAAg1oAAINawACDW0AAg1wAAINcwACDXYAAg15AAINigACDY0AAg2QAAINkwACDZYAAg2ZAAINnAACDZ8AAg2iAAINpAACDasAAg22AAINxAACDdEAAg3cAAIN6QACDfUAAg5AAAIOYwACDoMAAg6jAAIOpQACDqcAAg6pAAIOqwACDq4AAg6vAAIOsAACDrMAAg60AAIOtgACDrcAAg65AAIOvAACDr0AAg6+AAIOwQACDsIAAg7HAAIO1AACDtkAAg7bAAIO3QACDuIAAg7lAAIO6AACDuoAAg8PAAIPMwACD1oAAg9+AAIPgQACD4MAAg+FAAIPhwACD4kAAg+LAAIPjAACD48AAg+cAAIPrQACD68AAg+xAAIPswACD7UAAg+3AAIPuQACD7sAAg+9AAIPzgACD9EAAg/UAAIP1wACD9oAAg/dAAIP4AACD+MAAg/mAAIP6AACECcAAhApAAIQKwACEC0AAhAwAAIQMQACEDIAAhAzAAIQNAACEDYAAhA4AAIQOQACEDoAAhA8AAIQPQACEHwAAhB+AAIQgAACEIIAAhCFAAIQhgACEIcAAhCIAAIQiQACEIsAAhCNAAIQjgACEI8AAhCRAAIQkgACENEAAhDTAAIQ1gACENgAAhDbAAIQ3AACEN0AAhDeAAIQ3wACEOEAAhDjAAIQ5AACEOUAAhDnAAIQ6AACEPUAAhD2AAIQ9wACEPkAAhE4AAIROgACETwAAhE+AAIRQQACEUIAAhFDAAIRRAACEUUAAhFHAAIRSQACEUoAAhFLAAIRTQACEU4AAhGNAAIRjwACEZEAAhGTAAIRlgACEZcAAhGYAAIRmQACEZoAAhGcAAIRngACEZ8AAhGgAAIRogACEaMAAhHiAAIR5AACEeYAAhHoAAIR6wACEewAAhHtAAIR7gACEe8AAhHxAAIR8wACEfQAAhH1AAIR9wACEfgAAhI3AAISOQACEjsAAhI9AAISQAACEkEAAhJCAAISQwACEkQAAhJGAAISSAACEkkAAhJKAAISTAACEk0AAhKMAAISjgACEpAAAhKSAAISlQACEpYAAhKXAAISmAACEpkAAhKbAAISnQACEp4AAhKfAAISoQACEqIAAhLHAAIS6wACExIAAhM2AAITOQACEzsAAhM9AAITPwACE0EAAhNDAAITRAACE0cAAhNUAAITYwACE2UAAhNnAAITaQACE2sAAhNtAAITbwACE3EAAhOAAAITgwACE4YAAhOJAAITjAACE48AAhOSAAITlQACE5cAAhPWAAIT2AACE9oAAhPcAAIT3wACE+AAAhPhAAIT4gACE+MAAhPlAAIT5wACE+gAAhPpAAIT6wACE+wAAhQrAAIULQACFC8AAhQxAAIUNAACFDUAAhQ2AAIUNwACFDgAAhQ6AAIUPAACFD0AAhQ+AAIUQAACFEEAAhSAAAIUggACFIQAAhSGAAIUiQACFIoAAhSLAAIUjAACFI0AAhSPAAIUkQACFJIAAhSTAAIUlQACFJYAAhTVAAIU1wACFNkAAhTbAAIU3gACFN8AAhTgAAIU4QACFOIAAhTkAAIU5gACFOcAAhToAAIU6gACFOsAAhUqAAIVLAACFS4AAhUwAAIVMwACFTQAAhU1AAIVNgACFTcAAhU5AAIVOwACFTwAAhU9AAIVPwACFUAAAhV/AAIVgQACFYMAAhWFAAIViAACFYkAAhWKAAIViwACFYwAAhWOAAIVkAACFZEAAhWSAAIVlAACFZUAAhXUAAIV1gACFdgAAhXaAAIV3QACFd4AAhXfAAIV4AACFeEAAhXjAAIV5QACFeYAAhXnAAIV6QACFeoAAhY1AAIWWAACFngAAhaYAAIWmgACFpwAAhaeAAIWoAACFqMAAhakAAIWpQACFqgAAhapAAIWqwACFqwAAhauAAIWsQACFrIAAhazAAIWtgACFrcAAha8AAIWyQACFs4AAhbQAAIW0gACFtcAAhbaAAIW3QACFt8AAhcEAAIXKAACF08AAhdzAAIXdgACF3gAAhd6AAIXfAACF34AAheAAAIXgQACF4QAAheRAAIXogACF6QAAhemAAIXqAACF6oAAhesAAIXrgACF7AAAheyAAIXwwACF8YAAhfJAAIXzAACF88AAhfSAAIX1QACF9gAAhfbAAIX3QACGBwAAhgeAAIYIAACGCIAAhglAAIYJgACGCcAAhgoAAIYKQACGCsAAhgtAAIYLgACGC8AAhgxAAIYMgACGHEAAhhzAAIYdQACGHcAAhh6AAIYewACGHwAAhh9AAIYfgACGIAAAhiCAAIYgwACGIQAAhiGAAIYhwACGMYAAhjIAAIYywACGM0AAhjQAAIY0QACGNIAAhjTAAIY1AACGNYAAhjYAAIY2QACGNoAAhjcAAIY3QACGOoAAhjrAAIY7AACGO4AAhktAAIZLwACGTEAAhkzAAIZNgACGTcAAhk4AAIZOQACGToAAhk8AAIZPgACGT8AAhlAAAIZQgACGUMAAhmCAAIZhAACGYYAAhmIAAIZiwACGYwAAhmNAAIZjgACGY8AAhmRAAIZkwACGZQAAhmVAAIZlwACGZgAAhnXAAIZ2QACGdsAAhndAAIZ4AACGeEAAhniAAIZ4wACGeQAAhnmAAIZ6AACGekAAhnqAAIZ7AACGe0AAhosAAIaLgACGjAAAhoyAAIaNQACGjYAAho3AAIaOAACGjkAAho7AAIaPQACGj4AAho/AAIaQQACGkIAAhqBAAIagwACGoUAAhqHAAIaigACGosAAhqMAAIajQACGo4AAhqQAAIakgACGpMAAhqUAAIalgACGpcAAhq8AAIa4AACGwcAAhsrAAIbLgACGzAAAhsyAAIbNAACGzYAAhs4AAIbOQACGzwAAhtJAAIbWAACG1oAAhtcAAIbXgACG2AAAhtiAAIbZAACG2YAAht1AAIbeAACG3sAAht+AAIbgQACG4QAAhuHAAIbigACG4wAAhvLAAIbzQACG88AAhvRAAIb1AACG9UAAhvWAAIb1wACG9gAAhvaAAIb3AACG90AAhveAAIb4AACG+EAAhwgAAIcIgACHCQAAhwmAAIcKQACHCoAAhwrAAIcLAACHC0AAhwvAAIcMQACHDIAAhwzAAIcNQACHDYAAhx1AAIcdwACHHkAAhx7AAIcfgACHH8AAhyAAAIcgQACHIIAAhyEAAIchgACHIcAAhyIAAIcigACHIsAAhzKAAIczAACHM4AAhzQAAIc0wACHNQAAhzVAAIc1gACHNcAAhzZAAIc2wACHNwAAhzdAAIc3wACHOAAAh0fAAIdIQACHSMAAh0lAAIdKAACHSkAAh0qAAIdKwACHSwAAh0uAAIdMAACHTEAAh0yAAIdNAACHTUAAh10AAIddgACHXgAAh16AAIdfQACHX4AAh1/AAIdgAACHYEAAh2DAAIdhQACHYYAAh2HAAIdiQACHYoAAh3JAAIdywACHc0AAh3PAAId0gACHdMAAh3UAAId1QACHdYAAh3YAAId2gACHdsAAh3cAAId3gACHd8AAh4qAAIeTQACHm0AAh6NAAIejwACHpEAAh6TAAIelQACHpgAAh6ZAAIemgACHp0AAh6eAAIeoAACHqEAAh6jAAIepgACHqcAAh6oAAIeqwACHqwAAh6xAAIevgACHsMAAh7FAAIexwACHswAAh7PAAIe0gACHtQAAh75AAIfHQACH0QAAh9oAAIfawACH20AAh9vAAIfcQACH3MAAh91AAIfdgACH3kAAh+GAAIflwACH5kAAh+bAAIfnQACH58AAh+hAAIfowACH6UAAh+nAAIfuAACH7sAAh++AAIfwQACH8QAAh/HAAIfygACH80AAh/QAAIf0gACIBEAAiATAAIgFQACIBcAAiAaAAIgGwACIBwAAiAdAAIgHgACICAAAiAiAAIgIwACICQAAiAmAAIgJwACIGYAAiBoAAIgagACIGwAAiBvAAIgcAACIHEAAiByAAIgcwACIHUAAiB3AAIgeAACIHkAAiB7AAIgfAACILsAAiC9AAIgwAACIMIAAiDFAAIgxgACIMcAAiDIAAIgyQACIMsAAiDNAAIgzgACIM8AAiDRAAIg0gACIN8AAiDgAAIg4QACIOMAAiEiAAIhJAACISYAAiEoAAIhKwACISwAAiEtAAIhLgACIS8AAiExAAIhMwACITQAAiE1AAIhNwACITgAAiF3AAIheQACIXsAAiF9AAIhgAACIYEAAiGCAAIhgwACIYQAAiGGAAIhiAACIYkAAiGKAAIhjAACIY0AAiHMAAIhzgACIdAAAiHSAAIh1QACIdYAAiHXAAIh2AACIdkAAiHbAAIh3QACId4AAiHfAAIh4QACIeIAAiIhAAIiIwACIiUAAiInAAIiKgACIisAAiIsAAIiLQACIi4AAiIwAAIiMgACIjMAAiI0AAIiNgACIjcAAiJ2AAIieAACInoAAiJ8AAIifwACIoAAAiKBAAIiggACIoMAAiKFAAIihwACIogAAiKJAAIiiwACIowAAiKxAAIi1QACIvwAAiMgAAIjIwACIyUAAiMnAAIjKQACIysAAiMtAAIjLgACIzEAAiM+AAIjTQACI08AAiNRAAIjUwACI1UAAiNXAAIjWQACI1sAAiNqAAIjbQACI3AAAiNzAAIjdgACI3kAAiN8AAIjfwACI4EAAiPAAAIjwgACI8QAAiPGAAIjyQACI8oAAiPLAAIjzAACI80AAiPPAAIj0QACI9IAAiPTAAIj1QACI9YAAiQVAAIkFwACJBkAAiQbAAIkHgACJB8AAiQgAAIkIQACJCIAAiQkAAIkJgACJCcAAiQoAAIkKgACJCsAAiRqAAIkbAACJG4AAiRwAAIkcwACJHQAAiR1AAIkdgACJHcAAiR5AAIkewACJHwAAiR9AAIkfwACJIAAAiS/AAIkwQACJMQAAiTGAAIkyQACJMoAAiTLAAIkzAACJM0AAiTPAAIk0QACJNIAAiTTAAIk1QACJNYAAiUVAAIlFwACJRkAAiUbAAIlHgACJR8AAiUgAAIlIQACJSIAAiUkAAIlJgACJScAAiUoAAIlKgACJSsAAiVqAAIlbAACJW4AAiVwAAIlcwACJXQAAiV1AAIldgACJXcAAiV5AAIlewACJXwAAiV9AAIlfwACJYAAAiW/AAIlwQACJcMAAiXFAAIlyAACJckAAiXKAAIlywACJcwAAiXOAAIl0AACJdEAAiXSAAIl1AACJdUAAiYgAAImQwACJmMAAiaDAAImhQACJocAAiaJAAImiwACJo4AAiaPAAImkAACJpMAAiaUAAImlgACJpcAAiaZAAImmwACJpwAAiadAAImoAACJqEAAiamAAImswACJrgAAia6AAImvAACJsEAAibEAAImxwACJskAAibuAAInEgACJzkAAiddAAInYAACJ2IAAidkAAInZgACJ2gAAidqAAInawACJ24AAid7AAInjAACJ44AAieQAAInkgACJ5QAAieWAAInmAACJ5oAAiecAAInrQACJ7AAAiezAAIntgACJ7kAAie8AAInvwACJ8IAAifFAAInxwACKAYAAigIAAIoCgACKAwAAigPAAIoEAACKBEAAigSAAIoEwACKBUAAigXAAIoGAACKBkAAigbAAIoHAACKFsAAihdAAIoXwACKGEAAihkAAIoZQACKGYAAihnAAIoaAACKGoAAihsAAIobQACKG4AAihwAAIocQACKLAAAiiyAAIotQACKLcAAii6AAIouwACKLwAAii9AAIovgACKMAAAijCAAIowwACKMQAAijGAAIoxwACKNQAAijVAAIo1gACKNgAAikXAAIpGQACKRsAAikdAAIpIAACKSEAAikiAAIpIwACKSQAAikmAAIpKAACKSkAAikqAAIpLAACKS0AAilsAAIpbgACKXAAAilyAAIpdQACKXYAAil3AAIpeAACKXkAAil7AAIpfQACKX4AAil/AAIpgQACKYIAAinBAAIpwwACKcUAAinHAAIpygACKcsAAinMAAIpzQACKc4AAinQAAIp0gACKdMAAinUAAIp1gACKdcAAioWAAIqGAACKhoAAiocAAIqHwACKiAAAiohAAIqIgACKiMAAiolAAIqJwACKigAAiopAAIqKwACKiwAAiprAAIqbQACKm8AAipxAAIqdAACKnUAAip2AAIqdwACKngAAip6AAIqfAACKn0AAip+AAIqgAACKoEAAiqmAAIqygACKvEAAisVAAIrGAACKxoAAiscAAIrHgACKyAAAisiAAIrIwACKyYAAiszAAIrQgACK0QAAitGAAIrSAACK0oAAitMAAIrTgACK1AAAitfAAIrYgACK2UAAitoAAIrawACK24AAitxAAIrdAACK3YAAiu1AAIrtwACK7oAAiu8AAIrvwACK8AAAivBAAIrwgACK8MAAivFAAIrxwACK8gAAivJAAIrywACK8wAAiwLAAIsDQACLA8AAiwRAAIsFAACLBUAAiwWAAIsFwACLBgAAiwaAAIsHAACLB0AAiweAAIsIAACLCEAAixgAAIsYgACLGQAAixmAAIsaQACLGoAAixrAAIsbAACLG0AAixvAAIscQACLHIAAixzAAIsdQACLHYAAiy1AAIstwACLLoAAiy8AAIsvwACLMAAAizBAAIswgACLMMAAizFAAIsxwACLMgAAizJAAIsywACLMwAAi0LAAItDQACLQ8AAi0RAAItFAACLRUAAi0WAAItFwACLRgAAi0aAAItHAACLR0AAi0eAAItIAACLSEAAi1gAAItYgACLWQAAi1mAAItaQACLWoAAi1rAAItbAACLW0AAi1vAAItcQACLXIAAi1zAAItdQACLXYAAi21AAIttwACLbkAAi27AAItvgACLb8AAi3AAAItwQACLcIAAi3EAAItxgACLccAAi3IAAItygACLcsAAi4WAAIuOQACLlkAAi55AAIuewACLn0AAi5/AAIugQACLoQAAi6FAAIuhgACLokAAi6KAAIujAACLo0AAi6PAAIukgACLpMAAi6UAAIulwACLpgAAi6dAAIuqgACLq8AAi6xAAIuswACLrgAAi67AAIuvgACLsAAAi7lAAIvCQACLzAAAi9UAAIvVwACL1kAAi9bAAIvXQACL18AAi9hAAIvYgACL2UAAi9yAAIvgwACL4UAAi+HAAIviQACL4sAAi+NAAIvjwACL5EAAi+TAAIvpAACL6cAAi+qAAIvrQACL7AAAi+zAAIvtgACL7kAAi+8AAIvvgACL/0AAi//AAIwAQACMAMAAjAGAAIwBwACMAgAAjAJAAIwCgACMAwAAjAOAAIwDwACMBAAAjASAAIwEwACMFIAAjBUAAIwVgACMFgAAjBbAAIwXAACMF0AAjBeAAIwXwACMGEAAjBjAAIwZAACMGUAAjBnAAIwaAACMKcAAjCpAAIwrAACMK4AAjCxAAIwsgACMLMAAjC0AAIwtQACMLcAAjC5AAIwugACMLsAAjC9AAIwvgACMMsAAjDMAAIwzQACMM8AAjEOAAIxEAACMRIAAjEUAAIxFwACMRgAAjEZAAIxGgACMRsAAjEdAAIxHwACMSAAAjEhAAIxIwACMSQAAjFjAAIxZQACMWcAAjFpAAIxbAACMW0AAjFuAAIxbwACMXAAAjFyAAIxdAACMXUAAjF2AAIxeAACMXkAAjG4AAIxugACMbwAAjG+AAIxwQACMcIAAjHDAAIxxAACMcUAAjHHAAIxyQACMcoAAjHLAAIxzQACMc4AAjINAAIyDwACMhEAAjITAAIyFgACMhcAAjIYAAIyGQACMhoAAjIcAAIyHgACMh8AAjIgAAIyIgACMiMAAjJiAAIyZAACMmYAAjJoAAIyawACMmwAAjJtAAIybgACMm8AAjJxAAIycwACMnQAAjJ1AAIydwACMngAAjKdAAIywQACMugAAjMMAAIzDwACMxEAAjMTAAIzFQACMxcAAjMZAAIzGgACMx0AAjMqAAIzOQACMzsAAjM9AAIzPwACM0EAAjNDAAIzRQACM0cAAjNWAAIzWQACM1wAAjNfAAIzYgACM2UAAjNoAAIzawACM20AAjOsAAIzrgACM7AAAjOyAAIztQACM7YAAjO3AAIzuAACM7kAAjO7AAIzvQACM74AAjO/AAIzwQACM8IAAjQBAAI0AwACNAUAAjQHAAI0CgACNAsAAjQMAAI0DQACNA4AAjQQAAI0EgACNBMAAjQUAAI0FgACNBcAAjRWAAI0WAACNFoAAjRcAAI0XwACNGAAAjRhAAI0YgACNGMAAjRlAAI0ZwACNGgAAjRpAAI0awACNGwAAjSrAAI0rQACNK8AAjSxAAI0tAACNLUAAjS2AAI0twACNLgAAjS6AAI0vAACNL0AAjS+AAI0wAACNMEAAjUAAAI1AgACNQQAAjUGAAI1CQACNQoAAjULAAI1DAACNQ0AAjUPAAI1EQACNRIAAjUTAAI1FQACNRYAAjVVAAI1VwACNVkAAjVbAAI1XgACNV8AAjVgAAI1YQACNWIAAjVkAAI1ZgACNWcAAjVoAAI1agACNWsAAjWqAAI1rAACNa4AAjWwAAI1swACNbQAAjW1AAI1tgACNbcAAjW5AAI1uwACNbwAAjW9AAI1vwACNcAAAjYLAAI2LgACNk4AAjZuAAI2cAACNnIAAjZ0AAI2dgACNnkAAjZ6AAI2ewACNn4AAjZ/AAI2gQACNoIAAjaEAAI2hwACNogAAjaJAAI2jAACNo0AAjaSAAI2nwACNqQAAjamAAI2qAACNq0AAjawAAI2swACNrUAAjbaAAI2/gACNyUAAjdJAAI3TAACN04AAjdQAAI3UgACN1QAAjdWAAI3VwACN1oAAjdnAAI3eAACN3oAAjd8AAI3fgACN4AAAjeCAAI3hAACN4YAAjeIAAI3mQACN5wAAjefAAI3ogACN6UAAjeoAAI3qwACN64AAjexAAI3swACN/IAAjf0AAI39gACN/gAAjf7AAI3/AACN/0AAjf+AAI3/wACOAEAAjgDAAI4BAACOAUAAjgHAAI4CAACOEcAAjhJAAI4SwACOE0AAjhQAAI4UQACOFIAAjhTAAI4VAACOFYAAjhYAAI4WQACOFoAAjhcAAI4XQACOJwAAjieAAI4oQACOKMAAjimAAI4pwACOKgAAjipAAI4qgACOKwAAjiuAAI4rwACOLAAAjiyAAI4swACOMAAAjjBAAI4wgACOMQAAjkDAAI5BQACOQcAAjkJAAI5DAACOQ0AAjkOAAI5DwACORAAAjkSAAI5FAACORUAAjkWAAI5GAACORkAAjlYAAI5WgACOVwAAjleAAI5YQACOWIAAjljAAI5ZAACOWUAAjlnAAI5aQACOWoAAjlrAAI5bQACOW4AAjmtAAI5rwACObEAAjmzAAI5tgACObcAAjm4AAI5uQACOboAAjm8AAI5vgACOb8AAjnAAAI5wgACOcMAAjoCAAI6BAACOgYAAjoIAAI6CwACOgwAAjoNAAI6DgACOg8AAjoRAAI6EwACOhQAAjoVAAI6FwACOhgAAjpXAAI6WQACOlsAAjpdAAI6YAACOmEAAjpiAAI6YwACOmQAAjpmAAI6aAACOmkAAjpqAAI6bAACOm0AAjqSAAI6tgACOt0AAjsBAAI7BAACOwYAAjsIAAI7CgACOwwAAjsOAAI7DwACOxIAAjsfAAI7LgACOzAAAjsyAAI7NAACOzYAAjs4AAI7OgACOzwAAjtLAAI7TgACO1EAAjtUAAI7VwACO1oAAjtdAAI7YAACO2IAAjuhAAI7owACO6UAAjunAAI7qgACO6sAAjusAAI7rQACO64AAjuwAAI7sgACO7MA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Akc7AAJHPQACRz8AAkdBAAJHQgACR0UAAkdSAAJHYwACR2UAAkdnAAJHaQACR2sAAkdtAAJHbwACR3EAAkdzAAJHhAACR4cAAkeKAAJHjQACR5AAAkeTAAJHlgACR5kAAkecAAJHngACR90AAkffAAJH4QACR+MAAkfmAAJH5wACR+gAAkfpAAJH6gACR+wAAkfuAAJH7wACR/AAAkfyAAJH8wACSDIAAkg0AAJINgACSDgAAkg7AAJIPAACSD0AAkg+AAJIPwACSEEAAkhDAAJIRAACSEUAAkhHAAJISAACSIcAAkiJAAJIjAACSI4AAkiRAAJIkgACSJMAAkiUAAJIlQACSJcAAkiZAAJImgACSJsAAkidAAJIngACSKsAAkisAAJIrQACSK8AAkjuAAJI8AACSPIAAkj0AAJI9wACSPgAAkj5AAJI+gACSPsAAkj9AAJI/wACSQAAAkkBAAJJAwACSQQAAklDAAJJRQACSUcAAklJAAJJTAACSU0AAklOAAJJTwACSVAAAklSAAJJVAACSVUAAklWAAJJWAACSVkAAkmYAAJJmgACSZwAAkmeAAJJoQACSaIAAkmjAAJJpAACSaUAAkmnAAJJqQACSaoAAkmrAAJJrQACSa4AAkntAAJJ7wACSfEAAknzAAJJ9gACSfcAAkn4AAJJ+QACSfoAAkn8AAJJ/gACSf8AAkoAAAJKAgACSgMAAkpCAAJKRAACSkYAAkpIAAJKSwACSkwAAkpNAAJKTgACSk8AAkpRAAJKUwACSlQAAkpVAAJKVwACSlgAAkp9AAJKoQACSsgAAkrsAAJK7wACSvEAAkrzAAJK9QACSvcAAkr5AAJK+gACSv0AAksKAAJLGQACSxsAAksdAAJLHwACSyEAAksjAAJLJQACSycAAks2AAJLOQACSzwAAks/AAJLQgACS0UAAktIAAJLSwACS00AAkuMAAJLjgACS5AAAkuSAAJLlQACS5YAAkuXAAJLmAACS5kAAkubAAJLnQACS54AAkufAAJLoQACS6IAAkvhAAJL4wACS+UAAkvnAAJL6gACS+sAAkvsAAJL7QACS+4AAkvwAAJL8gACS/MAAkv0AAJL9gACS/cAAkw2AAJMOAACTDoAAkw8AAJMPwACTEAAAkxBAAJMQgACTEMAAkxFAAJMRwACTEgAAkxJAAJMSwACTEwAAkyLAAJMjQACTI8AAkyRAAJMlAACTJUAAkyWAAJMlwACTJgAAkyaAAJMnAACTJ0AAkyeAAJMoAACTKEAAkzgAAJM4gACTOQAAkzmAAJM6QACTOoAAkzrAAJM7AACTO0AAkzvAAJM8QACTPIAAkzzAAJM9QACTPYAAk01AAJNNwACTTkAAk07AAJNPgACTT8AAk1AAAJNQQACTUIAAk1EAAJNRgACTUcAAk1IAAJNSgACTUsAAk2KAAJNjAACTY8AAk2RAAJNlAACTZUAAk2WAAJNlwACTZgAAk2aAAJNnAACTZ0AAk2eAAJNoAACTaEAAk2qAAJNqwACTa0AAk3sAAJN7gACTfAAAk3yAAJN9QACTfYAAk33AAJN+AACTfkAAk37AAJN/QACTf4AAk3/AAJOAQACTgIAAk5BAAJOQwACTkUAAk5HAAJOSgACTksAAk5MAAJOTQACTk4AAk5QAAJOUgACTlMAAk5UAAJOVgACTlcAAk6WAAJOmAACTpsAAk6dAAJOoAACTqEAAk6iAAJOowACTqQAAk6mAAJOqAACTqkAAk6qAAJOrAACTq0AAk74AAJPGwACTzsAAk9bAAJPXQACT18AAk9hAAJPYwACT2UAAk9mAAJPZwACT2oAAk9rAAJPbQACT24AAk9wAAJPcgACT3MAAk90AAJPdwACT3gAAk99AAJPigACT48AAk+RAAJPkwACT5gAAk+bAAJPngACT6AAAk/FAAJP6QACUBAAAlA0AAJQNwACUDkAAlA7AAJQPQACUD8AAlBBAAJQQgACUEUAAlBSAAJQYwACUGUAAlBnAAJQaQACUGsAAlBtAAJQbwACUHEAAlBzAAJQhAACUIcAAlCKAAJQjQACUJAAAlCTAAJQlgACUJkAAlCcAAJQngACUN0AAlDfAAJQ4QACUOMAAlDmAAJQ5wACUOgAAlDpAAJQ6gACUOwAAlDuAAJQ7wACUPAAAlDyAAJQ8wACUTIAAlE0AAJRNgACUTgAAlE7AAJRPAACUT0AAlE+AAJRPwACUUEAAlFDAAJRRAACUUUAAlFHAAJRSAACUYcAAlGJAAJRjAACUY4AAlGRAAJRkgACUZMAAlGUAAJRlQACUZcAAlGZAAJRmgACUZsAAlGdAAJRngACUasAAlGsAAJRrQACUa8AAlHuAAJR8AACUfIAAlH0AAJR9wACUfgAAlH5AAJR+gACUfsAAlH9AAJR/wACUgAAAlIBAAJSAwACUgQAAlJDAAJSRQACUkcAAlJJAAJSTAACUk0AAlJOAAJSTwACUlAAAlJSAAJSVAACUlUAAlJWAAJSWAACUlkAAlKYAAJSmgACUpwAAlKeAAJSoQACUqIAAlKjAAJSpAACUqUAAlKnAAJSqQACUqoAAlKrAAJSrQACUq4AAlLtAAJS7wACUvEAAlLzAAJS9gACUvcAAlL4AAJS+QACUvoAAlL8AAJS/gACUv8AAlMAAAJTAgACUwMAAlNCAAJTRAACU0YAAlNIAAJTSwACU0wAAlNNAAJTTgACU08AAlNRAAJTUwACU1QAAlNVAAJTVwACU1gAAlN9AAJToQACU8gAAlPsAAJT7wACU/EAAlPzAAJT9QACU/cAAlP5AAJT+gACU/0AAlQKAAJUGQACVBsAAlQdAAJUHwACVCEAAlQjAAJUJQACVCcAAlQ2AAJUOQACVDwAAlQ/AAJUQgACVEUAAlRIAAJUSwACVE0AAlSMAAJUjgACVJAAAlSSAAJUlQACVJYAAlSXAAJUmAACVJkAAlSbAAJUnQACVJ4AAlSfAAJUoQACVKIAAlThAAJU4wACVOUAAlTnAAJU6gACVOsAAlTsAAJU7QACVO4AAlTwAAJU8gACVPMAAlT0AAJU9gACVPcAAlU2AAJVOAACVToAAlU8AAJVPwACVUAAAlVBAAJVQgACVUMAAlVFAAJVRwACVUgAAlVJAAJVSwACVUwAAlWLAAJVjQACVZAAAlWSAAJVlQACVZYAAlWXAAJVmAACVZkAAlWbAAJVnQACVZ4AAlWfAAJVoQACVaIAAlXlAAJWCQACVi0AAlZQAAJWdwACVpcAAla+AAJW5QACVwUAAlcpAAJXTQACV08AAldSAAJXVAACV1YAAldYAAJXWwACV14AAldgAAJXYgACV2UAAldnAAJXaQACV2wAAldvAAJXcAACV3UAAleCAAJXhQACV4cAAleKAAJXjQACV48AAle0AAJX2AACV/8AAlgjAAJYJgACWCgAAlgqAAJYLAACWC4AAlgwAAJYMQACWDQAAlhBAAJYVAACWFYAAlhYAAJYWgACWFwAAlheAAJYYAACWGIAAlhkAAJYZgACWHkAAlh8AAJYfwACWIIAAliFAAJYiAACWIsAAliOAAJYkQACWJQAAliWAAJY1QACWNcAAljaAAJY3AACWN8AAljgAAJY4QACWOIAAljjAAJY5QACWOcAAljoAAJY6QACWOsAAljsAAJY9QACWPYAAlj4AAJZNwACWTkAAlk7AAJZPQACWUAAAllBAAJZQgACWUMAAllEAAJZRgACWUgAAllJAAJZSgACWUwAAllNAAJZjAACWY4AAlmRAAJZkwACWZYAAlmXAAJZmAACWZkAAlmaAAJZnAACWZ4AAlmfAAJZoAACWaIAAlmjAAJZrAACWa0AAlmvAAJZ7gACWfAAAlnyAAJZ9AACWfcAAln4AAJZ+QACWfoAAln7AAJZ/QACWf8AAloAAAJaAQACWgMAAloEAAJaQwACWkUAAlpIAAJaSgACWk0AAlpOAAJaTwACWlAAAlpRAAJaUwACWlUAAlpWAAJaVwACWlkAAlpaAAJaYwACWmQAAlpmAAJapQACWqcAAlqpAAJaqwACWq4AAlqvAAJasAACWrEAAlqyAAJatAACWrYAAlq3AAJauAACWroAAlq7AAJa+gACWvwAAlr/AAJbAQACWwQAAlsFAAJbBgACWwcAAlsIAAJbCgACWwwAAlsNAAJbDgACWxAAAlsRAAJbHgACWx8AAlsgAAJbIgACW2EAAltjAAJbZQACW2cAAltqAAJbawACW2wAAlttAAJbbgACW3AAAltyAAJbcwACW3QAAlt2AAJbdwACW7YAAlu4AAJbugACW7wAAlu/AAJbwAACW8EAAlvCAAJbwwACW8UAAlvHAAJbyAACW8kAAlvLAAJbzAACW9kAAlviAAJb5QACW+cAAlvqAAJb7QACW/YAAlv5AAJb/AACW/8AAlwCAAJcBAACXAkAAlwOAAJcEwACXF4AAlyBAAJcoQACXMEAAlzDAAJcxQACXMcAAlzJAAJczAACXM0AAlzOAAJc0QACXNIAAlzUAAJc1QACXNcAAlzaAAJc2wACXNwAAlzfAAJc4AACXOUAAlzyAAJc9wACXPkAAlz7AAJdAAACXQMAAl0GAAJdCAACXS0AAl1RAAJdeAACXZwAAl2fAAJdoQACXaMAAl2lAAJdpwACXakAAl2qAAJdrQACXboAAl3LAAJdzQACXc8AAl3RAAJd0wACXdUAAl3XAAJd2QACXdsAAl3sAAJd7wACXfIAAl31AAJd+AACXfsAAl3+AAJeAQACXgQAAl4GAAJeRQACXkcAAl5JAAJeSwACXk4AAl5PAAJeUAACXlEAAl5SAAJeVAACXlYAAl5XAAJeWAACXloAAl5bAAJemgACXpwAAl6eAAJeoAACXqMAAl6kAAJepQACXqYAAl6nAAJeqQACXqsAAl6sAAJerQACXq8AAl6wAAJe7wACXvEAAl70AAJe9gACXvkAAl76AAJe+wACXvwAAl79AAJe/wACXwEAAl8CAAJfAwACXwUAAl8GAAJfEwACXxQAAl8VAAJfFwACX1YAAl9YAAJfWgACX1wAAl9fAAJfYAACX2EAAl9iAAJfYwACX2UAAl9nAAJfaAACX2kAAl9rAAJfbAACX6sAAl+tAAJfrwACX7EAAl+0AAJftQACX7YAAl+3AAJfuAACX7oAAl+8AAJfvQACX74AAl/AAAJfwQACYAAAAmACAAJgBAACYAYAAmAJAAJgCgACYAsAAmAMAAJgDQACYA8AAmARAAJgEgACYBMAAmAVAAJgFgACYFUAAmBXAAJgWQACYFsAAmBeAAJgXwACYGAAAmBhAAJgYgACYGQAAmBmAAJgZwACYGgAAmBqAAJgawACYKoAAmCsAAJgrgACYLAAAmCzAAJgtAACYLUAAmC2AAJgtwACYLkAAmC7AAJgvAACYL0AAmC/AAJgwAACYOUAAmEJAAJhMAACYVQAAmFXAAJhWQACYVsAAmFdAAJhXwACYWEAAmFiAAJhZQACYXIAAmGBAAJhgwACYYUAAmGHAAJhiQACYYsAAmGNAAJhjwACYZ4AAmGhAAJhpAACYacAAmGqAAJhrQACYbAAAmGzAAJhtQACYfQAAmH2AAJh+AACYfoAAmH9AAJh/gACYf8AAmIAAAJiAQACYgMAAmIFAAJiBgACYgcAAmIJAAJiCgACYkkAAmJLAAJiTQACYk8AAmJSAAJiUwACYlQAAmJVAAJiVgACYlgAAmJaAAJiWwACYlwAAmJeAAJiXwACYp4AAmKgAAJiogACYqQAAmKnAAJiqAACYqkAAmKqAAJiqwACYq0AAmKvAAJisAACYrEAAmKzAAJitAACYvMAAmL1AAJi9wACYvkAAmL8AAJi/QACYv4AAmL/AAJjAAACYwIAAmMEAAJjBQACYwYAAmMIAAJjCQACY0gAAmNKAAJjTAACY04AAmNRAAJjUgACY1MAAmNUAAJjVQACY1cAAmNZAAJjWgACY1sAAmNdAAJjXgACY50AAmOfAAJjoQACY6MAAmOmAAJjpwACY6gAAmOpAAJjqgACY6wAAmOuAAJjrwACY7AAAmOyAAJjswACY/IAAmP0AAJj9wACY/kAAmP8AAJj/QACY/4AAmP/AAJkAAACZAIAAmQEAAJkBQACZAYAAmQIAAJkCQACZFQAAmR3AAJklwACZLcAAmS5AAJkuwACZL0AAmS/AAJkwgACZMMAAmTEAAJkxwACZMgAAmTKAAJkywACZM0AAmTPAAJk0AACZNEAAmTUAAJk1QACZNoAAmTnAAJk7AACZO4AAmTwAAJk9QACZPgAAmT7AAJk/QACZSIAAmVGAAJlbQACZZEAAmWUAAJllgACZZgAAmWaAAJlnAACZZ4AAmWfAAJlogACZa8AAmXAAAJlwgACZcQAAmXGAAJlyAACZcoAAmXMAAJlzgACZdAAAmXhAAJl5AACZecAAmXqAAJl7QACZfAAAmXzAAJl9gACZfkAAmX7AAJmOgACZjwAAmY+AAJmQAACZkMAAmZEAAJmRQACZkYAAmZHAAJmSQACZksAAmZMAAJmTQACZk8AAmZQAAJmjwACZpEAAmaTAAJmlQACZpgAAmaZAAJmmgACZpsAAmacAAJmngACZqAAAmahAAJmogACZqQAAmalAAJm5AACZuYAAmbpAAJm6wACZu4AAmbvAAJm8AACZvEAAmbyAAJm9AACZvYAAmb3AAJm+AACZvoAAmb7AAJnCAACZwkAAmcKAAJnDAACZ0sAAmdNAAJnTwACZ1EAAmdUAAJnVQACZ1YAAmdXAAJnWAACZ1oAAmdcAAJnXQACZ14AAmdgAAJnYQACZ6AAAmeiAAJnpAACZ6YAAmepAAJnqgACZ6sAAmesAAJnrQACZ68AAmexAAJnsgACZ7MAAme1AAJntgACZ/UAAmf3AAJn+QACZ/sAAmf+AAJn/wACaAAAAmgBAAJoAgACaAQAAmgGAAJoBwACaAgAAmgKAAJoCwACaEoAAmhMAAJoTgACaFAAAmhTAAJoVAACaFUAAmhWAAJoVwACaFkAAmhbAAJoXAACaF0AAmhfAAJoYAACaJ8AAmihAAJoowACaKUAAmioAAJoqQACaKoAAmirAAJorAACaK4AAmiwAAJosQACaLIAAmi0AAJotQACaNoAAmj+AAJpJQACaUkAAmlMAAJpTgACaVAAAmlSAAJpVAACaVYAAmlXAAJpWgACaWcAAml2AAJpeAACaXoAAml8AAJpfgACaYAAAmmCAAJphAACaZMAAmmWAAJpmQACaZwAAmmfAAJpogACaaUAAmmoAAJpqgACaekAAmnrAAJp7gACafAAAmnzAAJp9AACafUAAmn2AAJp9wACafkAAmn7AAJp/AACaf0AAmn/AAJqAAACaj8AAmpBAAJqQwACakUAAmpIAAJqSQACakoAAmpLAAJqTAACak4AAmpQAAJqUQACalIAAmpUAAJqVQACapQAAmqWAAJqmAACapoAAmqdAAJqngACap8AAmqgAAJqoQACaqMAAmqlAAJqpgACaqcAAmqpAAJqqgACaukAAmrrAAJq7gACavAAAmrzAAJq9AACavUAAmr2AAJq9wACavkAAmr7AAJq/AACav0AAmr/AAJrAAACaz8AAmtBAAJrQwACa0UAAmtIAAJrSQACa0oAAmtLAAJrTAACa04AAmtQAAJrUQACa1IAAmtUAAJrVQACa5QAAmuWAAJrmAACa5oAAmudAAJrngACa58AAmugAAJroQACa6MAAmulAAJrpgACa6cAAmupAAJrqgACa+kAAmvrAAJr7QACa+8AAmvyAAJr8wACa/QAAmv1AAJr9gACa/gAAmv6AAJr+wACa/wAAmv+AAJr/wACbEoAAmxtAAJsjQACbK0AAmyvAAJssQACbLMAAmy1AAJsuAACbLkAAmy6AAJsvQACbL4AAmzAAAJswQACbMMAAmzGAAJsxwACbMgAAmzLAAJszAACbNUAAmziAAJs5wACbOkAAmzrAAJs8AACbPMAAmz2AAJs+AACbR0AAm1BAAJtaAACbYwAAm2PAAJtkQACbZMAAm2VAAJtlwACbZkAAm2aAAJtnQACbaoAAm27AAJtvQACbb8AAm3BAAJtwwACbcUAAm3HAAJtyQACbcsAAm3cAAJt3wACbeIAAm3lAAJt6AACbesAAm3uAAJt8QACbfQAAm32AAJuNQACbjcAAm45AAJuOwACbj4AAm4/AAJuQAACbkEAAm5CAAJuRAACbkYAAm5HAAJuSAACbkoAAm5LAAJuigACbowAAm6OAAJukAACbpMAAm6UAAJulQACbpYAAm6XAAJumQACbpsAAm6cAAJunQACbp8AAm6gAAJu3wACbuEAAm7kAAJu5gACbukAAm7qAAJu6wACbuwAAm7tAAJu7wACbvEAAm7yAAJu8wACbvUAAm72AAJvAwACbwQAAm8FAAJvBwACb0YAAm9IAAJvSgACb0wAAm9PAAJvUAACb1EAAm9SAAJvUwACb1UAAm9XAAJvWAACb1kAAm9bAAJvXAACb5sAAm+dAAJvnwACb6EAAm+kAAJvpQACb6YAAm+nAAJvqAACb6oAAm+sAAJvrQACb64AAm+wAAJvsQACb/AAAm/yAAJv9AACb/YAAm/5AAJv+gACb/sAAm/8AAJv/QACb/8AAnABAAJwAgACcAMAAnAFAAJwBgACcEUAAnBHAAJwSQACcEsAAnBOAAJwTwACcFAAAnBRAAJwUgACcFQAAnBWAAJwVwACcFgAAnBaAAJwWwACcJoAAnCcAAJwngACcKAAAnCjAAJwpAACcKUAAnCmAAJwpwACcKkAAnCrAAJwrAACcK0AAnCvAAJwsAACcNUAAnD5AAJxIAACcUQAAnFHAAJxSQACcUsAAnFNAAJxTwACcVEAAnFSAAJxVQACcWIAAnFxAAJxcwACcXUAAnF3AAJxeQACcXsAAnF9AAJxfwACcY4AAnGRAAJxlAACcZcAAnGaAAJxnQACcaAAAnGjAAJxpQACceQAAnHmAAJx6QACcesAAnHuAAJx7wACcfAAAnHxAAJx8gACcfQAAnH2AAJx9wACcfgAAnH6AAJx+wACcjoAAnI8AAJyPgACckAAAnJDAAJyRAACckUAAnJGAAJyRwACckkAAnJLAAJyTAACck0AAnJPAAJyUAACco8AAnKRAAJykwACcpUAAnKYAAJymQACcpoAAnKbAAJynAACcp4AAnKgAAJyoQACcqIAAnKkAAJypQACcuQAAnLmAAJy6QACcusAAnLuAAJy7wACcvAAAnLxAAJy8gACcvQAAnL2AAJy9wACcvgAAnL6AAJy+wACczoAAnM8AAJzPgACc0AAAnNDAAJzRAACc0UAAnNGAAJzRwACc0kAAnNLAAJzTAACc00AAnNPAAJzUAACc48AAnORAAJzkwACc5UAAnOYAAJzmQACc5oAAnObAAJznAACc54AAnOgAAJzoQACc6IAAnOkAAJzpQACc+QAAnPmAAJz6AACc+oAAnPtAAJz7gACc+8AAnPwAAJz8QACc/MAAnP1AAJz9gACc/cAAnP5AAJz+gACdEUAAnRoAAJ0iAACdKgAAnSqAAJ0rAACdK4AAnSwAAJ0swACdLQAAnS1AAJ0uAACdLkAAnS7AAJ0vAACdL4AAnTBAAJ0wgACdMMAAnTGAAJ0xwACdMwAAnTZAAJ03gACdOAAAnTiAAJ05wACdOoAAnTtAAJ07wACdRQAAnU4AAJ1XwACdYMAAnWGAAJ1iAACdYoAAnWMAAJ1jgACdZAAAnWRAAJ1lAACdaEAAnWyAAJ1tAACdbYAAnW4AAJ1ugACdbwAAnW+AAJ1wAACdcIAAnXTAAJ11gACddkAAnXcAAJ13wACdeIAAnXlAAJ16AACdesAAnXtAAJ2LAACdi4AAnYwAAJ2MgACdjUAAnY2AAJ2NwACdjgAAnY5AAJ2OwACdj0AAnY+AAJ2PwACdkEAAnZCAAJ2gQACdoMAAnaFAAJ2hwACdooAAnaLAAJ2jAACdo0AAnaOAAJ2kAACdpIAAnaTAAJ2lAACdpYAAnaXAAJ21gACdtgAAnbbAAJ23QACduAAAnbhAAJ24gACduMAAnbkAAJ25gACdugAAnbpAAJ26gACduwAAnbtAAJ2+gACdvsAAnb8AAJ2/gACdz0AAnc/AAJ3QQACd0MAAndGAAJ3RwACd0gAAndJAAJ3SgACd0wAAndOAAJ3TwACd1AAAndSAAJ3UwACd5IAAneUAAJ3lgACd5gAAnebAAJ3nAACd50AAneeAAJ3nwACd6EAAnejAAJ3pAACd6UAAnenAAJ3qAACd+cAAnfpAAJ36wACd+0AAnfwAAJ38QACd/IAAnfzAAJ39AACd/YAAnf4AAJ3+QACd/oAAnf8AAJ3/QACeDwAAng+AAJ4QAACeEIAAnhFAAJ4RgACeEcAAnhIAAJ4SQACeEsAAnhNAAJ4TgACeE8AAnhRAAJ4UgACeJEAAniTAAJ4lQACeJcAAniaAAJ4mwACeJwAAnidAAJ4ngACeKAAAniiAAJ4owACeKQAAnimAAJ4pwACeMwAAnjwAAJ5FwACeTsAAnk+AAJ5QAACeUIAAnlEAAJ5RgACeUgAAnlJAAJ5TAACeVkAAnloAAJ5agACeWwAAnluAAJ5cAACeXIAAnl0AAJ5dgACeYUAAnmIAAJ5iwACeY4AAnmRAAJ5lAACeZcAAnmaAAJ5nAACedsAAnndAAJ53wACeeEAAnnkAAJ55QACeeYAAnnnAAJ56AACeeoAAnnsAAJ57QACee4AAnnwAAJ58QACejAAAnoyAAJ6NAACejYAAno5AAJ6OgACejsAAno8AAJ6PQACej8AAnpBAAJ6QgACekMAAnpFAAJ6RgACeoUAAnqHAAJ6iQACeosAAnqOAAJ6jwACepAAAnqRAAJ6kgACepQAAnqWAAJ6lwACepgAAnqaAAJ6mwACetoAAnrcAAJ63gACeuAAAnrjAAJ65AACeuUAAnrmAAJ65wACeukAAnrrAAJ67AACeu0AAnrvAAJ68AACey8AAnsxAAJ7MwACezUAAns4AAJ7OQACezoAAns7AAJ7PAACez4AAntAAAJ7QQACe0IAAntEAAJ7RQACe4QAAnuGAAJ7iAACe4oAAnuNAAJ7jgACe48AAnuQAAJ7kQACe5MAAnuVAAJ7lgACe5cAAnuZAAJ7mgACe9kAAnvbAAJ73QACe98AAnviAAJ74wACe+QAAnvlAAJ75gACe+gAAnvqAAJ76wACe+wAAnvuAAJ77wACe/gAAnv5AAJ7+wACfDoAAnw8AAJ8PgACfEAAAnxDAAJ8RAACfEUAAnxGAAJ8RwACfEkAAnxLAAJ8TAACfE0AAnxPAAJ8UAACfI8AAnyRAAJ8kwACfJUAAnyYAAJ8mQACfJoAAnybAAJ8nAACfJ4AAnygAAJ8oQACfKIAAnykAAJ8pQACfOQAAnzmAAJ86QACfOsAAnzuAAJ87wACfPAAAnzxAAJ88gACfPQAAnz2AAJ89wACfPgAAnz6AAJ8+wACfUYAAn1pAAJ9iQACfakAAn2rAAJ9rQACfa8AAn2xAAJ9swACfbQAAn21AAJ9uAACfbkAAn27AAJ9vAACfb4AAn3AAAJ9wQACfcIAAn3FAAJ9xgACfcsAAn3YAAJ93QACfd8AAn3hAAJ95gACfekAAn3sAAJ97gACfhMAAn43AAJ+XgACfoIAAn6FAAJ+hwACfokAAn6LAAJ+jQACfo8AAn6QAAJ+kwACfqAAAn6xAAJ+swACfrUAAn63AAJ+uQACfrsAAn69AAJ+vwACfsEAAn7SAAJ+1QACftgAAn7bAAJ+3gACfuEAAn7kAAJ+5wACfuoAAn7sAAJ/KwACfy0AAn8vAAJ/MQACfzQAAn81AAJ/NgACfzcAAn84AAJ/OgACfzwAAn89AAJ/PgACf0AAAn9BAAJ/gAACf4IAAn+EAAJ/hgACf4kAAn+KAAJ/iwACf4wAAn+NAAJ/jwACf5EAAn+SAAJ/kwACf5UAAn+WAAJ/1QACf9cAAn/aAAJ/3AACf98AAn/gAAJ/4QACf+IAAn/jAAJ/5QACf+cAAn/oAAJ/6QACf+sAAn/sAAJ/+QACf/oAAn/7AAJ//QACgDwAAoA+AAKAQAACgEIAAoBFAAKARgACgEcAAoBIAAKASQACgEsAAoBNAAKATgACgE8AAoBRAAKAUgACgJEAAoCTAAKAlQACgJcAAoCaAAKAmwACgJwAAoCdAAKAngACgKAAAoCiAAKAowACgKQAAoCmAAKApwACgOYAAoDoAAKA6gACgOwAAoDvAAKA8AACgPEAAoDyAAKA8wACgPUAAoD3AAKA+AACgPkAAoD7AAKA/AACgTsAAoE9AAKBPwACgUEAAoFEAAKBRQACgUYAAoFHAAKBSAACgUoAAoFMAAKBTQACgU4AAoFQAAKBUQACgZAAAoGSAAKBlAACgZYAAoGZAAKBmgACgZsAAoGcAAKBnQACgZ8AAoGhAAKBogACgaMAAoGlAAKBpgACgcsAAoHvAAKCFgACgjoAAoI9AAKCPwACgkEAAoJDAAKCRQACgkcAAoJIAAKCSwACglgAAoJnAAKCaQACgmsAAoJtAAKCbwACgnEAAoJzAAKCdQACgoQAAoKHAAKCigACgo0AAoKQAAKCkwACgpYAAoKZAAKCmwACgtoAAoLcAAKC3wACguEAAoLkAAKC5QACguYAAoLnAAKC6AACguoAAoLsAAKC7QACgu4AAoLwAAKC8QACgzAAAoMyAAKDNAACgzYAAoM5AAKDOgACgzsAAoM8AAKDPQACgz8AAoNBAAKDQgACg0MAAoNFAAKDRgACg4UAAoOHAAKDiQACg4sAAoOOAAKDjwACg5AAAoORAAKDkgACg5QAAoOWAAKDlwACg5gAAoOaAAKDmwACg9oAAoPcAAKD3wACg+EAAoPkAAKD5QACg+YAAoPnAAKD6AACg+oAAoPsAAKD7QACg+4AAoPwAAKD8QAChDAAAoQyAAKENAAChDYAAoQ5AAKEOgAChDsAAoQ8AAKEPQAChD8AAoRBAAKEQgAChEMAAoRFAAKERgAChIUAAoSHAAKEiQAChIsAAoSOAAKEjwAChJAAAoSRAAKEkgAChJQAAoSWAAKElwAChJgAAoSaAAKEmwAChNoAAoTcAAKE3gAChOAAAoTjAAKE5AAChOUAAoTmAAKE5wAChOkAAoTrAAKE7AAChO0AAoTvAAKE8AAChTsAAoVeAAKFfgAChZ4AAoWgAAKFogAChaQAAoWmAAKFqAAChakAAoWqAAKFrQACha4AAoWwAAKFsQAChbMAAoW1AAKFtgAChbcAAoW6AAKFuwAChcAAAoXNAAKF0gAChdQAAoXWAAKF2wAChd4AAoXhAAKF4wAChggAAoYsAAKGUwAChncAAoZ6AAKGfAAChn4AAoaAAAKGggAChoQAAoaFAAKGiAAChpUAAoamAAKGqAAChqoAAoasAAKGrgAChrAAAoayAAKGtAAChrYAAobHAAKGygAChs0AAobQAAKG0wAChtYAAobZAAKG3AACht8AAobhAAKHIAAChyIAAockAAKHJgAChykAAocqAAKHKwAChywAAoctAAKHLwAChzEAAocyAAKHMwAChzUAAoc2AAKHdQACh3cAAod5AAKHewACh34AAod/AAKHgAACh4EAAoeCAAKHhAACh4YAAoeHAAKHiAACh4oAAoeLAAKHygACh8wAAofPAAKH0QACh9QAAofVAAKH1gACh9cAAofYAAKH2gACh9wAAofdAAKH3gACh+AAAofhAAKH7gACh+8AAofwAAKH8gACiDEAAogzAAKINQACiDcAAog6AAKIOwACiDwAAog9AAKIPgACiEAAAohCAAKIQwACiEQAAohGAAKIRwACiIYAAoiIAAKIigACiIwAAoiPAAKIkAACiJEAAoiSAAKIkwACiJUAAoiXAAKImAACiJkAAoibAAKInAACiNsAAojdAAKI3wACiOEAAojkAAKI5QACiOYAAojnAAKI6AACiOoAAojsAAKI7QACiO4AAojwAAKI8QACiTAAAokyAAKJNAACiTYAAok5AAKJOgACiTsAAok8AAKJPQACiT8AAolBAAKJQgACiUMAAolFAAKJRgACiYUAAomHAAKJiQACiYsAAomOAAKJjwACiZAAAomRAAKJkgACiZQAAomWAAKJlwACiZgAAomaAAKJmwACicAAAonkAAKKCwACii8AAooyAAKKNAACijYAAoo4AAKKOgACijwAAoo9AAKKQAACik0AAopcAAKKXgACimAAAopiAAKKZAACimYAAopoAAKKagACinkAAop8AAKKfwACioIAAoqFAAKKiAACiosAAoqOAAKKkAACis8AAorRAAKK0wACitUAAorYAAKK2QACitoAAorbAAKK3AACit4AAorgAAKK4QACiuIAAorkAAKK5QACiyQAAosmAAKLKAACiyoAAostAAKLLgACiy8AAoswAAKLMQACizMAAos1AAKLNgACizcAAos5AAKLOgACi3kAAot7AAKLfQACi38AAouCAAKLgwACi4QAAouFAAKLhgACi4gAAouKAAKLiwACi4wAAouOAAKLjwACi84AAovQAAKL0gACi9QAAovXAAKL2AACi9kAAovaAAKL2wACi90AAovfAAKL4AACi+EAAovjAAKL5AACjCMAAowlAAKMJwACjCkAAowsAAKMLQACjC4AAowvAAKMMAACjDIAAow0AAKMNQACjDYAAow4AAKMOQACjHgAAox6AAKMfAACjH4AAoyBAAKMggACjIMAAoyEAAKMhQACjIcAAoyJAAKMigACjIsAAoyNAAKMjgACjM0AAozPAAKM0QACjNMAAozWAAKM1wACjNgAAozZAAKM2gACjNwAAozeAAKM3wACjOAAAoziAAKM4wACjOwAAoztAAKM7wACjPgAAoz9AAKNAAACjQMAAo0FAAKNIgACjSwAAo01AAKNOAACjToAAo09AAKNQAACjUMAAo1FAAKNiAACjawAAo3QAAKN8wACjhoAAo46AAKOYQACjogAAo6oAAKOzAACjvAAAo7yAAKO9QACjvcAAo75AAKO+wACjv4AAo8BAAKPAwACjwUAAo8IAAKPCgACjwwAAo8PAAKPEgACjxMAAo8YAAKPJQACjygAAo8qAAKPLQACjzAAAo8yAAKPVwACj3sAAo+iAAKPxgACj8kAAo/LAAKPzQACj88AAo/RAAKP0wACj9QAAo/XAAKP5AACj/cAAo/5AAKP+wACj/0AAo//AAKQAQACkAMAApAFAAKQBwACkAkAApAcAAKQHwACkCIAApAlAAKQKAACkCsAApAuAAKQMQACkDQAApA3AAKQOQACkHgAApB6AAKQfQACkH8AApCCAAKQgwACkIQAApCFAAKQhgACkIgAApCKAAKQiwACkIwAApCOAAKQjwACkJgAApCZAAKQmwACkNoAApDcAAKQ3gACkOAAApDjAAKQ5AACkOUAApDmAAKQ5wACkOkAApDrAAKQ7AACkO0AApDvAAKQ8AACkS8AApExAAKRNAACkTYAApE5AAKROgACkTsAApE8AAKRPQACkT8AApFBAAKRQgACkUMAApFFAAKRRgACkU8AApFQAAKRUgACkZEAApGTAAKRlQACkZcAApGaAAKRmwACkZwAApGdAAKRngACkaAAApGiAAKRowACkaQAApGmAAKRpwACkeYAApHoAAKR6wACke0AApHwAAKR8QACkfIAApHzAAKR9AACkfYAApH4AAKR+QACkfoAApH8AAKR/QACkgYAApIHAAKSCQACkkgAApJKAAKSTAACkk4AApJRAAKSUgACklMAApJUAAKSVQACklcAApJZAAKSWgACklsAApJdAAKSXgACkp0AApKfAAKSogACkqQAApKnAAKSqAACkqkAApKqAAKSqwACkq0AApKvAAKSsAACkrEAApKzAAKStAACksEAApLCAAKSwwACksUAApMEAAKTBgACkwgAApMKAAKTDQACkw4AApMPAAKTEAACkxEAApMTAAKTFQACkxYAApMXAAKTGQACkxoAApNZAAKTWwACk10AApNfAAKTYgACk2MAApNkAAKTZQACk2YAApNoAAKTagACk2sAApNsAAKTbgACk28AApN8AAKTfwACk4IAApOFAAKTiAACk4oAApOTAAKT3gAClAEAApQhAAKUQQAClEMAApRFAAKURwAClEkAApRMAAKUTQAClE4AApRRAAKUUgAClFQAApRVAAKUVwAClFoAApRbAAKUXAAClF8AApRgAAKUaQAClHYAApR7AAKUfQAClH8AApSEAAKUhwAClIoAApSMAAKUsQAClNUAApT8AAKVIAAClSMAApUlAAKVJwAClSkAApUrAAKVLQAClS4AApUxAAKVPgAClU8AApVRAAKVUwAClVUAApVXAAKVWQAClVsAApVdAAKVXwAClXAAApVzAAKVdgAClXkAApV8AAKVfwAClYIAApWFAAKViAAClYoAApXJAAKVywAClc0AApXPAAKV0gACldMAApXUAAKV1QACldYAApXYAAKV2gACldsAApXcAAKV3gACld8AApYeAAKWIAACliIAApYkAAKWJwACligAApYpAAKWKgAClisAApYtAAKWLwACljAAApYxAAKWMwACljQAApZzAAKWdQAClngAApZ6AAKWfQACln4AApZ/AAKWgAACloEAApaDAAKWhQACloYAApaHAAKWiQAClooAApaXAAKWmAAClpkAApabAAKW2gACltwAApbeAAKW4AACluMAApbkAAKW5QACluYAApbnAAKW6QAClusAApbsAAKW7QAClu8AApbwAAKXLwAClzEAApczAAKXNQAClzgAApc5AAKXOgAClzsAApc8AAKXPgACl0AAApdBAAKXQgACl0QAApdFAAKXhAACl4YAApeIAAKXigACl40AApeOAAKXjwACl5AAApeRAAKXkwACl5UAApeWAAKXlwACl5kAApeaAAKX2QACl9sAApfdAAKX3wACl+IAApfjAAKX5AACl+UAApfmAAKX6AACl+oAApfrAAKX7AACl+4AApfvAAKYLgACmDAAApgyAAKYNAACmDcAApg4AAKYOQACmDoAApg7AAKYPQACmD8AAphAAAKYQQACmEMAAphEAAKYaQACmI0AApi0AAKY2AACmNsAApjdAAKY3wACmOEAApjjAAKY5QACmOYAApjpAAKY9gACmQUAApkHAAKZCQACmQsAApkNAAKZDwACmREAApkTAAKZIgACmSUAApkoAAKZKwACmS4AApkxAAKZNAACmTcAApk5AAKZeAACmXoAApl8AAKZfgACmYEAApmCAAKZgwACmYQAApmFAAKZhwACmYkAApmKAAKZiwACmY0AApmOAAKZzQACmc8AApnRAAKZ0wACmdYAApnXAAKZ2AACmdkAApnaAAKZ3AACmd4AApnfAAKZ4AACmeIAApnjAAKaIgACmiQAApomAAKaKAACmisAAposAAKaLQACmi4AApovAAKaMQACmjMAApo0AAKaNQACmjcAApo4AAKadwACmnkAApp8AAKafgACmoEAApqCAAKagwACmoQAApqFAAKahwACmokAApqKAAKaiwACmo0AApqOAAKa0QACmvUAApsZAAKbPAACm2MAApuDAAKbqgACm9EAApvxAAKcFQACnDkAApw7AAKcPgACnEAAApxCAAKcRAACnEcAApxKAAKcTAACnE4AApxRAAKcUwACnFUAApxYAAKcWwACnFwAApxhAAKcbgACnHEAApxzAAKcdgACnHkAApx7AAKcoAACnMQAApzrAAKdDwACnRIAAp0UAAKdFgACnRgAAp0aAAKdHAACnR0AAp0gAAKdLQACnUAAAp1CAAKdRAACnUYAAp1IAAKdSgACnUwAAp1OAAKdUAACnVIAAp1lAAKdaAACnWsAAp1uAAKdcQACnXQAAp13AAKdegACnX0AAp2AAAKdggACncEAAp3DAAKdxgACncgAAp3LAAKdzAACnc0AAp3OAAKdzwACndEAAp3TAAKd1AACndUAAp3XAAKd2AACneEAAp3iAAKd5AACniMAAp4lAAKeJwACnikAAp4sAAKeLQACni4AAp4vAAKeMAACnjIAAp40AAKeNQACnjYAAp44AAKeOQACnngAAp56AAKefQACnn8AAp6CAAKegwACnoQAAp6FAAKehgACnogAAp6KAAKeiwACnowAAp6OAAKejwACnpgAAp6ZAAKemwACntoAAp7cAAKe3gACnuAAAp7jAAKe5AACnuUAAp7mAAKe5wACnukAAp7rAAKe7AACnu0AAp7vAAKe8AACny8AAp8xAAKfNAACnzYAAp85AAKfOgACnzsAAp88AAKfPQACnz8AAp9BAAKfQgACn0MAAp9FAAKfRgACn08AAp9QAAKfUgACn5EAAp+TAAKflQACn5cAAp+aAAKfmwACn5wAAp+dAAKfngACn6AAAp+iAAKfowACn6QAAp+mAAKfpwACn+YAAp/oAAKf6wACn+0AAp/wAAKf8QACn/IAAp/zAAKf9AACn/YAAp/4AAKf+QACn/oAAp/8AAKf/QACoAoAAqALAAKgDAACoA4AAqBNAAKgTwACoFEAAqBTAAKgVgACoFcAAqBYAAKgWQACoFoAAqBcAAKgXgACoF8AAqBgAAKgYgACoGMAAqCiAAKgpAACoKYAAqCoAAKgqwACoKwAAqCtAAKgrgACoK8AAqCxAAKgswACoLQAAqC1AAKgtwACoLgAAqDFAAKg0AACoNIAAqDVAAKg1wACoNoAAqDdAAKg6AACoOsAAqDuAAKg8QACoPQAAqD3AAKg+QACoP8AAqEEAAKhCgACoVUAAqF4AAKhmAACobgAAqG6AAKhvAACob4AAqHAAAKhwwACocQAAqHFAAKhyAACockAAqHLAAKhzAACoc4AAqHQAAKh0QACodIAAqHVAAKh1gACodsAAqHoAAKh7QACoe8AAqHxAAKh9gACofkAAqH8AAKh/gACoiMAAqJHAAKibgACopIAAqKVAAKilwACopkAAqKbAAKinQACop8AAqKgAAKiowACorAAAqLBAAKiwwACosUAAqLHAAKiyQACossAAqLNAAKizwACotEAAqLiAAKi5QACougAAqLrAAKi7gACovEAAqL0AAKi9wACovoAAqL8AAKjOwACoz0AAqM/AAKjQQACo0QAAqNFAAKjRgACo0cAAqNIAAKjSgACo0wAAqNNAAKjTgACo1AAAqNRAAKjkAACo5IAAqOUAAKjlgACo5kAAqOaAAKjmwACo5wAAqOdAAKjnwACo6EAAqOiAAKjowACo6UAAqOmAAKj5QACo+cAAqPqAAKj7AACo+8AAqPwAAKj8QACo/IAAqPzAAKj9QACo/cAAqP4AAKj+QACo/sAAqP8AAKkCQACpAoAAqQLAAKkDQACpEwAAqROAAKkUAACpFIAAqRVAAKkVgACpFcAAqRYAAKkWQACpFsAAqRdAAKkXgACpF8AAqRhAAKkYgACpKEAAqSjAAKkpQACpKcAAqSqAAKkqwACpKwAAqStAAKkrgACpLAAAqSyAAKkswACpLQAAqS2AAKktwACpPYAAqT4AAKk+gACpPwAAqT/AAKlAAACpQEAAqUCAAKlAwACpQUAAqUHAAKlCAACpQkAAqULAAKlDAACpUsAAqVNAAKlTwACpVEAAqVUAAKlVQACpVYAAqVXAAKlWAACpVoAAqVcAAKlXQACpV4AAqVgAAKlYQACpaAAAqWiAAKlpAACpaYAAqWpAAKlqgACpasAAqWsAAKlrQACpa8AAqWxAAKlsgACpbMAAqW1AAKltgACpdsAAqX/AAKmJgACpkoAAqZNAAKmTwACplEAAqZTAAKmVQACplcAAqZYAAKmWwACpmgAAqZ3AAKmeQACpnsAAqZ9AAKmfwACpoEAAqaDAAKmhQACppQAAqaXAAKmmgACpp0AAqagAAKmowACpqYAAqapAAKmqwACpuoAAqbsAAKm7wACpvEAAqb0AAKm9QACpvYAAqb3AAKm+AACpvoAAqb8AAKm/QACpv4AAqcAAAKnAQACp0AAAqdCAAKnRAACp0YAAqdJAAKnSgACp0sAAqdMAAKnTQACp08AAqdRAAKnUgACp1MAAqdVAAKnVgACp5UAAqeXAAKnmQACp5sAAqeeAAKnnwACp6AAAqehAAKnogACp6QAAqemAAKnpwACp6gAAqeqAAKnqwACp+oAAqfsAAKn7wACp/EAAqf0AAKn9QACp/YAAqf3AAKn+AACp/oAAqf8AAKn/QACp/4AAqgAAAKoAQACqEAAAqhCAAKoRAACqEYAAqhJAAKoSgACqEsAAqhMAAKoTQACqE8AAqhRAAKoUgACqFMAAqhVAAKoVgACqJUAAqiXAAKomQACqJsAAqieAAKonwACqKAAAqihAAKoogACqKQAAqimAAKopwACqKgAAqiqAAKoqwACqOoAAqjsAAKo7gACqPAAAqjzAAKo9AACqPUAAqj2AAKo9wACqPkAAqj7AAKo/AACqP0AAqj/AAKpAAACqUsAAqluAAKpjgACqa4AAqmwAAKpsgACqbQAAqm2AAKpuQACqboAAqm7AAKpvgACqb8AAqnBAAKpwgACqcQAAqnHAAKpyAACqckAAqnMAAKpzQACqdIAAqnfAAKp5AACqeYAAqnoAAKp7QACqfAAAqnzAAKp9QACqhoAAqo+AAKqZQACqokAAqqMAAKqjgACqpAAAqqSAAKqlAACqpYAAqqXAAKqmgACqqcAAqq4AAKqugACqrwAAqq+AAKqwAACqsIAAqrEAAKqxgACqsgAAqrZAAKq3AACqt8AAqriAAKq5QACqugAAqrrAAKq7gACqvEAAqrzAAKrMgACqzQAAqs2AAKrOAACqzsAAqs8AAKrPQACqz4AAqs/AAKrQQACq0MAAqtEAAKrRQACq0cAAqtIAAKrhwACq4kAAquLAAKrjQACq5AAAquRAAKrkgACq5MAAquUAAKrlgACq5gAAquZAAKrmgACq5wAAqudAAKr3AACq94AAqvhAAKr4wACq+YAAqvnAAKr6AACq+kAAqvqAAKr7AACq+4AAqvvAAKr8AACq/IAAqvzAAKsAAACrAEAAqwCAAKsBAACrEMAAqxFAAKsRwACrEkAAqxMAAKsTQACrE4AAqxPAAKsUAACrFIAAqxUAAKsVQACrFYAAqxYAAKsWQACrJgAAqyaAAKsnAACrJ4AAqyhAAKsogACrKMAAqykAAKspQACrKcAAqypAAKsqgACrKsAAqytAAKsrgACrO0AAqzvAAKs8QACrPMAAqz2AAKs9wACrPgAAqz5AAKs+gACrPwAAqz+AAKs/wACrQAAAq0CAAKtAwACrUIAAq1EAAKtRgACrUgAAq1LAAKtTAACrU0AAq1OAAKtTwACrVEAAq1TAAKtVAACrVUAAq1XAAKtWAACrZcAAq2ZAAKtmwACrZ0AAq2gAAKtoQACraIAAq2jAAKtpAACraYAAq2oAAKtqQACraoAAq2sAAKtrQACrdIAAq32AAKuHQACrkEAAq5EAAKuRgACrkgAAq5KAAKuTAACrk4AAq5PAAKuUgACrl8AAq5uAAKucAACrnIAAq50AAKudgACrngAAq56AAKufAACrosAAq6OAAKukQACrpQAAq6XAAKumgACrp0AAq6gAAKuogACruEAAq7jAAKu5gACrugAAq7rAAKu7AACru0AAq7uAAKu7wACrvEAAq7zAAKu9AACrvUAAq73AAKu+AACrzcAAq85AAKvOwACrz0AAq9AAAKvQQACr0IAAq9DAAKvRAACr0YAAq9IAAKvSQACr0oAAq9MAAKvTQACr4wAAq+OAAKvkAACr5IAAq+VAAKvlgACr5cAAq+YAAKvmQACr5sAAq+dAAKvngACr58AAq+hAAKvogACr+EAAq/jAAKv5gACr+gAAq/rAAKv7AACr+0AAq/uAAKv7wACr/EAAq/zAAKv9AACr/UAAq/3AAKv+AACsDcAArA5AAKwOwACsD0AArBAAAKwQQACsEIAArBDAAKwRAACsEYAArBIAAKwSQACsEoAArBMAAKwTQACsIwAArCOAAKwkAACsJIAArCVAAKwlgACsJcAArCYAAKwmQACsJsAArCdAAKwngACsJ8AArChAAKwogACsOEAArDjAAKw5QACsOcAArDqAAKw6wACsOwAArDtAAKw7gACsPAAArDyAAKw8wACsPQAArD2AAKw9wACsUIAArFlAAKxhQACsaUAArGnAAKxqQACsasAArGtAAKxsAACsbEAArGyAAKxtQACsbYAArG4AAKxuQACsbsAArG9AAKxvgACsb8AArHCAAKxwwACscgAArHVAAKx2gACsdwAArHeAAKx4wACseYAArHpAAKx6wACshAAArI0AAKyWwACsn8AArKCAAKyhAACsoYAArKIAAKyigACsowAArKNAAKykAACsp0AArKuAAKysAACsrIAArK0AAKytgACsrgAArK6AAKyvAACsr4AArLPAAKy0gACstUAArLYAAKy2wACst4AArLhAAKy5AACsucAArLpAAKzKAACsyoAArMsAAKzLgACszEAArMyAAKzMwACszQAArM1AAKzNwACszkAArM6AAKzOwACsz0AArM+AAKzfQACs38AArOBAAKzgwACs4YAArOHAAKziAACs4kAArOKAAKzjAACs44AArOPAAKzkAACs5IAArOTAAKz0gACs9QAArPXAAKz2QACs9wAArPdAAKz3gACs98AArPgAAKz4gACs+QAArPlAAKz5gACs+gAArPpAAKz9gACs/cAArP4AAKz+gACtDkAArQ7AAK0PQACtD8AArRCAAK0QwACtEQAArRFAAK0RgACtEgAArRKAAK0SwACtEwAArROAAK0TwACtI4AArSQAAK0kgACtJQAArSXAAK0mAACtJkAArSaAAK0mwACtJ0AArSfAAK0oAACtKEAArSjAAK0pAACtOMAArTlAAK05wACtOkAArTsAAK07QACtO4AArTvAAK08AACtPIAArT0AAK09QACtPYAArT4AAK0+QACtTgAArU6AAK1PAACtT4AArVBAAK1QgACtUMAArVEAAK1RQACtUcAArVJAAK1SgACtUsAArVNAAK1TgACtY0AArWPAAK1kQACtZMAArWWAAK1lwACtZgAArWZAAK1mgACtZwAArWeAAK1nwACtaAAArWiAAK1owACtcgAArXsAAK2EwACtjcAArY6AAK2PAACtj4AArZAAAK2QgACtkQAArZFAAK2SAACtlUAArZkAAK2ZgACtmgAArZqAAK2bAACtm4AArZwAAK2cgACtoEAAraEAAK2hwACtooAAraNAAK2kAACtpMAAraWAAK2mAACttcAArbZAAK22wACtt0AArbgAAK24QACtuIAArbjAAK25AACtuYAArboAAK26QACtuoAArbsAAK27QACtywAArcuAAK3MAACtzIAArc1AAK3NgACtzcAArc4AAK3OQACtzsAArc9AAK3PgACtz8AArdBAAK3QgACt4EAAreDAAK3hQACt4cAAreKAAK3iwACt4wAAreNAAK3jgACt5AAAreSAAK3kwACt5QAAreWAAK3lwACt9YAArfYAAK32gACt9wAArffAAK34AACt+EAArfiAAK34wACt+UAArfnAAK36AACt+kAArfrAAK37AACuCsAArgtAAK4LwACuDEAArg0AAK4NQACuDYAArg3AAK4OAACuDoAArg8AAK4PQACuD4AArhAAAK4QQACuIAAAriCAAK4hAACuIYAAriJAAK4igACuIsAAriMAAK4jQACuI8AAriRAAK4kgACuJMAAriVAAK4lgACuNUAArjXAAK42QACuNsAArjeAAK43wACuOAAArjhAAK44gACuOQAArjmAAK45wACuOgAArjqAAK46wACuTYAArlZAAK5eQACuZkAArmbAAK5nQACuZ8AArmhAAK5pAACuaUAArmmAAK5qQACuaoAArmsAAK5rQACua8AArmyAAK5swACubQAArm3AAK5uAACub0AArnKAAK5zwACudEAArnTAAK52AACudsAArneAAK54AACugUAAropAAK6UAACunQAArp3AAK6eQACunsAArp9AAK6fwACuoEAArqCAAK6hQACupIAArqjAAK6pQACuqcAArqpAAK6qwACuq0AArqvAAK6sQACurMAArrEAAK6xwACusoAArrNAAK60AACutMAArrWAAK62QACutwAArreAAK7HQACux8AArshAAK7IwACuyYAArsnAAK7KAACuykAArsqAAK7LAACuy4AArsvAAK7MAACuzIAArszAAK7cgACu3QAArt2AAK7eAACu3sAArt8AAK7fQACu34AArt/AAK7gQACu4MAAruEAAK7hQACu4cAAruIAAK7xwACu8kAArvMAAK7zgACu9EAArvSAAK70wACu9QAArvVAAK71wACu9kAArvaAAK72wACu90AArveAAK76wACu+wAArvtAAK77wACvC4AArwwAAK8MgACvDQAArw3AAK8OAACvDkAArw6AAK8OwACvD0AArw/AAK8QAACvEEAArxDAAK8RAACvIMAAryFAAK8hwACvIkAAryMAAK8jQACvI4AAryPAAK8kAACvJIAAryUAAK8lQACvJYAAryYAAK8mQACvNgAArzaAAK83AACvN4AArzhAAK84gACvOMAArzkAAK85QACvOcAArzpAAK86gACvOsAArztAAK87gACvS0AAr0vAAK9MQACvTMAAr02AAK9NwACvTgAAr05AAK9OgACvTwAAr0+AAK9PwACvUAAAr1CAAK9QwACvYIAAr2EAAK9hgACvYgAAr2LAAK9jAACvY0AAr2OAAK9jwACvZEAAr2TAAK9lAACvZUAAr2XAAK9mAACvb0AAr3hAAK+CAACviwAAr4vAAK+MQACvjMAAr41AAK+NwACvjkAAr46AAK+PQACvkoAAr5ZAAK+WwACvl0AAr5fAAK+YQACvmMAAr5lAAK+ZwACvnYAAr55AAK+fAACvn8AAr6CAAK+hQACvogAAr6LAAK+jQACvswAAr7OAAK+0AACvtIAAr7VAAK+1gACvtcAAr7YAAK+2QACvtsAAr7dAAK+3gACvt8AAr7hAAK+4gACvyEAAr8jAAK/JQACvycAAr8qAAK/KwACvywAAr8tAAK/LgACvzAAAr8yAAK/MwACvzQAAr82AAK/NwACv3YAAr94AAK/egACv3wAAr9/AAK/gAACv4EAAr+CAAK/gwACv4UAAr+HAAK/iAACv4kAAr+LAAK/jAACv8sAAr/NAAK/0AACv9IAAr/VAAK/1gACv9cAAr/YAAK/2QACv9sAAr/dAAK/3gACv98AAr/hAAK/4gACwCEAAsAjAALAJQACwCcAAsAqAALAKwACwCwAAsAtAALALgACwDAAAsAyAALAMwACwDQAAsA2AALANwACwHYAAsB4AALAegACwHwAAsB/AALAgAACwIEAAsCCAALAgwACwIUAAsCHAALAiAACwIkAAsCLAALAjAACwMsAAsDNAALA0AACwNIAAsDVAALA1gACwNcAAsDYAALA2QACwNsAAsDdAALA3gACwN8AAsDhAALA4gACwS0AAsFQAALBcAACwZAAAsGSAALBlAACwZYAAsGYAALBmwACwZwAAsGdAALBoAACwaEAAsGjAALBpAACwaYAAsGpAALBqgACwasAAsGuAALBrwACwbQAAsHBAALBxgACwcgAAsHKAALBzwACwdIAAsHVAALB1wACwfwAAsIgAALCRwACwmsAAsJuAALCcAACwnIAAsJ0AALCdgACwngAAsJ5AALCfAACwokAAsKaAALCnAACwp4AAsKgAALCogACwqQAAsKmAALCqAACwqoAAsK7AALCvgACwsEAAsLEAALCxwACwsoAAsLNAALC0AACwtMAAsLVAALDFAACwxYAAsMYAALDGgACwx0AAsMeAALDHwACwyAAAsMhAALDIwACwyUAAsMmAALDJwACwykAAsMqAALDaQACw2sAAsNtAALDbwACw3IAAsNzAALDdAACw3UAAsN2AALDeAACw3oAAsN7AALDfAACw34AAsN/AALDvgACw8AAAsPDAALDxQACw8gAAsPJAALDygACw8sAAsPMAALDzgACw9AAAsPRAALD0gACw9QAAsPVAALD4gACw+MAAsPkAALD5gACxCUAAsQnAALEKQACxCsAAsQuAALELwACxDAAAsQxAALEMgACxDQAAsQ2AALENwACxDgAAsQ6AALEOwACxHoAAsR8AALEfgACxIAAAsSDAALEhAACxIUAAsSGAALEhwACxIkAAsSLAALEjAACxI0AAsSPAALEkAACxM8AAsTRAALE0wACxNUAAsTYAALE2QACxNoAAsTbAALE3AACxN4AAsTgAALE4QACxOIAAsTkAALE5QACxSQAAsUmAALFKAACxSoAAsUtAALFLgACxS8AAsUwAALFMQACxTMAAsU1AALFNgACxTcAAsU5AALFOgACxXkAAsV7AALFfQACxX8AAsWCAALFgwACxYQAAsWFAALFhgACxYgAAsWKAALFiwACxYwAAsWOAALFjwACxbQAAsXYAALF/wACxiMAAsYmAALGKAACxioAAsYsAALGLgACxjAAAsYxAALGNAACxkEAAsZQAALGUgACxlQAAsZWAALGWAACxloAAsZcAALGXgACxm0AAsZwAALGcwACxnYAAsZ5AALGfAACxn8AAsaCAALGhAACxsMAAsbFAALGyAACxsoAAsbNAALGzgACxs8AAsbQAALG0QACxtMAAsbVAALG1gACxtcAAsbZAALG2gACxxkAAscbAALHHQACxx8AAsciAALHIwACxyQAAsclAALHJgACxygAAscqAALHKwACxywAAscuAALHLwACx24AAsdwAALHcgACx3QAAsd3AALHeAACx3kAAsd6AALHewACx30AAsd/AALHgAACx4EAAseDAALHhAACx8MAAsfFAALHyAACx8oAAsfNAALHzgACx88AAsfQAALH0QACx9MAAsfVAALH1gACx9cAAsfZAALH2gACyBkAAsgbAALIHQACyB8AAsgiAALIIwACyCQAAsglAALIJgACyCgAAsgqAALIKwACyCwAAsguAALILwACyG4AAshwAALIcgACyHQAAsh3AALIeAACyHkAAsh6AALIewACyH0AAsh/AALIgAACyIEAAsiDAALIhAACyMMAAsjFAALIxwACyMkAAsjMAALIzQACyM4AAsjPAALI0AACyNIAAsjUAALI1QACyNYAAsjYAALI2QACyOIAAsjjAALI5QACySQAAskmAALJKAACySoAAsktAALJLgACyS8AAskwAALJMQACyTMAAsk1AALJNgACyTcAAsk5AALJOgACyXkAAsl7AALJfQACyX8AAsmCAALJgwACyYQAAsmFAALJhgACyYgAAsmKAALJiwACyYwAAsmOAALJjwACyc4AAsnQAALJ0wACydUAAsnYAALJ2QACydoAAsnbAALJ3AACyd4AAsngAALJ4QACyeIAAsnkAALJ5QACye4AAsnxAALJ9AACyfYAAsn7AALKBAACyh0AAsomAALKPwACylYAAspoAALKhQACyogAAsqKAALKjAACyo4AAsqRAALKkwACypgAAsrXAALK2QACytsAAsrdAALK3wACyuAAAsrhAALK4gACyuMAAsrlAALK5wACyugAAsrpAALK6wACyuwAAssrAALLLQACyy8AAssxAALLMwACyzQAAss1AALLNgACyzcAAss5AALLOwACyzwAAss9AALLPwACy0AAAst/AALLgQACy4MAAsuFAALLhwACy4gAAsuJAALLigACy4sAAsuNAALLjwACy5AAAsuRAALLkwACy5QAAsudAALLoAACy6MAAsulAALL6AACzAwAAswwAALMUwACzHoAAsyaAALMwQACzOgAAs0IAALNLAACzVAAAs1SAALNVQACzVcAAs1ZAALNWwACzV4AAs1hAALNYwACzWUAAs1oAALNagACzWwAAs1vAALNcgACzXMAAs14AALNhQACzYgAAs2KAALNjQACzZAAAs2SAALNtwACzdsAAs4CAALOJgACzikAAs4rAALOLQACzi8AAs4xAALOMwACzjQAAs43AALORAACzlcAAs5ZAALOWwACzl0AAs5fAALOYQACzmMAAs5lAALOZwACzmkAAs58AALOfwACzoIAAs6FAALOiAACzosAAs6OAALOkQACzpQAAs6XAALOmQACztgAAs7aAALO3QACzt8AAs7iAALO4wACzuQAAs7lAALO5gACzugAAs7qAALO6wACzuwAAs7uAALO7wACzvgAAs75AALO+wACzzoAAs88AALPPgACz0AAAs9DAALPRAACz0UAAs9GAALPRwACz0kAAs9LAALPTAACz00AAs9PAALPUAACz48AAs+RAALPlAACz5YAAs+ZAALPmgACz5sAAs+cAALPnQACz58AAs+hAALPogACz6MAAs+lAALPpgACz68AAs+wAALPsgACz/EAAs/zAALP9QACz/cAAs/6AALP+wACz/wAAs/9AALP/gAC0AAAAtACAALQAwAC0AQAAtAGAALQBwAC0EYAAtBIAALQSwAC0E0AAtBQAALQUQAC0FIAAtBTAALQVAAC0FYAAtBYAALQWQAC0FoAAtBcAALQXQAC0GYAAtBnAALQaQAC0KgAAtCqAALQrAAC0K4AAtCxAALQsgAC0LMAAtC0AALQtQAC0LcAAtC5AALQugAC0LsAAtC9AALQvgAC0P0AAtD/AALRAgAC0QQAAtEHAALRCAAC0QkAAtEKAALRCwAC0Q0AAtEPAALREAAC0REAAtETAALRFAAC0SEAAtEiAALRIwAC0SUAAtFkAALRZgAC0WgAAtFqAALRbQAC0W4AAtFvAALRcAAC0XEAAtFzAALRdQAC0XYAAtF3AALReQAC0XoAAtG5AALRuwAC0b0AAtG/AALRwgAC0cMAAtHEAALRxQAC0cYAAtHIAALRygAC0csAAtHMAALRzgAC0c8AAtHcAALR5QAC0egAAtHrAALR7QAC0fAAAtH5AALR/AAC0f8AAtICAALSBQAC0gcAAtINAALSHwAC0iwAAtJ3AALSmgAC0roAAtLaAALS3AAC0t4AAtLgAALS4gAC0uUAAtLmAALS5wAC0uoAAtLrAALS7QAC0u4AAtLwAALS8wAC0vQAAtL1AALS+AAC0vkAAtMCAALTDwAC0xQAAtMWAALTGAAC0x0AAtMgAALTIwAC0yUAAtNKAALTbgAC05UAAtO5AALTvAAC074AAtPAAALTwgAC08QAAtPGAALTxwAC08oAAtPXAALT6AAC0+oAAtPsAALT7gAC0/AAAtPyAALT9AAC0/YAAtP4AALUCQAC1AwAAtQPAALUEgAC1BUAAtQYAALUGwAC1B4AAtQhAALUIwAC1GIAAtRkAALUZgAC1GgAAtRrAALUbAAC1G0AAtRuAALUbwAC1HEAAtRzAALUdAAC1HUAAtR3AALUeAAC1LcAAtS5AALUuwAC1L0AAtTAAALUwQAC1MIAAtTDAALUxAAC1MYAAtTIAALUyQAC1MoAAtTMAALUzQAC1QwAAtUOAALVEQAC1RMAAtUWAALVFwAC1RgAAtUZAALVGgAC1RwAAtUeAALVHwAC1SAAAtUiAALVIwAC1TAAAtUxAALVMgAC1TQAAtVzAALVdQAC1XcAAtV5AALVfAAC1X0AAtV+AALVfwAC1YAAAtWCAALVhAAC1YUAAtWGAALViAAC1YkAAtXIAALVygAC1cwAAtXOAALV0QAC1dIAAtXTAALV1AAC1dUAAtXXAALV2QAC1doAAtXbAALV3QAC1d4AAtYdAALWHwAC1iEAAtYjAALWJgAC1icAAtYoAALWKQAC1ioAAtYsAALWLgAC1i8AAtYwAALWMgAC1jMAAtZyAALWdAAC1nYAAtZ4AALWewAC1nwAAtZ9AALWfgAC1n8AAtaBAALWgwAC1oQAAtaFAALWhwAC1ogAAtbHAALWyQAC1ssAAtbNAALW0AAC1tEAAtbSAALW0wAC1tQAAtbWAALW2AAC1tkAAtbaAALW3AAC1t0AAtcCAALXJgAC100AAtdxAALXdAAC13YAAtd4AALXegAC13wAAtd+AALXfwAC14IAAtePAALXngAC16AAAteiAALXpAAC16YAAteoAALXqgAC16wAAte7AALXvgAC18EAAtfEAALXxwAC18oAAtfNAALX0AAC19IAAtgRAALYEwAC2BUAAtgXAALYGgAC2BsAAtgcAALYHQAC2B4AAtggAALYIgAC2CMAAtgkAALYJgAC2CcAAthmAALYaAAC2GoAAthsAALYbwAC2HAAAthxAALYcgAC2HMAAth1AALYdwAC2HgAAth5AALYewAC2HwAAti7AALYvQAC2L8AAtjBAALYxAAC2MUAAtjGAALYxwAC2MgAAtjKAALYzAAC2M0AAtjOAALY0AAC2NEAAtkQAALZEgAC2RQAAtkWAALZGQAC2RoAAtkbAALZHAAC2R0AAtkfAALZIQAC2SIAAtkjAALZJQAC2SYAAtllAALZZwAC2WkAAtlrAALZbgAC2W8AAtlwAALZcQAC2XIAAtl0AALZdgAC2XcAAtl4AALZegAC2XsAAtm6AALZvAAC2b4AAtnAAALZwwAC2cQAAtnFAALZxgAC2ccAAtnJAALZywAC2cwAAtnNAALZzwAC2dAAAtoPAALaEQAC2hMAAtoVAALaGAAC2hkAAtoaAALaGwAC2hwAAtoeAALaIAAC2iEAAtoiAALaJAAC2iUAAtpwAALakwAC2rMAAtrTAALa1QAC2tcAAtrZAALa2wAC2t4AAtrfAALa4AAC2uMAAtrkAALa5gAC2ucAAtrpAALa7AAC2u0AAtruAALa8QAC2vIAAtr3AALbBAAC2wkAAtsLAALbDQAC2xIAAtsVAALbGAAC2xoAAts/AALbYwAC24oAAtuuAALbsQAC27MAAtu1AALbtwAC27kAAtu7AALbvAAC278AAtvMAALb3QAC298AAtvhAALb4wAC2+UAAtvnAALb6QAC2+sAAtvtAALb/gAC3AEAAtwEAALcBwAC3AoAAtwNAALcEAAC3BMAAtwWAALcGAAC3FcAAtxZAALcWwAC3F0AAtxgAALcYQAC3GIAAtxjAALcZAAC3GYAAtxoAALcaQAC3GoAAtxsAALcbQAC3KwAAtyuAALcsAAC3LIAAty1AALctgAC3LcAAty4AALcuQAC3LsAAty9AALcvgAC3L8AAtzBAALcwgAC3QEAAt0DAALdBgAC3QgAAt0LAALdDAAC3Q0AAt0OAALdDwAC3REAAt0TAALdFAAC3RUAAt0XAALdGAAC3SUAAt0mAALdJwAC3SkAAt1oAALdagAC3WwAAt1uAALdcQAC3XIAAt1zAALddAAC3XUAAt13AALdeQAC3XoAAt17AALdfQAC3X4AAt29AALdvwAC3cEAAt3DAALdxgAC3ccAAt3IAALdyQAC3coAAt3MAALdzgAC3c8AAt3QAALd0gAC3dMAAt4SAALeFAAC3hYAAt4YAALeGwAC3hwAAt4dAALeHgAC3h8AAt4hAALeIwAC3iQAAt4lAALeJwAC3igAAt5nAALeaQAC3msAAt5tAALecAAC3nEAAt5yAALecwAC3nQAAt52AALeeAAC3nkAAt56AALefAAC3n0AAt68AALevgAC3sAAAt7CAALexQAC3sYAAt7HAALeyAAC3skAAt7LAALezQAC3s4AAt7PAALe0QAC3tIAAt73AALfGwAC30IAAt9mAALfaQAC32sAAt9tAALfbwAC33EAAt9zAALfdAAC33cAAt+EAALfkwAC35UAAt+XAALfmQAC35sAAt+dAALfnwAC36EAAt+wAALfswAC37YAAt+5AALfvAAC378AAt/CAALfxQAC38cAAuAGAALgCAAC4AoAAuAMAALgDwAC4BAAAuARAALgEgAC4BMAAuAVAALgFwAC4BgAAuAZAALgGwAC4BwAAuBbAALgXQAC4F8AAuBhAALgZAAC4GUAAuBmAALgZwAC4GgAAuBqAALgbAAC4G0AAuBuAALgcAAC4HEAAuCwAALgsgAC4LQAAuC2AALguQAC4LoAAuC7AALgvAAC4L0AAuC/AALgwQAC4MIAAuDDAALgxQAC4MYAAuEFAALhBwAC4QoAAuEMAALhDwAC4RAAAuERAALhEgAC4RMAAuEVAALhFwAC4RgAAuEZAALhGwAC4RwAAuFbAALhXQAC4V8AAuFhAALhZAAC4WUAAuFmAALhZwAC4WgAAuFqAALhbAAC4W0AAuFuAALhcAAC4XEAAuGwAALhsgAC4bQAAuG2AALhuQAC4boAAuG7AALhvAAC4b0AAuG/AALhwQAC4cIAAuHDAALhxQAC4cYAAuIFAALiBwAC4gkAAuILAALiDgAC4g8AAuIQAALiEQAC4hIAAuIUAALiFgAC4hcAAuIYAALiGgAC4hsAAuJmAALiiQAC4qkAAuLJAALiywAC4s0AAuLPAALi0QAC4tQAAuLVAALi1gAC4tkAAuLaAALi3AAC4t0AAuLfAALi4QAC4uIAAuLjAALi5gAC4ucAAuLwAALi/QAC4wIAAuMEAALjBgAC4wsAAuMOAALjEQAC4xMAAuM4AALjXAAC44MAAuOnAALjqgAC46wAAuOuAALjsAAC47IAAuO0AALjtQAC47gAAuPFAALj1gAC49gAAuPaAALj3AAC494AAuPgAALj4gAC4+QAAuPmAALj9wAC4/oAAuP9AALkAAAC5AMAAuQGAALkCQAC5AwAAuQPAALkEQAC5FAAAuRSAALkVAAC5FYAAuRZAALkWgAC5FsAAuRcAALkXQAC5F8AAuRhAALkYgAC5GMAAuRlAALkZgAC5KUAAuSnAALkqQAC5KsAAuSuAALkrwAC5LAAAuSxAALksgAC5LQAAuS2AALktwAC5LgAAuS6AALkuwAC5PoAAuT8AALk/wAC5QEAAuUEAALlBQAC5QYAAuUHAALlCAAC5QoAAuUMAALlDQAC5Q4AAuUQAALlEQAC5R4AAuUfAALlIAAC5SIAAuVhAALlYwAC5WUAAuVnAALlagAC5WsAAuVsAALlbQAC5W4AAuVwAALlcgAC5XMAAuV0AALldgAC5XcAAuW2AALluAAC5boAAuW8AALlvwAC5cAAAuXBAALlwgAC5cMAAuXFAALlxwAC5cgAAuXJAALlywAC5cwAAuYLAALmDQAC5g8AAuYRAALmFAAC5hUAAuYWAALmFwAC5hgAAuYaAALmHAAC5h0AAuYeAALmIAAC5iEAAuZgAALmYgAC5mQAAuZmAALmaQAC5moAAuZrAALmbAAC5m0AAuZvAALmcQAC5nIAAuZzAALmdQAC5nYAAua1AALmtwAC5rkAAua7AALmvgAC5r8AAubAAALmwQAC5sIAAubEAALmxgAC5scAAubIAALmygAC5ssAAubwAALnFAAC5zsAAudfAALnYgAC52QAAudmAALnaAAC52oAAudsAALnbQAC53AAAud9AALnjAAC544AAueQAALnkgAC55QAAueWAALnmAAC55oAAuepAALnrAAC568AAueyAALntQAC57gAAue7AALnvgAC58AAAuf/AALoAQAC6AMAAugFAALoCAAC6AkAAugKAALoCwAC6AwAAugOAALoEAAC6BEAAugSAALoFAAC6BUAAuhUAALoVgAC6FgAAuhaAALoXQAC6F4AAuhfAALoYAAC6GEAAuhjAALoZQAC6GYAAuhnAALoaQAC6GoAAuipAALoqwAC6K0AAuivAALosgAC6LMAAui0AALotQAC6LYAAui4AALougAC6LsAAui8AALovgAC6L8AAuj+AALpAAAC6QIAAukEAALpBwAC6QgAAukJAALpCgAC6QsAAukNAALpDwAC6RAAAukRAALpEwAC6RQAAulTAALpVQAC6VcAAulZAALpXAAC6V0AAuleAALpXwAC6WAAAuliAALpZAAC6WUAAulmAALpaAAC6WkAAumoAALpqgAC6awAAumuAALpsQAC6bIAAumzAALptAAC6bUAAum3AALpuQAC6boAAum7AALpvQAC6b4AAun9AALp/wAC6gEAAuoDAALqBgAC6gcAAuoIAALqCQAC6goAAuoMAALqDgAC6g8AAuoQAALqEgAC6hMAAupeAALqgQAC6qEAAurBAALqwwAC6sUAAurHAALqyQAC6swAAurNAALqzgAC6tEAAurSAALq1AAC6tUAAurXAALq2gAC6tsAAurcAALq3wAC6uAAAurlAALq8gAC6vcAAur5AALq+wAC6wAAAusDAALrBgAC6wgAAustAALrUQAC63gAAuucAALrnwAC66EAAuujAALrpQAC66cAAuupAALrqgAC660AAuu6AALrywAC680AAuvPAALr0QAC69MAAuvVAALr1wAC69kAAuvbAALr7AAC6+8AAuvyAALr9QAC6/gAAuv7AALr/gAC7AEAAuwEAALsBgAC7EUAAuxHAALsSQAC7EsAAuxOAALsTwAC7FAAAuxRAALsUgAC7FQAAuxWAALsVwAC7FgAAuxaAALsWwAC7JoAAuycAALsngAC7KAAAuyjAALspAAC7KUAAuymAALspwAC7KkAAuyrAALsrAAC7K0AAuyvAALssAAC7O8AAuzxAALs9AAC7PYAAuz5AALs+gAC7PsAAuz8AALs/QAC7P8AAu0BAALtAgAC7QMAAu0FAALtBgAC7RMAAu0UAALtFQAC7RcAAu1WAALtWAAC7VoAAu1cAALtXwAC7WAAAu1hAALtYgAC7WMAAu1lAALtZwAC7WgAAu1pAALtawAC7WwAAu2rAALtrQAC7a8AAu2xAALttAAC7bUAAu22AALttwAC7bgAAu26AALtvAAC7b0AAu2+AALtwAAC7cEAAu4AAALuAgAC7gQAAu4GAALuCQAC7goAAu4LAALuDAAC7g0AAu4PAALuEQAC7hIAAu4TAALuFQAC7hYAAu5VAALuVwAC7lkAAu5bAALuXgAC7l8AAu5gAALuYQAC7mIAAu5kAALuZgAC7mcAAu5oAALuagAC7msAAu6qAALurAAC7q4AAu6wAALuswAC7rQAAu61AALutgAC7rcAAu65AALuuwAC7rwAAu69AALuvwAC7sAAAu7lAALvCQAC7zAAAu9UAALvVwAC71kAAu9bAALvXQAC718AAu9hAALvYgAC72UAAu9yAALvgQAC74MAAu+FAALvhwAC74kAAu+LAALvjQAC748AAu+eAALvoQAC76QAAu+nAALvqgAC760AAu+wAALvswAC77UAAu/0AALv9gAC7/gAAu/6AALv/QAC7/4AAu//AALwAAAC8AEAAvADAALwBQAC8AYAAvAHAALwCQAC8AoAAvBJAALwSwAC8E0AAvBPAALwUgAC8FMAAvBUAALwVQAC8FYAAvBYAALwWgAC8FsAAvBcAALwXgAC8F8AAvCeAALwoAAC8KIAAvCkAALwpwAC8KgAAvCpAALwqgAC8KsAAvCtAALwrwAC8LAAAvCxAALwswAC8LQAAvDzAALw9QAC8PgAAvD6AALw/QAC8P4AAvD/AALxAAAC8QEAAvEDAALxBQAC8QYAAvEHAALxCQAC8QoAAvFJAALxSwAC8U0AAvFPAALxUgAC8VMAAvFUAALxVQAC8VYAAvFYAALxWgAC8VsAAvFcAALxXgAC8V8AAvGeAALxoAAC8aIAAvGkAALxpwAC8agAAvGpAALxqgAC8asAAvGtAALxrwAC8bAAAvGxAALxswAC8bQAAvHzAALx9QAC8fcAAvH5AALx/AAC8f0AAvH+AALx/wAC8gAAAvICAALyBAAC8gUAAvIGAALyCAAC8gkAAvISAALyEwAC8hUAAvJYAALyfAAC8qAAAvLDAALy6gAC8woAAvMxAALzWAAC83gAAvOcAALzwAAC88IAAvPFAALzxwAC88kAAvPLAALzzgAC89EAAvPTAALz1QAC89gAAvPaAALz3AAC898AAvPiAALz4wAC8+gAAvP1AALz+AAC8/oAAvP9AAL0AAAC9AIAAvQnAAL0SwAC9HIAAvSWAAL0mQAC9JsAAvSdAAL0nwAC9KEAAvSjAAL0pAAC9KcAAvS0AAL0xwAC9MkAAvTLAAL0zQAC9M8AAvTRAAL00wAC9NUAAvTXAAL02QAC9OwAAvTvAAL08gAC9PUAAvT4AAL0+wAC9P4AAvUBAAL1BAAC9QcAAvUJAAL1SAAC9UoAAvVNAAL1TwAC9VIAAvVTAAL1VAAC9VUAAvVWAAL1WAAC9VoAAvVbAAL1XAAC9V4AAvVfAAL1aAAC9WkAAvVrAAL1qgAC9awAAvWuAAL1sAAC9bMAAvW0AAL1tQAC9bYAAvW3AAL1uQAC9bsAAvW8AAL1vQAC9b8AAvXAAAL1/wAC9gEAAvYEAAL2BgAC9gkAAvYKAAL2CwAC9gwAAvYNAAL2DwAC9hEAAvYSAAL2EwAC9hUAAvYWAAL2HwAC9iAAAvYiAAL2YQAC9mMAAvZlAAL2ZwAC9moAAvZrAAL2bAAC9m0AAvZuAAL2cAAC9nIAAvZzAAL2dAAC9nYAAvZ3AAL2tgAC9rgAAva7AAL2vQAC9sAAAvbBAAL2wgAC9sMAAvbEAAL2xgAC9sgAAvbJAAL2ygAC9swAAvbNAAL21gAC9tcAAvbZAAL3GAAC9xoAAvccAAL3HgAC9yEAAvciAAL3IwAC9yQAAvclAAL3JwAC9ykAAvcqAAL3KwAC9y0AAvcuAAL3bQAC928AAvdyAAL3dAAC93cAAvd4AAL3eQAC93oAAvd7AAL3fQAC938AAveAAAL3gQAC94MAAveEAAL3kQAC95IAAveTAAL3lQAC99QAAvfWAAL32AAC99oAAvfdAAL33gAC998AAvfgAAL34QAC9+MAAvflAAL35gAC9+cAAvfpAAL36gAC+CkAAvgrAAL4LgAC+DAAAvgzAAL4NAAC+DUAAvg2AAL4NwAC+DkAAvg7AAL4PAAC+D0AAvg/AAL4QAAC+E8AAvhcAAL4YQAC+GQAAvhnAAL4bAAC+G8AAvhyAAL4dAAC+HkAAvjEAAL45wAC+QcAAvknAAL5KQAC+SsAAvktAAL5LwAC+TIAAvkzAAL5NAAC+TcAAvk4AAL5OgAC+TsAAvk9AAL5QAAC+UEAAvlCAAL5RQAC+UYAAvlLAAL5WAAC+V0AAvlfAAL5YQAC+WYAAvlpAAL5bAAC+W4AAvmTAAL5twAC+d4AAvoCAAL6BQAC+gcAAvoJAAL6CwAC+g0AAvoPAAL6EAAC+hMAAvogAAL6MQAC+jMAAvo1AAL6NwAC+jkAAvo7AAL6PQAC+j8AAvpBAAL6UgAC+lUAAvpYAAL6WwAC+l4AAvphAAL6ZAAC+mcAAvpqAAL6bAAC+qsAAvqtAAL6rwAC+rEAAvq0AAL6tQAC+rYAAvq3AAL6uAAC+roAAvq8AAL6vQAC+r4AAvrAAAL6wQAC+wAAAvsCAAL7BAAC+wYAAvsJAAL7CgAC+wsAAvsMAAL7DQAC+w8AAvsRAAL7EgAC+xMAAvsVAAL7FgAC+1UAAvtXAAL7WgAC+1wAAvtfAAL7YAAC+2EAAvtiAAL7YwAC+2UAAvtnAAL7aAAC+2kAAvtrAAL7bAAC+3kAAvt6AAL7ewAC+30AAvu8AAL7vgAC+8AAAvvCAAL7xQAC+8YAAvvHAAL7yAAC+8kAAvvLAAL7zQAC+84AAvvPAAL70QAC+9IAAvwRAAL8EwAC/BUAAvwXAAL8GgAC/BsAAvwcAAL8HQAC/B4AAvwgAAL8IgAC/CMAAvwkAAL8JgAC/CcAAvxmAAL8aAAC/GoAAvxsAAL8bwAC/HAAAvxxAAL8cgAC/HMAAvx1AAL8dwAC/HgAAvx5AAL8ewAC/HwAAvy7AAL8vQAC/L8AAvzBAAL8xAAC/MUAAvzGAAL8xwAC/MgAAvzKAAL8zAAC/M0AAvzOAAL80AAC/NEAAv0QAAL9EgAC/RQAAv0WAAL9GQAC/RoA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 - - + + 1 + folder + - lastPlayDate - + remoteURL + - - lightAccentHex - + + 1 + bookmarks + - - originalFileName - + + 1 + library + \ No newline at end of file From 818a1b8353ee38e0957014d934174e83acb9bf0c Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 29 Aug 2026 10:57:48 -0500 Subject: [PATCH 059/172] fix: close the cancel-before-task window + guard poison ticks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LibraryItemSyncOperation's Task body now also guards on the OPERATION's isCancelled: cancel() running in the start()->assignment window found executionTask nil, so only the operation flag was set — and the body's Task.checkCancellation (which reads the TASK flag) sailed through to issue its PUT / synced:true confirmation under the NEXT signed-in account's token. Between the two flags every interleaving is covered: cancel-before-Task is caught by the operation flag, cancel-after by the task flag at the first suspension point (the propertyLock guarantees cancel() sees the assigned Task). - externalUpdate ticks are range-guarded before Int(): the parameters are PERSISTED, so a NaN (CMTimeGetSeconds on an invalid CMTime) or out-of-range currentTime wouldn't crash once — it would crash-loop on every queue pop. Strict < bound because Double(Int.max) rounds up to 2^63, which itself traps. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ConcurrentSync/ConcurrenceService.swift | 12 +++++++++++- .../Services/Sync/LibraryItemSyncOperation.swift | 16 +++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 828cdcd19..f3a608db9 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -303,11 +303,21 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { Self.logger.error("Discarding externalUpdate task \(task.id): missing required parameters") return nil } + // The parameters are PERSISTED, so a poison value doesn't crash once — it + // crash-loops on every pop. Int(_:) traps on NaN/infinite AND on finite values + // beyond Int.max (CMTimeGetSeconds yields NaN for invalid CMTimes); drop the + // task instead. + let ticks = currentTime * 10_000_000 + // Strict <: Double(Int.max) rounds UP to 2^63, so the boundary itself would trap + guard ticks.isFinite, ticks >= 0, ticks < Double(Int.max) else { + Self.logger.error("Discarding externalUpdate task \(task.id): non-finite or out-of-range currentTime \(currentTime)") + return nil + } let hostId = task.parameters["hostId"] as? String return ExternalUpdateProgressOperation( providerName: providerName, providerItemId: providerId, - positionTicks: Int(currentTime * 10_000_000), + positionTicks: Int(ticks), percentCompleted: percentCompleted, hostId: hostId ) diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 56cfad8e6..c79fc437e 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -80,11 +80,17 @@ class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { override func main() { executionTask = Task { do { - // Cooperative cancellation: cancel() cancels this Task, and the async - // URLSession calls below throw CancellationError at their next suspension - // point — an in-flight op must not finish a PUT or post confirmations under - // the NEXT signed-in account's token (NetworkClient reads the keychain token - // per request). + // Two flags cover every cancel interleaving — an in-flight op must not finish + // a PUT or post confirmations under the NEXT signed-in account's token + // (NetworkClient reads the keychain token per request): + // 1. cancel() ran BEFORE this Task existed (the start()→assignment window): + // executionTask was nil there, so only the OPERATION flag catches it. + guard !isCancelled else { + finish() + return + } + // 2. cancel() ran after: the propertyLock guarantees it saw the Task and set + // the TASK flag — checked here and at every URLSession suspension point. try Task.checkCancellation() switch jobType { case .upload: From ad0842c4f4e01e585e896b4ea83b3ee04293ca93 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 29 Aug 2026 11:11:03 -0500 Subject: [PATCH 060/172] fix: repair positional format specifiers in sync_invitation_description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 23 locales carried bare %1 %2 %3 tokens (no type specifiers), which String(format:) cannot substitute — non-English users saw garbled upsell text — and German had dropped the placeholders entirely. Repaired mechanically (%1 -> %1$@, %2 -> %2$d, %3 -> %3$@) preserving each translation's own word order (nl/tr keep their reordered positions, which is valid for positional specifiers); German reconstructed from its stub. Base/en/ja were already well-formed. NOTE: the same repair must land in Lokalise, or the next export will clobber these entries with the broken values again. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/ar.lproj/Localizable.strings | 2 +- BookPlayer/ca.lproj/Localizable.strings | 2 +- BookPlayer/cs.lproj/Localizable.strings | 2 +- BookPlayer/da.lproj/Localizable.strings | 2 +- BookPlayer/de.lproj/Localizable.strings | 2 +- BookPlayer/el.lproj/Localizable.strings | 2 +- BookPlayer/es.lproj/Localizable.strings | 2 +- BookPlayer/fi.lproj/Localizable.strings | 2 +- BookPlayer/fr.lproj/Localizable.strings | 2 +- BookPlayer/hu.lproj/Localizable.strings | 2 +- BookPlayer/it.lproj/Localizable.strings | 2 +- BookPlayer/nb.lproj/Localizable.strings | 2 +- BookPlayer/nl.lproj/Localizable.strings | 2 +- BookPlayer/pl.lproj/Localizable.strings | 2 +- BookPlayer/pt-BR.lproj/Localizable.strings | 2 +- BookPlayer/pt-PT.lproj/Localizable.strings | 2 +- BookPlayer/ro.lproj/Localizable.strings | 2 +- BookPlayer/ru.lproj/Localizable.strings | 2 +- BookPlayer/sk-SK.lproj/Localizable.strings | 2 +- BookPlayer/sv.lproj/Localizable.strings | 2 +- BookPlayer/tr.lproj/Localizable.strings | 2 +- BookPlayer/uk.lproj/Localizable.strings | 2 +- BookPlayer/zh-Hans.lproj/Localizable.strings | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/BookPlayer/ar.lproj/Localizable.strings b/BookPlayer/ar.lproj/Localizable.strings index 868f14367..5b6505dbc 100644 --- a/BookPlayer/ar.lproj/Localizable.strings +++ b/BookPlayer/ar.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "وفر مساحة التخزين الخاصة بك!"; "sync_invitation_learn_more_button" = "معرفة المزيد"; -"sync_invitation_description" = "أنت على وشك %1 %2 من العناصر. %3"; +"sync_invitation_description" = "أنت على وشك %1$@ %2$d من العناصر. %3$@"; "sync_invitation_stream_description" = "بدلاً من استهلاك المساحة، قم ببثها مباشرة من خادمك وحافظ على مزامنة تقدمك."; "sync_tasks_concurrent_count_title" = "المهام المتزامنة (%d)"; "sync_tasks_running_empty_title" = "لا توجد مهام قيد التشغيل"; diff --git a/BookPlayer/ca.lproj/Localizable.strings b/BookPlayer/ca.lproj/Localizable.strings index 52bac7c17..851f2d832 100644 --- a/BookPlayer/ca.lproj/Localizable.strings +++ b/BookPlayer/ca.lproj/Localizable.strings @@ -506,7 +506,7 @@ Estem treballant dur per oferir una experiència perfecta; si és possible, pose "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Estalvia espai d'emmagatzematge!"; "sync_invitation_learn_more_button" = "Més informació"; -"sync_invitation_description" = "Estàs a punt de %1 %2 elements. %3"; +"sync_invitation_description" = "Estàs a punt de %1$@ %2$d elements. %3$@"; "sync_invitation_stream_description" = "En lloc d'ocupar espai, reprodueix-los directament des del teu servidor i mantén el teu progrés sincronitzat."; "sync_tasks_concurrent_count_title" = "Tasques simultànies (%d)"; "sync_tasks_running_empty_title" = "No hi ha tasques en curs"; diff --git a/BookPlayer/cs.lproj/Localizable.strings b/BookPlayer/cs.lproj/Localizable.strings index d16031ab1..d1922ba73 100644 --- a/BookPlayer/cs.lproj/Localizable.strings +++ b/BookPlayer/cs.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Šetřete své úložiště!"; "sync_invitation_learn_more_button" = "Dozvědět se více"; -"sync_invitation_description" = "Chystáte se %1 %2 položek. %3"; +"sync_invitation_description" = "Chystáte se %1$@ %2$d položek. %3$@"; "sync_invitation_stream_description" = "Místo zabírání místa je streamujte přímo ze svého serveru a udržujte svůj pokrok synchronizovaný."; "sync_tasks_concurrent_count_title" = "Souběžné úkoly (%d)"; "sync_tasks_running_empty_title" = "Žádné běžící úkoly"; diff --git a/BookPlayer/da.lproj/Localizable.strings b/BookPlayer/da.lproj/Localizable.strings index 940a6a9ed..4a5ce703d 100644 --- a/BookPlayer/da.lproj/Localizable.strings +++ b/BookPlayer/da.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Spar din lagerplads!"; "sync_invitation_learn_more_button" = "Læs mere"; -"sync_invitation_description" = "Du er ved at %1 %2 emner. %3"; +"sync_invitation_description" = "Du er ved at %1$@ %2$d emner. %3$@"; "sync_invitation_stream_description" = "I stedet for at optage plads kan du streame dem direkte fra din server og holde din fremgang synkroniseret."; "sync_tasks_concurrent_count_title" = "Samtidige opgaver (%d)"; "sync_tasks_running_empty_title" = "Ingen aktive opgaver"; diff --git a/BookPlayer/de.lproj/Localizable.strings b/BookPlayer/de.lproj/Localizable.strings index c8ae0bc35..affbc248a 100644 --- a/BookPlayer/de.lproj/Localizable.strings +++ b/BookPlayer/de.lproj/Localizable.strings @@ -507,7 +507,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Speicherplatz sparen!"; "sync_invitation_learn_more_button" = "Mehr erfahren"; -"sync_invitation_description" = "Sie sind dabei"; +"sync_invitation_description" = "Sie sind dabei, %2$d Elemente zu %1$@. %3$@"; "sync_invitation_stream_description" = "Anstatt Platz zu beanspruchen, streamen Sie diese direkt von Ihrem Server und halten Sie Ihren Fortschritt synchronisiert."; "sync_tasks_concurrent_count_title" = "Gleichzeitige Aufgaben (%d)"; "sync_tasks_running_empty_title" = "Keine laufenden Aufgaben"; diff --git a/BookPlayer/el.lproj/Localizable.strings b/BookPlayer/el.lproj/Localizable.strings index 4034bc608..9128e4b9d 100644 --- a/BookPlayer/el.lproj/Localizable.strings +++ b/BookPlayer/el.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Εξοικονομήστε χώρο αποθήκευσης!"; "sync_invitation_learn_more_button" = "Μάθετε περισσότερα"; -"sync_invitation_description" = "Πρόκειται να %1 %2 στοιχεία. %3"; +"sync_invitation_description" = "Πρόκειται να %1$@ %2$d στοιχεία. %3$@"; "sync_invitation_stream_description" = "Αντί να καταλαμβάνουν χώρο, μεταδώστε τα απευθείας από τον διακομιστή σας και διατηρήστε την πρόοδό σας συγχρονισμένη."; "sync_tasks_concurrent_count_title" = "Ταυτόχρονες εργασίες (%d)"; "sync_tasks_running_empty_title" = "Δεν υπάρχουν εργασίες σε εκτέλεση"; diff --git a/BookPlayer/es.lproj/Localizable.strings b/BookPlayer/es.lproj/Localizable.strings index 4ae0f2639..fd672bebc 100644 --- a/BookPlayer/es.lproj/Localizable.strings +++ b/BookPlayer/es.lproj/Localizable.strings @@ -507,7 +507,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "¡Ahorra espacio!"; "sync_invitation_learn_more_button" = "Más información"; -"sync_invitation_description" = "Estás a punto de %1 %2 elementos. %3"; +"sync_invitation_description" = "Estás a punto de %1$@ %2$d elementos. %3$@"; "sync_invitation_stream_description" = "En lugar de ocupar espacio, transmítelos directamente desde tu servidor y mantén tu progreso sincronizado."; "sync_tasks_concurrent_count_title" = "Tareas simultáneas (%d)"; "sync_tasks_running_empty_title" = "No hay tareas en curso"; diff --git a/BookPlayer/fi.lproj/Localizable.strings b/BookPlayer/fi.lproj/Localizable.strings index 09f19e3b8..9f0227fea 100644 --- a/BookPlayer/fi.lproj/Localizable.strings +++ b/BookPlayer/fi.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Säästä tallennustilaasi!"; "sync_invitation_learn_more_button" = "Lue lisää"; -"sync_invitation_description" = "Olet aikeissa %1 %2 kohdetta. %3"; +"sync_invitation_description" = "Olet aikeissa %1$@ %2$d kohdetta. %3$@"; "sync_invitation_stream_description" = "Tilan viemisen sijaan voit suoratoistaa ne suoraan palvelimeltasi ja pitää edistymisesi synkronoituna."; "sync_tasks_concurrent_count_title" = "Samanaikaiset tehtävät (%d)"; "sync_tasks_running_empty_title" = "Ei käynnissä olevia tehtäviä"; diff --git a/BookPlayer/fr.lproj/Localizable.strings b/BookPlayer/fr.lproj/Localizable.strings index 62ff649a6..12e7347fe 100644 --- a/BookPlayer/fr.lproj/Localizable.strings +++ b/BookPlayer/fr.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Économisez votre stockage !"; "sync_invitation_learn_more_button" = "En savoir plus"; -"sync_invitation_description" = "Vous êtes sur le point de %1 %2 éléments. %3"; +"sync_invitation_description" = "Vous êtes sur le point de %1$@ %2$d éléments. %3$@"; "sync_invitation_stream_description" = "Au lieu de prendre de la place, diffusez-les directement depuis votre serveur et gardez votre progression synchronisée."; "sync_tasks_concurrent_count_title" = "Tâches simultanées (%d)"; "sync_tasks_running_empty_title" = "Aucune tâche en cours"; diff --git a/BookPlayer/hu.lproj/Localizable.strings b/BookPlayer/hu.lproj/Localizable.strings index 0a020b076..941c706b3 100644 --- a/BookPlayer/hu.lproj/Localizable.strings +++ b/BookPlayer/hu.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Spóroljon a tárhellyel!"; "sync_invitation_learn_more_button" = "Tudjon meg többet"; -"sync_invitation_description" = "Éppen %1 %2 elemet. %3"; +"sync_invitation_description" = "Éppen %1$@ %2$d elemet. %3$@"; "sync_invitation_stream_description" = "Ahelyett, hogy helyet foglalna, streamelje őket közvetlenül a szerveréről, és tartsa szinkronban a haladását."; "sync_tasks_concurrent_count_title" = "Párhuzamos feladatok (%d)"; "sync_tasks_running_empty_title" = "Nincsenek futó feladatok"; diff --git a/BookPlayer/it.lproj/Localizable.strings b/BookPlayer/it.lproj/Localizable.strings index d0250f915..be853d003 100644 --- a/BookPlayer/it.lproj/Localizable.strings +++ b/BookPlayer/it.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Risparmia spazio!"; "sync_invitation_learn_more_button" = "Scopri di più"; -"sync_invitation_description" = "Stai per %1 %2 elementi. %3"; +"sync_invitation_description" = "Stai per %1$@ %2$d elementi. %3$@"; "sync_invitation_stream_description" = "Invece di occupare spazio, riproducili in streaming direttamente dal tuo server e mantieni i tuoi progressi sincronizzati."; "sync_tasks_concurrent_count_title" = "Attività simultanee (%d)"; "sync_tasks_running_empty_title" = "Nessuna attività in corso"; diff --git a/BookPlayer/nb.lproj/Localizable.strings b/BookPlayer/nb.lproj/Localizable.strings index d21b7a10e..20f5c8c2f 100644 --- a/BookPlayer/nb.lproj/Localizable.strings +++ b/BookPlayer/nb.lproj/Localizable.strings @@ -506,7 +506,7 @@ Vi jobber hardt for å gi deg en sømløs opplevelse. Hvis mulig, kontakt oss p "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Spar lagringsplass!"; "sync_invitation_learn_more_button" = "Lær mer"; -"sync_invitation_description" = "Du er i ferd med å %1 %2 elementer. %3"; +"sync_invitation_description" = "Du er i ferd med å %1$@ %2$d elementer. %3$@"; "sync_invitation_stream_description" = "I stedet for å ta opp plass, kan du strømme dem direkte fra serveren din og holde fremgangen din synkronisert."; "sync_tasks_concurrent_count_title" = "Samtidige oppgaver (%d)"; "sync_tasks_running_empty_title" = "Ingen oppgaver kjører"; diff --git a/BookPlayer/nl.lproj/Localizable.strings b/BookPlayer/nl.lproj/Localizable.strings index 4684cbd43..9fa7835e0 100644 --- a/BookPlayer/nl.lproj/Localizable.strings +++ b/BookPlayer/nl.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Bespaar opslagruimte!"; "sync_invitation_learn_more_button" = "Meer informatie"; -"sync_invitation_description" = "Je staat op het punt om %2 items te %1. %3"; +"sync_invitation_description" = "Je staat op het punt om %2$d items te %1$@. %3$@"; "sync_invitation_stream_description" = "In plaats van ruimte in beslag te nemen, kun je ze rechtstreeks vanaf je server streamen en je voortgang gesynchroniseerd houden."; "sync_tasks_concurrent_count_title" = "Gelijktijdige taken (%d)"; "sync_tasks_running_empty_title" = "Geen lopende taken"; diff --git a/BookPlayer/pl.lproj/Localizable.strings b/BookPlayer/pl.lproj/Localizable.strings index d998b0542..ec4882b8b 100644 --- a/BookPlayer/pl.lproj/Localizable.strings +++ b/BookPlayer/pl.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Oszczędzaj miejsce na dysku!"; "sync_invitation_learn_more_button" = "Dowiedz się więcej"; -"sync_invitation_description" = "Zaraz zaczniesz %1 %2 elementów. %3"; +"sync_invitation_description" = "Zaraz zaczniesz %1$@ %2$d elementów. %3$@"; "sync_invitation_stream_description" = "Zamiast zajmować miejsce, odtwarzaj je strumieniowo bezpośrednio z serwera i synchronizuj swoje postępy."; "sync_tasks_concurrent_count_title" = "Zadania współbieżne (%d)"; "sync_tasks_running_empty_title" = "Brak uruchomionych zadań"; diff --git a/BookPlayer/pt-BR.lproj/Localizable.strings b/BookPlayer/pt-BR.lproj/Localizable.strings index 76bfdab22..b6ae87965 100644 --- a/BookPlayer/pt-BR.lproj/Localizable.strings +++ b/BookPlayer/pt-BR.lproj/Localizable.strings @@ -507,7 +507,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Economize seu armazenamento!"; "sync_invitation_learn_more_button" = "Saiba mais"; -"sync_invitation_description" = "Você está prestes a %1 %2 itens. %3"; +"sync_invitation_description" = "Você está prestes a %1$@ %2$d itens. %3$@"; "sync_invitation_stream_description" = "Em vez de ocupar espaço, transmita-os diretamente do seu servidor e mantenha seu progresso sincronizado."; "sync_tasks_concurrent_count_title" = "Tarefas Simultâneas (%d)"; "sync_tasks_running_empty_title" = "Nenhuma tarefa em execução"; diff --git a/BookPlayer/pt-PT.lproj/Localizable.strings b/BookPlayer/pt-PT.lproj/Localizable.strings index b0bb317a6..b3af0a38b 100644 --- a/BookPlayer/pt-PT.lproj/Localizable.strings +++ b/BookPlayer/pt-PT.lproj/Localizable.strings @@ -507,7 +507,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Poupe o seu armazenamento!"; "sync_invitation_learn_more_button" = "Saber mais"; -"sync_invitation_description" = "Está prestes a %1 %2 itens. %3"; +"sync_invitation_description" = "Está prestes a %1$@ %2$d itens. %3$@"; "sync_invitation_stream_description" = "Em vez de ocupar espaço, transmita-os diretamente do seu servidor e mantenha o seu progresso sincronizado."; "sync_tasks_concurrent_count_title" = "Tarefas Simultâneas (%d)"; "sync_tasks_running_empty_title" = "Nenhuma tarefa em execução"; diff --git a/BookPlayer/ro.lproj/Localizable.strings b/BookPlayer/ro.lproj/Localizable.strings index 750102a7d..86e8c034e 100644 --- a/BookPlayer/ro.lproj/Localizable.strings +++ b/BookPlayer/ro.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Economisiți spațiu de stocare!"; "sync_invitation_learn_more_button" = "Aflați mai multe"; -"sync_invitation_description" = "Sunteți pe cale să %1 %2 elemente. %3"; +"sync_invitation_description" = "Sunteți pe cale să %1$@ %2$d elemente. %3$@"; "sync_invitation_stream_description" = "În loc să ocupați spațiu, redați-le direct de pe server și păstrați progresul sincronizat."; "sync_tasks_concurrent_count_title" = "Sarcini simultane (%d)"; "sync_tasks_running_empty_title" = "Nicio sarcină în curs"; diff --git a/BookPlayer/ru.lproj/Localizable.strings b/BookPlayer/ru.lproj/Localizable.strings index 373ae5f27..9592f37ad 100644 --- a/BookPlayer/ru.lproj/Localizable.strings +++ b/BookPlayer/ru.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Экономьте место!"; "sync_invitation_learn_more_button" = "Узнать больше"; -"sync_invitation_description" = "Вы собираетесь %1 %2 элементов. %3"; +"sync_invitation_description" = "Вы собираетесь %1$@ %2$d элементов. %3$@"; "sync_invitation_stream_description" = "Вместо того чтобы занимать место, транслируйте их прямо со своего сервера и синхронизируйте прогресс."; "sync_tasks_concurrent_count_title" = "Параллельные задачи (%d)"; "sync_tasks_running_empty_title" = "Нет запущенных задач"; diff --git a/BookPlayer/sk-SK.lproj/Localizable.strings b/BookPlayer/sk-SK.lproj/Localizable.strings index 06cb5d594..ec430503e 100644 --- a/BookPlayer/sk-SK.lproj/Localizable.strings +++ b/BookPlayer/sk-SK.lproj/Localizable.strings @@ -506,7 +506,7 @@ Usilovne pracujeme na poskytovaní bezproblémového zážitku, ak je to možné "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Šetrite svoje úložisko!"; "sync_invitation_learn_more_button" = "Dozvedieť sa viac"; -"sync_invitation_description" = "Chystáte sa %1 %2 položiek. %3"; +"sync_invitation_description" = "Chystáte sa %1$@ %2$d položiek. %3$@"; "sync_invitation_stream_description" = "Namiesto zaberania miesta ich streamujte priamo zo svojho servera a udržujte svoj pokrok synchronizovaný."; "sync_tasks_concurrent_count_title" = "Súbežné úlohy (%d)"; "sync_tasks_running_empty_title" = "Žiadne bežiace úlohy"; diff --git a/BookPlayer/sv.lproj/Localizable.strings b/BookPlayer/sv.lproj/Localizable.strings index d92ed649c..0aa37dc71 100644 --- a/BookPlayer/sv.lproj/Localizable.strings +++ b/BookPlayer/sv.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Spara ditt lagringsutrymme!"; "sync_invitation_learn_more_button" = "Läs mer"; -"sync_invitation_description" = "Du är på väg att %1 %2 objekt. %3"; +"sync_invitation_description" = "Du är på väg att %1$@ %2$d objekt. %3$@"; "sync_invitation_stream_description" = "Istället för att ta upp plats kan du streama dem direkt från din server och hålla dina framsteg synkroniserade."; "sync_tasks_concurrent_count_title" = "Samtidiga uppgifter (%d)"; "sync_tasks_running_empty_title" = "Inga pågående uppgifter"; diff --git a/BookPlayer/tr.lproj/Localizable.strings b/BookPlayer/tr.lproj/Localizable.strings index e303a7dbc..ca22d2bd7 100644 --- a/BookPlayer/tr.lproj/Localizable.strings +++ b/BookPlayer/tr.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Depolama Alanınızdan Tasarruf Edin!"; "sync_invitation_learn_more_button" = "Daha fazla bilgi al"; -"sync_invitation_description" = "%2 öğeyi %1 etmek üzeresiniz. %3"; +"sync_invitation_description" = "%2$d öğeyi %1$@ etmek üzeresiniz. %3$@"; "sync_invitation_stream_description" = "Yer kaplamak yerine, onları doğrudan sunucunuzdan yayınlayın ve ilerlemenizi senkronize tutun."; "sync_tasks_concurrent_count_title" = "Eşzamanlı Görevler (%d)"; "sync_tasks_running_empty_title" = "Çalışan görev yok"; diff --git a/BookPlayer/uk.lproj/Localizable.strings b/BookPlayer/uk.lproj/Localizable.strings index bf8c67d35..a678f75f9 100644 --- a/BookPlayer/uk.lproj/Localizable.strings +++ b/BookPlayer/uk.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "Економте місце на пристрої!"; "sync_invitation_learn_more_button" = "Докладніше"; -"sync_invitation_description" = "Ви збираєтеся %1 %2 елементів. %3"; +"sync_invitation_description" = "Ви збираєтеся %1$@ %2$d елементів. %3$@"; "sync_invitation_stream_description" = "Замість того, щоб займати місце, транслюйте їх безпосередньо з вашого сервера та синхронізуйте прогрес."; "sync_tasks_concurrent_count_title" = "Паралельні завдання (%d)"; "sync_tasks_running_empty_title" = "Немає запущених завдань"; diff --git a/BookPlayer/zh-Hans.lproj/Localizable.strings b/BookPlayer/zh-Hans.lproj/Localizable.strings index f1fe27832..255f93f8f 100644 --- a/BookPlayer/zh-Hans.lproj/Localizable.strings +++ b/BookPlayer/zh-Hans.lproj/Localizable.strings @@ -506,7 +506,7 @@ "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sync_invitation_save_storage_title" = "节省您的存储空间!"; "sync_invitation_learn_more_button" = "了解更多"; -"sync_invitation_description" = "您即将 %1 %2 个项目。%3"; +"sync_invitation_description" = "您即将 %1$@ %2$d 个项目。%3$@"; "sync_invitation_stream_description" = "无需占用空间,直接从服务器流式传输并保持进度同步。"; "sync_tasks_concurrent_count_title" = "并发任务 (%d)"; "sync_tasks_running_empty_title" = "无正在运行的任务"; From ee3304958cf2a8ad0a2bc4902d321bda65ca4428 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 30 Aug 2026 10:21:37 -0500 Subject: [PATCH 061/172] feat: require real file extensions for virtual imports (no m4a guess) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Virtual import now hydrates the selection before building anything: - Jellyfin: getItems(ids:) with fields [.mediaSources, .path], chunked at 100 ids so a whole-folder import can't overflow the query string. - AudiobookShelf: POST /api/items/batch/get in one round-trip — list endpoints return MINIFIED items without audioFiles; the expanded batch response carries the real per-file metadata. The six copy-pasted import builders collapse into one per-provider asVirtualImportResource(fileExtension:) whose extension parameter is NON-OPTIONAL — all six `?? "m4a"` sites are gone. An item whose hydrated metadata carries no audio file has nothing to stream: it is skipped with a logged count, and an alert (import_no_audio_files_alert, Base+en) shows when nothing in the selection is importable. Title/progress still come from the original list item, so ABS user progress (absent from batch/get responses) survives the hydration. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelfLibraryViewModel.swift | 73 +++--- ...iobookShelfAudiobookDetailsViewModel.swift | 54 ++--- BookPlayer/Base.lproj/Localizable.strings | 1 + .../JellyfinAudiobookDetailsViewModel.swift | 55 ++--- .../JellyfinLibraryViewModel.swift | 219 +++++++++--------- BookPlayer/en.lproj/Localizable.strings | 1 + .../AudiobookShelfLibraryItem.swift | 51 ++++ .../AudiobookShelfConnectionService.swift | 31 +++ Shared/Jellyfin/JellyfinLibraryItem.swift | 48 ++++ .../Network/JellyfinConnectionService.swift | 25 ++ 10 files changed, 344 insertions(+), 214 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 49ec76039..5bffb1e9d 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -252,44 +252,43 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, }) : self.items.filter { $0.kind == .audiobook } - let libraryItems: [SimpleExternalResource] = audiobooks.map { item in - let fileExt = item.fileExtension ?? "m4a" - let libraryItem = SimpleLibraryItem( - title: item.title, - details: item.authorName ?? "voiceover_unknown_author".localized, - speed: 1, - currentTime: Double(item.currentTime ?? 0), - duration: Double(item.duration ?? 0), - percentCompleted: (item.progress ?? 0 > 0 && item.duration ?? 0 > 0) - ? Double(item.progress!) * 100 : 0, - isFinished: item.isFinished ?? false, - relativePath: "", - remoteURL: nil, - artworkURL: connectionService.createItemImageURL(item, size: CGSize(width: 300, height: 300)), - orderRank: 0, - parentFolder: nil, - originalFileName: "\(item.title).\(fileExt)", - lastPlayDate: nil, - type: .book, - uuid: UUID().uuidString - ) - - let externalItem = SimpleExternalResource( - id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch - providerName: ExternalResource.ProviderName.audiobookshelf.rawValue, - providerId: item.id, - syncStatus: ExternalResource.SyncStatus.stream.rawValue, - lastSyncedAt: nil, - hostId: connectionService.connection?.stableHostId, - libraryItem: libraryItem - ) - - return externalItem + guard !audiobooks.isEmpty else { return } + + Task { @MainActor in + do { + // Hydrate the selection first (one batch/get round-trip): list endpoints return + // MINIFIED items without audioFiles, and import REQUIRES the real file + // extension — items without one have nothing to stream and are skipped, + // never guessed. + let hydrated = try await connectionService.fetchItems(ids: audiobooks.map(\.id)) + let extensionsByID: [String: String] = hydrated.reduce(into: [:]) { result, item in + result[item.id] = item.fileExtension + } + let libraryItems = audiobooks.compactMap { item in + extensionsByID[item.id].map { + item.asVirtualImportResource( + fileExtension: $0, + connectionService: connectionService, + artworkSize: CGSize(width: 300, height: 300) + ) + } + } + let skipped = audiobooks.count - libraryItems.count + if skipped > 0 { + Self.logger.warning("Virtual import skipped \(skipped) item(s) with no audio-file metadata") + } + guard !libraryItems.isEmpty else { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return + } + + navigation.dismiss?() + importManager?.externalFiles.append(contentsOf: libraryItems) + importManager?.isShowingExternalImportView = true + } catch { + self.error = error + } } - - navigation.dismiss?() - importManager?.externalFiles.append(contentsOf: libraryItems) - importManager?.isShowingExternalImportView = true } @MainActor diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index 8c173c753..f26e0667d 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -82,38 +82,26 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc @MainActor func virtualImportAudiobook(_ item: AudiobookShelfLibraryItem) { - let fileExt = item.fileExtension ?? "m4a" - let libraryItem = SimpleLibraryItem( - title: item.title, - details: item.authorName ?? "voiceover_unknown_author".localized, - speed: 1, - currentTime: Double(item.currentTime ?? 0), - duration: Double(item.duration ?? 0), - percentCompleted: (item.progress ?? 0 > 0 && item.duration ?? 0 > 0) - ? Double(item.progress!) * 100 : 0, - isFinished: item.isFinished ?? false, - relativePath: "", - remoteURL: nil, - artworkURL: connectionService.createItemImageURL(item, size: CGSize(width: 300, height: 300)), - orderRank: 0, - parentFolder: nil, - originalFileName: "\(item.title).\(fileExt)", - lastPlayDate: nil, - type: .book, - uuid: UUID().uuidString - ) - - let externalItem = SimpleExternalResource( - id: UUID().hashValue, - providerName: ExternalResource.ProviderName.audiobookshelf.rawValue, - providerId: item.id, - syncStatus: ExternalResource.SyncStatus.stream.rawValue, - lastSyncedAt: nil, - hostId: connectionService.connection?.stableHostId, - libraryItem: libraryItem - ) - - importManager?.externalFiles.append(externalItem) - importManager?.isShowingExternalImportView = true + Task { @MainActor in + do { + // Same contract as the bulk paths: list navigation hands us a MINIFIED item, + // so hydrate it for the real file extension — never guessed. + let hydrated = try await connectionService.fetchItems(ids: [item.id]) + guard let fileExt = hydrated.first?.fileExtension ?? item.fileExtension else { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return + } + + let externalItem = item.asVirtualImportResource( + fileExtension: fileExt, + connectionService: connectionService, + artworkSize: CGSize(width: 300, height: 300) + ) + importManager?.externalFiles.append(externalItem) + importManager?.isShowingExternalImportView = true + } catch { + self.error = error + } + } } } diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 068b57927..8b1e28b7f 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -531,6 +531,7 @@ We're working hard on providing a seamless experience, if possible, please conta "not_now_button" = "Not now"; "quick_action_label" = "Quick Action %d"; "apple_watch_beta_title" = "Apple Watch (Beta)"; +"import_no_audio_files_alert" = "The selected items have no audio files to import."; "import_title" = "Import"; "files_title" = "%d Files"; "sync_invitation_learn_more_hint" = "Learn more about streaming and syncing items from your server."; diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 663435b2c..d64c2dde4 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -93,38 +93,27 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { @MainActor func virtualImportAudiobook(_ item: JellyfinLibraryItem) { - let fileExt = self.details?.fileExtension ?? "m4a" - let libraryItem = SimpleLibraryItem( - title: item.name, - details: self.details?.artist ?? "voiceover_unknown_author".localized, - speed: 1, - currentTime: Double(item.currentSeconds ?? 0), - duration: Double(item.durationSeconds ?? 0), - percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) - ? Double(item.currentSeconds!) / Double(item.durationSeconds!) * 100 : 0, - isFinished: item.isFinished ?? false, - relativePath: "", - remoteURL: nil, - artworkURL: try? connectionService.createItemImageURL(item, size: CGSize(width: 200, height: 200)), - orderRank: 0, - parentFolder: nil, - originalFileName: "\(item.name).\(fileExt)", - lastPlayDate: item.lastPlayedDate, - type: .book, - uuid: UUID().uuidString - ) - - let externalItem = SimpleExternalResource( - id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch - providerName: ExternalResource.ProviderName.jellyfin.rawValue, - providerId: item.id, - syncStatus: ExternalResource.SyncStatus.stream.rawValue, - lastSyncedAt: nil, - hostId: connectionService.connection?.stableHostId, - libraryItem: libraryItem - ) - - importManager?.externalFiles.append(externalItem) - importManager?.isShowingExternalImportView = true + Task { @MainActor in + do { + // Same contract as the bulk paths: the file extension comes from the server's + // media sources or the item is not importable — never guessed. + let hydrated = try await connectionService.fetchItems(ids: [item.id]) + guard let fileExt = hydrated.first?.details?.fileExtension ?? self.details?.fileExtension else { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return + } + + let externalItem = item.asVirtualImportResource( + fileExtension: fileExt, + detailsOverride: self.details, + connectionService: connectionService, + artworkSize: CGSize(width: 200, height: 200) + ) + importManager?.externalFiles.append(externalItem) + importManager?.isShowingExternalImportView = true + } catch { + self.error = error + } + } } } diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index 63ff63bf0..f34ec345c 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -385,44 +385,43 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog }) : self.items.filter { $0.kind == .audiobook } - let libraryItems: [SimpleExternalResource] = audiobooks.map { item in - let fileExt = item.details?.fileExtension ?? "m4a" - let libraryItem = SimpleLibraryItem( - title: item.name, - details: item.details?.artist ?? "voiceover_unknown_author".localized, - speed: 1, - currentTime: Double(item.currentSeconds ?? 0), - duration: Double(item.durationSeconds ?? 0), - percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) - ? Double(item.currentSeconds!) / Double(item.durationSeconds!) * 100 : 0, - isFinished: item.isFinished ?? false, - relativePath: "", - remoteURL: nil, - artworkURL: try? connectionService.createItemImageURL(item, size: CGSize(width: 200, height: 200)), - orderRank: 0, - parentFolder: nil, - originalFileName: "\(item.name).\(fileExt)", - lastPlayDate: item.lastPlayedDate, - type: .book, - uuid: UUID().uuidString - ) - - let externalItem = SimpleExternalResource( - id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch - providerName: ExternalResource.ProviderName.jellyfin.rawValue, - providerId: item.id, - syncStatus: ExternalResource.SyncStatus.stream.rawValue, - lastSyncedAt: nil, - hostId: connectionService.connection?.stableHostId, - libraryItem: libraryItem - ) - - return externalItem + guard !audiobooks.isEmpty else { return } + + Task { @MainActor in + do { + // Hydrate the selection first (one chunked request): list items don't carry + // media sources, and import REQUIRES the real file extension — items without + // one have nothing to stream and are skipped, never guessed. + let hydrated = try await connectionService.fetchItems(ids: audiobooks.map(\.id)) + let extensionsByID: [String: String] = hydrated.reduce(into: [:]) { result, item in + result[item.id] = item.details?.fileExtension + } + let libraryItems = audiobooks.compactMap { item in + extensionsByID[item.id].map { + item.asVirtualImportResource( + fileExtension: $0, + detailsOverride: nil, + connectionService: connectionService, + artworkSize: CGSize(width: 200, height: 200) + ) + } + } + let skipped = audiobooks.count - libraryItems.count + if skipped > 0 { + Self.logger.warning("Virtual import skipped \(skipped) item(s) with no audio-file metadata") + } + guard !libraryItems.isEmpty else { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return + } + + navigation.dismiss?() + importManager?.externalFiles.append(contentsOf: libraryItems) + importManager?.isShowingExternalImportView = true + } catch { + self.error = error + } } - - navigation.dismiss?() - importManager?.externalFiles.append(contentsOf: libraryItems) - importManager?.isShowingExternalImportView = true } @MainActor @@ -601,44 +600,43 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B }) : self.items.filter { $0.kind == .audiobook } - let libraryItems: [SimpleExternalResource] = audiobooks.map { item in - let fileExt = item.details?.fileExtension ?? "m4a" - let libraryItem = SimpleLibraryItem( - title: item.name, - details: item.details?.artist ?? "voiceover_unknown_author".localized, - speed: 1, - currentTime: Double(item.currentSeconds ?? 0), - duration: Double(item.durationSeconds ?? 0), - percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) - ? Double(item.currentSeconds!) / Double(item.durationSeconds!) * 100 : 0, - isFinished: item.isFinished ?? false, - relativePath: "", - remoteURL: nil, - artworkURL: try? connectionService.createItemImageURL(item, size: CGSize(width: 200, height: 200)), - orderRank: 0, - parentFolder: nil, - originalFileName: "\(item.name).\(fileExt)", - lastPlayDate: item.lastPlayedDate, - type: .book, - uuid: UUID().uuidString - ) - - let externalItem = SimpleExternalResource( - id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch - providerName: ExternalResource.ProviderName.jellyfin.rawValue, - providerId: item.id, - syncStatus: ExternalResource.SyncStatus.stream.rawValue, - lastSyncedAt: nil, - hostId: connectionService.connection?.stableHostId, - libraryItem: libraryItem - ) - - return externalItem + guard !audiobooks.isEmpty else { return } + + Task { @MainActor in + do { + // Hydrate the selection first (one chunked request): list items don't carry + // media sources, and import REQUIRES the real file extension — items without + // one have nothing to stream and are skipped, never guessed. + let hydrated = try await connectionService.fetchItems(ids: audiobooks.map(\.id)) + let extensionsByID: [String: String] = hydrated.reduce(into: [:]) { result, item in + result[item.id] = item.details?.fileExtension + } + let libraryItems = audiobooks.compactMap { item in + extensionsByID[item.id].map { + item.asVirtualImportResource( + fileExtension: $0, + detailsOverride: nil, + connectionService: connectionService, + artworkSize: CGSize(width: 200, height: 200) + ) + } + } + let skipped = audiobooks.count - libraryItems.count + if skipped > 0 { + Self.logger.warning("Virtual import skipped \(skipped) item(s) with no audio-file metadata") + } + guard !libraryItems.isEmpty else { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return + } + + navigation.dismiss?() + importManager?.externalFiles.append(contentsOf: libraryItems) + importManager?.isShowingExternalImportView = true + } catch { + self.error = error + } } - - navigation.dismiss?() - importManager?.externalFiles.append(contentsOf: libraryItems) - importManager?.isShowingExternalImportView = true } @MainActor func onDownloadFolderTapped() {} @@ -831,44 +829,43 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, }) : self.items.filter { $0.kind == .audiobook } - let libraryItems: [SimpleExternalResource] = audiobooks.map { item in - let fileExt = item.details?.fileExtension ?? "m4a" - let libraryItem = SimpleLibraryItem( - title: item.name, - details: item.details?.artist ?? "voiceover_unknown_author".localized, - speed: 1, - currentTime: Double(item.currentSeconds ?? 0), - duration: Double(item.durationSeconds ?? 0), - percentCompleted: (item.durationSeconds ?? 0 > 0 && item.currentSeconds ?? 0 > 0) - ? Double(item.currentSeconds!) / Double(item.durationSeconds!) * 100 : 0, - isFinished: item.isFinished ?? false, - relativePath: "", - remoteURL: nil, - artworkURL: try? connectionService.createItemImageURL(item, size: CGSize(width: 200, height: 200)), - orderRank: 0, - parentFolder: nil, - originalFileName: "\(item.name).\(fileExt)", - lastPlayDate: item.lastPlayedDate, - type: .book, - uuid: UUID().uuidString - ) - - let externalItem = SimpleExternalResource( - id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch - providerName: ExternalResource.ProviderName.jellyfin.rawValue, - providerId: item.id, - syncStatus: ExternalResource.SyncStatus.stream.rawValue, - lastSyncedAt: nil, - hostId: connectionService.connection?.stableHostId, - libraryItem: libraryItem - ) - - return externalItem + guard !audiobooks.isEmpty else { return } + + Task { @MainActor in + do { + // Hydrate the selection first (one chunked request): list items don't carry + // media sources, and import REQUIRES the real file extension — items without + // one have nothing to stream and are skipped, never guessed. + let hydrated = try await connectionService.fetchItems(ids: audiobooks.map(\.id)) + let extensionsByID: [String: String] = hydrated.reduce(into: [:]) { result, item in + result[item.id] = item.details?.fileExtension + } + let libraryItems = audiobooks.compactMap { item in + extensionsByID[item.id].map { + item.asVirtualImportResource( + fileExtension: $0, + detailsOverride: nil, + connectionService: connectionService, + artworkSize: CGSize(width: 200, height: 200) + ) + } + } + let skipped = audiobooks.count - libraryItems.count + if skipped > 0 { + Self.logger.warning("Virtual import skipped \(skipped) item(s) with no audio-file metadata") + } + guard !libraryItems.isEmpty else { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return + } + + navigation.dismiss?() + importManager?.externalFiles.append(contentsOf: libraryItems) + importManager?.isShowingExternalImportView = true + } catch { + self.error = error + } } - - navigation.dismiss?() - importManager?.externalFiles.append(contentsOf: libraryItems) - importManager?.isShowingExternalImportView = true } @MainActor func onDownloadFolderTapped() {} diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index dd4d9b7ec..960a18801 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -535,6 +535,7 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"import_no_audio_files_alert" = "The selected items have no audio files to import."; "import_title" = "Import"; "files_title" = "%d Files"; "sync_invitation_learn_more_hint" = "Learn more about streaming and syncing items from your server."; diff --git a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift index 5863a3b4b..4e6853ac1 100644 --- a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift @@ -326,6 +326,11 @@ public struct AudiobookShelfItemsResponse: Codable { public let page: Int? } +/// Response of POST /api/items/batch/get — expanded items incl. media.audioFiles +public struct AudiobookShelfBatchItemsResponse: Codable { + public let libraryItems: [AudiobookShelfAPIItem]? +} + public struct AudiobookShelfSearchResponse: Codable { public let book: [SearchResult] @@ -369,3 +374,49 @@ public struct AudiobookShelfCollection: Codable { public struct AudiobookShelfCollectionsResponse: Codable { public let results: [AudiobookShelfCollection] } + +// MARK: - Virtual import + +extension AudiobookShelfLibraryItem { + /// Builds the virtual-import payload for this item. The file extension is REQUIRED: + /// list endpoints return minified items without audio-file metadata, so callers + /// hydrate the selection via `fetchItems(ids:)` (POST /api/items/batch/get) and SKIP + /// items that have none — the extension is never guessed. + @MainActor + public func asVirtualImportResource( + fileExtension: String, + connectionService: AudiobookShelfConnectionService, + artworkSize: CGSize + ) -> SimpleExternalResource { + let libraryItem = SimpleLibraryItem( + title: title, + details: authorName ?? "voiceover_unknown_author".localized, + speed: 1, + currentTime: Double(currentTime ?? 0), + duration: Double(duration ?? 0), + percentCompleted: (progress ?? 0) > 0 && (duration ?? 0) > 0 + ? Double(progress!) * 100 + : 0, + isFinished: isFinished ?? false, + relativePath: "", + remoteURL: nil, + artworkURL: connectionService.createItemImageURL(self, size: artworkSize), + orderRank: 0, + parentFolder: nil, + originalFileName: "\(title).\(fileExtension)", + lastPlayDate: nil, + type: .book, + uuid: UUID().uuidString + ) + + return SimpleExternalResource( + id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch + providerName: ExternalResource.ProviderName.audiobookshelf.rawValue, + providerId: id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: connectionService.connection?.stableHostId, + libraryItem: libraryItem + ) + } +} diff --git a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift index 6e1dcb76a..51d608d95 100644 --- a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift +++ b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift @@ -510,6 +510,37 @@ public class AudiobookShelfConnectionService: BPLogger { return (authorResponse.libraryItems ?? []).compactMap { AudiobookShelfLibraryItem(apiItem: $0) } } + /// Hydrates the given item ids via POST /api/items/batch/get (one round-trip): list + /// endpoints return MINIFIED items without `audioFiles`, and virtual import requires + /// the REAL file extension — items without one are skipped by the importer, never + /// guessed. + public func fetchItems(ids: [String]) async throws -> [AudiobookShelfLibraryItem] { + guard !ids.isEmpty else { return [] } + guard let connection else { + throw URLError(.userAuthenticationRequired) + } + + let url = connection.url + .appendingPathComponent("api") + .appendingPathComponent("items") + .appendingPathComponent("batch") + .appendingPathComponent("get") + + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.httpBody = try JSONEncoder().encode(["libraryItemIds": ids]) + applyAuthenticatedHeaders(to: &request, connection: connection) + // After the auth headers: the integration's own values win on conflict, but + // Content-Type is ours to set + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + + let (data, response) = try await urlSession.data(for: request) + _ = try validateAuthenticatedResponse(response) + + let decoded = try JSONDecoder().decode(AudiobookShelfBatchItemsResponse.self, from: data) + return (decoded.libraryItems ?? []).compactMap { AudiobookShelfLibraryItem(apiItem: $0) } + } + public func fetchFilterData(in libraryId: String) async throws -> AudiobookShelfLibraryFilterData { guard let connection else { throw URLError(.userAuthenticationRequired) diff --git a/Shared/Jellyfin/JellyfinLibraryItem.swift b/Shared/Jellyfin/JellyfinLibraryItem.swift index 843b8e46c..9c8134c65 100644 --- a/Shared/Jellyfin/JellyfinLibraryItem.swift +++ b/Shared/Jellyfin/JellyfinLibraryItem.swift @@ -139,3 +139,51 @@ extension JellyfinLibraryItem { lastPlayedDate: narratorApiItem.userData?.lastPlayedDate, blurHash: blurHash, imageAspectRatio: narratorApiItem.primaryImageAspectRatio, details: nil) } } + +// MARK: - Virtual import + +extension JellyfinLibraryItem { + /// Builds the virtual-import payload for this item. The file extension is REQUIRED: + /// callers hydrate it from the server (`fetchItems(ids:)` requests media sources) and + /// SKIP items that have none — an item without audio-file metadata has nothing to + /// stream, so the extension is never guessed. + @MainActor + public func asVirtualImportResource( + fileExtension: String, + detailsOverride: JellyfinAudiobookDetailsData?, + connectionService: JellyfinConnectionService, + artworkSize: CGSize + ) -> SimpleExternalResource { + let resolvedDetails = detailsOverride ?? details + let libraryItem = SimpleLibraryItem( + title: name, + details: resolvedDetails?.artist ?? "voiceover_unknown_author".localized, + speed: 1, + currentTime: Double(currentSeconds ?? 0), + duration: Double(durationSeconds ?? 0), + percentCompleted: (durationSeconds ?? 0) > 0 && (currentSeconds ?? 0) > 0 + ? Double(currentSeconds!) / Double(durationSeconds!) * 100 + : 0, + isFinished: isFinished ?? false, + relativePath: "", + remoteURL: nil, + artworkURL: try? connectionService.createItemImageURL(self, size: artworkSize), + orderRank: 0, + parentFolder: nil, + originalFileName: "\(name).\(fileExtension)", + lastPlayDate: lastPlayedDate, + type: .book, + uuid: UUID().uuidString + ) + + return SimpleExternalResource( + id: abs(UUID().hashValue), // unique per element — a shared timestamp collides Identifiable ids within a batch + providerName: ExternalResource.ProviderName.jellyfin.rawValue, + providerId: id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: connectionService.connection?.stableHostId, + libraryItem: libraryItem + ) + } +} diff --git a/Shared/Jellyfin/Network/JellyfinConnectionService.swift b/Shared/Jellyfin/Network/JellyfinConnectionService.swift index 5f4fa572d..7a5763b28 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionService.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionService.swift @@ -452,6 +452,31 @@ public class JellyfinConnectionService: BPLogger { return (items, nextStartItemIndex, maxNumItems) } + /// Hydrates the given item ids with their media sources (container/path), which list + /// responses don't carry. Virtual import requires the REAL file extension — items the + /// server reports without one are skipped by the importer, never guessed. + public func fetchItems(ids: [String]) async throws -> [JellyfinLibraryItem] { + guard !ids.isEmpty else { return [] } + + var hydrated: [JellyfinLibraryItem] = [] + // The ids travel in the query string — chunk so a whole-folder import can't + // overflow the URL length limit. + let chunkSize = 100 + for start in stride(from: 0, to: ids.count, by: chunkSize) { + let chunk = Array(ids[start.. Date: Mon, 31 Aug 2026 09:17:51 -0500 Subject: [PATCH 062/172] =?UTF-8?q?refactor:=20ImportManager=20is=20never?= =?UTF-8?q?=20nil=20=E2=80=94=20make=20it=20non-optional=20end=20to=20end?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ImportManager is coordinator-scoped and injected as a non-optional @EnvironmentObject, which crashes fast if the wiring is ever missing — the VM-layer optionality modeled nothing real, and it actively downgraded any future wiring mistake into the Stream button silently no-oping via importManager?.append. Tightened 21 declarations and 12 optional-chained uses across both providers' root views, library/details view models, and the IntegrationLibraryViewModelProtocol requirement. The preview mock holds a throwaway instance, matching the repo's un-setup-service preview convention. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelfRootView.swift | 2 +- .../AudiobookShelfLibraryViewModel.swift | 8 ++--- ...iobookShelfAudiobookDetailsViewModel.swift | 8 ++--- BookPlayer/Jellyfin/JellyfinRootView.swift | 6 ++-- .../JellyfinAudiobookDetailsViewModel.swift | 8 ++--- .../GridLayout/JellyfinLibraryGridView.swift | 2 +- .../JellyfinLibraryViewModel.swift | 32 +++++++++---------- .../IntegrationLibraryViewModelProtocol.swift | 2 +- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index 2863ae4ce..27fcf93bf 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -318,7 +318,7 @@ private struct AudiobookShelfTabRoot: View { let connectionService: AudiobookShelfConnectionService let singleFileDownloadService: SingleFileDownloadService let accountService: AccountService - let importManager: ImportManager? + let importManager: ImportManager let onDismiss: () -> Void var onSwitchLibrary: (() -> Void)? var dismissAll: DismissAction? diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 5bffb1e9d..43ef083bb 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -19,7 +19,7 @@ enum AudiobookShelfLayout { @MainActor final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLogger { - var importManager: ImportManager? + var importManager: ImportManager var accountService: AccountService enum Routes { @@ -128,7 +128,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, connectionService: AudiobookShelfConnectionService, singleFileDownloadService: SingleFileDownloadService, accountService: AccountService, - importManager: ImportManager?, + importManager: ImportManager, navigation: BPNavigation, navigationTitle: String ) { @@ -283,8 +283,8 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, } navigation.dismiss?() - importManager?.externalFiles.append(contentsOf: libraryItems) - importManager?.isShowingExternalImportView = true + importManager.externalFiles.append(contentsOf: libraryItems) + importManager.isShowingExternalImportView = true } catch { self.error = error } diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index f26e0667d..ac0381907 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -13,7 +13,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc let item: AudiobookShelfLibraryItem let connectionService: AudiobookShelfConnectionService let accountService: AccountService - let importManager: ImportManager? + let importManager: ImportManager @Published var details: AudiobookShelfAudiobookDetailsData? @Published var error: Error? private var singleFileDownloadService: SingleFileDownloadService @@ -25,7 +25,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc connectionService: AudiobookShelfConnectionService, singleFileDownloadService: SingleFileDownloadService, accountService: AccountService, - importManager: ImportManager?, + importManager: ImportManager, ) { self.item = item self.connectionService = connectionService @@ -97,8 +97,8 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc connectionService: connectionService, artworkSize: CGSize(width: 300, height: 300) ) - importManager?.externalFiles.append(externalItem) - importManager?.isShowingExternalImportView = true + importManager.externalFiles.append(externalItem) + importManager.isShowingExternalImportView = true } catch { self.error = error } diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 86587b2c8..713d3499d 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -267,7 +267,7 @@ struct JellyfinRootView: View { struct JellyfinTabRoot: View { let connectionService: JellyfinConnectionService let singleFileDownloadService: SingleFileDownloadService - let importManager: ImportManager? + let importManager: ImportManager let accountService: AccountService let onDismiss: () -> Void var onSwitchLibrary: (() -> Void)? @@ -284,7 +284,7 @@ struct JellyfinTabRoot: View { library: JellyfinLibraryItem?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager?, + importManager: ImportManager, accountService: AccountService, onDismiss: @escaping () -> Void, onSwitchLibrary: (() -> Void)? = nil, @@ -572,7 +572,7 @@ extension JellyfinTabRoot { for destination: JellyfinLibraryLevelData, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager?, + importManager: ImportManager, accountService: AccountService, navigation: BPNavigation, onDismiss: @escaping () -> Void diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index d64c2dde4..63af27f66 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -17,7 +17,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { let item: JellyfinLibraryItem let connectionService: JellyfinConnectionService let accountService: AccountService - let importManager: ImportManager? + let importManager: ImportManager let navigation: BPNavigation let navigationTitle: String @Published var details: JellyfinAudiobookDetailsData? @@ -31,7 +31,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, accountService: AccountService, - importManager: ImportManager?, + importManager: ImportManager, navigation: BPNavigation, navigationTitle: String ) { @@ -109,8 +109,8 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { connectionService: connectionService, artworkSize: CGSize(width: 200, height: 200) ) - importManager?.externalFiles.append(externalItem) - importManager?.isShowingExternalImportView = true + importManager.externalFiles.append(externalItem) + importManager.isShowingExternalImportView = true } catch { self.error = error } diff --git a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift index f9dd2e9e1..eb91deb7c 100644 --- a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift +++ b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift @@ -70,7 +70,7 @@ final class MockJellyfinLibraryViewModel: JellyfinLibraryViewModelProtocol, Obse var navigation = BPNavigation() var connectionService = JellyfinConnectionService() var accountService = AccountService() - var importManager: ImportManager? + var importManager = ImportManager(libraryService: LibraryService()) let data: JellyfinLibraryLevelData diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index f34ec345c..1a027165f 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -62,7 +62,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog let folderID: String? let recursive: Bool - var importManager: ImportManager? + var importManager: ImportManager let connectionService: JellyfinConnectionService var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService @@ -84,7 +84,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog recursive: Bool = false, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager?, + importManager: ImportManager, accountService: AccountService, navigation: BPNavigation, navigationTitle: String @@ -416,8 +416,8 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog } navigation.dismiss?() - importManager?.externalFiles.append(contentsOf: libraryItems) - importManager?.isShowingExternalImportView = true + importManager.externalFiles.append(contentsOf: libraryItems) + importManager.isShowingExternalImportView = true } catch { self.error = error } @@ -458,7 +458,7 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B var isSearchable: Bool { true } - var importManager: ImportManager? + var importManager: ImportManager let connectionService: JellyfinConnectionService var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService @@ -471,7 +471,7 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager?, + importManager: ImportManager, accountService: AccountService, navigation: BPNavigation, navigationTitle: String @@ -631,8 +631,8 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B } navigation.dismiss?() - importManager?.externalFiles.append(contentsOf: libraryItems) - importManager?.isShowingExternalImportView = true + importManager.externalFiles.append(contentsOf: libraryItems) + importManager.isShowingExternalImportView = true } catch { self.error = error } @@ -686,7 +686,7 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, var isSearchable: Bool { true } - var importManager: ImportManager? + var importManager: ImportManager var accountService: AccountService let connectionService: JellyfinConnectionService private let singleFileDownloadService: SingleFileDownloadService @@ -699,7 +699,7 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager?, + importManager: ImportManager, accountService: AccountService, navigation: BPNavigation, navigationTitle: String @@ -860,8 +860,8 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, } navigation.dismiss?() - importManager?.externalFiles.append(contentsOf: libraryItems) - importManager?.isShowingExternalImportView = true + importManager.externalFiles.append(contentsOf: libraryItems) + importManager.isShowingExternalImportView = true } catch { self.error = error } @@ -915,7 +915,7 @@ final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, B var isSearchable: Bool { true } let connectionService: JellyfinConnectionService - var importManager: ImportManager? + var importManager: ImportManager var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -926,7 +926,7 @@ final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, B parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager?, + importManager: ImportManager, accountService: AccountService, navigation: BPNavigation, navigationTitle: String @@ -1019,7 +1019,7 @@ final class JellyfinNarratorsListViewModel: IntegrationLibraryViewModelProtocol, var isSearchable: Bool { true } let connectionService: JellyfinConnectionService - var importManager: ImportManager? + var importManager: ImportManager var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -1030,7 +1030,7 @@ final class JellyfinNarratorsListViewModel: IntegrationLibraryViewModelProtocol, parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager?, + importManager: ImportManager, accountService: AccountService, navigation: BPNavigation, navigationTitle: String diff --git a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift index 4f51fe80d..1ecd7d773 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift +++ b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift @@ -33,7 +33,7 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { var showingDownloadConfirmation: Bool { get set } var useSelectedItems: Bool { get set } - var importManager: ImportManager? { get set } + var importManager: ImportManager { get set } var accountService: AccountService { get set } var searchQuery: String { get set } From 7b6375879badf06cef4ef320ae47d0e73e71092e Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 31 Aug 2026 09:50:28 -0500 Subject: [PATCH 063/172] fix: address review feedback on the tightening push MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SyncService.teardownTask returns to SYNCHRONOUS assignment via a lock-guarded property: the @MainActor isolation fixed the data race but deferred assignment by one main-actor turn, reopening the fast-logout->login window where the sync gates read nil and a late resetAllJobs() wipes freshly-scheduled jobs (CLAUDE.md invariant 7). The lock gives race-free reads with the original synchronous semantics. - FileUploadOperation: consumed-4xx uploads clean their temp hard link — a consumed task is never retried, so the link leaked forever. The retryable-failure branch deliberately keeps it (retries re-read the file). - The showMediaServers handler dismisses the player cover first: the media-servers sheet hangs off MainView UNDERNEATH the fullScreenCover, so when the alert fired mid-playback (the common streaming-401 path) the sheet never presented. - ABS resume prompt uses the progress payload's real lastUpdate timestamp (ms epoch -> lastPlayedDate), matching Jellyfin, instead of an inert Date.distantPast comparison. - Dropped the dead jellyfinService parameter from syncList/ updateFromResource and its view plumbing — updateFromResource builds its own throwaway service by design (pinning connections on the shared environment service would repoint the UI's active connection). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library/ItemList/ItemListView.swift | 5 ++- .../Library/ItemList/ItemListViewModel.swift | 11 +++---- .../Library/ItemList/LibraryRootView.swift | 4 +++ .../AudiobookShelfLibraryItem.swift | 10 +++++- .../ConcurrentSync/FileUploadOperation.swift | 7 +++++ Shared/Services/Sync/SyncService.swift | 31 +++++++++++++------ 6 files changed, 48 insertions(+), 20 deletions(-) diff --git a/BookPlayer/Library/ItemList/ItemListView.swift b/BookPlayer/Library/ItemList/ItemListView.swift index 2bed4f6cf..3deceebf7 100644 --- a/BookPlayer/Library/ItemList/ItemListView.swift +++ b/BookPlayer/Library/ItemList/ItemListView.swift @@ -32,7 +32,6 @@ struct ItemListView: View { @Environment(\.syncService) var syncService @Environment(\.hardcoverService) var hardcoverService @Environment(\.playerLoaderService) private var playerLoaderService - @Environment(\.jellyfinService) var jellyfinService @Environment(\.audiobookshelfService) var audiobookshelfService @Environment(\.preferencesService) var preferencesService @Environment(\.listState) var listState @@ -250,7 +249,7 @@ struct ItemListView: View { } .task { focus = .primary - await model.syncList(jellyfinService: jellyfinService) + await model.syncList() } .task(id: playerState.loadedBookRelativePath) { playingItemParentPath = model.getPathForParentOfPlayingItem(playerState.loadedBookRelativePath) @@ -259,7 +258,7 @@ struct ItemListView: View { guard scenePhase == .active else { return } Task { - await model.syncList(jellyfinService: jellyfinService) + await model.syncList() } } .onChange(of: listState.token(for: .all), initial: false) { diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index f3b182264..51dfc3090 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -249,7 +249,7 @@ final class ItemListViewModel: ObservableObject, BPLogger { return playbackService.processFoldersStaleProgress() } - func syncList(jellyfinService: JellyfinConnectionService? = nil) async { + func syncList() async { if processFoldersStaleProgress() { listState.reloadAll() } @@ -268,9 +268,7 @@ final class ItemListViewModel: ObservableObject, BPLogger { contentsFetchTask = Task { do { try await listSyncRefreshService.syncList(at: libraryNode.folderRelativePath) - if let jellyfinService { - await updateFromResource(jellyfinService: jellyfinService) - } + await updateFromResource() await MainActor.run { listState.reloadAll() } @@ -871,7 +869,7 @@ extension ItemListViewModel { } } - func updateFromResource(jellyfinService _: JellyfinConnectionService) async { + func updateFromResource() async { let jellyfinResources = self.items.compactMap { item in item.externalResources?.first { $0.providerName == ExternalResource.ProviderName.jellyfin.rawValue } } @@ -959,7 +957,8 @@ extension ItemListViewModel: PlaybackSyncProgressDelegate { audiobookShelfService.useConnection(connection) if let audiobookShelfItem = try await audiobookShelfService.fetchItem(for: externalResource.providerId) { let threshold: TimeInterval = 15 - let externalPlayDate = Date.distantPast + // From the progress payload's lastUpdate — same comparison as Jellyfin + let externalPlayDate = audiobookShelfItem.lastPlayedDate ?? Date.distantPast let isExternalDateNewer = externalPlayDate > lastPlayDate.addingTimeInterval(threshold) let isExternalSecondsFarther = TimeInterval(audiobookShelfItem.currentTime ?? 0) > (playableItem.currentTime + threshold) if !playerState.showResumePopup && (isExternalDateNewer || isExternalSecondsFarther) { diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index 384863cad..79dcaa937 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -133,6 +133,10 @@ struct LibraryRootView: View { } } .onReceive(NotificationCenter.default.publisher(for: .showMediaServers)) { _ in + // The media-servers sheet hangs off MainView UNDERNEATH the player's + // fullScreenCover — when this fires mid-playback (the common streaming-401 + // path) the cover must come down first or the sheet never presents + playerState.isShowingPlayer = false listState.activeIntegrationSheet = .mediaServers } } diff --git a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift index 4e6853ac1..64c097a38 100644 --- a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift @@ -50,6 +50,9 @@ public struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable public let progress: Double? public let currentTime: TimeInterval? public let isFinished: Bool? + /// From the progress payload's lastUpdate (ms epoch) — drives the resume-playback + /// prompt's date comparison, same as Jellyfin's lastPlayedDate + public let lastPlayedDate: Date? // Browse metadata public let browseCategory: AudiobookShelfBrowseCategory? @@ -74,6 +77,7 @@ public struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable progress: Double? = nil, currentTime: TimeInterval? = nil, isFinished: Bool? = nil, + lastPlayedDate: Date? = nil, browseCategory: AudiobookShelfBrowseCategory? = nil, filter: AudiobookShelfItemFilter? = nil ) { @@ -95,6 +99,7 @@ public struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable self.progress = progress self.currentTime = currentTime self.isFinished = isFinished + self.lastPlayedDate = lastPlayedDate self.browseCategory = browseCategory self.filter = filter } @@ -233,7 +238,8 @@ extension AudiobookShelfLibraryItem { libraryId: "", progress: progressItem.progress, currentTime: progressItem.currentTime, - isFinished: progressItem.isFinished + isFinished: progressItem.isFinished, + lastPlayedDate: progressItem.lastUpdate.map { Date(timeIntervalSince1970: $0 / 1000) } ) } } @@ -316,6 +322,8 @@ public struct AudiobookShelfAPIItem: Codable { public let progress: Double public let currentTime: TimeInterval public let isFinished: Bool + /// Milliseconds since epoch of the last progress update + public let lastUpdate: Double? } } diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index 157f4d5aa..2a65def50 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -191,6 +191,13 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { // task (with a fresh URL) can be scheduled later. Self.logger.error("Upload rejected for \(self.uuid): HTTP \(http.statusCode)") self.didSucceed = (400...499).contains(http.statusCode) + // A consumed 4xx is never retried, so its temp hard link would leak forever + // without the same temp-dir-only cleanup the success branch does. (The + // retryable-failure branch above deliberately KEEPS the link — retries + // re-read the file.) + if self.didSucceed, self.fileURL.path.hasPrefix(FileManager.default.temporaryDirectory.path) { + try? FileManager.default.removeItem(at: self.fileURL) + } self.finish() } else { self.invalidateCellularObserver() diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index df6a7e012..381d05636 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -125,9 +125,22 @@ public final class SyncService: SyncServiceProtocol, BPLogger { public private(set) var isActive: Bool = false /// In-flight logout teardown, awaited before an initial library sync re-schedules, /// so a re-login can't begin scheduling until the queue reset has finished. - /// Main-actor isolated: assigned from the `.logout` sink and read from arbitrary - /// async contexts — without defined isolation the property access is a data race. - @MainActor private var teardownTask: Task? + /// Lock-guarded rather than @MainActor: the `.logout` sink must assign SYNCHRONOUSLY + /// (a deferred main-actor hop reopens a window where the re-login gates read nil and + /// a late resetAllJobs wipes freshly-scheduled jobs), while reads come from arbitrary + /// async contexts. + private let teardownTaskLock = NSLock() + private var _teardownTask: Task? + private var teardownTask: Task? { + get { + teardownTaskLock.lock(); defer { teardownTaskLock.unlock() } + return _teardownTask + } + set { + teardownTaskLock.lock(); defer { teardownTaskLock.unlock() } + _teardownTask = newValue + } + } /// Dictionary holding the initiating item relative path as key and the download tasks as value private var downloadTasksDictionary = [String: [URLSessionTask]]() @@ -212,11 +225,9 @@ public final class SyncService: SyncServiceProtocol, BPLogger { .sink(receiveValue: { [weak self] _ in /// Covers every logout path (iOS sign-out, account deletion, Watch), since /// they all post `.logout`. Tears down the queue, the flag, and `isActive`. - /// Held in `teardownTask` so a re-login's initial sync awaits it first. - Task { @MainActor [weak self] in - guard let self else { return } - self.teardownTask = Task { await self.logout() } - } + /// Held in `teardownTask` — assigned SYNCHRONOUSLY (lock-guarded) so a + /// re-login's initial sync can never observe a pre-assignment nil. + self?.teardownTask = Task { await self?.logout() } }) .store(in: &disposeBag) @@ -282,7 +293,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { /// Same gate as `syncLibraryContents()`: don't reconcile while a logout teardown /// is still clearing the queue, in case a fast re-login routed here before the /// `hasScheduledLibraryContents` flag was reset. - await MainActor.run { teardownTask }?.value + await teardownTask?.value let response = try await fetchContents(at: relativePath) @@ -301,7 +312,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { /// Wait for any in-flight logout teardown to finish before scheduling, so a fast /// logout→login can't have a late `resetAllJobs()` wipe freshly-scheduled jobs. - await MainActor.run { teardownTask }?.value + await teardownTask?.value if await queuedJobsCount() > 0 { Self.logger.trace("Clearing orphaned tasks before initial library sync") From 7543aba0c0fb5679bc63cdb3c4f577463d35ee5a Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 1 Sep 2026 18:11:18 -0500 Subject: [PATCH 064/172] refactor: honest-async imports, Jellyfin VM collapse, shared import pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three layers, net -238 lines: 1. Import functions are honestly async. Three protocol requirements gain async (handleImportAudiobook async throws, virtualImportAudiobook async, handleImportItems async); the six implementations unwrap their Task { @MainActor in } bodies; the Task now lives at the view boundary (six button sites), matching the repo convention. Each importing VM carries a @Published isImporting reentrancy guard, so a double-tap mid-hydration can't run two imports. Side effect worth knowing: onDownloadTap() in the details buttons now fires after the await completes, not before. 2. Jellyfin VM collapse (the ABS design, ported): five near-copy classes become three. JellyfinPersonBooksViewModel(role:) replaces the author-books/narrator-books pair — the role switches only the fetch call; JellyfinPersonsListViewModel(role:) replaces the authors-list VM and subsumes JellyfinNarratorsListViewModel, which had NO construction site (a Narrators tab is now one line away). JellyfinRootView builds the merged types per level; JellyfinLibraryView's downcast chain shrinks 5 -> 3. 3. VirtualImportPipeline: one shared orchestration (hydrate real extensions -> build -> skip audio-less -> present) returning the imported count. All five import sites reduce to the reentrancy guard plus two provider-specific closures; skip-logging and the nothing-importable alert are driven by the count in one place. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelfLibraryViewModel.swift | 72 ++- ...iobookShelfAudiobookDetailsViewModel.swift | 54 +- BookPlayer/Jellyfin/JellyfinRootView.swift | 21 +- .../JellyfinAudiobookDetailsViewModel.swift | 56 +- .../GridLayout/JellyfinLibraryGridView.swift | 2 +- .../Library Screen/JellyfinLibraryView.swift | 6 +- .../JellyfinLibraryViewModel.swift | 544 ++++-------------- .../IntegrationLibraryViewModelProtocol.swift | 39 +- .../IntegrationAudiobookDetailsView.swift | 36 +- .../IntegrationLibraryView.swift | 6 +- .../IntegrationDetailsViewModelProtocol.swift | 4 +- 11 files changed, 304 insertions(+), 536 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 43ef083bb..3c60d18b0 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -44,6 +44,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, @Published var items: [AudiobookShelfLibraryItem] = [] @Published var totalItems = Int.max @Published var error: Error? + @Published private(set) var isImporting = false @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] @@ -232,9 +233,9 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, } } - func handleImportItems(useSelectedItems: Bool) { + func handleImportItems(useSelectedItems: Bool) async { if accountService.hasStreamingEnabled() { - virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) + await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) } else { if useSelectedItems { onDownloadTapped() @@ -245,7 +246,9 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, } @MainActor - func virtualImportFolderAudiobooks(useSelectedItems: Bool) { + func virtualImportFolderAudiobooks(useSelectedItems: Bool) async { + // Reentrancy guard: a double-tap mid-hydration must not run two imports + guard !isImporting else { return } let audiobooks = useSelectedItems ? selectedItems.compactMap({ id in self.items.first(where: { $0.id == id }) @@ -253,41 +256,36 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, : self.items.filter { $0.kind == .audiobook } guard !audiobooks.isEmpty else { return } - - Task { @MainActor in - do { - // Hydrate the selection first (one batch/get round-trip): list endpoints return - // MINIFIED items without audioFiles, and import REQUIRES the real file - // extension — items without one have nothing to stream and are skipped, - // never guessed. - let hydrated = try await connectionService.fetchItems(ids: audiobooks.map(\.id)) - let extensionsByID: [String: String] = hydrated.reduce(into: [:]) { result, item in - result[item.id] = item.fileExtension - } - let libraryItems = audiobooks.compactMap { item in - extensionsByID[item.id].map { - item.asVirtualImportResource( - fileExtension: $0, - connectionService: connectionService, - artworkSize: CGSize(width: 300, height: 300) - ) - } - } - let skipped = audiobooks.count - libraryItems.count - if skipped > 0 { - Self.logger.warning("Virtual import skipped \(skipped) item(s) with no audio-file metadata") - } - guard !libraryItems.isEmpty else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - return - } - - navigation.dismiss?() - importManager.externalFiles.append(contentsOf: libraryItems) - importManager.isShowingExternalImportView = true - } catch { - self.error = error + isImporting = true + defer { isImporting = false } + + do { + let imported = try await VirtualImportPipeline.run( + items: audiobooks, + id: \.id, + hydrateExtensions: { ids in + // batch/get returns EXPANDED items (list endpoints are minified without + // audioFiles); one round-trip for the whole selection + let hydrated = try await self.connectionService.fetchItems(ids: ids) + return hydrated.reduce(into: [:]) { $0[$1.id] = $1.fileExtension } + }, + buildResource: { item, fileExtension in + item.asVirtualImportResource( + fileExtension: fileExtension, + connectionService: self.connectionService, + artworkSize: CGSize(width: 300, height: 300) + ) + }, + importManager: importManager, + beforePresenting: { self.navigation.dismiss?() } + ) + if imported == 0 { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + } else if imported < audiobooks.count { + Self.logger.warning("Virtual import skipped \(audiobooks.count - imported) item(s) with no audio-file metadata") } + } catch { + self.error = error } } diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index ac0381907..fdae16f4d 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -16,6 +16,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc let importManager: ImportManager @Published var details: AudiobookShelfAudiobookDetailsData? @Published var error: Error? + @Published private(set) var isImporting = false private var singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -72,36 +73,47 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc } @MainActor - func handleImportAudiobook(_ item: AudiobookShelfLibraryItem) throws { + func handleImportAudiobook(_ item: AudiobookShelfLibraryItem) async throws { if accountService.hasStreamingEnabled() { - virtualImportAudiobook(item) + await virtualImportAudiobook(item) } else { try beginDownloadAudiobook(item) } } @MainActor - func virtualImportAudiobook(_ item: AudiobookShelfLibraryItem) { - Task { @MainActor in - do { - // Same contract as the bulk paths: list navigation hands us a MINIFIED item, - // so hydrate it for the real file extension — never guessed. - let hydrated = try await connectionService.fetchItems(ids: [item.id]) - guard let fileExt = hydrated.first?.fileExtension ?? item.fileExtension else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - return - } + func virtualImportAudiobook(_ item: AudiobookShelfLibraryItem) async { + // Reentrancy guard: a double-tap mid-hydration must not run two imports + guard !isImporting else { return } + isImporting = true + defer { isImporting = false } - let externalItem = item.asVirtualImportResource( - fileExtension: fileExt, - connectionService: connectionService, - artworkSize: CGSize(width: 300, height: 300) - ) - importManager.externalFiles.append(externalItem) - importManager.isShowingExternalImportView = true - } catch { - self.error = error + do { + let imported = try await VirtualImportPipeline.run( + items: [item], + id: \.id, + hydrateExtensions: { ids in + // Same contract as the bulk paths: list navigation hands us a MINIFIED + // item, so hydrate it for the real file extension — never guessed + let hydrated = try await self.connectionService.fetchItems(ids: ids) + var extensions: [String: String] = [:] + extensions[item.id] = hydrated.first?.fileExtension ?? item.fileExtension + return extensions + }, + buildResource: { item, fileExtension in + item.asVirtualImportResource( + fileExtension: fileExtension, + connectionService: self.connectionService, + artworkSize: CGSize(width: 300, height: 300) + ) + }, + importManager: importManager + ) + if imported == 0 { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) } + } catch { + self.error = error } } } diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 713d3499d..83a9c849b 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -57,13 +57,14 @@ struct JellyfinRootView: View { tabRootView } Tab("Authors", systemImage: "person.2.fill") { - JellyfinEntityTabRoot( + JellyfinEntityTabRoot( connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, makeViewModel: { nav in - JellyfinAuthorsListViewModel( + JellyfinPersonsListViewModel( + role: .author, parentID: resolvedLibrary?.id, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, @@ -377,8 +378,9 @@ struct JellyfinTabRoot: View { ) case .authorBooks(let authorID, let authorName, let parentID): JellyfinLibraryView( - viewModel: JellyfinAuthorBooksViewModel( - authorID: authorID, + viewModel: JellyfinPersonBooksViewModel( + role: .author, + personID: authorID, parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, @@ -390,7 +392,8 @@ struct JellyfinTabRoot: View { ) case .narratorBooks(let personID, let personName, let parentID): JellyfinLibraryView( - viewModel: JellyfinNarratorBooksViewModel( + viewModel: JellyfinPersonBooksViewModel( + role: .narrator, personID: personID, parentID: parentID, connectionService: connectionService, @@ -604,8 +607,9 @@ extension JellyfinTabRoot { ) case .authorBooks(let authorID, let authorName, let parentID): JellyfinLibraryView( - viewModel: JellyfinAuthorBooksViewModel( - authorID: authorID, + viewModel: JellyfinPersonBooksViewModel( + role: .author, + personID: authorID, parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, @@ -617,7 +621,8 @@ extension JellyfinTabRoot { ) case .narratorBooks(let personID, let personName, let parentID): JellyfinLibraryView( - viewModel: JellyfinNarratorBooksViewModel( + viewModel: JellyfinPersonBooksViewModel( + role: .narrator, personID: personID, parentID: parentID, connectionService: connectionService, diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 63af27f66..681e35cdd 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -22,6 +22,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { let navigationTitle: String @Published var details: JellyfinAudiobookDetailsData? @Published var error: Error? + @Published private(set) var isImporting = false private var singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -77,9 +78,9 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { } @MainActor - func handleImportAudiobook(_ item: JellyfinLibraryItem) throws { + func handleImportAudiobook(_ item: JellyfinLibraryItem) async throws { if accountService.hasStreamingEnabled() { - virtualImportAudiobook(item) + await virtualImportAudiobook(item) } else { try beginDownloadAudiobook(item) } @@ -92,28 +93,39 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { } @MainActor - func virtualImportAudiobook(_ item: JellyfinLibraryItem) { - Task { @MainActor in - do { - // Same contract as the bulk paths: the file extension comes from the server's - // media sources or the item is not importable — never guessed. - let hydrated = try await connectionService.fetchItems(ids: [item.id]) - guard let fileExt = hydrated.first?.details?.fileExtension ?? self.details?.fileExtension else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - return - } + func virtualImportAudiobook(_ item: JellyfinLibraryItem) async { + // Reentrancy guard: a double-tap mid-hydration must not run two imports + guard !isImporting else { return } + isImporting = true + defer { isImporting = false } - let externalItem = item.asVirtualImportResource( - fileExtension: fileExt, - detailsOverride: self.details, - connectionService: connectionService, - artworkSize: CGSize(width: 200, height: 200) - ) - importManager.externalFiles.append(externalItem) - importManager.isShowingExternalImportView = true - } catch { - self.error = error + do { + let imported = try await VirtualImportPipeline.run( + items: [item], + id: \.id, + hydrateExtensions: { ids in + // Same contract as the bulk paths: the extension comes from the server's + // media sources or the item is not importable — never guessed + let hydrated = try await self.connectionService.fetchItems(ids: ids) + var extensions: [String: String] = [:] + extensions[item.id] = hydrated.first?.details?.fileExtension ?? self.details?.fileExtension + return extensions + }, + buildResource: { item, fileExtension in + item.asVirtualImportResource( + fileExtension: fileExtension, + detailsOverride: self.details, + connectionService: self.connectionService, + artworkSize: CGSize(width: 200, height: 200) + ) + }, + importManager: importManager + ) + if imported == 0 { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) } + } catch { + self.error = error } } } diff --git a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift index eb91deb7c..d86917427 100644 --- a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift +++ b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift @@ -103,7 +103,7 @@ final class MockJellyfinLibraryViewModel: JellyfinLibraryViewModelProtocol, Obse func onDownloadFolderTapped() {} func confirmDownloadFolder() {} func virtualImportFolderAudiobooks(useSelectedItems: Bool) {} - func handleImportItems(useSelectedItems: Bool) { } + func handleImportItems(useSelectedItems: Bool) async { } } #Preview("top level") { diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift index 73f954cfa..01cb2e465 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift @@ -35,10 +35,8 @@ where Model.Item == JellyfinLibraryItem { private var jellyfinConnectionService: JellyfinConnectionService { (viewModel as? JellyfinLibraryViewModel)?.connectionService - ?? (viewModel as? JellyfinAuthorBooksViewModel)?.connectionService - ?? (viewModel as? JellyfinNarratorBooksViewModel)?.connectionService - ?? (viewModel as? JellyfinAuthorsListViewModel)?.connectionService - ?? (viewModel as? JellyfinNarratorsListViewModel)?.connectionService + ?? (viewModel as? JellyfinPersonBooksViewModel)?.connectionService + ?? (viewModel as? JellyfinPersonsListViewModel)?.connectionService ?? .init() } diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index 1a027165f..b7bc915b7 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -22,6 +22,13 @@ enum JellyfinLibraryLevelData: Equatable, Hashable { case subscribe } +/// The author/narrator browse screens are the same VM with a different fetch + +/// destination — parameterized by role instead of duplicated per class. +enum JellyfinPersonRole { + case author + case narrator +} + @MainActor final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLogger { enum Routes { @@ -50,6 +57,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog @Published var items: [JellyfinLibraryItem] = [] @Published var totalItems = Int.max @Published var error: Error? + @Published private(set) var isImporting = false @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] @@ -311,9 +319,9 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog } @MainActor - func handleImportItems(useSelectedItems: Bool) { + func handleImportItems(useSelectedItems: Bool) async { if accountService.hasStreamingEnabled() { - virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) + await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) } else { if useSelectedItems { onDownloadTapped() @@ -378,7 +386,9 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog } @MainActor - func virtualImportFolderAudiobooks(useSelectedItems: Bool) { + func virtualImportFolderAudiobooks(useSelectedItems: Bool) async { + // Reentrancy guard: a double-tap mid-hydration must not run two imports + guard !isImporting else { return } let audiobooks = useSelectedItems ? selectedItems.compactMap({ id in self.items.first(where: { $0.id == id }) @@ -386,41 +396,35 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog : self.items.filter { $0.kind == .audiobook } guard !audiobooks.isEmpty else { return } - - Task { @MainActor in - do { - // Hydrate the selection first (one chunked request): list items don't carry - // media sources, and import REQUIRES the real file extension — items without - // one have nothing to stream and are skipped, never guessed. - let hydrated = try await connectionService.fetchItems(ids: audiobooks.map(\.id)) - let extensionsByID: [String: String] = hydrated.reduce(into: [:]) { result, item in - result[item.id] = item.details?.fileExtension - } - let libraryItems = audiobooks.compactMap { item in - extensionsByID[item.id].map { - item.asVirtualImportResource( - fileExtension: $0, - detailsOverride: nil, - connectionService: connectionService, - artworkSize: CGSize(width: 200, height: 200) - ) - } - } - let skipped = audiobooks.count - libraryItems.count - if skipped > 0 { - Self.logger.warning("Virtual import skipped \(skipped) item(s) with no audio-file metadata") - } - guard !libraryItems.isEmpty else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - return - } - - navigation.dismiss?() - importManager.externalFiles.append(contentsOf: libraryItems) - importManager.isShowingExternalImportView = true - } catch { - self.error = error + isImporting = true + defer { isImporting = false } + + do { + let imported = try await VirtualImportPipeline.run( + items: audiobooks, + id: \.id, + hydrateExtensions: { ids in + let hydrated = try await self.connectionService.fetchItems(ids: ids) + return hydrated.reduce(into: [:]) { $0[$1.id] = $1.details?.fileExtension } + }, + buildResource: { item, fileExtension in + item.asVirtualImportResource( + fileExtension: fileExtension, + detailsOverride: nil, + connectionService: self.connectionService, + artworkSize: CGSize(width: 200, height: 200) + ) + }, + importManager: importManager, + beforePresenting: { self.navigation.dismiss?() } + ) + if imported == 0 { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + } else if imported < audiobooks.count { + Self.logger.warning("Virtual import skipped \(audiobooks.count - imported) item(s) with no audio-file metadata") } + } catch { + self.error = error } } @@ -433,8 +437,9 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog // MARK: - Author Books ViewModel @MainActor -final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, BPLogger { - let authorID: String +final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, BPLogger { + let role: JellyfinPersonRole + let personID: String let parentID: String? var navigation: BPNavigation @@ -450,6 +455,7 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B @Published var items: [JellyfinLibraryItem] = [] @Published var totalItems = Int.max @Published var error: Error? + @Published private(set) var isImporting = false @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] @@ -467,234 +473,7 @@ final class JellyfinAuthorBooksViewModel: IntegrationLibraryViewModelProtocol, B private var disposeBag = Set() init( - authorID: String, - parentID: String?, - connectionService: JellyfinConnectionService, - singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager, - accountService: AccountService, - navigation: BPNavigation, - navigationTitle: String - ) { - self.authorID = authorID - self.parentID = parentID - self.connectionService = connectionService - self.singleFileDownloadService = singleFileDownloadService - self.importManager = importManager - self.accountService = accountService - self.navigation = navigation - self.navigationTitle = navigationTitle - - $searchQuery - .debounce(for: .milliseconds(350), scheduler: RunLoop.main) - .removeDuplicates() - .dropFirst() - .sink { [weak self] _ in self?.applySearch() } - .store(in: &disposeBag) - } - - func fetchInitialItems() { - guard items.isEmpty, fetchTask == nil else { return } - fetchTask = Task { @MainActor in - defer { self.fetchTask = nil } - do { - let (items, _, _) = try await connectionService.fetchItemsByArtist( - artistID: authorID, - parentID: parentID, - startIndex: 0, - limit: nil, - sortBy: sortBy - ) - self.allItems = items - applySearch() - } catch is CancellationError { - // ignore - } catch { - self.error = error - } - } - } - - func fetchMoreItemsIfNeeded(currentItem: JellyfinLibraryItem) {} - - func cancelFetchItems() { - fetchTask?.cancel() - fetchTask = nil - } - - func destination(for item: JellyfinLibraryItem) -> JellyfinLibraryLevelData? { - switch item.kind { - case .audiobook: .details(data: item) - case .folder: .folder(data: item) - default: nil - } - } - - @MainActor func handleDoneAction() {} - - @MainActor - func onEditToggleSelectTapped() { - withAnimation { - editMode = editMode.isEditing ? .inactive : .active - } - if !editMode.isEditing { selectedItems.removeAll() } - } - - @MainActor - func onSelectTapped(for item: JellyfinLibraryItem) { - guard item.isDownloadable else { return } - if selectedItems.contains(item.id) { - selectedItems.remove(item.id) - } else { - selectedItems.insert(item.id) - } - } - - @MainActor - func onSelectAllTapped() { - if selectedItems.isEmpty { - selectedItems = Set(items.compactMap { $0.isDownloadable ? $0.id : nil }) - } else { - selectedItems.removeAll() - } - } - - @MainActor - func onDownloadTapped() { - let downloadItems = selectedItems.compactMap { id in - items.first(where: { $0.id == id && $0.isDownloadable }) - } - guard !downloadItems.isEmpty else { return } - var requests = [URLRequest]() - for item in downloadItems { - do { - let request = try connectionService.createItemDownloadRequest(item) - requests.append(request) - } catch { - self.error = error - } - } - guard !requests.isEmpty else { return } - singleFileDownloadService.handleDownload(requests) - navigation.dismiss?() - } - - @MainActor - func handleImportItems(useSelectedItems: Bool) { - if accountService.hasStreamingEnabled() { - virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) - } else { - if useSelectedItems { - onDownloadTapped() - } else { - confirmDownloadFolder() - } - } - } - - @MainActor - func virtualImportFolderAudiobooks(useSelectedItems: Bool) { - let audiobooks = useSelectedItems - ? selectedItems.compactMap({ id in - self.items.first(where: { $0.id == id }) - }) - : self.items.filter { $0.kind == .audiobook } - - guard !audiobooks.isEmpty else { return } - - Task { @MainActor in - do { - // Hydrate the selection first (one chunked request): list items don't carry - // media sources, and import REQUIRES the real file extension — items without - // one have nothing to stream and are skipped, never guessed. - let hydrated = try await connectionService.fetchItems(ids: audiobooks.map(\.id)) - let extensionsByID: [String: String] = hydrated.reduce(into: [:]) { result, item in - result[item.id] = item.details?.fileExtension - } - let libraryItems = audiobooks.compactMap { item in - extensionsByID[item.id].map { - item.asVirtualImportResource( - fileExtension: $0, - detailsOverride: nil, - connectionService: connectionService, - artworkSize: CGSize(width: 200, height: 200) - ) - } - } - let skipped = audiobooks.count - libraryItems.count - if skipped > 0 { - Self.logger.warning("Virtual import skipped \(skipped) item(s) with no audio-file metadata") - } - guard !libraryItems.isEmpty else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - return - } - - navigation.dismiss?() - importManager.externalFiles.append(contentsOf: libraryItems) - importManager.isShowingExternalImportView = true - } catch { - self.error = error - } - } - } - - @MainActor func onDownloadFolderTapped() {} - @MainActor func confirmDownloadFolder() {} - - private func applySearch() { - let query = searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) - if query.isEmpty { - items = allItems - } else { - items = allItems.filter { $0.name.localizedCaseInsensitiveContains(query) } - } - totalItems = items.count - } - - @MainActor - func goToSubscribe() { - self.navigation.path.append(JellyfinLibraryLevelData.subscribe) - } -} - -// MARK: - Narrator Books ViewModel - -@MainActor -final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, BPLogger { - let personID: String - let parentID: String? - - var navigation: BPNavigation - let navigationTitle: String - - @AppStorage(Constants.UserDefaults.jellyfinLibraryLayout) - var layout: IntegrationLayout.Options = .grid - - @AppStorage(Constants.UserDefaults.jellyfinLibraryLayoutSortBy) - var sortBy: JellyfinLayout.SortBy = .smart - - @Published var searchQuery = "" - @Published var items: [JellyfinLibraryItem] = [] - @Published var totalItems = Int.max - @Published var error: Error? - - @Published var editMode: EditMode = .inactive - @Published var selectedItems: Set = [] - @Published var useSelectedItems: Bool = false - @Published var showingDownloadConfirmation = false - - var isSearchable: Bool { true } - - var importManager: ImportManager - var accountService: AccountService - let connectionService: JellyfinConnectionService - private let singleFileDownloadService: SingleFileDownloadService - private var fetchTask: Task<(), any Error>? - private var allItems: [JellyfinLibraryItem] = [] - private var disposeBag = Set() - - init( + role: JellyfinPersonRole, personID: String, parentID: String?, connectionService: JellyfinConnectionService, @@ -704,6 +483,7 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, navigation: BPNavigation, navigationTitle: String ) { + self.role = role self.personID = personID self.parentID = parentID self.connectionService = connectionService @@ -726,15 +506,27 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, fetchTask = Task { @MainActor in defer { self.fetchTask = nil } do { - let (items, _, _) = try await connectionService.fetchItemsByPerson( - personID: personID, - personName: navigationTitle, - parentID: parentID, - startIndex: 0, - limit: nil, - sortBy: sortBy - ) - self.allItems = items + let result: ([JellyfinLibraryItem], Int, Int) + switch role { + case .author: + result = try await connectionService.fetchItemsByArtist( + artistID: personID, + parentID: parentID, + startIndex: 0, + limit: nil, + sortBy: sortBy + ) + case .narrator: + result = try await connectionService.fetchItemsByPerson( + personID: personID, + personName: navigationTitle, + parentID: parentID, + startIndex: 0, + limit: nil, + sortBy: sortBy + ) + } + self.allItems = result.0 applySearch() } catch is CancellationError { // ignore @@ -809,9 +601,9 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, } @MainActor - func handleImportItems(useSelectedItems: Bool) { + func handleImportItems(useSelectedItems: Bool) async { if accountService.hasStreamingEnabled() { - virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) + await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) } else { if useSelectedItems { onDownloadTapped() @@ -822,7 +614,9 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, } @MainActor - func virtualImportFolderAudiobooks(useSelectedItems: Bool) { + func virtualImportFolderAudiobooks(useSelectedItems: Bool) async { + // Reentrancy guard: a double-tap mid-hydration must not run two imports + guard !isImporting else { return } let audiobooks = useSelectedItems ? selectedItems.compactMap({ id in self.items.first(where: { $0.id == id }) @@ -830,41 +624,35 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, : self.items.filter { $0.kind == .audiobook } guard !audiobooks.isEmpty else { return } - - Task { @MainActor in - do { - // Hydrate the selection first (one chunked request): list items don't carry - // media sources, and import REQUIRES the real file extension — items without - // one have nothing to stream and are skipped, never guessed. - let hydrated = try await connectionService.fetchItems(ids: audiobooks.map(\.id)) - let extensionsByID: [String: String] = hydrated.reduce(into: [:]) { result, item in - result[item.id] = item.details?.fileExtension - } - let libraryItems = audiobooks.compactMap { item in - extensionsByID[item.id].map { - item.asVirtualImportResource( - fileExtension: $0, - detailsOverride: nil, - connectionService: connectionService, - artworkSize: CGSize(width: 200, height: 200) - ) - } - } - let skipped = audiobooks.count - libraryItems.count - if skipped > 0 { - Self.logger.warning("Virtual import skipped \(skipped) item(s) with no audio-file metadata") - } - guard !libraryItems.isEmpty else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - return - } - - navigation.dismiss?() - importManager.externalFiles.append(contentsOf: libraryItems) - importManager.isShowingExternalImportView = true - } catch { - self.error = error + isImporting = true + defer { isImporting = false } + + do { + let imported = try await VirtualImportPipeline.run( + items: audiobooks, + id: \.id, + hydrateExtensions: { ids in + let hydrated = try await self.connectionService.fetchItems(ids: ids) + return hydrated.reduce(into: [:]) { $0[$1.id] = $1.details?.fileExtension } + }, + buildResource: { item, fileExtension in + item.asVirtualImportResource( + fileExtension: fileExtension, + detailsOverride: nil, + connectionService: self.connectionService, + artworkSize: CGSize(width: 200, height: 200) + ) + }, + importManager: importManager, + beforePresenting: { self.navigation.dismiss?() } + ) + if imported == 0 { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + } else if imported < audiobooks.count { + Self.logger.warning("Virtual import skipped \(audiobooks.count - imported) item(s) with no audio-file metadata") } + } catch { + self.error = error } } @@ -887,10 +675,11 @@ final class JellyfinNarratorBooksViewModel: IntegrationLibraryViewModelProtocol, } } -// MARK: - Authors List ViewModel +// MARK: - Persons List ViewModel (authors / narrators) @MainActor -final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, BPLogger { +final class JellyfinPersonsListViewModel: IntegrationLibraryViewModelProtocol, BPLogger { + let role: JellyfinPersonRole let parentID: String? var navigation: BPNavigation @@ -923,6 +712,7 @@ final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, B private var disposeBag = Set() init( + role: JellyfinPersonRole, parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, @@ -931,6 +721,7 @@ final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, B navigation: BPNavigation, navigationTitle: String ) { + self.role = role self.parentID = parentID self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService @@ -952,7 +743,14 @@ final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, B fetchTask = Task { @MainActor in defer { self.fetchTask = nil } do { - let (items, _) = try await connectionService.fetchAlbumArtists(parentID: parentID) + let result: ([JellyfinLibraryItem], Int) + switch role { + case .author: + result = try await connectionService.fetchAlbumArtists(parentID: parentID) + case .narrator: + result = try await connectionService.fetchNarrators(parentID: parentID) + } + let items = result.0 self.allItems = items applyLocalSearch() } catch is CancellationError { @@ -966,114 +764,16 @@ final class JellyfinAuthorsListViewModel: IntegrationLibraryViewModelProtocol, B func cancelFetchItems() { fetchTask?.cancel(); fetchTask = nil } func destination(for item: JellyfinLibraryItem) -> JellyfinLibraryLevelData? { - guard item.kind == .author else { return nil } - return .authorBooks(authorID: item.id, authorName: item.name, parentID: parentID) - } - - @MainActor func handleDoneAction() {} - @MainActor func onEditToggleSelectTapped() {} - @MainActor func onSelectTapped(for item: JellyfinLibraryItem) {} - @MainActor func onSelectAllTapped() {} - @MainActor func onDownloadTapped() {} - @MainActor func onDownloadFolderTapped() {} - @MainActor func confirmDownloadFolder() {} - @MainActor func handleImportItems(useSelectedItems: Bool) {} - - private func applyLocalSearch() { - let query = searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) - items = query.isEmpty ? allItems : allItems.filter { $0.name.localizedCaseInsensitiveContains(query) } - totalItems = items.count - } - - @MainActor - func goToSubscribe() { - self.navigation.path.append(JellyfinLibraryLevelData.subscribe) - } -} - -// MARK: - Narrators List ViewModel - -@MainActor -final class JellyfinNarratorsListViewModel: IntegrationLibraryViewModelProtocol, BPLogger { - let parentID: String? - - var navigation: BPNavigation - let navigationTitle: String - - @AppStorage(Constants.UserDefaults.jellyfinLibraryLayout) - var layout: IntegrationLayout.Options = .list - - @AppStorage(Constants.UserDefaults.jellyfinLibraryLayoutSortBy) - var sortBy: JellyfinLayout.SortBy = .name - - @Published var searchQuery = "" - @Published var items: [JellyfinLibraryItem] = [] - @Published var totalItems = Int.max - @Published var error: Error? - - @Published var editMode: EditMode = .inactive - @Published var selectedItems: Set = [] - @Published var useSelectedItems: Bool = false - @Published var showingDownloadConfirmation = false - - var isSearchable: Bool { true } - - let connectionService: JellyfinConnectionService - var importManager: ImportManager - var accountService: AccountService - private let singleFileDownloadService: SingleFileDownloadService - private var fetchTask: Task<(), any Error>? - private var allItems: [JellyfinLibraryItem] = [] - private var disposeBag = Set() - - init( - parentID: String?, - connectionService: JellyfinConnectionService, - singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager, - accountService: AccountService, - navigation: BPNavigation, - navigationTitle: String - ) { - self.parentID = parentID - self.connectionService = connectionService - self.singleFileDownloadService = singleFileDownloadService - self.importManager = importManager - self.accountService = accountService - self.navigation = navigation - self.navigationTitle = navigationTitle - - $searchQuery - .debounce(for: .milliseconds(350), scheduler: RunLoop.main) - .removeDuplicates() - .dropFirst() - .sink { [weak self] _ in self?.applyLocalSearch() } - .store(in: &disposeBag) - } - - func fetchInitialItems() { - guard items.isEmpty, fetchTask == nil else { return } - fetchTask = Task { @MainActor in - defer { self.fetchTask = nil } - do { - let (items, _) = try await connectionService.fetchNarrators(parentID: parentID) - self.allItems = items - applyLocalSearch() - } catch is CancellationError { - } catch { - self.error = error - } + switch (role, item.kind) { + case (.author, .author): + return .authorBooks(authorID: item.id, authorName: item.name, parentID: parentID) + case (.narrator, .narrator): + return .narratorBooks(personID: item.id, personName: item.name, parentID: parentID) + default: + return nil } } - func fetchMoreItemsIfNeeded(currentItem: JellyfinLibraryItem) {} - func cancelFetchItems() { fetchTask?.cancel(); fetchTask = nil } - - func destination(for item: JellyfinLibraryItem) -> JellyfinLibraryLevelData? { - guard item.kind == .narrator else { return nil } - return .narratorBooks(personID: item.id, personName: item.name, parentID: parentID) - } - @MainActor func handleDoneAction() {} @MainActor func onEditToggleSelectTapped() {} @MainActor func onSelectTapped(for item: JellyfinLibraryItem) {} @@ -1081,7 +781,7 @@ final class JellyfinNarratorsListViewModel: IntegrationLibraryViewModelProtocol, @MainActor func onDownloadTapped() {} @MainActor func onDownloadFolderTapped() {} @MainActor func confirmDownloadFolder() {} - @MainActor func handleImportItems(useSelectedItems: Bool) {} + @MainActor func handleImportItems(useSelectedItems: Bool) async {} private func applyLocalSearch() { let query = searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) diff --git a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift index 1ecd7d773..8c07704dc 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift +++ b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift @@ -54,7 +54,7 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { @MainActor func onEditToggleSelectTapped() @MainActor func onSelectTapped(for item: Item) @MainActor func onSelectAllTapped() - @MainActor func handleImportItems(useSelectedItems: Bool) + @MainActor func handleImportItems(useSelectedItems: Bool) async @MainActor func onDownloadTapped() @MainActor func onDownloadFolderTapped() @MainActor func confirmDownloadFolder() @@ -71,3 +71,40 @@ extension IntegrationLibraryViewModelProtocol { set {} } } + +// MARK: - Virtual import pipeline + +/// Shared orchestration for virtual imports, used by every provider's bulk and +/// details path: hydrate the selection for REAL file extensions (never guessed), +/// build the import payloads, skip items without audio-file metadata, and hand +/// the batch to the import sheet. Callers own the `isImporting` reentrancy guard +/// and error surfacing; the two closures carry the only provider-specific parts. +@MainActor +enum VirtualImportPipeline { + /// - Returns: the number of items handed to the import sheet. Zero means + /// nothing in the selection had audio-file metadata (callers surface the + /// `import_no_audio_files_alert`); a value below `items.count` means the + /// remainder was skipped. + /// - Throws: hydration/network errors, for the caller's error state. + static func run( + items: [Item], + id: (Item) -> String, + hydrateExtensions: ([String]) async throws -> [String: String], + buildResource: (Item, String) -> SimpleExternalResource, + importManager: ImportManager, + beforePresenting: (() -> Void)? = nil + ) async throws -> Int { + guard !items.isEmpty else { return 0 } + + let extensionsByID = try await hydrateExtensions(items.map(id)) + let resources = items.compactMap { item in + extensionsByID[id(item)].map { buildResource(item, $0) } + } + guard !resources.isEmpty else { return 0 } + + beforePresenting?() + importManager.externalFiles.append(contentsOf: resources) + importManager.isShowingExternalImportView = true + return resources.count + } +} diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index af001d665..ece966fd6 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -145,11 +145,13 @@ struct IntegrationAudiobookDetailsView< @ViewBuilder private var DownloadButton: some View { Button { - do { - try viewModel.handleImportAudiobook(viewModel.item) - onDownloadTap() - } catch { - viewModel.error = error + Task { + do { + try await viewModel.handleImportAudiobook(viewModel.item) + onDownloadTap() + } catch { + viewModel.error = error + } } } label: { HStack { @@ -169,11 +171,13 @@ struct IntegrationAudiobookDetailsView< @ViewBuilder private var SmallDownloadButton: some View { Button { - do { - try viewModel.handleImportAudiobook(viewModel.item) - onDownloadTap() - } catch { - viewModel.error = error + Task { + do { + try await viewModel.handleImportAudiobook(viewModel.item) + onDownloadTap() + } catch { + viewModel.error = error + } } } label: { HStack { @@ -192,11 +196,13 @@ struct IntegrationAudiobookDetailsView< private var SynchronizeButton: some View { Button { if allowStream { - do { - try self.viewModel.handleImportAudiobook(viewModel.item) - onDownloadTap() - } catch { - viewModel.error = error + Task { + do { + try await self.viewModel.handleImportAudiobook(viewModel.item) + onDownloadTap() + } catch { + viewModel.error = error + } } } else { onStreamTap() diff --git a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift index 94330b510..617de0b2c 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift @@ -67,7 +67,7 @@ struct IntegrationLibraryView< subscription: viewModel.accountService.accessLevel, onDownload: { withAnimation { viewModel.showingDownloadConfirmation = false } - viewModel.handleImportItems(useSelectedItems: viewModel.useSelectedItems) + Task { await viewModel.handleImportItems(useSelectedItems: viewModel.useSelectedItems) } }, onSync: { withAnimation { viewModel.showingDownloadConfirmation = false } @@ -133,7 +133,7 @@ struct IntegrationLibraryView< Button { if viewModel.accountService.hasLiteEnabled() { - viewModel.handleImportItems(useSelectedItems: false) + Task { await viewModel.handleImportItems(useSelectedItems: false) } } else { // This toolbar action fires OUTSIDE edit mode where the selection is empty — // it always means "everything", same as the lite branch above. @@ -184,7 +184,7 @@ struct IntegrationLibraryView< Button { if viewModel.accountService.hasLiteEnabled() { - viewModel.handleImportItems(useSelectedItems: true) + Task { await viewModel.handleImportItems(useSelectedItems: true) } } else { viewModel.useSelectedItems = true withAnimation { viewModel.showingDownloadConfirmation = true } diff --git a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift index 3c13bc282..20cf379e1 100644 --- a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift +++ b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift @@ -51,6 +51,6 @@ public protocol IntegrationDetailsViewModelProtocol: ObservableObject { func fetchData() func cancelFetchData() func beginDownloadAudiobook(_ item: Item) throws - func virtualImportAudiobook(_ item: Item) - func handleImportAudiobook(_ item: Item) throws + func virtualImportAudiobook(_ item: Item) async + func handleImportAudiobook(_ item: Item) async throws } From a416f23f9fa3b7df4c20bab9f1a57284d07c198f Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 1 Sep 2026 18:34:04 -0500 Subject: [PATCH 065/172] fix: five review polish items in one sweep MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SimpleLibraryItem compares externalResources as Sets: the source is an unordered NSSet, so array comparison made two snapshots of the same multi-resource item unequal on element order and spuriously re-rendered rows (harmless direction, but defeats removeDuplicates). - FileUploadOperation's lock renamed to uploadStateLock: it shadowed the base class's private stateLock and read as shared when the two guard independent state. - The externalUpdate debounce Task captures self weakly, so a cancelled op frees itself and its queue slot promptly instead of riding out the full 5s sleep. - The externalResourceToDownload uuid read matches storeTask's defensive `as? String ?? ""` — the producer types uuid as optional and inserts it `if let`, so the force-cast was a latent crash-loop on persisted params. - createExternalBook's empty-title fallback derives from originalFileName (extension stripped, underscores to spaces): it previously re-read the same empty title, making the fallback a no-op blank row. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../SimpleLibraryItem.swift | 4 +- .../ExternalUpdateProgressOperation.swift | 5 ++- .../ConcurrentSync/FileUploadOperation.swift | 40 ++++++++++--------- Shared/Services/LibraryService.swift | 6 ++- Shared/SwiftData/TasksDataManager.swift | 4 +- 5 files changed, 36 insertions(+), 23 deletions(-) diff --git a/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift b/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift index 9532a3a88..562abf8de 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift @@ -56,7 +56,9 @@ public struct SimpleLibraryItem: Identifiable, Hashable, Equatable { // Rows render provider icons from this — snapshots differing only in their // external resources must not compare equal, or removeDuplicates/onChange // paths skip refreshing a row that just gained or lost a media-server link - && lhs.externalResources == rhs.externalResources + // As Sets: the source is an unordered NSSet, so array comparison made two + // snapshots of the same multi-resource item compare unequal on element order + && Set(lhs.externalResources ?? []) == Set(rhs.externalResources ?? []) } static var fetchRequestProperties = [ diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift index 585142fc5..056cae495 100644 --- a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift +++ b/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift @@ -32,7 +32,10 @@ class ExternalUpdateProgressOperation: AsyncOperation, BPLogger, @unchecked Send return } - Task { + Task { [weak self] in + // weak: a cancelled op shouldn't be kept alive (with its queue slot) for the + // full debounce sleep just because this Task captured it + guard let self else { return } // 1. defer guarantees this runs at the very end of the Task's scope, // even if a crash or a throw happens inside. defer { diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index 2a65def50..3ff3e223d 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -17,11 +17,11 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { private var _uploadCompleted = false private(set) var uploadCompleted: Bool { get { - stateLock.lock(); defer { stateLock.unlock() } + uploadStateLock.lock(); defer { uploadStateLock.unlock() } return _uploadCompleted } set { - stateLock.lock(); defer { stateLock.unlock() } + uploadStateLock.lock(); defer { uploadStateLock.unlock() } _uploadCompleted = newValue } } @@ -40,7 +40,9 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { /// live upload survives logout. Either `cancel()` sees the published task and cancels it, /// or `startUploadTask` sees `isCancelled` and never resumes (resume on a cancelled /// URLSessionTask is a no-op, so the post-unlock resume can't revive it). - private let stateLock = NSLock() + /// Deliberately its OWN lock (the base class's stateLock is private and guards + /// state/didSucceed independently) — renamed so nothing reads as shared + private let uploadStateLock = NSLock() private var currentUploadTask: URLSessionTask? private var progressSubscriber: AnyCancellable? private var completionSubscriber: AnyCancellable? @@ -88,14 +90,14 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { taskDescription: uuid, session: session ) - stateLock.lock() + uploadStateLock.lock() guard !isCancelled else { // cancel() already ran (and finished the operation) — don't resume or rebind - stateLock.unlock() + uploadStateLock.unlock() return } self.currentUploadTask = uploadTask - stateLock.unlock() + uploadStateLock.unlock() // 3. Bind everything before resuming bindUploadObservers() @@ -107,12 +109,12 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { /// The subscriber/observer refs are bound from the operation's Task thread, torn down /// by `cancel()` from whichever thread cancels (main via logout/lapse), and invalidated /// by the completion sink on the URLSession delegate thread — every touch goes through - /// `stateLock`, same as `currentUploadTask`. + /// `uploadStateLock`, same as `currentUploadTask`. private func invalidateCellularObserver() { - stateLock.lock() + uploadStateLock.lock() cellularDataObserver?.invalidate() cellularDataObserver = nil - stateLock.unlock() + uploadStateLock.unlock() } private func bindCellularObserver() { @@ -126,19 +128,19 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { // If the user toggles cellular data mid-flight, we cancel the current internal task. // (This triggers NSURLErrorCancelled in the completion subscriber). - self.stateLock.lock() + self.uploadStateLock.lock() self.currentUploadTask?.cancel() - self.stateLock.unlock() + self.uploadStateLock.unlock() // Recursively restart the upload using the new session! Task { await self.startUploadTask() } } - stateLock.lock() + uploadStateLock.lock() cellularDataObserver?.invalidate() cellularDataObserver = observer - stateLock.unlock() + uploadStateLock.unlock() } private func bindUploadObservers() { @@ -151,10 +153,10 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.onProgress?(progress) } } - stateLock.lock() + uploadStateLock.lock() progressSubscriber?.cancel() progressSubscriber = progress - stateLock.unlock() + uploadStateLock.unlock() let completion = BPURLSession.shared.completionPublisher .sink { [weak self] (task, error) in @@ -218,23 +220,23 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.finish() } } - stateLock.lock() + uploadStateLock.lock() completionSubscriber?.cancel() completionSubscriber = completion - stateLock.unlock() + uploadStateLock.unlock() } // MARK: - Cleanup // If the Orchestrator cancels the operation entirely, we must sever all ties. override func cancel() { super.cancel() - stateLock.lock() + uploadStateLock.lock() currentUploadTask?.cancel() cellularDataObserver?.invalidate() cellularDataObserver = nil progressSubscriber?.cancel() completionSubscriber?.cancel() - stateLock.unlock() + uploadStateLock.unlock() // A cancelled mid-flight upload leaks its temp hard link (only the success branch // cleans up) — same temp-dir guard so the user's real file is never touched. if fileURL.path.hasPrefix(FileManager.default.temporaryDirectory.path) { diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 6da66dd4f..9fa60a073 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -1819,7 +1819,11 @@ extension LibraryService { book.remoteURL = nil book.artworkURL = simpleItem.artworkURL let title = simpleItem.title - book.title = title.isEmpty ? simpleItem.title.replacingOccurrences(of: "_", with: " ") : title + // The fallback must derive from the FILENAME — re-reading the same empty title + // made the underscore-replacement branch a no-op and showed a blank row + book.title = title.isEmpty + ? (simpleItem.originalFileName as NSString).deletingPathExtension.replacingOccurrences(of: "_", with: " ") + : title let artist = simpleItem.details book.details = artist.isEmpty ? "voiceover_unknown_author".localized : artist book.duration = simpleItem.duration diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index 02dbe41a6..46451af72 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -365,7 +365,9 @@ public final class TasksDataManager: BPLogger { case .externalResourceToDownload: let task = ExternalResourceToDownloadTaskModel( id: parameters["id"] as! String, - uuid: parameters["uuid"] as! String, + // The producer types uuid as String? and only inserts it `if let` — match + // storeTask's defensive read instead of trapping on a persisted absence + uuid: parameters["uuid"] as? String ?? "", uploaded: parameters["uploaded"] as? Bool ?? false ) context.insert(task) From d1b17f505925c6f341890ff95ca1a32c5d97f1aa Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 1 Sep 2026 19:07:00 -0500 Subject: [PATCH 066/172] refactor: entitlement CTAs compute live on the VM, not construction snapshots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit showSubscribeButton/allowStream were captured as Bools when the details destination was built — but the Stream CTA itself pushes the subscribe flow, so a purchase completed on the pushed screen left a stale Subscribe button on pop. The same decision also had two sources of truth: the VM's live action-time check and the view's frozen copy. The flags are now protocol-level computed properties over the VM's accountService, re-rendered via an .accountUpdate sink (the repo's entitlement-change bus), and the two init params are deleted from the generic details view, both provider wrappers, and three root construction sites. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelf/AudiobookShelfRootView.swift | 2 -- .../Details/AudiobookShelfAudiobookDetailsView.swift | 4 ---- .../AudiobookShelfAudiobookDetailsViewModel.swift | 12 ++++++++++++ BookPlayer/Jellyfin/JellyfinRootView.swift | 4 ---- .../Details/JellyfinAudiobookDetailsView.swift | 4 ---- .../Details/JellyfinAudiobookDetailsViewModel.swift | 12 ++++++++++++ .../Details/IntegrationAudiobookDetailsView.swift | 6 ++---- .../IntegrationDetailsViewModelProtocol.swift | 7 +++++++ 8 files changed, 33 insertions(+), 18 deletions(-) diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index 27fcf93bf..008e82e85 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -391,8 +391,6 @@ private struct AudiobookShelfTabRoot: View { accountService: accountService, importManager: importManager ), - showSubscribeButton: !accountService.hasSyncEnabled(), - allowStream: accountService.hasStreamingEnabled(), ) { onDismiss() } onStreamTap: { diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift index 0fe5a0d99..439542fe0 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift @@ -16,16 +16,12 @@ struct AudiobookShelfAudiobookDetailsView< where Model.Item == AudiobookShelfLibraryItem, Model.Details == AudiobookShelfAudiobookDetailsData { @ObservedObject var viewModel: Model - var showSubscribeButton: Bool = false - var allowStream: Bool = false var onDownloadTap: () -> Void var onStreamTap: () -> Void var body: some View { IntegrationAudiobookDetailsView( viewModel: viewModel, - showSubscribeButton: showSubscribeButton, - allowStream: allowStream, onDownloadTap: onDownloadTap, onStreamTap: onStreamTap, imageContent: { diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index fdae16f4d..5f5423622 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -7,6 +7,7 @@ // import BookPlayerKit +import Combine import Foundation class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { @@ -17,6 +18,10 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc @Published var details: AudiobookShelfAudiobookDetailsData? @Published var error: Error? @Published private(set) var isImporting = false + private var disposeBag = Set() + + var showSubscribeButton: Bool { !accountService.hasSyncEnabled() } + var allowStream: Bool { accountService.hasStreamingEnabled() } private var singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -33,6 +38,13 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc self.singleFileDownloadService = singleFileDownloadService self.accountService = accountService self.importManager = importManager + + // Entitlements can change while this screen is on the stack (the Stream CTA + // pushes the subscribe flow) — re-render on account updates so the CTAs flip + NotificationCenter.default.publisher(for: .accountUpdate) + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in self?.objectWillChange.send() } + .store(in: &disposeBag) } @MainActor diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 83a9c849b..fa798cc6f 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -415,8 +415,6 @@ struct JellyfinTabRoot: View { navigation: navigation, navigationTitle: item.name ), - showSubscribeButton: !accountService.hasSyncEnabled(), - allowStream: accountService.hasStreamingEnabled(), ) { onDismiss() } onStreamTap: { @@ -644,8 +642,6 @@ extension JellyfinTabRoot { navigation: navigation, navigationTitle: item.name ), - showSubscribeButton: !accountService.hasSyncEnabled(), - allowStream: accountService.hasStreamingEnabled(), ) { onDismiss() } onStreamTap: { diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift index e7f6ba3c6..bf1d0397a 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift @@ -16,16 +16,12 @@ struct JellyfinAudiobookDetailsView< where Model.Item == JellyfinLibraryItem, Model.Details == JellyfinAudiobookDetailsData { @ObservedObject var viewModel: Model - var showSubscribeButton: Bool = false - var allowStream: Bool = false var onDownloadTap: () -> Void var onStreamTap: () -> Void var body: some View { IntegrationAudiobookDetailsView( viewModel: viewModel, - showSubscribeButton: showSubscribeButton, - allowStream: allowStream, onDownloadTap: onDownloadTap, onStreamTap: onStreamTap, imageContent: { diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 681e35cdd..998f6ec95 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -7,6 +7,7 @@ // import BookPlayerKit +import Combine import Foundation import JellyfinAPI @@ -23,6 +24,10 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { @Published var details: JellyfinAudiobookDetailsData? @Published var error: Error? @Published private(set) var isImporting = false + private var disposeBag = Set() + + var showSubscribeButton: Bool { !accountService.hasSyncEnabled() } + var allowStream: Bool { accountService.hasStreamingEnabled() } private var singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -44,6 +49,13 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { self.navigation = navigation self.navigationTitle = navigationTitle self.details = nil + + // Entitlements can change while this screen is on the stack (the Stream CTA + // pushes the subscribe flow) — re-render on account updates so the CTAs flip + NotificationCenter.default.publisher(for: .accountUpdate) + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in self?.objectWillChange.send() } + .store(in: &disposeBag) } @MainActor diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index ece966fd6..e50e55015 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -21,8 +21,6 @@ struct IntegrationAudiobookDetailsView< @ObservedObject var viewModel: Model @EnvironmentObject private var theme: ThemeViewModel - var showSubscribeButton: Bool = false - var allowStream: Bool = false var onDownloadTap: () -> Void var onStreamTap: () -> Void @ViewBuilder let imageContent: () -> ImageContent @@ -79,7 +77,7 @@ struct IntegrationAudiobookDetailsView< } HStack(spacing: 12) { - if allowStream || showSubscribeButton { + if viewModel.allowStream || viewModel.showSubscribeButton { SmallDownloadButton SynchronizeButton } else { @@ -195,7 +193,7 @@ struct IntegrationAudiobookDetailsView< @ViewBuilder private var SynchronizeButton: some View { Button { - if allowStream { + if viewModel.allowStream { Task { do { try await self.viewModel.handleImportAudiobook(viewModel.item) diff --git a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift index 20cf379e1..927b2eba7 100644 --- a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift +++ b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift @@ -48,6 +48,13 @@ public protocol IntegrationDetailsViewModelProtocol: ObservableObject { var details: Details? { get } var error: Error? { get set } + /// Entitlement-driven UI flags, computed LIVE from the account service (and + /// re-rendered via .accountUpdate): the Stream CTA pushes the subscribe flow, + /// so a purchase completed on the pushed screen must flip these on pop — + /// snapshot Bools captured at construction go stale exactly there. + var showSubscribeButton: Bool { get } + var allowStream: Bool { get } + func fetchData() func cancelFetchData() func beginDownloadAudiobook(_ item: Item) throws From a16bf52847ebfd1f44f9b6e7f7f684e6b37736a1 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 1 Sep 2026 19:42:27 -0500 Subject: [PATCH 067/172] refactor: subscribe navigation moves onto the details VMs (goToSubscribe) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In-stack navigation intent lived in root-view closures threaded three layers down (root -> provider wrapper -> generic view), while the VM already owned the navigation stack. Mirroring the library VMs' existing goToSubscribe(), the details VMs now push their provider's subscribe level themselves; the onStreamTap parameter is deleted from the generic view, both wrappers, and three root construction sites — each of which duplicated the append against its own captured nav instance, a wire-to-the-wrong-stack error class that VM ownership eliminates. onDismiss stays a closure: container dismissal belongs to the presenter, not to a VM that shouldn't know it's presented modally. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift | 5 ++--- .../Details/AudiobookShelfAudiobookDetailsView.swift | 2 -- .../Details/AudiobookShelfAudiobookDetailsViewModel.swift | 8 ++++++++ BookPlayer/Jellyfin/JellyfinRootView.swift | 4 ---- .../Details/JellyfinAudiobookDetailsView.swift | 2 -- .../Details/JellyfinAudiobookDetailsViewModel.swift | 5 +++++ .../Details/IntegrationAudiobookDetailsView.swift | 3 +-- .../IntegrationDetailsViewModelProtocol.swift | 5 +++++ 8 files changed, 21 insertions(+), 13 deletions(-) diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index 008e82e85..26972e800 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -389,12 +389,11 @@ private struct AudiobookShelfTabRoot: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager + importManager: importManager, + navigation: navigation ), ) { onDismiss() - } onStreamTap: { - navigation.path.append(AudiobookShelfLibraryLevelData.subscribe) } case .subscribe: ExternalSyncIntroView() diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift index 439542fe0..2666fa989 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift @@ -17,13 +17,11 @@ where Model.Item == AudiobookShelfLibraryItem, Model.Details == AudiobookShelfAu @ObservedObject var viewModel: Model var onDownloadTap: () -> Void - var onStreamTap: () -> Void var body: some View { IntegrationAudiobookDetailsView( viewModel: viewModel, onDownloadTap: onDownloadTap, - onStreamTap: onStreamTap, imageContent: { AudiobookShelfLibraryItemImageView(item: viewModel.item) .environment(\.audiobookshelfService, audiobookShelfConnectionService) diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index 5f5423622..01a3e631f 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -15,6 +15,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc let connectionService: AudiobookShelfConnectionService let accountService: AccountService let importManager: ImportManager + let navigation: BPNavigation @Published var details: AudiobookShelfAudiobookDetailsData? @Published var error: Error? @Published private(set) var isImporting = false @@ -22,6 +23,11 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc var showSubscribeButton: Bool { !accountService.hasSyncEnabled() } var allowStream: Bool { accountService.hasStreamingEnabled() } + + @MainActor + func goToSubscribe() { + navigation.path.append(AudiobookShelfLibraryLevelData.subscribe) + } private var singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -32,12 +38,14 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc singleFileDownloadService: SingleFileDownloadService, accountService: AccountService, importManager: ImportManager, + navigation: BPNavigation ) { self.item = item self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService self.accountService = accountService self.importManager = importManager + self.navigation = navigation // Entitlements can change while this screen is on the stack (the Stream CTA // pushes the subscribe flow) — re-render on account updates so the CTAs flip diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index fa798cc6f..9ae0106ad 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -417,8 +417,6 @@ struct JellyfinTabRoot: View { ), ) { onDismiss() - } onStreamTap: { - navigation.path.append(JellyfinLibraryLevelData.subscribe) } case .subscribe: ExternalSyncIntroView() @@ -644,8 +642,6 @@ extension JellyfinTabRoot { ), ) { onDismiss() - } onStreamTap: { - navigation.path.append(JellyfinLibraryLevelData.subscribe) } case .subscribe: ExternalSyncIntroView() diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift index bf1d0397a..a04dc0818 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift @@ -17,13 +17,11 @@ where Model.Item == JellyfinLibraryItem, Model.Details == JellyfinAudiobookDetai @ObservedObject var viewModel: Model var onDownloadTap: () -> Void - var onStreamTap: () -> Void var body: some View { IntegrationAudiobookDetailsView( viewModel: viewModel, onDownloadTap: onDownloadTap, - onStreamTap: onStreamTap, imageContent: { JellyfinLibraryItemImageView(item: viewModel.item) .environment(\.jellyfinService, jellyfinConnectionService) diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 998f6ec95..85372ad27 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -28,6 +28,11 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { var showSubscribeButton: Bool { !accountService.hasSyncEnabled() } var allowStream: Bool { accountService.hasStreamingEnabled() } + + @MainActor + func goToSubscribe() { + navigation.path.append(JellyfinLibraryLevelData.subscribe) + } private var singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index e50e55015..2d43c7c44 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -22,7 +22,6 @@ struct IntegrationAudiobookDetailsView< @EnvironmentObject private var theme: ThemeViewModel var onDownloadTap: () -> Void - var onStreamTap: () -> Void @ViewBuilder let imageContent: () -> ImageContent var voiceOverBookInfo: String { @@ -203,7 +202,7 @@ struct IntegrationAudiobookDetailsView< } } } else { - onStreamTap() + viewModel.goToSubscribe() } } label: { HStack { diff --git a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift index 927b2eba7..6d833ff10 100644 --- a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift +++ b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift @@ -60,4 +60,9 @@ public protocol IntegrationDetailsViewModelProtocol: ObservableObject { func beginDownloadAudiobook(_ item: Item) throws func virtualImportAudiobook(_ item: Item) async func handleImportAudiobook(_ item: Item) async throws + + /// Pushes the provider's subscribe screen onto the VM's OWN navigation stack. + /// In-stack navigation belongs to the VM (like the library VMs' goToSubscribe); + /// only container dismissal stays a presenter closure. + func goToSubscribe() } From 658b56086e7a91cf9be2fb4f0834c19dc47c863d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 1 Sep 2026 20:03:45 -0500 Subject: [PATCH 068/172] fix: reconcile external resources by the (providerName, providerId) pair MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updateStoredItem diffed remote vs local resources on providerId alone, while the feature's identity contract everywhere else — setExternalResource dedup, findResource scoping, the details ForEach — is the provider PAIR; an item carrying the same providerId under BOTH providers would mis-match or wrongly delete a resource during sync-down. The diff now keys a Hashable pair struct, folds the status-update pass into the single local iteration, and keeps the notSynced deletion guard (locally-created links the server hasn't seen survive) unchanged. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/Services/LibraryService+Sync.swift | 60 +++++++++++++---------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index 0be2b867b..38aa0503a 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -176,37 +176,45 @@ extension LibraryService: LibrarySyncProtocol { } if let remoteExternalResources = item.externalResources { - let remoteIds = Set(remoteExternalResources.compactMap { $0.providerId }) - let localIds = Set(storedItem.resourcesArray.compactMap { $0.providerId }) - - let idsToAdd = remoteIds.subtracting(localIds) - let idsToRemove = localIds.subtracting(remoteIds) - let idsExisting = localIds.intersection(remoteIds) - + // Resource identity is the (providerName, providerId) PAIR — the contract + // everywhere else in this feature (setExternalResource dedup, findResource + // scoping): the same providerId can legitimately exist under BOTH providers, + // so diffing on providerId alone mis-reconciles cross-provider collisions. + struct ResourceKey: Hashable { + let providerName: String + let providerId: String + } + let remoteByKey = Dictionary( + remoteExternalResources.map { + (ResourceKey(providerName: $0.providerName, providerId: $0.providerId), $0) + }, + uniquingKeysWith: { first, _ in first } + ) + let localKeys = Set(storedItem.resourcesArray.map { + ResourceKey(providerName: $0.providerName, providerId: $0.providerId) + }) + let keysToAdd = Set(remoteByKey.keys).subtracting(localKeys) + for localResource in storedItem.resourcesArray { - // Only reconcile-away resources the server has SEEN: a locally-created link whose - // upload task hasn't run yet is legitimately absent from the server payload, and - // deleting it here loses the link before it ever syncs. - if idsToRemove.contains(localResource.providerId), - localResource.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue { + let key = ResourceKey( + providerName: localResource.providerName, + providerId: localResource.providerId + ) + if let remoteData = remoteByKey[key] { + if remoteData.syncStatus != localResource.syncStatus { + localResource.syncStatus = remoteData.syncStatus + } + } else if localResource.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue { + // Only reconcile-away resources the server has SEEN: a locally-created link + // whose upload task hasn't run yet is legitimately absent from the server + // payload, and deleting it here loses the link before it ever syncs. storedItem.removeFromExternalResources(localResource) context.delete(localResource) } } - - for idExisting in idsExisting { - guard let localItem = storedItem.resourcesArray.first(where: { $0.providerId == idExisting }), - let remoteData = item.externalResources?.first(where: { $0.providerId == idExisting }), - remoteData.syncStatus != localItem.syncStatus - else { - continue - } - localItem.syncStatus = remoteData.syncStatus - } - - for idToAdd in idsToAdd { - // Find the original struct using the ID - guard let remoteData = item.externalResources?.first(where: { $0.providerId == idToAdd }) else { + + for keyToAdd in keysToAdd { + guard let remoteData = remoteByKey[keyToAdd] else { continue } From 5bde750564c5a0acc2c58a7c23d44eede11cabb0 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 1 Sep 2026 21:14:05 -0500 Subject: [PATCH 069/172] fix: virtual re-imports reuse the existing row instead of creating twins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit insertItems(fromResources:) now guards on the (providerName, providerId) pair — the book's definitional identity on its server — plus a belt-and-suspenders check on the synthesized relativePath. Re-importing a previously imported item created a twin Book sharing one relativePath, the library's de-facto primary key, which has NO store-level uniqueness constraint — so getItem(with:) and everything keyed on the path resolved arbitrarily between the twins. The file-based flow gets this for free (hasExistingBook guard, rename-on-collision, and the filesystem itself as arbiter); the virtual flow synthesizes its path with no file behind it, so the invariant needed an explicit guard — same reuse/skip semantics as setExternalResource's dedup. Covered by testInsertItemsIsIdempotentOnReimport. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Services/LibraryServiceTests.swift | 41 +++++++++++++++++++ Shared/Services/LibraryService.swift | 20 +++++++++ 2 files changed, 61 insertions(+) diff --git a/BookPlayerTests/Services/LibraryServiceTests.swift b/BookPlayerTests/Services/LibraryServiceTests.swift index abb1c6018..6835b34cc 100644 --- a/BookPlayerTests/Services/LibraryServiceTests.swift +++ b/BookPlayerTests/Services/LibraryServiceTests.swift @@ -2322,4 +2322,45 @@ class LibraryServiceExternalResourceTests: XCTestCase { XCTAssertEqual(stored?.libraryItemUuid, inserted.first?.uuid) XCTAssertNil(sut.findResource(for: "insert-orphan", providerName: "jellyfin")) } + + /// Re-importing the same provider identity must reuse the existing row: inserting + /// again would create a twin Book sharing one relativePath — the library's de-facto + /// primary key, which has no store-level uniqueness constraint. + @MainActor + func testInsertItemsIsIdempotentOnReimport() async { + let simpleItem = SimpleLibraryItem( + title: "twin-book", + details: "author", + speed: 1.0, + currentTime: 0, + duration: 300, + percentCompleted: 0, + isFinished: false, + relativePath: "jellyfin/twin-book.m4b", + remoteURL: nil, + artworkURL: nil, + orderRank: 0, + parentFolder: nil, + originalFileName: "twin-book.m4b", + lastPlayDate: nil, + type: .book, + uuid: UUID().uuidString + ) + let resource = SimpleExternalResource( + providerName: "jellyfin", + providerId: "twin-1", + syncStatus: ExternalResource.SyncStatus.notSynced.rawValue, + lastSyncedAt: nil, + libraryItem: simpleItem + ) + + let first = await sut.insertItems(fromResources: [resource]) + XCTAssertEqual(first.count, 1) + + let second = await sut.insertItems(fromResources: [resource]) + XCTAssertTrue(second.isEmpty, "re-import must be skipped, not create a twin row") + + let rowsAtPath = sut.fetchIdentifiers().filter { $0 == "twin-1-twin-book.m4b" } + XCTAssertEqual(rowsAtPath.count, 1, "exactly one row may exist at the synthesized relativePath") + } } diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 9fa60a073..f31adfa5b 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -1326,6 +1326,26 @@ extension LibraryService { // libraryItem is optional by construction (ignoreLibraryItem paths) — a resource // without one cannot become a book row; skip it instead of crashing. guard let simpleItem = resource.libraryItem else { continue } + // Idempotent import: the (providerName, providerId) pair IS the book's identity + // on its server, so re-importing must reuse the existing row — inserting again + // creates a twin sharing the same relativePath, the library's de-facto primary + // key, which has NO store-level uniqueness constraint. Mirrors the file flow's + // hasExistingBook guard in ImportOperation and setExternalResource's dedup. + guard findResource(for: resource.providerId, providerName: resource.providerName) == nil else { + Self.logger.info( + "Virtual import skipped: \(resource.providerName)/\(resource.providerId) is already in the library" + ) + continue + } + // Belt-and-suspenders: an unrelated row occupying the synthesized path (e.g. a + // file literally named "-") must not gain a twin either. + let plannedRelativePath = "\(resource.providerId)-\(simpleItem.originalFileName)" + guard getItemReference(with: plannedRelativePath, context: dataManager.getContext()) == nil else { + Self.logger.warning( + "Virtual import skipped: a row already exists at \(plannedRelativePath)" + ) + continue + } let libraryItem: LibraryItem let book = await createExternalBook(simpleItem: simpleItem, externalResource: resource) libraryItem = book From 3aee655b7330d8d7c82eb90dd5cdaceb2e67d78e Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 3 Sep 2026 10:57:16 -0500 Subject: [PATCH 070/172] fix: details view models get @StateObject ownership (initModel pattern) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The three details screens held @ObservedObject over a VM constructed inline in the navigationDestination builder — nobody owned it, so any root re-render while the screen was pushed minted a fresh VM. A concrete trigger sits inside the flow itself: tapping Stream mutates importManager, an @EnvironmentObject of the root, re-rendering it. Each recreation lost error/isImporting state (weakening the double-tap guard, orphaning an in-flight import's error) and refetched details — .task(id: ObjectIdentifier(viewModel)) was papering over exactly this. The wrappers now own the VM via @StateObject filled from an initModel closure — the repo's established pattern (ItemListView.init(initModel:), and this PR's own library screens) — so the closure runs only on first install and the VM survives builder re-evaluations. The .accountUpdate sink registered in the VM init is now registered exactly once per screen. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelfRootView.swift | 18 +++++---- .../AudiobookShelfAudiobookDetailsView.swift | 16 +++++++- BookPlayer/Jellyfin/JellyfinRootView.swift | 40 ++++++++++--------- .../JellyfinAudiobookDetailsView.swift | 16 +++++++- 4 files changed, 62 insertions(+), 28 deletions(-) diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index 26972e800..be6ab9115 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -384,14 +384,16 @@ private struct AudiobookShelfTabRoot: View { ) case .details(let item): AudiobookShelfAudiobookDetailsView( - viewModel: AudiobookShelfAudiobookDetailsViewModel( - item: item, - connectionService: connectionService, - singleFileDownloadService: singleFileDownloadService, - accountService: accountService, - importManager: importManager, - navigation: navigation - ), + initModel: { + AudiobookShelfAudiobookDetailsViewModel( + item: item, + connectionService: connectionService, + singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, + navigation: navigation + ) + } ) { onDismiss() } diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift index 2666fa989..3540fe8dd 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsView.swift @@ -15,8 +15,22 @@ struct AudiobookShelfAudiobookDetailsView< >: View where Model.Item == AudiobookShelfLibraryItem, Model.Details == AudiobookShelfAudiobookDetailsData { - @ObservedObject var viewModel: Model + /// OWNS the VM (repo pattern, see ItemListView.init(initModel:)): this wrapper is + /// re-created whenever the root's navigationDestination builder re-evaluates (e.g. + /// tapping Stream mutates importManager, an @EnvironmentObject of the root), and an + /// @ObservedObject over an inline-constructed VM was recreated each time — losing + /// error/isImporting state and refetching. @StateObject storage survives; the + /// initModel closure runs only on first install. + @StateObject var viewModel: Model var onDownloadTap: () -> Void + + init( + initModel: @escaping () -> Model, + onDownloadTap: @escaping () -> Void + ) { + self._viewModel = .init(wrappedValue: initModel()) + self.onDownloadTap = onDownloadTap + } var body: some View { IntegrationAudiobookDetailsView( diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 9ae0106ad..d30f6a463 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -406,15 +406,17 @@ struct JellyfinTabRoot: View { ) case .details(let item): JellyfinAudiobookDetailsView( - viewModel: JellyfinAudiobookDetailsViewModel( - item: item, - connectionService: connectionService, - singleFileDownloadService: singleFileDownloadService, - accountService: accountService, - importManager: importManager, - navigation: navigation, - navigationTitle: item.name - ), + initModel: { + JellyfinAudiobookDetailsViewModel( + item: item, + connectionService: connectionService, + singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, + navigation: navigation, + navigationTitle: item.name + ) + } ) { onDismiss() } @@ -631,15 +633,17 @@ extension JellyfinTabRoot { ) case .details(let item): JellyfinAudiobookDetailsView( - viewModel: JellyfinAudiobookDetailsViewModel( - item: item, - connectionService: connectionService, - singleFileDownloadService: singleFileDownloadService, - accountService: accountService, - importManager: importManager, - navigation: navigation, - navigationTitle: item.name - ), + initModel: { + JellyfinAudiobookDetailsViewModel( + item: item, + connectionService: connectionService, + singleFileDownloadService: singleFileDownloadService, + accountService: accountService, + importManager: importManager, + navigation: navigation, + navigationTitle: item.name + ) + } ) { onDismiss() } diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift index a04dc0818..b3030ed01 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsView.swift @@ -15,8 +15,22 @@ struct JellyfinAudiobookDetailsView< >: View where Model.Item == JellyfinLibraryItem, Model.Details == JellyfinAudiobookDetailsData { - @ObservedObject var viewModel: Model + /// OWNS the VM (repo pattern, see ItemListView.init(initModel:)): this wrapper is + /// re-created whenever the root's navigationDestination builder re-evaluates (e.g. + /// tapping Stream mutates importManager, an @EnvironmentObject of the root), and an + /// @ObservedObject over an inline-constructed VM was recreated each time — losing + /// error/isImporting state and refetching. @StateObject storage survives; the + /// initModel closure runs only on first install. + @StateObject var viewModel: Model var onDownloadTap: () -> Void + + init( + initModel: @escaping () -> Model, + onDownloadTap: @escaping () -> Void + ) { + self._viewModel = .init(wrappedValue: initModel()) + self.onDownloadTap = onDownloadTap + } var body: some View { IntegrationAudiobookDetailsView( From f91879041b9851bacfc05891c508249c53d8e344 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 3 Sep 2026 12:11:23 -0500 Subject: [PATCH 071/172] =?UTF-8?q?fix:=20two=20review=20one-liners=20?= =?UTF-8?q?=E2=80=94=20folder-download=20filter,=20loud=20stale-path=20fai?= =?UTF-8?q?lure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - confirmDownloadFolder now filters kind == .audiobook like its sibling virtualImportFolderAudiobooks: folder/collection rows each threw inside createItemDownloadRequest (last error winning) while the rest of the loop proceeded — a confusing partial download. - loadPlayer's item-resolution guard throws BPPlayerError.fileMissing instead of silently returning: develop surfaced an alert for stale references (deleted book via last-book restore, CarPlay, watch) when sync was inactive, and the resolution consolidation had swallowed that. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library Screen/AudiobookShelfLibraryViewModel.swift | 5 ++++- BookPlayer/Player/PlayerLoaderService.swift | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 3c60d18b0..b39682808 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -298,7 +298,10 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, @MainActor func confirmDownloadFolder() { var requests = [URLRequest]() - for item in self.items { + // Same filter as virtualImportFolderAudiobooks: folder/collection rows at this + // level would each throw in createItemDownloadRequest (last error wins) while + // the rest of the loop proceeds — a confusing partial download + for item in self.items where item.kind == .audiobook { do { let request = try connectionService.createItemDownloadRequest(item) requests.append(request) diff --git a/BookPlayer/Player/PlayerLoaderService.swift b/BookPlayer/Player/PlayerLoaderService.swift index 55aa7231e..90cb1fb53 100644 --- a/BookPlayer/Player/PlayerLoaderService.swift +++ b/BookPlayer/Player/PlayerLoaderService.swift @@ -42,9 +42,14 @@ final class PlayerLoaderService: @unchecked Sendable { ) async throws { // The loader's contract is a RELATIVE PATH — every launch surface speaks paths (App // Intents, CarPlay, search, watch, last-book restore, deep links). Resolution to the - // item (and its uuid) happens here, in one place. + // item (and its uuid) happens here, in one place. A path that no longer resolves + // (stale last-book restore, CarPlay/watch reference to a deleted item) must THROW — + // develop surfaced fileMissing here, and a silent return leaves the tap doing + // nothing with no explanation. guard let libraryItem = self.libraryService.getSimpleItem(with: relativePath) - else { return } + else { + throw BPPlayerError.fileMissing(relativePath: relativePath) + } let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(libraryItem.relativePath) From 5760ff31fa8bb9fe20d60f090944d452e65e2468 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 3 Sep 2026 18:29:00 -0500 Subject: [PATCH 072/172] refactor: integrations own virtual-import staging and confirmation end to end MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The staged selection now travels as a VALUE (ExternalImportBatch) from the producing screen to its own .sheet(item:) confirmation — there is no shared mutable mailbox left to desync. ImportManager sheds externalFiles, isShowingExternalImportView, processExternalFiles, and hasExistingBook (dedup lives in insertItems since the idempotency commit), keeping only externalOperationPublisher as the import bus; LibraryRootView's consumer tail is untouched. ExternalImportViewModel owns the batch as @Published state, which makes the dead-delete-button class impossible rather than patched (testRemovalMutatesOwnedStateAndPublishes pins it). Confirm preserves today's destinations — bulk sends the batch then dismisses the browser, details sends and stays for serial importing — and cancel now returns to the browser with the selection intact instead of a closed browser. Five new tests: pipeline selection-order/skip semantics, empty-selection short-circuit, hydration-error propagation, and the confirmation VM's removal + edited-confirm contract. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelfLibraryViewModel.swift | 26 +++-- ...iobookShelfAudiobookDetailsViewModel.swift | 18 ++- .../ExternalSource/ExternalImportView.swift | 30 ++--- .../ExternalImportViewModel.swift | 44 +++----- BookPlayer/Import/ImportManager.swift | 31 +----- .../JellyfinAudiobookDetailsViewModel.swift | 18 ++- .../GridLayout/JellyfinLibraryGridView.swift | 2 + .../JellyfinLibraryViewModel.swift | 54 ++++++--- BookPlayer/MainView.swift | 8 -- .../IntegrationLibraryViewModelProtocol.swift | 37 +++---- .../IntegrationAudiobookDetailsView.swift | 11 ++ .../IntegrationLibraryView.swift | 11 ++ BookPlayerTests/ImportOperationTests.swift | 104 ++++++++++++++++++ .../SimpleExternalResource.swift | 13 +++ .../IntegrationDetailsViewModelProtocol.swift | 8 ++ 15 files changed, 293 insertions(+), 122 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index b39682808..5803c0a4c 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -45,6 +45,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, @Published var totalItems = Int.max @Published var error: Error? @Published private(set) var isImporting = false + @Published var pendingImportBatch: ExternalImportBatch? @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] @@ -260,7 +261,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, defer { isImporting = false } do { - let imported = try await VirtualImportPipeline.run( + let resources = try await VirtualImportPipeline.run( items: audiobooks, id: \.id, hydrateExtensions: { ids in @@ -275,15 +276,18 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, connectionService: self.connectionService, artworkSize: CGSize(width: 300, height: 300) ) - }, - importManager: importManager, - beforePresenting: { self.navigation.dismiss?() } + } ) - if imported == 0 { + guard !resources.isEmpty else { self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - } else if imported < audiobooks.count { - Self.logger.warning("Virtual import skipped \(audiobooks.count - imported) item(s) with no audio-file metadata") + return } + if resources.count < audiobooks.count { + Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata") + } + // Stage as a VALUE for this screen's own confirmation sheet — the browser + // stays open beneath it; dismissal happens on confirm + pendingImportBatch = ExternalImportBatch(resources: resources) } catch { self.error = error } @@ -341,6 +345,14 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, self.navigation.path.append(AudiobookShelfLibraryLevelData.subscribe) } + @MainActor + func confirmExternalImport(_ resources: [SimpleExternalResource]) { + // Bulk imports land you in the library (today's destination): send the batch on + // the import bus, then close the browser + importManager.externalOperationPublisher.send(resources) + navigation.dismiss?() + } + private func handleSortChanged() { guard !items.isEmpty else { return } diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index 01a3e631f..dbbb4ca92 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -19,11 +19,19 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc @Published var details: AudiobookShelfAudiobookDetailsData? @Published var error: Error? @Published private(set) var isImporting = false + @Published var pendingImportBatch: ExternalImportBatch? private var disposeBag = Set() var showSubscribeButton: Bool { !accountService.hasSyncEnabled() } var allowStream: Bool { accountService.hasStreamingEnabled() } + @MainActor + func confirmExternalImport(_ resources: [SimpleExternalResource]) { + // Details imports keep you in the browser (today's flow — import another book + // without re-navigating): send on the import bus, no dismissal + importManager.externalOperationPublisher.send(resources) + } + @MainActor func goToSubscribe() { navigation.path.append(AudiobookShelfLibraryLevelData.subscribe) @@ -109,7 +117,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc defer { isImporting = false } do { - let imported = try await VirtualImportPipeline.run( + let resources = try await VirtualImportPipeline.run( items: [item], id: \.id, hydrateExtensions: { ids in @@ -126,12 +134,14 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc connectionService: self.connectionService, artworkSize: CGSize(width: 300, height: 300) ) - }, - importManager: importManager + } ) - if imported == 0 { + guard !resources.isEmpty else { self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return } + // Stage as a VALUE for this screen's own confirmation sheet + pendingImportBatch = ExternalImportBatch(resources: resources) } catch { self.error = error } diff --git a/BookPlayer/Import/ExternalSource/ExternalImportView.swift b/BookPlayer/Import/ExternalSource/ExternalImportView.swift index 6b9fdf721..2af6676ac 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportView.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportView.swift @@ -8,8 +8,14 @@ import SwiftUI import BookPlayerKit -struct ExternalImportView: View { - @ObservedObject var viewModel: Model +struct ExternalImportView: View { + /// Owns the confirmation VM (initModel/@StateObject pattern): the VM is seeded + /// with the batch VALUE and survives re-renders of the presenting view. + @StateObject var viewModel: ExternalImportViewModel + + init(initModel: @escaping () -> ExternalImportViewModel) { + self._viewModel = .init(wrappedValue: initModel()) + } @Environment(\.dismiss) var dismiss @EnvironmentObject private var theme: ThemeViewModel @@ -21,7 +27,7 @@ struct ExternalImportView: View { VStack(alignment: .leading, spacing: 20) { HStack { Button { - viewModel.resources = [] + // Dismissal alone is cancellation: .sheet(item:) nils the staged batch dismiss() } label: { Image(systemName: "xmark") @@ -37,10 +43,8 @@ struct ExternalImportView: View { Spacer() Button { - Task { - await viewModel.handleImportResources() - dismiss() - } + viewModel.confirm() + dismiss() } label: { Image(systemName: "checkmark") .accessibilityLabel("import_button".localized) @@ -110,20 +114,18 @@ struct ExternalImportView: View { } .padding(.horizontal, 24) } - .onDisappear { - viewModel.resources = [] - } } } struct ExternalImportView_Previews: PreviewProvider { static var previews: some View { ExternalImportView( - viewModel: ExternalImportViewModel( - importManager: ImportManager( - libraryService: LibraryService() + initModel: { + ExternalImportViewModel( + batch: ExternalImportBatch(resources: []), + onConfirm: { _ in } ) - ) + } ) } } diff --git a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift index e25264554..0f968ee47 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift @@ -10,37 +10,29 @@ import SwiftUI import BookPlayerKit @MainActor -protocol ExternalViewModelProtocol: ObservableObject { - var resources: [SimpleExternalResource] { get set } - func removeResource(withId id: String) - func handleImportResources() async -} +final class ExternalImportViewModel: ObservableObject { + /// OWNED value state, seeded from the producer's staged batch: removals republish + /// natively. (The previous shape was a computed passthrough onto a shared + /// ImportManager mailbox — mutations never fired this VM's objectWillChange, so the + /// delete button was visually dead.) + @Published private(set) var resources: [SimpleExternalResource] + private let onConfirm: ([SimpleExternalResource]) -> Void -@MainActor -class ExternalImportViewModel: ExternalViewModelProtocol { - let importManager: ImportManager - - var resources: [SimpleExternalResource] { - get { - return importManager.externalFiles - } - set { - importManager.externalFiles = newValue - } - } - init( - importManager: ImportManager + batch: ExternalImportBatch, + onConfirm: @escaping ([SimpleExternalResource]) -> Void ) { - self.importManager = importManager + self.resources = batch.resources + self.onConfirm = onConfirm } - + func removeResource(withId id: String) { - importManager.externalFiles.removeAll { $0.providerId == id } + resources.removeAll { $0.providerId == id } } - - func handleImportResources() async { - // Synchronous @MainActor call from a @MainActor context — no await needed - importManager.processExternalFiles() + + /// Hands the (possibly edited) selection back to the producing screen's VM, + /// which sends it on the import bus and owns any post-confirm navigation. + func confirm() { + onConfirm(resources) } } diff --git a/BookPlayer/Import/ImportManager.swift b/BookPlayer/Import/ImportManager.swift index 59af679b3..1353b2e42 100644 --- a/BookPlayer/Import/ImportManager.swift +++ b/BookPlayer/Import/ImportManager.swift @@ -24,10 +24,12 @@ final class ImportManager: ObservableObject { private var files = CurrentValueSubject, Never>(Set()) public var operationPublisher = PassthroughSubject() + /// The external-import bus: integration screens send their CONFIRMED virtual-import + /// batches here; LibraryRootView consumes and inserts. Staging + confirmation live + /// with the integrations (value-typed ExternalImportBatch on each VM) — ImportManager + /// deliberately holds no external staging state. public var externalOperationPublisher = PassthroughSubject<[SimpleExternalResource], Never>() - @Published var externalFiles: [SimpleExternalResource] = [] - @Published var isShowingExternalImportView: Bool = false init(libraryService: LibraryServiceProtocol) { self.libraryService = libraryService @@ -155,28 +157,5 @@ final class ImportManager: ObservableObject { } } - private func hasExistingBook(_ externalResource: SimpleExternalResource) -> Bool { - guard let simpleItem = externalResource.libraryItem else { return false } - let documentsFolder = DataManager.getDocumentsFolderURL() - let destinationURL = documentsFolder.appendingPathComponent(simpleItem.relativePath) - if self.libraryService.findBooks(containing: destinationURL)?.first != nil { - return true - } - - if self.libraryService.findResource(for: externalResource.providerId, providerName: externalResource.providerName) != nil { - return true - } - - return false - } - - @MainActor - func processExternalFiles() { - guard self.externalFiles.count > 0 else { - return - } - let myExternalFiles = self.externalFiles.filter { !hasExistingBook($0) } - self.externalFiles = [] - self.externalOperationPublisher.send(myExternalFiles) - } + } diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 85372ad27..767f335b8 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -24,11 +24,19 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { @Published var details: JellyfinAudiobookDetailsData? @Published var error: Error? @Published private(set) var isImporting = false + @Published var pendingImportBatch: ExternalImportBatch? private var disposeBag = Set() var showSubscribeButton: Bool { !accountService.hasSyncEnabled() } var allowStream: Bool { accountService.hasStreamingEnabled() } + @MainActor + func confirmExternalImport(_ resources: [SimpleExternalResource]) { + // Details imports keep you in the browser (today's flow — import another book + // without re-navigating): send on the import bus, no dismissal + importManager.externalOperationPublisher.send(resources) + } + @MainActor func goToSubscribe() { navigation.path.append(JellyfinLibraryLevelData.subscribe) @@ -117,7 +125,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { defer { isImporting = false } do { - let imported = try await VirtualImportPipeline.run( + let resources = try await VirtualImportPipeline.run( items: [item], id: \.id, hydrateExtensions: { ids in @@ -135,12 +143,14 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { connectionService: self.connectionService, artworkSize: CGSize(width: 200, height: 200) ) - }, - importManager: importManager + } ) - if imported == 0 { + guard !resources.isEmpty else { self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return } + // Stage as a VALUE for this screen's own confirmation sheet + pendingImportBatch = ExternalImportBatch(resources: resources) } catch { self.error = error } diff --git a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift index d86917427..15a4e4a6b 100644 --- a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift +++ b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift @@ -103,7 +103,9 @@ final class MockJellyfinLibraryViewModel: JellyfinLibraryViewModelProtocol, Obse func onDownloadFolderTapped() {} func confirmDownloadFolder() {} func virtualImportFolderAudiobooks(useSelectedItems: Bool) {} + var pendingImportBatch: ExternalImportBatch? func handleImportItems(useSelectedItems: Bool) async { } + func confirmExternalImport(_ resources: [SimpleExternalResource]) { } } #Preview("top level") { diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index b7bc915b7..52d5d6c4f 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -58,6 +58,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog @Published var totalItems = Int.max @Published var error: Error? @Published private(set) var isImporting = false + @Published var pendingImportBatch: ExternalImportBatch? @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] @@ -400,7 +401,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog defer { isImporting = false } do { - let imported = try await VirtualImportPipeline.run( + let resources = try await VirtualImportPipeline.run( items: audiobooks, id: \.id, hydrateExtensions: { ids in @@ -414,15 +415,18 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog connectionService: self.connectionService, artworkSize: CGSize(width: 200, height: 200) ) - }, - importManager: importManager, - beforePresenting: { self.navigation.dismiss?() } + } ) - if imported == 0 { + guard !resources.isEmpty else { self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - } else if imported < audiobooks.count { - Self.logger.warning("Virtual import skipped \(audiobooks.count - imported) item(s) with no audio-file metadata") + return } + if resources.count < audiobooks.count { + Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata") + } + // Stage as a VALUE for this screen's own confirmation sheet — the browser + // stays open beneath it; dismissal happens on confirm + pendingImportBatch = ExternalImportBatch(resources: resources) } catch { self.error = error } @@ -432,6 +436,14 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog func goToSubscribe() { self.navigation.path.append(JellyfinLibraryLevelData.subscribe) } + + @MainActor + func confirmExternalImport(_ resources: [SimpleExternalResource]) { + // Bulk imports land you in the library (today's destination): send the batch on + // the import bus, then close the browser + importManager.externalOperationPublisher.send(resources) + navigation.dismiss?() + } } // MARK: - Author Books ViewModel @@ -456,6 +468,7 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B @Published var totalItems = Int.max @Published var error: Error? @Published private(set) var isImporting = false + @Published var pendingImportBatch: ExternalImportBatch? @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] @@ -628,7 +641,7 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B defer { isImporting = false } do { - let imported = try await VirtualImportPipeline.run( + let resources = try await VirtualImportPipeline.run( items: audiobooks, id: \.id, hydrateExtensions: { ids in @@ -642,15 +655,18 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B connectionService: self.connectionService, artworkSize: CGSize(width: 200, height: 200) ) - }, - importManager: importManager, - beforePresenting: { self.navigation.dismiss?() } + } ) - if imported == 0 { + guard !resources.isEmpty else { self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - } else if imported < audiobooks.count { - Self.logger.warning("Virtual import skipped \(audiobooks.count - imported) item(s) with no audio-file metadata") + return } + if resources.count < audiobooks.count { + Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata") + } + // Stage as a VALUE for this screen's own confirmation sheet — the browser + // stays open beneath it; dismissal happens on confirm + pendingImportBatch = ExternalImportBatch(resources: resources) } catch { self.error = error } @@ -673,6 +689,14 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B func goToSubscribe() { self.navigation.path.append(JellyfinLibraryLevelData.subscribe) } + + @MainActor + func confirmExternalImport(_ resources: [SimpleExternalResource]) { + // Bulk imports land you in the library (today's destination): send the batch on + // the import bus, then close the browser + importManager.externalOperationPublisher.send(resources) + navigation.dismiss?() + } } // MARK: - Persons List ViewModel (authors / narrators) @@ -781,7 +805,9 @@ final class JellyfinPersonsListViewModel: IntegrationLibraryViewModelProtocol, B @MainActor func onDownloadTapped() {} @MainActor func onDownloadFolderTapped() {} @MainActor func confirmDownloadFolder() {} + @Published var pendingImportBatch: ExternalImportBatch? @MainActor func handleImportItems(useSelectedItems: Bool) async {} + @MainActor func confirmExternalImport(_ resources: [SimpleExternalResource]) {} private func applyLocalSearch() { let query = searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index 848d947ef..05cc96ea6 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -123,14 +123,6 @@ struct MainView: View { } message: { Text(String(format: "resume_playback_alert_message".localized, TimeParser.formatTime(playerState.remotePlayTime ?? 0))) } - .sheet(isPresented: $importManager.isShowingExternalImportView) { - ExternalImportView( - viewModel: ExternalImportViewModel(importManager: importManager) - ) - .presentationBackground(.clear) - .environmentObject(importManager) - .environmentObject(theme) - } .accessibilityAction(.magicTap) { playerManager.playPause() } diff --git a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift index 8c07704dc..10feb73cc 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift +++ b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift @@ -55,6 +55,11 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { @MainActor func onSelectTapped(for item: Item) @MainActor func onSelectAllTapped() @MainActor func handleImportItems(useSelectedItems: Bool) async + /// Staged virtual-import selection awaiting confirmation (`.sheet(item:)`); + /// nil on the list-only screens that never import. + var pendingImportBatch: ExternalImportBatch? { get set } + /// Hands the confirmed (possibly edited) selection to the import bus. + @MainActor func confirmExternalImport(_ resources: [SimpleExternalResource]) @MainActor func onDownloadTapped() @MainActor func onDownloadFolderTapped() @MainActor func confirmDownloadFolder() @@ -76,35 +81,29 @@ extension IntegrationLibraryViewModelProtocol { /// Shared orchestration for virtual imports, used by every provider's bulk and /// details path: hydrate the selection for REAL file extensions (never guessed), -/// build the import payloads, skip items without audio-file metadata, and hand -/// the batch to the import sheet. Callers own the `isImporting` reentrancy guard -/// and error surfacing; the two closures carry the only provider-specific parts. +/// build the import payloads, and skip items without audio-file metadata. Callers +/// own the `isImporting` reentrancy guard, error surfacing, and staging the result +/// as their `pendingImportBatch`; the two closures carry the only +/// provider-specific parts. @MainActor enum VirtualImportPipeline { - /// - Returns: the number of items handed to the import sheet. Zero means - /// nothing in the selection had audio-file metadata (callers surface the - /// `import_no_audio_files_alert`); a value below `items.count` means the - /// remainder was skipped. + /// - Returns: the import payloads for every item whose REAL file extension could + /// be hydrated, in selection order — the caller stages them as its + /// `pendingImportBatch`. Empty means nothing in the selection had audio-file + /// metadata (callers surface the `import_no_audio_files_alert`); fewer than + /// `items.count` means the remainder was skipped. /// - Throws: hydration/network errors, for the caller's error state. static func run( items: [Item], id: (Item) -> String, hydrateExtensions: ([String]) async throws -> [String: String], - buildResource: (Item, String) -> SimpleExternalResource, - importManager: ImportManager, - beforePresenting: (() -> Void)? = nil - ) async throws -> Int { - guard !items.isEmpty else { return 0 } + buildResource: (Item, String) -> SimpleExternalResource + ) async throws -> [SimpleExternalResource] { + guard !items.isEmpty else { return [] } let extensionsByID = try await hydrateExtensions(items.map(id)) - let resources = items.compactMap { item in + return items.compactMap { item in extensionsByID[id(item)].map { buildResource(item, $0) } } - guard !resources.isEmpty else { return 0 } - - beforePresenting?() - importManager.externalFiles.append(contentsOf: resources) - importManager.isShowingExternalImportView = true - return resources.count } } diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index 2d43c7c44..865507e83 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -133,6 +133,17 @@ struct IntegrationAudiobookDetailsView< .task(id: ObjectIdentifier(viewModel)) { viewModel.fetchData() } + .sheet(item: $viewModel.pendingImportBatch) { batch in + ExternalImportView( + initModel: { + ExternalImportViewModel(batch: batch) { resources in + viewModel.confirmExternalImport(resources) + } + } + ) + .presentationBackground(.clear) + .environmentObject(theme) + } .onDisappear { viewModel.cancelFetchData() } diff --git a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift index 617de0b2c..a33f1f630 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift @@ -87,6 +87,17 @@ struct IntegrationLibraryView< .zIndex(1) } } + .sheet(item: $viewModel.pendingImportBatch) { batch in + ExternalImportView( + initModel: { + ExternalImportViewModel(batch: batch) { resources in + viewModel.confirmExternalImport(resources) + } + } + ) + .presentationBackground(.clear) + .environmentObject(theme) + } .scrollDismissesKeyboard(.interactively) .background(theme.systemBackgroundColor) .modifier(IntegrationSearchableModifier( diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index bcc3f4fee..8520664b1 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -8,6 +8,7 @@ @testable import BookPlayer @testable import BookPlayerKit +import Combine import XCTest // MARK: - processFiles() @@ -128,3 +129,106 @@ class ImportOperationTests: XCTestCase { wait(for: [promise], timeout: 15) } } + +// MARK: - Virtual import pipeline + +@MainActor +final class VirtualImportPipelineTests: XCTestCase { + private struct StubItem { + let id: String + } + + private func makeResource(id: String) -> SimpleExternalResource { + SimpleExternalResource( + providerName: "jellyfin", + providerId: id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + libraryItem: nil + ) + } + + func testBuildsOnlyHydratedItemsInSelectionOrder() async throws { + let items = [StubItem(id: "a"), StubItem(id: "b"), StubItem(id: "c")] + let resources = try await VirtualImportPipeline.run( + items: items, + id: \.id, + hydrateExtensions: { ids in + XCTAssertEqual(ids, ["a", "b", "c"]) + return ["a": "m4b", "c": "mp3"] // "b" reports no audio-file metadata + }, + buildResource: { item, _ in self.makeResource(id: item.id) } + ) + XCTAssertEqual(resources.map(\.providerId), ["a", "c"], "skips unhydrated items, keeps selection order") + } + + func testEmptySelectionNeverHydrates() async throws { + var hydrateCalled = false + let resources = try await VirtualImportPipeline.run( + items: [StubItem](), + id: \.id, + hydrateExtensions: { _ in + hydrateCalled = true + return [:] + }, + buildResource: { item, _ in self.makeResource(id: item.id) } + ) + XCTAssertTrue(resources.isEmpty) + XCTAssertFalse(hydrateCalled, "no selection means no network round-trip") + } + + func testHydrationErrorsPropagate() async { + do { + _ = try await VirtualImportPipeline.run( + items: [StubItem(id: "a")], + id: \.id, + hydrateExtensions: { _ in throw URLError(.notConnectedToInternet) }, + buildResource: { item, _ in self.makeResource(id: item.id) } + ) + XCTFail("expected the hydration error to propagate to the caller's error state") + } catch { + XCTAssertEqual((error as? URLError)?.code, .notConnectedToInternet) + } + } +} + +// MARK: - External import confirmation + +@MainActor +final class ExternalImportViewModelTests: XCTestCase { + private func makeBatch(ids: [String]) -> ExternalImportBatch { + ExternalImportBatch( + resources: ids.map { + SimpleExternalResource( + providerName: "jellyfin", + providerId: $0, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + libraryItem: nil + ) + } + ) + } + + func testRemovalMutatesOwnedStateAndPublishes() { + let sut = ExternalImportViewModel(batch: makeBatch(ids: ["a", "b"]), onConfirm: { _ in }) + var published = false + let subscription = sut.objectWillChange.sink { published = true } + + sut.removeResource(withId: "a") + + XCTAssertEqual(sut.resources.map(\.providerId), ["b"]) + XCTAssertTrue(published, "removal must republish — the old mailbox passthrough left the delete button visually dead") + subscription.cancel() + } + + func testConfirmHandsBackTheEditedSelection() { + var confirmed: [SimpleExternalResource]? + let sut = ExternalImportViewModel(batch: makeBatch(ids: ["a", "b"]), onConfirm: { confirmed = $0 }) + + sut.removeResource(withId: "b") + sut.confirm() + + XCTAssertEqual(confirmed?.map(\.providerId), ["a"], "confirm sends the batch as edited, not as staged") + } +} diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift index c21913871..14d10cea5 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -58,3 +58,16 @@ extension SimpleExternalResource { } } + +/// A staged virtual-import selection traveling AS A VALUE from the integration +/// screen that produced it to its confirmation sheet (`.sheet(item:)`), and on +/// confirm to the import bus. Value semantics keep staging owned by whoever is +/// editing it — there is no shared mutable mailbox to fall out of sync with. +public struct ExternalImportBatch: Identifiable { + public let id = UUID() + public var resources: [SimpleExternalResource] + + public init(resources: [SimpleExternalResource]) { + self.resources = resources + } +} diff --git a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift index 6d833ff10..6fd01b7ed 100644 --- a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift +++ b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift @@ -55,12 +55,20 @@ public protocol IntegrationDetailsViewModelProtocol: ObservableObject { var showSubscribeButton: Bool { get } var allowStream: Bool { get } + /// Staged virtual-import selection awaiting user confirmation; drives the + /// confirmation sheet via `.sheet(item:)`. Set by the import pipeline, cleared + /// by the sheet's dismissal. + var pendingImportBatch: ExternalImportBatch? { get set } + func fetchData() func cancelFetchData() func beginDownloadAudiobook(_ item: Item) throws func virtualImportAudiobook(_ item: Item) async func handleImportAudiobook(_ item: Item) async throws + /// Hands the confirmed (possibly edited) selection to the import bus. + func confirmExternalImport(_ resources: [SimpleExternalResource]) + /// Pushes the provider's subscribe screen onto the VM's OWN navigation stack. /// In-stack navigation belongs to the VM (like the library VMs' goToSubscribe); /// only container dismissal stays a presenter closure. From c02460f050db6cbb75e052210a79c6d6b281ccd6 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 4 Sep 2026 10:18:28 -0500 Subject: [PATCH 073/172] refactor: integrations depend on an import-confirmed closure, not ImportManager MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After the ownership refactor, the VMs used ImportManager for exactly one line — the confirm send — yet the protocol forced every conformer to hold the whole app-layer type: tests had to construct real machinery, the persons-list VM carried a dead dependency, and integrations knew a type they had no business knowing. The protocol requirement is deleted; VMs take `let onImportConfirmed: ([SimpleExternalResource]) -> Void`, root views inject `externalOperationPublisher.send` once at the root, and the tab-root structs (including the generic JellyfinEntityTabRoot, which previously pulled the manager off the VM through the protocol) carry the closure instead of the manager. Deliberately constructor-injected rather than an @Entry environment key: CLAUDE.md documents throwaway environment defaults as silent-failure footguns, and a `{ _ in }` default send would be the dead-delete-button class reborn one layer up. ExternalImportConfirmDestinationTests (landing with the following commit's test-file change) pin the destinations: bulk confirm sends then dismisses the browser; details confirm sends and stays for serial importing. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelfRootView.swift | 22 +++++------ .../AudiobookShelfLibraryViewModel.swift | 8 ++-- ...iobookShelfAudiobookDetailsViewModel.swift | 8 ++-- BookPlayer/Jellyfin/JellyfinRootView.swift | 39 ++++++++++--------- .../JellyfinAudiobookDetailsViewModel.swift | 8 ++-- .../GridLayout/JellyfinLibraryGridView.swift | 1 - .../JellyfinLibraryViewModel.swift | 19 ++++----- .../IntegrationLibraryViewModelProtocol.swift | 1 - 8 files changed, 52 insertions(+), 54 deletions(-) diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index be6ab9115..14c4ab7af 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -59,7 +59,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -75,7 +75,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -91,7 +91,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -107,7 +107,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -123,7 +123,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -318,7 +318,7 @@ private struct AudiobookShelfTabRoot: View { let connectionService: AudiobookShelfConnectionService let singleFileDownloadService: SingleFileDownloadService let accountService: AccountService - let importManager: ImportManager + let onImportConfirmed: ([SimpleExternalResource]) -> Void let onDismiss: () -> Void var onSwitchLibrary: (() -> Void)? var dismissAll: DismissAction? @@ -336,7 +336,7 @@ private struct AudiobookShelfTabRoot: View { connectionService: AudiobookShelfConnectionService, singleFileDownloadService: SingleFileDownloadService, accountService: AccountService, - importManager: ImportManager, + onImportConfirmed: @escaping ([SimpleExternalResource]) -> Void, onDismiss: @escaping () -> Void, onSwitchLibrary: (() -> Void)? = nil, dismissAll: DismissAction? = nil @@ -344,7 +344,7 @@ private struct AudiobookShelfTabRoot: View { self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService self.accountService = accountService - self.importManager = importManager + self.onImportConfirmed = onImportConfirmed self.dismissAll = dismissAll self.onDismiss = onDismiss self.onSwitchLibrary = onSwitchLibrary @@ -357,7 +357,7 @@ private struct AudiobookShelfTabRoot: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, navigation: navigation, navigationTitle: libraryTitle ) @@ -377,7 +377,7 @@ private struct AudiobookShelfTabRoot: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, navigation: navigation, navigationTitle: title ) @@ -390,7 +390,7 @@ private struct AudiobookShelfTabRoot: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, navigation: navigation ) } diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 5803c0a4c..ef830a0fe 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -19,7 +19,7 @@ enum AudiobookShelfLayout { @MainActor final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLogger { - var importManager: ImportManager + let onImportConfirmed: ([SimpleExternalResource]) -> Void var accountService: AccountService enum Routes { @@ -130,7 +130,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, connectionService: AudiobookShelfConnectionService, singleFileDownloadService: SingleFileDownloadService, accountService: AccountService, - importManager: ImportManager, + onImportConfirmed: @escaping ([SimpleExternalResource]) -> Void, navigation: BPNavigation, navigationTitle: String ) { @@ -138,7 +138,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService self.accountService = accountService - self.importManager = importManager + self.onImportConfirmed = onImportConfirmed self.navigation = navigation self.navigationTitle = navigationTitle @@ -349,7 +349,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, func confirmExternalImport(_ resources: [SimpleExternalResource]) { // Bulk imports land you in the library (today's destination): send the batch on // the import bus, then close the browser - importManager.externalOperationPublisher.send(resources) + onImportConfirmed(resources) navigation.dismiss?() } diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index dbbb4ca92..1ac814094 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -14,7 +14,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc let item: AudiobookShelfLibraryItem let connectionService: AudiobookShelfConnectionService let accountService: AccountService - let importManager: ImportManager + let onImportConfirmed: ([SimpleExternalResource]) -> Void let navigation: BPNavigation @Published var details: AudiobookShelfAudiobookDetailsData? @Published var error: Error? @@ -29,7 +29,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc func confirmExternalImport(_ resources: [SimpleExternalResource]) { // Details imports keep you in the browser (today's flow — import another book // without re-navigating): send on the import bus, no dismissal - importManager.externalOperationPublisher.send(resources) + onImportConfirmed(resources) } @MainActor @@ -45,14 +45,14 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc connectionService: AudiobookShelfConnectionService, singleFileDownloadService: SingleFileDownloadService, accountService: AccountService, - importManager: ImportManager, + onImportConfirmed: @escaping ([SimpleExternalResource]) -> Void, navigation: BPNavigation ) { self.item = item self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService self.accountService = accountService - self.importManager = importManager + self.onImportConfirmed = onImportConfirmed self.navigation = navigation // Entitlements can change while this screen is on the stack (the Stream CTA diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index d30f6a463..b21e53c34 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -60,6 +60,7 @@ struct JellyfinRootView: View { JellyfinEntityTabRoot( connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, + onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, makeViewModel: { nav in @@ -68,7 +69,6 @@ struct JellyfinRootView: View { parentID: resolvedLibrary?.id, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, accountService: accountService, navigation: nav, navigationTitle: "Authors" @@ -173,7 +173,7 @@ struct JellyfinRootView: View { library: resolvedLibrary, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, accountService: accountService, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, @@ -268,7 +268,7 @@ struct JellyfinRootView: View { struct JellyfinTabRoot: View { let connectionService: JellyfinConnectionService let singleFileDownloadService: SingleFileDownloadService - let importManager: ImportManager + let onImportConfirmed: ([SimpleExternalResource]) -> Void let accountService: AccountService let onDismiss: () -> Void var onSwitchLibrary: (() -> Void)? @@ -285,7 +285,7 @@ struct JellyfinTabRoot: View { library: JellyfinLibraryItem?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager, + onImportConfirmed: @escaping ([SimpleExternalResource]) -> Void, accountService: AccountService, onDismiss: @escaping () -> Void, onSwitchLibrary: (() -> Void)? = nil, @@ -293,7 +293,7 @@ struct JellyfinTabRoot: View { ) { self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService - self.importManager = importManager + self.onImportConfirmed = onImportConfirmed self.accountService = accountService self.onDismiss = onDismiss self.onSwitchLibrary = onSwitchLibrary @@ -306,7 +306,7 @@ struct JellyfinTabRoot: View { folderID: library?.id, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, accountService: accountService, navigation: navigation, navigationTitle: library?.name ?? "" @@ -358,7 +358,7 @@ struct JellyfinTabRoot: View { folderID: nil, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, accountService: accountService, navigation: navigation, navigationTitle: libraryName @@ -370,7 +370,7 @@ struct JellyfinTabRoot: View { folderID: item.id, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, accountService: accountService, navigation: navigation, navigationTitle: item.name @@ -384,7 +384,7 @@ struct JellyfinTabRoot: View { parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, accountService: accountService, navigation: navigation, navigationTitle: authorName @@ -398,7 +398,7 @@ struct JellyfinTabRoot: View { parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, accountService: accountService, navigation: navigation, navigationTitle: personName @@ -412,7 +412,7 @@ struct JellyfinTabRoot: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, navigation: navigation, navigationTitle: item.name ) @@ -482,6 +482,7 @@ struct JellyfinEntityTabRoot: Vi where ViewModel.Item == JellyfinLibraryItem { let connectionService: JellyfinConnectionService let singleFileDownloadService: SingleFileDownloadService + let onImportConfirmed: ([SimpleExternalResource]) -> Void let onDismiss: () -> Void var onSwitchLibrary: (() -> Void)? var dismissAll: DismissAction? @@ -496,6 +497,7 @@ where ViewModel.Item == JellyfinLibraryItem { init( connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, + onImportConfirmed: @escaping ([SimpleExternalResource]) -> Void, onDismiss: @escaping () -> Void, onSwitchLibrary: (() -> Void)? = nil, dismissAll: DismissAction? = nil, @@ -503,6 +505,7 @@ where ViewModel.Item == JellyfinLibraryItem { ) { self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService + self.onImportConfirmed = onImportConfirmed self.onDismiss = onDismiss self.onSwitchLibrary = onSwitchLibrary self.dismissAll = dismissAll @@ -522,7 +525,7 @@ where ViewModel.Item == JellyfinLibraryItem { for: destination, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: viewModel.importManager, + onImportConfirmed: onImportConfirmed, accountService: viewModel.accountService, navigation: navigation, onDismiss: onDismiss @@ -573,7 +576,7 @@ extension JellyfinTabRoot { for destination: JellyfinLibraryLevelData, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager, + onImportConfirmed: @escaping ([SimpleExternalResource]) -> Void, accountService: AccountService, navigation: BPNavigation, onDismiss: @escaping () -> Void @@ -585,7 +588,7 @@ extension JellyfinTabRoot { folderID: nil, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, accountService: accountService, navigation: navigation, navigationTitle: libraryName @@ -597,7 +600,7 @@ extension JellyfinTabRoot { folderID: item.id, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, accountService: accountService, navigation: navigation, navigationTitle: item.name @@ -611,7 +614,7 @@ extension JellyfinTabRoot { parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, accountService: accountService, navigation: navigation, navigationTitle: authorName @@ -625,7 +628,7 @@ extension JellyfinTabRoot { parentID: parentID, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, accountService: accountService, navigation: navigation, navigationTitle: personName @@ -639,7 +642,7 @@ extension JellyfinTabRoot { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - importManager: importManager, + onImportConfirmed: onImportConfirmed, navigation: navigation, navigationTitle: item.name ) diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 767f335b8..cbf9f4aef 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -18,7 +18,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { let item: JellyfinLibraryItem let connectionService: JellyfinConnectionService let accountService: AccountService - let importManager: ImportManager + let onImportConfirmed: ([SimpleExternalResource]) -> Void let navigation: BPNavigation let navigationTitle: String @Published var details: JellyfinAudiobookDetailsData? @@ -34,7 +34,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { func confirmExternalImport(_ resources: [SimpleExternalResource]) { // Details imports keep you in the browser (today's flow — import another book // without re-navigating): send on the import bus, no dismissal - importManager.externalOperationPublisher.send(resources) + onImportConfirmed(resources) } @MainActor @@ -50,7 +50,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, accountService: AccountService, - importManager: ImportManager, + onImportConfirmed: @escaping ([SimpleExternalResource]) -> Void, navigation: BPNavigation, navigationTitle: String ) { @@ -58,7 +58,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService self.accountService = accountService - self.importManager = importManager + self.onImportConfirmed = onImportConfirmed self.navigation = navigation self.navigationTitle = navigationTitle self.details = nil diff --git a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift index 15a4e4a6b..39f96dee0 100644 --- a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift +++ b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift @@ -70,7 +70,6 @@ final class MockJellyfinLibraryViewModel: JellyfinLibraryViewModelProtocol, Obse var navigation = BPNavigation() var connectionService = JellyfinConnectionService() var accountService = AccountService() - var importManager = ImportManager(libraryService: LibraryService()) let data: JellyfinLibraryLevelData diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index 52d5d6c4f..fc6101e4a 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -71,7 +71,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog let folderID: String? let recursive: Bool - var importManager: ImportManager + let onImportConfirmed: ([SimpleExternalResource]) -> Void let connectionService: JellyfinConnectionService var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService @@ -93,7 +93,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog recursive: Bool = false, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager, + onImportConfirmed: @escaping ([SimpleExternalResource]) -> Void, accountService: AccountService, navigation: BPNavigation, navigationTitle: String @@ -101,7 +101,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog self.folderID = folderID self.recursive = recursive self.connectionService = connectionService - self.importManager = importManager + self.onImportConfirmed = onImportConfirmed self.singleFileDownloadService = singleFileDownloadService self.accountService = accountService self.navigation = navigation @@ -441,7 +441,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog func confirmExternalImport(_ resources: [SimpleExternalResource]) { // Bulk imports land you in the library (today's destination): send the batch on // the import bus, then close the browser - importManager.externalOperationPublisher.send(resources) + onImportConfirmed(resources) navigation.dismiss?() } } @@ -477,7 +477,7 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B var isSearchable: Bool { true } - var importManager: ImportManager + let onImportConfirmed: ([SimpleExternalResource]) -> Void let connectionService: JellyfinConnectionService var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService @@ -491,7 +491,7 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager, + onImportConfirmed: @escaping ([SimpleExternalResource]) -> Void, accountService: AccountService, navigation: BPNavigation, navigationTitle: String @@ -501,7 +501,7 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B self.parentID = parentID self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService - self.importManager = importManager + self.onImportConfirmed = onImportConfirmed self.accountService = accountService self.navigation = navigation self.navigationTitle = navigationTitle @@ -694,7 +694,7 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B func confirmExternalImport(_ resources: [SimpleExternalResource]) { // Bulk imports land you in the library (today's destination): send the batch on // the import bus, then close the browser - importManager.externalOperationPublisher.send(resources) + onImportConfirmed(resources) navigation.dismiss?() } } @@ -728,7 +728,6 @@ final class JellyfinPersonsListViewModel: IntegrationLibraryViewModelProtocol, B var isSearchable: Bool { true } let connectionService: JellyfinConnectionService - var importManager: ImportManager var accountService: AccountService private let singleFileDownloadService: SingleFileDownloadService private var fetchTask: Task<(), any Error>? @@ -740,7 +739,6 @@ final class JellyfinPersonsListViewModel: IntegrationLibraryViewModelProtocol, B parentID: String?, connectionService: JellyfinConnectionService, singleFileDownloadService: SingleFileDownloadService, - importManager: ImportManager, accountService: AccountService, navigation: BPNavigation, navigationTitle: String @@ -749,7 +747,6 @@ final class JellyfinPersonsListViewModel: IntegrationLibraryViewModelProtocol, B self.parentID = parentID self.connectionService = connectionService self.singleFileDownloadService = singleFileDownloadService - self.importManager = importManager self.accountService = accountService self.navigation = navigation self.navigationTitle = navigationTitle diff --git a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift index 10feb73cc..90d0b0504 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift +++ b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift @@ -33,7 +33,6 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { var showingDownloadConfirmation: Bool { get set } var useSelectedItems: Bool { get set } - var importManager: ImportManager { get set } var accountService: AccountService { get set } var searchQuery: String { get set } From dcbaeda45057350efce64f22154b191d12f2934e Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 4 Sep 2026 10:18:28 -0500 Subject: [PATCH 074/172] fix: decode ABS audio files by their real shape; strip the dot-prefixed ext MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The library-item AudioFile decoder expected top-level filename/ext, but AudiobookShelf nests them under `metadata` (AudioFile.toJSON in the server source) — so batch/get hydration threw on every real expanded payload, erroring EVERY ABS virtual import, bulk and details alike. The wrong shape was dormant before batch/get existed: minified list payloads omit audioFiles entirely, and the details screen uses the separate, correctly-nested decoder. ABS's `ext` also arrives dot-prefixed (".m4b" — server FileMetadata semantics, cf. its `metadata.ext === '.opf'` checks), so `normalizedExtension` strips it; otherwise every ABS import is named "Title..m4b". Empty ext maps to nil, preserving the pipeline's no-extension-means-not-importable skip contract. Found by the Android-side agent reading this branch. Pinned with a raw JSON fixture regression test: builder-based tests cannot catch wire-shape drift. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayerTests/ImportOperationTests.swift | 102 ++++++++++++++++++ .../AudiobookShelfLibraryItem.swift | 25 ++++- 2 files changed, 124 insertions(+), 3 deletions(-) diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 8520664b1..068a1e052 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -232,3 +232,105 @@ final class ExternalImportViewModelTests: XCTestCase { XCTAssertEqual(confirmed?.map(\.providerId), ["a"], "confirm sends the batch as edited, not as staged") } } + +// MARK: - Confirm destinations (bulk vs details) + +@MainActor +final class ExternalImportConfirmDestinationTests: XCTestCase { + private func makeResources() -> [SimpleExternalResource] { + [SimpleExternalResource( + providerName: "jellyfin", + providerId: "confirm-1", + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + libraryItem: nil + )] + } + + func testBulkConfirmSendsBatchThenDismissesBrowser() { + var sent: [SimpleExternalResource]? + var dismissed = false + let navigation = BPNavigation() + navigation.dismiss = { dismissed = true } + + let sut = JellyfinLibraryViewModel( + folderID: "folder-1", + connectionService: JellyfinConnectionService(), + singleFileDownloadService: SingleFileDownloadService(networkClient: NetworkClient()), + onImportConfirmed: { sent = $0 }, + accountService: AccountService(), + navigation: navigation, + navigationTitle: "Library" + ) + + sut.confirmExternalImport(makeResources()) + + XCTAssertEqual(sent?.map(\.providerId), ["confirm-1"]) + XCTAssertTrue(dismissed, "bulk confirm closes the browser — the batch lands in the library") + } + + func testDetailsConfirmSendsWithoutDismissing() { + var sent: [SimpleExternalResource]? + var dismissed = false + let navigation = BPNavigation() + navigation.dismiss = { dismissed = true } + + let sut = JellyfinAudiobookDetailsViewModel( + item: JellyfinLibraryItem(id: "item-1", name: "Book", kind: .audiobook), + connectionService: JellyfinConnectionService(), + singleFileDownloadService: SingleFileDownloadService(networkClient: NetworkClient()), + accountService: AccountService(), + onImportConfirmed: { sent = $0 }, + navigation: navigation, + navigationTitle: "Book" + ) + + sut.confirmExternalImport(makeResources()) + + XCTAssertEqual(sent?.map(\.providerId), ["confirm-1"]) + XCTAssertFalse(dismissed, "details confirm keeps you in the browser for serial importing") + } +} + +// MARK: - AudiobookShelf payload decoding + +@MainActor +final class AudiobookShelfDecodingTests: XCTestCase { + /// Real-shaped expanded payload: the server's AudioFile.toJSON nests filename/ext + /// under `metadata`, and `ext` arrives dot-prefixed (".m4b"). Pinned as a JSON + /// fixture because the previous decoder expected top-level fields — it could never + /// decode a live server response, and builder-based tests couldn't catch that. + func testBatchGetPayloadDecodesNestedAudioFileMetadataAndStripsDot() throws { + let json = Data(""" + { + "libraryItems": [ + { + "id": "li_1", + "libraryId": "lib_1", + "mediaType": "book", + "media": { + "metadata": { "title": "Real Book" }, + "audioFiles": [ + { + "index": 1, + "ino": "123", + "metadata": { + "filename": "Real Book.m4b", + "ext": ".m4b", + "path": "/audiobooks/Real Book.m4b" + }, + "addedAt": 1 + } + ] + } + } + ] + } + """.utf8) + + let decoded = try JSONDecoder().decode(AudiobookShelfBatchItemsResponse.self, from: json) + let items = (decoded.libraryItems ?? []).compactMap { AudiobookShelfLibraryItem(apiItem: $0) } + + XCTAssertEqual(items.first?.fileExtension, "m4b", "nested metadata decodes; leading dot is stripped") + } +} diff --git a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift index 64c097a38..d68405100 100644 --- a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift @@ -221,7 +221,7 @@ extension AudiobookShelfLibraryItem { size: apiItem.size, series: apiItem.media.metadata.series, addedAt: apiItem.addedAt, - fileExtension: apiItem.media.audioFiles?.first?.ext ?? nil, + fileExtension: apiItem.media.audioFiles?.first?.normalizedExtension, updatedAt: apiItem.updatedAt, coverPath: apiItem.media.coverPath, progress: apiItem.userMediaProgress?.progress, @@ -313,8 +313,16 @@ public struct AudiobookShelfAPIItem: Codable { } public struct AudioFile: Codable { - let filename: String - let ext: String + // ABS nests file fields under metadata (AudioFile.toJSON in the server: + // { index, ino, metadata: { filename, ext, path, ... }, ... }) — a top-level + // filename/ext shape can never decode a real expanded payload. + public let metadata: FileMetadata + + public struct FileMetadata: Codable { + public let filename: String + /// Dot-prefixed on the wire (".m4b") — normalize via `normalizedExtension`. + public let ext: String + } } } @@ -428,3 +436,14 @@ extension AudiobookShelfLibraryItem { ) } } + +extension AudiobookShelfAPIItem.Media.AudioFile { + /// ABS's `metadata.ext` is dot-prefixed (".m4b", server FileMetadata semantics); + /// BookPlayer composes filenames as "title.ext", so the dot must be stripped or + /// every ABS virtual import is named "Title..m4b". Empty ext maps to nil so the + /// import pipeline's skip contract (no extension = not importable) still holds. + public var normalizedExtension: String? { + let trimmed = metadata.ext.hasPrefix(".") ? String(metadata.ext.dropFirst()) : metadata.ext + return trimmed.isEmpty ? nil : trimmed + } +} From b43ec7587d5b7a98dba9d1dab1506b46f2c311d8 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 4 Sep 2026 12:14:07 -0500 Subject: [PATCH 075/172] refactor: external-import bus moves off ImportManager onto its own object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After the pipeline extraction, ImportManager's only external artifact was the publisher, kept there as the "arrivals hub" — but that address carried a head-rule ("may hold the wire, never state again") that only survives while people remember it. ExternalImportBus is now a dedicated stateless wire — created by MainCoordinator alongside importManager and injected via .environmentObject — and ImportManager is purely the file-import manager again, with zero external-import members. environmentObject over an @Entry key is deliberate: env-object injection has no default, so a missed injection crashes at first read, whereas an @Entry throwaway default would silently split producers and consumer onto different subjects — the repo's documented environment-default footgun. The bus conforms to ObservableObject solely to ride that loud-injection contract; it publishes nothing. CLAUDE.md's DI ground truth is updated in the same commit, per its own mandate. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelf/AudiobookShelfRootView.swift | 12 ++++++------ BookPlayer/Coordinators/MainCoordinator.swift | 3 +++ .../ExternalSource/ExternalImportViewModel.swift | 16 ++++++++++++++++ BookPlayer/Import/ImportManager.swift | 5 ----- BookPlayer/Jellyfin/JellyfinRootView.swift | 6 +++--- .../Library/ItemList/LibraryRootView.swift | 3 ++- CLAUDE.md | 5 ++++- 7 files changed, 34 insertions(+), 16 deletions(-) diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index 14c4ab7af..4a667d7ff 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -23,7 +23,7 @@ struct AudiobookShelfRootView: View { } @EnvironmentObject private var singleFileDownloadService: SingleFileDownloadService - @EnvironmentObject private var importManager: ImportManager + @EnvironmentObject private var externalImportBus: ExternalImportBus @EnvironmentObject private var theme: ThemeViewModel @Environment(\.dismiss) var dismiss @@ -59,7 +59,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, + onImportConfirmed: { externalImportBus.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -75,7 +75,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, + onImportConfirmed: { externalImportBus.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -91,7 +91,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, + onImportConfirmed: { externalImportBus.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -107,7 +107,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, + onImportConfirmed: { externalImportBus.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -123,7 +123,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, + onImportConfirmed: { externalImportBus.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index 7152efdec..80b272711 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -18,6 +18,7 @@ class MainCoordinator: NSObject { var mainController: UIViewController? let importManager: ImportManager + let externalImportBus: ExternalImportBus let playerManager: PlayerManager let playerLoaderService: PlayerLoaderService let singleFileDownloadService: SingleFileDownloadService @@ -48,6 +49,7 @@ class MainCoordinator: NSObject { self.navigationController = navigationController self.libraryService = coreServices.libraryService self.importManager = ImportManager(libraryService: coreServices.libraryService) + self.externalImportBus = ExternalImportBus() self.accountService = coreServices.accountService self.syncService = coreServices.syncService self.playbackService = coreServices.playbackService @@ -98,6 +100,7 @@ class MainCoordinator: NSObject { } .environmentObject(singleFileDownloadService) .environmentObject(importManager) + .environmentObject(externalImportBus) .environmentObject(playerManager) .environmentObject(listSyncRefreshService) .environment(\.libraryService, libraryService) diff --git a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift index 0f968ee47..29f8bc0b0 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift @@ -5,10 +5,26 @@ // Created by Pedro Iñiguez on 17/3/26. // Copyright © 2026 BookPlayer LLC. All rights reserved. // +import Combine import Foundation import SwiftUI import BookPlayerKit +/// The external-import bus: integration screens send their CONFIRMED virtual-import +/// batches, LibraryRootView consumes and inserts. It carries no state — a +/// PassthroughSubject is a wire, not a store — and conforms to ObservableObject +/// solely to ride `.environmentObject`'s LOUD injection contract: a missed +/// injection crashes at first read, instead of an @Entry throwaway default +/// silently splitting producers and consumer onto different subjects. +@MainActor +final class ExternalImportBus: ObservableObject { + let confirmedBatches = PassthroughSubject<[SimpleExternalResource], Never>() + + func send(_ resources: [SimpleExternalResource]) { + confirmedBatches.send(resources) + } +} + @MainActor final class ExternalImportViewModel: ObservableObject { /// OWNED value state, seeded from the producer's staged batch: removals republish diff --git a/BookPlayer/Import/ImportManager.swift b/BookPlayer/Import/ImportManager.swift index 1353b2e42..444f7b88d 100644 --- a/BookPlayer/Import/ImportManager.swift +++ b/BookPlayer/Import/ImportManager.swift @@ -24,11 +24,6 @@ final class ImportManager: ObservableObject { private var files = CurrentValueSubject, Never>(Set()) public var operationPublisher = PassthroughSubject() - /// The external-import bus: integration screens send their CONFIRMED virtual-import - /// batches here; LibraryRootView consumes and inserts. Staging + confirmation live - /// with the integrations (value-typed ExternalImportBatch on each VM) — ImportManager - /// deliberately holds no external staging state. - public var externalOperationPublisher = PassthroughSubject<[SimpleExternalResource], Never>() init(libraryService: LibraryServiceProtocol) { diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index b21e53c34..7f6f5468a 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -23,7 +23,7 @@ struct JellyfinRootView: View { } @EnvironmentObject private var singleFileDownloadService: SingleFileDownloadService - @EnvironmentObject private var importManager: ImportManager + @EnvironmentObject private var externalImportBus: ExternalImportBus @EnvironmentObject private var theme: ThemeViewModel @Environment(\.dismiss) var dismiss @@ -60,7 +60,7 @@ struct JellyfinRootView: View { JellyfinEntityTabRoot( connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, + onImportConfirmed: { externalImportBus.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, makeViewModel: { nav in @@ -173,7 +173,7 @@ struct JellyfinRootView: View { library: resolvedLibrary, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - onImportConfirmed: { importManager.externalOperationPublisher.send($0) }, + onImportConfirmed: { externalImportBus.send($0) }, accountService: accountService, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index 79dcaa937..55bf8acdc 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -36,6 +36,7 @@ struct LibraryRootView: View { @EnvironmentObject private var playerManager: PlayerManager @EnvironmentObject private var importManager: ImportManager + @EnvironmentObject private var externalImportBus: ExternalImportBus @EnvironmentObject private var singleFileDownloadService: SingleFileDownloadService @EnvironmentObject private var listSyncRefreshService: ListSyncRefreshService @@ -127,7 +128,7 @@ struct LibraryRootView: View { importManager.start(operation) } - .onReceive(importManager.externalOperationPublisher) { externalResources in + .onReceive(externalImportBus.confirmedBatches) { externalResources in Task { self.handleOperationCompletion(.external(files: externalResources), suggestedFolderName: nil) } diff --git a/CLAUDE.md b/CLAUDE.md index da7d78721..5f84fea27 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -136,7 +136,10 @@ first. Reordering boot risks a launch crash. coordinator-scoped services (`ImportManager`, `ListSyncRefreshService`, `SingleFileDownloadService`, `JellyfinConnectionService`, `AudiobookShelfConnectionService`). - **Services → SwiftUI:** `ObservableObject`s (`playerManager`, `importManager`, `singleFileDownloadService`, - `listSyncRefreshService`) via `.environmentObject`; the rest via `.environment(\.key, …)`. The environment keys + `listSyncRefreshService`, `externalImportBus`) via `.environmentObject`; the rest via `.environment(\.key, …)`. + `ExternalImportBus` is a stateless wire (integrations send confirmed virtual-import batches; `LibraryRootView` + consumes and inserts) that conforms to `ObservableObject` solely for the loud-injection contract — `ImportManager` + itself carries no external-import state or publishers. The environment keys live in `BookPlayer/Utils/Extensions/Environment+BookPlayer.swift` (`@Entry`). **Each `@Entry` default is a throwaway placeholder (an un-`setup()` service).** A view that reads the environment default instead of the injected instance silently gets a non-functional service — verify real injection by `MainCoordinator`. From bc2a452160781bf1bc08b50ba06d5bb8598111d1 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 4 Sep 2026 14:25:14 -0500 Subject: [PATCH 076/172] fix: drop MainView's dead importManager; theme the provider-row separator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MainView's importManager @EnvironmentObject became unreferenced once the external-import sheet moved to the integration screens and the bus took the publisher — reviewer grep-confirmed dead. The external-resource row's bullet separator used hardcoded .gray and .font(.caption) while every sibling Text uses theme.secondaryColor + bpFont(.caption). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Library/ItemList/Views/BookView.swift | 4 ++-- BookPlayer/MainView.swift | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index 87db9f7a8..fde943d37 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -74,8 +74,8 @@ struct BookView: View { .bpFont(.caption) } Text("•") - .foregroundColor(.gray) - .font(.caption) + .foregroundStyle(theme.secondaryColor) + .bpFont(.caption) } } } diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index 05cc96ea6..44644163a 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -28,7 +28,6 @@ struct MainView: View { @EnvironmentObject private var listSyncRefreshService: ListSyncRefreshService @EnvironmentObject private var playerManager: PlayerManager - @EnvironmentObject private var importManager: ImportManager var body: some View { TabView { From f68b7a642f1efc19a177db39f8edcc288c655b83 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 4 Sep 2026 19:14:21 -0500 Subject: [PATCH 077/172] refactor: ConcurrenceService owns its access-policy refresh (SyncService norm) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The per-job policy was pushed in from outside — a MainCoordinator .accountUpdate sink on iOS, manual forwarding in the watch's CoreServices, and a hand-rolled entitlement parse in the watch's RevenueCat delegate (which also read entitlements["plus"] inconsistently vs .all) — because setup took a one-shot AccessLevel snapshot the service could never re-derive. The service now takes a getAccessLevel closure (one read — the same dependency narrowing as the import bus; no AccountServiceProtocol mock exists anyway), self-subscribes via bindAccountObserver exactly like SyncService ("sync ownership lives here, not in the views"), and applies the initial level at the same policy-BEFORE-workers point. All three external wirings are deleted; the watch RC delegate now routes through accountService.updateAccount(from:) like iOS's delegate, so .accountUpdate posts on every entitlement path on both platforms. updateConcurrentService drops from the protocol and goes internal. testAccessPolicyRefreshesOnAccountUpdate pins the mid-session upgrade; two preview fixtures updated. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Coordinators/MainCoordinator.swift | 12 -------- .../Library/ItemList/Views/BookView.swift | 2 +- .../Profile/ProfileSyncTasksSectionView.swift | 2 +- BookPlayer/Utils/AppServices.swift | 6 ++-- .../Services/ConcurrentSyncTests.swift | 30 +++++++++++++++++++ BookPlayerWatch/CoreServices.swift | 8 ++--- BookPlayerWatch/ExtensionDelegate.swift | 17 ++++------- .../ConcurrentSync/ConcurrenceService.swift | 30 +++++++++++++++---- 8 files changed, 69 insertions(+), 38 deletions(-) diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index 80b272711..f6b76be8b 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -171,18 +171,6 @@ class MainCoordinator: NSObject { self?.playerState.loadedBookRelativePath = item?.relativePath } .store(in: &disposeBag) - - // Keep the queue's per-job access policy current with the subscription: RevenueCat - // updates post .accountUpdate, and without this a mid-session upgrade leaves the - // launch-time policy (e.g. file uploads still gated off) until the next app start. - // The watch already does the equivalent in ExtensionDelegate. - NotificationCenter.default.publisher(for: .accountUpdate) - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in - guard let self else { return } - self.concurrenceService.updateConcurrentService(self.accountService.getAccessLevel()) - } - .store(in: &disposeBag) } func loadPlayer(_ relativePath: String, autoplay: Bool, showPlayer: Bool) { diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index fde943d37..cedfec923 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -116,7 +116,7 @@ struct BookView: View { let concurrenceService = ConcurrenceService() concurrenceService.setup( libraryService: libraryService, - accessLevel: accountService.accessLevel, + getAccessLevel: { accountService.getAccessLevel() }, tasksDataManager: tasksDataManager, networkClient: NetworkClient(), dataManager: dataManager diff --git a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift index 0635067e4..a394a2e0f 100644 --- a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift @@ -109,7 +109,7 @@ struct ProfileSyncTasksSectionView: View { let concurrenceService = ConcurrenceService() concurrenceService.setup( libraryService: libraryService, - accessLevel: accountService.accessLevel, + getAccessLevel: { accountService.getAccessLevel() }, tasksDataManager: tasksDataManager, networkClient: NetworkClient(), dataManager: dataManager diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index b9203d80c..584e8a12a 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -80,7 +80,7 @@ final class AppServices: BPLogger { let tasksDataManager = TasksDataManager() let concurrenceService = makeConcurrenceService( libraryService: libraryService, - accessLevel: accountService.accessLevel, + getAccessLevel: { accountService.getAccessLevel() }, tasksDataManager: tasksDataManager, dataManager: dataManager ) @@ -248,14 +248,14 @@ final class AppServices: BPLogger { private func makeConcurrenceService( libraryService: LibraryService, - accessLevel: AccessLevel, + getAccessLevel: @escaping () -> AccessLevel, tasksDataManager: TasksDataManager, dataManager: DataManager ) -> ConcurrenceService { let service = ConcurrenceService() service.setup( libraryService: libraryService, - accessLevel: accessLevel, + getAccessLevel: getAccessLevel, tasksDataManager: tasksDataManager, networkClient: NetworkClient(), dataManager: dataManager diff --git a/BookPlayerTests/Services/ConcurrentSyncTests.swift b/BookPlayerTests/Services/ConcurrentSyncTests.swift index 33a25c77a..ae272f206 100644 --- a/BookPlayerTests/Services/ConcurrentSyncTests.swift +++ b/BookPlayerTests/Services/ConcurrentSyncTests.swift @@ -258,3 +258,33 @@ final class ConcurrentSyncTests: XCTestCase { XCTFail("timed out waiting for \(count) task(s)") } } + +// MARK: - Policy ownership (self-refresh on account updates) + +extension ConcurrentSyncTests { + /// The mid-session-upgrade pin: the service re-derives its per-job policy from + /// .accountUpdate on its own — no coordinator wiring. Before this, an upgrade left + /// file uploads gated off until the next app start unless every platform remembered + /// to forward the new level manually. + @MainActor + func testAccessPolicyRefreshesOnAccountUpdate() { + let service = ConcurrenceService(maxConcurrentTasks: 1) + var level = AccessLevel.free + service.getAccessLevel = { level } + service.bindAccountObserver() + service.updateConcurrentService(level) + XCTAssertEqual(service.accessPolicy[.uploadFile], false) + + level = .pro + NotificationCenter.default.post(name: .accountUpdate, object: nil) + + // The sink hops through DispatchQueue.main; one enqueued block after the post + // is guaranteed to run after the delivery. + let refreshed = expectation(description: "policy refreshed") + DispatchQueue.main.async { refreshed.fulfill() } + wait(for: [refreshed], timeout: 1) + + XCTAssertEqual(service.accessPolicy[.uploadFile], true, "mid-session upgrade must reach the policy") + XCTAssertEqual(service.accessPolicy[.externalUpdate], true) + } +} diff --git a/BookPlayerWatch/CoreServices.swift b/BookPlayerWatch/CoreServices.swift index 9e93dbfa9..faec7d64a 100644 --- a/BookPlayerWatch/CoreServices.swift +++ b/BookPlayerWatch/CoreServices.swift @@ -53,15 +53,13 @@ class CoreServices: ObservableObject { func checkAndReloadIfSyncIsEnabled() { self.hasSyncEnabled = accountService.hasSyncEnabled() - self.updateConcurrentService(accountService.getAccessLevel()) + // ConcurrenceService re-derives its own policy from .accountUpdate (posted by the + // Shared AccountService update this flow just ran) — no manual forwarding needed. } func updateSyncEnabled(_ enabled: Bool) { hasSyncEnabled = enabled syncService.updateSyncEnabled(enabled) } - - func updateConcurrentService(_ accessLevel: AccessLevel) { - concurrenceService.updateConcurrentService(accessLevel) - } + } diff --git a/BookPlayerWatch/ExtensionDelegate.swift b/BookPlayerWatch/ExtensionDelegate.swift index 054d9c45c..d28d9d2e9 100644 --- a/BookPlayerWatch/ExtensionDelegate.swift +++ b/BookPlayerWatch/ExtensionDelegate.swift @@ -75,7 +75,7 @@ class ExtensionDelegate: NSObject, WKApplicationDelegate, ObservableObject { let concurrenceService = ConcurrenceService() concurrenceService.setup( libraryService: libraryService, - accessLevel: accountService.accessLevel, + getAccessLevel: { accountService.getAccessLevel() }, tasksDataManager: tasksDataManager, networkClient: NetworkClient(), dataManager: dataManager @@ -316,15 +316,10 @@ extension ExtensionDelegate: PurchasesDelegate { let enableSync = customerInfo.entitlements.all["pro"]?.isActive == true || customerInfo.entitlements.all["lite"]?.isActive == true coreServices?.updateSyncEnabled(enableSync) - - let accessLevel: AccessLevel = customerInfo.entitlements.all["pro"]?.isActive == true - ? .pro - : customerInfo.entitlements.all["lite"]?.isActive == true - ? .lite - : customerInfo.entitlements["plus"]?.isActive == true - ? .plus - : .free - - coreServices?.updateConcurrentService(accessLevel) + + // Same route as iOS's MainCoordinator delegate: AccountService derives the level + // and posts .accountUpdate, which ConcurrenceService (and SyncService) observe — + // this replaced a hand-rolled entitlement parse forwarded manually to the queue. + coreServices?.accountService.updateAccount(from: customerInfo) } } diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index f3a608db9..9c10dc6dd 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -23,7 +23,7 @@ public protocol ConcurrenceServiceProtocol { func setup( libraryService: LibrarySyncProtocol, - accessLevel: AccessLevel, + getAccessLevel: @escaping () -> AccessLevel, tasksDataManager: TasksDataManager, networkClient: NetworkClientProtocol, dataManager: DataManager @@ -43,7 +43,6 @@ public protocol ConcurrenceServiceProtocol { func scheduleFileUpload(params: [String: Any]) - func updateConcurrentService(_ accessLevel: AccessLevel) /// Cancels in-flight BookPlayer-server operations (serial sync + S3 uploads) on a /// subscription lapse, leaving the tier-independent externalUpdate operations running. @@ -101,27 +100,48 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { deinit { listeningTask?.cancel() } + /// The service's ONLY account dependency — one read, so a closure instead of the + /// whole AccountServiceProtocol (same narrowing as the import bus). Internal for + /// @testable injection. + var getAccessLevel: (() -> AccessLevel)! + public func setup( libraryService: LibrarySyncProtocol, - accessLevel: AccessLevel, + getAccessLevel: @escaping () -> AccessLevel, tasksDataManager: TasksDataManager, networkClient: NetworkClientProtocol, dataManager: DataManager ) { self.libraryService = libraryService + self.getAccessLevel = getAccessLevel self.networkClient = networkClient self.dataManager = dataManager self.taskContainer = ConcurrentTasksRepository(tasksDataManager: tasksDataManager) self.tasksCountService = ConcurrentTasksCountService(tasksDataManager: tasksDataManager) startListeningForNewTasks() bindObservers() + bindAccountObserver() // Policy BEFORE workers: createOperation consults accessPolicy to decide whether a // persisted upload may run — waking workers first only worked because wakeUpWorkers // happens to suspend on the repository actor before any pop - updateConcurrentService(accessLevel) + updateConcurrentService(getAccessLevel()) wakeUpWorkers() } + /// Ownership norm (same as SyncService): the service re-derives its own per-job + /// policy on account changes — no per-platform coordinator wiring to forget. + /// RevenueCat updates post .accountUpdate; without this, a mid-session upgrade left + /// the launch-time policy (file uploads still gated off) until the next app start. + func bindAccountObserver() { + NotificationCenter.default.publisher(for: .accountUpdate, object: nil) + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self else { return } + self.updateConcurrentService(self.getAccessLevel()) + } + .store(in: &disposeBag) + } + func bindObservers() { NotificationCenter.default.publisher(for: .logout, object: nil) .sink(receiveValue: { [weak self] _ in @@ -474,7 +494,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { } } - public func updateConcurrentService(_ accessLevel: AccessLevel) { + func updateConcurrentService(_ accessLevel: AccessLevel) { switch accessLevel { case .lite: accessPolicy = [ From 87bd0328e1c30188cac3306895743e7a7846cef2 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 5 Sep 2026 09:05:20 -0500 Subject: [PATCH 078/172] docs: correct the @Entry-placeholder failure-mode claim in CLAUDE.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The DI section claimed a view reading an environment default "silently gets a non-functional service." That is only true for stored-property reads: methods touching un-setup() dependencies trap on their IUOs, and they do so uniformly (SyncService.observeTasksCount and ConcurrenceService.observeConcurrentTasksCount are identical in this). The inaccurate sentence misled the automated reviewer into flagging the new concurrenceService entry as deviating from a softness contract that never existed — exactly the "stale claim becomes a bad review" failure this file warns about. Also documents the real preview pattern: construct + setup() + inject explicitly, never rely on defaults. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- CLAUDE.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 5f84fea27..174b27376 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -142,7 +142,11 @@ first. Reordering boot risks a launch crash. itself carries no external-import state or publishers. The environment keys live in `BookPlayer/Utils/Extensions/Environment+BookPlayer.swift` (`@Entry`). **Each `@Entry` default is a throwaway placeholder (an un-`setup()` service).** A view that reads the environment default instead of the - injected instance silently gets a non-functional service — verify real injection by `MainCoordinator`. + injected instance gets a non-functional service: stored-property reads return inert defaults, but METHODS that + touch un-`setup()` dependencies trap on their implicitly-unwrapped optionals (`SyncService.observeTasksCount`, + `ConcurrenceService.observeConcurrentTasksCount`, and siblings all behave this way — it is the pattern, not a + defect). Verify real injection by `MainCoordinator`; previews that exercise such views must construct and + inject set-up services (see `ProfileSyncTasksSectionView`'s preview), never rely on the defaults. - **App Intents DI:** only `playerLoaderService` and `libraryService` are registered via `AppDependencyManager.shared.add(...)` in `setupCoreServices()`. The **extension** targets consume them with `@Dependency` (under `#if !MAIN_APP`); the **main app** instead resolves via From a8f372779f9ba781336cffa21b1727f35b227eb8 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 5 Sep 2026 09:35:56 -0500 Subject: [PATCH 079/172] =?UTF-8?q?fix:=20HardcoverService's=20syncService?= =?UTF-8?q?=20is=20never=20nil=20=E2=80=94=20stop=20holding=20it=20optiona?= =?UTF-8?q?lly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The setup parameter carried an unjustified "= nil" convenience default: no test uses it (no HardcoverService tests exist), and the only production caller (AppServices.makeHardcoverService) always injects the real instance. The three optional-chained schedule calls (external-resource upload/deletion, artwork upload) are the sync-up for Hardcover-driven changes, so a nil dependency would have SILENTLY skipped scheduling — local changes other devices never hear about, the same silent-failure class as the import-sheet dead button. Now an IUO like its sibling libraryService, per the two-step init()+setup() DI shape; SyncServiceProtocolMock exists for future tests. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Hardcover/Network/HardcoverService.swift | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/BookPlayer/Hardcover/Network/HardcoverService.swift b/BookPlayer/Hardcover/Network/HardcoverService.swift index e29af6213..3fd0ef5d1 100644 --- a/BookPlayer/Hardcover/Network/HardcoverService.swift +++ b/BookPlayer/Hardcover/Network/HardcoverService.swift @@ -55,7 +55,11 @@ final class HardcoverService: BPLogger, HardcoverServiceProtocol { private let graphQL = GraphQLClient(baseURL: "https://api.hardcover.app/v1/graphql") private var audioMetadataService: AudioMetadataServiceProtocol! private var libraryService: LibraryServiceProtocol! - private var syncService: SyncServiceProtocol? + /// IUO like its siblings (two-step init()+setup() DI): always injected by + /// AppServices in production. Deliberately NOT optional — the schedule calls below + /// are the sync-up for Hardcover-driven changes, and optional chaining would turn a + /// missed injection into silently un-synced changes instead of a loud failure. + private var syncService: SyncServiceProtocol! private var metadataSubscription: AnyCancellable? private var progressSubscription: AnyCancellable? @@ -77,7 +81,7 @@ final class HardcoverService: BPLogger, HardcoverServiceProtocol { func setup( libraryService: LibraryServiceProtocol, - syncService: SyncServiceProtocol? = nil, + syncService: SyncServiceProtocol, keychain: KeychainServiceProtocol = KeychainService(), audioMetadataService: AudioMetadataServiceProtocol = AudioMetadataService() ) { @@ -453,7 +457,7 @@ extension HardcoverService { ) else { return } - syncService?.scheduleExternalResourceUpload( + syncService.scheduleExternalResourceUpload( syncable, relativePath: item.relativePath, uuid: item.uuid @@ -471,7 +475,7 @@ extension HardcoverService { ) else { return } - syncService?.scheduleExternalResourceDeletion( + syncService.scheduleExternalResourceDeletion( providerName: providerName, providerId: providerId, relativePath: item.relativePath, @@ -495,7 +499,7 @@ extension HardcoverService { do { let (data, _) = try await URLSession.shared.data(from: artworkURL) await ArtworkService.storeInCache(data, for: item.relativePath) - syncService?.scheduleUploadArtwork(relativePath: item.relativePath, uuid: item.uuid) + syncService.scheduleUploadArtwork(relativePath: item.relativePath, uuid: item.uuid) Self.logger.info("Set Hardcover artwork for '\(item.title)'") } catch { Self.logger.error("Failed to download Hardcover artwork for '\(item.title)': \(error)") From b526ccbee3b584bef515f62819bcc67cc7ebbffc Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 5 Sep 2026 11:07:40 -0500 Subject: [PATCH 080/172] fix: clear the open review backlog (17 items) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sync machinery: - createOperation cleans the schedule-time temp hard link on BOTH drop paths (tier-downgrade guard, malformed params) — a dropped uploadFile task never constructs the operation that otherwise owns cleanup. - FileUploadOperation restart generation (under the existing lock): a rapid cellular double-toggle raced two concurrent PUTs of one file, the first unreachable by cancel(). main()'s Task now captures self weakly. - v2ToV3 enqueues upload tasks only for rows whose CoreData save succeeded; the stale "only items where UUID hasn't been set" scan comment now describes the real unfiltered pagination. - The repository's dangling-reference cleanup save is logged like every other save site. Decode/data hardening: - SyncableExternalResource uses decodeIfPresent — a type mismatch throws into LossyDecodableArray's per-element drop instead of silently nil-ing the field; an absent processedFile defaults to false instead of dropping the whole resource element (which lost the media-server link). - Deterministic (providerName, providerId) streaming-resource pick — the snapshot set is unordered, so dual-linked items varied per launch. - ExternalResource.create narrows snapshot ids with truncatingIfNeeded: import builders use abs(UUID().hashValue), beyond Int32.max — a latent trap. The field is a row marker; identity is the provider pair. - getSimpleItem(for:) wraps its fetch in performAndWait like its siblings; createExternalBook drops to internal (managed objects must not cross the service boundary; the sole caller snapshots in-module). Networking/player: - The Jellyfin download token moves from the api_key query to the X-Emby-Token header — URLs land in server/proxy logs and the caller already builds a URLRequest. - PlayerManager logs the previously swallowed external-stream metadata error (playback proceeds; degraded-progress sessions become diagnosable). UI/localization/docs: - BookView's provider icon and bullet separator are accessibilityHidden. - SyncInvitationCard's count uses localizedStringWithFormat. - accessabilityScale -> accessibilityScale (3 sites). - QueuedTasksView's preview constructs + setup()s + injects services per the documented pattern (bare defaults trap on the count methods). - Media-server picker/nav labels get real Base+en keys: sort_by_title, sort_title_option, sort_default_option, sort_name_option, layout_options_title, layout_grid_option, layout_list_option, authors_title (Lokalise must pick these up). - The Simple* mutual-recursion termination invariant is documented; the stranded ABS download docstring moved to its function. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../AudiobookShelfLibraryView.swift | 4 +- BookPlayer/Base.lproj/Localizable.strings | 8 ++++ BookPlayer/Jellyfin/JellyfinRootView.swift | 2 +- .../GridLayout/JellyfinLibraryGridView.swift | 6 +-- .../Library Screen/JellyfinLibraryView.swift | 6 +-- .../Library/ItemList/Views/BookView.swift | 4 ++ .../IntegrationLibraryView.swift | 6 +-- BookPlayer/Player/PlayerManager.swift | 12 +++++- .../CompleteAccount/SyncInvitationCard.swift | 2 +- .../Profile/Views/QueuedTasksView.swift | 43 ++++++++++++++++--- BookPlayer/en.lproj/Localizable.strings | 8 ++++ .../AudiobookShelfConnectionService.swift | 6 +-- .../ExternalResource+CoreDataProperties.swift | 5 ++- .../SimpleLibraryItem.swift | 4 ++ .../Network/JellyfinConnectionService.swift | 15 ++++--- .../ConcurrentSync/ConcurrenceService.swift | 15 +++++++ .../ConcurrentTasksRepository.swift | 8 +++- .../ConcurrentSync/FileUploadOperation.swift | 21 +++++++-- Shared/Services/LibraryService.swift | 14 ++++-- Shared/Services/PlaybackService.swift | 7 ++- .../Sync/Model/SyncableExternalResource.swift | 12 ++++-- Shared/SwiftData/MigrationPlan.swift | 14 +++--- 22 files changed, 173 insertions(+), 49 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift index a732ba37a..e2809fb01 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift @@ -40,9 +40,9 @@ where Model.Item == AudiobookShelfLibraryItem { Picker(selection: Binding( get: { vm.sortBy }, set: { vm.sortBy = $0 } - ), label: Text("Sort by".localized)) { + ), label: Text("sort_by_title".localized)) { Label("sort_most_recent_button", systemImage: "clock").tag(AudiobookShelfLayout.SortBy.recent) - Label("Title".localized, systemImage: "textformat.abc").tag(AudiobookShelfLayout.SortBy.title) + Label("sort_title_option".localized, systemImage: "textformat.abc").tag(AudiobookShelfLayout.SortBy.title) } } } diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 8b1e28b7f..83e9aaa18 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -531,6 +531,14 @@ We're working hard on providing a seamless experience, if possible, please conta "not_now_button" = "Not now"; "quick_action_label" = "Quick Action %d"; "apple_watch_beta_title" = "Apple Watch (Beta)"; +"sort_by_title" = "Sort by"; +"sort_title_option" = "Title"; +"sort_default_option" = "Default"; +"sort_name_option" = "Name"; +"layout_options_title" = "Layout options"; +"layout_grid_option" = "Grid"; +"layout_list_option" = "List"; +"authors_title" = "Authors"; "import_no_audio_files_alert" = "The selected items have no audio files to import."; "import_title" = "Import"; "files_title" = "%d Files"; diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 7f6f5468a..9575bf483 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -71,7 +71,7 @@ struct JellyfinRootView: View { singleFileDownloadService: singleFileDownloadService, accountService: accountService, navigation: nav, - navigationTitle: "Authors" + navigationTitle: "authors_title".localized ) } ) diff --git a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift index 39f96dee0..2584ee341 100644 --- a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift +++ b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift @@ -12,7 +12,7 @@ import SwiftUI struct JellyfinLibraryGridView: View { @ObservedObject var viewModel: Model - @ScaledMetric var accessabilityScale: CGFloat = 1 + @ScaledMetric var accessibilityScale: CGFloat = 1 @State private var availableSize: CGSize = .zero private let itemMinSizeBase = CGSize(width: 100, height: 100) private let itemMaxSizeBase = CGSize(width: 250, height: 250) @@ -21,7 +21,7 @@ struct JellyfinLibraryGridView: View { private func adjustSize(_ size: CGSize, availableSize: CGSize) -> CGSize { CGSize( width: min(size.width, availableSize.width), - height: min(size.height * accessabilityScale, availableSize.height) + height: min(size.height * accessibilityScale, availableSize.height) ) } @@ -31,7 +31,7 @@ struct JellyfinLibraryGridView: View { numItems: viewModel.items.count, itemMinSize: adjustSize(itemMinSizeBase, availableSize: geometry.size), itemMaxSize: adjustSize(itemMaxSizeBase, availableSize: geometry.size), - itemSpacing: itemSpacingBase * accessabilityScale + itemSpacing: itemSpacingBase * accessibilityScale ) { ForEach(viewModel.items, id: \.id) { item in JellyfinLibraryGridItemView(item: item, isSelected: viewModel.selectedItems.contains(item.id)) diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift index 01cb2e465..d0e40c16e 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift @@ -46,10 +46,10 @@ where Model.Item == JellyfinLibraryItem { Picker(selection: Binding( get: { vm.sortBy }, set: { vm.sortBy = $0 } - ), label: Text("Sort by".localized)) { - Text("Default".localized).tag(JellyfinLayout.SortBy.smart) + ), label: Text("sort_by_title".localized)) { + Text("sort_default_option".localized).tag(JellyfinLayout.SortBy.smart) Label("sort_most_recent_button", systemImage: "clock").tag(JellyfinLayout.SortBy.recent) - Label("Name".localized, systemImage: "textformat.abc").tag(JellyfinLayout.SortBy.name) + Label("sort_name_option".localized, systemImage: "textformat.abc").tag(JellyfinLayout.SortBy.name) } } } diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index cedfec923..224c7dc8f 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -69,6 +69,7 @@ struct BookView: View { .aspectRatio(contentMode: .fit) .frame(width: 12, height: 12) .foregroundStyle(theme.secondaryColor) + .accessibilityHidden(true) Text(verbatim: externalResource.providerName.capitalized) .foregroundStyle(theme.secondaryColor) .bpFont(.caption) @@ -76,6 +77,9 @@ struct BookView: View { Text("•") .foregroundStyle(theme.secondaryColor) .bpFont(.caption) + // VoiceOver: decorative separator — the provider name right before it + // already announces the link + .accessibilityHidden(true) } } } diff --git a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift index a33f1f630..1d2120176 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift @@ -172,9 +172,9 @@ struct IntegrationLibraryView< var layoutPreferences: some View { if viewModel.showsLayoutPreferences { ThemedSection { - Picker(selection: $viewModel.layout, label: Text("Layout options".localized)) { - Label("Grid".localized, systemImage: "square.grid.2x2").tag(IntegrationLayout.Options.grid) - Label("List".localized, systemImage: "list.bullet").tag(IntegrationLayout.Options.list) + Picker(selection: $viewModel.layout, label: Text("layout_options_title".localized)) { + Label("layout_grid_option".localized, systemImage: "square.grid.2x2").tag(IntegrationLayout.Options.grid) + Label("layout_list_option".localized, systemImage: "list.bullet").tag(IntegrationLayout.Options.list) } } } diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index f5f95dc34..ef6c757bd 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -15,7 +15,7 @@ import Sentry // swiftlint:disable:next file_length -final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { +final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BPLogger { private let libraryService: LibraryServiceProtocol private let playbackService: PlaybackServiceProtocol private let syncService: SyncServiceProtocol @@ -324,7 +324,15 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { // Only load metadata if duration is unknown, to avoid network bottleneck if chapter.duration == 0 { - _ = try? await asset.load(.duration, .isPlayable) + do { + _ = try await asset.load(.duration, .isPlayable) + } catch { + // Deliberately non-fatal: a dead stream fails LOUDLY at the player-item + // level right after (the .failed -> session-expired alert path). The only + // silent case is a transient metadata-only failure — playback proceeds with + // duration 0 (degraded scrubber/progress), so log it for diagnosability. + Self.logger.warning("External stream metadata load failed; continuing with duration 0: \(error)") + } await libraryService.loadChaptersIfNeeded(relativePath: chapter.relativePath, asset: asset) // The awaits above can outlive this load (user tapped another book) — applying the diff --git a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift index 9160e4b50..dc84247a7 100644 --- a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift +++ b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift @@ -34,7 +34,7 @@ struct SyncInvitationCard: View { } } - Text(String(format: "sync_invitation_description".localized, + Text(String.localizedStringWithFormat("sync_invitation_description".localized, (subscription == .lite ? "import_verb" : "download_verb").localized, totalItems, ((subscription == .pro || subscription == .lite) ? "" : "sync_invitation_stream_description".localized))) diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index a90ebd305..fdc25a5f6 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -90,11 +90,42 @@ struct QueuedTasksView: View { } // MARK: - Preview -struct QueuedTasksView_Previews: PreviewProvider { - static var previews: some View { - ZStack { - Color(.secondarySystemBackground).edgesIgnoringSafeArea(.all) - QueuedTasksView() - } +// Environment defaults are un-setup() placeholders whose count methods trap (see +// CLAUDE.md's DI section) — previews must construct + setup() + inject, same as +// ProfileSyncTasksSectionView's preview. +#Preview { + @Previewable var services: (sync: SyncService, concurrence: ConcurrenceService) = { + let dataManager = DataManager(coreDataStack: CoreDataStack(testPath: "")) + let audioMetadataService = AudioMetadataService() + let libraryService = LibraryService() + libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) + let accountService = AccountService() + accountService.setup(dataManager: dataManager) + let tasksDataManager = TasksDataManager() + let concurrenceService = ConcurrenceService() + concurrenceService.setup( + libraryService: libraryService, + getAccessLevel: { accountService.getAccessLevel() }, + tasksDataManager: tasksDataManager, + networkClient: NetworkClient(), + dataManager: dataManager + ) + let syncService = SyncService() + syncService.setup( + isActive: true, + libraryService: libraryService, + accountService: accountService, + concurrenceService: concurrenceService, + tasksDataManager: tasksDataManager + ) + return (syncService, concurrenceService) + }() + + ZStack { + Color(.secondarySystemBackground).edgesIgnoringSafeArea(.all) + QueuedTasksView() } + .environmentObject(ThemeViewModel()) + .environment(\.syncService, services.sync) + .environment(\.concurrenceService, services.concurrence) } diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 960a18801..6d33405f8 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -535,6 +535,14 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; +"sort_by_title" = "Sort by"; +"sort_title_option" = "Title"; +"sort_default_option" = "Default"; +"sort_name_option" = "Name"; +"layout_options_title" = "Layout options"; +"layout_grid_option" = "Grid"; +"layout_list_option" = "List"; +"authors_title" = "Authors"; "import_no_audio_files_alert" = "The selected items have no audio files to import."; "import_title" = "Import"; "files_title" = "%d Files"; diff --git a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift index 51d608d95..e10fdb123 100644 --- a/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift +++ b/Shared/AudiobookShelf/Network/AudiobookShelfConnectionService.swift @@ -714,9 +714,6 @@ public class AudiobookShelfConnectionService: BPLogger { .appendingPathComponent("download") } - /// Returns a URLRequest for downloading a library item, carrying the bearer - /// token via the standard `Authorization: Bearer` header plus the user-defined - /// custom HTTP headers (needed for servers behind Cloudflare Access etc.). /// Fetches the user's saved progress for one library item (`GET /api/me/progress/{id}`). public func fetchItem(for id: String) async throws -> AudiobookShelfLibraryItem? { guard let connection else { @@ -767,6 +764,9 @@ public class AudiobookShelfConnectionService: BPLogger { _ = try validateAuthenticatedResponse(response) } + /// Returns a URLRequest for downloading a library item, carrying the bearer + /// token via the standard `Authorization: Bearer` header plus the user-defined + /// custom HTTP headers (needed for servers behind Cloudflare Access etc.). public func createItemDownloadRequest(_ item: AudiobookShelfLibraryItem) throws -> URLRequest { guard let connection else { throw URLError(.userAuthenticationRequired) diff --git a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift index ebae915a8..db67f6209 100644 --- a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift +++ b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataProperties.swift @@ -33,7 +33,10 @@ public class ExternalResource: NSManagedObject { // swiftlint:disable:next force_cast let entity = NSEntityDescription.insertNewObject(forEntityName: "ExternalResource", into: context) as! ExternalResource - entity.id = Int32(item.id) + // truncatingIfNeeded: snapshot ids from the import builders are abs(UUID().hashValue) + // — almost always beyond Int32.max, and Int32(exactly-style init) would trap. The + // field is a local row marker, not identity (that's (providerName, providerId)). + entity.id = Int32(truncatingIfNeeded: item.id) entity.providerName = item.providerName entity.providerId = item.providerId entity.lastSyncedAt = item.lastSyncedAt diff --git a/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift b/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift index 562abf8de..f986bf6a0 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleLibraryItem.swift @@ -29,6 +29,10 @@ public struct SimpleLibraryItem: Identifiable, Hashable, Equatable { public let lastPlayDate: Date? public let type: SimpleItemType public let uuid: String + /// Mutually recursive with SimpleExternalResource.libraryItem. The synthesized + /// Equatable/Hashable only terminate because back-pointers are built with + /// ignoreLibraryItem (resources held HERE carry libraryItem == nil) — preserve that + /// invariant when constructing snapshots. public let externalResources: [SimpleExternalResource]? public var progress: Double { diff --git a/Shared/Jellyfin/Network/JellyfinConnectionService.swift b/Shared/Jellyfin/Network/JellyfinConnectionService.swift index 7a5763b28..68d896680 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionService.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionService.swift @@ -834,11 +834,7 @@ public class JellyfinConnectionService: BPLogger { } let request = Paths.getDownload(itemID: item.id) - var components = try createUrlComponentsForApiRequest(request) - - var queryItems = components.queryItems ?? [] - queryItems.append(URLQueryItem(name: "api_key", value: client.accessToken)) - components.queryItems = queryItems + let components = try createUrlComponentsForApiRequest(request) guard let url = components.url else { throw IntegrationError.urlFromComponents(components) @@ -851,7 +847,14 @@ public class JellyfinConnectionService: BPLogger { /// custom HTTP headers (needed for servers behind Cloudflare Access etc.). public func createItemDownloadRequest(_ item: JellyfinLibraryItem) throws -> URLRequest { let url = try createItemDownloadUrl(item) - return wrapWithCustomHeaders(url) + var request = wrapWithCustomHeaders(url) + // Token rides Jellyfin's native header, NOT the query string: URLs land in server + // logs, proxy logs, and download-manager UI, and the caller builds a URLRequest + // anyway. Background URLSession preserves request headers across app relaunches. + if let token = client?.accessToken { + request.setValue(token, forHTTPHeaderField: "X-Emby-Token") + } + return request } /// Wraps an arbitrary URL (e.g. a cover image) in a URLRequest carrying the current diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 9c10dc6dd..9899001cc 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -348,6 +348,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { // lapse path gives the upload queue. guard accessPolicy[.uploadFile] == true else { Self.logger.info("Dropping persisted uploadFile task \(task.id): tier has no S3 upload access") + cleanUpDroppedUploadTempLink(task) return nil } guard let filePath = task.parameters["filePath"] as? String, @@ -356,6 +357,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { let remoteURL = URL(string: remotePath), let uuid = task.parameters["uuid"] as? String else { Self.logger.error("Discarding uploadFile task \(task.id): missing or malformed parameters") + cleanUpDroppedUploadTempLink(task) return nil } return FileUploadOperation(fileURL: fileURL, remoteURL: remoteURL, uuid: uuid) @@ -523,6 +525,19 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { } } } + + /// A dropped uploadFile task never constructs its FileUploadOperation, so nobody else + /// removes the schedule-time temp hard link — same temp-dir-only guard as the + /// operation's own success/4xx/cancel cleanup paths (a real Processed-folder file + /// must never be deleted here). + private func cleanUpDroppedUploadTempLink(_ task: ConcurrentSyncTask) { + guard + let filePath = task.parameters["filePath"] as? String, + let fileURL = URL(string: filePath), + fileURL.path.hasPrefix(FileManager.default.temporaryDirectory.path) + else { return } + try? FileManager.default.removeItem(at: fileURL) + } } extension ConcurrenceService { diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift index 50354cab4..5b9f5693b 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift @@ -77,7 +77,13 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog /// Drop dangling references (payload missing) instead of stalling the queue tasksContainer.tasks.removeAll(where: { $0.id == reference.id }) modelContext.delete(reference) - try? modelContext.save() + do { + try modelContext.save() + } catch { + // Unsaved = the dangling reference resurfaces on the next getNextTask pass; + // log like every other save site so repeats are diagnosable + Self.logger.error("Failed to persist dangling-reference cleanup: \(error)") + } tasksDataManager.notifyTasksChanged(context: modelContext) continue } diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/ConcurrentSync/FileUploadOperation.swift index 3ff3e223d..b0c107981 100644 --- a/Shared/Services/ConcurrentSync/FileUploadOperation.swift +++ b/Shared/Services/ConcurrentSync/FileUploadOperation.swift @@ -65,13 +65,25 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { } // Spin up the async context - Task { - await startUploadTask() + Task { [weak self] in + await self?.startUploadTask() } } // MARK: - Upload Logic + /// uploadStateLock-guarded: each (re)start claims a new generation, and only the + /// LATEST one may publish + resume — a rapid double-toggle of allowCellularData fires + /// two KVO restarts, and without this both passed `!isCancelled` (the operation isn't + /// cancelled, only the internal task was) and resumed two concurrent PUTs, the first + /// unreachable by cancel() after the second overwrote currentUploadTask. + private var restartGeneration = 0 + private func startUploadTask() async { + uploadStateLock.lock() + restartGeneration += 1 + let generation = restartGeneration + uploadStateLock.unlock() + // A missing local file is permanent — retrying can never succeed, and a failed task // blocks the serial upload queue forever. Consume it instead. guard FileManager.default.fileExists(atPath: fileURL.path) else { @@ -91,8 +103,9 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { session: session ) uploadStateLock.lock() - guard !isCancelled else { - // cancel() already ran (and finished the operation) — don't resume or rebind + guard !isCancelled, generation == restartGeneration else { + // cancel() already ran (and finished the operation), or a newer restart claimed + // the upload — don't resume or rebind; a stale resume would race the newer task uploadStateLock.unlock() return } diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index f31adfa5b..f696910f4 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -1511,9 +1511,12 @@ extension LibraryService { fetchRequest.resultType = .dictionaryResultType let context = dataManager.getContext() - let results = try? context.fetch(fetchRequest) as? [[String: Any]] - - return parseFetchedItems(from: results, context: context)?.first + // performAndWait like the sibling find* methods: safe on the main-thread callers + // of today, correct if a background caller ever appears + return context.performAndWait { + let results = try? context.fetch(fetchRequest) as? [[String: Any]] + return parseFetchedItems(from: results, context: context)?.first + } } func getItem(with relativePath: String, context: NSManagedObjectContext) -> LibraryItem? { @@ -1828,7 +1831,10 @@ extension LibraryService { /// @MainActor: creates/mutates managed objects on the main-queue viewContext — running /// this off the main thread is the CoreData threading violation the repo bans. @MainActor - public func createExternalBook(simpleItem: SimpleLibraryItem, externalResource: SimpleExternalResource) async -> LibraryItem { + /// Internal (not public, not on the protocol): returns a managed object, which must + /// never cross the service boundary — the sole caller insertItems(fromResources:) + /// snapshots it to SimpleLibraryItem on the same context. + func createExternalBook(simpleItem: SimpleLibraryItem, externalResource: SimpleExternalResource) async -> LibraryItem { let context = dataManager.getContext() let entity = NSEntityDescription.entity(forEntityName: "Book", in: context)! diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index e61a34deb..1c6fbf7df 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -225,7 +225,12 @@ public final class PlaybackService: PlaybackServiceProtocol { var externalUrl: URL? var externalHeaders: [String: String] = [:] - let externalResource = book.externalResources?.first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) + // Deterministic pick: the snapshot set is UNORDERED, so an item linked to two + // streaming providers would otherwise resolve to whichever the set yields first, + // varying between launches. Stable (providerName, providerId) order pins it. + let externalResource = book.externalResources? + .sorted { ($0.providerName, $0.providerId) < ($1.providerName, $1.providerId) } + .first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) if let providerRaw = externalResource?.providerName, let provider = ExternalResource.ProviderName(rawValue: providerRaw) { diff --git a/Shared/Services/Sync/Model/SyncableExternalResource.swift b/Shared/Services/Sync/Model/SyncableExternalResource.swift index fd989f305..6313aa12b 100644 --- a/Shared/Services/Sync/Model/SyncableExternalResource.swift +++ b/Shared/Services/Sync/Model/SyncableExternalResource.swift @@ -41,9 +41,15 @@ extension SyncableExternalResource: Decodable { self.providerName = try container.decode(String.self, forKey: .providerName) self.providerId = try container.decode(String.self, forKey: .providerId) self.syncStatus = try container.decode(String.self, forKey: .syncStatus) - self.lastSyncedAt = try? container.decode(Date.self, forKey: .lastSyncedAt) - self.processedFile = try container.decode(Bool.self, forKey: .processedFile) - self.hostId = try? container.decode(String.self, forKey: .hostId) + // decodeIfPresent, not try?: an ABSENT key is fine, but a TYPE MISMATCH should + // throw — LossyDecodableArray then drops (and logs) the malformed element instead + // of silently nil-ing the field. + self.lastSyncedAt = try container.decodeIfPresent(Date.self, forKey: .lastSyncedAt) + // Absent processedFile must not drop the whole resource element (losing the book's + // media-server link on this device); false is the conservative default — reprocess + // rather than skip processing. + self.processedFile = try container.decodeIfPresent(Bool.self, forKey: .processedFile) ?? false + self.hostId = try container.decodeIfPresent(String.self, forKey: .hostId) } } diff --git a/Shared/SwiftData/MigrationPlan.swift b/Shared/SwiftData/MigrationPlan.swift index 1d609ea31..1323f698c 100644 --- a/Shared/SwiftData/MigrationPlan.swift +++ b/Shared/SwiftData/MigrationPlan.swift @@ -58,7 +58,8 @@ public enum MigrationPlan: SchemaMigrationPlan, BPLogger { var uuidsDict: [String: String] = [:] coreDataContext.performAndWait { let fetchRequest = NSFetchRequest(entityName: "LibraryItem") - // Fetch only items where the UUID hasn't been set yet + // Unfiltered paginated scan (offset/limit) — every item is visited; the + // per-item logic below decides what to write fetchRequest.fetchLimit = 200 fetchRequest.fetchOffset = previousOffset fetchRequest.sortDescriptors = [NSSortDescriptor(keyPath: \LibraryItem.relativePath, ascending: true)] @@ -182,6 +183,7 @@ public enum MigrationPlan: SchemaMigrationPlan, BPLogger { guard let items = try? coreDataContext.fetch(fetchRequest) else { return } + var pageResources: [(uuid: String, relativePath: String, providerId: String)] = [] for item in items { guard let hardcoverBook = item.hardcoverBook else { continue } let providerId = String(hardcoverBook.id) @@ -203,17 +205,19 @@ public enum MigrationPlan: SchemaMigrationPlan, BPLogger { ) _ = ExternalResource.create(syncable, libraryItem: item, in: coreDataContext) - resourcesToUpload.append( + pageResources.append( (uuid: item.uuid, relativePath: item.relativePath, providerId: providerId) ) } do { try coreDataContext.save() + // Enqueue ONLY rows that actually persisted: a save failure is self-healing + // (the resource returns on the next sync), but an upload task pointing at a + // resource that never persisted locally would fail/retry pointlessly. + resourcesToUpload.append(contentsOf: pageResources) } catch { - // Self-healing (the resource returns on the next sync), but a silent failure - // here leaves upload tasks pointing at resources that never persisted locally - Self.logger.error("v2ToV3 external-resource backfill save failed: \(error)") + Self.logger.error("v2ToV3 external-resource backfill save failed; skipping \(pageResources.count) enqueue(s): \(error)") } } From 086fa84c1b189c62c563636e44b4b0b5fdf1d753 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 5 Sep 2026 12:20:23 -0500 Subject: [PATCH 081/172] fix: reuse the existing title_button key for the ABS sort option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sort_title_option duplicated an existing localization ("title_button" = "Title", already translated across locales) — one fewer new key for Lokalise. Eight new keys from the label sweep drop to seven. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library Screen/AudiobookShelfLibraryView.swift | 2 +- BookPlayer/Base.lproj/Localizable.strings | 1 - BookPlayer/en.lproj/Localizable.strings | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift index e2809fb01..889cf391c 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift @@ -42,7 +42,7 @@ where Model.Item == AudiobookShelfLibraryItem { set: { vm.sortBy = $0 } ), label: Text("sort_by_title".localized)) { Label("sort_most_recent_button", systemImage: "clock").tag(AudiobookShelfLayout.SortBy.recent) - Label("sort_title_option".localized, systemImage: "textformat.abc").tag(AudiobookShelfLayout.SortBy.title) + Label("title_button".localized, systemImage: "textformat.abc").tag(AudiobookShelfLayout.SortBy.title) } } } diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 83e9aaa18..29bf93e57 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -532,7 +532,6 @@ We're working hard on providing a seamless experience, if possible, please conta "quick_action_label" = "Quick Action %d"; "apple_watch_beta_title" = "Apple Watch (Beta)"; "sort_by_title" = "Sort by"; -"sort_title_option" = "Title"; "sort_default_option" = "Default"; "sort_name_option" = "Name"; "layout_options_title" = "Layout options"; diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 6d33405f8..c7d78064b 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -536,7 +536,6 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; "sort_by_title" = "Sort by"; -"sort_title_option" = "Title"; "sort_default_option" = "Default"; "sort_name_option" = "Name"; "layout_options_title" = "Layout options"; From 3e31d71996b2183df47f2c0c201d3fd0bdb78cf2 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 5 Sep 2026 12:33:20 -0500 Subject: [PATCH 082/172] refactor: collapse the provider switch to a hardcover-only filter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updateExternalResources only ever acts on Hardcover links — the other providers' cases existed just to satisfy exhaustiveness with a break. A `for ... where` filter says exactly that (repo idiom, cf. the FileUploadOperation cancellation loop), and the doc comment now states why: reading-status actions only exist for Hardcover; Jellyfin/ABS progress rides the externalUpdate queue. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Hardcover/Network/HardcoverService.swift | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/BookPlayer/Hardcover/Network/HardcoverService.swift b/BookPlayer/Hardcover/Network/HardcoverService.swift index 3fd0ef5d1..021b2f73b 100644 --- a/BookPlayer/Hardcover/Network/HardcoverService.swift +++ b/BookPlayer/Hardcover/Network/HardcoverService.swift @@ -284,22 +284,18 @@ extension HardcoverService { await updateExternalResources(for: relativePath, to: .read) } - /// Iterate the item's external resources and run the matching provider action for the new status. + /// Push the new status to the item's Hardcover link(s), if any — reading-status + /// actions only exist for Hardcover; other providers' progress rides the + /// externalUpdate queue instead. private func updateExternalResources( for relativePath: String, to status: HardcoverBook.Status ) async { let resources = await libraryService.getExternalResources(for: relativePath) - for resource in resources { - guard let provider = ExternalResource.ProviderName(rawValue: resource.providerName) else { continue } - - switch provider { - case .hardcover: - await updateHardcoverStatus(status, providerId: resource.providerId, for: relativePath) - case .jellyfin, .audiobookshelf: - break - } + for resource in resources + where ExternalResource.ProviderName(rawValue: resource.providerName) == .hardcover { + await updateHardcoverStatus(status, providerId: resource.providerId, for: relativePath) } } From 40405ef22f8e462e0871d53531e1bd301c072e8d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 5 Sep 2026 13:02:25 -0500 Subject: [PATCH 083/172] fix: repair device-B's metadata-empty Hardcover stub instead of rendering it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updateHardcoverStatus persists a status-only stub (empty title/author, nil artwork) when a synced-down Hardcover link crosses the reading threshold before this device ever opened the book's details. resolveHardcoverSelection's first branch trusted any stored row, so the stub SHADOWED the existing fetch-repair fallback — the details row rendered blank forever, only on the second device, only in that ordering. The branch now requires metadata (non-empty title) to short-circuit; the fallback's interim selection carries the stub's monotonic state — getBook(id:) is metadata-only (status .local, no userBookID), and the save flow reads userBookID off this property to decide the Hardcover unlink removal call; and on fetch success a stub is repaired ONCE via SimpleHardcoverBook.repairingMetadata(from:) — metadata from Hardcover, status/userBookID from the stub — then persisted so every surface benefits without per-visit refetching. Never-linked-locally stays display-only, matching pre-existing behavior. The merge rule is pinned by SimpleHardcoverBookRepairTests. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ItemDetails/ItemDetailsViewModel.swift | 25 +++++++++++-- .../Services/LibraryServiceTests.swift | 37 +++++++++++++++++++ .../SimpleHardcoverBook.swift | 18 +++++++++ 3 files changed, 76 insertions(+), 4 deletions(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift index 4a72d4eef..70fa7b0cd 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift @@ -109,7 +109,12 @@ final class ItemDetailsViewModel: ObservableObject { /// then fetching the real book info from Hardcover by its providerId. @MainActor private func resolveHardcoverSelection() async { - if let book = await libraryService.getHardcoverBook(for: item.relativePath) { + let stored = await libraryService.getHardcoverBook(for: item.relativePath) + // Only a row WITH metadata short-circuits: updateHardcoverStatus persists a + // status-only stub (empty title) when a synced-down link crosses the reading + // threshold before this device ever opened details — that stub must not shadow + // the fetch-repair below, or the row renders blank forever. + if let book = stored, !book.title.isEmpty { hardcoverBook = book hardcoverSectionViewModel?.pickerViewModel.selected = .init( id: book.id, @@ -131,13 +136,16 @@ final class ItemDetailsViewModel: ObservableObject { let bookID = Int(resource.providerId) else { return } - /// Show at least the item's title so the row reflects a selection + /// Show at least the item's title so the row reflects a selection. The interim + /// carries the STUB's monotonic state when one exists — getBook() knows nothing + /// about user state, and the save flow reads userBookID off this property. hardcoverBook = SimpleHardcoverBook( id: bookID, artworkURL: nil, title: item.title, author: item.details, - status: .local + status: stored?.status ?? .local, + userBookID: stored?.userBookID ) hardcoverSectionViewModel?.pickerViewModel.selected = .init( id: bookID, @@ -157,7 +165,16 @@ final class ItemDetailsViewModel: ObservableObject { hardcoverSectionViewModel?.pickerViewModel.selected?.id == bookID else { return } - hardcoverBook = fetched + if let stub = stored { + // Repair the stub ONCE (metadata from Hardcover, state from the stub) so the + // row renders correctly everywhere without re-fetching per details visit. + let merged = stub.repairingMetadata(from: fetched) + await libraryService.setHardcoverBook(merged, for: item.relativePath) + hardcoverBook = merged + } else { + // Never linked locally: display-only, matching the pre-existing behavior. + hardcoverBook = fetched + } hardcoverSectionViewModel?.pickerViewModel.selected = .init( id: fetched.id, artworkURL: fetched.artworkURL, diff --git a/BookPlayerTests/Services/LibraryServiceTests.swift b/BookPlayerTests/Services/LibraryServiceTests.swift index 6835b34cc..d306ed51b 100644 --- a/BookPlayerTests/Services/LibraryServiceTests.swift +++ b/BookPlayerTests/Services/LibraryServiceTests.swift @@ -2364,3 +2364,40 @@ class LibraryServiceExternalResourceTests: XCTestCase { XCTAssertEqual(rowsAtPath.count, 1, "exactly one row may exist at the synthesized relativePath") } } + +// MARK: - Hardcover stub repair + +@MainActor +final class SimpleHardcoverBookRepairTests: XCTestCase { + /// The merge rule behind the device-B stub repair: metadata comes from the fetched + /// copy, monotonic state stays local. getBook(id:) always returns status .local and + /// no userBookID (metadata-only query), so taking state from the fetch would regress + /// reading progress already pushed to Hardcover and break the unlink flow's + /// userBookID check. + func testRepairKeepsLocalMonotonicStateAndTakesFetchedMetadata() { + let stub = SimpleHardcoverBook( + id: 445742, + artworkURL: nil, + title: "", + author: "", + status: .reading, + userBookID: 99 + ) + let fetched = SimpleHardcoverBook( + id: 445742, + artworkURL: URL(string: "https://assets.hardcover.app/books/445742/cover.jpg"), + title: "Awaken Online: Catharsis", + author: "Travis Bagwell", + status: .local, + userBookID: nil + ) + + let repaired = stub.repairingMetadata(from: fetched) + + XCTAssertEqual(repaired.title, "Awaken Online: Catharsis") + XCTAssertEqual(repaired.author, "Travis Bagwell") + XCTAssertNotNil(repaired.artworkURL) + XCTAssertEqual(repaired.status, .reading, "repair must not regress the pushed reading status") + XCTAssertEqual(repaired.userBookID, 99, "losing userBookID would break the unlink removal call") + } +} diff --git a/Shared/CoreData/Lightweight-Models/SimpleHardcoverBook.swift b/Shared/CoreData/Lightweight-Models/SimpleHardcoverBook.swift index c528eccc7..2e799ccc7 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleHardcoverBook.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleHardcoverBook.swift @@ -32,3 +32,21 @@ public struct SimpleHardcoverBook { self.userBookID = userBookID } } + +extension SimpleHardcoverBook { + /// Metadata repair for a status-only stub (created when a synced-down Hardcover link + /// crosses the reading threshold before this device ever fetched the book): metadata + /// comes from the FETCHED copy, monotonic state (status, userBookID) stays LOCAL — a + /// metadata repair must never regress reading progress already pushed to Hardcover, + /// and losing userBookID would break the unlink flow's removal call. + public func repairingMetadata(from fetched: SimpleHardcoverBook) -> SimpleHardcoverBook { + SimpleHardcoverBook( + id: fetched.id, + artworkURL: fetched.artworkURL, + title: fetched.title, + author: fetched.author, + status: status, + userBookID: userBookID + ) + } +} From d969f33c653dc9562a847149c06e66dd636948cb Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 5 Sep 2026 23:09:03 -0500 Subject: [PATCH 084/172] fix: extract embedded artwork before falling back to the Hardcover cover MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit downloadArtworkIfNeeded guarded on item.artworkURL == nil plus !isCached — but artworkURL only tracks custom/remote artwork, and the cache fills LAZILY on first render. Auto-match on import therefore raced first render: for a not-yet-rendered item (below the fold in a big import, a background or share-extension import), the Hardcover cover was stored under the item's cache key, permanently shadowing the file's embedded artwork (the cache is checked before the extractor, forever), and scheduleUploadArtwork then propagated the wrong cover to every device. The guard now runs the canonical retrieveImageFromCache pipeline first — on a cache miss it extracts embedded artwork — so Hardcover's cover is strictly a fallback for items with genuinely no artwork of their own. No unit test: the seam is class-func Kingfisher machinery requiring real audio fixtures; the scenario is covered by the device pass (import a book with embedded art while its row is off-screen, with auto-match on). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Hardcover/Network/HardcoverService.swift | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/BookPlayer/Hardcover/Network/HardcoverService.swift b/BookPlayer/Hardcover/Network/HardcoverService.swift index 021b2f73b..3c112d493 100644 --- a/BookPlayer/Hardcover/Network/HardcoverService.swift +++ b/BookPlayer/Hardcover/Network/HardcoverService.swift @@ -488,10 +488,23 @@ extension HardcoverService { ) async { guard let artworkURL = book.artworkURL, - item.artworkURL == nil, - !ArtworkService.isCached(relativePath: item.relativePath) + item.artworkURL == nil else { return } + // item.artworkURL == nil can't see EMBEDDED artwork (it only tracks custom/remote), + // and the cache is populated lazily on first render — so a bare isCached check + // raced auto-match on import: a not-yet-rendered item's embedded art lost to the + // Hardcover cover PERMANENTLY (the cache key shadows the extractor forever) and + // scheduleUploadArtwork then propagated the wrong cover to every device. Run the + // canonical pipeline first: on a cache miss it extracts embedded artwork; only an + // item with genuinely no artwork of its own falls back to Hardcover's cover. + let hasOwnArtwork = await withCheckedContinuation { continuation in + ArtworkService.retrieveImageFromCache(for: item.relativePath) { result in + continuation.resume(returning: (try? result.get()) != nil) + } + } + guard !hasOwnArtwork else { return } + do { let (data, _) = try await URLSession.shared.data(from: artworkURL) await ArtworkService.storeInCache(data, for: item.relativePath) From 32ed0f3e94f261b5ca478cb87ae8dccabc98f60b Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 6 Sep 2026 00:04:39 -0500 Subject: [PATCH 085/172] refactor: BookByIdData joins the Hardcover response-model files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every other GraphQL response model lives one-per-file in Hardcover/Network/Models (BooksData, InsertUserBookData, DeleteUserBookData, AudiobookEditionsData); BookByIdData — added with getBook(id:) — was the only one inline in the service. Moved per the sibling convention, access aligned private -> internal, pbxproj entries mirrored from BooksData's. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 4 +++ .../Hardcover/Network/HardcoverService.swift | 23 ------------- .../Network/Models/BookByIdData.swift | 33 +++++++++++++++++++ 3 files changed, 37 insertions(+), 23 deletions(-) create mode 100644 BookPlayer/Hardcover/Network/Models/BookByIdData.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 7e00f44c7..797795271 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -38,6 +38,7 @@ 3F7B643D2E0FA0B800299D97 /* GraphQLClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F7B643C2E0FA0B800299D97 /* GraphQLClient.swift */; }; 3F7B64422E0FB27000299D97 /* AnyCodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F7B64412E0FB27000299D97 /* AnyCodable.swift */; }; 3F7B64452E0FB29600299D97 /* BooksData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F7B64442E0FB29600299D97 /* BooksData.swift */; }; + A179BB26325B4699A9EA15CA /* BookByIdData.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDE1A8E1D323493B91FA8E1C /* BookByIdData.swift */; }; 3F7B64472E0FB2A900299D97 /* AudiobookEditionsData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F7B64462E0FB2A900299D97 /* AudiobookEditionsData.swift */; }; 3F7B64492E0FB2C100299D97 /* InsertUserBookData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F7B64482E0FB2C100299D97 /* InsertUserBookData.swift */; }; 3FA43BF82E110B4900DF9B1F /* SimpleHardcoverBook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FA43BF72E110B4400DF9B1F /* SimpleHardcoverBook.swift */; }; @@ -1158,6 +1159,7 @@ 3F7B643C2E0FA0B800299D97 /* GraphQLClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphQLClient.swift; sourceTree = ""; }; 3F7B64412E0FB27000299D97 /* AnyCodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyCodable.swift; sourceTree = ""; }; 3F7B64442E0FB29600299D97 /* BooksData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BooksData.swift; sourceTree = ""; }; + BDE1A8E1D323493B91FA8E1C /* BookByIdData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookByIdData.swift; sourceTree = ""; }; 3F7B64462E0FB2A900299D97 /* AudiobookEditionsData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudiobookEditionsData.swift; sourceTree = ""; }; 3F7B64482E0FB2C100299D97 /* InsertUserBookData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsertUserBookData.swift; sourceTree = ""; }; 3FA43BF72E110B4400DF9B1F /* SimpleHardcoverBook.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleHardcoverBook.swift; sourceTree = ""; }; @@ -2164,6 +2166,7 @@ 3F7B64412E0FB27000299D97 /* AnyCodable.swift */, 3F7B64462E0FB2A900299D97 /* AudiobookEditionsData.swift */, 3F7B64442E0FB29600299D97 /* BooksData.swift */, + BDE1A8E1D323493B91FA8E1C /* BookByIdData.swift */, 3F6640932E17386400356522 /* DeleteUserBookData.swift */, 3F7B64482E0FB2C100299D97 /* InsertUserBookData.swift */, ); @@ -5099,6 +5102,7 @@ 631908A62E369572009249C1 /* ProgressLabelsSectionView.swift in Sources */, 3FF8EA502E11E2110054CD2C /* ItemDetailsHardcoverSectionViewModel.swift in Sources */, 3F7B64452E0FB29600299D97 /* BooksData.swift in Sources */, + A179BB26325B4699A9EA15CA /* BookByIdData.swift in Sources */, 6356F9B92AC7CDDE00B7A027 /* EndChapterSleepTimerIntent.swift in Sources */, 63FB67882E714F0A00331767 /* ButtonFreeView.swift in Sources */, 62F2F25F25E18C7500E1D6A0 /* ImportableItem.swift in Sources */, diff --git a/BookPlayer/Hardcover/Network/HardcoverService.swift b/BookPlayer/Hardcover/Network/HardcoverService.swift index 3c112d493..a466144f8 100644 --- a/BookPlayer/Hardcover/Network/HardcoverService.swift +++ b/BookPlayer/Hardcover/Network/HardcoverService.swift @@ -598,26 +598,3 @@ extension SimpleHardcoverBook { } } -/// Response model for fetching a single book by its Hardcover id. -private struct BookByIdData: Codable { - let books: [Book] - - struct Book: Codable { - let id: Int - let title: String - let image: Artwork? - let contributions: [Contribution]? - - struct Artwork: Codable { - let url: String? - } - - struct Contribution: Codable { - let author: Author? - - struct Author: Codable { - let name: String? - } - } - } -} diff --git a/BookPlayer/Hardcover/Network/Models/BookByIdData.swift b/BookPlayer/Hardcover/Network/Models/BookByIdData.swift new file mode 100644 index 000000000..eac695eee --- /dev/null +++ b/BookPlayer/Hardcover/Network/Models/BookByIdData.swift @@ -0,0 +1,33 @@ +// +// BookByIdData.swift +// BookPlayer +// +// Created by Gianni Carlo on 5/9/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +/// Response model for fetching a single book by its Hardcover id. +struct BookByIdData: Codable { + let books: [Book] + + struct Book: Codable { + let id: Int + let title: String + let image: Artwork? + let contributions: [Contribution]? + + struct Artwork: Codable { + let url: String? + } + + struct Contribution: Codable { + let author: Author? + + struct Author: Codable { + let name: String? + } + } + } +} From 17253d7a6fd95dbbdd39c5b349cb861eeef40adf Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 6 Sep 2026 00:04:57 -0500 Subject: [PATCH 086/172] chore: sweep whitespace left behind in ImportManager The external-import extraction left trailing-whitespace lines and a stray blank before the closing brace where the mailbox members used to live. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Import/ImportManager.swift | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/BookPlayer/Import/ImportManager.swift b/BookPlayer/Import/ImportManager.swift index 444f7b88d..81fab0fe6 100644 --- a/BookPlayer/Import/ImportManager.swift +++ b/BookPlayer/Import/ImportManager.swift @@ -22,9 +22,8 @@ final class ImportManager: ObservableObject { private var subscription: AnyCancellable? private var timer: Timer? private var files = CurrentValueSubject, Never>(Set()) - + public var operationPublisher = PassthroughSubject() - init(libraryService: LibraryServiceProtocol) { self.libraryService = libraryService @@ -151,6 +150,4 @@ final class ImportManager: ObservableObject { } } } - - } From 1213e1250b42ea73c2ec99d5d03550ada769a8ea Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 6 Sep 2026 00:16:54 -0500 Subject: [PATCH 087/172] chore: delete the rebase-resurrected zombie files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The #1523 squash-rebase resurrected two files that develop had deliberately deleted in the connection-flow and integrations reworks: JellyfinConnectionFormViewModel and JellyfinLibraryGridView (with its MockJellyfinLibraryViewModel). Both were git-tracked but never pbxproj-registered, so they never compiled — dead on arrival, including every conformance edit this branch faithfully made to the grid file's mock along the way. A three-signal sweep of all 33 PR-added Swift files (develop deletion history x pbxproj registration x external type references) found exactly these two. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../JellyfinConnectionFormViewModel.swift | 23 --- .../GridLayout/JellyfinLibraryGridView.swift | 179 ------------------ 2 files changed, 202 deletions(-) delete mode 100644 BookPlayer/Jellyfin/Connection Screen/JellyfinConnectionFormViewModel.swift delete mode 100644 BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift diff --git a/BookPlayer/Jellyfin/Connection Screen/JellyfinConnectionFormViewModel.swift b/BookPlayer/Jellyfin/Connection Screen/JellyfinConnectionFormViewModel.swift deleted file mode 100644 index 22c3c65af..000000000 --- a/BookPlayer/Jellyfin/Connection Screen/JellyfinConnectionFormViewModel.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// JellyfinConnectionFormViewModel.swift -// BookPlayer -// -// Created by Lysann Tranvouez on 2024-10-25. -// Copyright © 2024 BookPlayer LLC. All rights reserved. -// - -import Foundation -import BookPlayerKit - -class JellyfinConnectionFormViewModel: ObservableObject { - @Published var serverUrl: String = "" - @Published var serverName: String = "" - @Published var username: String = "" - @Published var password: String = "" - - func setValues(from connection: JellyfinConnectionData) { - serverUrl = connection.url.absoluteString - serverName = connection.serverName - username = connection.userName - } -} diff --git a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift deleted file mode 100644 index 2584ee341..000000000 --- a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridView.swift +++ /dev/null @@ -1,179 +0,0 @@ -// -// JellyfinLibraryGridView.swift -// BookPlayer -// -// Created by Gianni Carlo on 5/6/25. -// Copyright © 2025 BookPlayer LLC. All rights reserved. -// - -import BookPlayerKit -import SwiftUI - -struct JellyfinLibraryGridView: View { - @ObservedObject var viewModel: Model - - @ScaledMetric var accessibilityScale: CGFloat = 1 - @State private var availableSize: CGSize = .zero - private let itemMinSizeBase = CGSize(width: 100, height: 100) - private let itemMaxSizeBase = CGSize(width: 250, height: 250) - private let itemSpacingBase = 20.0 - - private func adjustSize(_ size: CGSize, availableSize: CGSize) -> CGSize { - CGSize( - width: min(size.width, availableSize.width), - height: min(size.height * accessibilityScale, availableSize.height) - ) - } - - var body: some View { - GeometryReader { geometry in - AdaptiveVGrid( - numItems: viewModel.items.count, - itemMinSize: adjustSize(itemMinSizeBase, availableSize: geometry.size), - itemMaxSize: adjustSize(itemMaxSizeBase, availableSize: geometry.size), - itemSpacing: itemSpacingBase * accessibilityScale - ) { - ForEach(viewModel.items, id: \.id) { item in - JellyfinLibraryGridItemView(item: item, isSelected: viewModel.selectedItems.contains(item.id)) - .accessibilityAddTraits(.isButton) - .onTapGesture { - if viewModel.editMode.isEditing { - guard case .audiobook = item.kind else { return } - viewModel.onSelectTapped(for: item) - } else { - switch item.kind { - case .audiobook: - viewModel.navigation.path.append(JellyfinLibraryLevelData.details(data: item)) - case .userView, .folder: - viewModel.navigation.path.append(JellyfinLibraryLevelData.folder(data: item)) - } - } - } - .onAppear { - viewModel.fetchMoreItemsIfNeeded(currentItem: item) - } - .frame( - minWidth: adjustSize(itemMinSizeBase, availableSize: geometry.size).width, - maxWidth: CGFloat.greatestFiniteMagnitude, - minHeight: adjustSize(itemMinSizeBase, availableSize: geometry.size).height, - maxHeight: adjustSize(itemMaxSizeBase, availableSize: geometry.size).height - ) - } - } - } - } -} - -final class MockJellyfinLibraryViewModel: JellyfinLibraryViewModelProtocol, ObservableObject { - var useSelectedItems = false - var navigationTitle: String = "" - var navigation = BPNavigation() - var connectionService = JellyfinConnectionService() - var accountService = AccountService() - - let data: JellyfinLibraryLevelData - - var layout = JellyfinLayout.Options.grid - var sortBy = JellyfinLayout.SortBy.smart - - @Published var items: [JellyfinLibraryItem] = [] - var totalItems: Int { items.count } - var error: Error? - - var editMode: EditMode = .inactive - var selectedItems: Set = [] - var downloadRemaining: Int = 0 - var showingDownloadConfirmation: Bool = false - - init(data: JellyfinLibraryLevelData) { - self.data = data - } - - func fetchInitialItems() {} - func fetchMoreItemsIfNeeded(currentItem: JellyfinLibraryItem) {} - func cancelFetchItems() {} - - func handleDoneAction() {} - - func onEditToggleSelectTapped() {} - func onSelectTapped(for item: JellyfinLibraryItem) {} - func onSelectAllTapped() {} - func onDownloadTapped() {} - func onDownloadFolderTapped() {} - func confirmDownloadFolder() {} - func virtualImportFolderAudiobooks(useSelectedItems: Bool) {} - var pendingImportBatch: ExternalImportBatch? - func handleImportItems(useSelectedItems: Bool) async { } - func confirmExternalImport(_ resources: [SimpleExternalResource]) { } -} - -#Preview("top level") { - let model = { - let model = MockJellyfinLibraryViewModel(data: .topLevel(libraryName: "Mock Library")) - model.items = [ - JellyfinLibraryItem(id: "0.0", name: "subfolder", kind: .folder), - JellyfinLibraryItem(id: "0.1", name: "book", kind: .audiobook), - JellyfinLibraryItem(id: "0.2", name: "another book", kind: .audiobook), - JellyfinLibraryItem(id: "0.3", name: "subfolder 2", kind: .folder), - JellyfinLibraryItem( - id: "0.4", - name: "book 2 with a very very very very very long name\nmaybe even a line break?", - kind: .audiobook - ), - JellyfinLibraryItem(id: "0.5", name: "another book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.6", name: "subfolder 3", kind: .folder), - JellyfinLibraryItem(id: "0.7", name: "book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.8", name: "another book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.9", name: "subfolder 2", kind: .folder), - JellyfinLibraryItem(id: "0.10", name: "book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.11", name: "another book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.12", name: "subfolder 3", kind: .folder), - JellyfinLibraryItem(id: "0.13", name: "book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.14", name: "another book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.15", name: "subfolder 2", kind: .folder), - JellyfinLibraryItem(id: "0.16", name: "book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.17", name: "another book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.18", name: "subfolder 3", kind: .folder), - JellyfinLibraryItem(id: "0.19", name: "book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.20", name: "another book 3", kind: .audiobook), - ] - return model - }() - JellyfinLibraryView(viewModel: model) -} - -#Preview("folder") { - let model = { - let topLevelFolder = JellyfinLibraryItem(id: "0", name: "some folder", kind: .folder) - let model = MockJellyfinLibraryViewModel(data: .folder(data: topLevelFolder)) - model.items = [ - JellyfinLibraryItem(id: "0.0", name: "subfolder", kind: .folder), - JellyfinLibraryItem(id: "0.1", name: "book", kind: .audiobook), - JellyfinLibraryItem(id: "0.2", name: "another book", kind: .audiobook), - JellyfinLibraryItem(id: "0.3", name: "subfolder 2", kind: .folder), - JellyfinLibraryItem( - id: "0.4", - name: "book 2 with a very very long name\nmaybe even a line break?", - kind: .audiobook - ), - JellyfinLibraryItem(id: "0.5", name: "another book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.6", name: "subfolder 3", kind: .folder), - JellyfinLibraryItem(id: "0.7", name: "book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.8", name: "another book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.9", name: "subfolder 2", kind: .folder), - JellyfinLibraryItem(id: "0.10", name: "book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.11", name: "another book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.12", name: "subfolder 3", kind: .folder), - JellyfinLibraryItem(id: "0.13", name: "book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.14", name: "another book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.15", name: "subfolder 2", kind: .folder), - JellyfinLibraryItem(id: "0.16", name: "book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.17", name: "another book 2", kind: .audiobook), - JellyfinLibraryItem(id: "0.18", name: "subfolder 3", kind: .folder), - JellyfinLibraryItem(id: "0.19", name: "book 3", kind: .audiobook), - JellyfinLibraryItem(id: "0.20", name: "another book 3", kind: .audiobook), - ] - return model - }() - JellyfinLibraryView(viewModel: model) -} From fe625406af8a379ff06bdc3dd1137c4f5a2adcf5 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 6 Sep 2026 07:03:06 -0500 Subject: [PATCH 088/172] test: thread externalURL through develop's new chapter fixtures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #1593 landed on develop mid-review with PlayableItemTests fixtures written before this branch added externalURL/externalHeaders to PlayableChapter. The branch alone compiled — CI failed only on the PR MERGE-REF, where develop's new tests met the changed initializer. develop is merged in (8f3ac6ba) and the fixture passes externalURL: nil. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayerTests/PlayableItemTests.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/BookPlayerTests/PlayableItemTests.swift b/BookPlayerTests/PlayableItemTests.swift index 5f1511e09..2809a36ac 100644 --- a/BookPlayerTests/PlayableItemTests.swift +++ b/BookPlayerTests/PlayableItemTests.swift @@ -151,6 +151,7 @@ class PlayableItemTests: XCTestCase { duration: duration, relativePath: "book.m4b", remoteURL: nil, + externalURL: nil, index: index ) } From dd95972ea6fa95661ff63cefd83a410381ffc4ad Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 6 Sep 2026 11:02:43 -0500 Subject: [PATCH 089/172] refactor: extract a reusable import-confirmation shell into its own file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ImportConfirmationView + ImportConfirmationRow are extracted from ExternalImportView into Import/ImportConfirmationView.swift — the flow-agnostic home — making explicit that ExternalImportView is ONE flow's use of the shell, not the shell itself. The shell is presentation-agnostic (neutral rows with icon/title/subtitle slots, onRemove/onConfirm/onCancel closures) following the provider-details wrapper pattern this PR established; everything it takes is used today. It also closes a parity gap with the file flow's ImportViewController: confirm is disabled at zero rows (confirming an emptied list was a silent no-op). The row icon and subtitle slots are exactly what the file-import flow needs to adopt the shell later and retire ImportViewController/ImportCoordinator/the storyboard — the plan is recorded in session memory. Dismissal and destructive-cancel semantics deliberately stay with the flow wrappers. pbxproj entries mirrored from ImportManager's. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 4 + .../ExternalSource/ExternalImportView.swift | 117 +++------------ .../Import/ImportConfirmationView.swift | 142 ++++++++++++++++++ 3 files changed, 168 insertions(+), 95 deletions(-) create mode 100644 BookPlayer/Import/ImportConfirmationView.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 797795271..f7fb6b2b5 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -188,6 +188,7 @@ 41A1B129226F88C500EA0400 /* Folder+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41A1B11B226F88C500EA0400 /* Folder+CoreDataClass.swift */; }; 41A1B12A226F88C500EA0400 /* Folder+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41A1B11C226F88C500EA0400 /* Folder+CoreDataProperties.swift */; }; 41A1B12D226FC7E500EA0400 /* ImportManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416B63A72146354B007D04B1 /* ImportManager.swift */; }; + 6D464C6A588947878DCF1DB4 /* ImportConfirmationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E00DA9C0FECB434386459560 /* ImportConfirmationView.swift */; }; 41A1B12E226FC7E500EA0400 /* ImportOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41E34E4F2138EA8200A3997C /* ImportOperation.swift */; }; 41A1B12F226FE0F900EA0400 /* Notification+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416B640C1E72F362000E955A /* Notification+BookPlayer.swift */; }; 41A1B131226FE33500EA0400 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = D367F7671FA2A6F000FEDB37 /* Constants.swift */; }; @@ -1267,6 +1268,7 @@ 416AAC3023F44A88005AD04F /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; }; 416AAC3223F51031005AD04F /* LocalizableButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizableButton.swift; sourceTree = ""; }; 416B63A72146354B007D04B1 /* ImportManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportManager.swift; sourceTree = ""; }; + E00DA9C0FECB434386459560 /* ImportConfirmationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportConfirmationView.swift; sourceTree = ""; }; 416B640C1E72F362000E955A /* Notification+BookPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Notification+BookPlayer.swift"; sourceTree = ""; }; 416BF8A526537A4C00239166 /* BookPlayer-NoCarPlay.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "BookPlayer-NoCarPlay.entitlements"; sourceTree = ""; }; 416E40F32404BD5C006FA2EF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.stringsdict"; sourceTree = ""; }; @@ -2574,6 +2576,7 @@ 62793612272CC19E0097837D /* Models */, 62793613272CC9D50097837D /* Views */, 416B63A72146354B007D04B1 /* ImportManager.swift */, + E00DA9C0FECB434386459560 /* ImportConfirmationView.swift */, 4197FAFB267E480100811CC8 /* ImportViewController.swift */, 41C8ABD026836F50003B67D1 /* ImportViewModel.swift */, ); @@ -5080,6 +5083,7 @@ 8A9D0D2A2CCFBB96007A924D /* JellyfinLibraryGridItemView.swift in Sources */, 6338C78F2E4AA327008016E5 /* BookView.swift in Sources */, 41A1B12D226FC7E500EA0400 /* ImportManager.swift in Sources */, + 6D464C6A588947878DCF1DB4 /* ImportConfirmationView.swift in Sources */, 6370434C2E2C046F005353D1 /* SettingsPrivacySectionView.swift in Sources */, 8A9D0D242CCED53C007A924D /* JellyfinLibraryViewModel.swift in Sources */, 631908AA2E369BDB009249C1 /* ProgressSeekingSectionView.swift in Sources */, diff --git a/BookPlayer/Import/ExternalSource/ExternalImportView.swift b/BookPlayer/Import/ExternalSource/ExternalImportView.swift index 2af6676ac..9daf0486c 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportView.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportView.swift @@ -8,6 +8,9 @@ import SwiftUI import BookPlayerKit +/// The external (media-server) flow's confirmation sheet: owns the batch-seeded VM +/// and maps it onto the shared `ImportConfirmationView` shell — one flow's use of +/// that shell, not the shell itself. struct ExternalImportView: View { /// Owns the confirmation VM (initModel/@StateObject pattern): the VM is seeded /// with the batch VALUE and survives re-renders of the presenting view. @@ -17,103 +20,26 @@ struct ExternalImportView: View { self._viewModel = .init(wrappedValue: initModel()) } @Environment(\.dismiss) var dismiss - @EnvironmentObject private var theme: ThemeViewModel - + var body: some View { - ZStack { - theme.systemBackgroundColor - .ignoresSafeArea() - - VStack(alignment: .leading, spacing: 20) { - HStack { - Button { - // Dismissal alone is cancellation: .sheet(item:) nils the staged batch - dismiss() - } label: { - Image(systemName: "xmark") - .accessibilityLabel("cancel_button".localized) - .bpFont(.title) - .foregroundColor(theme.primaryColor) - .frame(width: 44, height: 44) - .background( - Circle().stroke(theme.systemBackgroundColor.opacity(0.3), lineWidth: 1) - ) - } - - Spacer() - - Button { - viewModel.confirm() - dismiss() - } label: { - Image(systemName: "checkmark") - .accessibilityLabel("import_button".localized) - .bpFont(.title) - .foregroundColor(theme.primaryColor) - .frame(width: 44, height: 44) - .background( - Circle().stroke(theme.systemBackgroundColor.opacity(0.3), lineWidth: 1) - ) - } - } - .safeAreaPadding(.top) - - // Headers - Text("import_title".localized) - .bpFont(.titleStory) - .fontWeight(.bold) - .foregroundColor(theme.primaryColor) - - Text("import_warning_description".localized) - .bpFont(.subheadline) - .foregroundColor(theme.primaryColor.opacity(0.6)) - .lineSpacing(4) - - Text(String.localizedStringWithFormat("files_title".localized, viewModel.resources.count)) - .bpFont(.headline) - .foregroundColor(theme.primaryColor.opacity(0.6)) - .padding(.top, 10) - - ScrollView { - LazyVStack(spacing: 0) { - ForEach(viewModel.resources, id: \.providerId) { resource in - HStack(spacing: 16) { - Button { - withAnimation { - viewModel.removeResource(withId: resource.providerId) - } - } label: { - Image(systemName: "minus.circle.fill") - .accessibilityLabel("delete_button".localized) - .foregroundColor(.red) - .bpFont(.titleLarge) - } - - // Waveform Icon - Image(systemName: "waveform") - .foregroundColor(.pink) - - // File Name - Text(resource.libraryItem?.originalFileName ?? "voiceover_unknown_title".localized) - .foregroundColor(theme.primaryColor) - .bpFont(.footnote) - .lineLimit(1) - - Spacer() - } - .padding(.vertical, 14) - - // Separator - Divider() - .background(theme.systemBackgroundColor.opacity(0.2)) - } - } - } - - Spacer() + ImportConfirmationView( + rows: viewModel.resources.map { resource in + ImportConfirmationRow( + id: resource.providerId, + icon: "waveform", + title: resource.libraryItem?.originalFileName ?? "voiceover_unknown_title".localized + ) + }, + onRemove: { viewModel.removeResource(withId: $0) }, + onConfirm: { + viewModel.confirm() + dismiss() + }, + onCancel: { + // Dismissal alone is cancellation: .sheet(item:) nils the staged batch + dismiss() } - .padding(.horizontal, 24) - } + ) } } @@ -127,5 +53,6 @@ struct ExternalImportView_Previews: PreviewProvider { ) } ) + .environmentObject(ThemeViewModel()) } } diff --git a/BookPlayer/Import/ImportConfirmationView.swift b/BookPlayer/Import/ImportConfirmationView.swift new file mode 100644 index 000000000..2dbc644c9 --- /dev/null +++ b/BookPlayer/Import/ImportConfirmationView.swift @@ -0,0 +1,142 @@ +// +// ImportConfirmationView.swift +// BookPlayer +// +// Created by Gianni Carlo on 6/9/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import SwiftUI +import BookPlayerKit + +/// One removable row of an import confirmation list. Flow-agnostic: the external +/// flow renders waveform rows from its batch; the file-import flow (a future +/// adoption replacing ImportViewController) adds folder icons and "N files" +/// subtitles from its own view model. +struct ImportConfirmationRow: Identifiable { + let id: String + let icon: String + let title: String + var subtitle: String? +} + +/// The reusable import-confirmation shell: header, description, count, a removable +/// row list, and cancel/confirm actions. Deliberately presentation-agnostic — +/// dismissal, destructive-cancel semantics, and row sourcing belong to the flow +/// wrappers (see `ExternalImportView`; `ImportViewController` is the future +/// adopter for the file flow, whose ImportViewModel is already an +/// ObservableObject publishing its rows). +struct ImportConfirmationView: View { + let rows: [ImportConfirmationRow] + let onRemove: (ImportConfirmationRow.ID) -> Void + let onConfirm: () -> Void + let onCancel: () -> Void + + @EnvironmentObject private var theme: ThemeViewModel + + var body: some View { + ZStack { + theme.systemBackgroundColor + .ignoresSafeArea() + + VStack(alignment: .leading, spacing: 20) { + HStack { + Button { + onCancel() + } label: { + Image(systemName: "xmark") + .accessibilityLabel("cancel_button".localized) + .bpFont(.title) + .foregroundColor(theme.primaryColor) + .frame(width: 44, height: 44) + .background( + Circle().stroke(theme.systemBackgroundColor.opacity(0.3), lineWidth: 1) + ) + } + + Spacer() + + Button { + onConfirm() + } label: { + Image(systemName: "checkmark") + .accessibilityLabel("import_button".localized) + .bpFont(.title) + .foregroundColor(theme.primaryColor) + .frame(width: 44, height: 44) + .background( + Circle().stroke(theme.systemBackgroundColor.opacity(0.3), lineWidth: 1) + ) + } + // Parity with the file flow's ImportViewController, which disables Done + // at zero files: confirming an emptied list is a no-op — don't offer it + .disabled(rows.isEmpty) + } + .safeAreaPadding(.top) + + // Headers + Text("import_title".localized) + .bpFont(.titleStory) + .fontWeight(.bold) + .foregroundColor(theme.primaryColor) + + Text("import_warning_description".localized) + .bpFont(.subheadline) + .foregroundColor(theme.primaryColor.opacity(0.6)) + .lineSpacing(4) + + Text(String.localizedStringWithFormat("files_title".localized, rows.count)) + .bpFont(.headline) + .foregroundColor(theme.primaryColor.opacity(0.6)) + .padding(.top, 10) + + ScrollView { + LazyVStack(spacing: 0) { + ForEach(rows) { row in + HStack(spacing: 16) { + Button { + withAnimation { + onRemove(row.id) + } + } label: { + Image(systemName: "minus.circle.fill") + .accessibilityLabel("delete_button".localized) + .foregroundColor(.red) + .bpFont(.titleLarge) + } + + Image(systemName: row.icon) + .foregroundColor(.pink) + .accessibilityHidden(true) + + VStack(alignment: .leading, spacing: 2) { + Text(row.title) + .foregroundColor(theme.primaryColor) + .bpFont(.footnote) + .lineLimit(1) + + if let subtitle = row.subtitle { + Text(subtitle) + .foregroundColor(theme.secondaryColor) + .bpFont(.caption) + .lineLimit(1) + } + } + + Spacer() + } + .padding(.vertical, 14) + + // Separator + Divider() + .background(theme.systemBackgroundColor.opacity(0.2)) + } + } + } + + Spacer() + } + .padding(.horizontal, 24) + } + } +} From a9d14cc7e390dd623ae64d9d17f18d2f2e87476c Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 6 Sep 2026 11:09:04 -0500 Subject: [PATCH 090/172] test: pin the confirmation-row mapping on the view model MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The resources->rows mapping — provider identity as the row id (removal keys on it), the real filename as the title, and the unknown-title fallback for resources without a library item — lived in the view body where nothing could test it. It's now a computed property on ExternalImportViewModel, pinned by testConfirmationRowsMapIdentityFilenameAndFallback. Standing rule applied: refactors harvest their testability wins. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ExternalSource/ExternalImportView.swift | 8 +--- .../ExternalImportViewModel.swift | 12 +++++ BookPlayerTests/ImportOperationTests.swift | 48 +++++++++++++++++++ 3 files changed, 61 insertions(+), 7 deletions(-) diff --git a/BookPlayer/Import/ExternalSource/ExternalImportView.swift b/BookPlayer/Import/ExternalSource/ExternalImportView.swift index 9daf0486c..270d2f6bc 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportView.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportView.swift @@ -23,13 +23,7 @@ struct ExternalImportView: View { var body: some View { ImportConfirmationView( - rows: viewModel.resources.map { resource in - ImportConfirmationRow( - id: resource.providerId, - icon: "waveform", - title: resource.libraryItem?.originalFileName ?? "voiceover_unknown_title".localized - ) - }, + rows: viewModel.confirmationRows, onRemove: { viewModel.removeResource(withId: $0) }, onConfirm: { viewModel.confirm() diff --git a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift index 29f8bc0b0..19dd3f688 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift @@ -42,6 +42,18 @@ final class ExternalImportViewModel: ObservableObject { self.onConfirm = onConfirm } + /// The confirmation-shell rows for the current batch. Pure mapping, kept on the + /// VM (not in the view body) so the identity/filename/fallback rules are testable. + var confirmationRows: [ImportConfirmationRow] { + resources.map { resource in + ImportConfirmationRow( + id: resource.providerId, + icon: "waveform", + title: resource.libraryItem?.originalFileName ?? "voiceover_unknown_title".localized + ) + } + } + func removeResource(withId id: String) { resources.removeAll { $0.providerId == id } } diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 068a1e052..bd0bb98b6 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -231,6 +231,54 @@ final class ExternalImportViewModelTests: XCTestCase { XCTAssertEqual(confirmed?.map(\.providerId), ["a"], "confirm sends the batch as edited, not as staged") } + + /// The shell-row mapping: id carries the provider identity (removal is keyed on + /// it), the title is the real filename, and a resource with no library item falls + /// back to the unknown-title copy instead of rendering empty. + func testConfirmationRowsMapIdentityFilenameAndFallback() { + let named = SimpleExternalResource( + providerName: "jellyfin", + providerId: "row-1", + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + libraryItem: SimpleLibraryItem( + title: "Book", + details: "Author", + speed: 1.0, + currentTime: 0, + duration: 10, + percentCompleted: 0, + isFinished: false, + relativePath: "row-1-book.m4b", + remoteURL: nil, + artworkURL: nil, + orderRank: 0, + parentFolder: nil, + originalFileName: "book.m4b", + lastPlayDate: nil, + type: .book, + uuid: "uuid-1" + ) + ) + let orphan = SimpleExternalResource( + providerName: "jellyfin", + providerId: "row-2", + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + libraryItem: nil + ) + let sut = ExternalImportViewModel( + batch: ExternalImportBatch(resources: [named, orphan]), + onConfirm: { _ in } + ) + + let rows = sut.confirmationRows + + XCTAssertEqual(rows.map(\.id), ["row-1", "row-2"]) + XCTAssertEqual(rows.first?.title, "book.m4b") + XCTAssertEqual(rows.last?.title, "voiceover_unknown_title".localized) + XCTAssertEqual(rows.map(\.icon), ["waveform", "waveform"]) + } } // MARK: - Confirm destinations (bulk vs details) From 06bb846191099dee00575b03f3a41b83f69b441b Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 6 Sep 2026 12:01:23 -0500 Subject: [PATCH 091/172] refactor: fold the duplicated Jellyfin import flow into a protocol extension MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit virtualImportFolderAudiobooks (45 lines), handleImportItems (12) and confirmExternalImport (7) were byte-identical between JellyfinLibraryViewModel and JellyfinPersonBooksViewModel — the residue the VM collapse left behind. JellyfinFolderImporting now hosts all three shared bodies: handleImportItems and confirmExternalImport are extension-witnessed protocol defaults (both copies deleted from the classes), and runFolderImport carries the shared import body. Each VM keeps a six-line virtualImportFolderAudiobooks wrapper holding the isImporting reentrancy guard, so @Published private(set) survives. The persons-list VM never imports and deliberately does not conform. The bulk confirm-destination test now exercises the extension witness. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../JellyfinLibraryViewModel.swift | 216 ++++++++---------- 1 file changed, 97 insertions(+), 119 deletions(-) diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index fc6101e4a..7d6466fb6 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -29,8 +29,97 @@ enum JellyfinPersonRole { case narrator } +// MARK: - Shared folder-import flow + +/// The two Jellyfin book-listing VMs share the identical import flow verbatim; the +/// persons-list VM never imports and deliberately does not conform. handleImportItems +/// and confirmExternalImport are witnessed by the extension defaults below; +/// virtualImportFolderAudiobooks stays a per-VM wrapper so the isImporting reentrancy +/// guard keeps its @Published private(set) access. +@MainActor +protocol JellyfinFolderImporting: AnyObject, BPLogger { + var items: [JellyfinLibraryItem] { get } + var selectedItems: Set { get } + var connectionService: JellyfinConnectionService { get } + var accountService: AccountService { get } + var navigation: BPNavigation { get } + var onImportConfirmed: ([SimpleExternalResource]) -> Void { get } + var error: Error? { get set } + var pendingImportBatch: ExternalImportBatch? { get set } + + func virtualImportFolderAudiobooks(useSelectedItems: Bool) async + func onDownloadTapped() + func confirmDownloadFolder() +} + +extension JellyfinFolderImporting { + @MainActor + func handleImportItems(useSelectedItems: Bool) async { + if accountService.hasStreamingEnabled() { + await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) + } else { + if useSelectedItems { + onDownloadTapped() + } else { + confirmDownloadFolder() + } + } + } + + @MainActor + func confirmExternalImport(_ resources: [SimpleExternalResource]) { + // Bulk imports land you in the library (today's destination): send the batch on + // the import bus, then close the browser + onImportConfirmed(resources) + navigation.dismiss?() + } + + /// The shared import body — callers hold the isImporting guard. + func runFolderImport(useSelectedItems: Bool) async { + let audiobooks = useSelectedItems + ? selectedItems.compactMap({ id in + self.items.first(where: { $0.id == id }) + }) + : self.items.filter { $0.kind == .audiobook } + + + guard !audiobooks.isEmpty else { return } + + do { + let resources = try await VirtualImportPipeline.run( + items: audiobooks, + id: \.id, + hydrateExtensions: { ids in + let hydrated = try await self.connectionService.fetchItems(ids: ids) + return hydrated.reduce(into: [:]) { $0[$1.id] = $1.details?.fileExtension } + }, + buildResource: { item, fileExtension in + item.asVirtualImportResource( + fileExtension: fileExtension, + detailsOverride: nil, + connectionService: self.connectionService, + artworkSize: CGSize(width: 200, height: 200) + ) + } + ) + guard !resources.isEmpty else { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return + } + if resources.count < audiobooks.count { + Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata") + } + // Stage as a VALUE for this screen's own confirmation sheet — the browser + // stays open beneath it; dismissal happens on confirm + pendingImportBatch = ExternalImportBatch(resources: resources) + } catch { + self.error = error + } + } +} + @MainActor -final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLogger { +final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, JellyfinFolderImporting, BPLogger { enum Routes { case done } @@ -319,19 +408,6 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog } } - @MainActor - func handleImportItems(useSelectedItems: Bool) async { - if accountService.hasStreamingEnabled() { - await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) - } else { - if useSelectedItems { - onDownloadTapped() - } else { - confirmDownloadFolder() - } - } - } - @MainActor func onDownloadTapped() { let items = selectedItems.compactMap({ id in @@ -388,48 +464,12 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog @MainActor func virtualImportFolderAudiobooks(useSelectedItems: Bool) async { - // Reentrancy guard: a double-tap mid-hydration must not run two imports + // Reentrancy guard stays per-VM (isImporting keeps private(set)); the shared + // body lives in JellyfinFolderImporting.runFolderImport guard !isImporting else { return } - let audiobooks = useSelectedItems - ? selectedItems.compactMap({ id in - self.items.first(where: { $0.id == id }) - }) - : self.items.filter { $0.kind == .audiobook } - - guard !audiobooks.isEmpty else { return } isImporting = true defer { isImporting = false } - - do { - let resources = try await VirtualImportPipeline.run( - items: audiobooks, - id: \.id, - hydrateExtensions: { ids in - let hydrated = try await self.connectionService.fetchItems(ids: ids) - return hydrated.reduce(into: [:]) { $0[$1.id] = $1.details?.fileExtension } - }, - buildResource: { item, fileExtension in - item.asVirtualImportResource( - fileExtension: fileExtension, - detailsOverride: nil, - connectionService: self.connectionService, - artworkSize: CGSize(width: 200, height: 200) - ) - } - ) - guard !resources.isEmpty else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - return - } - if resources.count < audiobooks.count { - Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata") - } - // Stage as a VALUE for this screen's own confirmation sheet — the browser - // stays open beneath it; dismissal happens on confirm - pendingImportBatch = ExternalImportBatch(resources: resources) - } catch { - self.error = error - } + await runFolderImport(useSelectedItems: useSelectedItems) } @MainActor @@ -437,19 +477,12 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, BPLog self.navigation.path.append(JellyfinLibraryLevelData.subscribe) } - @MainActor - func confirmExternalImport(_ resources: [SimpleExternalResource]) { - // Bulk imports land you in the library (today's destination): send the batch on - // the import bus, then close the browser - onImportConfirmed(resources) - navigation.dismiss?() - } } // MARK: - Author Books ViewModel @MainActor -final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, BPLogger { +final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, JellyfinFolderImporting, BPLogger { let role: JellyfinPersonRole let personID: String let parentID: String? @@ -613,63 +646,15 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B navigation.dismiss?() } - @MainActor - func handleImportItems(useSelectedItems: Bool) async { - if accountService.hasStreamingEnabled() { - await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) - } else { - if useSelectedItems { - onDownloadTapped() - } else { - confirmDownloadFolder() - } - } - } @MainActor func virtualImportFolderAudiobooks(useSelectedItems: Bool) async { - // Reentrancy guard: a double-tap mid-hydration must not run two imports + // Reentrancy guard stays per-VM (isImporting keeps private(set)); the shared + // body lives in JellyfinFolderImporting.runFolderImport guard !isImporting else { return } - let audiobooks = useSelectedItems - ? selectedItems.compactMap({ id in - self.items.first(where: { $0.id == id }) - }) - : self.items.filter { $0.kind == .audiobook } - - guard !audiobooks.isEmpty else { return } isImporting = true defer { isImporting = false } - - do { - let resources = try await VirtualImportPipeline.run( - items: audiobooks, - id: \.id, - hydrateExtensions: { ids in - let hydrated = try await self.connectionService.fetchItems(ids: ids) - return hydrated.reduce(into: [:]) { $0[$1.id] = $1.details?.fileExtension } - }, - buildResource: { item, fileExtension in - item.asVirtualImportResource( - fileExtension: fileExtension, - detailsOverride: nil, - connectionService: self.connectionService, - artworkSize: CGSize(width: 200, height: 200) - ) - } - ) - guard !resources.isEmpty else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) - return - } - if resources.count < audiobooks.count { - Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata") - } - // Stage as a VALUE for this screen's own confirmation sheet — the browser - // stays open beneath it; dismissal happens on confirm - pendingImportBatch = ExternalImportBatch(resources: resources) - } catch { - self.error = error - } + await runFolderImport(useSelectedItems: useSelectedItems) } @MainActor func onDownloadFolderTapped() {} @@ -690,13 +675,6 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, B self.navigation.path.append(JellyfinLibraryLevelData.subscribe) } - @MainActor - func confirmExternalImport(_ resources: [SimpleExternalResource]) { - // Bulk imports land you in the library (today's destination): send the batch on - // the import bus, then close the browser - onImportConfirmed(resources) - navigation.dismiss?() - } } // MARK: - Persons List ViewModel (authors / narrators) From 4490351cc8fa68585042e27e658a4302734a548c Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 05:28:04 -0500 Subject: [PATCH 092/172] refactor: external-resource details section moves to its own file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ItemDetailsExternalResourceSectionView (~90 lines including the cached host resolution) lived inline in ItemDetailsView.swift while every sibling section has its own file — ItemDetailsTitleSectionView right beside it, the Hardcover section in its own folder. Moved per convention; pbxproj entries mirrored from ItemDetailsTitleSectionView's. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 4 + ...emDetailsExternalResourceSectionView.swift | 92 +++++++++++++++++++ .../Library/ItemDetails/ItemDetailsView.swift | 82 ----------------- 3 files changed, 96 insertions(+), 82 deletions(-) create mode 100644 BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index f7fb6b2b5..b10d08ee5 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -611,6 +611,7 @@ 63E15DA42D932695005B42E5 /* SleepTimerCommandsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E15DA32D932695005B42E5 /* SleepTimerCommandsView.swift */; }; 63E1FF8D2E6C835400F2E003 /* ItemDetailsFooterSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E1FF8C2E6C835400F2E003 /* ItemDetailsFooterSectionView.swift */; }; 63E1FF8F2E6C848200F2E003 /* ItemDetailsTitleSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E1FF8E2E6C848200F2E003 /* ItemDetailsTitleSectionView.swift */; }; + 234660AA5CF5435784D5AB09 /* ItemDetailsExternalResourceSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F45535E22CB7445EB5DCAA5F /* ItemDetailsExternalResourceSectionView.swift */; }; 63E1FF912E6C8C2000F2E003 /* SyncJobType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E1FF902E6C8C2000F2E003 /* SyncJobType.swift */; }; 63E1FF922E6C8C2000F2E003 /* SyncJobType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E1FF902E6C8C2000F2E003 /* SyncJobType.swift */; }; 63E54C322D494E110040355D /* RemoteItemListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E54C312D494E110040355D /* RemoteItemListViewModel.swift */; }; @@ -1701,6 +1702,7 @@ 63E15DA32D932695005B42E5 /* SleepTimerCommandsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SleepTimerCommandsView.swift; sourceTree = ""; }; 63E1FF8C2E6C835400F2E003 /* ItemDetailsFooterSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDetailsFooterSectionView.swift; sourceTree = ""; }; 63E1FF8E2E6C848200F2E003 /* ItemDetailsTitleSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDetailsTitleSectionView.swift; sourceTree = ""; }; + F45535E22CB7445EB5DCAA5F /* ItemDetailsExternalResourceSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDetailsExternalResourceSectionView.swift; sourceTree = ""; }; 63E1FF902E6C8C2000F2E003 /* SyncJobType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncJobType.swift; sourceTree = ""; }; 63E54C312D494E110040355D /* RemoteItemListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteItemListViewModel.swift; sourceTree = ""; }; 63E54C332D50576C0040355D /* TipJarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipJarView.swift; sourceTree = ""; }; @@ -3695,6 +3697,7 @@ 9F00A6232951F2F3005EA316 /* ItemDetailsViewModel.swift */, 9F00A5FB294F9B9A005EA316 /* ItemDetailsView.swift */, 63E1FF8E2E6C848200F2E003 /* ItemDetailsTitleSectionView.swift */, + F45535E22CB7445EB5DCAA5F /* ItemDetailsExternalResourceSectionView.swift */, ); path = ItemDetails; sourceTree = ""; @@ -4864,6 +4867,7 @@ 63E893982CAFAC7500946CD4 /* PlayerManagerProtocol.swift in Sources */, 631908B82E3718F8009249C1 /* AppIconView.swift in Sources */, 63E1FF8F2E6C848200F2E003 /* ItemDetailsTitleSectionView.swift in Sources */, + 234660AA5CF5435784D5AB09 /* ItemDetailsExternalResourceSectionView.swift in Sources */, 632119D72E543973005B3E10 /* ItemListViewModel.swift in Sources */, 4151A6B326E491A800E49DBE /* NibLoadableView.swift in Sources */, 63F8BDE92E421C3B0088FB66 /* CircularProgressView.swift in Sources */, diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift new file mode 100644 index 000000000..76f791b16 --- /dev/null +++ b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift @@ -0,0 +1,92 @@ +// +// ItemDetailsExternalResourceSectionView.swift +// BookPlayer +// +// Created by Gianni Carlo on 7/9/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import SwiftUI + +struct ItemDetailsExternalResourceSectionView: View { + let externalResources: [SimpleExternalResource] + + /// Resolved once on appear, keyed by providerId: resolving inside the body did a + /// synchronous keychain read + JSON decode on every render. + @State private var resolvedHosts: [String: String] = [:] + + @EnvironmentObject private var theme: ThemeViewModel + + var body: some View { + if !externalResources.isEmpty { + ThemedSection { + // Sync-created resources never populate the numeric id (all default to 0), + // so keying on Identifiable collides for multi-resource items; providerId + // is the stable key (same pattern as BookView). + ForEach(externalResources, id: \.providerId) { resource in + VStack(alignment: .leading, spacing: Spacing.S1) { + HStack { + Text("provider_title".localized) + .bold() + Spacer() + Text(resource.providerName.capitalized) + .lineLimit(1) + } + + HStack { + Text("provider_id_title".localized) + .bold() + Spacer() + Text(resource.providerId) + .lineLimit(1) + } + + if let hostId = resource.hostId, !hostId.isEmpty { + HStack { + Text("host_title".localized) + .bold() + Spacer() + Text(resolvedHosts[resource.providerId] ?? "") + .lineLimit(1) + .truncationMode(.tail) + } + } + } + .bpFont(.body) + .padding(.vertical, Spacing.S1) + } + } header: { + Text("external_resources_title".localized) + } + .onAppear { + guard resolvedHosts.isEmpty else { return } + resolvedHosts = externalResources.reduce(into: [:]) { hosts, resource in + hosts[resource.providerId] = resolveHost(resource) + } + } + } + } + + private func resolveHost(_ resource: SimpleExternalResource) -> String { + let keychainService = KeychainService() + let hostId = resource.hostId ?? "" + + switch ExternalResource.ProviderName(rawValue: resource.providerName) { + case .jellyfin: + let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] + if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { + return connection.url.absoluteString + } + case .audiobookshelf: + let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] + if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { + return connection.url.absoluteString + } + default: + break + } + + return hostId + } +} diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift index f1749900c..19938cf5b 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift @@ -133,85 +133,3 @@ struct ItemDetailsView: View { } } -struct ItemDetailsExternalResourceSectionView: View { - let externalResources: [SimpleExternalResource] - - /// Resolved once on appear, keyed by providerId: resolving inside the body did a - /// synchronous keychain read + JSON decode on every render. - @State private var resolvedHosts: [String: String] = [:] - - @EnvironmentObject private var theme: ThemeViewModel - - var body: some View { - if !externalResources.isEmpty { - ThemedSection { - // Sync-created resources never populate the numeric id (all default to 0), - // so keying on Identifiable collides for multi-resource items; providerId - // is the stable key (same pattern as BookView). - ForEach(externalResources, id: \.providerId) { resource in - VStack(alignment: .leading, spacing: Spacing.S1) { - HStack { - Text("provider_title".localized) - .bold() - Spacer() - Text(resource.providerName.capitalized) - .lineLimit(1) - } - - HStack { - Text("provider_id_title".localized) - .bold() - Spacer() - Text(resource.providerId) - .lineLimit(1) - } - - if let hostId = resource.hostId, !hostId.isEmpty { - HStack { - Text("host_title".localized) - .bold() - Spacer() - Text(resolvedHosts[resource.providerId] ?? "") - .lineLimit(1) - .truncationMode(.tail) - } - } - } - .bpFont(.body) - .padding(.vertical, Spacing.S1) - } - } header: { - Text("external_resources_title".localized) - } - .onAppear { - guard resolvedHosts.isEmpty else { return } - resolvedHosts = externalResources.reduce(into: [:]) { hosts, resource in - hosts[resource.providerId] = resolveHost(resource) - } - } - } - } - - private func resolveHost(_ resource: SimpleExternalResource) -> String { - let keychainService = KeychainService() - let hostId = resource.hostId ?? "" - - switch ExternalResource.ProviderName(rawValue: resource.providerName) { - case .jellyfin: - let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] - if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { - return connection.url.absoluteString - } - case .audiobookshelf: - let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] - if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { - return connection.url.absoluteString - } - default: - break - } - - return hostId - } -} - From c3a2b94c70079bfcf2fcfd9be3c4a2ab526c1e2a Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 05:48:24 -0500 Subject: [PATCH 093/172] refactor: item details resolves external hosts in the view model, off-main MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The section view constructed a KeychainService and did synchronous keychain reads + JSON decodes on the main thread once per appearance — a view holding a keychain dependency was the real smell. Injecting a shared instance was considered and rejected: KeychainService is stateless, not part of CoreServices, and instance identity only matters for its update publisher, so injection bought nothing. ItemDetailsViewModel now resolves the hosts off the main thread (Task.detached) into @Published resolvedExternalHosts during its existing appear-load Task, and the section renders plain data. The pure resolver is a static with an injected KeychainServiceProtocol, pinned by ItemDetailsHostResolutionTests via a dictionary-backed stub (no generated mock exists — the protocol has generic requirements). Closes the main-thread-read residual from the earlier details-screen caching fix. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- ...emDetailsExternalResourceSectionView.swift | 34 +---------- .../Library/ItemDetails/ItemDetailsView.swift | 5 +- .../ItemDetails/ItemDetailsViewModel.swift | 49 ++++++++++++++++ BookPlayerTests/ImportOperationTests.swift | 57 +++++++++++++++++++ 4 files changed, 113 insertions(+), 32 deletions(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift index 76f791b16..f33da54a1 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift @@ -11,10 +11,9 @@ import SwiftUI struct ItemDetailsExternalResourceSectionView: View { let externalResources: [SimpleExternalResource] - - /// Resolved once on appear, keyed by providerId: resolving inside the body did a - /// synchronous keychain read + JSON decode on every render. - @State private var resolvedHosts: [String: String] = [:] + /// Keyed by providerId; resolved by ItemDetailsViewModel off the main thread — + /// this view renders data and holds no keychain dependency. + let resolvedHosts: [String: String] @EnvironmentObject private var theme: ThemeViewModel @@ -59,34 +58,7 @@ struct ItemDetailsExternalResourceSectionView: View { } header: { Text("external_resources_title".localized) } - .onAppear { - guard resolvedHosts.isEmpty else { return } - resolvedHosts = externalResources.reduce(into: [:]) { hosts, resource in - hosts[resource.providerId] = resolveHost(resource) - } - } } } - private func resolveHost(_ resource: SimpleExternalResource) -> String { - let keychainService = KeychainService() - let hostId = resource.hostId ?? "" - - switch ExternalResource.ProviderName(rawValue: resource.providerName) { - case .jellyfin: - let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] - if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { - return connection.url.absoluteString - } - case .audiobookshelf: - let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] - if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { - return connection.url.absoluteString - } - default: - break - } - - return hostId - } } diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift index 19938cf5b..93a14348a 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift @@ -55,7 +55,10 @@ struct ItemDetailsView: View { ) if let externalResources = viewModel.item.externalResources { - ItemDetailsExternalResourceSectionView(externalResources: externalResources) + ItemDetailsExternalResourceSectionView( + externalResources: externalResources, + resolvedHosts: viewModel.resolvedExternalHosts + ) } } .onChange(of: viewModel.selectedImage) { diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift index 70fa7b0cd..ab91a9b16 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift @@ -56,6 +56,10 @@ final class ItemDetailsViewModel: ObservableObject { var showAuthor: Bool { item.type != .folder } @Published var hardcoverSectionViewModel: ItemDetailsHardcoverSectionView.Model? + /// Host display strings for the external-resources section, keyed by providerId. + /// Resolved off the main thread (keychain read + JSON decode per provider) — the + /// section view just renders this map. + @Published private(set) var resolvedExternalHosts: [String: String] = [:] init( item: SimpleLibraryItem, @@ -101,9 +105,54 @@ final class ItemDetailsViewModel: ObservableObject { Task { await resolveHardcoverSelection() + await resolveExternalHosts() } } + private func resolveExternalHosts() async { + guard let resources = item.externalResources, !resources.isEmpty else { return } + // Off-main: the section view used to do these reads synchronously on appear + let resolved = await Task.detached(priority: .utility) { + Self.resolveExternalHosts(for: resources, keychain: KeychainService()) + }.value + await MainActor.run { resolvedExternalHosts = resolved } + } + + /// Pure resolution, static with an injected keychain so it's testable without + /// constructing the view model. + static func resolveExternalHosts( + for resources: [SimpleExternalResource], + keychain: KeychainServiceProtocol + ) -> [String: String] { + resources.reduce(into: [:]) { hosts, resource in + hosts[resource.providerId] = resolveHost(resource, keychain: keychain) + } + } + + private static func resolveHost( + _ resource: SimpleExternalResource, + keychain: KeychainServiceProtocol + ) -> String { + let hostId = resource.hostId ?? "" + + switch ExternalResource.ProviderName(rawValue: resource.providerName) { + case .jellyfin: + let connections: [JellyfinConnectionData] = (try? keychain.get(.jellyfinConnection)) ?? [] + if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { + return connection.url.absoluteString + } + case .audiobookshelf: + let connections: [AudiobookShelfConnectionData] = (try? keychain.get(.audiobookshelfConnection)) ?? [] + if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { + return connection.url.absoluteString + } + default: + break + } + + return hostId + } + /// Populate the Hardcover picker selection. Prefers the full local reference; otherwise /// falls back to the hardcover external resource — showing the item's title right away, /// then fetching the real book info from Hardcover by its providerId. diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index bd0bb98b6..07e29900e 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -382,3 +382,60 @@ final class AudiobookShelfDecodingTests: XCTestCase { XCTAssertEqual(items.first?.fileExtension, "m4b", "nested metadata decodes; leading dot is stripped") } } + +// MARK: - External-resource host resolution + +/// KeychainServiceProtocol has no generated mock (generic requirements); a local +/// dictionary-backed stub is enough for the resolver's read path. +private final class KeychainStub: KeychainServiceProtocol, @unchecked Sendable { + let valueUpdatedPublisher = PassthroughSubject() + var storage: [KeychainKeys: Any] = [:] + + func set(_ value: String, key: KeychainKeys) throws { storage[key] = value } + func set(_ value: T, key: KeychainKeys) throws { storage[key] = value } + func get(_ key: KeychainKeys) throws -> String? { storage[key] as? String } + func get(_ key: KeychainKeys) throws -> T? { storage[key] as? T } + func remove(_ key: KeychainKeys) throws { storage[key] = nil } +} + +final class ItemDetailsHostResolutionTests: XCTestCase { + private func makeResource(provider: String, id: String, hostId: String?) -> SimpleExternalResource { + SimpleExternalResource( + providerName: provider, + providerId: id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: hostId, + libraryItem: nil + ) + } + + /// The pure resolver behind the details section: a hostId matching a saved + /// connection (GUID, case-insensitive per IntegrationHostResolver) renders the + /// server URL; an unknown host falls back to the raw hostId. + func testResolvesSavedConnectionsAndFallsBackToRawHostId() throws { + let keychain = KeychainStub() + try keychain.set( + [JellyfinConnectionData( + serverId: "GUID-JELLY", + url: URL(string: "https://jelly.example.com")!, + serverName: "Jelly", + userID: "u1", + userName: "user", + accessToken: "t" + )], + key: .jellyfinConnection + ) + + let resolved = ItemDetailsViewModel.resolveExternalHosts( + for: [ + makeResource(provider: "jellyfin", id: "r1", hostId: "guid-jelly"), + makeResource(provider: "jellyfin", id: "r2", hostId: "unknown-guid"), + ], + keychain: keychain + ) + + XCTAssertEqual(resolved["r1"], "https://jelly.example.com", "GUID match is case-insensitive") + XCTAssertEqual(resolved["r2"], "unknown-guid", "unknown host falls back to the raw hostId") + } +} From fca73e5108373e2e1da002912a024008efaed4a6 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 06:35:39 -0500 Subject: [PATCH 094/172] refactor: collapse the external-resources section gate into the caller MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The parent checked nil while the view internally checked isEmpty — but SimpleLibraryItem(from:) always builds a non-nil array, so the internal isEmpty was the gate doing the real work. Both conditions now live in the caller's `if let ..., !isEmpty` and the section renders unconditional content: views render data, callers decide presence. No lifecycle cost: the section holds no internal state since the host-resolution move, and item is a snapshot, so the condition never flips while the screen is open. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- ...emDetailsExternalResourceSectionView.swift | 60 +++++++++---------- .../Library/ItemDetails/ItemDetailsView.swift | 5 +- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift index f33da54a1..97c92061d 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift @@ -18,46 +18,44 @@ struct ItemDetailsExternalResourceSectionView: View { @EnvironmentObject private var theme: ThemeViewModel var body: some View { - if !externalResources.isEmpty { - ThemedSection { - // Sync-created resources never populate the numeric id (all default to 0), - // so keying on Identifiable collides for multi-resource items; providerId - // is the stable key (same pattern as BookView). - ForEach(externalResources, id: \.providerId) { resource in - VStack(alignment: .leading, spacing: Spacing.S1) { - HStack { - Text("provider_title".localized) - .bold() - Spacer() - Text(resource.providerName.capitalized) - .lineLimit(1) - } + ThemedSection { + // Sync-created resources never populate the numeric id (all default to 0), + // so keying on Identifiable collides for multi-resource items; providerId + // is the stable key (same pattern as BookView). + ForEach(externalResources, id: \.providerId) { resource in + VStack(alignment: .leading, spacing: Spacing.S1) { + HStack { + Text("provider_title".localized) + .bold() + Spacer() + Text(resource.providerName.capitalized) + .lineLimit(1) + } + + HStack { + Text("provider_id_title".localized) + .bold() + Spacer() + Text(resource.providerId) + .lineLimit(1) + } + if let hostId = resource.hostId, !hostId.isEmpty { HStack { - Text("provider_id_title".localized) + Text("host_title".localized) .bold() Spacer() - Text(resource.providerId) + Text(resolvedHosts[resource.providerId] ?? "") .lineLimit(1) - } - - if let hostId = resource.hostId, !hostId.isEmpty { - HStack { - Text("host_title".localized) - .bold() - Spacer() - Text(resolvedHosts[resource.providerId] ?? "") - .lineLimit(1) - .truncationMode(.tail) - } + .truncationMode(.tail) } } - .bpFont(.body) - .padding(.vertical, Spacing.S1) } - } header: { - Text("external_resources_title".localized) + .bpFont(.body) + .padding(.vertical, Spacing.S1) } + } header: { + Text("external_resources_title".localized) } } diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift index 93a14348a..efea4dbbb 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift @@ -54,7 +54,10 @@ struct ItemDetailsView: View { lastPlayedDate: viewModel.lastPlayedDate ) - if let externalResources = viewModel.item.externalResources { + // Both gates live HERE (SimpleLibraryItem(from:) always builds a non-nil array, + // so isEmpty is the check that actually hides the section): the view renders + // unconditional content, the caller decides presence. + if let externalResources = viewModel.item.externalResources, !externalResources.isEmpty { ItemDetailsExternalResourceSectionView( externalResources: externalResources, resolvedHosts: viewModel.resolvedExternalHosts From 961be92096ddd8acdcb2473baf6ef8440c556451 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 08:25:26 -0500 Subject: [PATCH 095/172] refactor: collapse the host resolver into one switch with a generic fetch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolveExternalHosts + resolveHost merged into a single function: the two near-identical switch branches existed only because each provider decodes a different Decodable connection array from a different keychain key. A 4-line generic hostURL(for:key:of:keychain:) over IntegrationHostIdentifiable & Decodable (the protocol exposes url) is what lets one switch-expression cover both providers. ItemDetailsHostResolutionTests passes unchanged — same entry, same semantics. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ItemDetails/ItemDetailsViewModel.swift | 43 +++++++++---------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift index ab91a9b16..62aca4f21 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift @@ -119,38 +119,35 @@ final class ItemDetailsViewModel: ObservableObject { } /// Pure resolution, static with an injected keychain so it's testable without - /// constructing the view model. + /// constructing the view model. Each provider decodes its own connection type from + /// its own keychain key — the generic `hostURL` is what lets one switch cover both. static func resolveExternalHosts( for resources: [SimpleExternalResource], keychain: KeychainServiceProtocol ) -> [String: String] { resources.reduce(into: [:]) { hosts, resource in - hosts[resource.providerId] = resolveHost(resource, keychain: keychain) + let hostId = resource.hostId ?? "" + let url: URL? = + switch ExternalResource.ProviderName(rawValue: resource.providerName) { + case .jellyfin: + hostURL(for: hostId, key: .jellyfinConnection, of: [JellyfinConnectionData].self, keychain: keychain) + case .audiobookshelf: + hostURL(for: hostId, key: .audiobookshelfConnection, of: [AudiobookShelfConnectionData].self, keychain: keychain) + default: + nil + } + hosts[resource.providerId] = url?.absoluteString ?? hostId } } - private static func resolveHost( - _ resource: SimpleExternalResource, + private static func hostURL( + for hostId: String, + key: KeychainKeys, + of type: [T].Type, keychain: KeychainServiceProtocol - ) -> String { - let hostId = resource.hostId ?? "" - - switch ExternalResource.ProviderName(rawValue: resource.providerName) { - case .jellyfin: - let connections: [JellyfinConnectionData] = (try? keychain.get(.jellyfinConnection)) ?? [] - if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { - return connection.url.absoluteString - } - case .audiobookshelf: - let connections: [AudiobookShelfConnectionData] = (try? keychain.get(.audiobookshelfConnection)) ?? [] - if let connection = IntegrationHostResolver.connection(for: hostId, in: connections) { - return connection.url.absoluteString - } - default: - break - } - - return hostId + ) -> URL? { + let connections: [T] = (try? keychain.get(key)) ?? [] + return IntegrationHostResolver.connection(for: hostId, in: connections)?.url } /// Populate the Hardcover picker selection. Prefers the full local reference; otherwise From 59a05dce057e07bf8f44a774012d20f5654a7594 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 11:28:18 -0500 Subject: [PATCH 096/172] fix: keep hardcover links out of the external-resources section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit item.externalResources carries every provider's rows, so a plain local file linked to Hardcover rendered an "External Resources" section repeating that same link as a bare provider/id pair with no host — directly under the Hardcover section that already shows it with a book picker. The rule denies hardcover rather than allowlisting jellyfin/audiobookshelf: this section is diagnostic detail, so a provider added later should appear in it instead of silently disappearing. It is a static helper for the same reason the host resolution below it is — testable without constructing the view model. resolveExternalHosts now resolves only what the section renders, so the map no longer holds an empty entry for the hardcover row. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library/ItemDetails/ItemDetailsView.swift | 11 ++++--- .../ItemDetails/ItemDetailsViewModel.swift | 19 +++++++++++- BookPlayerTests/ImportOperationTests.swift | 31 +++++++++++++++++++ 3 files changed, 55 insertions(+), 6 deletions(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift index efea4dbbb..1dc90747b 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift @@ -54,12 +54,13 @@ struct ItemDetailsView: View { lastPlayedDate: viewModel.lastPlayedDate ) - // Both gates live HERE (SimpleLibraryItem(from:) always builds a non-nil array, - // so isEmpty is the check that actually hides the section): the view renders - // unconditional content, the caller decides presence. - if let externalResources = viewModel.item.externalResources, !externalResources.isEmpty { + // The gate lives HERE: the view renders unconditional content, the caller + // decides presence. Hardcover-only items have no hosted resources, so an item + // linked to Hardcover alone shows just the section above. + let hostedResources = viewModel.hostedExternalResources + if !hostedResources.isEmpty { ItemDetailsExternalResourceSectionView( - externalResources: externalResources, + externalResources: hostedResources, resolvedHosts: viewModel.resolvedExternalHosts ) } diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift index 62aca4f21..296ba1552 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift @@ -109,8 +109,25 @@ final class ItemDetailsViewModel: ObservableObject { } } + /// The resources the external-resources section renders: media-server links only. + /// Hardcover has its own section with a book picker, so including its resource here + /// would repeat the same link as a bare provider/id pair with no host. + var hostedExternalResources: [SimpleExternalResource] { + Self.hostedResources(from: item.externalResources) + } + + /// A deny rule rather than an allowlist: a provider added later shows up in the + /// section (this is diagnostic detail) instead of silently disappearing from it. + /// Static, like the host resolution below, so the rule is testable on its own. + static func hostedResources(from resources: [SimpleExternalResource]?) -> [SimpleExternalResource] { + (resources ?? []).filter { + ExternalResource.ProviderName(rawValue: $0.providerName) != .hardcover + } + } + private func resolveExternalHosts() async { - guard let resources = item.externalResources, !resources.isEmpty else { return } + let resources = hostedExternalResources + guard !resources.isEmpty else { return } // Off-main: the section view used to do these reads synchronously on appear let resolved = await Task.detached(priority: .utility) { Self.resolveExternalHosts(for: resources, keychain: KeychainService()) diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 07e29900e..d0552b98a 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -438,4 +438,35 @@ final class ItemDetailsHostResolutionTests: XCTestCase { XCTAssertEqual(resolved["r1"], "https://jelly.example.com", "GUID match is case-insensitive") XCTAssertEqual(resolved["r2"], "unknown-guid", "unknown host falls back to the raw hostId") } + + /// The section shows media-server links only: Hardcover has its own section, and + /// repeating its link here would render a bare provider/id pair with no host. The + /// rule denies hardcover rather than allowlisting known providers, so a provider + /// added later still appears. + func testHostedResourcesDropsHardcoverAndKeepsUnknownProviders() { + let hosted = ItemDetailsViewModel.hostedResources( + from: [ + makeResource(provider: "jellyfin", id: "r1", hostId: "guid-jelly"), + makeResource(provider: "hardcover", id: "12345", hostId: nil), + makeResource(provider: "audiobookshelf", id: "r2", hostId: "https://abs.example.com"), + makeResource(provider: "somethingnew", id: "r3", hostId: "guid-new"), + ] + ) + + XCTAssertEqual( + hosted.map(\.providerId), + ["r1", "r2", "r3"], + "hardcover is dropped; every other provider — including an unknown one — is kept" + ) + } + + /// A Hardcover-only item must render no external-resources section at all. + func testHostedResourcesIsEmptyForHardcoverOnlyAndForNoResources() { + XCTAssertTrue( + ItemDetailsViewModel.hostedResources( + from: [makeResource(provider: "hardcover", id: "12345", hostId: nil)] + ).isEmpty + ) + XCTAssertTrue(ItemDetailsViewModel.hostedResources(from: nil).isEmpty) + } } From 2bcc7ee6bc6b5532717194a13dc4257c92aec68d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 11:28:26 -0500 Subject: [PATCH 097/172] fix: never render an empty host field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The host row showed a bold "Host" label next to an empty string until resolution landed. The raw hostId is what the resolver itself falls back to for a host with no saved connection, so the view falls back to it too: the field starts on the raw value and upgrades in place to the server URL. No spinner — resolution is a local keychain read, so one would flicker for a frame rather than communicate anything. Hosts also resolve before the hardcover selection now. That path can await a GraphQL fetch, and it has a spinner plus an interim title to cover the wait; the host row has neither, so it should not be the one queued behind a network call. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ItemDetails/ItemDetailsExternalResourceSectionView.swift | 5 ++++- BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift index 97c92061d..e0bbe1d42 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift @@ -45,7 +45,10 @@ struct ItemDetailsExternalResourceSectionView: View { Text("host_title".localized) .bold() Spacer() - Text(resolvedHosts[resource.providerId] ?? "") + // The raw hostId is what resolution itself falls back to for a host + // with no saved connection, so showing it until (or instead of) a + // resolved URL keeps the field from ever rendering empty. + Text(resolvedHosts[resource.providerId] ?? hostId) .lineLimit(1) .truncationMode(.tail) } diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift index 296ba1552..cd951d815 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift @@ -104,8 +104,11 @@ final class ItemDetailsViewModel: ObservableObject { ) Task { - await resolveHardcoverSelection() + // Hosts first: it is a local keychain read feeding a row that has no loading + // state, while the hardcover path can await a network fetch (and shows a + // spinner for it) — the reverse order left the host field waiting on it. await resolveExternalHosts() + await resolveHardcoverSelection() } } From f33e7282997140cd65cecb8c192b1a3a371f74d0 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 11:44:57 -0500 Subject: [PATCH 098/172] chore: drop the dead audiobookshelfService property from ItemListView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unused on develop too — the declaration was its only occurrence across ItemListView and its +Sheets/+Alerts/+ConfirmationDialogs extensions. Its jellyfinService twin on the line above went with this PR's refresh work, which builds throwaway connection services on purpose (ItemListViewModel :878-880) rather than pinning connections on the shared environment instances, so neither property has a reason to exist. Leaving exactly one behind was the only asymmetry. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Library/ItemList/ItemListView.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/BookPlayer/Library/ItemList/ItemListView.swift b/BookPlayer/Library/ItemList/ItemListView.swift index 3deceebf7..fc7aaaad2 100644 --- a/BookPlayer/Library/ItemList/ItemListView.swift +++ b/BookPlayer/Library/ItemList/ItemListView.swift @@ -32,7 +32,6 @@ struct ItemListView: View { @Environment(\.syncService) var syncService @Environment(\.hardcoverService) var hardcoverService @Environment(\.playerLoaderService) private var playerLoaderService - @Environment(\.audiobookshelfService) var audiobookshelfService @Environment(\.preferencesService) var preferencesService @Environment(\.listState) var listState @Environment(\.playerState) private var playerState From bc7690142d2111491f0e61bc2b2c5dcfbc7a6899 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 12:25:45 -0500 Subject: [PATCH 099/172] fix: offer Media Servers when a server is missing, not when sync is off MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The playback-failure alert keyed its Media Servers shortcut on `remoteURL == nil`, but the API returns a presigned URL for every synced item even when no object is behind it. That branch therefore only ever meant "this account doesn't sync": it offered the shortcut to free users on ANY missing file — plain local imports included — and withheld it from pro/lite users in the one case it was written for, a synced item on a device where its media server was never added. PlaybackService now records `hasUnresolvedExternalHost` where the host resolution already fails, and the shortcut requires the streaming entitlement plus a media-server resource that either failed to stream (expired token, server down) or can't resolve its host. Both alert sites share one decision function instead of a copied condition. The streaming pick also filters to media-server providers explicitly: hardcover links share the item's resource relationship and sort between "audiobookshelf" and "jellyfin", so one returning from sync as anything but not_synced would have won the pick and left a streamable item with no external URL at all. `hasUnresolvedExternalHost` stays out of PlayableChapter's CodingKeys alongside externalUrl/externalHeaders — it's a per-device resolution result, and the receiving side re-resolves against its own saved connections. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Player/PlayerManager.swift | 50 ++++++-- BookPlayer/Utils/AppServices.swift | 3 +- BookPlayerTests/ImportOperationTests.swift | 120 ++++++++++++++++++ BookPlayerTests/PlayerManagerTests.swift | 5 +- .../Lightweight-Models/PlayableChapter.swift | 14 +- Shared/Services/PlaybackService.swift | 43 +++++-- 6 files changed, 209 insertions(+), 26 deletions(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index ef6c757bd..2dde7f40d 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -18,6 +18,9 @@ import Sentry final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BPLogger { private let libraryService: LibraryServiceProtocol private let playbackService: PlaybackServiceProtocol + /// Narrow read of the streaming entitlement (pro or lite), not the whole account + /// service — the media-servers shortcut is only actionable for a tier that can stream. + private let hasStreamingEnabled: () -> Bool private let syncService: SyncServiceProtocol private let speedService: SpeedServiceProtocol private let userActivityManager: UserActivityManager @@ -86,7 +89,8 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP syncService: SyncServiceProtocol, speedService: SpeedServiceProtocol, shakeMotionService: ShakeMotionServiceProtocol, - widgetReloadService: WidgetReloadServiceProtocol + widgetReloadService: WidgetReloadServiceProtocol, + hasStreamingEnabled: @escaping () -> Bool ) { self.libraryService = libraryService self.playbackService = playbackService @@ -95,6 +99,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP self.userActivityManager = UserActivityManager(libraryService: libraryService) self.shakeMotionService = shakeMotionService self.widgetReloadService = widgetReloadService + self.hasStreamingEnabled = hasStreamingEnabled super.init() setupPlayerInstance() @@ -512,6 +517,36 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP SharedWidgetStore.store(item) } + /// Whether a failed load should offer the Media Servers shortcut, for this chapter. + private func offersMediaServers(for chapter: PlayableChapter) -> Bool { + Self.shouldOfferMediaServers( + fileExists: FileManager.default.fileExists(atPath: chapter.fileURL.path), + chapter: chapter, + isStreamingEnabled: hasStreamingEnabled() + ) + } + + /// Offer the shortcut only when going to Media Servers could actually fix the failure: + /// the tier can stream at all, the file isn't on disk, and the item is backed by a media + /// server that either failed to stream (expired token, server down) or isn't configured + /// on this device. An item with no media-server resource never qualifies — its missing + /// file has nothing to do with a server. + /// + /// Deliberately does NOT consider `remoteURL`: the API returns a presigned URL for every + /// synced item even when no object is behind it, so a nil remoteURL only ever meant + /// "this account doesn't sync", which pointed the shortcut at free users (including for + /// plain local files) while withholding it from the paying users who hit the missing-server + /// case. + static func shouldOfferMediaServers( + fileExists: Bool, + chapter: PlayableChapter, + isStreamingEnabled: Bool + ) -> Bool { + guard isStreamingEnabled, !fileExists else { return false } + + return chapter.externalUrl != nil || chapter.hasUnresolvedExternalHost + } + func loadChapterMetadata(_ chapter: PlayableChapter, autoplay: Bool? = nil, forceRefreshURL: Bool = false) { if let autoplay { playbackQueued = autoplay @@ -526,13 +561,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP } catch { var actions = [BPActionItem.okAction] - // Offer the Media Servers shortcut when streaming is the missing piece: either an - // external URL resolved and failed (auth/network), or — the cross-device case — the - // item has NO local file and NO cloud copy, which for an errored load means its - // media-server connection isn't configured on this device (externalUrl stays nil - // precisely because no saved server matched the resource's host). - if !FileManager.default.fileExists(atPath: chapter.fileURL.path), - chapter.externalUrl != nil || chapter.remoteURL == nil { + if offersMediaServers(for: chapter) { actions.append( BPActionItem(title: "media_servers_title".localized) { NotificationCenter.default.post(name: .showMediaServers, object: nil) @@ -1335,10 +1364,7 @@ extension PlayerManager { if playbackQueued == true { var actions = [BPActionItem.okAction] - // Same missing-source rule as the chapter-load failure path (see loadChapterTask). - if let chapter = currentItem?.currentChapter, - !FileManager.default.fileExists(atPath: chapter.fileURL.path), - chapter.externalUrl != nil || chapter.remoteURL == nil { + if let chapter = currentItem?.currentChapter, offersMediaServers(for: chapter) { actions.append( BPActionItem(title: "media_servers_title".localized) { NotificationCenter.default.post(name: .showMediaServers, object: nil) diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index 584e8a12a..d2500aac8 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -97,7 +97,8 @@ final class AppServices: BPLogger { syncService: syncService, speedService: SpeedService(libraryService: libraryService), shakeMotionService: ShakeMotionService(), - widgetReloadService: WidgetReloadService() + widgetReloadService: WidgetReloadService(), + hasStreamingEnabled: { accountService.hasStreamingEnabled() } ) let watchService = PhoneWatchConnectivityService( libraryService: libraryService, diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index d0552b98a..8b36fe8c8 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -460,6 +460,48 @@ final class ItemDetailsHostResolutionTests: XCTestCase { ) } + /// The streaming pick must ignore Hardcover links. They share the item's resource + /// relationship and "hardcover" sorts between "audiobookshelf" and "jellyfin", so a + /// hardcover row whose syncStatus came back from sync as anything but not_synced would + /// otherwise win the pick and leave a streamable item with no external URL. + func testMediaServerResourceIgnoresHardcoverEvenWhenItSortsFirst() { + let picked = PlaybackService.mediaServerResource(from: [ + makeResource(provider: "hardcover", id: "12345", hostId: nil), + makeResource(provider: "jellyfin", id: "r1", hostId: "guid-jelly"), + ]) + + XCTAssertEqual(picked?.providerName, "jellyfin") + XCTAssertEqual(picked?.providerId, "r1") + } + + /// Two streaming providers on one item resolve to a stable pick across launches, since + /// the underlying snapshot set is unordered. + func testMediaServerResourceIsDeterministicAcrossProviders() { + let jellyfin = makeResource(provider: "jellyfin", id: "r1", hostId: "guid-jelly") + let abs = makeResource(provider: "audiobookshelf", id: "r2", hostId: "guid-abs") + + XCTAssertEqual( + PlaybackService.mediaServerResource(from: [jellyfin, abs])?.providerId, + PlaybackService.mediaServerResource(from: [abs, jellyfin])?.providerId, + "the pick must not depend on the order the set yields" + ) + } + + func testMediaServerResourceSkipsNotSyncedAndEmptyInput() { + let notSynced = SimpleExternalResource( + providerName: "jellyfin", + providerId: "r1", + syncStatus: ExternalResource.SyncStatus.notSynced.rawValue, + lastSyncedAt: nil, + hostId: "guid-jelly", + libraryItem: nil + ) + + XCTAssertNil(PlaybackService.mediaServerResource(from: [notSynced])) + XCTAssertNil(PlaybackService.mediaServerResource(from: [])) + XCTAssertNil(PlaybackService.mediaServerResource(from: nil)) + } + /// A Hardcover-only item must render no external-resources section at all. func testHostedResourcesIsEmptyForHardcoverOnlyAndForNoResources() { XCTAssertTrue( @@ -470,3 +512,81 @@ final class ItemDetailsHostResolutionTests: XCTestCase { XCTAssertTrue(ItemDetailsViewModel.hostedResources(from: nil).isEmpty) } } + +/// The rule behind the "Media Servers" button on a playback-failure alert. +final class MediaServersShortcutTests: XCTestCase { + private func makeChapter(externalUrl: URL?, hasUnresolvedExternalHost: Bool) -> PlayableChapter { + PlayableChapter( + title: "Chapter", + author: "Author", + start: 0, + duration: 100, + relativePath: "book.m4b", + remoteURL: URL(string: "https://s3.example.com/presigned"), + externalURL: externalUrl, + index: 1, + hasUnresolvedExternalHost: hasUnresolvedExternalHost + ) + } + + /// The case the old condition got wrong: on a device where the item's media server was + /// never added, nothing resolves the host, so there is no external URL — but the API + /// still hands back a presigned remoteURL, which is what used to suppress the button. + func testOfferedWhenTheServerIsNotConfiguredOnThisDevice() { + XCTAssertTrue( + PlayerManager.shouldOfferMediaServers( + fileExists: false, + chapter: makeChapter(externalUrl: nil, hasUnresolvedExternalHost: true), + isStreamingEnabled: true + ) + ) + } + + func testOfferedWhenTheStreamItselfFailed() { + XCTAssertTrue( + PlayerManager.shouldOfferMediaServers( + fileExists: false, + chapter: makeChapter(externalUrl: URL(string: "https://jelly.example.com/stream"), hasUnresolvedExternalHost: false), + isStreamingEnabled: true + ) + ) + } + + /// A tier that can't stream has nothing to gain from the shortcut. + func testNeverOfferedWithoutTheStreamingEntitlement() { + for chapter in [ + makeChapter(externalUrl: URL(string: "https://jelly.example.com/stream"), hasUnresolvedExternalHost: false), + makeChapter(externalUrl: nil, hasUnresolvedExternalHost: true), + ] { + XCTAssertFalse( + PlayerManager.shouldOfferMediaServers( + fileExists: false, + chapter: chapter, + isStreamingEnabled: false + ) + ) + } + } + + /// A plain local file that went missing has nothing to do with a media server. + func testNotOfferedForAnItemWithNoMediaServerResource() { + XCTAssertFalse( + PlayerManager.shouldOfferMediaServers( + fileExists: false, + chapter: makeChapter(externalUrl: nil, hasUnresolvedExternalHost: false), + isStreamingEnabled: true + ) + ) + } + + /// The file is on disk, so whatever failed, a missing server isn't it. + func testNotOfferedWhenTheFileExists() { + XCTAssertFalse( + PlayerManager.shouldOfferMediaServers( + fileExists: true, + chapter: makeChapter(externalUrl: nil, hasUnresolvedExternalHost: true), + isStreamingEnabled: true + ) + ) + } +} diff --git a/BookPlayerTests/PlayerManagerTests.swift b/BookPlayerTests/PlayerManagerTests.swift index c5929b0db..dd5512c4e 100644 --- a/BookPlayerTests/PlayerManagerTests.swift +++ b/BookPlayerTests/PlayerManagerTests.swift @@ -35,7 +35,10 @@ class PlayerManagerTests: XCTestCase { syncService: SyncServiceProtocolMock(), speedService: SpeedServiceProtocolMock(), shakeMotionService: ShakeMotionServiceProtocolMock(), - widgetReloadService: WidgetReloadService() + widgetReloadService: WidgetReloadService(), + // Entitled, so nothing here is suppressed by tier; the media-servers rule itself is + // covered by MediaServersShortcutTests against the pure decision function. + hasStreamingEnabled: { true } ) } diff --git a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift index 1bcaeb315..809fc0c55 100644 --- a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift +++ b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift @@ -23,7 +23,12 @@ public struct PlayableChapter: Codable, Identifiable { public let index: Int16 public let chapterOffset: TimeInterval public let externalHeaders: [String: String] - + /// The item carries a media-server resource, but no saved connection on THIS device + /// matches its host — so there is no external URL to stream and nothing to download. + /// Distinct from `externalUrl == nil`, which is also true for items that never had a + /// media server at all. + public let hasUnresolvedExternalHost: Bool + public var end: TimeInterval { return start + duration } @@ -49,7 +54,8 @@ public struct PlayableChapter: Codable, Identifiable { externalURL: URL?, index: Int16, chapterOffset: TimeInterval = 0, - externalHeaders: [String: String] = [:] + externalHeaders: [String: String] = [:], + hasUnresolvedExternalHost: Bool = false ) { self.title = title self.author = author @@ -61,9 +67,10 @@ public struct PlayableChapter: Codable, Identifiable { self.index = index self.chapterOffset = chapterOffset self.externalHeaders = externalHeaders + self.hasUnresolvedExternalHost = hasUnresolvedExternalHost } - /// `externalUrl`/`externalHeaders` are deliberately EXCLUDED from Codable: the headers carry + /// `externalUrl`/`externalHeaders`/`hasUnresolvedExternalHost` are deliberately EXCLUDED from Codable: the headers carry /// the media server's live `Authorization` token, and encoded `PlayableItem`s travel through /// the WatchConnectivity application context, which the system PERSISTS TO DISK on both /// devices. Both values are per-device, resolved from the local connection at load time @@ -85,6 +92,7 @@ public struct PlayableChapter: Codable, Identifiable { self.chapterOffset = (try? container.decodeIfPresent(TimeInterval.self, forKey: .chapterOffset)) ?? 0 self.externalUrl = nil self.externalHeaders = [:] + self.hasUnresolvedExternalHost = false } } diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index 1c6fbf7df..3dd8242cb 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -206,6 +206,28 @@ public final class PlaybackService: PlaybackServiceProtocol { ) } + /// The resource that decides streaming for an item, or nil if it has none. + /// + /// Filters to the MEDIA-SERVER providers explicitly: Hardcover links live in the same + /// relationship and sort between "audiobookshelf" and "jellyfin", so a hardcover row + /// that came back from sync with a non-`not_synced` status would otherwise win the pick + /// and leave a streamable item with no external URL at all. + /// + /// Deterministic: the snapshot set is UNORDERED, so an item linked to two streaming + /// providers would otherwise resolve to whichever the set yields first, varying between + /// launches. Stable (providerName, providerId) order pins it. + static func mediaServerResource(from resources: [SimpleExternalResource]?) -> SimpleExternalResource? { + resources? + .filter { + switch ExternalResource.ProviderName(rawValue: $0.providerName) { + case .jellyfin, .audiobookshelf: true + default: false + } + } + .sorted { ($0.providerName, $0.providerId) < ($1.providerName, $1.providerId) } + .first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) + } + func getPlayableChapters(book: SimpleLibraryItem) throws -> [PlayableChapter] { guard var chapters = self.libraryService.getChapters(from: book.relativePath) @@ -225,12 +247,7 @@ public final class PlaybackService: PlaybackServiceProtocol { var externalUrl: URL? var externalHeaders: [String: String] = [:] - // Deterministic pick: the snapshot set is UNORDERED, so an item linked to two - // streaming providers would otherwise resolve to whichever the set yields first, - // varying between launches. Stable (providerName, providerId) order pins it. - let externalResource = book.externalResources? - .sorted { ($0.providerName, $0.providerId) < ($1.providerName, $1.providerId) } - .first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) + let externalResource = Self.mediaServerResource(from: book.externalResources) if let providerRaw = externalResource?.providerName, let provider = ExternalResource.ProviderName(rawValue: providerRaw) { @@ -278,6 +295,11 @@ public final class PlaybackService: PlaybackServiceProtocol { } } + // The resource exists but nothing matched its host, which is the only way the switch + // above leaves externalUrl nil for a media-server item: the file can't be streamed or + // re-downloaded on this device until its server is added. + let hasUnresolvedExternalHost = externalResource != nil && externalUrl == nil + // If no chapters, create a single one using the book metadata guard !chapters.isEmpty else { return [ @@ -290,7 +312,8 @@ public final class PlaybackService: PlaybackServiceProtocol { remoteURL: book.remoteURL, externalURL: externalUrl, index: 1, - externalHeaders: externalHeaders + externalHeaders: externalHeaders, + hasUnresolvedExternalHost: hasUnresolvedExternalHost ) ] } @@ -307,7 +330,8 @@ public final class PlaybackService: PlaybackServiceProtocol { remoteURL: book.remoteURL, externalURL: externalUrl, index: Int16(index + 1), - externalHeaders: externalHeaders + externalHeaders: externalHeaders, + hasUnresolvedExternalHost: hasUnresolvedExternalHost ) }) } @@ -393,7 +417,8 @@ public final class PlaybackService: PlaybackServiceProtocol { chapterOffset: nestedChapters.count == 1 ? 0 : localCurrentDuration, // Without the headers a streamed chapter inside a bound book hits the media // server unauthenticated and 401s. - externalHeaders: nestedChapter.externalHeaders + externalHeaders: nestedChapter.externalHeaders, + hasUnresolvedExternalHost: nestedChapter.hasUnresolvedExternalHost ) currentDuration = TimeParser.truncateTime(currentDuration + truncatedDuration) localCurrentDuration = TimeParser.truncateTime(localCurrentDuration + localDuration) From 52fc66be32fc259f2bfa9c06711fa71b9fa39365 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 12:49:46 -0500 Subject: [PATCH 100/172] refactor: one home for the media-server resource question MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The five statics this PR accumulated existed because their enclosing types can't be cheaply constructed in a test — ItemDetailsViewModel's init does a CoreData read, touches the disk and launches a Task; PlayerManager's builds an AVPlayer with a time observer; PlaybackService news up a KeychainService inside the method. Hoisting each rule to a static was the cheap way to get it under test, and it showed in the signatures: `keychain:` and `fileExists:` are parameters no caller wants. Worse, two of them answered the same question two different ways, added two commits apart: a denylist in the details view model (not hardcover) and an allowlist in PlaybackService (jellyfin, audiobookshelf). Now `isMediaServer` on SimpleExternalResource is the single definition, and its switch has no `default`, so adding a provider is a compile error at the one place the question is answered. The streaming pick and the details filter both read from it. Host resolution moved to IntegrationHostResolver, which is already an all-static namespace and already owns connection(for:in:). The offer rule became PlayableChapter.needsMediaServer(), leaving PlayerManager a one-line instance method — and the entitlement wiring is now pinned against a real PlayerManager rather than a hoisted copy of the rule. ItemDetailsViewModel, PlayerManager and PlaybackService are left with no statics at all. Behavior note: the details section moves from denylist to allowlist, so a providerName this build doesn't know is no longer listed there. That's the trade for the exhaustive switch, which forces the decision at compile time instead of letting a new provider drift silently between the two sites. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../ItemDetails/ItemDetailsViewModel.swift | 50 +------ BookPlayer/Player/PlayerManager.swift | 34 +---- BookPlayerTests/ImportOperationTests.swift | 130 ++++++++---------- BookPlayerTests/PlayerManagerTests.swift | 42 +++++- .../Lightweight-Models/PlayableChapter.swift | 11 ++ .../SimpleExternalResource.swift | 36 +++++ .../IntegrationHostResolver.swift | 35 +++++ Shared/Services/PlaybackService.swift | 24 +--- 8 files changed, 189 insertions(+), 173 deletions(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift index cd951d815..3c3d8db39 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift @@ -112,20 +112,10 @@ final class ItemDetailsViewModel: ObservableObject { } } - /// The resources the external-resources section renders: media-server links only. - /// Hardcover has its own section with a book picker, so including its resource here - /// would repeat the same link as a bare provider/id pair with no host. + /// The resources the external-resources section renders: media-server links only, since + /// Hardcover has its own section with a book picker right above it. var hostedExternalResources: [SimpleExternalResource] { - Self.hostedResources(from: item.externalResources) - } - - /// A deny rule rather than an allowlist: a provider added later shows up in the - /// section (this is diagnostic detail) instead of silently disappearing from it. - /// Static, like the host resolution below, so the rule is testable on its own. - static func hostedResources(from resources: [SimpleExternalResource]?) -> [SimpleExternalResource] { - (resources ?? []).filter { - ExternalResource.ProviderName(rawValue: $0.providerName) != .hardcover - } + item.externalResources?.mediaServerResources ?? [] } private func resolveExternalHosts() async { @@ -133,43 +123,11 @@ final class ItemDetailsViewModel: ObservableObject { guard !resources.isEmpty else { return } // Off-main: the section view used to do these reads synchronously on appear let resolved = await Task.detached(priority: .utility) { - Self.resolveExternalHosts(for: resources, keychain: KeychainService()) + IntegrationHostResolver.hostDisplayStrings(for: resources, keychain: KeychainService()) }.value await MainActor.run { resolvedExternalHosts = resolved } } - /// Pure resolution, static with an injected keychain so it's testable without - /// constructing the view model. Each provider decodes its own connection type from - /// its own keychain key — the generic `hostURL` is what lets one switch cover both. - static func resolveExternalHosts( - for resources: [SimpleExternalResource], - keychain: KeychainServiceProtocol - ) -> [String: String] { - resources.reduce(into: [:]) { hosts, resource in - let hostId = resource.hostId ?? "" - let url: URL? = - switch ExternalResource.ProviderName(rawValue: resource.providerName) { - case .jellyfin: - hostURL(for: hostId, key: .jellyfinConnection, of: [JellyfinConnectionData].self, keychain: keychain) - case .audiobookshelf: - hostURL(for: hostId, key: .audiobookshelfConnection, of: [AudiobookShelfConnectionData].self, keychain: keychain) - default: - nil - } - hosts[resource.providerId] = url?.absoluteString ?? hostId - } - } - - private static func hostURL( - for hostId: String, - key: KeychainKeys, - of type: [T].Type, - keychain: KeychainServiceProtocol - ) -> URL? { - let connections: [T] = (try? keychain.get(key)) ?? [] - return IntegrationHostResolver.connection(for: hostId, in: connections)?.url - } - /// Populate the Hardcover picker selection. Prefers the full local reference; otherwise /// falls back to the hardcover external resource — showing the item's title right away, /// then fetching the real book info from Hardcover by its providerId. diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 2dde7f40d..89858182f 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -517,34 +517,12 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP SharedWidgetStore.store(item) } - /// Whether a failed load should offer the Media Servers shortcut, for this chapter. - private func offersMediaServers(for chapter: PlayableChapter) -> Bool { - Self.shouldOfferMediaServers( - fileExists: FileManager.default.fileExists(atPath: chapter.fileURL.path), - chapter: chapter, - isStreamingEnabled: hasStreamingEnabled() - ) - } - - /// Offer the shortcut only when going to Media Servers could actually fix the failure: - /// the tier can stream at all, the file isn't on disk, and the item is backed by a media - /// server that either failed to stream (expired token, server down) or isn't configured - /// on this device. An item with no media-server resource never qualifies — its missing - /// file has nothing to do with a server. - /// - /// Deliberately does NOT consider `remoteURL`: the API returns a presigned URL for every - /// synced item even when no object is behind it, so a nil remoteURL only ever meant - /// "this account doesn't sync", which pointed the shortcut at free users (including for - /// plain local files) while withholding it from the paying users who hit the missing-server - /// case. - static func shouldOfferMediaServers( - fileExists: Bool, - chapter: PlayableChapter, - isStreamingEnabled: Bool - ) -> Bool { - guard isStreamingEnabled, !fileExists else { return false } - - return chapter.externalUrl != nil || chapter.hasUnresolvedExternalHost + /// Whether a failed load should offer the Media Servers shortcut: the tier can stream at + /// all, and going to Media Servers could actually fix this chapter's failure. Not private + /// so the entitlement wiring itself is testable, and shared by both alert sites so the + /// rule can't drift between them. + func offersMediaServers(for chapter: PlayableChapter) -> Bool { + hasStreamingEnabled() && chapter.needsMediaServer() } func loadChapterMetadata(_ chapter: PlayableChapter, autoplay: Bool? = nil, forceRefreshURL: Bool = false) { diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 8b36fe8c8..177e52956 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -398,7 +398,7 @@ private final class KeychainStub: KeychainServiceProtocol, @unchecked Sendable { func remove(_ key: KeychainKeys) throws { storage[key] = nil } } -final class ItemDetailsHostResolutionTests: XCTestCase { +final class ExternalResourceResolutionTests: XCTestCase { private func makeResource(provider: String, id: String, hostId: String?) -> SimpleExternalResource { SimpleExternalResource( providerName: provider, @@ -427,7 +427,7 @@ final class ItemDetailsHostResolutionTests: XCTestCase { key: .jellyfinConnection ) - let resolved = ItemDetailsViewModel.resolveExternalHosts( + let resolved = IntegrationHostResolver.hostDisplayStrings( for: [ makeResource(provider: "jellyfin", id: "r1", hostId: "guid-jelly"), makeResource(provider: "jellyfin", id: "r2", hostId: "unknown-guid"), @@ -440,23 +440,21 @@ final class ItemDetailsHostResolutionTests: XCTestCase { } /// The section shows media-server links only: Hardcover has its own section, and - /// repeating its link here would render a bare provider/id pair with no host. The - /// rule denies hardcover rather than allowlisting known providers, so a provider - /// added later still appears. - func testHostedResourcesDropsHardcoverAndKeepsUnknownProviders() { - let hosted = ItemDetailsViewModel.hostedResources( - from: [ - makeResource(provider: "jellyfin", id: "r1", hostId: "guid-jelly"), - makeResource(provider: "hardcover", id: "12345", hostId: nil), - makeResource(provider: "audiobookshelf", id: "r2", hostId: "https://abs.example.com"), - makeResource(provider: "somethingnew", id: "r3", hostId: "guid-new"), - ] - ) + /// repeating its link here would render a bare provider/id pair with no host. The rule + /// allowlists known media servers, and its switch is exhaustive, so adding a provider + /// is a compile error at the one place the question is answered. + func testMediaServerResourcesKeepsOnlyKnownMediaServers() { + let hosted = [ + makeResource(provider: "jellyfin", id: "r1", hostId: "guid-jelly"), + makeResource(provider: "hardcover", id: "12345", hostId: nil), + makeResource(provider: "audiobookshelf", id: "r2", hostId: "https://abs.example.com"), + makeResource(provider: "somethingnew", id: "r3", hostId: "guid-new"), + ].mediaServerResources XCTAssertEqual( hosted.map(\.providerId), - ["r1", "r2", "r3"], - "hardcover is dropped; every other provider — including an unknown one — is kept" + ["r1", "r2"], + "hardcover and unknown providers are both dropped — only known media servers stream" ) } @@ -464,11 +462,11 @@ final class ItemDetailsHostResolutionTests: XCTestCase { /// relationship and "hardcover" sorts between "audiobookshelf" and "jellyfin", so a /// hardcover row whose syncStatus came back from sync as anything but not_synced would /// otherwise win the pick and leave a streamable item with no external URL. - func testMediaServerResourceIgnoresHardcoverEvenWhenItSortsFirst() { - let picked = PlaybackService.mediaServerResource(from: [ + func testStreamingResourceIgnoresHardcoverEvenWhenItSortsFirst() { + let picked = [ makeResource(provider: "hardcover", id: "12345", hostId: nil), makeResource(provider: "jellyfin", id: "r1", hostId: "guid-jelly"), - ]) + ].streamingResource XCTAssertEqual(picked?.providerName, "jellyfin") XCTAssertEqual(picked?.providerId, "r1") @@ -476,18 +474,18 @@ final class ItemDetailsHostResolutionTests: XCTestCase { /// Two streaming providers on one item resolve to a stable pick across launches, since /// the underlying snapshot set is unordered. - func testMediaServerResourceIsDeterministicAcrossProviders() { + func testStreamingResourceIsDeterministicAcrossProviders() { let jellyfin = makeResource(provider: "jellyfin", id: "r1", hostId: "guid-jelly") let abs = makeResource(provider: "audiobookshelf", id: "r2", hostId: "guid-abs") XCTAssertEqual( - PlaybackService.mediaServerResource(from: [jellyfin, abs])?.providerId, - PlaybackService.mediaServerResource(from: [abs, jellyfin])?.providerId, + [jellyfin, abs].streamingResource?.providerId, + [abs, jellyfin].streamingResource?.providerId, "the pick must not depend on the order the set yields" ) } - func testMediaServerResourceSkipsNotSyncedAndEmptyInput() { + func testStreamingResourceSkipsNotSyncedAndEmptyInput() { let notSynced = SimpleExternalResource( providerName: "jellyfin", providerId: "r1", @@ -497,23 +495,21 @@ final class ItemDetailsHostResolutionTests: XCTestCase { libraryItem: nil ) - XCTAssertNil(PlaybackService.mediaServerResource(from: [notSynced])) - XCTAssertNil(PlaybackService.mediaServerResource(from: [])) - XCTAssertNil(PlaybackService.mediaServerResource(from: nil)) + XCTAssertNil([notSynced].streamingResource) + XCTAssertNil([SimpleExternalResource]().streamingResource) } /// A Hardcover-only item must render no external-resources section at all. - func testHostedResourcesIsEmptyForHardcoverOnlyAndForNoResources() { + func testMediaServerResourcesIsEmptyForHardcoverOnly() { XCTAssertTrue( - ItemDetailsViewModel.hostedResources( - from: [makeResource(provider: "hardcover", id: "12345", hostId: nil)] - ).isEmpty + [makeResource(provider: "hardcover", id: "12345", hostId: nil)].mediaServerResources.isEmpty ) - XCTAssertTrue(ItemDetailsViewModel.hostedResources(from: nil).isEmpty) + XCTAssertTrue([SimpleExternalResource]().mediaServerResources.isEmpty) } } -/// The rule behind the "Media Servers" button on a playback-failure alert. +/// The item-side half of the "Media Servers" button rule on a playback-failure alert. +/// The entitlement half is exercised against a real PlayerManager in PlayerManagerTests. final class MediaServersShortcutTests: XCTestCase { private func makeChapter(externalUrl: URL?, hasUnresolvedExternalHost: Bool) -> PlayableChapter { PlayableChapter( @@ -521,7 +517,7 @@ final class MediaServersShortcutTests: XCTestCase { author: "Author", start: 0, duration: 100, - relativePath: "book.m4b", + relativePath: "missing-book.m4b", remoteURL: URL(string: "https://s3.example.com/presigned"), externalURL: externalUrl, index: 1, @@ -532,61 +528,47 @@ final class MediaServersShortcutTests: XCTestCase { /// The case the old condition got wrong: on a device where the item's media server was /// never added, nothing resolves the host, so there is no external URL — but the API /// still hands back a presigned remoteURL, which is what used to suppress the button. - func testOfferedWhenTheServerIsNotConfiguredOnThisDevice() { + func testNeedsMediaServerWhenTheServerIsNotConfiguredOnThisDevice() { XCTAssertTrue( - PlayerManager.shouldOfferMediaServers( - fileExists: false, - chapter: makeChapter(externalUrl: nil, hasUnresolvedExternalHost: true), - isStreamingEnabled: true - ) + makeChapter(externalUrl: nil, hasUnresolvedExternalHost: true).needsMediaServer() ) } - func testOfferedWhenTheStreamItselfFailed() { + func testNeedsMediaServerWhenTheStreamItselfFailed() { XCTAssertTrue( - PlayerManager.shouldOfferMediaServers( - fileExists: false, - chapter: makeChapter(externalUrl: URL(string: "https://jelly.example.com/stream"), hasUnresolvedExternalHost: false), - isStreamingEnabled: true - ) + makeChapter( + externalUrl: URL(string: "https://jelly.example.com/stream"), + hasUnresolvedExternalHost: false + ).needsMediaServer() ) } - /// A tier that can't stream has nothing to gain from the shortcut. - func testNeverOfferedWithoutTheStreamingEntitlement() { - for chapter in [ - makeChapter(externalUrl: URL(string: "https://jelly.example.com/stream"), hasUnresolvedExternalHost: false), - makeChapter(externalUrl: nil, hasUnresolvedExternalHost: true), - ] { - XCTAssertFalse( - PlayerManager.shouldOfferMediaServers( - fileExists: false, - chapter: chapter, - isStreamingEnabled: false - ) - ) - } - } - /// A plain local file that went missing has nothing to do with a media server. - func testNotOfferedForAnItemWithNoMediaServerResource() { + func testDoesNotNeedMediaServerWithoutAMediaServerResource() { XCTAssertFalse( - PlayerManager.shouldOfferMediaServers( - fileExists: false, - chapter: makeChapter(externalUrl: nil, hasUnresolvedExternalHost: false), - isStreamingEnabled: true - ) + makeChapter(externalUrl: nil, hasUnresolvedExternalHost: false).needsMediaServer() ) } /// The file is on disk, so whatever failed, a missing server isn't it. - func testNotOfferedWhenTheFileExists() { - XCTAssertFalse( - PlayerManager.shouldOfferMediaServers( - fileExists: true, - chapter: makeChapter(externalUrl: nil, hasUnresolvedExternalHost: true), - isStreamingEnabled: true - ) + func testDoesNotNeedMediaServerWhenTheFileExists() throws { + let folder = DataManager.getProcessedFolderURL() + let onDisk = folder.appendingPathComponent("present-book.m4b") + try Data("audio".utf8).write(to: onDisk) + defer { try? FileManager.default.removeItem(at: onDisk) } + + let chapter = PlayableChapter( + title: "Chapter", + author: "Author", + start: 0, + duration: 100, + relativePath: "present-book.m4b", + remoteURL: nil, + externalURL: nil, + index: 1, + hasUnresolvedExternalHost: true ) + + XCTAssertFalse(chapter.needsMediaServer()) } } diff --git a/BookPlayerTests/PlayerManagerTests.swift b/BookPlayerTests/PlayerManagerTests.swift index dd5512c4e..6d310c662 100644 --- a/BookPlayerTests/PlayerManagerTests.swift +++ b/BookPlayerTests/PlayerManagerTests.swift @@ -36,8 +36,8 @@ class PlayerManagerTests: XCTestCase { speedService: SpeedServiceProtocolMock(), shakeMotionService: ShakeMotionServiceProtocolMock(), widgetReloadService: WidgetReloadService(), - // Entitled, so nothing here is suppressed by tier; the media-servers rule itself is - // covered by MediaServersShortcutTests against the pure decision function. + // Entitled, so nothing here is suppressed by tier; the item half of the rule is + // covered by MediaServersShortcutTests against PlayableChapter. hasStreamingEnabled: { true } ) } @@ -118,6 +118,44 @@ class PlayerManagerTests: XCTestCase { ) } + /// The tier half of the Media Servers shortcut. The item half lives on PlayableChapter + /// (MediaServersShortcutTests); this pins the wiring — that the entitlement closure is + /// actually consulted — against a real PlayerManager. + private func makeUnplayableExternalChapter() -> PlayableChapter { + PlayableChapter( + title: "test chapter", + author: "test author", + start: 0, + duration: 50, + relativePath: "no-such-file.m4b", + remoteURL: URL(string: "https://s3.example.com/presigned"), + externalURL: nil, + index: 0, + hasUnresolvedExternalHost: true + ) + } + + func testMediaServersShortcutOfferedWhenStreamingIsEnabled() { + XCTAssertTrue(self.sut.offersMediaServers(for: makeUnplayableExternalChapter())) + } + + func testMediaServersShortcutSuppressedWithoutStreaming() { + let unentitled = PlayerManager( + libraryService: LibraryServiceProtocolMock(), + playbackService: playbackServiceMock, + syncService: SyncServiceProtocolMock(), + speedService: SpeedServiceProtocolMock(), + shakeMotionService: ShakeMotionServiceProtocolMock(), + widgetReloadService: WidgetReloadService(), + hasStreamingEnabled: { false } + ) + + XCTAssertFalse( + unentitled.offersMediaServers(for: makeUnplayableExternalChapter()), + "a tier that can't stream has nothing to gain from the shortcut" + ) + } + func testUpdatingEmptyNowPlayingBookTime() { self.sut.setNowPlayingBookTime() diff --git a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift index 809fc0c55..3dc3457ec 100644 --- a/Shared/CoreData/Lightweight-Models/PlayableChapter.swift +++ b/Shared/CoreData/Lightweight-Models/PlayableChapter.swift @@ -44,6 +44,17 @@ public struct PlayableChapter: Codable, Identifiable { URL(fileURLWithPath: relativePath).fileType?.conforms(to: .movie) ?? false } + /// The file isn't on disk and only a media server can supply it: either its stream URL + /// resolved (and the load still failed, so the token or the server is the problem) or no + /// saved connection matches its host, meaning the server was never added here. + /// + /// A function rather than a property because it stats the filesystem. + public func needsMediaServer() -> Bool { + guard !FileManager.default.fileExists(atPath: fileURL.path) else { return false } + + return externalUrl != nil || hasUnresolvedExternalHost + } + public init( title: String, author: String, diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift index 14d10cea5..c847635a3 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -43,6 +43,42 @@ public struct SimpleExternalResource: Identifiable, Equatable, Hashable { } } +extension SimpleExternalResource { + /// Whether this link points at a server the user connects to, as opposed to a metadata + /// service like Hardcover that has no host and streams nothing. + /// + /// The switch has NO `default` on purpose: this is the one place the question is answered, + /// so adding a provider case becomes a compile error here and whoever adds it has to say + /// which side it falls on. + public var isMediaServer: Bool { + switch ExternalResource.ProviderName(rawValue: providerName) { + case .jellyfin, .audiobookshelf: true + case .hardcover: false + // A providerName this build doesn't know: not streamable, since building a URL for it + // would require provider-specific knowledge we don't have. + case nil: false + } + } +} + +extension Array where Element == SimpleExternalResource { + /// The item's media-server links, in no particular order. + public var mediaServerResources: [SimpleExternalResource] { + filter(\.isMediaServer) + } + + /// The link that decides streaming for the item, or nil if none can. + /// + /// Deterministic: the source set is UNORDERED, so an item linked to two streaming providers + /// would otherwise resolve to whichever the set yields first, varying between launches. + /// Stable (providerName, providerId) order pins it. + public var streamingResource: SimpleExternalResource? { + mediaServerResources + .sorted { ($0.providerName, $0.providerId) < ($1.providerName, $1.providerId) } + .first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) + } +} + extension SimpleExternalResource { public init(from item: ExternalResource, ignoreLibraryItem: Bool = false) { self.id = Int(item.id) diff --git a/Shared/Integrations/IntegrationHostResolver.swift b/Shared/Integrations/IntegrationHostResolver.swift index a93c0313b..d275dd153 100644 --- a/Shared/Integrations/IntegrationHostResolver.swift +++ b/Shared/Integrations/IntegrationHostResolver.swift @@ -47,4 +47,39 @@ public enum IntegrationHostResolver { } return connections.first(where: { $0.url.canonicalDedupKey == hostId }) } + + /// Display strings for each resource's host, keyed by providerId: the saved connection's + /// URL when the host resolves, else the raw `hostId` — which is all a device that never + /// added the server knows about it. + /// + /// Each provider decodes its own connection type from its own keychain key; the generic + /// `hostURL` is what lets one switch cover them all. + public static func hostDisplayStrings( + for resources: [SimpleExternalResource], + keychain: KeychainServiceProtocol + ) -> [String: String] { + resources.reduce(into: [:]) { hosts, resource in + let hostId = resource.hostId ?? "" + let url: URL? = + switch ExternalResource.ProviderName(rawValue: resource.providerName) { + case .jellyfin: + hostURL(for: hostId, key: .jellyfinConnection, of: [JellyfinConnectionData].self, keychain: keychain) + case .audiobookshelf: + hostURL(for: hostId, key: .audiobookshelfConnection, of: [AudiobookShelfConnectionData].self, keychain: keychain) + default: + nil + } + hosts[resource.providerId] = url?.absoluteString ?? hostId + } + } + + private static func hostURL( + for hostId: String, + key: KeychainKeys, + of type: [T].Type, + keychain: KeychainServiceProtocol + ) -> URL? { + let connections: [T] = (try? keychain.get(key)) ?? [] + return connection(for: hostId, in: connections)?.url + } } diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index 3dd8242cb..2ff04c4f6 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -206,28 +206,6 @@ public final class PlaybackService: PlaybackServiceProtocol { ) } - /// The resource that decides streaming for an item, or nil if it has none. - /// - /// Filters to the MEDIA-SERVER providers explicitly: Hardcover links live in the same - /// relationship and sort between "audiobookshelf" and "jellyfin", so a hardcover row - /// that came back from sync with a non-`not_synced` status would otherwise win the pick - /// and leave a streamable item with no external URL at all. - /// - /// Deterministic: the snapshot set is UNORDERED, so an item linked to two streaming - /// providers would otherwise resolve to whichever the set yields first, varying between - /// launches. Stable (providerName, providerId) order pins it. - static func mediaServerResource(from resources: [SimpleExternalResource]?) -> SimpleExternalResource? { - resources? - .filter { - switch ExternalResource.ProviderName(rawValue: $0.providerName) { - case .jellyfin, .audiobookshelf: true - default: false - } - } - .sorted { ($0.providerName, $0.providerId) < ($1.providerName, $1.providerId) } - .first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) - } - func getPlayableChapters(book: SimpleLibraryItem) throws -> [PlayableChapter] { guard var chapters = self.libraryService.getChapters(from: book.relativePath) @@ -247,7 +225,7 @@ public final class PlaybackService: PlaybackServiceProtocol { var externalUrl: URL? var externalHeaders: [String: String] = [:] - let externalResource = Self.mediaServerResource(from: book.externalResources) + let externalResource = book.externalResources?.streamingResource if let providerRaw = externalResource?.providerName, let provider = ExternalResource.ProviderName(rawValue: providerRaw) { From 69b6c53f6ec11b20d56017af59f68801a5d5c619 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 16:29:05 -0500 Subject: [PATCH 101/172] refactor: item details loads from .task instead of init MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two things kept this view model out of tests entirely, which is why its rules kept getting hoisted into statics: init started an unstructured Task that reached the network, retained self, and could be neither cancelled nor awaited; and init's parameters took the concrete LibraryService/SyncService even though the stored properties were already protocol-typed, so no mock could be passed. The two resolves now live in load(), driven by the view's .task. SwiftUI owns the lifetime, so the work is cancelled on dismissal — a hardcover fetch can no longer land its stub repair after the sheet is gone, which closes the late-write hazard we'd set aside — and a test can await it instead of racing a task that construction started on its own. Deliberately no .task(id:). `item` is fixed at construction, so nothing should re-trigger this, and keying on the model's ObjectIdentifier is what makes a load re-fire on every model recreation. didLoad guards a re-appear and resets itself when the load was cancelled so it stays retryable; it only means anything because the view owns the model with @StateObject. The eager init work stays put: lastPlayedDate is a `let` behind a mockable protocol, and deferring selectedImage would trip onChange(of:) → artworkIsUpdated (ItemDetailsView:69) and re-upload artwork the user never edited. Three tests that were impossible before: the load runs once across repeated calls, the picker selection resolves from a synced-down resource and upgrades to the fetched metadata, and init resolves nothing. They need a token on the hardcover stub — ItemDetailsHardcoverSectionViewModel.init? is failable, and the whole resolve path is gated on that section existing. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library/ItemDetails/ItemDetailsView.swift | 3 + .../ItemDetails/ItemDetailsViewModel.swift | 41 ++++-- BookPlayerTests/ImportOperationTests.swift | 125 ++++++++++++++++++ 3 files changed, 161 insertions(+), 8 deletions(-) diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift index 1dc90747b..dc197b8c4 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsView.swift @@ -65,6 +65,9 @@ struct ItemDetailsView: View { ) } } + .task { + await viewModel.load() + } .onChange(of: viewModel.selectedImage) { viewModel.artworkIsUpdated = true } diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift index 3c3d8db39..dec122dc1 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsViewModel.swift @@ -33,6 +33,10 @@ final class ItemDetailsViewModel: ObservableObject { let listState: ListStateManager private var hardcoverBook: SimpleHardcoverBook? + /// Guards `load()` so a re-appear doesn't refetch. Meaningful only because the view owns + /// this model with @StateObject — under the old per-render recreation it would have been + /// wiped along with the instance. + private var didLoad = false /// File name @Published var originalFileName: String @@ -63,8 +67,10 @@ final class ItemDetailsViewModel: ObservableObject { init( item: SimpleLibraryItem, - libraryService: LibraryService, - syncService: SyncService, + // The protocol types the stored properties already use: the concrete ones here were + // the last thing keeping this model out of a test, since no mock could be injected. + libraryService: LibraryServiceProtocol, + syncService: SyncServiceProtocol, hardcoverService: HardcoverServiceProtocol, listState: ListStateManager ) { @@ -103,12 +109,31 @@ final class ItemDetailsViewModel: ObservableObject { hardcoverService: hardcoverService ) - Task { - // Hosts first: it is a local keychain read feeding a row that has no loading - // state, while the hardcover path can await a network fetch (and shows a - // spinner for it) — the reverse order left the host field waiting on it. - await resolveExternalHosts() - await resolveHardcoverSelection() + } + + /// Populate what has to be fetched. Driven by the view's `.task` rather than `init` so + /// SwiftUI owns the lifetime: the work is cancelled on dismissal — a hardcover fetch can + /// no longer land its stub repair after the sheet is gone — and a test can await it + /// instead of racing a task that construction started on its own. + /// + /// The call site deliberately passes no `id:`. `item` is fixed at construction, so nothing + /// should re-trigger this, and keying on the model's ObjectIdentifier would re-fire the + /// whole load every time the model were recreated. + @MainActor + func load() async { + guard !didLoad else { return } + didLoad = true + + // Hosts first: it is a local keychain read feeding a row that has no loading state, + // while the hardcover path can await a network fetch (and shows a spinner for it) — + // the reverse order left the host field waiting on it. + await resolveExternalHosts() + await resolveHardcoverSelection() + + // A load cancelled midway (sheet dismissed during the fetch) has to stay retryable, or + // re-presenting the screen would skip it and leave the rows half-populated. + if Task.isCancelled { + didLoad = false } } diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 177e52956..02080ab14 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -572,3 +572,128 @@ final class MediaServersShortcutTests: XCTestCase { XCTAssertFalse(chapter.needsMediaServer()) } } + +/// Construction-time work moved out of `ItemDetailsViewModel.init` into `load()`, which is +/// what makes the view model constructible in a test at all: `init` no longer starts an +/// unstructured task that reaches the network. +@MainActor +final class ItemDetailsLoadTests: XCTestCase { + /// HardcoverServiceProtocol isn't AutoMockable, and its seven members are few enough to + /// stub by hand rather than pull Sourcery into the change. + private final class HardcoverServiceStub: HardcoverServiceProtocol { + var authorization: String? + var getBookCallCount = 0 + var bookToReturn: SimpleHardcoverBook? + + func getBook(id: Int) async throws -> SimpleHardcoverBook? { + getBookCallCount += 1 + return bookToReturn + } + + func getBooks(for item: SimpleLibraryItem, perPage: Int) async throws -> BooksData { + throw BookPlayerError.runtimeError("not used") + } + func searchBooks(query: String, perPage: Int) async throws -> BooksData { + throw BookPlayerError.runtimeError("not used") + } + func processAutoMatch(for items: [SimpleLibraryItem]) async {} + func assignItem(_ book: SimpleHardcoverBook?, to item: SimpleLibraryItem) async {} + func removeFromLibrary(_ book: SimpleHardcoverBook) async throws {} + } + + private func makeSUT() -> (ItemDetailsViewModel, LibraryServiceProtocolMock, HardcoverServiceStub) { + let hardcoverResource = SimpleExternalResource( + providerName: ExternalResource.ProviderName.hardcover.rawValue, + providerId: "12345", + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + libraryItem: nil + ) + let item = SimpleLibraryItem( + title: "Local Title", + details: "Local Author", + speed: 1, + currentTime: 0, + duration: 100, + percentCompleted: 0, + isFinished: false, + relativePath: "book.m4b", + remoteURL: nil, + artworkURL: nil, + orderRank: 0, + parentFolder: nil, + originalFileName: "book.m4b", + lastPlayDate: nil, + type: .book, + uuid: "UUID", + externalResources: [hardcoverResource] + ) + + let libraryService = LibraryServiceProtocolMock() + // No local Hardcover row on this device: the synced-down link is all we have, which is + // the path that fetches. + libraryService.getHardcoverBookForReturnValue = nil + libraryService.getExternalResourcesForReturnValue = [hardcoverResource] + + let hardcoverService = HardcoverServiceStub() + // ItemDetailsHardcoverSectionViewModel.init? returns nil without a token, and the whole + // hardcover resolve path is gated on that section existing — so an unconnected account + // resolves nothing, by design. + hardcoverService.authorization = "test-token" + hardcoverService.bookToReturn = SimpleHardcoverBook( + id: 12345, + artworkURL: nil, + title: "Fetched Title", + author: "Fetched Author", + status: .reading + ) + + let sut = ItemDetailsViewModel( + item: item, + libraryService: libraryService, + syncService: SyncServiceProtocolMock(), + hardcoverService: hardcoverService, + listState: ListStateManager() + ) + + return (sut, libraryService, hardcoverService) + } + + /// The regression this guards: `.task` fires again whenever the view re-appears, and the + /// load must not refetch (or re-clobber the picker selection) when it does. + func testLoadRunsOnlyOnceAcrossRepeatedCalls() async { + let (sut, libraryService, hardcoverService) = makeSUT() + + await sut.load() + await sut.load() + await sut.load() + + XCTAssertEqual(hardcoverService.getBookCallCount, 1, "a re-appear must not refetch") + XCTAssertEqual(libraryService.getHardcoverBookForCallsCount, 1) + } + + /// Behavior that had no coverage before, because the view model couldn't be constructed: + /// with no local row, the picker is seeded from the synced resource and then upgraded to + /// the metadata Hardcover returns. + func testLoadResolvesTheSelectionFromASyncedResource() async { + let (sut, _, _) = makeSUT() + + XCTAssertNil(sut.hardcoverSectionViewModel?.pickerViewModel.selected) + + await sut.load() + + let selected = sut.hardcoverSectionViewModel?.pickerViewModel.selected + XCTAssertEqual(selected?.id, 12345) + XCTAssertEqual(selected?.title, "Fetched Title", "the interim title upgrades to the fetch") + XCTAssertEqual(sut.hardcoverSectionViewModel?.isFetchingBook, false, "spinner is cleared") + } + + /// Nothing is fetched off the main path during construction any more. + func testInitDoesNotResolveAnything() { + let (sut, libraryService, hardcoverService) = makeSUT() + + XCTAssertEqual(hardcoverService.getBookCallCount, 0) + XCTAssertEqual(libraryService.getHardcoverBookForCallsCount, 0) + XCTAssertTrue(sut.resolvedExternalHosts.isEmpty) + } +} From e46ffc0aad037a0f03643723c29fd51d36d58762 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 7 Sep 2026 19:39:21 -0500 Subject: [PATCH 102/172] refactor: the media-servers listener moves to MainView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The handler writes playerState.isShowingPlayer and listState.activeIntegrationSheet to sequence two presentations that both belong to MainView — the sheet at :87 and the player cover at :99. listState is MainView's own @State, injected into the environment at :130 and read back out by LibraryRootView purely so a child could mutate its parent's property. Moving it makes the owner the mutator, and puts the ordering comment next to the two modifiers it's actually about instead of describing them from another file. It also drops a latent lifecycle assumption: LibraryRootView is tab content that stays mounted only because Library happens to be the default tab, while MainView is unconditionally alive. If tab content ever became lazier, the notification would go silently unhandled and the alert's Media Servers button would do nothing. Behavior is identical — same notification, same two writes, same order. The other five LibraryRootView listeners stay put: download errors, both folder watchers, the import operation publisher and the import bus are genuinely library-scoped. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Library/ItemList/LibraryRootView.swift | 7 ------- BookPlayer/MainView.swift | 8 ++++++++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index 55bf8acdc..5c9059841 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -133,13 +133,6 @@ struct LibraryRootView: View { self.handleOperationCompletion(.external(files: externalResources), suggestedFolderName: nil) } } - .onReceive(NotificationCenter.default.publisher(for: .showMediaServers)) { _ in - // The media-servers sheet hangs off MainView UNDERNEATH the player's - // fullScreenCover — when this fires mid-playback (the common streaming-401 - // path) the cover must come down first or the sheet never presents - playerState.isShowingPlayer = false - listState.activeIntegrationSheet = .mediaServers - } } .tint(theme.linkColor) .environmentObject(theme) diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index 44644163a..827403c28 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -113,6 +113,14 @@ struct MainView: View { Text(String(format: "resume_playback_alert_message".localized, TimeParser.formatTime(playerState.remotePlayTime ?? 0))) } } + // Posted by PlayerManager when a book can't play because its media server isn't + // configured here. Lives at this level because both pieces of state it writes are + // owned above: the cover has to come down before the sheet can present, since the + // sheet is attached underneath it. + .onReceive(NotificationCenter.default.publisher(for: .showMediaServers)) { _ in + playerState.isShowingPlayer = false + listState.activeIntegrationSheet = .mediaServers + } // Sibling copy of the resume alert (see showResumePopupBinding): playback also starts // with the player CLOSED — mini-player, CarPlay, remote commands, last-book restore — // and the copy inside the cover isn't in the hierarchy then, silently dropping the prompt From 0781028a3dee2c5800f50468ac9b7d9b45240c67 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 9 Sep 2026 12:41:13 -0500 Subject: [PATCH 103/172] refactor: the library row subtitle is one Text, not a stack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The provider links were an HStack of Image+Text pairs, which cost three things. An interpolated Image is sized from the font, so the provider icon now grows with Dynamic Type instead of sitting at a fixed 12pt next to text that scales. SwiftUI applies its font-derived default stack spacing only between adjacent Text views. The HStack child forfeited that, which is why the VStack needed a hardcoded `spacing: 2` to keep row height matching develop — with all three children back to Text the default returns, and it scales too. And the subtitle now truncates once at the end, instead of the icon, provider name and author competing for width with no lineLimit anywhere in the row and truncating independently. Both accessibilityHidden calls went with it: they were already inert, since the row is a single accessibility element (children: .ignore + dynamicAccessibilityLabel) and no child reaches VoiceOver. Note the provider is still never announced — the row label is composed from title/details/progress in VoiceOverService. That's a real gap, but closing it means changing VoiceOverService, so it stays a follow-up. No automated verification exists for this (XCTest only, no snapshot infrastructure), so the visual side rides the device pass: the row at default and accessibility text sizes, and a long author name truncating once. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library/ItemList/Views/BookView.swift | 60 +++++++++---------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index 224c7dc8f..99ed2a9f1 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -43,6 +43,30 @@ struct BookView: View { : theme.primaryColor } + /// Provider links then the author, as ONE `Text` rather than a stack of them. + /// + /// Concatenation buys three things a stack can't: an interpolated `Image` is sized from the + /// font, so the provider icon grows with Dynamic Type instead of sitting at a fixed 12pt; + /// the enclosing VStack keeps its font-derived default spacing, which SwiftUI applies only + /// between adjacent `Text` views (an `HStack` child forfeits it, and needed a hardcoded gap + /// to look right); and the subtitle truncates once at the end instead of each piece + /// competing for width and truncating on its own. + /// + /// The row is a single accessibility element (`children: .ignore` + + /// `dynamicAccessibilityLabel`), so nothing here reaches VoiceOver — the icon and the + /// separator need no `accessibilityHidden`. + private var subtitle: Text { + (item.externalResources ?? []) + .reduce(Text(verbatim: "")) { partial, resource in + let provider = ExternalResource.ProviderName(rawValue: resource.providerName) ?? .jellyfin + + return partial + Text("\(Image(provider.icon)) \(resource.providerName.capitalized) • ") + } + // Appended outside the reduce: the author renders even when the item has no external + // resources (nil for locally-imported books on some construction paths). + + Text(verbatim: item.details) + } + var body: some View { HStack(spacing: 0) { Button(action: artworkTap) { @@ -54,42 +78,14 @@ struct BookView: View { } .buttonStyle(.plain) .accessibilityLabel("voiceover_continue_playback_title") - VStack(alignment: .leading, spacing: 2) { + VStack(alignment: .leading) { Text(verbatim: displayTitle) .bpFont(.subheadline) .fontWeight(.bold) .foregroundStyle(titleColor) - HStack { - if let resources = item.externalResources { - ForEach(resources, id: \.providerId) { externalResource in - Group { - HStack { - Image((ExternalResource.ProviderName(rawValue: externalResource.providerName) ?? .jellyfin).icon) - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 12, height: 12) - .foregroundStyle(theme.secondaryColor) - .accessibilityHidden(true) - Text(verbatim: externalResource.providerName.capitalized) - .foregroundStyle(theme.secondaryColor) - .bpFont(.caption) - } - Text("•") - .foregroundStyle(theme.secondaryColor) - .bpFont(.caption) - // VoiceOver: decorative separator — the provider name right before it - // already announces the link - .accessibilityHidden(true) - } - } - } - // Outside the if-let: the author must render even when the item has no - // external resources (nil for locally-imported books on some construction paths). - Text(verbatim: item.details) - .foregroundStyle(theme.secondaryColor) - .bpFont(.caption) - } - + subtitle + .foregroundStyle(theme.secondaryColor) + .bpFont(.caption) Text(verbatim: item.durationFormatted) .foregroundStyle(theme.secondaryColor) .bpFont(.caption) From d9c23ad20a6ea6e4d7399028d7a88c0d8a92b360 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 9 Sep 2026 19:07:40 -0500 Subject: [PATCH 104/172] fix: no Hardcover badge in the library row MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The concatenated subtitle reduced over every externalResource, so a Hardcover-linked book showed a "Hardcover •" badge in the list while the details section filtered to mediaServerResources. Hardcover is progress-sync, not a source the book streams from, so it earns no badge next to the author. This reintroduced in BookView the exact two-definitions split that the isMediaServer consolidation had just removed everywhere else — the shared accessor already existed and I didn't use it. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Library/ItemList/Views/BookView.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index 99ed2a9f1..845fb0b30 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -56,7 +56,9 @@ struct BookView: View { /// `dynamicAccessibilityLabel`), so nothing here reaches VoiceOver — the icon and the /// separator need no `accessibilityHidden`. private var subtitle: Text { - (item.externalResources ?? []) + // Media-server links only, same rule the details section uses: Hardcover is + // progress-sync, not a source the book streams from, so it earns no badge here. + (item.externalResources?.mediaServerResources ?? []) .reduce(Text(verbatim: "")) { partial, resource in let provider = ExternalResource.ProviderName(rawValue: resource.providerName) ?? .jellyfin From 337bcd1672c91e76b6f398ea508bd6f9bf6b4c5b Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 9 Sep 2026 19:07:40 -0500 Subject: [PATCH 105/172] fix: Stream button uses the accent-filled button treatment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The label was theme.primaryColor — the app's main foreground color — on a theme.linkColor background, and it was set twice: once on the Text and again on the HStack. develop's Download button that this replaced used systemBackgroundColor on linkColor, set once so it colors the SF Symbol too. primaryColor on the saturated accent is a likely contrast regression and breaks the app's primary-button convention. The sibling secondary button just above legitimately keeps primaryColor, since it sits on tertiarySystemBackgroundColor. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Details/IntegrationAudiobookDetailsView.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index 865507e83..b50a812bc 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -219,13 +219,15 @@ struct IntegrationAudiobookDetailsView< HStack { Image(systemName: "arrow.down.circle.dotted") Text("stream_button".localized) - .foregroundStyle(theme.primaryColor) .bpFont(.title) } .frame(height: 24) .frame(maxWidth: .infinity) .padding() - .foregroundStyle(theme.primaryColor) + // Set once for the label AND the symbol: systemBackgroundColor on linkColor is the + // app's accent-filled button treatment (what the Download button this replaced used). + // primaryColor is the main foreground colour and reads low-contrast on the accent. + .foregroundStyle(theme.systemBackgroundColor) .background(theme.linkColor) .cornerRadius(10) } From 1fecf35c9bec8a0e962392b992e028b2cae07ae3 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 10 Sep 2026 13:30:59 -0500 Subject: [PATCH 106/172] feat: a service owns the media-server progress pull MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The inbound half of media-server progress sync lived on ItemListViewModel, behind PlaybackSyncProgressDelegate — a protocol that exists so the player can ask the LIST whether it is mid-fetch. That let a UI object's identity decide whether the feature ran at all: CarPlayManager claims the same single delegate slot and answered with an empty implementation, so a car-only session never pulled. Meanwhile the outbound half has always been a proper service (progressUpdatePublisher → SyncService.scheduleMetadataUpdate → the externalUpdate queue), and it handles both providers. This adds the service, a provider-neutral ExternalPlaybackProgress value, and a two-line protocol seam that the concrete @MainActor connection services never had — which is what makes any of this testable at all. It asks every linked server concurrently and ignores the ones that fail, then applies one rule: a candidate must be ahead of local by more than 15s (newer date or farther position), and the newest date wins. That is the same strictly-newer comparison SyncService.handleSyncedLastPlayed and handleSyncFromExternalResource already use for our own cloud, and it replaces two copies of the threshold logic. One refresh in flight, replaced per playback start, and the answer is discarded when the item is no longer the one requested. Keying tasks by uuid meant a slow answer for a book the user had left could raise a prompt whose "resume" seeks whatever is playing now to another book's timestamp. The result is published rather than written into UI state, so the SwiftUI alert and CarPlay's own two-action alert can share one decision. Additive only — nothing consumes the publisher yet. The deletions and the wiring land next. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 20 ++ BookPlayerTests/ImportOperationTests.swift | 249 ++++++++++++++++++ .../ExternalProgressProviding.swift | 96 +++++++ .../ExternalProgressService.swift | 164 ++++++++++++ 4 files changed, 529 insertions(+) create mode 100644 Shared/Services/ExternalProgress/ExternalProgressProviding.swift create mode 100644 Shared/Services/ExternalProgress/ExternalProgressService.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index b10d08ee5..5587b4fd8 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -284,6 +284,8 @@ 41F1A20D254B0A0C0043FCF3 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 41F1A20C254B0A0C0043FCF3 /* Sentry */; }; 41F1A228254B0C6C0043FCF3 /* ZipArchive in Frameworks */ = {isa = PBXBuildFile; productRef = 41F1A227254B0C6C0043FCF3 /* ZipArchive */; }; 45FE3490229249F95A3CF5FF /* IntegrationHostResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */; }; + F2083D16D6C22A37C49AC2B7 /* ExternalProgressProviding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97ADE40DF29059A5B97E37D6 /* ExternalProgressProviding.swift */; }; + ED7E919E39E0454432171664 /* ExternalProgressService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85605CDB6C6075AADBE2D15 /* ExternalProgressService.swift */; }; 4645F9FD2D1E46AC00A04257 /* SwipeInlineTip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4645F9FC2D1E46AC00A04257 /* SwipeInlineTip.swift */; }; 465D87522D3195D600A4AA47 /* BookmarksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 465D87512D3195D600A4AA47 /* BookmarksView.swift */; }; 465D87542D31965100A4AA47 /* BookmarksViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 465D87532D31965100A4AA47 /* BookmarksViewModel.swift */; }; @@ -935,6 +937,8 @@ AE284AB4D4139ED869288F99 /* IntegrationConnectionPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A8030B619D18CA088DAA40A /* IntegrationConnectionPayload.swift */; }; B14881000000000000000001 /* IntegrationCustomHeadersSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14881000000000000000002 /* IntegrationCustomHeadersSectionView.swift */; }; B16A2A4FFFE86D46E799A773 /* IntegrationHostResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */; }; + CF9C88BC3DDD1AE5833E2106 /* ExternalProgressProviding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97ADE40DF29059A5B97E37D6 /* ExternalProgressProviding.swift */; }; + CDA937D56B8AFBA03402E979 /* ExternalProgressService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85605CDB6C6075AADBE2D15 /* ExternalProgressService.swift */; }; B26B34D894351E8452FBB64B /* IntegrationServerInformationSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5F919ABFCEF9B58EFE9D82E /* IntegrationServerInformationSectionView.swift */; }; B7F1E4A9D2C5B8F0A6E3C12A /* IntegrationImageSizing.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4D9C8B6E5F1D2A7C4E9B81B /* IntegrationImageSizing.swift */; }; BF96AEBA456420ADE446427F /* URL+BookPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126F120258E9F18009965DC /* URL+BookPlayer.swift */; }; @@ -1147,6 +1151,8 @@ 2E070421575334E1CD85C049 /* IntegrationLibraryViewModelProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationLibraryViewModelProtocol.swift; sourceTree = ""; }; 3373A34FC2536111E50BF868 /* PasskeyEmailInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PasskeyEmailInputView.swift; sourceTree = ""; }; 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHostResolver.swift; sourceTree = ""; }; + 97ADE40DF29059A5B97E37D6 /* ExternalProgressProviding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExternalProgressProviding.swift; sourceTree = ""; }; + C85605CDB6C6075AADBE2D15 /* ExternalProgressService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExternalProgressService.swift; sourceTree = ""; }; 35C564A7BDE3A2D98E02BF8B /* IntegrationConnectedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrationConnectedView.swift; sourceTree = ""; }; 3724BB21B1B88177C60BE4D8 /* IntegrationConnectionFormViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionFormViewModelProtocol.swift; sourceTree = ""; }; 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WebAuthenticating.swift; sourceTree = ""; }; @@ -2835,6 +2841,7 @@ 64957AF0989CEBEEEC40E4BB /* Preferences */, FEEDBABE0000000000000001 /* SharedWidgetStore.swift */, 9911FBAA2F71CD1600DC9A2B /* ConcurrentSync */, + D95DF238A734AE606D62DADB /* ExternalProgress */, ); path = Services; sourceTree = ""; @@ -3402,6 +3409,15 @@ path = "Connection Screen"; sourceTree = ""; }; + D95DF238A734AE606D62DADB /* ExternalProgress */ = { + isa = PBXGroup; + children = ( + 97ADE40DF29059A5B97E37D6 /* ExternalProgressProviding.swift */, + C85605CDB6C6075AADBE2D15 /* ExternalProgressService.swift */, + ); + path = ExternalProgress; + sourceTree = ""; + }; 9911FBAA2F71CD1600DC9A2B /* ConcurrentSync */ = { isa = PBXGroup; children = ( @@ -4792,6 +4808,8 @@ EF5A25679D73F58A5D551D01 /* IntegrationConnectionStore.swift in Sources */, 8AC2579BAAAAFE0091DA9285 /* PKCE.swift in Sources */, 45FE3490229249F95A3CF5FF /* IntegrationHostResolver.swift in Sources */, + F2083D16D6C22A37C49AC2B7 /* ExternalProgressProviding.swift in Sources */, + ED7E919E39E0454432171664 /* ExternalProgressService.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5414,6 +5432,8 @@ F575EA7BBE6C619D27225281 /* IntegrationConnectionStore.swift in Sources */, 77980C5A9B7CF1A948FE7CF1 /* PKCE.swift in Sources */, B16A2A4FFFE86D46E799A773 /* IntegrationHostResolver.swift in Sources */, + CF9C88BC3DDD1AE5833E2106 /* ExternalProgressProviding.swift in Sources */, + CDA937D56B8AFBA03402E979 /* ExternalProgressService.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 02080ab14..6161f2211 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -697,3 +697,252 @@ final class ItemDetailsLoadTests: XCTestCase { XCTAssertTrue(sut.resolvedExternalHosts.isEmpty) } } + +// MARK: - External progress pull + +/// The inbound half of media-server progress sync, extracted out of ItemListViewModel. +@MainActor +final class ExternalProgressServiceTests: XCTestCase { + /// Records what it was asked and answers from a script, so a test can assert the fan-out + /// without a server, a keychain, or a network. + private final class ProviderStub: ExternalProgressProviding, @unchecked Sendable { + private let lock = NSLock() + private var _requested: [String] = [] + private let answer: @Sendable (SimpleExternalResource) async throws -> ExternalPlaybackProgress? + + var requested: [String] { + lock.lock() + defer { lock.unlock() } + return _requested + } + + init(answer: @escaping @Sendable (SimpleExternalResource) async throws -> ExternalPlaybackProgress?) { + self.answer = answer + } + + func progress(for resource: SimpleExternalResource) async throws -> ExternalPlaybackProgress? { + lock.lock() + _requested.append(resource.providerId) + lock.unlock() + return try await answer(resource) + } + } + + private func makeResource(provider: String, id: String) -> SimpleExternalResource { + SimpleExternalResource( + providerName: provider, + providerId: id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: "guid-host", + libraryItem: nil + ) + } + + private func makeItem(uuid: String, currentTime: TimeInterval, lastPlayDate: Date?) -> PlayableItem { + PlayableItem( + title: "Book", + author: "Author", + chapters: [ + PlayableChapter( + title: "Chapter", + author: "Author", + start: 0, + duration: 1000, + relativePath: "book.m4b", + remoteURL: nil, + externalURL: nil, + index: 1 + ) + ], + currentTime: currentTime, + duration: 1000, + relativePath: "book.m4b", + uuid: uuid, + parentFolder: nil, + percentCompleted: 0, + lastPlayDate: lastPlayDate, + isFinished: false, + isBoundBook: false + ) + } + + // MARK: the decision rule + + func testPromptsWhenTheRemoteDateIsNewerBeyondTheThreshold() { + let position = ExternalProgressService.promptablePosition( + localTime: 100, + localDate: Date(timeIntervalSince1970: 1000), + candidates: [ExternalPlaybackProgress(currentTime: 90, lastPlayedDate: Date(timeIntervalSince1970: 1100))] + ) + + XCTAssertEqual(position?.currentTime, 90, "a newer date prompts even when the position is behind") + } + + func testDoesNotPromptInsideTheThreshold() { + let position = ExternalProgressService.promptablePosition( + localTime: 100, + localDate: Date(timeIntervalSince1970: 1000), + candidates: [ExternalPlaybackProgress(currentTime: 110, lastPlayedDate: Date(timeIntervalSince1970: 1005))] + ) + + XCTAssertNil(position, "10s of drift on the book you are listening to is not another device") + } + + func testPromptsWhenTheRemotePositionIsFartherWithoutADate() { + let position = ExternalProgressService.promptablePosition( + localTime: 100, + localDate: Date(timeIntervalSince1970: 1000), + candidates: [ExternalPlaybackProgress(currentTime: 400, lastPlayedDate: nil)] + ) + + XCTAssertEqual(position?.currentTime, 400, "a server reporting no date still counts on position") + } + + /// The rule SyncService.handleSyncedLastPlayed uses for our own cloud: newest date wins. + func testNewestCandidateWinsAcrossServers() { + let older = ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 1100)) + let newer = ExternalPlaybackProgress(currentTime: 300, lastPlayedDate: Date(timeIntervalSince1970: 2000)) + + let position = ExternalProgressService.promptablePosition( + localTime: 100, + localDate: Date(timeIntervalSince1970: 1000), + candidates: [older, newer] + ) + + XCTAssertEqual(position, newer, "the most recently played server wins, not the farthest position") + } + + func testNoCandidatesMeansNoPrompt() { + XCTAssertNil( + ExternalProgressService.promptablePosition(localTime: 100, localDate: nil, candidates: []) + ) + } + + // MARK: the service + + func testAsksEveryLinkedServerConcurrentlyAndPublishesTheNewest() async { + let libraryService = LibraryServiceProtocolMock() + libraryService.findResourcesForReturnValue = [ + makeResource(provider: "jellyfin", id: "jf-1"), + makeResource(provider: "audiobookshelf", id: "abs-1"), + ] + + let jellyfin = ProviderStub { _ in + ExternalPlaybackProgress(currentTime: 800, lastPlayedDate: Date(timeIntervalSince1970: 1100)) + } + let abs = ProviderStub { _ in + ExternalPlaybackProgress(currentTime: 200, lastPlayedDate: Date(timeIntervalSince1970: 5000)) + } + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin, .audiobookshelf: abs]) + + var received: [ExternalPlaybackProgress] = [] + let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } + defer { cancellable.cancel() } + + sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 100, lastPlayDate: Date(timeIntervalSince1970: 1000))) + try? await Task.sleep(nanoseconds: 300_000_000) + + XCTAssertEqual(jellyfin.requested, ["jf-1"], "both servers are asked") + XCTAssertEqual(abs.requested, ["abs-1"]) + XCTAssertEqual(received.count, 1) + XCTAssertEqual(received.first?.currentTime, 200, "the newest date wins across providers") + } + + func testOneFailingServerDoesNotSilenceTheOther() async { + let libraryService = LibraryServiceProtocolMock() + libraryService.findResourcesForReturnValue = [ + makeResource(provider: "jellyfin", id: "jf-1"), + makeResource(provider: "audiobookshelf", id: "abs-1"), + ] + + let failing = ProviderStub { _ in throw URLError(.timedOut) } + let working = ProviderStub { _ in + ExternalPlaybackProgress(currentTime: 700, lastPlayedDate: Date(timeIntervalSince1970: 9000)) + } + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: [.jellyfin: failing, .audiobookshelf: working]) + + var received: [ExternalPlaybackProgress] = [] + let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } + defer { cancellable.cancel() } + + sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) + try? await Task.sleep(nanoseconds: 300_000_000) + + XCTAssertEqual(received.first?.currentTime, 700, "a thrown error takes out only its own provider") + } + + /// Hardcover shares the resource relationship but hosts nothing, so it must never be asked. + func testSkipsResourcesWithNoMediaServerProvider() async { + let libraryService = LibraryServiceProtocolMock() + libraryService.findResourcesForReturnValue = [makeResource(provider: "hardcover", id: "12345")] + + let jellyfin = ProviderStub { _ in XCTFail("hardcover must not reach a provider"); return nil } + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin]) + + var received: [ExternalPlaybackProgress] = [] + let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } + defer { cancellable.cancel() } + + sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) + try? await Task.sleep(nanoseconds: 200_000_000) + + XCTAssertTrue(jellyfin.requested.isEmpty) + XCTAssertTrue(received.isEmpty) + } + + /// The bug that started the extraction: a slow answer for a book the user already left + /// must not raise a prompt carrying that book's position. + func testAnswerForASupersededItemIsDiscarded() async { + let libraryService = LibraryServiceProtocolMock() + libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] + + let slow = ProviderStub { _ in + try? await Task.sleep(nanoseconds: 250_000_000) + return ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000)) + } + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: [.jellyfin: slow]) + + var received: [ExternalPlaybackProgress] = [] + let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } + defer { cancellable.cancel() } + + sut.refreshProgress(for: makeItem(uuid: "FIRST", currentTime: 0, lastPlayDate: nil)) + // A different book starts before the first answer lands. + sut.refreshProgress(for: makeItem(uuid: "SECOND", currentTime: 0, lastPlayDate: nil)) + try? await Task.sleep(nanoseconds: 700_000_000) + + XCTAssertEqual(received.count, 1, "only the item that is playing now can prompt") + } + + func testTeardownCancelsAnInFlightRefresh() async { + let libraryService = LibraryServiceProtocolMock() + libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] + + let slow = ProviderStub { _ in + try? await Task.sleep(nanoseconds: 250_000_000) + return ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000)) + } + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: [.jellyfin: slow]) + + var received: [ExternalPlaybackProgress] = [] + let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } + defer { cancellable.cancel() } + + sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) + sut.teardown() + try? await Task.sleep(nanoseconds: 600_000_000) + + XCTAssertTrue(received.isEmpty, "logout stops work that is already in flight") + } +} diff --git a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift new file mode 100644 index 000000000..60c9d5706 --- /dev/null +++ b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift @@ -0,0 +1,96 @@ +// +// ExternalProgressProviding.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +/// Where a media server says the user is in a book. +/// +/// Provider-neutral on purpose: `handleSyncFromExternalResource` and the resume prompt both +/// only ever needed the position, the date and the finished flag, and typing that to one +/// provider's item is what left AudiobookShelf out of the library refresh. +public struct ExternalPlaybackProgress: Equatable, Sendable { + public let currentTime: TimeInterval + public let lastPlayedDate: Date? + public let isFinished: Bool? + + public init(currentTime: TimeInterval, lastPlayedDate: Date?, isFinished: Bool? = nil) { + self.currentTime = currentTime + self.lastPlayedDate = lastPlayedDate + self.isFinished = isFinished + } +} + +/// Reads one provider's playback position for a resource. +/// +/// `Sendable` so the service can fan the providers out concurrently: an item linked to two +/// servers asks both at once instead of letting a slow one delay the other. +public protocol ExternalProgressProviding: Sendable { + /// The position that resource's OWN server reports, or nil when no saved connection matches + /// its host — the server isn't configured on this device, so there is nothing to compare. + func progress(for resource: SimpleExternalResource) async throws -> ExternalPlaybackProgress? +} + +/// Stateless: the connection service is built per call rather than held. +/// +/// Holding one would save a keychain read, but it is `@MainActor`-isolated and therefore not +/// `Sendable`, which the concurrent fan-out needs. The cost that actually mattered — reading +/// the keychain on every playback start, including for plain local books — is gone anyway, +/// because the service only reaches a provider for an item that HAS media-server resources. +public struct JellyfinProgressProvider: ExternalProgressProviding { + public init() {} + + public func progress(for resource: SimpleExternalResource) async throws -> ExternalPlaybackProgress? { + let service = await JellyfinConnectionService() + await service.setup() + + // Pin the resource's own server: the active connection may be a different instance where + // this provider id doesn't exist, or worse, names another book. + guard + let connection = IntegrationHostResolver.connection( + for: resource.hostId, + in: await service.connections + ) + else { return nil } + + await service.useConnection(connection) + + guard let item = try await service.fetchItem(for: resource.providerId) else { return nil } + + return ExternalPlaybackProgress( + currentTime: TimeInterval(item.currentSeconds ?? 0), + lastPlayedDate: item.lastPlayedDate, + isFinished: item.isFinished + ) + } +} + +/// Same shape as `JellyfinProgressProvider`, including why it holds no connection service. +public struct AudiobookShelfProgressProvider: ExternalProgressProviding { + public init() {} + + public func progress(for resource: SimpleExternalResource) async throws -> ExternalPlaybackProgress? { + let service = await AudiobookShelfConnectionService() + await service.setup() + + guard + let connection = IntegrationHostResolver.connection( + for: resource.hostId, + in: await service.connections + ) + else { return nil } + + await service.useConnection(connection) + + guard let item = try await service.fetchItem(for: resource.providerId) else { return nil } + + return ExternalPlaybackProgress( + currentTime: item.currentTime ?? 0, + lastPlayedDate: item.lastPlayedDate, + isFinished: item.isFinished + ) + } +} diff --git a/Shared/Services/ExternalProgress/ExternalProgressService.swift b/Shared/Services/ExternalProgress/ExternalProgressService.swift new file mode 100644 index 000000000..4e0ffb428 --- /dev/null +++ b/Shared/Services/ExternalProgress/ExternalProgressService.swift @@ -0,0 +1,164 @@ +// +// ExternalProgressService.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Combine +import Foundation + +/// Pulls the position a book's media servers report, so playback can offer to resume where +/// another device left off. +/// +/// This is the inbound half of media-server progress sync. The outbound half already lives in +/// a service — `libraryService.progressUpdatePublisher` feeds `SyncService.scheduleMetadataUpdate` +/// and the `externalUpdate` queue — while the pull used to live on `ItemListViewModel`, reached +/// through a delegate that exists for an unrelated question. That made a UI object's identity +/// decide whether the feature ran at all: CarPlay claims the same delegate slot and answered +/// with an empty implementation, so a car-only session silently never pulled. +/// +/// Nothing here is entitlement-gated, matching the push: `.externalUpdate` runs on every tier +/// because it talks to the user's OWN server, and gating only the pull would make the two +/// directions disagree. +public final class ExternalProgressService { + /// A remote position worth offering the user, published rather than written into UI state so + /// both presentations — the SwiftUI alert and CarPlay's own — can consume the one decision. + public let promptablePositionPublisher = PassthroughSubject() + + private var libraryService: LibraryServiceProtocol! + private var providers: [ExternalResource.ProviderName: ExternalProgressProviding] = [:] + + /// Guards the single in-flight refresh and the uuid it was started for. Non-isolated so the + /// concurrent fan-out below doesn't have to hop to an actor to read them. + private let stateLock = NSLock() + private var refreshTask: Task? + private var requestedUuid: String? + + public init() {} + + public func setup( + libraryService: LibraryServiceProtocol, + providers: [ExternalResource.ProviderName: ExternalProgressProviding] = [ + .jellyfin: JellyfinProgressProvider(), + .audiobookshelf: AudiobookShelfProgressProvider(), + ] + ) { + self.libraryService = libraryService + self.providers = providers + } + + /// Ask every media server this item is linked to where the user is, and publish the answer + /// if it is far enough ahead of the local position to be worth a prompt. + /// + /// Replaces any refresh already running: only the item that is playing NOW can produce a + /// prompt. The previous design keyed tasks by uuid, so a slow answer for a book the user had + /// already moved on from could still raise a prompt carrying that book's position — and the + /// alert's "resume" then seeks whatever is playing to a timestamp from another book. + public func refreshProgress(for item: PlayableItem) { + let uuid = item.uuid + let localTime = item.currentTime + let localDate = item.lastPlayDate + + stateLock.lock() + refreshTask?.cancel() + requestedUuid = uuid + stateLock.unlock() + + let task = Task { [weak self] in + guard let self else { return } + + let resources = (self.libraryService.findResources(for: uuid) ?? []).mediaServerResources + // No media server for this book: nothing to ask, and in particular no keychain read. + guard !resources.isEmpty else { return } + + let candidates = await self.fetchConcurrently(for: resources) + + guard + !Task.isCancelled, + self.isStillRequested(uuid), + let position = Self.promptablePosition( + localTime: localTime, + localDate: localDate, + candidates: candidates + ) + else { return } + + self.promptablePositionPublisher.send(position) + } + + stateLock.lock() + refreshTask = task + stateLock.unlock() + } + + /// Cancels any refresh in flight. Called on logout, the same lifecycle hook SyncService uses. + public func teardown() { + stateLock.lock() + refreshTask?.cancel() + refreshTask = nil + requestedUuid = nil + stateLock.unlock() + } + + /// One task group so a slow or unreachable server delays nobody, and a thrown error takes + /// only its own provider out of the running. + private func fetchConcurrently( + for resources: [SimpleExternalResource] + ) async -> [ExternalPlaybackProgress] { + await withTaskGroup(of: ExternalPlaybackProgress?.self) { group in + for resource in resources { + guard + let name = ExternalResource.ProviderName(rawValue: resource.providerName), + let provider = providers[name] + else { continue } + + group.addTask { + try? await provider.progress(for: resource) + } + } + + var candidates: [ExternalPlaybackProgress] = [] + for await candidate in group { + if let candidate { + candidates.append(candidate) + } + } + return candidates + } + } + + private func isStillRequested(_ uuid: String) -> Bool { + stateLock.lock() + defer { stateLock.unlock() } + return requestedUuid == uuid + } + + /// The position worth prompting for, or nil when the servers have nothing newer to offer. + /// + /// Two steps. A candidate qualifies only if it is ahead of the local state by more than + /// `threshold` — either a newer play date or a farther position — which keeps the prompt + /// from firing on the rounding drift of a book the user is actively listening to. Among the + /// qualifiers the NEWEST date wins, the same strictly-newer rule + /// `SyncService.handleSyncedLastPlayed` and `handleSyncFromExternalResource` already use for + /// our own cloud, with position breaking ties for servers that report no date. + static func promptablePosition( + localTime: TimeInterval, + localDate: Date?, + candidates: [ExternalPlaybackProgress], + threshold: TimeInterval = 15 + ) -> ExternalPlaybackProgress? { + let localDate = localDate ?? .distantPast + + return candidates + .filter { candidate in + let isDateNewer = (candidate.lastPlayedDate ?? .distantPast) > localDate.addingTimeInterval(threshold) + let isPositionFarther = candidate.currentTime > localTime + threshold + + return isDateNewer || isPositionFarther + } + .max { + ($0.lastPlayedDate ?? .distantPast, $0.currentTime) < ($1.lastPlayedDate ?? .distantPast, $1.currentTime) + } + } +} From 3cd50eca0c0b3d952a81ad15926a06df5df9895f Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 10 Sep 2026 15:37:24 -0500 Subject: [PATCH 107/172] refactor: the progress pull runs off .bookPlayed, not a delegate slot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ItemListViewModel loses activeTasks and the 68-line fetchExternalResource, and PlaybackSyncProgressDelegate is back to develop's single member — the question it exists to answer, which is whether the LIST is mid-fetch. The service self-subscribes to .bookPlayed, which PlayerManager posts for every playback start. So a CarPlay-only session now pulls media-server progress exactly like the phone; previously CarPlay claimed the one delegate slot and answered with an empty implementation, which silently disabled the feature for that whole session. MainCoordinator bridges the published position into playerState, because PlayerState is app-layer and a Shared service must not reach it. The split lands where it should: the service decides whether a remote position is worth offering, the coordinator decides where the offer goes. Deleted along the way: two copies of the 15s threshold comparison, two throwaway connection services constructed on every playback start (including for plain local books, which have no media server to ask), and the uuid-keyed task dictionary that let an abandoned book's answer raise a prompt. CarPlay still doesn't present the offer — that's next. It already presents multi-action alerts, so the empty stub was never an API limitation. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Coordinators/MainCoordinator.swift | 14 ++++ .../Library/ItemList/ItemListViewModel.swift | 69 ------------------- BookPlayer/Player/PlayerManager.swift | 4 +- BookPlayer/Player/PlayerManagerProtocol.swift | 1 - BookPlayer/Services/CarPlayManager.swift | 6 -- BookPlayer/Utils/AppServices.swift | 4 ++ BookPlayer/Utils/CoreServices.swift | 1 + BookPlayerTests/ImportOperationTests.swift | 52 ++++++++++++++ CLAUDE.md | 5 +- .../ExternalProgressService.swift | 21 ++++++ 10 files changed, 97 insertions(+), 80 deletions(-) diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index f6b76be8b..0f24c9c47 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -20,6 +20,7 @@ class MainCoordinator: NSObject { let importManager: ImportManager let externalImportBus: ExternalImportBus let playerManager: PlayerManager + let externalProgressService: ExternalProgressService let playerLoaderService: PlayerLoaderService let singleFileDownloadService: SingleFileDownloadService let libraryService: LibraryService @@ -62,6 +63,7 @@ class MainCoordinator: NSObject { preferencesService: coreServices.preferencesService ) self.concurrenceService = coreServices.concurrenceService + self.externalProgressService = coreServices.externalProgressService self.singleFileDownloadService = SingleFileDownloadService(networkClient: NetworkClient()) self.watchConnectivityService = coreServices.watchService let jellyfinService = JellyfinConnectionService() @@ -171,6 +173,18 @@ class MainCoordinator: NSObject { self?.playerState.loadedBookRelativePath = item?.relativePath } .store(in: &disposeBag) + + // The service decides WHETHER a remote position is worth offering; this only decides + // where the offer lands. PlayerState is app-layer, so a Shared service can't write it. + externalProgressService.promptablePositionPublisher + .receive(on: DispatchQueue.main) + .sink { [weak self] position in + guard let self, !playerState.showResumePopup else { return } + + playerState.remotePlayTime = position.currentTime + playerState.showResumePopup = true + } + .store(in: &disposeBag) } func loadPlayer(_ relativePath: String, autoplay: Bool, showPlayer: Bool) { diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index 51dfc3090..477a30321 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -23,7 +23,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { let singleFileDownloadService: SingleFileDownloadService /// Reference to ongoing library fetch task var contentsFetchTask: Task<(), Error>? - private var activeTasks: [String: Task<(), Error>] = [:] @Published var items: [SimpleLibraryItem] = [] @Published var isLoading: Bool = false @@ -907,72 +906,4 @@ extension ItemListViewModel: PlaybackSyncProgressDelegate { func waitForSyncInProgress() async { _ = await contentsFetchTask?.result } - - func fetchExternalResource(_ playableItem: PlayableItem) async { - activeTasks[playableItem.uuid]?.cancel() - - activeTasks[playableItem.uuid] = Task { [weak self] in - guard let self else { return } - // Only the LIVE task cleans its entry: the cancelled predecessor's defer runs after - // the replacement was stored and would clobber it. - defer { if !Task.isCancelled { self.activeTasks[playableItem.uuid] = nil } } - let lastPlayDate = playableItem.lastPlayDate ?? Date.distantPast - let jellyfinService = JellyfinConnectionService() - jellyfinService.setup() - - let audiobookShelfService = AudiobookShelfConnectionService() - audiobookShelfService.setup() - - guard let externalResources = libraryService.findResources(for: playableItem.uuid) else { return } - - for externalResource in externalResources { - switch ExternalResource.ProviderName(rawValue: externalResource.providerName) { - case .jellyfin: - do { - // Pin the resource's own server — the active connection may be a different instance - // where this provider id doesn't exist (or worse, names another book). - guard let connection = IntegrationHostResolver.connection( - for: externalResource.hostId, in: jellyfinService.connections - ) else { break } - jellyfinService.useConnection(connection) - if let jellyfinItem = try await jellyfinService.fetchItem(for: externalResource.providerId) { - let threshold: TimeInterval = 15 - let externalPlayDate = jellyfinItem.lastPlayedDate ?? Date.distantPast - let isExternalDateNewer = externalPlayDate > lastPlayDate.addingTimeInterval(threshold) - let isExternalSecondsFarther = TimeInterval(jellyfinItem.currentSeconds ?? 0) > (playableItem.currentTime + threshold) - if !playerState.showResumePopup && (isExternalDateNewer || isExternalSecondsFarther) { - playerState.remotePlayTime = Double(jellyfinItem.currentSeconds ?? 0) - playerState.showResumePopup = true - } - } - } catch { - Self.logger.error("Failed to fetch item from Jellyfin: \(error)") - } - case .audiobookshelf: - do { - // Same per-resource server pinning as the Jellyfin branch above. - guard let connection = IntegrationHostResolver.connection( - for: externalResource.hostId, in: audiobookShelfService.connections - ) else { break } - audiobookShelfService.useConnection(connection) - if let audiobookShelfItem = try await audiobookShelfService.fetchItem(for: externalResource.providerId) { - let threshold: TimeInterval = 15 - // From the progress payload's lastUpdate — same comparison as Jellyfin - let externalPlayDate = audiobookShelfItem.lastPlayedDate ?? Date.distantPast - let isExternalDateNewer = externalPlayDate > lastPlayDate.addingTimeInterval(threshold) - let isExternalSecondsFarther = TimeInterval(audiobookShelfItem.currentTime ?? 0) > (playableItem.currentTime + threshold) - if !playerState.showResumePopup && (isExternalDateNewer || isExternalSecondsFarther) { - playerState.remotePlayTime = Double(audiobookShelfItem.currentTime ?? 0) - playerState.showResumePopup = true - } - } - } catch { - Self.logger.error("Failed to fetch item from AudiobookShelf: \(error)") - } - default: - break - } - } - } - } } diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 89858182f..453cde4a6 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -1235,9 +1235,9 @@ extension PlayerManager { setNowPlayingBookTitle(chapter: currentItem.currentChapter) + // ExternalProgressService self-subscribes to this: the media-server progress pull no + // longer depends on which UI happens to hold the delegate slot. NotificationCenter.default.post(name: .bookPlayed, object: nil, userInfo: ["book": currentItem]) - - await syncProgressDelegate?.fetchExternalResource(currentItem) } } diff --git a/BookPlayer/Player/PlayerManagerProtocol.swift b/BookPlayer/Player/PlayerManagerProtocol.swift index c14e93da9..45a3ff71f 100644 --- a/BookPlayer/Player/PlayerManagerProtocol.swift +++ b/BookPlayer/Player/PlayerManagerProtocol.swift @@ -55,5 +55,4 @@ public protocol PlayerManagerProtocol: AnyObject { /// Delegate that hooks into the playback sequence public protocol PlaybackSyncProgressDelegate: AnyObject { func waitForSyncInProgress() async - func fetchExternalResource(_ playableItem: PlayableItem) async } diff --git a/BookPlayer/Services/CarPlayManager.swift b/BookPlayer/Services/CarPlayManager.swift index a1c2471d4..2e6f470b5 100644 --- a/BookPlayer/Services/CarPlayManager.swift +++ b/BookPlayer/Services/CarPlayManager.swift @@ -748,10 +748,4 @@ extension CarPlayManager: PlaybackSyncProgressDelegate { func waitForSyncInProgress() async { _ = await contentsFetchTask?.result } - - // Deliberately empty: CarPlay playback is local/cloud-only — media-server progress - // refresh happens on the phone UI paths, not while driving. - func fetchExternalResource(_ playableItem: PlayableItem) async { - - } } diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index d2500aac8..3a3277d14 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -121,6 +121,9 @@ final class AppServices: BPLogger { libraryService.preferencesService = preferencesService Task { await preferencesService.bootstrap() } + let externalProgressService = ExternalProgressService() + externalProgressService.setup(libraryService: libraryService) + let coreServices = CoreServices( accountService: accountService, dataManager: dataManager, @@ -132,6 +135,7 @@ final class AppServices: BPLogger { preferencesService: preferencesService, syncService: syncService, concurrenceService: concurrenceService, + externalProgressService: externalProgressService, watchService: watchService ) diff --git a/BookPlayer/Utils/CoreServices.swift b/BookPlayer/Utils/CoreServices.swift index 5e41cbf63..412c638a5 100644 --- a/BookPlayer/Utils/CoreServices.swift +++ b/BookPlayer/Utils/CoreServices.swift @@ -20,5 +20,6 @@ struct CoreServices { let preferencesService: PreferencesSyncService let syncService: SyncService let concurrenceService: ConcurrenceService + let externalProgressService: ExternalProgressService let watchService: PhoneWatchConnectivityService } diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 6161f2211..ba1747487 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -923,6 +923,58 @@ final class ExternalProgressServiceTests: XCTestCase { XCTAssertEqual(received.count, 1, "only the item that is playing now can prompt") } + /// The point of the extraction: the pull is driven by the notification the player posts for + /// EVERY playback start, so it no longer depends on which UI holds a delegate slot — a + /// car-only session used to get an empty implementation and never pull at all. + func testRefreshesFromTheBookPlayedNotification() async { + let libraryService = LibraryServiceProtocolMock() + libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] + + let jellyfin = ProviderStub { _ in + ExternalPlaybackProgress(currentTime: 600, lastPlayedDate: Date(timeIntervalSince1970: 9000)) + } + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin]) + + var received: [ExternalPlaybackProgress] = [] + let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } + defer { cancellable.cancel() } + + NotificationCenter.default.post( + name: .bookPlayed, + object: nil, + userInfo: ["book": makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)] + ) + try? await Task.sleep(nanoseconds: 400_000_000) + + XCTAssertEqual(jellyfin.requested, ["jf-1"], "playback start alone drives the pull") + XCTAssertEqual(received.first?.currentTime, 600) + } + + func testLogoutNotificationCancelsInFlightWork() async { + let libraryService = LibraryServiceProtocolMock() + libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] + + let slow = ProviderStub { _ in + try? await Task.sleep(nanoseconds: 250_000_000) + return ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000)) + } + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: [.jellyfin: slow]) + + var received: [ExternalPlaybackProgress] = [] + let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } + defer { cancellable.cancel() } + + sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) + NotificationCenter.default.post(name: .logout, object: nil) + try? await Task.sleep(nanoseconds: 600_000_000) + + XCTAssertTrue(received.isEmpty, "signing out stops a refresh already in flight") + } + func testTeardownCancelsAnInFlightRefresh() async { let libraryService = LibraryServiceProtocolMock() libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] diff --git a/CLAUDE.md b/CLAUDE.md index 174b27376..87d4a4091 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -121,8 +121,9 @@ first. Reordering boot risks a launch crash. - `@MainActor final class AppServices` with `static let shared` + `private init()`. Owns the async `setupCoreServicesTask`, the `DatabaseInitializer`, and a shared `PlayerState`. -- `CoreServices` (`BookPlayer/Utils/CoreServices.swift`) is a struct of exactly **11 services**: `accountService`, - `concurrenceService`, +- `CoreServices` (`BookPlayer/Utils/CoreServices.swift`) is a struct of exactly **12 services**: `accountService`, + `concurrenceService`, `externalProgressService` (pulls media-server playback positions; self-subscribes to + `.bookPlayed` so the pull never depends on which UI is attached), `dataManager`, `hardcoverService`, `libraryService`, `playbackService`, `playerLoaderService`, `playerManager`, `preferencesService` (`PreferencesSyncService`), `syncService`, `watchService` (`PhoneWatchConnectivityService`). - **Two-step `init()` + `setup(...)` DI pattern:** services are created empty then configured, e.g. diff --git a/Shared/Services/ExternalProgress/ExternalProgressService.swift b/Shared/Services/ExternalProgress/ExternalProgressService.swift index 4e0ffb428..6d18b4dc5 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressService.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressService.swift @@ -34,6 +34,7 @@ public final class ExternalProgressService { private let stateLock = NSLock() private var refreshTask: Task? private var requestedUuid: String? + private var disposeBag = Set() public init() {} @@ -46,6 +47,26 @@ public final class ExternalProgressService { ) { self.libraryService = libraryService self.providers = providers + + bindObservers() + } + + /// Self-subscribed rather than called by the player, so nothing about which UI is attached + /// can decide whether a refresh happens — the point of moving this off a view model. + /// `.bookPlayed` is posted by PlayerManager for every playback start, phone or CarPlay. + private func bindObservers() { + NotificationCenter.default.publisher(for: .bookPlayed) + .compactMap { $0.userInfo?["book"] as? PlayableItem } + .sink { [weak self] item in + self?.refreshProgress(for: item) + } + .store(in: &disposeBag) + + NotificationCenter.default.publisher(for: .logout) + .sink { [weak self] _ in + self?.teardown() + } + .store(in: &disposeBag) } /// Ask every media server this item is linked to where the user is, and publish the answer From d758c134593778901dd5dbed5449753139633233 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 10 Sep 2026 15:44:49 -0500 Subject: [PATCH 108/172] fix: AudiobookShelf items refresh from their server too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The list refresh collected only jellyfin resources and handed them to an ingest typed to [String: JellyfinLibraryItem], with the provider name hardcoded in its CoreData predicate. So an ABS item's position never came back from its server — not because of an API gap (the push has always handled ABS, and ABS has the batch primitive) but because the caller couldn't express it. That ingest only ever used the position, the date and the finished flag, so it is now provider-neutral over ExternalPlaybackProgress and filters on the provider name it's given. The per-server grouping and per-provider batching moved into the service, where both providers get identical treatment. updateFromResource drops from 32 lines to one delegating call. The view model takes the service through a new @Entry environment key, injected for real by MainCoordinator — the @Entry default is a throwaway, as the repo documents. The Sourcery mock was regenerated for the protocol change rather than hand-edited. Tests: the two existing ingest tests move to the neutral fixture (and get shorter), plus a new one pinning that the same providerId under a different provider name cannot move the row — provider ids only mean something to the server that issued them. Behavior change: ABS items now update on list load where they previously never did. Worth confirming on the device pass. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Coordinators/MainCoordinator.swift | 1 + .../Generated/AutoMockable.generated.swift | 23 +++--- .../Library/ItemList/ItemListViewModel.swift | 37 ++------- .../Library/ItemList/LibraryRootView.swift | 3 + .../Extensions/Environment+BookPlayer.swift | 1 + BookPlayerTests/ImportOperationTests.swift | 82 +++++++++++++++++++ .../Services/LibraryServiceTests.swift | 62 ++++++++------ .../ExternalProgressProviding.swift | 77 +++++++++++++++++ .../ExternalProgressService.swift | 33 ++++++++ Shared/Services/LibraryService.swift | 24 ++++-- 10 files changed, 271 insertions(+), 72 deletions(-) diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index 0f24c9c47..8c51658b3 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -116,6 +116,7 @@ class MainCoordinator: NSObject { .environment(\.playbackService, playbackService) .environment(\.preferencesService, preferencesService) .environment(\.concurrenceService, concurrenceService) + .environment(\.externalProgressService, externalProgressService) ) vc.modalPresentationStyle = .fullScreen vc.modalTransitionStyle = .crossDissolve diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index 5d9f644ee..a8a47a2b5 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -10,7 +10,6 @@ import AppKit #endif import Combine -import CoreData import BookPlayerKit @testable import BookPlayer class LibraryServiceProtocolMock: LibraryServiceProtocol { @@ -1141,19 +1140,19 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { } //MARK: - handleSyncFromExternalResource - var handleSyncFromExternalResourceRemoteItemsDictionaryCallsCount = 0 - var handleSyncFromExternalResourceRemoteItemsDictionaryCalled: Bool { - return handleSyncFromExternalResourceRemoteItemsDictionaryCallsCount > 0 + var handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount = 0 + var handleSyncFromExternalResourceProviderNameProgressByProviderIdCalled: Bool { + return handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount > 0 } - var handleSyncFromExternalResourceRemoteItemsDictionaryReceivedRemoteItemsDictionary: [String: JellyfinLibraryItem]? - var handleSyncFromExternalResourceRemoteItemsDictionaryReceivedInvocations: [[String: JellyfinLibraryItem]] = [] - var handleSyncFromExternalResourceRemoteItemsDictionaryClosure: (([String: JellyfinLibraryItem]) -> Void)? + var handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedArguments: (providerName: String, progressByProviderId: [String: ExternalPlaybackProgress])? + var handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedInvocations: [(providerName: String, progressByProviderId: [String: ExternalPlaybackProgress])] = [] + var handleSyncFromExternalResourceProviderNameProgressByProviderIdClosure: ((String, [String: ExternalPlaybackProgress]) -> Void)? @MainActor - func handleSyncFromExternalResource(remoteItemsDictionary: [String: JellyfinLibraryItem]) { - handleSyncFromExternalResourceRemoteItemsDictionaryCallsCount += 1 - handleSyncFromExternalResourceRemoteItemsDictionaryReceivedRemoteItemsDictionary = remoteItemsDictionary - handleSyncFromExternalResourceRemoteItemsDictionaryReceivedInvocations.append(remoteItemsDictionary) - handleSyncFromExternalResourceRemoteItemsDictionaryClosure?(remoteItemsDictionary) + func handleSyncFromExternalResource(providerName: String, progressByProviderId: [String: ExternalPlaybackProgress]) { + handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount += 1 + handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedArguments = (providerName: providerName, progressByProviderId: progressByProviderId) + handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedInvocations.append((providerName: providerName, progressByProviderId: progressByProviderId)) + handleSyncFromExternalResourceProviderNameProgressByProviderIdClosure?(providerName, progressByProviderId) } } class PlaybackServiceProtocolMock: PlaybackServiceProtocol { diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index 477a30321..a3bdb0efb 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -18,6 +18,7 @@ final class ItemListViewModel: ObservableObject, BPLogger { let playerState: PlayerState private let syncService: SyncService private let listSyncRefreshService: ListSyncRefreshService + private let externalProgressService: ExternalProgressService private let loadingState: LoadingOverlayState private let listState: ListStateManager let singleFileDownloadService: SingleFileDownloadService @@ -107,6 +108,7 @@ final class ItemListViewModel: ObservableObject, BPLogger { playerState: PlayerState, syncService: SyncService, listSyncRefreshService: ListSyncRefreshService, + externalProgressService: ExternalProgressService, loadingState: LoadingOverlayState, listState: ListStateManager, singleFileDownloadService: SingleFileDownloadService @@ -118,6 +120,7 @@ final class ItemListViewModel: ObservableObject, BPLogger { self.playerState = playerState self.syncService = syncService self.listSyncRefreshService = listSyncRefreshService + self.externalProgressService = externalProgressService self.loadingState = loadingState self.listState = listState self.singleFileDownloadService = singleFileDownloadService @@ -868,37 +871,11 @@ extension ItemListViewModel { } } + /// Fold in what the items' own media servers report. The grouping-by-server and the + /// per-provider batching live in ExternalProgressService now, which is also why + /// AudiobookShelf items refresh here at all — this used to collect Jellyfin resources only. func updateFromResource() async { - let jellyfinResources = self.items.compactMap { item in - item.externalResources?.first { $0.providerName == ExternalResource.ProviderName.jellyfin.rawValue } - } - guard !jellyfinResources.isEmpty else { return } - - // A throwaway service instance: pinning connections on the SHARED environment service - // would silently repoint the UI's active connection after this refresh. - let jellyfinService = JellyfinConnectionService() - jellyfinService.setup() - - // Resources can belong to DIFFERENT servers — group them by their resolved connection and - // query each server for its own items. Resources whose host doesn't match any saved - // connection are skipped (their provider ids mean nothing to another server). - let connections = jellyfinService.connections - var resourcesByConnectionID: [String: [SimpleExternalResource]] = [:] - for resource in jellyfinResources { - guard let connection = IntegrationHostResolver.connection(for: resource.hostId, in: connections) else { continue } - resourcesByConnectionID[connection.id, default: []].append(resource) - } - - var results: [String: JellyfinLibraryItem] = [:] - for (connectionID, resources) in resourcesByConnectionID { - guard let connection = connections.first(where: { $0.id == connectionID }) else { continue } - jellyfinService.useConnection(connection) - guard let batch = try? await jellyfinService.updateItemsFromJellyfin(resources) else { continue } - results.merge(batch) { _, new in new } - } - guard !results.isEmpty else { return } - - libraryService.handleSyncFromExternalResource(remoteItemsDictionary: results) + await externalProgressService.refreshItems(items) } } diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index 5c9059841..3af882168 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -46,6 +46,7 @@ struct LibraryRootView: View { @Environment(\.playbackService) private var playbackService @Environment(\.syncService) private var syncService @Environment(\.hardcoverService) private var hardcoverService + @Environment(\.externalProgressService) private var externalProgressService @Environment(\.scenePhase) private var scenePhase var body: some View { @@ -59,6 +60,7 @@ struct LibraryRootView: View { playerState: playerState, syncService: syncService, listSyncRefreshService: listSyncRefreshService, + externalProgressService: externalProgressService, loadingState: loadingState, listState: listState, singleFileDownloadService: singleFileDownloadService @@ -74,6 +76,7 @@ struct LibraryRootView: View { playerState: playerState, syncService: syncService, listSyncRefreshService: listSyncRefreshService, + externalProgressService: externalProgressService, loadingState: loadingState, listState: listState, singleFileDownloadService: singleFileDownloadService diff --git a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift index ee775e055..b89567b73 100644 --- a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift +++ b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift @@ -16,6 +16,7 @@ extension EnvironmentValues { @Entry var playerLoaderService: PlayerLoaderService = .init() @Entry var playbackService: PlaybackService = .init() @Entry var concurrenceService: ConcurrenceService = .init() + @Entry var externalProgressService: ExternalProgressService = .init() @Entry var jellyfinService: JellyfinConnectionService = .init() @Entry var audiobookshelfService: AudiobookShelfConnectionService = .init() @Entry var hardcoverService: HardcoverService = .init() diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index ba1747487..eadf1f02e 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -726,6 +726,18 @@ final class ExternalProgressServiceTests: XCTestCase { lock.unlock() return try await answer(resource) } + + func progress( + forBatch resources: [SimpleExternalResource] + ) async throws -> [String: ExternalPlaybackProgress] { + var out: [String: ExternalPlaybackProgress] = [:] + for resource in resources { + if let progress = try await progress(for: resource) { + out[resource.providerId] = progress + } + } + return out + } } private func makeResource(provider: String, id: String) -> SimpleExternalResource { @@ -739,6 +751,28 @@ final class ExternalProgressServiceTests: XCTestCase { ) } + private func makeLibraryItem(resources: [SimpleExternalResource]?) -> SimpleLibraryItem { + SimpleLibraryItem( + title: "Book", + details: "Author", + speed: 1, + currentTime: 0, + duration: 1000, + percentCompleted: 0, + isFinished: false, + relativePath: "book-\(resources?.first?.providerId ?? "none").m4b", + remoteURL: nil, + artworkURL: nil, + orderRank: 0, + parentFolder: nil, + originalFileName: "book.m4b", + lastPlayDate: nil, + type: .book, + uuid: "UUID-\(resources?.first?.providerId ?? "none")", + externalResources: resources + ) + } + private func makeItem(uuid: String, currentTime: TimeInterval, lastPlayDate: Date?) -> PlayableItem { PlayableItem( title: "Book", @@ -975,6 +1009,54 @@ final class ExternalProgressServiceTests: XCTestCase { XCTAssertTrue(received.isEmpty, "signing out stops a refresh already in flight") } + /// The gap this closes: the list refresh collected Jellyfin resources only and handed them + /// to an ingest typed to a Jellyfin item, so AudiobookShelf items were never refreshed. + func testRefreshItemsFoldsInBothProviders() async { + let libraryService = LibraryServiceProtocolMock() + let jellyfin = ProviderStub { _ in + ExternalPlaybackProgress(currentTime: 120, lastPlayedDate: Date(timeIntervalSince1970: 500)) + } + let abs = ProviderStub { _ in + ExternalPlaybackProgress(currentTime: 340, lastPlayedDate: Date(timeIntervalSince1970: 900)) + } + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin, .audiobookshelf: abs]) + + await sut.refreshItems([ + makeLibraryItem(resources: [makeResource(provider: "jellyfin", id: "jf-1")]), + makeLibraryItem(resources: [makeResource(provider: "audiobookshelf", id: "abs-1")]), + makeLibraryItem(resources: [makeResource(provider: "hardcover", id: "12345")]), + ]) + + XCTAssertEqual(jellyfin.requested, ["jf-1"]) + XCTAssertEqual(abs.requested, ["abs-1"], "AudiobookShelf items refresh too") + + let ingested = libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedInvocations + XCTAssertEqual( + Set(ingested.map(\.providerName)), + ["jellyfin", "audiobookshelf"], + "each provider folds its own answers in, under its own provider name" + ) + XCTAssertFalse( + ingested.contains { $0.providerName == "hardcover" }, + "hardcover hosts nothing, so it is never batched" + ) + } + + func testRefreshItemsDoesNothingWithoutMediaServerResources() async { + let libraryService = LibraryServiceProtocolMock() + let jellyfin = ProviderStub { _ in XCTFail("must not be asked"); return nil } + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin]) + + await sut.refreshItems([makeLibraryItem(resources: nil)]) + + XCTAssertTrue(jellyfin.requested.isEmpty) + XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount, 0) + } + func testTeardownCancelsAnInFlightRefresh() async { let libraryService = LibraryServiceProtocolMock() libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] diff --git a/BookPlayerTests/Services/LibraryServiceTests.swift b/BookPlayerTests/Services/LibraryServiceTests.swift index d306ed51b..4a0bfedff 100644 --- a/BookPlayerTests/Services/LibraryServiceTests.swift +++ b/BookPlayerTests/Services/LibraryServiceTests.swift @@ -2221,19 +2221,11 @@ class LibraryServiceExternalResourceTests: XCTestCase { sut.dataManager.saveContext() let remoteDate = Date(timeIntervalSince1970: 2_000) - let remote = JellyfinLibraryItem( - id: "jelly-5", - name: "external-5", - kind: .audiobook, - durationSeconds: 200, - currentSeconds: 100, - isFinished: false, - lastPlayedDate: remoteDate, - blurHash: nil, - imageAspectRatio: nil, - details: nil + let remote = ExternalPlaybackProgress(currentTime: 100, lastPlayedDate: remoteDate, isFinished: false) + sut.handleSyncFromExternalResource( + providerName: "jellyfin", + progressByProviderId: ["jelly-5": remote] ) - sut.handleSyncFromExternalResource(remoteItemsDictionary: ["jelly-5": remote]) sut.dataManager.getContext().refresh(book, mergeChanges: true) XCTAssertEqual(book.currentTime, 100, accuracy: 0.01) @@ -2254,19 +2246,15 @@ class LibraryServiceExternalResourceTests: XCTestCase { book.lastPlayDate = localDate sut.dataManager.saveContext() - let remote = JellyfinLibraryItem( - id: "jelly-6", - name: "external-6", - kind: .audiobook, - durationSeconds: 200, - currentSeconds: 20, - isFinished: false, + let remote = ExternalPlaybackProgress( + currentTime: 20, lastPlayedDate: Date(timeIntervalSince1970: 1_000), - blurHash: nil, - imageAspectRatio: nil, - details: nil + isFinished: false + ) + sut.handleSyncFromExternalResource( + providerName: "jellyfin", + progressByProviderId: ["jelly-6": remote] ) - sut.handleSyncFromExternalResource(remoteItemsDictionary: ["jelly-6": remote]) sut.dataManager.getContext().refresh(book, mergeChanges: true) // Local progress is newer — the stale remote push must not clobber it @@ -2274,6 +2262,34 @@ class LibraryServiceExternalResourceTests: XCTestCase { XCTAssertEqual(book.lastPlayDate, localDate) } + /// The predicate now filters on the provider name it was handed, so one provider's answers + /// can never land on another provider's rows — a provider id only means something to the + /// server that issued it. + @MainActor + func testHandleSyncFromExternalResourceOnlyTouchesTheNamedProvider() async { + let book = makeBook("external-7", duration: 200) + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "shared-id", for: book.uuid) + sut.dataManager.getContext().refreshAllObjects() + + book.currentTime = 10 + book.lastPlayDate = Date(timeIntervalSince1970: 1_000) + sut.dataManager.saveContext() + + // Same providerId, different provider: an ABS batch must not move the Jellyfin-linked row. + sut.handleSyncFromExternalResource( + providerName: "audiobookshelf", + progressByProviderId: [ + "shared-id": ExternalPlaybackProgress( + currentTime: 180, + lastPlayedDate: Date(timeIntervalSince1970: 9_000) + ) + ] + ) + + sut.dataManager.getContext().refresh(book, mergeChanges: true) + XCTAssertEqual(book.currentTime, 10, accuracy: 0.01, "another provider's answer is not ours") + } + @MainActor func testInsertItemsFromResourcesCreatesExternalBooks() async { let simpleItem = SimpleLibraryItem( diff --git a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift index 60c9d5706..5aaa2d243 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift @@ -32,6 +32,36 @@ public protocol ExternalProgressProviding: Sendable { /// The position that resource's OWN server reports, or nil when no saved connection matches /// its host — the server isn't configured on this device, so there is nothing to compare. func progress(for resource: SimpleExternalResource) async throws -> ExternalPlaybackProgress? + + /// Positions for many resources at once, keyed by providerId. + /// + /// The resources may span SEVERAL servers of the same provider, so each is resolved to its + /// own connection and queried there — a batch is not one request. A resource whose host + /// resolves to nothing is simply absent from the result. + func progress(forBatch resources: [SimpleExternalResource]) async throws -> [String: ExternalPlaybackProgress] +} + +extension ExternalProgressProviding { + /// Groups resources by the connection that owns them, so a caller can query each server + /// with only its own ids. Shared by both adapters: the grouping rule is the resolution + /// contract, not provider-specific. + func grouped( + _ resources: [SimpleExternalResource], + by connections: [C] + ) -> [(connection: C, resources: [SimpleExternalResource])] { + var byConnectionIndex: [Int: [SimpleExternalResource]] = [:] + + for resource in resources { + guard + let connection = IntegrationHostResolver.connection(for: resource.hostId, in: connections), + let index = connections.firstIndex(where: { $0.stableHostId == connection.stableHostId }) + else { continue } + + byConnectionIndex[index, default: []].append(resource) + } + + return byConnectionIndex.map { (connections[$0.key], $0.value) } + } } /// Stateless: the connection service is built per call rather than held. @@ -66,6 +96,30 @@ public struct JellyfinProgressProvider: ExternalProgressProviding { isFinished: item.isFinished ) } + + public func progress( + forBatch resources: [SimpleExternalResource] + ) async throws -> [String: ExternalPlaybackProgress] { + let service = await JellyfinConnectionService() + await service.setup() + + var progress: [String: ExternalPlaybackProgress] = [:] + + for group in grouped(resources, by: await service.connections) { + await service.useConnection(group.connection) + + let items = try await service.updateItemsFromJellyfin(group.resources) + for (providerId, item) in items { + progress[providerId] = ExternalPlaybackProgress( + currentTime: TimeInterval(item.currentSeconds ?? 0), + lastPlayedDate: item.lastPlayedDate, + isFinished: item.isFinished + ) + } + } + + return progress + } } /// Same shape as `JellyfinProgressProvider`, including why it holds no connection service. @@ -93,4 +147,27 @@ public struct AudiobookShelfProgressProvider: ExternalProgressProviding { isFinished: item.isFinished ) } + + public func progress( + forBatch resources: [SimpleExternalResource] + ) async throws -> [String: ExternalPlaybackProgress] { + let service = await AudiobookShelfConnectionService() + await service.setup() + + var progress: [String: ExternalPlaybackProgress] = [:] + + for group in grouped(resources, by: await service.connections) { + await service.useConnection(group.connection) + + for item in try await service.fetchItems(ids: group.resources.map(\.providerId)) { + progress[item.id] = ExternalPlaybackProgress( + currentTime: item.currentTime ?? 0, + lastPlayedDate: item.lastPlayedDate, + isFinished: item.isFinished + ) + } + } + + return progress + } } diff --git a/Shared/Services/ExternalProgress/ExternalProgressService.swift b/Shared/Services/ExternalProgress/ExternalProgressService.swift index 6d18b4dc5..29c69137d 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressService.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressService.swift @@ -113,6 +113,39 @@ public final class ExternalProgressService { stateLock.unlock() } + /// Refresh the positions of items already on screen, so a list shows what the user's other + /// devices did without waiting for them to open each book. + /// + /// Every provider is asked in parallel and each folds its own answers in, so AudiobookShelf + /// items refresh alongside Jellyfin ones — they never did before, because the ingest was + /// typed to a Jellyfin item and the caller collected only Jellyfin resources. + public func refreshItems(_ items: [SimpleLibraryItem]) async { + let resources = items.flatMap { $0.externalResources?.mediaServerResources ?? [] } + guard !resources.isEmpty else { return } + + let byProvider = Dictionary(grouping: resources) { $0.providerName } + + await withTaskGroup(of: (String, [String: ExternalPlaybackProgress]).self) { group in + for (providerName, providerResources) in byProvider { + guard + let name = ExternalResource.ProviderName(rawValue: providerName), + let provider = providers[name] + else { continue } + + group.addTask { + (providerName, (try? await provider.progress(forBatch: providerResources)) ?? [:]) + } + } + + for await (providerName, progress) in group where !progress.isEmpty { + await libraryService.handleSyncFromExternalResource( + providerName: providerName, + progressByProviderId: progress + ) + } + } + } + /// Cancels any refresh in flight. Called on logout, the same lifecycle hook SyncService uses. public func teardown() { stateLock.lock() diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index f696910f4..0afe56149 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -186,7 +186,11 @@ public protocol LibraryServiceProtocol: AnyObject { // Sourcery-generated mock property names. @MainActor func insertItems(fromResources resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] - @MainActor func handleSyncFromExternalResource(remoteItemsDictionary: [String: JellyfinLibraryItem]) + /// Fold positions reported by a provider's servers into the local rows. + @MainActor func handleSyncFromExternalResource( + providerName: String, + progressByProviderId: [String: ExternalPlaybackProgress] + ) } // swiftlint:disable force_cast @@ -2941,13 +2945,19 @@ extension LibraryService { return snapshots } - @MainActor public func handleSyncFromExternalResource(remoteItemsDictionary: [String: JellyfinLibraryItem]) { - let remoteKeys = Array(remoteItemsDictionary.keys) - + /// Provider-neutral on purpose: this only ever used the position, the date and the finished + /// flag, and typing it to `JellyfinLibraryItem` is what kept AudiobookShelf items from being + /// refreshed at all — the caller could not even express an ABS batch. + @MainActor public func handleSyncFromExternalResource( + providerName: String, + progressByProviderId: [String: ExternalPlaybackProgress] + ) { + let remoteKeys = Array(progressByProviderId.keys) + let fetch: NSFetchRequest = ExternalResource.fetchRequest() fetch.predicate = NSPredicate( format: "%K == %@ AND %K IN %@", - #keyPath(ExternalResource.providerName), ExternalResource.ProviderName.jellyfin.rawValue, + #keyPath(ExternalResource.providerName), providerName, #keyPath(ExternalResource.providerId), remoteKeys ) let context = self.dataManager.getContext() @@ -2958,7 +2968,7 @@ extension LibraryService { for localResource in localResources { // We already know this exists because of our predicate! guard let localItem = localResource.libraryItem, - let remoteItem = remoteItemsDictionary[localResource.providerId] else { + let remoteItem = progressByProviderId[localResource.providerId] else { continue } @@ -2966,7 +2976,7 @@ extension LibraryService { let remoteDate = remoteItem.lastPlayedDate ?? .distantPast if remoteDate > localDate { - localItem.currentTime = Double(remoteItem.currentSeconds ?? 0) + localItem.currentTime = remoteItem.currentTime localItem.isFinished = remoteItem.isFinished ?? localItem.isFinished localItem.lastPlayDate = remoteDate // The library row's progress bar renders percentCompleted, not currentTime — From 4967d5f57c143de77b3b690d415aedd0c6464fe1 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 10 Sep 2026 16:24:48 -0500 Subject: [PATCH 109/172] feat: CarPlay asks about a farther remote position MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The car half of the pull is no longer silent. Since the pull moved off the delegate it already runs in a car-only session, but the answer had nowhere to go — a server reporting that another device got further did nothing at all. CarPlay has always been able to present multi-action alerts, and showAlert already maps BPActionItems onto CPAlertActions, so the empty delegate stub was never an API limitation. It was a decision nobody made. Presented only when the app isn't foregrounded: an active app shows the SwiftUI alert, and asking twice for one decision is worse than either surface asking once. Answering in the car clears the shared flag, so the phone doesn't re-ask a question the driver already answered. No new strings — this reuses the resume alert's existing keys. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer/Services/CarPlayManager.swift | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/BookPlayer/Services/CarPlayManager.swift b/BookPlayer/Services/CarPlayManager.swift index 2e6f470b5..3a0510902 100644 --- a/BookPlayer/Services/CarPlayManager.swift +++ b/BookPlayer/Services/CarPlayManager.swift @@ -216,6 +216,13 @@ class CarPlayManager: NSObject { }) .store(in: &disposeBag) + AppServices.shared.coreServices?.externalProgressService.promptablePositionPublisher + .receive(on: RunLoop.main) + .sink(receiveValue: { [weak self] position in + self?.presentResumeOffer(at: position.currentTime) + }) + .store(in: &disposeBag) + self.boostVolumeItem.handler = { [weak self] (_, completion) in let flag = UserDefaults.standard.bool(forKey: Constants.UserDefaults.boostVolumeEnabled) @@ -703,6 +710,43 @@ extension CarPlayManager: AlertPresenter { self.interfaceController?.presentTemplate(alertTemplate, animated: true, completion: nil) } + /// The car's half of the resume offer: a media server says another device got further, so + /// ask, rather than the empty implementation this replaced — which meant a car-only session + /// silently dropped the decision even though CarPlay has always been able to present it. + /// + /// Only when the phone can't ask. An active app shows the SwiftUI alert, and two prompts for + /// one decision is worse than either; answering here clears the shared flag so the phone + /// doesn't re-ask a question the driver already answered. + @MainActor + private func presentResumeOffer(at remoteTime: TimeInterval) { + guard + interfaceController != nil, + UIApplication.shared.applicationState != .active + else { return } + + let playerState = AppServices.shared.playerState + + showAlert( + BPAlertContent( + title: "resume_playback_alert_title".localized, + message: String( + format: "resume_playback_alert_message".localized, + TimeParser.formatTime(remoteTime) + ), + style: .alert, + actionItems: [ + BPActionItem(title: "yes_button".localized) { + AppServices.shared.coreServices?.playerManager.jumpTo(remoteTime) + playerState.showResumePopup = false + }, + BPActionItem(title: "ignore_button".localized) { + playerState.showResumePopup = false + }, + ] + ) + ) + } + public func showAlert(_ content: BPAlertContent) { let actions = content.actionItems.map({ item in return CPAlertAction( From 7a39cc7a98d41afb060571c0adcab07fb8134d91 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 10 Sep 2026 16:29:34 -0500 Subject: [PATCH 110/172] refactor: stream resolution moves behind an injected resolver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getPlayableChapters built media-server stream URLs and auth headers inline, per provider, from a KeychainService() it constructed itself. So nothing about which server an item streams from, which token authorises it, or the unresolved-host flag could be tested without a real keychain — which is why that flag only ever had a pure-function test. Resolution is now ExternalStreamResolver behind a protocol, injected through setup with a default. watchOS keeps its one-argument call and correctly resolves nothing, having no saved media-server connections. 52 lines leave PlaybackService. The tests this finally allows cover the contracts that mattered and had none: an unmatched host resolves to nothing rather than falling back to another server (the rule shared with the Android app), the integration's Authorization beats a user-configured lowercase authorization header from a reverse-proxy config, and hasUnresolvedExternalHost end-to-end — the flag the Media Servers shortcut depends on. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 6 + BookPlayerTests/ImportOperationTests.swift | 172 ++++++++++++++++++ .../Integrations/ExternalStreamResolver.swift | 101 ++++++++++ Shared/Services/PlaybackService.swift | 64 ++----- 4 files changed, 292 insertions(+), 51 deletions(-) create mode 100644 Shared/Integrations/ExternalStreamResolver.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 5587b4fd8..1f942a1a7 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -284,6 +284,7 @@ 41F1A20D254B0A0C0043FCF3 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 41F1A20C254B0A0C0043FCF3 /* Sentry */; }; 41F1A228254B0C6C0043FCF3 /* ZipArchive in Frameworks */ = {isa = PBXBuildFile; productRef = 41F1A227254B0C6C0043FCF3 /* ZipArchive */; }; 45FE3490229249F95A3CF5FF /* IntegrationHostResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */; }; + 4DCB4D54E03F9CDA56865A89 /* ExternalStreamResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51357B087F7FB3CF6E08296 /* ExternalStreamResolver.swift */; }; F2083D16D6C22A37C49AC2B7 /* ExternalProgressProviding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97ADE40DF29059A5B97E37D6 /* ExternalProgressProviding.swift */; }; ED7E919E39E0454432171664 /* ExternalProgressService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85605CDB6C6075AADBE2D15 /* ExternalProgressService.swift */; }; 4645F9FD2D1E46AC00A04257 /* SwipeInlineTip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4645F9FC2D1E46AC00A04257 /* SwipeInlineTip.swift */; }; @@ -937,6 +938,7 @@ AE284AB4D4139ED869288F99 /* IntegrationConnectionPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A8030B619D18CA088DAA40A /* IntegrationConnectionPayload.swift */; }; B14881000000000000000001 /* IntegrationCustomHeadersSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14881000000000000000002 /* IntegrationCustomHeadersSectionView.swift */; }; B16A2A4FFFE86D46E799A773 /* IntegrationHostResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */; }; + 09E50F19D8C014240BD8A1BF /* ExternalStreamResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51357B087F7FB3CF6E08296 /* ExternalStreamResolver.swift */; }; CF9C88BC3DDD1AE5833E2106 /* ExternalProgressProviding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97ADE40DF29059A5B97E37D6 /* ExternalProgressProviding.swift */; }; CDA937D56B8AFBA03402E979 /* ExternalProgressService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85605CDB6C6075AADBE2D15 /* ExternalProgressService.swift */; }; B26B34D894351E8452FBB64B /* IntegrationServerInformationSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5F919ABFCEF9B58EFE9D82E /* IntegrationServerInformationSectionView.swift */; }; @@ -1151,6 +1153,7 @@ 2E070421575334E1CD85C049 /* IntegrationLibraryViewModelProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationLibraryViewModelProtocol.swift; sourceTree = ""; }; 3373A34FC2536111E50BF868 /* PasskeyEmailInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PasskeyEmailInputView.swift; sourceTree = ""; }; 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHostResolver.swift; sourceTree = ""; }; + A51357B087F7FB3CF6E08296 /* ExternalStreamResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExternalStreamResolver.swift; sourceTree = ""; }; 97ADE40DF29059A5B97E37D6 /* ExternalProgressProviding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExternalProgressProviding.swift; sourceTree = ""; }; C85605CDB6C6075AADBE2D15 /* ExternalProgressService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExternalProgressService.swift; sourceTree = ""; }; 35C564A7BDE3A2D98E02BF8B /* IntegrationConnectedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegrationConnectedView.swift; sourceTree = ""; }; @@ -3519,6 +3522,7 @@ 377C4C967D9AE1D471C2207C /* WebAuthenticating.swift */, 22E85F55E03D1981F097661C /* PKCE.swift */, 3451CA062919E03CEB975E92 /* IntegrationHostResolver.swift */, + A51357B087F7FB3CF6E08296 /* ExternalStreamResolver.swift */, ); path = Integrations; sourceTree = ""; @@ -4808,6 +4812,7 @@ EF5A25679D73F58A5D551D01 /* IntegrationConnectionStore.swift in Sources */, 8AC2579BAAAAFE0091DA9285 /* PKCE.swift in Sources */, 45FE3490229249F95A3CF5FF /* IntegrationHostResolver.swift in Sources */, + 4DCB4D54E03F9CDA56865A89 /* ExternalStreamResolver.swift in Sources */, F2083D16D6C22A37C49AC2B7 /* ExternalProgressProviding.swift in Sources */, ED7E919E39E0454432171664 /* ExternalProgressService.swift in Sources */, ); @@ -5432,6 +5437,7 @@ F575EA7BBE6C619D27225281 /* IntegrationConnectionStore.swift in Sources */, 77980C5A9B7CF1A948FE7CF1 /* PKCE.swift in Sources */, B16A2A4FFFE86D46E799A773 /* IntegrationHostResolver.swift in Sources */, + 09E50F19D8C014240BD8A1BF /* ExternalStreamResolver.swift in Sources */, CF9C88BC3DDD1AE5833E2106 /* ExternalProgressProviding.swift in Sources */, CDA937D56B8AFBA03402E979 /* ExternalProgressService.swift in Sources */, ); diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index eadf1f02e..20c8ed3d4 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -1080,3 +1080,175 @@ final class ExternalProgressServiceTests: XCTestCase { XCTAssertTrue(received.isEmpty, "logout stops work that is already in flight") } } + +// MARK: - External stream resolution + +/// Stream URLs, auth headers and the unresolved-host flag. None of this could be tested while +/// the logic sat inside PlaybackService.getPlayableChapters with its own KeychainService(). +final class ExternalStreamResolverTests: XCTestCase { + private func makeResource(provider: String, id: String, hostId: String?) -> SimpleExternalResource { + SimpleExternalResource( + providerName: provider, + providerId: id, + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: hostId, + libraryItem: nil + ) + } + + private func makeKeychain(customHeaders: [String: String] = [:]) throws -> KeychainStub { + let keychain = KeychainStub() + try keychain.set( + [ + JellyfinConnectionData( + serverId: "GUID-JELLY", + url: URL(string: "https://jelly.example.com")!, + serverName: "Jelly", + userID: "u1", + userName: "user", + accessToken: "jelly-token", + customHeaders: customHeaders + ) + ], + key: .jellyfinConnection + ) + return keychain + } + + func testResolvesTheResourcesOwnServerWithItsAuthHeader() throws { + let sut = ExternalStreamResolver(keychain: try makeKeychain()) + + let source = sut.streamSource(for: makeResource(provider: "jellyfin", id: "item-1", hostId: "guid-jelly")) + + XCTAssertEqual(source?.url.host, "jelly.example.com") + XCTAssertEqual( + source?.headers["Authorization"], + "MediaBrowser Token=\"jelly-token\"", + "the integration's own token authorises the stream, never the BookPlayer JWT" + ) + } + + /// The contract shared with the Android app: an unmatched host resolves to nothing rather + /// than streaming from whichever server happens to be configured. + func testDoesNotFallBackToAnotherServer() throws { + let sut = ExternalStreamResolver(keychain: try makeKeychain()) + + XCTAssertNil( + sut.streamSource(for: makeResource(provider: "jellyfin", id: "item-1", hostId: "guid-somewhere-else")) + ) + } + + /// Custom headers exist for reverse-proxy gates; the integration's Authorization must win, + /// and a lowercase user-configured key must not fight it. + func testIntegrationAuthorizationWinsOverACustomHeader() throws { + let keychain = try makeKeychain(customHeaders: [ + "CF-Access-Client-Id": "cf-id", + "authorization": "Bearer user-configured", + ]) + let sut = ExternalStreamResolver(keychain: keychain) + + let source = sut.streamSource(for: makeResource(provider: "jellyfin", id: "item-1", hostId: "guid-jelly")) + + XCTAssertEqual(source?.headers["CF-Access-Client-Id"], "cf-id", "proxy gates survive") + XCTAssertEqual(source?.headers["Authorization"], "MediaBrowser Token=\"jelly-token\"") + XCTAssertEqual( + source?.headers.filter { $0.key.caseInsensitiveCompare("Authorization") == .orderedSame }.count, + 1, + "one Authorization header, not two spellings of it" + ) + } + + func testHardcoverStreamsFromNowhere() throws { + let sut = ExternalStreamResolver(keychain: try makeKeychain()) + + XCTAssertNil(sut.streamSource(for: makeResource(provider: "hardcover", id: "12345", hostId: nil))) + } +} + +/// The flag PlaybackService puts on every chapter, now reachable because resolution is injected. +final class PlayableChapterExternalHostTests: XCTestCase { + private struct ResolverStub: ExternalStreamResolving { + let source: ExternalStreamSource? + func streamSource(for resource: SimpleExternalResource) -> ExternalStreamSource? { source } + } + + private func makeItem(resources: [SimpleExternalResource]?) -> SimpleLibraryItem { + SimpleLibraryItem( + title: "Book", + details: "Author", + speed: 1, + currentTime: 0, + duration: 100, + percentCompleted: 0, + isFinished: false, + relativePath: "book.m4b", + remoteURL: nil, + artworkURL: nil, + orderRank: 0, + parentFolder: nil, + originalFileName: "book.m4b", + lastPlayDate: nil, + type: .book, + uuid: "UUID", + externalResources: resources + ) + } + + private func makeSUT(resolved: Bool) -> PlaybackService { + let libraryService = LibraryServiceProtocolMock() + libraryService.getChaptersFromReturnValue = [ + SimpleChapter(title: "Chapter", start: 0, duration: 100, index: 1) + ] + + let sut = PlaybackService() + sut.setup( + libraryService: libraryService, + streamResolver: ResolverStub( + source: resolved + ? ExternalStreamSource( + url: URL(string: "https://jelly.example.com/stream")!, + headers: ["Authorization": "MediaBrowser Token=\"t\""] + ) + : nil + ) + ) + return sut + } + + private func mediaServerResource() -> SimpleExternalResource { + SimpleExternalResource( + providerName: "jellyfin", + providerId: "item-1", + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil, + hostId: "guid-jelly", + libraryItem: nil + ) + } + + func testResolvedResourceCarriesTheStreamUrlAndNoUnresolvedFlag() throws { + let chapters = try makeSUT(resolved: true).getPlayableChapters(book: makeItem(resources: [mediaServerResource()])) + + XCTAssertEqual(chapters.first?.externalUrl?.host, "jelly.example.com") + XCTAssertEqual(chapters.first?.externalHeaders["Authorization"], "MediaBrowser Token=\"t\"") + XCTAssertFalse(chapters.first?.hasUnresolvedExternalHost ?? true) + } + + /// The case the Media Servers shortcut depends on: a media-server item whose host resolves + /// to nothing on this device. + func testUnresolvedHostSetsTheFlagWithNoStreamUrl() throws { + let chapters = try makeSUT(resolved: false).getPlayableChapters(book: makeItem(resources: [mediaServerResource()])) + + XCTAssertNil(chapters.first?.externalUrl) + XCTAssertTrue(chapters.first?.hasUnresolvedExternalHost ?? false) + } + + /// A plain local book has no media server, so a missing file is not a server problem. + func testItemWithoutResourcesNeverSetsTheFlag() throws { + let chapters = try makeSUT(resolved: false).getPlayableChapters(book: makeItem(resources: nil)) + + XCTAssertNil(chapters.first?.externalUrl) + XCTAssertFalse(chapters.first?.hasUnresolvedExternalHost ?? true) + } +} diff --git a/Shared/Integrations/ExternalStreamResolver.swift b/Shared/Integrations/ExternalStreamResolver.swift new file mode 100644 index 000000000..b31d8acac --- /dev/null +++ b/Shared/Integrations/ExternalStreamResolver.swift @@ -0,0 +1,101 @@ +// +// ExternalStreamResolver.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +/// Where a media-server item streams from, and what authorises the request. +public struct ExternalStreamSource: Equatable, Sendable { + public let url: URL + /// Custom headers first (reverse-proxy gates like Cloudflare Access), then the integration's + /// own Authorization, which always wins on conflict. + public let headers: [String: String] + + public init(url: URL, headers: [String: String]) { + self.url = url + self.headers = headers + } +} + +public protocol ExternalStreamResolving { + /// The stream source for a resource, or nil when no saved connection on THIS device matches + /// its host — which is what makes an item show as needing its server rather than silently + /// streaming from whichever server happens to be configured. + func streamSource(for resource: SimpleExternalResource) -> ExternalStreamSource? +} + +/// Resolves against the connections saved in the keychain. +/// +/// Injected rather than constructed inline so the resolution can be exercised in a test: this +/// logic used to sit in the middle of `PlaybackService.getPlayableChapters` with its own +/// `KeychainService()`, which meant nothing about streaming URLs, auth headers, or the +/// unresolved-host flag could be verified without a real keychain. +public struct ExternalStreamResolver: ExternalStreamResolving { + private let keychain: KeychainServiceProtocol + + public init(keychain: KeychainServiceProtocol = KeychainService()) { + self.keychain = keychain + } + + public func streamSource(for resource: SimpleExternalResource) -> ExternalStreamSource? { + switch ExternalResource.ProviderName(rawValue: resource.providerName) { + case .jellyfin: + guard + let connection: JellyfinConnectionData = connection(for: resource, key: .jellyfinConnection), + let url = URL(string: connection.buildDownloadUrl(providerId: resource.providerId)) + else { return nil } + + return ExternalStreamSource( + url: url, + headers: authorizing( + connection.customHeaders, + with: "MediaBrowser Token=\"\(connection.accessToken)\"" + ) + ) + + case .audiobookshelf: + guard + let connection: AudiobookShelfConnectionData = connection(for: resource, key: .audiobookshelfConnection), + let url = URL(string: connection.buildAudiobookshelfDownloadUrl(providerId: resource.providerId)) + else { return nil } + + return ExternalStreamSource( + url: url, + headers: authorizing(connection.customHeaders, with: "Bearer \(connection.apiToken)") + ) + + default: + return nil + } + } + + /// Resolved by stable host identity ONLY — no first-connection fallback. A resource whose + /// host matches no saved server must surface as missing (connect-your-server), not stream + /// from another instance where its provider id means nothing, or names a different book. + /// Shared contract with the Android app. + private func connection( + for resource: SimpleExternalResource, + key: KeychainKeys + ) -> T? { + let connections: [T] = (try? keychain.get(key)) ?? [] + + return IntegrationHostResolver.connection(for: resource.hostId, in: connections) + } + + /// Case-insensitive dedup: a user-configured lowercase "authorization" must not fight the + /// integration's own header (same rule as JellyfinHeaderInjector). + private func authorizing( + _ customHeaders: [String: String], + with authorization: String + ) -> [String: String] { + var headers = customHeaders.filter { + $0.key.caseInsensitiveCompare("Authorization") != .orderedSame + } + headers["Authorization"] = authorization + + return headers + } +} diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index 2ff04c4f6..5d856fb92 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -32,11 +32,18 @@ public protocol PlaybackServiceProtocol { @Observable public final class PlaybackService: PlaybackServiceProtocol { var libraryService: LibraryServiceProtocol! + /// Defaulted so watchOS keeps its one-argument `setup` — the watch stores no media-server + /// connections, so resolution there correctly finds nothing. + var streamResolver: ExternalStreamResolving = ExternalStreamResolver() public init() {} - public func setup(libraryService: LibraryServiceProtocol) { + public func setup( + libraryService: LibraryServiceProtocol, + streamResolver: ExternalStreamResolving = ExternalStreamResolver() + ) { self.libraryService = libraryService + self.streamResolver = streamResolver } public func updatePlaybackTime(item: PlayableItem, time: Double) { @@ -221,57 +228,12 @@ public final class PlaybackService: PlaybackServiceProtocol { /// Ignore chapters that don't have the duration set properly chapters = chapters.filter { $0.duration > 0 } - // Resolve connection info once for the book - var externalUrl: URL? - var externalHeaders: [String: String] = [:] - + // Resolution — which server, which URL, which auth headers — belongs to the resolver; + // this only records the outcome onto the chapters. let externalResource = book.externalResources?.streamingResource - if let providerRaw = externalResource?.providerName, - let provider = ExternalResource.ProviderName(rawValue: providerRaw) { - - let keychainService = KeychainService() - let hostId = externalResource?.hostId ?? "" - - switch provider { - case .jellyfin: - let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] - // Resolved by stable host identity ONLY — no first-connection fallback. A resource whose - // host doesn't match any saved server must surface as missing (connect-your-server), not - // silently stream from whichever server happens to be configured (shared Android contract). - let connection = IntegrationHostResolver.connection(for: hostId, in: connections) - - if let connection = connection, let externalResource = externalResource { - let urlString = connection.buildDownloadUrl(providerId: externalResource.providerId) - externalUrl = URL(string: urlString) - // Custom headers first (reverse-proxy gates like Cloudflare Access), then the - // integration's own Authorization so it always wins on conflict. - // Case-insensitive dedup: a user-configured lowercase "authorization" must not - // fight the integration's own header (same rule as JellyfinHeaderInjector). - externalHeaders = connection.customHeaders.filter { - $0.key.caseInsensitiveCompare("Authorization") != .orderedSame - } - externalHeaders["Authorization"] = "MediaBrowser Token=\"\(connection.accessToken)\"" - } - - case .audiobookshelf: - let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] - let connection = IntegrationHostResolver.connection(for: hostId, in: connections) - - if let connection = connection, let externalResource = externalResource { - let urlString = connection.buildAudiobookshelfDownloadUrl(providerId: externalResource.providerId) - externalUrl = URL(string: urlString) - // Case-insensitive dedup: a user-configured lowercase "authorization" must not - // fight the integration's own header (same rule as JellyfinHeaderInjector). - externalHeaders = connection.customHeaders.filter { - $0.key.caseInsensitiveCompare("Authorization") != .orderedSame - } - externalHeaders["Authorization"] = "Bearer \(connection.apiToken)" - } - - default: - break - } - } + let streamSource = externalResource.flatMap { streamResolver.streamSource(for: $0) } + let externalUrl = streamSource?.url + let externalHeaders = streamSource?.headers ?? [:] // The resource exists but nothing matched its host, which is the only way the switch // above leaves externalUrl nil for a media-server item: the file can't be streamed or From 8c2835af3c735588ae8df96056f762f80eb6e48d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 10 Sep 2026 16:48:49 -0500 Subject: [PATCH 111/172] refactor: the prompt rule lives on the positions it compares MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit promptablePosition was a static on the service — the sixth this PR accumulated, and the only one with no excuse. It touches no instance state, had a single internal call site, and ExternalProgressService() is a free init, so unlike ItemDetailsViewModel or PlayerManager there was no construction problem to work around. The rule reasons about ExternalPlaybackProgress values and nothing else, so it belongs on the collection, next to the type it compares — the same move that put isMediaServer on SimpleExternalResource. The call site now reads candidates.promptable(localTime:localDate:), the service has no statics left, and five tests exercise a value-type extension with no service in sight. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayerTests/ImportOperationTests.swift | 30 +++++------------ .../ExternalProgressProviding.swift | 32 ++++++++++++++++++ .../ExternalProgressService.swift | 33 +------------------ 3 files changed, 42 insertions(+), 53 deletions(-) diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 20c8ed3d4..248bb5ddf 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -804,31 +804,22 @@ final class ExternalProgressServiceTests: XCTestCase { // MARK: the decision rule func testPromptsWhenTheRemoteDateIsNewerBeyondTheThreshold() { - let position = ExternalProgressService.promptablePosition( - localTime: 100, - localDate: Date(timeIntervalSince1970: 1000), - candidates: [ExternalPlaybackProgress(currentTime: 90, lastPlayedDate: Date(timeIntervalSince1970: 1100))] - ) + let position = [ExternalPlaybackProgress(currentTime: 90, lastPlayedDate: Date(timeIntervalSince1970: 1100))] + .promptable(localTime: 100, localDate: Date(timeIntervalSince1970: 1000)) XCTAssertEqual(position?.currentTime, 90, "a newer date prompts even when the position is behind") } func testDoesNotPromptInsideTheThreshold() { - let position = ExternalProgressService.promptablePosition( - localTime: 100, - localDate: Date(timeIntervalSince1970: 1000), - candidates: [ExternalPlaybackProgress(currentTime: 110, lastPlayedDate: Date(timeIntervalSince1970: 1005))] - ) + let position = [ExternalPlaybackProgress(currentTime: 110, lastPlayedDate: Date(timeIntervalSince1970: 1005))] + .promptable(localTime: 100, localDate: Date(timeIntervalSince1970: 1000)) XCTAssertNil(position, "10s of drift on the book you are listening to is not another device") } func testPromptsWhenTheRemotePositionIsFartherWithoutADate() { - let position = ExternalProgressService.promptablePosition( - localTime: 100, - localDate: Date(timeIntervalSince1970: 1000), - candidates: [ExternalPlaybackProgress(currentTime: 400, lastPlayedDate: nil)] - ) + let position = [ExternalPlaybackProgress(currentTime: 400, lastPlayedDate: nil)] + .promptable(localTime: 100, localDate: Date(timeIntervalSince1970: 1000)) XCTAssertEqual(position?.currentTime, 400, "a server reporting no date still counts on position") } @@ -838,18 +829,15 @@ final class ExternalProgressServiceTests: XCTestCase { let older = ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 1100)) let newer = ExternalPlaybackProgress(currentTime: 300, lastPlayedDate: Date(timeIntervalSince1970: 2000)) - let position = ExternalProgressService.promptablePosition( - localTime: 100, - localDate: Date(timeIntervalSince1970: 1000), - candidates: [older, newer] - ) + let position = [older, newer] + .promptable(localTime: 100, localDate: Date(timeIntervalSince1970: 1000)) XCTAssertEqual(position, newer, "the most recently played server wins, not the farthest position") } func testNoCandidatesMeansNoPrompt() { XCTAssertNil( - ExternalProgressService.promptablePosition(localTime: 100, localDate: nil, candidates: []) + [ExternalPlaybackProgress]().promptable(localTime: 100, localDate: nil) ) } diff --git a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift index 5aaa2d243..b5175d5f7 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift @@ -24,6 +24,38 @@ public struct ExternalPlaybackProgress: Equatable, Sendable { } } +extension [ExternalPlaybackProgress] { + /// The candidate worth prompting the user about, or nil when no server has anything newer. + /// + /// Two steps. A candidate qualifies only if it is ahead of the local state by more than + /// `threshold` — either a newer play date or a farther position — which keeps the prompt from + /// firing on the rounding drift of a book the user is actively listening to. Among the + /// qualifiers the NEWEST date wins, the same strictly-newer rule + /// `SyncService.handleSyncedLastPlayed` and `handleSyncFromExternalResource` already use for + /// our own cloud, with position breaking ties for servers that report no date. + /// + /// Lives on the collection rather than on the service: it reasons about these values and + /// nothing else, so a service instance has no say in the answer. + func promptable( + localTime: TimeInterval, + localDate: Date?, + threshold: TimeInterval = 15 + ) -> ExternalPlaybackProgress? { + let localDate = localDate ?? .distantPast + + return + filter { candidate in + let isDateNewer = (candidate.lastPlayedDate ?? .distantPast) > localDate.addingTimeInterval(threshold) + let isPositionFarther = candidate.currentTime > localTime + threshold + + return isDateNewer || isPositionFarther + } + .max { + ($0.lastPlayedDate ?? .distantPast, $0.currentTime) < ($1.lastPlayedDate ?? .distantPast, $1.currentTime) + } + } +} + /// Reads one provider's playback position for a resource. /// /// `Sendable` so the service can fan the providers out concurrently: an item linked to two diff --git a/Shared/Services/ExternalProgress/ExternalProgressService.swift b/Shared/Services/ExternalProgress/ExternalProgressService.swift index 29c69137d..47a94d739 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressService.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressService.swift @@ -98,11 +98,7 @@ public final class ExternalProgressService { guard !Task.isCancelled, self.isStillRequested(uuid), - let position = Self.promptablePosition( - localTime: localTime, - localDate: localDate, - candidates: candidates - ) + let position = candidates.promptable(localTime: localTime, localDate: localDate) else { return } self.promptablePositionPublisher.send(position) @@ -188,31 +184,4 @@ public final class ExternalProgressService { return requestedUuid == uuid } - /// The position worth prompting for, or nil when the servers have nothing newer to offer. - /// - /// Two steps. A candidate qualifies only if it is ahead of the local state by more than - /// `threshold` — either a newer play date or a farther position — which keeps the prompt - /// from firing on the rounding drift of a book the user is actively listening to. Among the - /// qualifiers the NEWEST date wins, the same strictly-newer rule - /// `SyncService.handleSyncedLastPlayed` and `handleSyncFromExternalResource` already use for - /// our own cloud, with position breaking ties for servers that report no date. - static func promptablePosition( - localTime: TimeInterval, - localDate: Date?, - candidates: [ExternalPlaybackProgress], - threshold: TimeInterval = 15 - ) -> ExternalPlaybackProgress? { - let localDate = localDate ?? .distantPast - - return candidates - .filter { candidate in - let isDateNewer = (candidate.lastPlayedDate ?? .distantPast) > localDate.addingTimeInterval(threshold) - let isPositionFarther = candidate.currentTime > localTime + threshold - - return isDateNewer || isPositionFarther - } - .max { - ($0.lastPlayedDate ?? .distantPast, $0.currentTime) < ($1.lastPlayedDate ?? .distantPast, $1.currentTime) - } - } } From 47c3e0f47eb9b8697c5c0eb93b79145cf529b1e3 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 11 Sep 2026 09:40:45 -0500 Subject: [PATCH 112/172] fix: one arbiter decides which surface asks about a remote position MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two subscribers each applied half a rule. CarPlay presented when the app was inactive, but MainCoordinator had already raised the phone's flag — so a driver who ignored the car alert was asked the same question again on unlocking the phone. ResumeOfferArbiter is now the single subscriber. An offer belongs to whichever surface receives it and the other never sees it, so no flag is left behind to fire later. It's created eagerly beside PlayerState rather than with CoreServices, because CarPlay registers itself from connect(), which on a cold launch into the car runs before the services exist. The subscription this replaces lived on CarPlayManager.init and resolved coreServices? at subscription time — so on exactly that path it silently never bound, and the resume offer was dead for the whole session. That is the same failure class the extraction set out to remove. Registration and subscription are decoupled so ordering can't matter. Closes the reviewer's WARN on 8c2835af and the double-prompt gap. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 4 + BookPlayer/Coordinators/MainCoordinator.swift | 12 --- BookPlayer/Services/CarPlayManager.swift | 74 ++++++++---------- BookPlayer/Services/ResumeOfferArbiter.swift | 71 +++++++++++++++++ BookPlayer/Utils/AppServices.swift | 12 ++- BookPlayerTests/ImportOperationTests.swift | 76 +++++++++++++++++++ 6 files changed, 191 insertions(+), 58 deletions(-) create mode 100644 BookPlayer/Services/ResumeOfferArbiter.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 1f942a1a7..54c2c1445 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -561,6 +561,7 @@ 63B4A3C42E93749300784A22 /* DynamicAccessibilityLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B4A3C32E93749300784A22 /* DynamicAccessibilityLabel.swift */; }; 63B4A3C62E93858C00784A22 /* PlayerControlsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */; }; 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */; }; + D071ABD44684949C58C7D8D0 /* ResumeOfferArbiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B6A047D0689D9E2E2D9749 /* ResumeOfferArbiter.swift */; }; 63B760E82C31FFC600AA98C7 /* SupportFlowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B760E72C31FFC600AA98C7 /* SupportFlowCoordinator.swift */; }; 63B760F72C32734000AA98C7 /* SecondOnboardingResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B760F62C32734000AA98C7 /* SecondOnboardingResponse.swift */; }; 63B760F92C32738E00AA98C7 /* StoryAccountSubscriptionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B760F82C32738E00AA98C7 /* StoryAccountSubscriptionService.swift */; }; @@ -1665,6 +1666,7 @@ 63B4A3C32E93749300784A22 /* DynamicAccessibilityLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicAccessibilityLabel.swift; sourceTree = ""; }; 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerControlsView.swift; sourceTree = ""; }; 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListSyncRefreshService.swift; sourceTree = ""; }; + 42B6A047D0689D9E2E2D9749 /* ResumeOfferArbiter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResumeOfferArbiter.swift; sourceTree = ""; }; 63B760E72C31FFC600AA98C7 /* SupportFlowCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportFlowCoordinator.swift; sourceTree = ""; }; 63B760F62C32734000AA98C7 /* SecondOnboardingResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondOnboardingResponse.swift; sourceTree = ""; }; 63B760F82C32738E00AA98C7 /* StoryAccountSubscriptionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryAccountSubscriptionService.swift; sourceTree = ""; }; @@ -3338,6 +3340,7 @@ 4193E201243A91AE004D6A82 /* ActionParserService.swift */, 9F82DF9B27DFE46B001B0EA8 /* PhoneWatchConnectivityService.swift */, 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */, + 42B6A047D0689D9E2E2D9749 /* ResumeOfferArbiter.swift */, 8A9D0D2F2CD0E06F007A924D /* SingleFileDownloadService.swift */, ); path = Services; @@ -5173,6 +5176,7 @@ 99329DB72F3AA8F6003F8E73 /* PlayControlsRowView.swift in Sources */, 416AAC3323F51031005AD04F /* LocalizableButton.swift in Sources */, 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */, + D071ABD44684949C58C7D8D0 /* ResumeOfferArbiter.swift in Sources */, 416A297D2568671F00605395 /* AVPlayer+BookPlayer.swift in Sources */, 634BA5A52C176B5A0015314D /* StoryActionView.swift in Sources */, 8A9D0D302CD0E074007A924D /* SingleFileDownloadService.swift in Sources */, diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index 8c51658b3..e37c2f254 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -174,18 +174,6 @@ class MainCoordinator: NSObject { self?.playerState.loadedBookRelativePath = item?.relativePath } .store(in: &disposeBag) - - // The service decides WHETHER a remote position is worth offering; this only decides - // where the offer lands. PlayerState is app-layer, so a Shared service can't write it. - externalProgressService.promptablePositionPublisher - .receive(on: DispatchQueue.main) - .sink { [weak self] position in - guard let self, !playerState.showResumePopup else { return } - - playerState.remotePlayTime = position.currentTime - playerState.showResumePopup = true - } - .store(in: &disposeBag) } func loadPlayer(_ relativePath: String, autoplay: Bool, showPlayer: Bool) { diff --git a/BookPlayer/Services/CarPlayManager.swift b/BookPlayer/Services/CarPlayManager.swift index 3a0510902..e3cbced5a 100644 --- a/BookPlayer/Services/CarPlayManager.swift +++ b/BookPlayer/Services/CarPlayManager.swift @@ -40,6 +40,9 @@ class CarPlayManager: NSObject { func connect(_ interfaceController: CPInterfaceController) { self.interfaceController = interfaceController self.interfaceController?.delegate = self + // The arbiter exists from launch, so this can't race CoreServices on a cold start into + // the car — the subscription this replaced lived in init and silently never bound there. + AppServices.shared.resumeOfferArbiter.carPlayPresenter = self /// Reset connect-scoped state so a re-connect without a paired disconnect doesn't act on a stale flag self.shouldShowPlayerOnConnect = false self.setupNowPlayingTemplate() @@ -106,6 +109,7 @@ class CarPlayManager: NSObject { } func disconnect() { + AppServices.shared.resumeOfferArbiter.carPlayPresenter = nil self.interfaceController = nil self.recentTemplate = nil self.libraryTemplate = nil @@ -216,13 +220,6 @@ class CarPlayManager: NSObject { }) .store(in: &disposeBag) - AppServices.shared.coreServices?.externalProgressService.promptablePositionPublisher - .receive(on: RunLoop.main) - .sink(receiveValue: { [weak self] position in - self?.presentResumeOffer(at: position.currentTime) - }) - .store(in: &disposeBag) - self.boostVolumeItem.handler = { [weak self] (_, completion) in let flag = UserDefaults.standard.bool(forKey: Constants.UserDefaults.boostVolumeEnabled) @@ -710,43 +707,6 @@ extension CarPlayManager: AlertPresenter { self.interfaceController?.presentTemplate(alertTemplate, animated: true, completion: nil) } - /// The car's half of the resume offer: a media server says another device got further, so - /// ask, rather than the empty implementation this replaced — which meant a car-only session - /// silently dropped the decision even though CarPlay has always been able to present it. - /// - /// Only when the phone can't ask. An active app shows the SwiftUI alert, and two prompts for - /// one decision is worse than either; answering here clears the shared flag so the phone - /// doesn't re-ask a question the driver already answered. - @MainActor - private func presentResumeOffer(at remoteTime: TimeInterval) { - guard - interfaceController != nil, - UIApplication.shared.applicationState != .active - else { return } - - let playerState = AppServices.shared.playerState - - showAlert( - BPAlertContent( - title: "resume_playback_alert_title".localized, - message: String( - format: "resume_playback_alert_message".localized, - TimeParser.formatTime(remoteTime) - ), - style: .alert, - actionItems: [ - BPActionItem(title: "yes_button".localized) { - AppServices.shared.coreServices?.playerManager.jumpTo(remoteTime) - playerState.showResumePopup = false - }, - BPActionItem(title: "ignore_button".localized) { - playerState.showResumePopup = false - }, - ] - ) - ) - } - public func showAlert(_ content: BPAlertContent) { let actions = content.actionItems.map({ item in return CPAlertAction( @@ -793,3 +753,29 @@ extension CarPlayManager: PlaybackSyncProgressDelegate { _ = await contentsFetchTask?.result } } + +extension CarPlayManager: ResumeOfferPresenting { + /// The car's half of the resume offer. ResumeOfferArbiter decides that the car — and only + /// the car — asks; this only presents. No shared flag to clear: the phone never raised one + /// for an offer routed here. + func presentResumeOffer(at remoteTime: TimeInterval) { + guard interfaceController != nil else { return } + + showAlert( + BPAlertContent( + title: "resume_playback_alert_title".localized, + message: String( + format: "resume_playback_alert_message".localized, + TimeParser.formatTime(remoteTime) + ), + style: .alert, + actionItems: [ + BPActionItem(title: "yes_button".localized) { + AppServices.shared.coreServices?.playerManager.jumpTo(remoteTime) + }, + BPActionItem(title: "ignore_button".localized) {}, + ] + ) + ) + } +} diff --git a/BookPlayer/Services/ResumeOfferArbiter.swift b/BookPlayer/Services/ResumeOfferArbiter.swift new file mode 100644 index 000000000..7f9195b12 --- /dev/null +++ b/BookPlayer/Services/ResumeOfferArbiter.swift @@ -0,0 +1,71 @@ +// +// ResumeOfferArbiter.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import Combine +import UIKit + +/// A surface that can ask the user whether to jump to a position another device reached. +@MainActor +protocol ResumeOfferPresenting: AnyObject { + func presentResumeOffer(at remoteTime: TimeInterval) +} + +/// Decides WHICH surface asks about a farther remote position — and only one ever does. +/// +/// `ExternalProgressService` publishes the position; this is the single subscriber. Two +/// subscribers each applying half a rule left a gap: the car presented when the app was +/// inactive, but the coordinator had already raised the phone's flag, so a driver who ignored +/// the car alert got asked again on unlocking the phone. An offer now belongs to whichever +/// surface received it, and the other never sees it. +/// +/// Created eagerly next to `PlayerState`, not with `CoreServices`: CarPlay registers itself +/// here from `connect()`, which on a cold launch into the car can run before the services +/// exist. Registration and subscription are decoupled so that ordering cannot matter — the +/// previous subscription lived on `CarPlayManager.init` and silently never bound on exactly +/// that path. +@MainActor +final class ResumeOfferArbiter { + /// Set by CarPlayManager on connect, cleared on disconnect. + weak var carPlayPresenter: ResumeOfferPresenting? + + private let playerState: PlayerState + private let isAppActive: () -> Bool + private var disposeBag = Set() + + init( + playerState: PlayerState, + isAppActive: @escaping () -> Bool = { UIApplication.shared.applicationState == .active } + ) { + self.playerState = playerState + self.isAppActive = isAppActive + } + + func bind(to service: ExternalProgressService) { + service.promptablePositionPublisher + .receive(on: DispatchQueue.main) + .sink { [weak self] position in + self?.route(position) + } + .store(in: &disposeBag) + } + + /// The car only when the phone can't ask: an active app shows the SwiftUI alert, and asking + /// twice for one decision is worse than either surface asking once. + func route(_ position: ExternalPlaybackProgress) { + if let carPlayPresenter, !isAppActive() { + carPlayPresenter.presentResumeOffer(at: position.currentTime) + return + } + + // Don't clobber a prompt the user is already looking at. + guard !playerState.showResumePopup else { return } + + playerState.remotePlayTime = position.currentTime + playerState.showResumePopup = true + } +} diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index 3a3277d14..be98908dd 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -26,11 +26,18 @@ final class AppServices: BPLogger { var pendingURLActions = [Action]() - let playerState = PlayerState() + let playerState: PlayerState + /// Eager, like playerState: CarPlay registers here from connect(), which on a cold launch + /// into the car runs before CoreServices exist. Its subscription is bound in setup below. + let resumeOfferArbiter: ResumeOfferArbiter let reviewPromptService = ReviewPromptService() - private init() {} + private init() { + let playerState = PlayerState() + self.playerState = playerState + self.resumeOfferArbiter = ResumeOfferArbiter(playerState: playerState) + } // MARK: - Core Services Setup @@ -123,6 +130,7 @@ final class AppServices: BPLogger { let externalProgressService = ExternalProgressService() externalProgressService.setup(libraryService: libraryService) + resumeOfferArbiter.bind(to: externalProgressService) let coreServices = CoreServices( accountService: accountService, diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 248bb5ddf..f963e0d88 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -1240,3 +1240,79 @@ final class PlayableChapterExternalHostTests: XCTestCase { XCTAssertFalse(chapters.first?.hasUnresolvedExternalHost ?? true) } } + +// MARK: - Resume offer routing + +/// One surface asks, never two: the arbiter is the single subscriber to the service. +@MainActor +final class ResumeOfferArbiterTests: XCTestCase { + private final class PresenterSpy: ResumeOfferPresenting { + var presentedTimes: [TimeInterval] = [] + func presentResumeOffer(at remoteTime: TimeInterval) { presentedTimes.append(remoteTime) } + } + + private let position = ExternalPlaybackProgress(currentTime: 480, lastPlayedDate: Date()) + + func testWithoutCarPlayThePhoneGetsTheOffer() { + let playerState = PlayerState() + let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { false }) + + sut.route(position) + + XCTAssertTrue(playerState.showResumePopup) + XCTAssertEqual(playerState.remotePlayTime, 480) + } + + /// The driving case: phone in a pocket, car connected. The car asks and the phone's flag is + /// never raised, so unlocking the phone later cannot ask the same question again. + func testCarPlayGetsTheOfferWhenTheAppIsInactive() { + let playerState = PlayerState() + let car = PresenterSpy() + let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { false }) + sut.carPlayPresenter = car + + sut.route(position) + + XCTAssertEqual(car.presentedTimes, [480]) + XCTAssertFalse(playerState.showResumePopup, "an offer routed to the car leaves no phone flag behind") + XCTAssertNil(playerState.remotePlayTime) + } + + /// Phone in hand with the car connected: the SwiftUI alert is the better surface, and the + /// car must stay quiet rather than ask in parallel. + func testThePhoneWinsWhenTheAppIsActiveEvenWithCarPlayConnected() { + let playerState = PlayerState() + let car = PresenterSpy() + let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { true }) + sut.carPlayPresenter = car + + sut.route(position) + + XCTAssertTrue(car.presentedTimes.isEmpty) + XCTAssertTrue(playerState.showResumePopup) + } + + func testAnOfferAlreadyShowingIsNotClobbered() { + let playerState = PlayerState() + playerState.showResumePopup = true + playerState.remotePlayTime = 120 + let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { true }) + + sut.route(position) + + XCTAssertEqual(playerState.remotePlayTime, 120, "the prompt the user is looking at keeps its position") + } + + /// Disconnecting the car must hand the next offer back to the phone. + func testAReleasedPresenterFallsBackToThePhone() { + let playerState = PlayerState() + let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { false }) + var car: PresenterSpy? = PresenterSpy() + sut.carPlayPresenter = car + car = nil + + sut.route(position) + + XCTAssertTrue(playerState.showResumePopup, "a weak presenter that went away is the same as none") + } +} From 3294ec53331e38bcc14b7702872fe969870f2750 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 11 Sep 2026 09:46:06 -0500 Subject: [PATCH 113/172] fix: downloading an external item resolves its source the same way streaming does MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit downloadRemoteFiles picked the resource with an unordered, provider-unfiltered first(where: syncStatus != notSynced) and then rebuilt the stream URL and auth headers inline — a third copy of the rule ExternalStreamResolver now owns. The pick was also a real bug. The API's markExternalSourceUploaded marks EVERY provider row for an item 'downloaded' — its own comment predicts "confirming one upload marks every provider 'downloaded'". So on a book linked to both Jellyfin and Hardcover, the Hardcover row passes the syncStatus check after a cloud upload, sync-down copies that status to the second device, and depending on NSSet iteration order the pick lands on Hardcover: default: break, no URL, and the function throws integration_error_missing_connection on a device whose Jellyfin connection is fine. Hardcover has no files and can never be a source. syncStatus was a sync-state question being used to answer a capability question; streamingResource asks the capability question directly, and the resolver hands the download the exact URL and headers the stream uses. 56 lines leave SyncService. Server-side, markExternalSourceUploaded should scope to the uploaded provider. That's a separate api ticket. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- Shared/Services/Sync/SyncService.swift | 78 ++++++++------------------ 1 file changed, 23 insertions(+), 55 deletions(-) diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 381d05636..36d2e86fa 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -165,15 +165,21 @@ public final class SyncService: SyncServiceProtocol, BPLogger { public init() {} + /// Where an external item downloads from — the same resolution PlaybackService uses to + /// stream it, so the two paths cannot disagree about server, URL or auth headers. + private var streamResolver: ExternalStreamResolving! + public func setup( isActive: Bool, libraryService: LibrarySyncProtocol, accountService: AccountServiceProtocol, concurrenceService: ConcurrenceServiceProtocol, tasksDataManager: TasksDataManager, - client: NetworkClientProtocol = NetworkClient() + client: NetworkClientProtocol = NetworkClient(), + streamResolver: ExternalStreamResolving = ExternalStreamResolver() ) { self.isActive = isActive + self.streamResolver = streamResolver self.libraryService = libraryService self.accountService = accountService self.concurrenceService = concurrenceService @@ -479,61 +485,23 @@ public final class SyncService: SyncServiceProtocol, BPLogger { public func downloadRemoteFiles(for item: SimpleLibraryItem) async throws { var remoteURLs: [RemoteFileURL] = [] var isExternalItem = false - if item.type == .book, - let external = item.externalResources?.first(where: { $0.syncStatus != ExternalResource.SyncStatus.notSynced.rawValue }) { + // streamingResource, not first(where:) over an unordered set: it is provider-filtered. + // The API's markExternalSourceUploaded marks EVERY provider row 'downloaded' for an + // item, so a dual-linked book's Hardcover row can pass a syncStatus check — and Hardcover + // has no files. Picking it here threw integration_error_missing_connection on a book + // whose Jellyfin connection was fine. + if item.type == .book, let external = item.externalResources?.streamingResource { isExternalItem = true - switch ExternalResource.ProviderName(rawValue: external.providerName) { - case .jellyfin: - let keychainService = KeychainService() - let connections: [JellyfinConnectionData] = (try? keychainService.get(.jellyfinConnection)) ?? [] - // Stable-host resolution only — downloading from a guessed server fetches the wrong - // file when provider item ids collide across instances (shared Android contract). - let connection = IntegrationHostResolver.connection(for: external.hostId, in: connections) - - if let connection = connection, - let downloadUrl = URL(string: connection.buildDownloadUrl(providerId: external.providerId)) { - // Custom headers first (reverse-proxy gates), integration Authorization wins on conflict. - // Case-insensitive dedup: a user-configured lowercase "authorization" must not - // fight the integration's own header (same rule as JellyfinHeaderInjector). - var headers = connection.customHeaders.filter { - $0.key.caseInsensitiveCompare("Authorization") != .orderedSame - } - headers["Authorization"] = "MediaBrowser Token=\"\(connection.accessToken)\"" - remoteURLs = [ - RemoteFileURL( - url: downloadUrl, - relativePath: item.relativePath, - type: .book, - headers: headers - ) - ] - } - case .audiobookshelf: - let keychainService = KeychainService() - let connections: [AudiobookShelfConnectionData] = (try? keychainService.get(.audiobookshelfConnection)) ?? [] - // Stable-host resolution only — downloading from a guessed server fetches the wrong - // file when provider item ids collide across instances (shared Android contract). - let connection = IntegrationHostResolver.connection(for: external.hostId, in: connections) - - if let connection = connection, - let downloadUrl = URL(string: connection.buildAudiobookshelfDownloadUrl(providerId: external.providerId)) { - // Case-insensitive dedup: a user-configured lowercase "authorization" must not - // fight the integration's own header (same rule as JellyfinHeaderInjector). - var headers = connection.customHeaders.filter { - $0.key.caseInsensitiveCompare("Authorization") != .orderedSame - } - headers["Authorization"] = "Bearer \(connection.apiToken)" - remoteURLs = [ - RemoteFileURL( - url: downloadUrl, - relativePath: item.relativePath, - type: .book, - headers: headers - ) - ] - } - default: - break + + if let source = streamResolver.streamSource(for: external) { + remoteURLs = [ + RemoteFileURL( + url: source.url, + relativePath: item.relativePath, + type: .book, + headers: source.headers + ) + ] } } else { remoteURLs = try await getRemoteFileURLs(of: item.relativePath, for: item.uuid, type: item.type) From 02ffd3df9cb8f42d8e104e15ac841f71af640c71 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 11 Sep 2026 09:49:48 -0500 Subject: [PATCH 114/172] refactor: the progress service holds its lock once and owns its notification center MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refreshProgress created its Task outside the critical section and stored it in a second one. Two interleaved calls could leave refreshTask pointing at the task it had just cancelled while the live one ran unreferenced — publishing stayed correct only through the isStillRequested check, and teardown would have missed the live task. It is created and stored under one lock now; the body only takes the lock after its first await, so holding it across creation is safe. The notification center is injected so tests can post to a private one. PreferencesSyncService observes .logout in production and real instances exist in the test target, so posting to .default from a unit test could reach a fixture that isn't ours. The suite's fixed Task.sleep waits became expectations fulfilled by the publisher, and the slow stub no longer swallows cancellation — so the teardown, logout and superseded-item tests now prove the refresh was cancelled, rather than that its late answer happened to be discarded. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayerTests/ImportOperationTests.swift | 244 +++++++++--------- .../ExternalProgressService.swift | 24 +- 2 files changed, 136 insertions(+), 132 deletions(-) diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index f963e0d88..4dcddbf49 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -701,10 +701,16 @@ final class ItemDetailsLoadTests: XCTestCase { // MARK: - External progress pull /// The inbound half of media-server progress sync, extracted out of ItemListViewModel. +/// +/// Waits are expectations fulfilled by the publisher, never fixed sleeps: the service's timing +/// is what's under test, and a fixed wait either flakes on a slow runner or hides a real +/// delay. Notifications go through a private center so nothing here can reach a real +/// service alive elsewhere in the test process. @MainActor final class ExternalProgressServiceTests: XCTestCase { /// Records what it was asked and answers from a script, so a test can assert the fan-out - /// without a server, a keychain, or a network. + /// without a server, a keychain, or a network. A slow answer sleeps WITHOUT swallowing + /// cancellation, so a cancelled refresh provably reaches the provider. private final class ProviderStub: ExternalProgressProviding, @unchecked Sendable { private let lock = NSLock() private var _requested: [String] = [] @@ -740,6 +746,22 @@ final class ExternalProgressServiceTests: XCTestCase { } } + private var notificationCenter: NotificationCenter! + private var received: [ExternalPlaybackProgress] = [] + private var cancellable: AnyCancellable? + + override func setUp() { + super.setUp() + notificationCenter = NotificationCenter() + received = [] + } + + override func tearDown() { + cancellable?.cancel() + cancellable = nil + super.tearDown() + } + private func makeResource(provider: String, id: String) -> SimpleExternalResource { SimpleExternalResource( providerName: provider, @@ -801,6 +823,42 @@ final class ExternalProgressServiceTests: XCTestCase { ) } + private func makeSUT( + resources: [SimpleExternalResource], + providers: [ExternalResource.ProviderName: ExternalProgressProviding] + ) -> (ExternalProgressService, LibraryServiceProtocolMock) { + let libraryService = LibraryServiceProtocolMock() + libraryService.findResourcesForReturnValue = resources + + let sut = ExternalProgressService() + sut.setup(libraryService: libraryService, providers: providers, notificationCenter: notificationCenter) + return (sut, libraryService) + } + + /// Subscribes and returns an expectation that fulfils once per published position. + private func expectPublish(from sut: ExternalProgressService, count: Int = 1, inverted: Bool = false) -> XCTestExpectation { + let expectation = expectation(description: inverted ? "nothing published" : "position published") + expectation.isInverted = inverted + if !inverted { + expectation.expectedFulfillmentCount = count + expectation.assertForOverFulfill = true + } + cancellable = sut.promptablePositionPublisher + .receive(on: DispatchQueue.main) + .sink { [weak self] position in + self?.received.append(position) + expectation.fulfill() + } + return expectation + } + + private func slowStub(_ progress: ExternalPlaybackProgress) -> ProviderStub { + ProviderStub { _ in + try await Task.sleep(nanoseconds: 250_000_000) + return progress + } + } + // MARK: the decision rule func testPromptsWhenTheRemoteDateIsNewerBeyondTheThreshold() { @@ -844,172 +902,140 @@ final class ExternalProgressServiceTests: XCTestCase { // MARK: the service func testAsksEveryLinkedServerConcurrentlyAndPublishesTheNewest() async { - let libraryService = LibraryServiceProtocolMock() - libraryService.findResourcesForReturnValue = [ - makeResource(provider: "jellyfin", id: "jf-1"), - makeResource(provider: "audiobookshelf", id: "abs-1"), - ] - let jellyfin = ProviderStub { _ in ExternalPlaybackProgress(currentTime: 800, lastPlayedDate: Date(timeIntervalSince1970: 1100)) } let abs = ProviderStub { _ in ExternalPlaybackProgress(currentTime: 200, lastPlayedDate: Date(timeIntervalSince1970: 5000)) } - - let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin, .audiobookshelf: abs]) - - var received: [ExternalPlaybackProgress] = [] - let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } - defer { cancellable.cancel() } + let (sut, _) = makeSUT( + resources: [makeResource(provider: "jellyfin", id: "jf-1"), makeResource(provider: "audiobookshelf", id: "abs-1")], + providers: [.jellyfin: jellyfin, .audiobookshelf: abs] + ) + let published = expectPublish(from: sut) sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 100, lastPlayDate: Date(timeIntervalSince1970: 1000))) - try? await Task.sleep(nanoseconds: 300_000_000) + await fulfillment(of: [published], timeout: 2) XCTAssertEqual(jellyfin.requested, ["jf-1"], "both servers are asked") XCTAssertEqual(abs.requested, ["abs-1"]) - XCTAssertEqual(received.count, 1) - XCTAssertEqual(received.first?.currentTime, 200, "the newest date wins across providers") + XCTAssertEqual(received.map(\.currentTime), [200], "the newest date wins across providers") } func testOneFailingServerDoesNotSilenceTheOther() async { - let libraryService = LibraryServiceProtocolMock() - libraryService.findResourcesForReturnValue = [ - makeResource(provider: "jellyfin", id: "jf-1"), - makeResource(provider: "audiobookshelf", id: "abs-1"), - ] - let failing = ProviderStub { _ in throw URLError(.timedOut) } let working = ProviderStub { _ in ExternalPlaybackProgress(currentTime: 700, lastPlayedDate: Date(timeIntervalSince1970: 9000)) } - - let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: [.jellyfin: failing, .audiobookshelf: working]) - - var received: [ExternalPlaybackProgress] = [] - let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } - defer { cancellable.cancel() } + let (sut, _) = makeSUT( + resources: [makeResource(provider: "jellyfin", id: "jf-1"), makeResource(provider: "audiobookshelf", id: "abs-1")], + providers: [.jellyfin: failing, .audiobookshelf: working] + ) + let published = expectPublish(from: sut) sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) - try? await Task.sleep(nanoseconds: 300_000_000) + await fulfillment(of: [published], timeout: 2) - XCTAssertEqual(received.first?.currentTime, 700, "a thrown error takes out only its own provider") + XCTAssertEqual(received.map(\.currentTime), [700], "a thrown error takes out only its own provider") } /// Hardcover shares the resource relationship but hosts nothing, so it must never be asked. func testSkipsResourcesWithNoMediaServerProvider() async { - let libraryService = LibraryServiceProtocolMock() - libraryService.findResourcesForReturnValue = [makeResource(provider: "hardcover", id: "12345")] - let jellyfin = ProviderStub { _ in XCTFail("hardcover must not reach a provider"); return nil } - - let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin]) - - var received: [ExternalPlaybackProgress] = [] - let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } - defer { cancellable.cancel() } + let (sut, _) = makeSUT( + resources: [makeResource(provider: "hardcover", id: "12345")], + providers: [.jellyfin: jellyfin] + ) + let nothing = expectPublish(from: sut, inverted: true) sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) - try? await Task.sleep(nanoseconds: 200_000_000) + await fulfillment(of: [nothing], timeout: 0.3) XCTAssertTrue(jellyfin.requested.isEmpty) - XCTAssertTrue(received.isEmpty) } /// The bug that started the extraction: a slow answer for a book the user already left - /// must not raise a prompt carrying that book's position. + /// must not raise a prompt carrying that book's position. With cancellation propagating + /// into the stub, the superseded refresh never even completes. func testAnswerForASupersededItemIsDiscarded() async { - let libraryService = LibraryServiceProtocolMock() - libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] - - let slow = ProviderStub { _ in - try? await Task.sleep(nanoseconds: 250_000_000) - return ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000)) - } - - let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: [.jellyfin: slow]) - - var received: [ExternalPlaybackProgress] = [] - let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } - defer { cancellable.cancel() } + let slow = slowStub(ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000))) + let (sut, _) = makeSUT( + resources: [makeResource(provider: "jellyfin", id: "jf-1")], + providers: [.jellyfin: slow] + ) + let published = expectPublish(from: sut, count: 1) sut.refreshProgress(for: makeItem(uuid: "FIRST", currentTime: 0, lastPlayDate: nil)) // A different book starts before the first answer lands. sut.refreshProgress(for: makeItem(uuid: "SECOND", currentTime: 0, lastPlayDate: nil)) - try? await Task.sleep(nanoseconds: 700_000_000) + await fulfillment(of: [published], timeout: 2) XCTAssertEqual(received.count, 1, "only the item that is playing now can prompt") + XCTAssertEqual(slow.requested, ["jf-1", "jf-1"], "both refreshes reached the provider; only one survived") } /// The point of the extraction: the pull is driven by the notification the player posts for - /// EVERY playback start, so it no longer depends on which UI holds a delegate slot — a - /// car-only session used to get an empty implementation and never pull at all. + /// EVERY playback start, so it no longer depends on which UI holds a delegate slot. func testRefreshesFromTheBookPlayedNotification() async { - let libraryService = LibraryServiceProtocolMock() - libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] - let jellyfin = ProviderStub { _ in ExternalPlaybackProgress(currentTime: 600, lastPlayedDate: Date(timeIntervalSince1970: 9000)) } + let (sut, _) = makeSUT( + resources: [makeResource(provider: "jellyfin", id: "jf-1")], + providers: [.jellyfin: jellyfin] + ) + let published = expectPublish(from: sut) - let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin]) - - var received: [ExternalPlaybackProgress] = [] - let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } - defer { cancellable.cancel() } - - NotificationCenter.default.post( + notificationCenter.post( name: .bookPlayed, object: nil, userInfo: ["book": makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)] ) - try? await Task.sleep(nanoseconds: 400_000_000) + await fulfillment(of: [published], timeout: 2) XCTAssertEqual(jellyfin.requested, ["jf-1"], "playback start alone drives the pull") - XCTAssertEqual(received.first?.currentTime, 600) + XCTAssertEqual(received.map(\.currentTime), [600]) } func testLogoutNotificationCancelsInFlightWork() async { - let libraryService = LibraryServiceProtocolMock() - libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] - - let slow = ProviderStub { _ in - try? await Task.sleep(nanoseconds: 250_000_000) - return ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000)) - } + let slow = slowStub(ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000))) + let (sut, _) = makeSUT( + resources: [makeResource(provider: "jellyfin", id: "jf-1")], + providers: [.jellyfin: slow] + ) + let nothing = expectPublish(from: sut, inverted: true) - let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: [.jellyfin: slow]) + sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) + notificationCenter.post(name: .logout, object: nil) + // Longer than the stub's sleep, so an un-cancelled refresh WOULD have published by now. + await fulfillment(of: [nothing], timeout: 0.6) + } - var received: [ExternalPlaybackProgress] = [] - let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } - defer { cancellable.cancel() } + func testTeardownCancelsAnInFlightRefresh() async { + let slow = slowStub(ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000))) + let (sut, _) = makeSUT( + resources: [makeResource(provider: "jellyfin", id: "jf-1")], + providers: [.jellyfin: slow] + ) + let nothing = expectPublish(from: sut, inverted: true) sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) - NotificationCenter.default.post(name: .logout, object: nil) - try? await Task.sleep(nanoseconds: 600_000_000) - - XCTAssertTrue(received.isEmpty, "signing out stops a refresh already in flight") + sut.teardown() + await fulfillment(of: [nothing], timeout: 0.6) } + // MARK: the list refresh + /// The gap this closes: the list refresh collected Jellyfin resources only and handed them /// to an ingest typed to a Jellyfin item, so AudiobookShelf items were never refreshed. func testRefreshItemsFoldsInBothProviders() async { - let libraryService = LibraryServiceProtocolMock() let jellyfin = ProviderStub { _ in ExternalPlaybackProgress(currentTime: 120, lastPlayedDate: Date(timeIntervalSince1970: 500)) } let abs = ProviderStub { _ in ExternalPlaybackProgress(currentTime: 340, lastPlayedDate: Date(timeIntervalSince1970: 900)) } - - let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin, .audiobookshelf: abs]) + let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin, .audiobookshelf: abs]) await sut.refreshItems([ makeLibraryItem(resources: [makeResource(provider: "jellyfin", id: "jf-1")]), @@ -1033,40 +1059,14 @@ final class ExternalProgressServiceTests: XCTestCase { } func testRefreshItemsDoesNothingWithoutMediaServerResources() async { - let libraryService = LibraryServiceProtocolMock() let jellyfin = ProviderStub { _ in XCTFail("must not be asked"); return nil } - - let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: [.jellyfin: jellyfin]) + let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin]) await sut.refreshItems([makeLibraryItem(resources: nil)]) XCTAssertTrue(jellyfin.requested.isEmpty) XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount, 0) } - - func testTeardownCancelsAnInFlightRefresh() async { - let libraryService = LibraryServiceProtocolMock() - libraryService.findResourcesForReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] - - let slow = ProviderStub { _ in - try? await Task.sleep(nanoseconds: 250_000_000) - return ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000)) - } - - let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: [.jellyfin: slow]) - - var received: [ExternalPlaybackProgress] = [] - let cancellable = sut.promptablePositionPublisher.sink { received.append($0) } - defer { cancellable.cancel() } - - sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) - sut.teardown() - try? await Task.sleep(nanoseconds: 600_000_000) - - XCTAssertTrue(received.isEmpty, "logout stops work that is already in flight") - } } // MARK: - External stream resolution diff --git a/Shared/Services/ExternalProgress/ExternalProgressService.swift b/Shared/Services/ExternalProgress/ExternalProgressService.swift index 47a94d739..cad03b559 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressService.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressService.swift @@ -35,6 +35,7 @@ public final class ExternalProgressService { private var refreshTask: Task? private var requestedUuid: String? private var disposeBag = Set() + private var notificationCenter: NotificationCenter = .default public init() {} @@ -43,10 +44,12 @@ public final class ExternalProgressService { providers: [ExternalResource.ProviderName: ExternalProgressProviding] = [ .jellyfin: JellyfinProgressProvider(), .audiobookshelf: AudiobookShelfProgressProvider(), - ] + ], + notificationCenter: NotificationCenter = .default ) { self.libraryService = libraryService self.providers = providers + self.notificationCenter = notificationCenter bindObservers() } @@ -55,14 +58,14 @@ public final class ExternalProgressService { /// can decide whether a refresh happens — the point of moving this off a view model. /// `.bookPlayed` is posted by PlayerManager for every playback start, phone or CarPlay. private func bindObservers() { - NotificationCenter.default.publisher(for: .bookPlayed) + notificationCenter.publisher(for: .bookPlayed) .compactMap { $0.userInfo?["book"] as? PlayableItem } .sink { [weak self] item in self?.refreshProgress(for: item) } .store(in: &disposeBag) - NotificationCenter.default.publisher(for: .logout) + notificationCenter.publisher(for: .logout) .sink { [weak self] _ in self?.teardown() } @@ -82,11 +85,16 @@ public final class ExternalProgressService { let localDate = item.lastPlayDate stateLock.lock() + defer { stateLock.unlock() } + refreshTask?.cancel() requestedUuid = uuid - stateLock.unlock() - - let task = Task { [weak self] in + // Created under the same lock it is stored under. Creating it outside let a second call + // interleave between creation and storage, leaving refreshTask pointing at the task it + // had just cancelled while the live one ran unreferenced — correct output only by luck + // of the isStillRequested check, and a teardown that would miss the live task. Holding + // the lock here is safe: the body touches it only after its first await. + refreshTask = Task { [weak self] in guard let self else { return } let resources = (self.libraryService.findResources(for: uuid) ?? []).mediaServerResources @@ -103,10 +111,6 @@ public final class ExternalProgressService { self.promptablePositionPublisher.send(position) } - - stateLock.lock() - refreshTask = task - stateLock.unlock() } /// Refresh the positions of items already on screen, so a list shows what the user's other From 48a90f5b0a44318320c9edb99e4853ff811e5cfb Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Fri, 11 Sep 2026 09:53:13 -0500 Subject: [PATCH 115/172] chore: drop a dead dependency and two loose ends from the extraction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit playerState in ItemListViewModel lost its only reader when fetchExternalResource moved to the service, yet was still threaded through both LibraryRootView constructions — the same class as the audiobookshelfService property removed earlier. PlaybackService.streamResolver had two defaults; the property one was always overwritten by setup, so it's an IUO now like its sibling. A resolved connection that can't build a stream URL is a defect, not a missing server. The resolver logs it, and the flag's comment says what it actually means instead of what it usually means. Reviewer INFO on 8c2835af plus two self-review items. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- .../Library/ItemList/ItemListViewModel.swift | 3 --- .../Library/ItemList/LibraryRootView.swift | 2 -- .../Integrations/ExternalStreamResolver.swift | 18 +++++++++++++----- Shared/Services/PlaybackService.swift | 12 ++++++------ 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index a3bdb0efb..db4d403a2 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -15,7 +15,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { private let libraryService: LibraryService private let playbackService: PlaybackService let playerManager: PlayerManager - let playerState: PlayerState private let syncService: SyncService private let listSyncRefreshService: ListSyncRefreshService private let externalProgressService: ExternalProgressService @@ -105,7 +104,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { libraryService: LibraryService, playbackService: PlaybackService, playerManager: PlayerManager, - playerState: PlayerState, syncService: SyncService, listSyncRefreshService: ListSyncRefreshService, externalProgressService: ExternalProgressService, @@ -117,7 +115,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { self.libraryService = libraryService self.playbackService = playbackService self.playerManager = playerManager - self.playerState = playerState self.syncService = syncService self.listSyncRefreshService = listSyncRefreshService self.externalProgressService = externalProgressService diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index 3af882168..205985f0c 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -57,7 +57,6 @@ struct LibraryRootView: View { libraryService: libraryService, playbackService: playbackService, playerManager: playerManager, - playerState: playerState, syncService: syncService, listSyncRefreshService: listSyncRefreshService, externalProgressService: externalProgressService, @@ -73,7 +72,6 @@ struct LibraryRootView: View { libraryService: libraryService, playbackService: playbackService, playerManager: playerManager, - playerState: playerState, syncService: syncService, listSyncRefreshService: listSyncRefreshService, externalProgressService: externalProgressService, diff --git a/Shared/Integrations/ExternalStreamResolver.swift b/Shared/Integrations/ExternalStreamResolver.swift index b31d8acac..5d60aabd4 100644 --- a/Shared/Integrations/ExternalStreamResolver.swift +++ b/Shared/Integrations/ExternalStreamResolver.swift @@ -33,7 +33,7 @@ public protocol ExternalStreamResolving { /// logic used to sit in the middle of `PlaybackService.getPlayableChapters` with its own /// `KeychainService()`, which meant nothing about streaming URLs, auth headers, or the /// unresolved-host flag could be verified without a real keychain. -public struct ExternalStreamResolver: ExternalStreamResolving { +public struct ExternalStreamResolver: ExternalStreamResolving, BPLogger { private let keychain: KeychainServiceProtocol public init(keychain: KeychainServiceProtocol = KeychainService()) { @@ -44,9 +44,14 @@ public struct ExternalStreamResolver: ExternalStreamResolving { switch ExternalResource.ProviderName(rawValue: resource.providerName) { case .jellyfin: guard - let connection: JellyfinConnectionData = connection(for: resource, key: .jellyfinConnection), - let url = URL(string: connection.buildDownloadUrl(providerId: resource.providerId)) + let connection: JellyfinConnectionData = connection(for: resource, key: .jellyfinConnection) else { return nil } + guard let url = URL(string: connection.buildDownloadUrl(providerId: resource.providerId)) else { + // A matched server whose URL won't build is a defect, not a missing connection — but + // the caller can only express "no source", so say so here. + Self.logger.error("Jellyfin connection resolved but no stream URL could be built for \(resource.providerId)") + return nil + } return ExternalStreamSource( url: url, @@ -58,9 +63,12 @@ public struct ExternalStreamResolver: ExternalStreamResolving { case .audiobookshelf: guard - let connection: AudiobookShelfConnectionData = connection(for: resource, key: .audiobookshelfConnection), - let url = URL(string: connection.buildAudiobookshelfDownloadUrl(providerId: resource.providerId)) + let connection: AudiobookShelfConnectionData = connection(for: resource, key: .audiobookshelfConnection) else { return nil } + guard let url = URL(string: connection.buildAudiobookshelfDownloadUrl(providerId: resource.providerId)) else { + Self.logger.error("AudiobookShelf connection resolved but no stream URL could be built for \(resource.providerId)") + return nil + } return ExternalStreamSource( url: url, diff --git a/Shared/Services/PlaybackService.swift b/Shared/Services/PlaybackService.swift index 5d856fb92..04b7c61e7 100644 --- a/Shared/Services/PlaybackService.swift +++ b/Shared/Services/PlaybackService.swift @@ -32,9 +32,9 @@ public protocol PlaybackServiceProtocol { @Observable public final class PlaybackService: PlaybackServiceProtocol { var libraryService: LibraryServiceProtocol! - /// Defaulted so watchOS keeps its one-argument `setup` — the watch stores no media-server - /// connections, so resolution there correctly finds nothing. - var streamResolver: ExternalStreamResolving = ExternalStreamResolver() + /// Injected in `setup`, whose default keeps watchOS on its one-argument call — the watch + /// stores no media-server connections, so resolution there correctly finds nothing. + var streamResolver: ExternalStreamResolving! public init() {} @@ -235,9 +235,9 @@ public final class PlaybackService: PlaybackServiceProtocol { let externalUrl = streamSource?.url let externalHeaders = streamSource?.headers ?? [:] - // The resource exists but nothing matched its host, which is the only way the switch - // above leaves externalUrl nil for a media-server item: the file can't be streamed or - // re-downloaded on this device until its server is added. + // The resource exists but no stream source could be built for it — in practice because + // no saved connection matched its host; the resolver logs the one other way. Either way + // the file can't be streamed or re-downloaded on this device until its server is added. let hasUnresolvedExternalHost = externalResource != nil && externalUrl == nil // If no chapters, create a single one using the book metadata From d8217dece2c04ae1629b7fd03256b19ad518bb76 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 12 Sep 2026 11:20:52 -0500 Subject: [PATCH 116/172] refactor: ExternalImportBus becomes ExternalImportEvents, owned by MainView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Bus" implied many topics in many directions. This is one typed event, one way — a set of events you subscribe to — and confirmedBatches completes the sentence. It also lived as a second type inside ExternalImportViewModel.swift; it has its own file now. MainCoordinator only ever created and injected it, never called it, while its producers (the Jellyfin and ABS root views, presented through MainView's media-servers sheet) and its consumer (LibraryRootView) are all SwiftUI views under MainView. So MainView owns it as a @StateObject and injects it beside theme. Sheets inherit their presenting view's environment, so every party still gets it, and no other SwiftUI root injects it. listSyncRefreshService and singleFileDownloadService stay coordinator-built on purpose: they are services with dependencies, and CLAUDE.md names the coordinator as their builder. A view assembling services out of coreServices would invert that. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 4 +++ .../AudiobookShelfRootView.swift | 12 ++++---- BookPlayer/Coordinators/MainCoordinator.swift | 3 -- .../ExternalSource/ExternalImportEvents.swift | 30 +++++++++++++++++++ .../ExternalImportViewModel.swift | 15 ---------- BookPlayer/Jellyfin/JellyfinRootView.swift | 6 ++-- .../Library/ItemList/LibraryRootView.swift | 4 +-- BookPlayer/MainView.swift | 4 +++ CLAUDE.md | 5 ++-- 9 files changed, 52 insertions(+), 31 deletions(-) create mode 100644 BookPlayer/Import/ExternalSource/ExternalImportEvents.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 54c2c1445..daabde5ee 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -784,6 +784,7 @@ 99F3C2152F65174700AC91A2 /* SimpleExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2132F65174000AC91A2 /* SimpleExternalResource.swift */; }; 99F3C21F2F69D0AF00AC91A2 /* ExternalImportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C21E2F69D0AC00AC91A2 /* ExternalImportView.swift */; }; 99F3C2212F69D32E00AC91A2 /* ExternalImportViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3C2202F69D32800AC91A2 /* ExternalImportViewModel.swift */; }; + 1A304754D41FB1E66FDD5EAF /* ExternalImportEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA1842BD89ED97A5DC8C0577 /* ExternalImportEvents.swift */; }; 99F3C2342F6BBECC00AC91A2 /* JellyfinConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A562CEE88DE000A4B4B /* JellyfinConnectionData.swift */; }; 99F3C2352F6BBECC00AC91A2 /* JellyfinConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A562CEE88DE000A4B4B /* JellyfinConnectionData.swift */; }; 99F3C2362F6D04AE00AC91A2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 418B6D041D2707F800F974FB /* Assets.xcassets */; }; @@ -1816,6 +1817,7 @@ 99F3C2132F65174000AC91A2 /* SimpleExternalResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleExternalResource.swift; sourceTree = ""; }; 99F3C21E2F69D0AC00AC91A2 /* ExternalImportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalImportView.swift; sourceTree = ""; }; 99F3C2202F69D32800AC91A2 /* ExternalImportViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalImportViewModel.swift; sourceTree = ""; }; + AA1842BD89ED97A5DC8C0577 /* ExternalImportEvents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalImportEvents.swift; sourceTree = ""; }; 99F3C2402F6E322000AC91A2 /* SchemaV3SyncTasksModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SchemaV3SyncTasksModels.swift; sourceTree = ""; }; 9F00A5F9294F8BFE005EA316 /* ClearableTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClearableTextField.swift; sourceTree = ""; }; 9F00A5FB294F9B9A005EA316 /* ItemDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDetailsView.swift; sourceTree = ""; }; @@ -3552,6 +3554,7 @@ isa = PBXGroup; children = ( 99F3C2202F69D32800AC91A2 /* ExternalImportViewModel.swift */, + AA1842BD89ED97A5DC8C0577 /* ExternalImportEvents.swift */, 99F3C21E2F69D0AC00AC91A2 /* ExternalImportView.swift */, ); path = ExternalSource; @@ -5024,6 +5027,7 @@ 638487CD2EC77B1200DF442B /* AudiobookShelfAudiobookDetailsView.swift in Sources */, 638487CE2EC77B1200DF442B /* AudiobookShelfAudiobookDetailsViewModel.swift in Sources */, 99F3C2212F69D32E00AC91A2 /* ExternalImportViewModel.swift in Sources */, + 1A304754D41FB1E66FDD5EAF /* ExternalImportEvents.swift in Sources */, 63344C002EA708F800B90DF7 /* BackupDatabaseOperation.swift in Sources */, 9F00A6212950F44B005EA316 /* ImagePicker.swift in Sources */, 638487BB2EC7764800DF442B /* AudiobookShelfLibraryListItemView.swift in Sources */, diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index 4a667d7ff..2723d2611 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -23,7 +23,7 @@ struct AudiobookShelfRootView: View { } @EnvironmentObject private var singleFileDownloadService: SingleFileDownloadService - @EnvironmentObject private var externalImportBus: ExternalImportBus + @EnvironmentObject private var externalImportEvents: ExternalImportEvents @EnvironmentObject private var theme: ThemeViewModel @Environment(\.dismiss) var dismiss @@ -59,7 +59,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { externalImportBus.send($0) }, + onImportConfirmed: { externalImportEvents.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -75,7 +75,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { externalImportBus.send($0) }, + onImportConfirmed: { externalImportEvents.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -91,7 +91,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { externalImportBus.send($0) }, + onImportConfirmed: { externalImportEvents.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -107,7 +107,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { externalImportBus.send($0) }, + onImportConfirmed: { externalImportEvents.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss @@ -123,7 +123,7 @@ struct AudiobookShelfRootView: View { connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, accountService: accountService, - onImportConfirmed: { externalImportBus.send($0) }, + onImportConfirmed: { externalImportEvents.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, dismissAll: dismiss diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index e37c2f254..d2ef3ebe9 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -18,7 +18,6 @@ class MainCoordinator: NSObject { var mainController: UIViewController? let importManager: ImportManager - let externalImportBus: ExternalImportBus let playerManager: PlayerManager let externalProgressService: ExternalProgressService let playerLoaderService: PlayerLoaderService @@ -50,7 +49,6 @@ class MainCoordinator: NSObject { self.navigationController = navigationController self.libraryService = coreServices.libraryService self.importManager = ImportManager(libraryService: coreServices.libraryService) - self.externalImportBus = ExternalImportBus() self.accountService = coreServices.accountService self.syncService = coreServices.syncService self.playbackService = coreServices.playbackService @@ -102,7 +100,6 @@ class MainCoordinator: NSObject { } .environmentObject(singleFileDownloadService) .environmentObject(importManager) - .environmentObject(externalImportBus) .environmentObject(playerManager) .environmentObject(listSyncRefreshService) .environment(\.libraryService, libraryService) diff --git a/BookPlayer/Import/ExternalSource/ExternalImportEvents.swift b/BookPlayer/Import/ExternalSource/ExternalImportEvents.swift new file mode 100644 index 000000000..d59e18af5 --- /dev/null +++ b/BookPlayer/Import/ExternalSource/ExternalImportEvents.swift @@ -0,0 +1,30 @@ +// +// ExternalImportEvents.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import Combine +import Foundation + +/// The events of the external-import flow: integration screens send their CONFIRMED +/// virtual-import batches, `LibraryRootView` consumes and inserts. +/// +/// It carries no state — a PassthroughSubject is a wire, not a store — and conforms to +/// `ObservableObject` solely to ride `.environmentObject`'s LOUD injection contract: a +/// missed injection crashes at first read, instead of an `@Entry` throwaway default +/// silently splitting producers and consumer onto different subjects. +/// +/// Owned by `MainView` as a `@StateObject`, not built by `MainCoordinator`: it is a wire +/// between SwiftUI views that the coordinator never touches, and the media-servers sheet +/// the producers live in is attached to `MainView`, so injecting there reaches every party. +@MainActor +final class ExternalImportEvents: ObservableObject { + let confirmedBatches = PassthroughSubject<[SimpleExternalResource], Never>() + + func send(_ resources: [SimpleExternalResource]) { + confirmedBatches.send(resources) + } +} diff --git a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift index 19dd3f688..9bbc820bf 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportViewModel.swift @@ -10,21 +10,6 @@ import Foundation import SwiftUI import BookPlayerKit -/// The external-import bus: integration screens send their CONFIRMED virtual-import -/// batches, LibraryRootView consumes and inserts. It carries no state — a -/// PassthroughSubject is a wire, not a store — and conforms to ObservableObject -/// solely to ride `.environmentObject`'s LOUD injection contract: a missed -/// injection crashes at first read, instead of an @Entry throwaway default -/// silently splitting producers and consumer onto different subjects. -@MainActor -final class ExternalImportBus: ObservableObject { - let confirmedBatches = PassthroughSubject<[SimpleExternalResource], Never>() - - func send(_ resources: [SimpleExternalResource]) { - confirmedBatches.send(resources) - } -} - @MainActor final class ExternalImportViewModel: ObservableObject { /// OWNED value state, seeded from the producer's staged batch: removals republish diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 9575bf483..0b4e0ffff 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -23,7 +23,7 @@ struct JellyfinRootView: View { } @EnvironmentObject private var singleFileDownloadService: SingleFileDownloadService - @EnvironmentObject private var externalImportBus: ExternalImportBus + @EnvironmentObject private var externalImportEvents: ExternalImportEvents @EnvironmentObject private var theme: ThemeViewModel @Environment(\.dismiss) var dismiss @@ -60,7 +60,7 @@ struct JellyfinRootView: View { JellyfinEntityTabRoot( connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - onImportConfirmed: { externalImportBus.send($0) }, + onImportConfirmed: { externalImportEvents.send($0) }, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, makeViewModel: { nav in @@ -173,7 +173,7 @@ struct JellyfinRootView: View { library: resolvedLibrary, connectionService: connectionService, singleFileDownloadService: singleFileDownloadService, - onImportConfirmed: { externalImportBus.send($0) }, + onImportConfirmed: { externalImportEvents.send($0) }, accountService: accountService, onDismiss: { listState.activeIntegrationSheet = nil }, onSwitchLibrary: switchLibraryAction, diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index 205985f0c..f0f9de6b0 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -36,7 +36,7 @@ struct LibraryRootView: View { @EnvironmentObject private var playerManager: PlayerManager @EnvironmentObject private var importManager: ImportManager - @EnvironmentObject private var externalImportBus: ExternalImportBus + @EnvironmentObject private var externalImportEvents: ExternalImportEvents @EnvironmentObject private var singleFileDownloadService: SingleFileDownloadService @EnvironmentObject private var listSyncRefreshService: ListSyncRefreshService @@ -129,7 +129,7 @@ struct LibraryRootView: View { importManager.start(operation) } - .onReceive(externalImportBus.confirmedBatches) { externalResources in + .onReceive(externalImportEvents.confirmedBatches) { externalResources in Task { self.handleOperationCompletion(.external(files: externalResources), suggestedFolderName: nil) } diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index 827403c28..8f9f482de 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -16,6 +16,9 @@ struct MainView: View { @State private var listState = ListStateManager() @StateObject private var theme = ThemeViewModel() @StateObject private var keyboardObserver = KeyboardObserver() + /// A wire between SwiftUI views that MainCoordinator never touches, so it's owned here. + /// Injected below, where the integration sheets and the library tab both inherit it. + @StateObject private var externalImportEvents = ExternalImportEvents() @Environment(\.libraryService) private var libraryService @Environment(\.playerState) private var playerState @Environment(\.syncService) private var syncService @@ -135,6 +138,7 @@ struct MainView: View { } .environment(\.tabBarContentHeight, tabBarContentHeight) .environmentObject(theme) + .environmentObject(externalImportEvents) .environment(\.listState, listState) .tint(theme.linkColor) .onChange(of: scheme) { diff --git a/CLAUDE.md b/CLAUDE.md index 87d4a4091..4277ff8dc 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -137,8 +137,9 @@ first. Reordering boot risks a launch crash. coordinator-scoped services (`ImportManager`, `ListSyncRefreshService`, `SingleFileDownloadService`, `JellyfinConnectionService`, `AudiobookShelfConnectionService`). - **Services → SwiftUI:** `ObservableObject`s (`playerManager`, `importManager`, `singleFileDownloadService`, - `listSyncRefreshService`, `externalImportBus`) via `.environmentObject`; the rest via `.environment(\.key, …)`. - `ExternalImportBus` is a stateless wire (integrations send confirmed virtual-import batches; `LibraryRootView` + `listSyncRefreshService`) via `.environmentObject`, plus `externalImportEvents`, which `MainView` owns as a + `@StateObject` and injects itself — the coordinator builds services, not SwiftUI-internal wires; the rest via `.environment(\.key, …)`. + `ExternalImportEvents` is a stateless wire (integrations send confirmed virtual-import batches; `LibraryRootView` consumes and inserts) that conforms to `ObservableObject` solely for the loud-injection contract — `ImportManager` itself carries no external-import state or publishers. The environment keys live in `BookPlayer/Utils/Extensions/Environment+BookPlayer.swift` (`@Entry`). **Each `@Entry` default is a From a2733cdcf7ea57d6f3014101ac416093412aa8d1 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 13 Sep 2026 18:55:31 -0500 Subject: [PATCH 117/172] refactor: the sync-queue engine owns every lane's count MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ConcurrenceService publishes one per-lane QueueCounts snapshot; the Profile row sums it, the queue screens read their own lane, and background refresh waits on laneDrained(.sync) — provider pushes retry forever against an unreachable home server and S3 uploads already run on a background URLSession, so neither should hold the refresh window open until expiration. Removes SyncTasksCountService, ConcurrentTasksCountService, SyncService.observeTasksCount and the now-dead tasksDataManager parameter of SyncService.setup. canSyncListContents still gates list refresh on the sync lane only. Tests: per-lane counts after store/pop, a drained lane leaving the snapshot, the sync-lane-only refresh gate, laneDrained, and first coverage for RefreshTaskOperation (drained-immediately, stays alive, cancel, idempotent finish, sync-lane policy). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 22 ++-- BookPlayer/AppDelegate.swift | 9 +- .../Generated/AutoMockable.generated.swift | 16 --- .../Library/ItemList/Views/BookView.swift | 3 +- .../Profile/ConcurrentSyncTasksView.swift | 2 +- .../Profile/ProfileSyncTasksSectionView.swift | 37 ++---- .../Profile/Profile/QueuedSyncTasksView.swift | 6 +- .../Profile/Views/QueuedTasksView.swift | 24 +--- BookPlayer/Utils/AppServices.swift | 9 +- BookPlayer/Utils/RefreshTaskOperation.swift | 37 ++++-- .../RefreshTaskOperationTests.swift | 89 +++++++++++++ .../Services/ConcurrentSyncTests.swift | 119 ++++++++++++++++++ BookPlayerWatch/ExtensionDelegate.swift | 3 +- CLAUDE.md | 9 +- .../ConcurrentSync/ConcurrenceService.swift | 14 ++- .../ConcurrentTasksCountService.swift | 26 ---- .../Services/ConcurrentSync/QueueCounts.swift | 32 +++++ Shared/Services/Sync/SyncService.swift | 9 -- .../Services/Sync/SyncTasksCountService.swift | 26 ---- Shared/SwiftData/TasksDataManager.swift | 34 ++--- 20 files changed, 337 insertions(+), 189 deletions(-) create mode 100644 BookPlayerTests/RefreshTaskOperationTests.swift delete mode 100644 Shared/Services/ConcurrentSync/ConcurrentTasksCountService.swift create mode 100644 Shared/Services/ConcurrentSync/QueueCounts.swift delete mode 100644 Shared/Services/Sync/SyncTasksCountService.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index daabde5ee..d9b3c6951 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -132,6 +132,7 @@ 4160A09223F2DE130039166B /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 4160A09423F2DE130039166B /* Localizable.stringsdict */; }; 4160A0A123F304530039166B /* LocalizableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4160A0A023F304530039166B /* LocalizableLabel.swift */; }; 4163E313214AC43000072AA2 /* ImportOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4163E312214AC43000072AA2 /* ImportOperationTests.swift */; }; + 28EEB2588DE468A6B8C15272 /* RefreshTaskOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */; }; 41640A3724416EE8004FB97B /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 41640A3624416EE8004FB97B /* Intents.intentdefinition */; settings = {ATTRIBUTES = (no_codegen, ); }; }; 41640A452441ACE2004FB97B /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 41640A3624416EE8004FB97B /* Intents.intentdefinition */; }; 4165EE0520A743D500616EDF /* BookPlayer.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 4165EDF920A743D500616EDF /* BookPlayer.xcdatamodeld */; }; @@ -511,8 +512,6 @@ 638487CE2EC77B1200DF442B /* AudiobookShelfAudiobookDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638487CB2EC77B1200DF442B /* AudiobookShelfAudiobookDetailsViewModel.swift */; }; 638761D32E62BD7A009332E8 /* ItemListSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638761D22E62BD7A009332E8 /* ItemListSelectionView.swift */; }; 638D91A82E60AAA600B62BDD /* ImportOperationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638D91A72E60AAA600B62BDD /* ImportOperationState.swift */; }; - 638E64CE2B8E1CFD00DCFA3B /* SyncTasksCountService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638E64CD2B8E1CFD00DCFA3B /* SyncTasksCountService.swift */; }; - 638E64CF2B8E1CFD00DCFA3B /* SyncTasksCountService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638E64CD2B8E1CFD00DCFA3B /* SyncTasksCountService.swift */; }; 6397206F2CA71D600045A4DB /* .swift-format in Resources */ = {isa = PBXBuildFile; fileRef = 6397206E2CA71D600045A4DB /* .swift-format */; }; 639720722CAAF8290045A4DB /* LastPlayedProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 639720712CAAF8290045A4DB /* LastPlayedProvider.swift */; }; 639720832CAB0C380045A4DB /* LastPlayedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 639720822CAB0C380045A4DB /* LastPlayedView.swift */; }; @@ -699,9 +698,9 @@ 9911FBB92F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */; }; 9911FBBB2F736C0500DC9A2B /* ConcurrentSyncTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBA2F736BFC00DC9A2B /* ConcurrentSyncTasksView.swift */; }; 9911FBBE2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */; }; + F99B9D63217ABDAFED95696A /* QueueCounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */; }; 9911FBBF2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */; }; - 9911FBC12F7465EA00DC9A2B /* ConcurrentTasksCountService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC02F7465DC00DC9A2B /* ConcurrentTasksCountService.swift */; }; - 9911FBC22F7465EA00DC9A2B /* ConcurrentTasksCountService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC02F7465DC00DC9A2B /* ConcurrentTasksCountService.swift */; }; + 7AA06DC64EDBA7F10753CF4C /* QueueCounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */; }; 9911FBC42F76122400DC9A2B /* FileUploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */; }; 9911FBC52F76122400DC9A2B /* FileUploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */; }; 9911FBC72F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */; }; @@ -1260,6 +1259,7 @@ 4161D496245660B800D1C01B /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; }; 4163E3102148606600072AA2 /* ImportFileItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportFileItem.swift; sourceTree = ""; }; 4163E312214AC43000072AA2 /* ImportOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportOperationTests.swift; sourceTree = ""; }; + 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTaskOperationTests.swift; sourceTree = ""; }; 4163E314214ACB4300072AA2 /* DataTestUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTestUtils.swift; sourceTree = ""; }; 41640A1F24416774004FB97B /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; }; 41640A3624416EE8004FB97B /* Intents.intentdefinition */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; path = Intents.intentdefinition; sourceTree = ""; }; @@ -1624,7 +1624,6 @@ 638761D22E62BD7A009332E8 /* ItemListSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListSelectionView.swift; sourceTree = ""; }; 638A9B40CE7EECEF80FA9935 /* AudiobookShelfConnectionViewModelTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AudiobookShelfConnectionViewModelTests.swift; sourceTree = ""; }; 638D91A72E60AAA600B62BDD /* ImportOperationState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportOperationState.swift; sourceTree = ""; }; - 638E64CD2B8E1CFD00DCFA3B /* SyncTasksCountService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncTasksCountService.swift; sourceTree = ""; }; 6397206E2CA71D600045A4DB /* .swift-format */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".swift-format"; sourceTree = ""; }; 639720712CAAF8290045A4DB /* LastPlayedProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LastPlayedProvider.swift; sourceTree = ""; }; 639720822CAB0C380045A4DB /* LastPlayedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LastPlayedView.swift; sourceTree = ""; }; @@ -1779,7 +1778,7 @@ 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentSyncTask.swift; sourceTree = ""; }; 9911FBBA2F736BFC00DC9A2B /* ConcurrentSyncTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentSyncTasksView.swift; sourceTree = ""; }; 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTaskProgressMonitor.swift; sourceTree = ""; }; - 9911FBC02F7465DC00DC9A2B /* ConcurrentTasksCountService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTasksCountService.swift; sourceTree = ""; }; + 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueueCounts.swift; sourceTree = ""; }; 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUploadOperation.swift; sourceTree = ""; }; 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncableExternalResource.swift; sourceTree = ""; }; 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTasksView.swift; sourceTree = ""; }; @@ -2467,6 +2466,7 @@ 69343D34213A079B000C425E /* Services */, 63833DF82AAC134600496246 /* PerformanceTests */, 4163E312214AC43000072AA2 /* ImportOperationTests.swift */, + 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */, 41C3CF7D20AEA5E5007C3EF4 /* DataManagerTests.swift */, 9F8A9A5D27AC3F8C0093AA1C /* PlayableItemTests.swift */, 689E2BCD29DC1D9253949A53 /* PlayableChapterTests.swift */, @@ -3429,8 +3429,8 @@ 9911FBAA2F71CD1600DC9A2B /* ConcurrentSync */ = { isa = PBXGroup; children = ( - 9911FBC02F7465DC00DC9A2B /* ConcurrentTasksCountService.swift */, 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */, + 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */, 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */, 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */, 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */, @@ -3835,7 +3835,6 @@ 9F9F3B6F280E4E4B004359DA /* SyncService.swift */, 9FDDD2DD289BEE590020C428 /* SyncJobScheduler.swift */, 63C6C30F2B54F14800FFE0D8 /* LibraryItemSyncOperation.swift */, - 638E64CD2B8E1CFD00DCFA3B /* SyncTasksCountService.swift */, ); path = Sync; sourceTree = ""; @@ -4697,7 +4696,6 @@ 3FF5BA6A2E10EA8000B82BCC /* HardcoverBook+CoreDataClass.swift in Sources */, 63344C022EA7097D00B90DF7 /* DatabaseBackupService.swift in Sources */, 41C23402272E1960006BC7B8 /* SimpleTheme.swift in Sources */, - 638E64CF2B8E1CFD00DCFA3B /* SyncTasksCountService.swift in Sources */, 992D6E1C2FA98CBE0091849F /* AudiobookShelfLibrary.swift in Sources */, 63125D132C36D97400D35533 /* EventsService.swift in Sources */, 3F6640902E172DF500356522 /* MappingModel_v9_to_v10.xcmappingmodel in Sources */, @@ -4733,6 +4731,7 @@ 9FC1E45D2814E6A500522FA8 /* NetworkProvider.swift in Sources */, 9FC1E4602814F66F00522FA8 /* AccountAPI.swift in Sources */, 9911FBBF2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */, + 7AA06DC64EDBA7F10753CF4C /* QueueCounts.swift in Sources */, 9FC1E4792816001400522FA8 /* KeychainService.swift in Sources */, 99D995902F71AB6800BAF216 /* JellyfinLibraryItem.swift in Sources */, 4140EA7F227289D20009F794 /* Library+CoreDataProperties.swift in Sources */, @@ -4790,7 +4789,6 @@ 9911FBB62F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */, 41C233FE272E1958006BC7B8 /* SimpleLibraryItem.swift in Sources */, 996D4CD22F98A45300FC3B57 /* IntegrationError.swift in Sources */, - 9911FBC12F7465EA00DC9A2B /* ConcurrentTasksCountService.swift in Sources */, 416AAC3523F515B0005AD04F /* String+BookPlayer.swift in Sources */, 99D995952F71ABBD00BAF216 /* JellyfinAudiobookDetailsData.swift in Sources */, 6308260B2AF5B66D002ACE0D /* UserDefaults+BookPlayer.swift in Sources */, @@ -5269,6 +5267,7 @@ 9F8A9A5E27AC3F8C0093AA1C /* PlayableItemTests.swift in Sources */, 232F1DA50BB33EB5A629B8B7 /* PlayableChapterTests.swift in Sources */, 4163E313214AC43000072AA2 /* ImportOperationTests.swift in Sources */, + 28EEB2588DE468A6B8C15272 /* RefreshTaskOperationTests.swift in Sources */, 0CEC6B48350FC9C0A0B7D1C0 /* SyncTasksStorageTests.swift in Sources */, 1A26F7D72FFD6D625A313FC5 /* AudioMetadataServiceTests.swift in Sources */, 466E4B7066F10717C8CE7B3E /* LibraryServiceReloadChaptersTests.swift in Sources */, @@ -5292,6 +5291,7 @@ files = ( 996D4CC52F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, 9911FBBE2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */, + F99B9D63217ABDAFED95696A /* QueueCounts.swift in Sources */, 9FC1E46C2815A8CA00522FA8 /* LibraryAPI.swift in Sources */, 9FAFC9F42995BB5C00FD531E /* RemoteFileURLResponse.swift in Sources */, 9911FBB92F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */, @@ -5303,7 +5303,6 @@ 412AB7092701421600969618 /* ManualOrderMigrationUtils.swift in Sources */, 63344C032EA7097D00B90DF7 /* DatabaseBackupService.swift in Sources */, 9F1345B82938DF360089B1DE /* UIFont+BookPlayer.swift in Sources */, - 9911FBC22F7465EA00DC9A2B /* ConcurrentTasksCountService.swift in Sources */, 639AC98C2AD9F2840053AFC6 /* BPTaskDownloadDelegate.swift in Sources */, 9FFCC08F289418CA00F4952E /* SimpleChapter.swift in Sources */, 9911FBC42F76122400DC9A2B /* FileUploadOperation.swift in Sources */, @@ -5420,7 +5419,6 @@ 41C233FD272E1957006BC7B8 /* SimpleLibraryItem.swift in Sources */, 3FA43BF82E110B4900DF9B1F /* SimpleHardcoverBook.swift in Sources */, 41A1B12A226F88C500EA0400 /* Folder+CoreDataProperties.swift in Sources */, - 638E64CE2B8E1CFD00DCFA3B /* SyncTasksCountService.swift in Sources */, 9911FBAD2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */, 99F3C1FE2F5FC2F200AC91A2 /* SchemaV1SyncTasksModels.swift in Sources */, 9911FBB32F71E54C00DC9A2B /* ConcurrentTasksRepository.swift in Sources */, diff --git a/BookPlayer/AppDelegate.swift b/BookPlayer/AppDelegate.swift index 88525831e..a9a8ae216 100644 --- a/BookPlayer/AppDelegate.swift +++ b/BookPlayer/AppDelegate.swift @@ -451,9 +451,14 @@ extension AppDelegate { } func handleAppRefresh(task: BGAppRefreshTask) { - guard let syncService = AppServices.shared.coreServices?.syncService else { return } + guard let concurrenceService = AppServices.shared.coreServices?.concurrenceService else { return } - let refreshOperation = RefreshTaskOperation(syncService: syncService) + // Sync lane only: metadata pushes are what the refresh window is for. Provider pushes + // retry forever against an unreachable home server, and S3 uploads already run on a + // background URLSession — neither should keep the process awake until expiration. + let refreshOperation = RefreshTaskOperation( + queueDrained: concurrenceService.observeQueueCounts().laneDrained(TaskQueueKey.sync) + ) refreshOperation.completionBlock = { [weak self] in let success = !refreshOperation.isCancelled diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index a8a47a2b5..8aedad154 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -1888,22 +1888,6 @@ class SyncServiceProtocolMock: SyncServiceProtocol { return queuedJobsCountReturnValue } } - //MARK: - observeTasksCount - - var observeTasksCountCallsCount = 0 - var observeTasksCountCalled: Bool { - return observeTasksCountCallsCount > 0 - } - var observeTasksCountReturnValue: AnyPublisher! - var observeTasksCountClosure: (() -> AnyPublisher)? - func observeTasksCount() -> AnyPublisher { - observeTasksCountCallsCount += 1 - if let observeTasksCountClosure = observeTasksCountClosure { - return observeTasksCountClosure() - } else { - return observeTasksCountReturnValue - } - } //MARK: - canSyncListContents var canSyncListContentsAtIgnoreLastTimestampCallsCount = 0 diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index 845fb0b30..299b7772b 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -127,8 +127,7 @@ struct BookView: View { isActive: true, libraryService: libraryService, accountService: accountService, - concurrenceService: concurrenceService, - tasksDataManager: tasksDataManager + concurrenceService: concurrenceService ) return syncService diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift index 5eb15d8e0..ca9ecf340 100644 --- a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift @@ -94,7 +94,7 @@ struct ConcurrentSyncTasksView: View { Text("sync_tasks_alert_description".localized) } .onReceive( - concurrenceService.observeConcurrentTasksCount() + concurrenceService.observeQueueCounts().map { $0.count(in: queueKey) } ) { count in guard globalTasksCount != count else { return } diff --git a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift index a394a2e0f..9f31b8dc9 100644 --- a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift @@ -12,14 +12,13 @@ import SwiftUI struct ProfileSyncTasksSectionView: View { @State private var statusMessage: String = "" - @State private var jobsCount = 0 - @State private var concurrentJobsCount = 0 + /// Every lane, summed by the engine that owns them all + @State private var queuedCount = 0 private var buttonText: String { - String(format: "queued_sync_tasks_title".localized, jobsCount + concurrentJobsCount) + String(format: "queued_sync_tasks_title".localized, queuedCount) } - @Environment(\.syncService) private var syncService @Environment(\.concurrenceService) private var concurrenceService @EnvironmentObject private var theme: ThemeViewModel @@ -34,15 +33,10 @@ struct ProfileSyncTasksSectionView: View { .foregroundStyle(theme.secondaryColor) } } - .onReceive(syncService.observeTasksCount()) { count in - guard jobsCount != count else { return } + .onReceive(concurrenceService.observeQueueCounts()) { counts in + guard queuedCount != counts.total else { return } - jobsCount = count - } - .onReceive(concurrenceService.observeConcurrentTasksCount()) { count in - guard concurrentJobsCount != count else { return } - - concurrentJobsCount = count + queuedCount = counts.total } .onReceive( NotificationCenter.default.publisher(for: .uploadProgressUpdated) @@ -97,36 +91,29 @@ struct ProfileSyncTasksSectionView: View { } } +// Environment defaults are un-setup() placeholders whose count methods trap (see +// CLAUDE.md's DI section) — previews must construct + setup() + inject. #Preview { - @Previewable var syncService: SyncService = { + @Previewable var concurrenceService: ConcurrenceService = { let dataManager = DataManager(coreDataStack: CoreDataStack(testPath: "")) let audioMetadataService = AudioMetadataService() let libraryService = LibraryService() libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) let accountService = AccountService() accountService.setup(dataManager: dataManager) - let tasksDataManager = TasksDataManager() let concurrenceService = ConcurrenceService() concurrenceService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, - tasksDataManager: tasksDataManager, + tasksDataManager: TasksDataManager(), networkClient: NetworkClient(), dataManager: dataManager ) - let syncService = SyncService() - syncService.setup( - isActive: true, - libraryService: libraryService, - accountService: accountService, - concurrenceService: concurrenceService, - tasksDataManager: tasksDataManager - ) - return syncService + return concurrenceService }() ProfileSyncTasksSectionView() .environmentObject(ThemeViewModel()) - .environment(\.syncService, syncService) + .environment(\.concurrenceService, concurrenceService) } diff --git a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift b/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift index e2666a83a..329f57a57 100644 --- a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift +++ b/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift @@ -19,6 +19,7 @@ struct QueuedSyncTasksView: View { @State private var networkMonitor = NetworkMonitor() @Environment(\.syncService) private var syncService + @Environment(\.concurrenceService) private var concurrenceService @EnvironmentObject private var theme: ThemeViewModel var body: some View { @@ -85,8 +86,9 @@ struct QueuedSyncTasksView: View { Text("sync_tasks_alert_description") } .onReceive( - syncService.observeTasksCount() - .dropFirst() + concurrenceService.observeQueueCounts() + .map { $0.count(in: TaskQueueKey.sync) } + .dropFirst() ) { count in guard jobsCount != count else { return } diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index fdc25a5f6..6f6a10917 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -39,7 +39,6 @@ enum QueueDisplay { struct QueuedTasksView: View { @State private var queues = [QueueSummary]() - @Environment(\.syncService) private var syncService @Environment(\.concurrenceService) private var concurrenceService @EnvironmentObject private var theme: ThemeViewModel @@ -71,10 +70,7 @@ struct QueuedTasksView: View { .toolbarColorScheme(theme.useDarkVariant ? .dark : .light, for: .navigationBar) .navigationTitle("queued_tasks_title".localized) .navigationBarTitleDisplayMode(.inline) - .onReceive(syncService.observeTasksCount()) { _ in - reloadQueues() - } - .onReceive(concurrenceService.observeConcurrentTasksCount()) { _ in + .onReceive(concurrenceService.observeQueueCounts()) { _ in reloadQueues() } .onAppear { @@ -94,31 +90,22 @@ struct QueuedTasksView: View { // CLAUDE.md's DI section) — previews must construct + setup() + inject, same as // ProfileSyncTasksSectionView's preview. #Preview { - @Previewable var services: (sync: SyncService, concurrence: ConcurrenceService) = { + @Previewable var concurrenceService: ConcurrenceService = { let dataManager = DataManager(coreDataStack: CoreDataStack(testPath: "")) let audioMetadataService = AudioMetadataService() let libraryService = LibraryService() libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) let accountService = AccountService() accountService.setup(dataManager: dataManager) - let tasksDataManager = TasksDataManager() let concurrenceService = ConcurrenceService() concurrenceService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, - tasksDataManager: tasksDataManager, + tasksDataManager: TasksDataManager(), networkClient: NetworkClient(), dataManager: dataManager ) - let syncService = SyncService() - syncService.setup( - isActive: true, - libraryService: libraryService, - accountService: accountService, - concurrenceService: concurrenceService, - tasksDataManager: tasksDataManager - ) - return (syncService, concurrenceService) + return concurrenceService }() ZStack { @@ -126,6 +113,5 @@ struct QueuedTasksView: View { QueuedTasksView() } .environmentObject(ThemeViewModel()) - .environment(\.syncService, services.sync) - .environment(\.concurrenceService, services.concurrence) + .environment(\.concurrenceService, concurrenceService) } diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index be98908dd..7e664f051 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -94,8 +94,7 @@ final class AppServices: BPLogger { let syncService = makeSyncService( accountService: accountService, libraryService: libraryService, - concurrenceService: concurrenceService, - tasksDataManager: tasksDataManager + concurrenceService: concurrenceService ) let playbackService = makePlaybackService(libraryService: libraryService) let playerManager = PlayerManager( @@ -245,16 +244,14 @@ final class AppServices: BPLogger { private func makeSyncService( accountService: AccountService, libraryService: LibraryService, - concurrenceService: ConcurrenceService, - tasksDataManager: TasksDataManager + concurrenceService: ConcurrenceService ) -> SyncService { let service = SyncService() service.setup( isActive: accountService.hasSyncEnabled(), libraryService: libraryService, accountService: accountService, - concurrenceService: concurrenceService, - tasksDataManager: tasksDataManager + concurrenceService: concurrenceService ) return service } diff --git a/BookPlayer/Utils/RefreshTaskOperation.swift b/BookPlayer/Utils/RefreshTaskOperation.swift index c40b2f32d..b2637afc0 100644 --- a/BookPlayer/Utils/RefreshTaskOperation.swift +++ b/BookPlayer/Utils/RefreshTaskOperation.swift @@ -10,10 +10,16 @@ import BookPlayerKit import Combine import Foundation +/// Keeps a background-refresh window open until the watched queue reports drained. +/// The POLICY (which lane counts) lives at the call site: `AppDelegate.handleAppRefresh` +/// waits on the `sync` lane only — provider pushes retry forever against an unreachable +/// home server and S3 uploads already run on a background URLSession, so neither should +/// hold the process awake. +/// /// Reference: https://www.avanderlee.com/swift/asynchronous-operations/ class RefreshTaskOperation: Operation { - let syncService: SyncServiceProtocol - private var syncTasksObserver: AnyCancellable? + private let queueDrained: AnyPublisher + private var drainObserver: AnyCancellable? private let lockQueue = DispatchQueue(label: "com.bookplayer.asyncoperation.refreshtask", attributes: .concurrent) override var isAsynchronous: Bool { true } @@ -50,8 +56,15 @@ class RefreshTaskOperation: Operation { } } - init(syncService: SyncServiceProtocol) { - self.syncService = syncService + /// `finish()` is reachable from the drain sink (main) and the expiration handler + /// (a background queue); the KVO transition must happen exactly once. + private var _hasFinished = false + + /// - Parameter queueDrained: `true` while nothing the caller cares about is queued. + /// A replaying publisher (e.g. `CurrentValueSubject`) finishes an already-idle + /// refresh immediately. + init(queueDrained: AnyPublisher) { + self.queueDrained = queueDrained } override func start() { @@ -66,17 +79,21 @@ class RefreshTaskOperation: Operation { } override func main() { - syncTasksObserver = syncService.observeTasksCount().sink { [weak self] count in - guard let self else { return } + drainObserver = queueDrained.sink { [weak self] drained in + guard let self, drained else { return } - if count == 0 { - self.finish() - } + self.finish() } } func finish() { - syncTasksObserver = nil + let alreadyFinished: Bool = lockQueue.sync(flags: [.barrier]) { + defer { _hasFinished = true } + return _hasFinished + } + guard !alreadyFinished else { return } + + drainObserver = nil isExecuting = false isFinished = true } diff --git a/BookPlayerTests/RefreshTaskOperationTests.swift b/BookPlayerTests/RefreshTaskOperationTests.swift new file mode 100644 index 000000000..f68b86e4b --- /dev/null +++ b/BookPlayerTests/RefreshTaskOperationTests.swift @@ -0,0 +1,89 @@ +// +// RefreshTaskOperationTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Combine +import XCTest + +@testable import BookPlayer +@testable import BookPlayerKit + +/// First coverage for the background-refresh keep-alive: it must hold the window open +/// exactly until the watched queue reports drained, and never finish twice. +final class RefreshTaskOperationTests: XCTestCase { + func testFinishesImmediatelyWhenAlreadyDrained() { + let drained = CurrentValueSubject(true) + let operation = RefreshTaskOperation(queueDrained: drained.eraseToAnyPublisher()) + + operation.start() + + XCTAssertTrue(operation.isFinished) + XCTAssertFalse(operation.isExecuting) + } + + func testStaysAliveUntilDrained() { + let drained = CurrentValueSubject(false) + let operation = RefreshTaskOperation(queueDrained: drained.eraseToAnyPublisher()) + + operation.start() + XCTAssertTrue(operation.isExecuting) + XCTAssertFalse(operation.isFinished) + + drained.send(false) + XCTAssertFalse(operation.isFinished, "a non-drained emission must not end the window") + + drained.send(true) + XCTAssertTrue(operation.isFinished) + XCTAssertFalse(operation.isExecuting) + } + + func testCancelledBeforeStartFinishesWithoutSubscribing() { + let drained = PassthroughSubject() + let operation = RefreshTaskOperation(queueDrained: drained.eraseToAnyPublisher()) + + operation.cancel() + operation.start() + + XCTAssertTrue(operation.isFinished) + } + + /// The expiration handler calls finish() after cancel(); a late emission must not flip + /// the KVO state a second time. + func testFinishIsIdempotent() { + let drained = CurrentValueSubject(false) + let operation = RefreshTaskOperation(queueDrained: drained.eraseToAnyPublisher()) + operation.start() + + var finishedTransitions = 0 + let observer = operation.observe(\.isFinished, options: [.new]) { _, _ in + finishedTransitions += 1 + } + defer { observer.invalidate() } + + operation.cancel() + operation.finish() + operation.finish() + drained.send(true) + + XCTAssertTrue(operation.isFinished) + XCTAssertEqual(finishedTransitions, 1) + } + + /// The policy the AppDelegate wires: a drained sync lane ends the window even while + /// uploads and provider pushes are still queued. + func testSyncLanePolicy_ignoresOtherLanes() { + let counts = CurrentValueSubject( + QueueCounts(byQueueKey: [TaskQueueKey.uploadFile: 3, "jellyfin": 1, TaskQueueKey.sync: 1]) + ) + let operation = RefreshTaskOperation(queueDrained: counts.laneDrained(TaskQueueKey.sync)) + + operation.start() + XCTAssertFalse(operation.isFinished) + + counts.send(QueueCounts(byQueueKey: [TaskQueueKey.uploadFile: 3, "jellyfin": 1])) + XCTAssertTrue(operation.isFinished) + } +} diff --git a/BookPlayerTests/Services/ConcurrentSyncTests.swift b/BookPlayerTests/Services/ConcurrentSyncTests.swift index ae272f206..bf7460a01 100644 --- a/BookPlayerTests/Services/ConcurrentSyncTests.swift +++ b/BookPlayerTests/Services/ConcurrentSyncTests.swift @@ -5,6 +5,7 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // +import Combine import Foundation import SwiftData import XCTest @@ -288,3 +289,121 @@ extension ConcurrentSyncTests { XCTAssertEqual(service.accessPolicy[.externalUpdate], true) } } + +// MARK: - Queue counts (engine-owned) + +extension ConcurrentSyncTests { + private func syncUpdateParams(id: String, relativePath: String) -> [String: Any] { + [ + "id": id, + "uuid": UUID().uuidString, + "jobType": SyncJobType.update.rawValue, + "queueKey": TaskQueueKey.sync, + "relativePath": relativePath, + ] + } + + private func uploadFileParams(id: String) -> [String: Any] { + [ + "id": id, + "jobType": SyncJobType.uploadFile.rawValue, + "queueKey": TaskQueueKey.uploadFile, + "filePath": "/tmp/\(id).m4b", + "remotePath": "https://s3/\(id)", + "uuid": id, + ] + } + + /// First snapshot satisfying `predicate`. The publisher replays its latest value on + /// subscribe, so a state reached BEFORE subscribing still resolves. + private func awaitCounts( + from publisher: AnyPublisher, + timeout: TimeInterval = 3, + where predicate: @escaping (QueueCounts) -> Bool + ) async throws -> QueueCounts { + let matched = expectation(description: "queue counts matched") + var result: QueueCounts? + let subscription = publisher.sink { counts in + guard result == nil, predicate(counts) else { return } + result = counts + matched.fulfill() + } + await fulfillment(of: [matched], timeout: timeout) + subscription.cancel() + return try XCTUnwrap(result) + } + + func testQueueCounts_totalAndPerLane() { + let counts = QueueCounts(byQueueKey: [TaskQueueKey.sync: 2, "jellyfin": 3]) + XCTAssertEqual(counts.total, 5) + XCTAssertEqual(counts.count(in: "jellyfin"), 3) + XCTAssertEqual(counts.count(in: TaskQueueKey.uploadFile), 0, "an absent lane reads as zero") + XCTAssertEqual(QueueCounts().total, 0) + } + + /// The engine owns every lane, so ONE publisher carries all counts: the Profile row sums + /// it, the sectioned screen reads one lane at a time. + func testQueueCounts_trackEveryLane() async throws { + try await repository.storeTask(parameters: externalUpdateParams(id: "j1", providerId: "a")) + try await repository.storeTask(parameters: externalUpdateParams(id: "j2", providerId: "b")) + try await repository.storeTask(parameters: uploadFileParams(id: "u1")) + try await repository.storeTask(parameters: syncUpdateParams(id: "s1", relativePath: "book.m4b")) + + let counts = try await awaitCounts(from: tasksDataManager.observeQueueCounts()) { $0.total == 4 } + XCTAssertEqual(counts.count(in: "jellyfin"), 2) + XCTAssertEqual(counts.count(in: TaskQueueKey.uploadFile), 1) + XCTAssertEqual(counts.count(in: TaskQueueKey.sync), 1) + XCTAssertEqual(counts.byQueueKey.count, 3) + } + + func testQueueCounts_drainedLaneLeavesTheSnapshot() async throws { + try await repository.storeTask(parameters: externalUpdateParams(id: "j1")) + _ = try await awaitCounts(from: tasksDataManager.observeQueueCounts()) { $0.total == 1 } + let next = await repository.getNextTask(for: "jellyfin") + let task = try XCTUnwrap(next) + + await repository.pop(task) + + let counts = try await awaitCounts(from: tasksDataManager.observeQueueCounts()) { $0.total == 0 } + XCTAssertEqual(counts.count(in: "jellyfin"), 0) + XCTAssertNil(counts.byQueueKey["jellyfin"]) + } + + /// Pins the list-refresh gate: `SyncService.canSyncListContents` reads the sync lane only + /// (`getTasksCount(in:)`), so a heavy S3 upload or a provider push never blocks a refresh. + func testSyncLaneCount_ignoresUploadsAndProviderPushes() async throws { + try await repository.storeTask(parameters: uploadFileParams(id: "u1")) + try await repository.storeTask(parameters: externalUpdateParams(id: "j1")) + + let syncLaneCount = await repository.getTasksCount(in: TaskQueueKey.sync) + XCTAssertEqual(syncLaneCount, 0) + let counts = try await awaitCounts(from: tasksDataManager.observeQueueCounts()) { $0.total == 2 } + XCTAssertEqual(counts.count(in: TaskQueueKey.sync), 0) + } + + /// The engine forwards the store owner's publisher — no second bookkeeping anywhere. + func testEngine_observeQueueCounts_forwardsTheStoreOwner() async throws { + let service = ConcurrenceService(maxConcurrentTasks: 1) + service.taskContainer = repository + service.tasksDataManager = tasksDataManager + try await repository.storeTask(parameters: externalUpdateParams(id: "j1")) + + let counts = try await awaitCounts(from: service.observeQueueCounts()) { $0.total == 1 } + XCTAssertEqual(counts.count(in: "jellyfin"), 1) + } + + /// Background refresh waits on this: only the named lane matters, whatever the others hold. + func testLaneDrained_followsOnlyTheNamedLane() { + let subject = CurrentValueSubject( + QueueCounts(byQueueKey: [TaskQueueKey.sync: 1, TaskQueueKey.uploadFile: 3]) + ) + var seen = [Bool]() + let subscription = subject.laneDrained(TaskQueueKey.sync).sink { seen.append($0) } + defer { subscription.cancel() } + + subject.send(QueueCounts(byQueueKey: [TaskQueueKey.uploadFile: 3])) + subject.send(QueueCounts(byQueueKey: [TaskQueueKey.uploadFile: 3, "jellyfin": 2])) + + XCTAssertEqual(seen, [false, true, true]) + } +} diff --git a/BookPlayerWatch/ExtensionDelegate.swift b/BookPlayerWatch/ExtensionDelegate.swift index d28d9d2e9..077b4ce30 100644 --- a/BookPlayerWatch/ExtensionDelegate.swift +++ b/BookPlayerWatch/ExtensionDelegate.swift @@ -85,8 +85,7 @@ class ExtensionDelegate: NSObject, WKApplicationDelegate, ObservableObject { isActive: accountService.hasSyncEnabled(), libraryService: libraryService, accountService: accountService, - concurrenceService: concurrenceService, - tasksDataManager: tasksDataManager + concurrenceService: concurrenceService ) let playbackService = PlaybackService() playbackService.setup(libraryService: libraryService) diff --git a/CLAUDE.md b/CLAUDE.md index 4277ff8dc..3f8e44ebe 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -145,8 +145,8 @@ first. Reordering boot risks a launch crash. live in `BookPlayer/Utils/Extensions/Environment+BookPlayer.swift` (`@Entry`). **Each `@Entry` default is a throwaway placeholder (an un-`setup()` service).** A view that reads the environment default instead of the injected instance gets a non-functional service: stored-property reads return inert defaults, but METHODS that - touch un-`setup()` dependencies trap on their implicitly-unwrapped optionals (`SyncService.observeTasksCount`, - `ConcurrenceService.observeConcurrentTasksCount`, and siblings all behave this way — it is the pattern, not a + touch un-`setup()` dependencies trap on their implicitly-unwrapped optionals + (`ConcurrenceService.observeQueueCounts` and siblings all behave this way — it is the pattern, not a defect). Verify real injection by `MainCoordinator`; previews that exercise such views must construct and inject set-up services (see `ProfileSyncTasksSectionView`'s preview), never rely on the defaults. - **App Intents DI:** only `playerLoaderService` and `libraryService` are registered via @@ -245,6 +245,11 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi confined `ModelContext` (it replaced the old `SyncTasksStorage` actor). Do not share/pass a `ModelContext` across actors or threads. Execution lives in `ConcurrenceService` (OperationQueue): the `sync` queue key runs BookPlayer-server jobs serially; provider-named keys (externalUpdate pushes) and `uploadFile` run concurrently. + **The engine is the single owner of queue counts:** `observeQueueCounts()` publishes one per-lane `QueueCounts` + snapshot (the Profile row shows its `total`; the Queued Tasks screen reads one lane at a time). + `SyncService.canSyncListContents` gates list refresh on the `sync` lane only (repository `getTasksCount(in:)`), + and `AppDelegate.handleAppRefresh` waits on `laneDrained(TaskQueueKey.sync)` — S3 uploads and provider pushes + never block a refresh or hold a background window open (pushes retry forever against an unreachable server). - **Realm is gone** (Realm → SwiftData migration is complete). Only inert remnants remain (`DataManager.getSyncTasksRealmURL()` is dead; a stale comment in `LibraryService`). Don't reintroduce it. diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 9899001cc..95e42c49c 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -29,7 +29,10 @@ public protocol ConcurrenceServiceProtocol { dataManager: DataManager ) - func observeConcurrentTasksCount() -> AnyPublisher + /// Pending-task counts for every lane, delivered on main; replays the current snapshot + /// on subscribe. The engine owns all queues, so this is the single source for any count + /// shown in the UI — per lane via `count(in:)`, or `total`. + func observeQueueCounts() -> AnyPublisher func getAllQueuedJobs() async -> [ConcurrentSyncTask] @@ -76,7 +79,8 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { private let policyLock = NSLock() private var disposeBag = Set() private var listeningTask: Task? - public var tasksCountService: ConcurrentTasksCountService! + /// Owner of the store and of the per-lane counts. Internal for @testable injection. + var tasksDataManager: TasksDataManager! private var _lastSyncError: SyncErrorInfo? /// Last sync error information for debugging. Writers hop to main, but readers /// (SyncService.getLastSyncError) call from arbitrary threads — same lock @@ -117,7 +121,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { self.networkClient = networkClient self.dataManager = dataManager self.taskContainer = ConcurrentTasksRepository(tasksDataManager: tasksDataManager) - self.tasksCountService = ConcurrentTasksCountService(tasksDataManager: tasksDataManager) + self.tasksDataManager = tasksDataManager startListeningForNewTasks() bindObservers() bindAccountObserver() @@ -212,8 +216,8 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { await enqueueNextTask(for: queueKey) } - public func observeConcurrentTasksCount() -> AnyPublisher { - return tasksCountService.observeConcurrentTasksCount() + public func observeQueueCounts() -> AnyPublisher { + return tasksDataManager.observeQueueCounts() } private func enqueueNextTask(for queueKey: String) async { diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksCountService.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksCountService.swift deleted file mode 100644 index 0b0279825..000000000 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksCountService.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// ConcurrentTasksCountService.swift -// BookPlayer -// -// Created by Pedro Iñiguez on 25/3/26. -// Copyright © 2026 BookPlayer LLC. All rights reserved. -// - -import Combine -import Foundation - -public protocol ConcurrentTasksCountServiceProtocol { - func observeConcurrentTasksCount() -> AnyPublisher -} - -public class ConcurrentTasksCountService: ConcurrentTasksCountServiceProtocol { - public let tasksDataManager: TasksDataManager - - public init(tasksDataManager: TasksDataManager) { - self.tasksDataManager = tasksDataManager - } - - public func observeConcurrentTasksCount() -> AnyPublisher { - return tasksDataManager.observeConcurrentTasksCount() - } -} diff --git a/Shared/Services/ConcurrentSync/QueueCounts.swift b/Shared/Services/ConcurrentSync/QueueCounts.swift new file mode 100644 index 000000000..371121356 --- /dev/null +++ b/Shared/Services/ConcurrentSync/QueueCounts.swift @@ -0,0 +1,32 @@ +// +// QueueCounts.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Combine +import Foundation + +/// Pending-task count per queue key, published by the engine that owns every lane. +/// A drained lane is simply absent from the snapshot; `count(in:)` reads it as zero. +public struct QueueCounts: Equatable { + public let byQueueKey: [String: Int] + + public init(byQueueKey: [String: Int] = [:]) { + self.byQueueKey = byQueueKey + } + + /// Every queued task across all lanes + public var total: Int { byQueueKey.values.reduce(0, +) } + + public func count(in queueKey: String) -> Int { byQueueKey[queueKey] ?? 0 } +} + +extension Publisher where Output == QueueCounts, Failure == Never { + /// `true` whenever the given lane has nothing queued. Background refresh waits on the + /// `sync` lane through this, so the policy reads the same at the call site and in tests. + public func laneDrained(_ queueKey: String) -> AnyPublisher { + map { $0.count(in: queueKey) == 0 }.eraseToAnyPublisher() + } +} diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 36d2e86fa..d57590c40 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -40,8 +40,6 @@ public protocol SyncServiceProtocol { /// Count of the currently queued sync jobs func queuedJobsCount() async -> Int - /// Observe the queued jobs count - func observeTasksCount() -> AnyPublisher /// Check if we can safely fetch the list contents func canSyncListContents(at relativePath: String?, ignoreLastTimestamp: Bool) async -> Bool @@ -117,7 +115,6 @@ public final class SyncService: SyncServiceProtocol, BPLogger { private var libraryService: LibrarySyncProtocol! private var accountService: AccountServiceProtocol! private var concurrenceService: ConcurrenceServiceProtocol! - private var tasksCountService: SyncTasksCountService! var jobManager: JobSchedulerProtocol! private var client: NetworkClientProtocol! /// Owned here: writes go through `updateSyncEnabled(_:)` / `logout()`, mutated on the @@ -174,7 +171,6 @@ public final class SyncService: SyncServiceProtocol, BPLogger { libraryService: LibrarySyncProtocol, accountService: AccountServiceProtocol, concurrenceService: ConcurrenceServiceProtocol, - tasksDataManager: TasksDataManager, client: NetworkClientProtocol = NetworkClient(), streamResolver: ExternalStreamResolving = ExternalStreamResolver() ) { @@ -183,7 +179,6 @@ public final class SyncService: SyncServiceProtocol, BPLogger { self.libraryService = libraryService self.accountService = accountService self.concurrenceService = concurrenceService - self.tasksCountService = SyncTasksCountService(tasksDataManager: tasksDataManager) self.jobManager = SyncJobScheduler(tasksRepository: concurrenceService.taskContainer) self.client = client self.provider = NetworkProvider(client: client) @@ -263,10 +258,6 @@ public final class SyncService: SyncServiceProtocol, BPLogger { return await jobManager.queuedJobsCount() } - public func observeTasksCount() -> AnyPublisher { - return tasksCountService.observeTasksCount() - } - public func canSyncListContents(at relativePath: String?, ignoreLastTimestamp: Bool) async -> Bool { guard isActive else { Self.logger.trace("Sync is not enabled") diff --git a/Shared/Services/Sync/SyncTasksCountService.swift b/Shared/Services/Sync/SyncTasksCountService.swift deleted file mode 100644 index 06417a114..000000000 --- a/Shared/Services/Sync/SyncTasksCountService.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// SyncTasksCountService.swift -// BookPlayer -// -// Created by Gianni Carlo on 27/2/24. -// Copyright © 2024 BookPlayer LLC. All rights reserved. -// - -import Combine -import Foundation - -public protocol SyncTasksCountServiceProtocol { - func observeTasksCount() -> AnyPublisher -} - -public class SyncTasksCountService: SyncTasksCountServiceProtocol { - private let tasksDataManager: TasksDataManager - - public init(tasksDataManager: TasksDataManager) { - self.tasksDataManager = tasksDataManager - } - - public func observeTasksCount() -> AnyPublisher { - return tasksDataManager.observeTasksCount() - } -} diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index 46451af72..6a96962bb 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -12,8 +12,7 @@ import Combine public final class TasksDataManager: BPLogger { public let container: ModelContainer - private let tasksCountSubject = CurrentValueSubject(0) - private let concurrentTasksCountSubject = CurrentValueSubject(0) + private let queueCountsSubject = CurrentValueSubject(QueueCounts()) public init() { let schema = Schema([ @@ -85,40 +84,27 @@ public final class TasksDataManager: BPLogger { initializeTasksCount() } - public func getTasksCount() -> Int { - tasksCountSubject.value - } - - public func observeTasksCount() -> AnyPublisher { - return tasksCountSubject + /// Pending-task counts per queue key, delivered on main. Replays the latest snapshot on + /// subscribe, then emits after every store/pop. + public func observeQueueCounts() -> AnyPublisher { + return queueCountsSubject .receive(on: DispatchQueue.main) .eraseToAnyPublisher() } - - public func observeConcurrentTasksCount() -> AnyPublisher { - return concurrentTasksCountSubject - .receive(on: DispatchQueue.main) - .eraseToAnyPublisher() - } - - /// Publish updated counts for both queue groups from the unified container: - /// `tasksCountSubject` tracks the serial sync queue, `concurrentTasksCountSubject` - /// tracks everything else (provider updates, file uploads). + + /// Recount every lane from the unified container and publish the snapshot. public func notifyTasksChanged(context: ModelContext) { let descriptor = FetchDescriptor() do { let tasks = try context.fetch(descriptor).first?.tasks ?? [] - let syncCount = tasks.filter { $0.queueKey == TaskQueueKey.sync }.count - tasksCountSubject.send(syncCount) - concurrentTasksCountSubject.send(tasks.count - syncCount) + let counts = Dictionary(grouping: tasks, by: { $0.queueKey }).mapValues(\.count) + queueCountsSubject.send(QueueCounts(byQueueKey: counts)) } catch { - tasksCountSubject.send(0) - concurrentTasksCountSubject.send(0) + queueCountsSubject.send(QueueCounts()) } } - public func deleteAllTasks(with context: ModelContext) throws { // Task payload models are standalone (no relationships), so a store-level // batch delete is safe and fast. From c8b8438ac52df240f813f6f7e77b7a4f17b226ad Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 13 Sep 2026 19:06:47 -0500 Subject: [PATCH 118/172] refactor: one Queued Tasks screen, a collapsible section per lane MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QueuedTasksView lists every lane from the engine (getOrderedQueuedJobs, which now spans the sync lane too) as DisclosureGroups — sync first, then alphabetical, each header carrying the live count — so there is no per-queue drill-down anymore. Rows keep the old sync view's labels and icons (QueuedTaskDisplay). The library list's blocked-refresh sheet presents the same screen inside its own navigation stack. Removes QueuedSyncTasksView, ConcurrentSyncTasksView, ProfileScreen.queue, QueueSummary/getQueueSummaries, the SyncTaskReference read path (SyncService/JobScheduler.getAllQueuedJobs, repository getAllTasks(in:progress:)) and the scheduler's write-only progress map that only fed it. Tests: lane grouping and order, row copy and icons, which rows follow byte progress, progress-key parity with the notification; the storage tests are ported onto getAllTasks(), which now lists every lane in stored order. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 16 +- .../Generated/AutoMockable.generated.swift | 16 -- .../ItemList/ItemListView+Sheets.swift | 5 +- .../Profile/ConcurrentSyncTasksView.swift | 145 -------------- .../Profile/Profile/ProfileScreen.swift | 4 +- BookPlayer/Profile/Profile/ProfileView.swift | 8 - .../Profile/Profile/QueuedSyncTasksView.swift | 155 --------------- .../Profile/Views/QueuedTaskDisplay.swift | 123 ++++++++++++ .../Profile/Views/QueuedTasksView.swift | 183 +++++++++++++----- BookPlayerTests/QueuedTaskDisplayTests.swift | 104 ++++++++++ .../Services/SyncTasksStorageTests.swift | 93 +++------ CLAUDE.md | 3 +- .../ConcurrentSync/ConcurrenceService.swift | 15 +- .../ConcurrentSync/ConcurrentSyncTask.swift | 18 +- .../ConcurrentTasksRepository.swift | 64 ++---- Shared/Services/Sync/Model/SyncTask.swift | 20 -- Shared/Services/Sync/SyncJobScheduler.swift | 41 ---- Shared/Services/Sync/SyncService.swift | 6 - 18 files changed, 420 insertions(+), 599 deletions(-) delete mode 100644 BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift delete mode 100644 BookPlayer/Profile/Profile/QueuedSyncTasksView.swift create mode 100644 BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift create mode 100644 BookPlayerTests/QueuedTaskDisplayTests.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index d9b3c6951..f7daa5fb4 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -133,6 +133,7 @@ 4160A0A123F304530039166B /* LocalizableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4160A0A023F304530039166B /* LocalizableLabel.swift */; }; 4163E313214AC43000072AA2 /* ImportOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4163E312214AC43000072AA2 /* ImportOperationTests.swift */; }; 28EEB2588DE468A6B8C15272 /* RefreshTaskOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */; }; + FDA22898B1CD320A1D8F6C52 /* QueuedTaskDisplayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */; }; 41640A3724416EE8004FB97B /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 41640A3624416EE8004FB97B /* Intents.intentdefinition */; settings = {ATTRIBUTES = (no_codegen, ); }; }; 41640A452441ACE2004FB97B /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 41640A3624416EE8004FB97B /* Intents.intentdefinition */; }; 4165EE0520A743D500616EDF /* BookPlayer.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 4165EDF920A743D500616EDF /* BookPlayer.xcdatamodeld */; }; @@ -696,7 +697,6 @@ 9911FBB62F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */; }; 9911FBB82F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */; }; 9911FBB92F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */; }; - 9911FBBB2F736C0500DC9A2B /* ConcurrentSyncTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBA2F736BFC00DC9A2B /* ConcurrentSyncTasksView.swift */; }; 9911FBBE2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */; }; F99B9D63217ABDAFED95696A /* QueueCounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */; }; 9911FBBF2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */; }; @@ -706,6 +706,7 @@ 9911FBC72F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */; }; 9911FBC82F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */; }; 9911FBD72F7CACEC00DC9A2B /* QueuedTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */; }; + 32F59104BFC8DDAA7DBEC934 /* QueuedTaskDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */; }; 992D6E102FA2BD290091849F /* DynamicWaveLoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 992D6E0F2FA2BD230091849F /* DynamicWaveLoadingView.swift */; }; 992D6E132FA98B4D0091849F /* AudiobookShelfConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */; }; 992D6E142FA98B4D0091849F /* AudiobookShelfConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879C2EC7722400DF442B /* AudiobookShelfConnectionData.swift */; }; @@ -926,7 +927,6 @@ 9FF383D32A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 9FF383D02A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel */; }; 9FF383D42A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 9FF383D02A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel */; }; 9FF383D52A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 9FF383D02A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel */; }; - 9FF710B72A212A19006490E0 /* QueuedSyncTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FF710B62A212A19006490E0 /* QueuedSyncTasksView.swift */; }; 9FF710B92A213084006490E0 /* QueuedSyncTaskRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FF710B82A213084006490E0 /* QueuedSyncTaskRowView.swift */; }; 9FF710BD2A215686006490E0 /* QueuedSyncTaskType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FF710BC2A215686006490E0 /* QueuedSyncTaskType.swift */; }; 9FFCC08F289418CA00F4952E /* SimpleChapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FFCC08E289418CA00F4952E /* SimpleChapter.swift */; }; @@ -1260,6 +1260,7 @@ 4163E3102148606600072AA2 /* ImportFileItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportFileItem.swift; sourceTree = ""; }; 4163E312214AC43000072AA2 /* ImportOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportOperationTests.swift; sourceTree = ""; }; 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTaskOperationTests.swift; sourceTree = ""; }; + EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTaskDisplayTests.swift; sourceTree = ""; }; 4163E314214ACB4300072AA2 /* DataTestUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTestUtils.swift; sourceTree = ""; }; 41640A1F24416774004FB97B /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; }; 41640A3624416EE8004FB97B /* Intents.intentdefinition */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; path = Intents.intentdefinition; sourceTree = ""; }; @@ -1776,12 +1777,12 @@ 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTasksRepository.swift; sourceTree = ""; }; 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalUpdateProgressOperation.swift; sourceTree = ""; }; 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentSyncTask.swift; sourceTree = ""; }; - 9911FBBA2F736BFC00DC9A2B /* ConcurrentSyncTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentSyncTasksView.swift; sourceTree = ""; }; 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTaskProgressMonitor.swift; sourceTree = ""; }; 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueueCounts.swift; sourceTree = ""; }; 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUploadOperation.swift; sourceTree = ""; }; 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncableExternalResource.swift; sourceTree = ""; }; 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTasksView.swift; sourceTree = ""; }; + 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTaskDisplay.swift; sourceTree = ""; }; 992D6E0F2FA2BD230091849F /* DynamicWaveLoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicWaveLoadingView.swift; sourceTree = ""; }; 99329DB62F3AA8F6003F8E73 /* PlayControlsRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayControlsRowView.swift; sourceTree = ""; }; 99329DBA2F3AAA61003F8E73 /* ListeningProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListeningProgressView.swift; sourceTree = ""; }; @@ -1931,7 +1932,6 @@ 9FE786AD292D0FA8002B4A8D /* BookPlayerShareExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = BookPlayerShareExtension.entitlements; sourceTree = ""; }; 9FE86B8D2A544CB200B5450E /* Binding+BookPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Binding+BookPlayer.swift"; sourceTree = ""; }; 9FF383D02A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = MappingModel_v8_to_v9.xcmappingmodel; sourceTree = ""; }; - 9FF710B62A212A19006490E0 /* QueuedSyncTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedSyncTasksView.swift; sourceTree = ""; }; 9FF710B82A213084006490E0 /* QueuedSyncTaskRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedSyncTaskRowView.swift; sourceTree = ""; }; 9FF710BC2A215686006490E0 /* QueuedSyncTaskType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedSyncTaskType.swift; sourceTree = ""; }; 9FFCC08E289418CA00F4952E /* SimpleChapter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleChapter.swift; sourceTree = ""; }; @@ -2467,6 +2467,7 @@ 63833DF82AAC134600496246 /* PerformanceTests */, 4163E312214AC43000072AA2 /* ImportOperationTests.swift */, 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */, + EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */, 41C3CF7D20AEA5E5007C3EF4 /* DataManagerTests.swift */, 9F8A9A5D27AC3F8C0093AA1C /* PlayableItemTests.swift */, 689E2BCD29DC1D9253949A53 /* PlayableChapterTests.swift */, @@ -3645,10 +3646,8 @@ 63AD93D82E3C754B0077E73A /* ProfileListenedSectionView.swift */, 63AD93DC2E3C7F5A0077E73A /* ProfileProCalloutSectionView.swift */, 63AD93DE2E3C80B50077E73A /* ProfileSyncTasksSectionView.swift */, - 9FF710B62A212A19006490E0 /* QueuedSyncTasksView.swift */, 9FF710BC2A215686006490E0 /* QueuedSyncTaskType.swift */, 9FF710B82A213084006490E0 /* QueuedSyncTaskRowView.swift */, - 9911FBBA2F736BFC00DC9A2B /* ConcurrentSyncTasksView.swift */, 63AD93D42E3C72830077E73A /* ProfileScreen.swift */, ); path = Profile; @@ -3711,6 +3710,7 @@ children = ( 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */, 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */, + 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */, 9F5F13452977A06300F061A0 /* ProfileCardView.swift */, ); path = Views; @@ -4941,7 +4941,6 @@ 63C48D522E50AAA1005FBB96 /* AccountPasskeySectionView.swift in Sources */, 4165EE0520A743D500616EDF /* BookPlayer.xcdatamodeld in Sources */, 63C48D3C2E3E7D29005FBB96 /* SettingsCompleteAccountView.swift in Sources */, - 9FF710B72A212A19006490E0 /* QueuedSyncTasksView.swift in Sources */, 63C1A8B02B0915EE00C4B418 /* WidgetUtils.swift in Sources */, 41B2A5ED21CCC6D100917584 /* AppNavigationController.swift in Sources */, 9F22DE40288D8BC800056FCD /* BaseLabel.swift in Sources */, @@ -4990,7 +4989,6 @@ 99329DC72F3AF3B6003F8E73 /* BubbleButton.swift in Sources */, 4151A6DD26E4A13A00E49DBE /* MainCoordinator.swift in Sources */, 634BA54C2C0C21AF0015314D /* SecondOnboardingCoordinator.swift in Sources */, - 9911FBBB2F736C0500DC9A2B /* ConcurrentSyncTasksView.swift in Sources */, 631908AE2E369EDC009249C1 /* BoostVolumeSectionView.swift in Sources */, 631908F02E369EDC009249C1 /* StartupPlayerSectionView.swift in Sources */, 63C6C2E62B5029BC00FFE0D8 /* SettingsAutolockView.swift in Sources */, @@ -5013,6 +5011,7 @@ 63682CBE2E2F422900C15FC1 /* DebugFileTransferable.swift in Sources */, 4160A0A123F304530039166B /* LocalizableLabel.swift in Sources */, 9911FBD72F7CACEC00DC9A2B /* QueuedTasksView.swift in Sources */, + 32F59104BFC8DDAA7DBEC934 /* QueuedTaskDisplay.swift in Sources */, 4137BBCC272DAF2E009ED9FE /* MVVMControllerProtocol.swift in Sources */, 631B360C2ABE8ACC001F4C1C /* BPModalOnlyPresentationFlow.swift in Sources */, 99B367FC2F5108BF00C38F7F /* MediaActionRow.swift in Sources */, @@ -5268,6 +5267,7 @@ 232F1DA50BB33EB5A629B8B7 /* PlayableChapterTests.swift in Sources */, 4163E313214AC43000072AA2 /* ImportOperationTests.swift in Sources */, 28EEB2588DE468A6B8C15272 /* RefreshTaskOperationTests.swift in Sources */, + FDA22898B1CD320A1D8F6C52 /* QueuedTaskDisplayTests.swift in Sources */, 0CEC6B48350FC9C0A0B7D1C0 /* SyncTasksStorageTests.swift in Sources */, 1A26F7D72FFD6D625A313FC5 /* AudioMetadataServiceTests.swift in Sources */, 466E4B7066F10717C8CE7B3E /* LibraryServiceReloadChaptersTests.swift in Sources */, diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index 8aedad154..3ca7e53bd 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -2164,22 +2164,6 @@ class SyncServiceProtocolMock: SyncServiceProtocol { scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidReceivedInvocations.append((providerName: providerName, providerId: providerId, relativePath: relativePath, uuid: uuid)) scheduleExternalResourceDeletionProviderNameProviderIdRelativePathUuidClosure?(providerName, providerId, relativePath, uuid) } - //MARK: - getAllQueuedJobs - - var getAllQueuedJobsCallsCount = 0 - var getAllQueuedJobsCalled: Bool { - return getAllQueuedJobsCallsCount > 0 - } - var getAllQueuedJobsReturnValue: [SyncTaskReference]! - var getAllQueuedJobsClosure: (() async -> [SyncTaskReference])? - func getAllQueuedJobs() async -> [SyncTaskReference] { - getAllQueuedJobsCallsCount += 1 - if let getAllQueuedJobsClosure = getAllQueuedJobsClosure { - return await getAllQueuedJobsClosure() - } else { - return getAllQueuedJobsReturnValue - } - } //MARK: - getAllQueuedJobsWithParams var getAllQueuedJobsWithParamsCallsCount = 0 diff --git a/BookPlayer/Library/ItemList/ItemListView+Sheets.swift b/BookPlayer/Library/ItemList/ItemListView+Sheets.swift index ee9b21153..4a47fc45e 100644 --- a/BookPlayer/Library/ItemList/ItemListView+Sheets.swift +++ b/BookPlayer/Library/ItemList/ItemListView+Sheets.swift @@ -17,7 +17,10 @@ extension ItemListView { case .itemDetails(let item): itemDetailsSheet(for: item) case .queuedTasks: - QueuedSyncTasksView() + // Own stack so the title and the info button show inside the sheet + NavigationStack { + QueuedTasksView() + } case .foldersSelection: foldersSelectionSheet() case .libraryOptions: diff --git a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift b/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift deleted file mode 100644 index ca9ecf340..000000000 --- a/BookPlayer/Profile/Profile/ConcurrentSyncTasksView.swift +++ /dev/null @@ -1,145 +0,0 @@ -// -// ConcurrentSyncTasksView.swift -// BookPlayer -// -// Created by Pedro Iñiguez on 24/3/26. -// Copyright © 2026 BookPlayer LLC. All rights reserved. -// - -import BookPlayerKit -import SwiftData -import SwiftUI - -/// Task list for a single provider/upload queue -struct ConcurrentSyncTasksView: View { - let queueKey: String - - @AppStorage(Constants.UserDefaults.allowCellularData) - private var allowsCellularData: Bool = false - var monitor = ConcurrentTaskProgressMonitor.shared - @State private var queuedJobs = [ConcurrentSyncTask]() - /// Dedup for the GLOBAL count emissions only — never mixed with this queue's - /// filtered count, or a coincidental match skips a needed reload. -1 so the - /// first emission always reloads. - @State private var globalTasksCount = -1 - @State private var showInfoAlert = false - @State private var networkMonitor = NetworkMonitor() - - @Environment(\.concurrenceService) private var concurrenceService - @EnvironmentObject private var theme: ThemeViewModel - - var body: some View { - List { - ThemedSection { - if queuedJobs.isEmpty { - // MARK: - Empty State - VStack(spacing: 12) { - Image(systemName: "checkmark.icloud") - .font(.largeTitle) - .imageScale(.large) - .foregroundStyle(.secondary) - - Text("sync_tasks_empty_title".localized) - .bpFont(.headline) - - Text("sync_tasks_empty_description".localized) - .bpFont(.subheadline) - .foregroundStyle(.secondary) - .multilineTextAlignment(.center) - } - .padding(.vertical, 40) - .frame(maxWidth: .infinity) - .listRowBackground(Color.clear) - - } else { - ForEach(queuedJobs) { job in - QueuedSyncTaskRowView( - imageName: .constant(parseImageName(job.jobType)), - title: .constant(parseLabel(job.jobType, job.queueKey)), - // The progress notification carries the per-item resolved key, not the - // queue key — and the sink is gated on isUpload, so upload rows built - // with the queue key froze at their onAppear snapshot - progressKey: SyncProgressKey.resolve(uuid: job.uuid, relativePath: job.relativePath), - initialProgress: monitor.getTaskProgress(taskID: job.id), - isUpload: job.jobType == .uploadFile - ) - } - } - } header: { - if !allowsCellularData && !networkMonitor.isConnectedViaWiFi { - HStack { - Spacer() - Image(systemName: "wifi") - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 20, height: 20) - .foregroundStyle(theme.linkColor) - .padding([.trailing], 5) - Text("upload_wifi_required_title".localized) - .bpFont(.body) - .foregroundStyle(theme.secondaryColor) - Spacer() - } - } - } - } - .scrollContentBackground(.hidden) - .background(theme.systemBackgroundColor) - .toolbarColorScheme(theme.useDarkVariant ? .dark : .light, for: .navigationBar) - .navigationTitle(QueueDisplay.name(for: queueKey)) - .navigationBarTitleDisplayMode(.inline) - .alert("", isPresented: $showInfoAlert) { - Button("ok_button".localized, role: .cancel) {} - } message: { - Text("sync_tasks_alert_description".localized) - } - .onReceive( - concurrenceService.observeQueueCounts().map { $0.count(in: queueKey) } - ) { count in - guard globalTasksCount != count else { return } - - globalTasksCount = count - reloadQueuedJobs() - } - .onAppear { - reloadQueuedJobs() - } - .toolbar { - ToolbarItem(placement: .confirmationAction) { - Button { - showInfoAlert = true - } label: { - Image(systemName: "info.circle") - } - .accessibilityLabel("info_title".localized) - .foregroundStyle(theme.linkColor) - } - } - } - - func reloadQueuedJobs() { - Task { @MainActor in - let allJobs = await concurrenceService.getOrderedQueuedJobs(activeTaskIDs: Set(monitor.activeTasks.keys)) - .filter { $0.queueKey == queueKey } - queuedJobs = allJobs - } - } - - func parseImageName(_ jobType: SyncJobType) -> String { - switch jobType { - case .uploadFile: - return "square.and.arrow.up.badge.clock" - default: - return "arrow.2.circlepath" - } - } - - func parseLabel(_ jobType: SyncJobType, _ queueKey: String) -> String { - switch jobType { - case .uploadFile: - return "task_uploading_file_label".localized - default: - return String(format: "task_updating_progress_label".localized, queueKey) - } - } -} diff --git a/BookPlayer/Profile/Profile/ProfileScreen.swift b/BookPlayer/Profile/Profile/ProfileScreen.swift index 5eb9d72e5..08287edca 100644 --- a/BookPlayer/Profile/Profile/ProfileScreen.swift +++ b/BookPlayer/Profile/Profile/ProfileScreen.swift @@ -10,8 +10,6 @@ import Foundation enum ProfileScreen: Hashable { case account - /// Active queues overview + /// Every queued task, one collapsible section per lane case queueTasks - /// Task list for one queue key - case queue(String) } diff --git a/BookPlayer/Profile/Profile/ProfileView.swift b/BookPlayer/Profile/Profile/ProfileView.swift index 1513afdb7..225bd9485 100644 --- a/BookPlayer/Profile/Profile/ProfileView.swift +++ b/BookPlayer/Profile/Profile/ProfileView.swift @@ -46,14 +46,6 @@ struct ProfileView: View { case .queueTasks: QueuedTasksView() .miniPlayerSafeAreaInset() - case .queue(let queueKey): - if queueKey == TaskQueueKey.sync { - QueuedSyncTasksView() - .miniPlayerSafeAreaInset() - } else { - ConcurrentSyncTasksView(queueKey: queueKey) - .miniPlayerSafeAreaInset() - } } } .sheet(isPresented: $showLogin) { diff --git a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift b/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift deleted file mode 100644 index 329f57a57..000000000 --- a/BookPlayer/Profile/Profile/QueuedSyncTasksView.swift +++ /dev/null @@ -1,155 +0,0 @@ -// -// QueuedSyncTasksView.swift -// BookPlayer -// -// Created by gianni.carlo on 26/5/23. -// Copyright © 2023 BookPlayer LLC. All rights reserved. -// - -import BookPlayerKit -import SwiftData -import SwiftUI - -struct QueuedSyncTasksView: View { - @AppStorage(Constants.UserDefaults.allowCellularData) - private var allowsCellularData: Bool = false - @State private var queuedJobs = [SyncTaskReference]() - @State private var jobsCount = 0 - @State private var showInfoAlert = false - @State private var networkMonitor = NetworkMonitor() - - @Environment(\.syncService) private var syncService - @Environment(\.concurrenceService) private var concurrenceService - @EnvironmentObject private var theme: ThemeViewModel - - var body: some View { - List { - ThemedSection { - if queuedJobs.isEmpty { - // MARK: - Empty State - VStack(spacing: 12) { - Image(systemName: "checkmark.icloud") - .font(.largeTitle) - .imageScale(.large) - .foregroundStyle(.secondary) - - Text("sync_tasks_empty_title".localized) - .bpFont(.headline) - - Text("sync_tasks_empty_description".localized) - .bpFont(.subheadline) - .foregroundStyle(.secondary) - .multilineTextAlignment(.center) - } - .padding(.vertical, 40) - .frame(maxWidth: .infinity) - .listRowBackground(Color.clear) - - } else { - ForEach(queuedJobs) { job in - QueuedSyncTaskRowView( - imageName: .constant(parseImageName(job.jobType)), - title: job.jobType == .matchUuid ? .constant("sync_library_title".localized) : .constant(job.relativePath), - progressKey: job.progressKey, - initialProgress: job.jobType == .upload ? job.progress : 0, - isUpload: job.jobType == .upload - ) - } - } - } header: { - if !allowsCellularData && !networkMonitor.isConnectedViaWiFi { - HStack { - Spacer() - Image(systemName: "wifi") - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 20, height: 20) - .foregroundStyle(theme.linkColor) - .padding([.trailing], 5) - Text("upload_wifi_required_title".localized) - .bpFont(.body) - .foregroundStyle(theme.secondaryColor) - Spacer() - } - } - } - } - .scrollContentBackground(.hidden) - .background(theme.systemBackgroundColor) - .toolbarColorScheme(theme.useDarkVariant ? .dark : .light, for: .navigationBar) - .navigationTitle("tasks_title") - .navigationBarTitleDisplayMode(.inline) - .alert("", isPresented: $showInfoAlert) { - Button("ok_button", role: .cancel) {} - .foregroundStyle(theme.linkColor) - } message: { - Text("sync_tasks_alert_description") - } - .onReceive( - concurrenceService.observeQueueCounts() - .map { $0.count(in: TaskQueueKey.sync) } - .dropFirst() - ) { count in - guard jobsCount != count else { return } - - jobsCount = count - reloadQueuedJobs() - } - .onAppear { - reloadQueuedJobs() - } - .toolbar { - ToolbarItem(placement: .confirmationAction) { - Button { - showInfoAlert = true - } label: { - Image(systemName: "info.circle") - } - .foregroundStyle(theme.linkColor) - } - } - } - - func reloadQueuedJobs() { - Task { @MainActor in - let allJobs = await syncService.getAllQueuedJobs() - jobsCount = allJobs.count - queuedJobs = allJobs - } - } - - func parseImageName(_ jobType: SyncJobType) -> String { - switch jobType { - case .upload: - return "arrow.up.to.line" - case .update: - return "arrow.2.circlepath" - case .move: - return "arrow.forward" - case .renameFolder: - return "square.and.pencil" - case .delete: - return "xmark.bin.fill" - case .shallowDelete: - return "xmark.bin" - case .setBookmark: - return "bookmark" - case .deleteBookmark: - return "bookmark.slash" - case .uploadArtwork: - return "photo" - case .matchUuid: - return "app.connected.to.app.below.fill" - case .externalResource: - return "arrow.up.forward.square" - case .externalResourceToDownload: - return "link.badge.plus" - case .deleteExternalResource: - return "xmark.bin" - case .externalUpdate: - return "arrow.2.circlepath" - case .uploadFile: - return "square.and.arrow.up.badge.clock" - } - } -} diff --git a/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift b/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift new file mode 100644 index 000000000..97751104e --- /dev/null +++ b/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift @@ -0,0 +1,123 @@ +// +// QueuedTaskDisplay.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import Foundation + +/// Display metadata for a task queue key +enum QueueDisplay { + static func name(for queueKey: String) -> String { + switch queueKey { + case TaskQueueKey.sync: + return "queue_library_sync_title".localized + case TaskQueueKey.uploadFile: + return "queue_file_uploads_title".localized + default: + return queueKey.capitalized + } + } + + static func imageName(for queueKey: String) -> String { + switch queueKey { + case TaskQueueKey.sync: + return "arrow.triangle.2.circlepath.icloud" + case TaskQueueKey.uploadFile: + return "square.and.arrow.up.badge.clock" + default: + return "antenna.radiowaves.left.and.right" + } + } +} + +/// One collapsible lane on the Queued Tasks screen +struct QueuedTaskSection: Identifiable { + let queueKey: String + let tasks: [ConcurrentSyncTask] + + var id: String { queueKey } +} + +extension Array where Element == ConcurrentSyncTask { + /// Lanes in display order — the sync lane first, then alphabetically — each keeping the + /// engine's order (active tasks first) for its own rows. A drained lane has no section. + func groupedByLane() -> [QueuedTaskSection] { + var laneOrder = [String]() + var tasksByLane = [String: [ConcurrentSyncTask]]() + for task in self { + if tasksByLane[task.queueKey] == nil { + laneOrder.append(task.queueKey) + } + tasksByLane[task.queueKey, default: []].append(task) + } + + return laneOrder + .sorted { lhs, rhs in + if lhs == TaskQueueKey.sync { return true } + if rhs == TaskQueueKey.sync { return false } + return lhs < rhs + } + .map { QueuedTaskSection(queueKey: $0, tasks: tasksByLane[$0] ?? []) } + } +} + +extension ConcurrentSyncTask { + /// Sync-lane jobs name the item they touch (the library match names the whole library); + /// file uploads and provider pushes describe the work instead. + var displayTitle: String { + switch jobType { + case .matchUuid: + return "sync_library_title".localized + case .uploadFile: + return "task_uploading_file_label".localized + case .externalUpdate: + return String(format: "task_updating_progress_label".localized, QueueDisplay.name(for: queueKey)) + default: + return relativePath + } + } + + var displayImageName: String { + switch jobType { + case .upload: + return "arrow.up.to.line" + case .update: + return "arrow.2.circlepath" + case .move: + return "arrow.forward" + case .renameFolder: + return "square.and.pencil" + case .delete: + return "xmark.bin.fill" + case .shallowDelete: + return "xmark.bin" + case .setBookmark: + return "bookmark" + case .deleteBookmark: + return "bookmark.slash" + case .uploadArtwork: + return "photo" + case .matchUuid: + return "app.connected.to.app.below.fill" + case .externalResource: + return "arrow.up.forward.square" + case .externalResourceToDownload: + return "link.badge.plus" + case .deleteExternalResource: + return "xmark.bin" + case .externalUpdate: + return "arrow.2.circlepath" + case .uploadFile: + return "square.and.arrow.up.badge.clock" + } + } + + /// Byte progress arrives through `.uploadProgressUpdated` for the file moving to S3; + /// every other job is an API round-trip with no meaningful percentage. + var tracksByteProgress: Bool { + jobType == .upload || jobType == .uploadFile + } +} diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index 6f6a10917..2e7d908aa 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -6,61 +6,60 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // -import SwiftUI import BookPlayerKit -import SwiftData - -/// Display metadata for a task queue key -enum QueueDisplay { - static func name(for queueKey: String) -> String { - switch queueKey { - case TaskQueueKey.sync: - return "queue_library_sync_title".localized - case TaskQueueKey.uploadFile: - return "queue_file_uploads_title".localized - default: - return queueKey.capitalized - } - } - - static func imageName(for queueKey: String) -> String { - switch queueKey { - case TaskQueueKey.sync: - return "arrow.triangle.2.circlepath.icloud" - case TaskQueueKey.uploadFile: - return "square.and.arrow.up.badge.clock" - default: - return "antenna.radiowaves.left.and.right" - } - } -} +import SwiftUI -/// Overview of the active task queues; each row navigates to that queue's tasks +/// Every queued task on one screen: a collapsible section per lane (sync first, then the +/// rest alphabetically), fed by the engine that owns all of them. Pushed from Profile and +/// presented as a sheet from the library list when a refresh is blocked by queued jobs. struct QueuedTasksView: View { - @State private var queues = [QueueSummary]() + @AppStorage(Constants.UserDefaults.allowCellularData) + private var allowsCellularData: Bool = false + @State private var tasks = [ConcurrentSyncTask]() + @State private var counts = QueueCounts() + /// Stored inverted on purpose: a lane that appears while the screen is open starts expanded + @State private var collapsedLanes = Set() + @State private var showInfoAlert = false + @State private var networkMonitor = NetworkMonitor() + var monitor = ConcurrentTaskProgressMonitor.shared @Environment(\.concurrenceService) private var concurrenceService @EnvironmentObject private var theme: ThemeViewModel + private var sections: [QueuedTaskSection] { tasks.groupedByLane() } + var body: some View { List { - ThemedSection { - ForEach(queues) { queue in - NavigationLink(value: ProfileScreen.queue(queue.queueKey)) { - HStack(spacing: Spacing.S1) { - Image(systemName: QueueDisplay.imageName(for: queue.queueKey)) - .frame(width: 24) - .foregroundStyle(theme.linkColor) - Text(QueueDisplay.name(for: queue.queueKey)) - .bpFont(.body) - Spacer() - Text("\(queue.count)") - .bpFont(.subheadline) - .foregroundStyle(theme.secondaryColor) + if !allowsCellularData && !networkMonitor.isConnectedViaWiFi { + Section { + EmptyView() + } header: { + wifiRequiredBanner + } + } + + if tasks.isEmpty { + ThemedSection { + emptyState + } + } else { + ForEach(sections) { section in + ThemedSection { + DisclosureGroup(isExpanded: isExpanded(section.queueKey)) { + ForEach(section.tasks) { task in + QueuedSyncTaskRowView( + imageName: .constant(task.displayImageName), + title: .constant(task.displayTitle), + progressKey: task.progressKey, + initialProgress: monitor.getTaskProgress(taskID: task.id), + isUpload: task.tracksByteProgress + ) + } + } label: { + laneHeader(section.queueKey) } - .padding(.vertical, Spacing.S3) + .tint(theme.linkColor) } - .listRowBackground(theme.tertiarySystemBackgroundColor) } } } @@ -70,17 +69,98 @@ struct QueuedTasksView: View { .toolbarColorScheme(theme.useDarkVariant ? .dark : .light, for: .navigationBar) .navigationTitle("queued_tasks_title".localized) .navigationBarTitleDisplayMode(.inline) - .onReceive(concurrenceService.observeQueueCounts()) { _ in - reloadQueues() + .alert("", isPresented: $showInfoAlert) { + Button("ok_button".localized, role: .cancel) {} + } message: { + Text("sync_tasks_alert_description".localized) + } + .toolbar { + ToolbarItem(placement: .confirmationAction) { + Button { + showInfoAlert = true + } label: { + Image(systemName: "info.circle") + } + .accessibilityLabel("info_title".localized) + .foregroundStyle(theme.linkColor) + } } - .onAppear { - reloadQueues() + // Replays the current snapshot on subscribe, so this is the initial load as well. + .onReceive(concurrenceService.observeQueueCounts()) { snapshot in + counts = snapshot + reloadTasks() } } - func reloadQueues() { + private func laneHeader(_ queueKey: String) -> some View { + HStack(spacing: Spacing.S1) { + Image(systemName: QueueDisplay.imageName(for: queueKey)) + .frame(width: 24) + .foregroundStyle(theme.linkColor) + Text(QueueDisplay.name(for: queueKey)) + .bpFont(.headline) + .foregroundStyle(theme.primaryColor) + Spacer() + Text("\(counts.count(in: queueKey))") + .bpFont(.subheadline) + .foregroundStyle(theme.secondaryColor) + } + .padding(.vertical, Spacing.S3) + .accessibilityElement(children: .combine) + } + + private var wifiRequiredBanner: some View { + HStack { + Spacer() + Image(systemName: "wifi") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 20, height: 20) + .foregroundStyle(theme.linkColor) + .padding([.trailing], 5) + Text("upload_wifi_required_title".localized) + .bpFont(.body) + .foregroundStyle(theme.secondaryColor) + Spacer() + } + } + + private var emptyState: some View { + VStack(spacing: 12) { + Image(systemName: "checkmark.icloud") + .font(.largeTitle) + .imageScale(.large) + .foregroundStyle(.secondary) + + Text("sync_tasks_empty_title".localized) + .bpFont(.headline) + + Text("sync_tasks_empty_description".localized) + .bpFont(.subheadline) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + } + .padding(.vertical, 40) + .frame(maxWidth: .infinity) + .listRowBackground(Color.clear) + } + + private func isExpanded(_ queueKey: String) -> Binding { + Binding( + get: { !collapsedLanes.contains(queueKey) }, + set: { expanded in + if expanded { + collapsedLanes.remove(queueKey) + } else { + collapsedLanes.insert(queueKey) + } + } + ) + } + + func reloadTasks() { Task { @MainActor in - queues = await concurrenceService.getQueueSummaries() + tasks = await concurrenceService.getOrderedQueuedJobs(activeTaskIDs: Set(monitor.activeTasks.keys)) } } } @@ -108,8 +188,7 @@ struct QueuedTasksView: View { return concurrenceService }() - ZStack { - Color(.secondarySystemBackground).edgesIgnoringSafeArea(.all) + NavigationStack { QueuedTasksView() } .environmentObject(ThemeViewModel()) diff --git a/BookPlayerTests/QueuedTaskDisplayTests.swift b/BookPlayerTests/QueuedTaskDisplayTests.swift new file mode 100644 index 000000000..c6a26d4ec --- /dev/null +++ b/BookPlayerTests/QueuedTaskDisplayTests.swift @@ -0,0 +1,104 @@ +// +// QueuedTaskDisplayTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import XCTest + +@testable import BookPlayer +@testable import BookPlayerKit + +/// The sectioned Queued Tasks screen is pure shaping over the engine's task list: lane +/// order, per-row copy and icon, and which rows follow byte progress. +final class QueuedTaskDisplayTests: XCTestCase { + private func task( + _ id: String, + lane: String, + jobType: SyncJobType = .externalUpdate, + uuid: String = "", + relativePath: String = "" + ) -> ConcurrentSyncTask { + ConcurrentSyncTask( + id: id, + queueKey: lane, + jobType: jobType, + parameters: [:], + uuid: uuid, + relativePath: relativePath + ) + } + + func testGroupedByLane_syncFirstThenAlphabetical_keepingEngineOrder() { + let tasks = [ + task("j2", lane: "jellyfin"), + task("u1", lane: TaskQueueKey.uploadFile, jobType: .uploadFile), + task("a1", lane: "audiobookshelf"), + task("s1", lane: TaskQueueKey.sync, jobType: .update), + task("j1", lane: "jellyfin"), + ] + + let sections = tasks.groupedByLane() + + XCTAssertEqual( + sections.map(\.queueKey), + [TaskQueueKey.sync, "audiobookshelf", "jellyfin", TaskQueueKey.uploadFile] + ) + XCTAssertEqual(sections[2].tasks.map(\.id), ["j2", "j1"], "a lane keeps the engine's order") + } + + func testGroupedByLane_drainedLanesHaveNoSection() { + XCTAssertTrue([ConcurrentSyncTask]().groupedByLane().isEmpty) + XCTAssertEqual([task("j1", lane: "jellyfin")].groupedByLane().map(\.queueKey), ["jellyfin"]) + } + + func testDisplayTitle_perJobType() { + XCTAssertEqual( + task("s", lane: TaskQueueKey.sync, jobType: .matchUuid).displayTitle, + "sync_library_title".localized + ) + XCTAssertEqual( + task("s", lane: TaskQueueKey.sync, jobType: .update, relativePath: "Author/Book.m4b").displayTitle, + "Author/Book.m4b" + ) + XCTAssertEqual( + task("u", lane: TaskQueueKey.uploadFile, jobType: .uploadFile).displayTitle, + "task_uploading_file_label".localized + ) + XCTAssertEqual( + task("j", lane: "jellyfin").displayTitle, + String(format: "task_updating_progress_label".localized, "Jellyfin") + ) + } + + func testDisplayImageName_perJobType() { + XCTAssertEqual( + task("u", lane: TaskQueueKey.uploadFile, jobType: .uploadFile).displayImageName, + "square.and.arrow.up.badge.clock" + ) + XCTAssertEqual(task("s", lane: TaskQueueKey.sync, jobType: .setBookmark).displayImageName, "bookmark") + XCTAssertEqual( + task("s", lane: TaskQueueKey.sync, jobType: .matchUuid).displayImageName, + "app.connected.to.app.below.fill" + ) + XCTAssertEqual(task("j", lane: "jellyfin").displayImageName, "arrow.2.circlepath") + } + + func testTracksByteProgress_onlyForFileUploads() { + XCTAssertTrue(task("u", lane: TaskQueueKey.uploadFile, jobType: .uploadFile).tracksByteProgress) + XCTAssertTrue(task("s", lane: TaskQueueKey.sync, jobType: .upload).tracksByteProgress) + XCTAssertFalse(task("s", lane: TaskQueueKey.sync, jobType: .update).tracksByteProgress) + XCTAssertFalse(task("j", lane: "jellyfin").tracksByteProgress) + } + + /// Rows and `.uploadProgressUpdated` must agree on the key: a real uuid, else the path. + func testProgressKey_matchesTheProgressNotificationKey() { + let uuid = UUID().uuidString + XCTAssertEqual(task("a", lane: TaskQueueKey.sync, uuid: uuid, relativePath: "A.m4b").progressKey, uuid) + XCTAssertEqual( + task("b", lane: TaskQueueKey.sync, uuid: Constants.uuidPlaceholder, relativePath: "B.m4b").progressKey, + "B.m4b" + ) + } +} diff --git a/BookPlayerTests/Services/SyncTasksStorageTests.swift b/BookPlayerTests/Services/SyncTasksStorageTests.swift index e5db123f0..e8718bd05 100644 --- a/BookPlayerTests/Services/SyncTasksStorageTests.swift +++ b/BookPlayerTests/Services/SyncTasksStorageTests.swift @@ -48,32 +48,21 @@ final class SyncTasksRepositoryTests: XCTestCase { super.tearDown() } - /// Progress lookup must key on `uuid`, so a progress dictionary indexed by uuid - /// surfaces correctly on the returned SyncTaskReference. - func testGetAllTasks_progressKeyedByUuid_returnsProgressForTask() async throws { - let uuid = "item-uuid-1" + /// A stored task surfaces the uuid and path the row keys its progress on; with a real + /// uuid the key IS the uuid (a path-keyed progress update must not match it). + func testGetAllTasks_realUuid_progressKeyIsTheUuid() async throws { + let uuid = UUID().uuidString let relativePath = "Folder/Book.mp3" try await appendUploadTask(uuid: uuid, relativePath: relativePath) - let references = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [uuid: 0.42]) + let tasks = await repository.getAllTasks() - XCTAssertEqual(references.count, 1) - let reference = try XCTUnwrap(references.first) - XCTAssertEqual(reference.uuid, uuid) - XCTAssertEqual(reference.progress, 0.42, accuracy: 0.0001) - } - - /// Regression guard: with a real uuid, a progress dict keyed by relativePath must NOT resolve. - func testGetAllTasks_progressKeyedByRelativePath_returnsZero() async throws { - let uuid = "item-uuid-2" - let relativePath = "Folder/Other.mp3" - try await appendUploadTask(uuid: uuid, relativePath: relativePath) - - let references = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [relativePath: 0.75]) - - XCTAssertEqual(references.count, 1) - let reference = try XCTUnwrap(references.first) - XCTAssertEqual(reference.progress, 0.0) + XCTAssertEqual(tasks.count, 1) + let task = try XCTUnwrap(tasks.first) + XCTAssertEqual(task.uuid, uuid) + XCTAssertEqual(task.relativePath, relativePath) + XCTAssertEqual(task.progressKey, uuid) + XCTAssertNotEqual(task.progressKey, relativePath) } /// Legacy-migrated task references share the same placeholder uuid; the progress key @@ -82,11 +71,10 @@ final class SyncTasksRepositoryTests: XCTestCase { let relativePath = "Folder/Legacy.mp3" try await appendUploadTask(uuid: Constants.legacyUuidPlaceholder, relativePath: relativePath) - let references = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [relativePath: 0.6]) + let tasks = await repository.getAllTasks() - XCTAssertEqual(references.count, 1) - let reference = try XCTUnwrap(references.first) - XCTAssertEqual(reference.progress, 0.6, accuracy: 0.0001) + XCTAssertEqual(tasks.count, 1) + XCTAssertEqual(tasks.first?.progressKey, relativePath) } /// Same fallback applies to the local placeholder used as the schema default. @@ -94,11 +82,10 @@ final class SyncTasksRepositoryTests: XCTestCase { let relativePath = "Folder/Local.mp3" try await appendUploadTask(uuid: Constants.uuidPlaceholder, relativePath: relativePath) - let references = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [relativePath: 0.33]) + let tasks = await repository.getAllTasks() - XCTAssertEqual(references.count, 1) - let reference = try XCTUnwrap(references.first) - XCTAssertEqual(reference.progress, 0.33, accuracy: 0.0001) + XCTAssertEqual(tasks.count, 1) + XCTAssertEqual(tasks.first?.progressKey, relativePath) } /// `matchUuid` conflicts must rewrite both the task reference and the underlying task @@ -111,7 +98,7 @@ final class SyncTasksRepositoryTests: XCTestCase { try await repository.applyMatchUuidConflicts([ItemConflict(key: oldUuid, uuid: newUuid)]) - let refs = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) + let refs = await repository.getAllTasks() XCTAssertEqual(refs.count, 1) XCTAssertEqual(refs.first?.uuid, newUuid) @@ -127,7 +114,7 @@ final class SyncTasksRepositoryTests: XCTestCase { try await repository.applyMatchUuidConflicts([ItemConflict(key: "ghost-uuid", uuid: "never")]) - let refs = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) + let refs = await repository.getAllTasks() XCTAssertEqual(refs.first?.uuid, uuid) } @@ -141,7 +128,7 @@ final class SyncTasksRepositoryTests: XCTestCase { // and introduces a new key (should be added). try await appendMatchUuidTask(uuids: ["folder/A.mp3": "uuid-A-prime", "folder/C.mp3": "uuid-C"]) - let refs = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) + let refs = await repository.getAllTasks() XCTAssertEqual(refs.filter { $0.jobType == .matchUuid }.count, 1) let tasks = await repository.getAllTasksWithParams(in: TaskQueueKey.sync) @@ -157,7 +144,7 @@ final class SyncTasksRepositoryTests: XCTestCase { func testAppendMatchUuidTask_noExisting_createsNewTask() async throws { try await appendMatchUuidTask(uuids: ["folder/A.mp3": "uuid-A"]) - let refs = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) + let refs = await repository.getAllTasks() XCTAssertEqual(refs.count, 1) XCTAssertEqual(refs.first?.jobType, .matchUuid) } @@ -176,7 +163,7 @@ final class SyncTasksRepositoryTests: XCTestCase { // A second schedule must bypass the in-flight task and create a fresh one. try await appendMatchUuidTask(uuids: ["folder/B.mp3": "uuid-B"]) - let refsAfterSecond = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) + let refsAfterSecond = await repository.getAllTasks() let matchRefsAfterSecond = refsAfterSecond.filter { $0.jobType == .matchUuid } XCTAssertEqual(matchRefsAfterSecond.count, 2) @@ -197,8 +184,8 @@ final class SyncTasksRepositoryTests: XCTestCase { XCTAssertEqual(queuedUuids, ["folder/B.mp3": "uuid-B", "folder/C.mp3": "uuid-C"]) } - /// Sync tasks and concurrent (provider) tasks share the container but must remain - /// isolated per queue: counts, listings, and getNextTask never cross queue keys. + /// Sync tasks and concurrent (provider) tasks share the container: the display list spans + /// every lane in stored order, while counts and getNextTask stay per queue key. func testQueueIsolation_syncAndProviderQueues() async throws { try await appendUploadTask(uuid: "sync-uuid", relativePath: "Folder/Book.mp3") try await repository.storeTask(parameters: [ @@ -216,14 +203,14 @@ final class SyncTasksRepositoryTests: XCTestCase { let providerCount = await repository.getTasksCount(in: "jellyfin") XCTAssertEqual(providerCount, 1) - let syncTasks = await repository.getAllTasks(in: TaskQueueKey.sync, progress: [:]) - XCTAssertEqual(syncTasks.map(\.jobType), [.upload]) - - let nonSyncTasks = await repository.getAllTasks() - XCTAssertEqual(nonSyncTasks.map(\.jobType), [.externalUpdate]) + let allTasks = await repository.getAllTasks() + XCTAssertEqual(allTasks.map(\.jobType), [.upload, .externalUpdate]) + XCTAssertEqual(allTasks.map(\.queueKey), [TaskQueueKey.sync, "jellyfin"]) let nextProviderTask = await repository.getNextTask(for: "jellyfin") XCTAssertEqual(nextProviderTask?.jobType, .externalUpdate) + let nextSyncTask = await repository.getNextTask(for: TaskQueueKey.sync) + XCTAssertEqual(nextSyncTask?.jobType, .upload) } /// Popping a task must delete both the reference and its payload model. @@ -240,28 +227,6 @@ final class SyncTasksRepositoryTests: XCTestCase { XCTAssertFalse(hasUpload) } - /// The sync queue is pinned in the summaries even when idle; other queues only - /// appear while they have pending tasks, and the sync queue always sorts first. - func testGetQueueSummaries_pinsSyncQueue() async throws { - let idleSummaries = await repository.getQueueSummaries() - XCTAssertEqual(idleSummaries.map(\.queueKey), [TaskQueueKey.sync]) - XCTAssertEqual(idleSummaries.first?.count, 0) - - try await repository.storeTask(parameters: [ - "id": UUID().uuidString, - "jobType": SyncJobType.externalUpdate.rawValue, - "queueKey": "jellyfin", - "providerName": "jellyfin", - "providerId": "provider-item-1", - "currentTime": 10.0, - "percentCompleted": 5.0 - ]) - - let summaries = await repository.getQueueSummaries() - XCTAssertEqual(summaries.map(\.queueKey), [TaskQueueKey.sync, "jellyfin"]) - XCTAssertEqual(summaries.map(\.count), [0, 1]) - } - /// Clearing one queue must not touch the others. func testClearAll_inQueue_leavesOtherQueuesUntouched() async throws { try await appendUploadTask(uuid: "sync-uuid", relativePath: "Folder/Book.mp3") diff --git a/CLAUDE.md b/CLAUDE.md index 3f8e44ebe..727d8aabb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -246,7 +246,8 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi across actors or threads. Execution lives in `ConcurrenceService` (OperationQueue): the `sync` queue key runs BookPlayer-server jobs serially; provider-named keys (externalUpdate pushes) and `uploadFile` run concurrently. **The engine is the single owner of queue counts:** `observeQueueCounts()` publishes one per-lane `QueueCounts` - snapshot (the Profile row shows its `total`; the Queued Tasks screen reads one lane at a time). + snapshot (the Profile row shows its `total`; the single Queued Tasks screen — one `DisclosureGroup` per lane, + sync first — reads `count(in:)` for its headers and lists every lane through `getOrderedQueuedJobs`). `SyncService.canSyncListContents` gates list refresh on the `sync` lane only (repository `getTasksCount(in:)`), and `AppDelegate.handleAppRefresh` waits on `laneDrained(TaskQueueKey.sync)` — S3 uploads and provider pushes never block a refresh or hold a background window open (pushes retry forever against an unreachable server). diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/ConcurrentSync/ConcurrenceService.swift index 95e42c49c..4aad23898 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/ConcurrentSync/ConcurrenceService.swift @@ -34,14 +34,9 @@ public protocol ConcurrenceServiceProtocol { /// shown in the UI — per lane via `count(in:)`, or `total`. func observeQueueCounts() -> AnyPublisher - func getAllQueuedJobs() async -> [ConcurrentSyncTask] - + /// Every queued task across all lanes, the in-flight ones first (display-level list) func getOrderedQueuedJobs(activeTaskIDs: Set) async -> [ConcurrentSyncTask] - /// Pending-task count per active queue; the sync queue is always listed first, - /// even when idle - func getQueueSummaries() async -> [QueueSummary] - func scheduleMetadataUpdate(params: [String: Any]) func scheduleFileUpload(params: [String: Any]) @@ -305,18 +300,10 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { operationQueue.addOperation(operation) } - public func getAllQueuedJobs() async -> [ConcurrentSyncTask] { - return await taskContainer.getAllTasks() - } - public func getOrderedQueuedJobs(activeTaskIDs: Set) async -> [ConcurrentSyncTask] { return await taskContainer.getOrderedTasks(activeTaskIDs: activeTaskIDs) } - public func getQueueSummaries() async -> [QueueSummary] { - return await taskContainer.getQueueSummaries() - } - private func createOperation(for task: ConcurrentSyncTask) -> AsyncOperation? { switch task.jobType { case .externalUpdate: diff --git a/Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift b/Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift index e1615fca0..d7f9202e9 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift +++ b/Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift @@ -6,19 +6,6 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // -/// Pending-task count for one queue key -public struct QueueSummary: Identifiable { - public let queueKey: String - public let count: Int - - public var id: String { queueKey } - - public init(queueKey: String, count: Int) { - self.queueKey = queueKey - self.count = count - } -} - public struct ConcurrentSyncTask: Identifiable { public let id: String public let queueKey: String @@ -42,4 +29,9 @@ public struct ConcurrentSyncTask: Identifiable { self.uuid = uuid self.relativePath = relativePath } + + /// The key `.uploadProgressUpdated` carries for this item — what a row matches on + public var progressKey: String { + SyncProgressKey.resolve(uuid: uuid, relativePath: relativePath) + } } diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift index 5b9f5693b..13613cefe 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift +++ b/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift @@ -19,13 +19,10 @@ public protocol ConcurrentTasksRepositoryProtocol: ModelActor { func getAllQueueKeys() -> [String] - /// Pending-task count per active queue, with the sync queue always listed first - /// (even when idle), followed by the rest alphabetically - func getQueueSummaries() -> [QueueSummary] - func storeTask(parameters: [String: Any]) async throws - /// All queued tasks outside the serial sync queue + /// Every queued task across all lanes in stored order — a display-level list, so + /// `parameters` is left empty (workers reload payloads through `getNextTask`) func getAllTasks() async -> [ConcurrentSyncTask] // Set (not the @MainActor TaskProgressTracker map): only the ids cross the actor @@ -34,8 +31,6 @@ public protocol ConcurrentTasksRepositoryProtocol: ModelActor { func getTasksCount(in queueKey: String) -> Int - func getAllTasks(in queueKey: String, progress: [String: Double]) -> [SyncTaskReference] - func getAllTasksWithParams(in queueKey: String) -> [SyncTask] func hasUploadTask(for relativePath: String) -> Bool @@ -163,24 +158,6 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog return fetchGlobalQueueModel()?.allQueueKeys ?? [] } - public func getQueueSummaries() -> [QueueSummary] { - var countsByQueue = Dictionary(grouping: fetchGlobalQueueModel()?.tasks ?? [], by: { $0.queueKey }) - .mapValues(\.count) - - /// The sync queue is always listed, even when idle - if countsByQueue[TaskQueueKey.sync] == nil { - countsByQueue[TaskQueueKey.sync] = 0 - } - - return countsByQueue - .map { QueueSummary(queueKey: $0.key, count: $0.value) } - .sorted { lhs, rhs in - if lhs.queueKey == TaskQueueKey.sync { return true } - if rhs.queueKey == TaskQueueKey.sync { return false } - return lhs.queueKey < rhs.queueKey - } - } - public func storeTask(parameters: [String: Any]) async throws { guard let taskId = parameters["id"] as? String, @@ -324,18 +301,16 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog public func getAllTasks() async -> [ConcurrentSyncTask] { guard let tasksContainer = fetchGlobalQueueModel() else { return [] } - return tasksContainer.orderedTasks - .filter { $0.queueKey != TaskQueueKey.sync } - .map { task in - ConcurrentSyncTask( - id: task.taskID, - queueKey: task.queueKey, - jobType: task.jobType, - parameters: [:], - uuid: task.uuid, - relativePath: task.relativePath - ) - } + return tasksContainer.orderedTasks.map { task in + ConcurrentSyncTask( + id: task.taskID, + queueKey: task.queueKey, + jobType: task.jobType, + parameters: [:], + uuid: task.uuid, + relativePath: task.relativePath + ) + } } public func getOrderedTasks(activeTaskIDs: Set) async -> [ConcurrentSyncTask] { @@ -360,21 +335,6 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog return tasksContainer.tasks.filter { $0.queueKey == queueKey }.count } - public func getAllTasks(in queueKey: String, progress: [String: Double]) -> [SyncTaskReference] { - guard let tasksContainer = fetchGlobalQueueModel() else { return [] } - - return tasksContainer.orderedTasks(for: queueKey).map { task in - let key = SyncProgressKey.resolve(uuid: task.uuid, relativePath: task.relativePath) - return SyncTaskReference( - id: task.taskID, - uuid: task.uuid, - relativePath: task.relativePath, - jobType: task.jobType, - progress: progress[key] ?? 0.0 - ) - } - } - public func getAllTasksWithParams(in queueKey: String) -> [SyncTask] { guard let tasksContainer = fetchGlobalQueueModel() else { return [] } diff --git a/Shared/Services/Sync/Model/SyncTask.swift b/Shared/Services/Sync/Model/SyncTask.swift index f2775836b..eba1c756e 100644 --- a/Shared/Services/Sync/Model/SyncTask.swift +++ b/Shared/Services/Sync/Model/SyncTask.swift @@ -37,26 +37,6 @@ public struct SyncTask: Identifiable { } } -public struct SyncTaskReference: Identifiable { - public let id: String - public let uuid: String - public let relativePath: String - public let jobType: SyncJobType - public let progress: Double - - public init(id: String, uuid: String, relativePath: String, jobType: SyncJobType, progress: Double) { - self.id = id - self.uuid = uuid - self.relativePath = relativePath - self.jobType = jobType - self.progress = progress - } - - public var progressKey: String { - SyncProgressKey.resolve(uuid: uuid, relativePath: relativePath) - } -} - /// Information about the last sync error for debugging purposes public struct SyncErrorInfo { public let taskId: String diff --git a/Shared/Services/Sync/SyncJobScheduler.swift b/Shared/Services/Sync/SyncJobScheduler.swift index e7b9ab260..8522a096c 100644 --- a/Shared/Services/Sync/SyncJobScheduler.swift +++ b/Shared/Services/Sync/SyncJobScheduler.swift @@ -6,7 +6,6 @@ // Copyright © 2022 BookPlayer LLC. All rights reserved. // -import Combine import Foundation public protocol JobSchedulerProtocol { @@ -34,8 +33,6 @@ public protocol JobSchedulerProtocol { func scheduleRenameFolderJob(with relativePath: String, name: String, for uuid: String) async /// Upload current cached artwork func scheduleArtworkUpload(with relativePath: String, for uuid: String) async - /// Get all queued jobs - func getAllQueuedJobs() async -> [SyncTaskReference] /// Get all queued jobs with full parameters func getAllQueuedJobsWithParams() async -> [SyncTask] /// Cancel all stored jobs across every queue @@ -57,28 +54,8 @@ public protocol JobSchedulerProtocol { public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { let tasksRepository: ConcurrentTasksRepositoryProtocol - /// Reference for observer - private var disposeBag = Set() - private var tasksProgress: [String: Double] = [:] - public init(tasksRepository: ConcurrentTasksRepositoryProtocol) { self.tasksRepository = tasksRepository - bindObservers() - } - - func bindObservers() { - NotificationCenter.default.publisher(for: .uploadProgressUpdated) - .receive(on: DispatchQueue.main) - .sink { [weak self] notification in - guard - let uuid = notification.userInfo?["uuid"] as? String, - let relativePath = notification.userInfo?["relativePath"] as? String, - let progress = notification.userInfo?["progress"] as? Double - else { return } - let key = SyncProgressKey.resolve(uuid: uuid, relativePath: relativePath) - self?.updateProgress(for: key, value: progress) - } - .store(in: &disposeBag) } private func createHardLink(for item: SyncableItem) { @@ -294,11 +271,6 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { await persistTask(parameters: params) } - public func getAllQueuedJobs() async -> [SyncTaskReference] { - let currentProgress = await MainActor.run { tasksProgress } - return await tasksRepository.getAllTasks(in: TaskQueueKey.sync, progress: currentProgress) - } - public func getAllQueuedJobsWithParams() async -> [SyncTask] { return await tasksRepository.getAllTasksWithParams(in: TaskQueueKey.sync) } @@ -312,9 +284,6 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { // goes through resetAllJobs(), which clears everything. try? await tasksRepository.clearAll(in: TaskQueueKey.sync) try? await tasksRepository.clearAll(in: TaskQueueKey.uploadFile) - await MainActor.run { - tasksProgress.removeAll() - } } } @@ -323,9 +292,6 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { // surviving uploadFile/externalUpdate tasks would run under the NEXT signed-in // account, pushing the previous user's items with the new account's token. try? await tasksRepository.clearAll() - await MainActor.run { - tasksProgress.removeAll() - } } public func queuedJobsCount() async -> Int { @@ -346,11 +312,4 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { public func hasUploadTask(for relativePath: String) async -> Bool { return await tasksRepository.hasUploadTask(for: relativePath) } - - private func updateProgress( - for key: String, - value: Double - ) { - tasksProgress[key] = value - } } diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index d57590c40..4d961ba7e 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -88,8 +88,6 @@ public protocol SyncServiceProtocol { /// Delete an external resource on the server func scheduleExternalResourceDeletion(providerName: String, providerId: String, relativePath: String, uuid: String) - /// Get all queued jobs - func getAllQueuedJobs() async -> [SyncTaskReference] /// Get all queued jobs with full parameters for debugging func getAllQueuedJobsWithParams() async -> [SyncTask] /// Get last sync error information for debugging @@ -603,10 +601,6 @@ public final class SyncService: SyncServiceProtocol, BPLogger { } } - public func getAllQueuedJobs() async -> [SyncTaskReference] { - return await jobManager.getAllQueuedJobs() - } - public func getAllQueuedJobsWithParams() async -> [SyncTask] { return await jobManager.getAllQueuedJobsWithParams() } From cb91ec893ee36a432bb7cb1470e9aac004dcbb79 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 13 Sep 2026 19:35:03 -0500 Subject: [PATCH 119/172] refactor: rename the concurrent-sync family to SyncQueue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The engine runs every sync lane (BookPlayer server, S3 uploads, media-server progress pushes), so its name now says what it is. Mechanical, word-boundary rename with no behavior change: ConcurrenceService(+Protocol) → SyncQueueService(+Protocol) concurrenceService (env key, props) → syncQueueService ConcurrentTasksRepository(+Protocol) → SyncQueueRepository(+Protocol) ConcurrentSyncTask → QueuedSyncTask ConcurrentTasksContainer (@Model) → SyncQueueContainer ConcurrentTaskReferenceModel (@Model)→ QueuedTaskReferenceModel ConcurrentUploadTaskModel (@Model) → UploadFileTaskModel ConcurrentTaskProgressMonitor → SyncQueueProgressMonitor ConcurrentSyncTests → SyncQueueTests updateConcurrentService / makeConcurrenceService → updateAccessPolicy / makeSyncQueueService Shared/Services/ConcurrentSync/ → Shared/Services/SyncQueue/ SchemaV3 is unshipped, so the @Model renames stay inside V3 (no new schema version); a dev store written before this commit is unknown to the migration plan and gets set aside on first launch. Stale file headers fixed. CLAUDE.md updated in the same commit. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 62 +++++++++---------- BookPlayer/AppDelegate.swift | 4 +- BookPlayer/Coordinators/MainCoordinator.swift | 6 +- .../Library/ItemList/Views/BookView.swift | 6 +- .../Profile/ProfileSyncTasksSectionView.swift | 14 ++--- .../Profile/Views/QueuedTaskDisplay.swift | 8 +-- .../Profile/Views/QueuedTasksView.swift | 20 +++--- BookPlayer/Utils/AppServices.swift | 16 ++--- BookPlayer/Utils/CoreServices.swift | 2 +- .../Extensions/Environment+BookPlayer.swift | 2 +- BookPlayerTests/QueuedTaskDisplayTests.swift | 6 +- ...ntSyncTests.swift => SyncQueueTests.swift} | 40 ++++++------ .../Services/SyncTasksStorageTests.swift | 10 +-- BookPlayerWatch/CoreServices.swift | 8 +-- BookPlayerWatch/ExtensionDelegate.swift | 10 +-- CLAUDE.md | 16 ++--- .../Sync/LibraryItemSyncOperation.swift | 6 +- Shared/Services/Sync/SyncJobScheduler.swift | 6 +- Shared/Services/Sync/SyncService.swift | 12 ++-- .../AsyncOperation.swift | 2 +- .../ExternalUpdateProgressOperation.swift | 0 .../FileUploadOperation.swift | 0 .../QueueCounts.swift | 0 .../QueuedSyncTask.swift} | 4 +- .../SyncQueueProgressMonitor.swift} | 6 +- .../SyncQueueRepository.swift} | 42 ++++++------- .../SyncQueueService.swift} | 36 +++++------ Shared/SwiftData/MigrationPlan.swift | 8 +-- .../Models/SchemaV3SyncTasksModels.swift | 22 +++---- Shared/SwiftData/Models/SyncTasksModels.swift | 6 +- .../SwiftDataModels+Extensions.swift | 4 +- Shared/SwiftData/TasksDataManager.swift | 28 ++++----- 32 files changed, 206 insertions(+), 206 deletions(-) rename BookPlayerTests/Services/{ConcurrentSyncTests.swift => SyncQueueTests.swift} (93%) rename Shared/Services/{ConcurrentSync => SyncQueue}/AsyncOperation.swift (96%) rename Shared/Services/{ConcurrentSync => SyncQueue}/ExternalUpdateProgressOperation.swift (100%) rename Shared/Services/{ConcurrentSync => SyncQueue}/FileUploadOperation.swift (100%) rename Shared/Services/{ConcurrentSync => SyncQueue}/QueueCounts.swift (100%) rename Shared/Services/{ConcurrentSync/ConcurrentSyncTask.swift => SyncQueue/QueuedSyncTask.swift} (91%) rename Shared/Services/{ConcurrentSync/ConcurrentTaskProgressMonitor.swift => SyncQueue/SyncQueueProgressMonitor.swift} (92%) rename Shared/Services/{ConcurrentSync/ConcurrentTasksRepository.swift => SyncQueue/SyncQueueRepository.swift} (92%) rename Shared/Services/{ConcurrentSync/ConcurrenceService.swift => SyncQueue/SyncQueueService.swift} (95%) diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index f7daa5fb4..f6ca78e32 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -689,17 +689,17 @@ 9911FBA92F71BD3000DC9A2B /* JellyfinConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD8A542CEE8849000A4B4B /* JellyfinConnectionService.swift */; }; 9911FBAC2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */; }; 9911FBAD2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */; }; - 9911FBAF2F71D03800DC9A2B /* ConcurrenceService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */; }; - 9911FBB02F71D03800DC9A2B /* ConcurrenceService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */; }; - 9911FBB22F71E54C00DC9A2B /* ConcurrentTasksRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */; }; - 9911FBB32F71E54C00DC9A2B /* ConcurrentTasksRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */; }; + 9911FBAF2F71D03800DC9A2B /* SyncQueueService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAE2F71D03100DC9A2B /* SyncQueueService.swift */; }; + 9911FBB02F71D03800DC9A2B /* SyncQueueService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBAE2F71D03100DC9A2B /* SyncQueueService.swift */; }; + 9911FBB22F71E54C00DC9A2B /* SyncQueueRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB12F71E54600DC9A2B /* SyncQueueRepository.swift */; }; + 9911FBB32F71E54C00DC9A2B /* SyncQueueRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB12F71E54600DC9A2B /* SyncQueueRepository.swift */; }; 9911FBB52F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */; }; 9911FBB62F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */; }; - 9911FBB82F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */; }; - 9911FBB92F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */; }; - 9911FBBE2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */; }; + 9911FBB82F72F46900DC9A2B /* QueuedSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* QueuedSyncTask.swift */; }; + 9911FBB92F72F46900DC9A2B /* QueuedSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* QueuedSyncTask.swift */; }; + 9911FBBE2F74527800DC9A2B /* SyncQueueProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */; }; F99B9D63217ABDAFED95696A /* QueueCounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */; }; - 9911FBBF2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */; }; + 9911FBBF2F74527800DC9A2B /* SyncQueueProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */; }; 7AA06DC64EDBA7F10753CF4C /* QueueCounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */; }; 9911FBC42F76122400DC9A2B /* FileUploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */; }; 9911FBC52F76122400DC9A2B /* FileUploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */; }; @@ -962,7 +962,7 @@ C86098383F7FC099EED24AF7 /* IntegrationQuickConnectViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056B7A76F1A44CEC30562382 /* IntegrationQuickConnectViews.swift */; }; C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */; }; - CB3844DD8C695EAD32A4A811 /* ConcurrentSyncTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF75FEB4DEC37DBE232CD140 /* ConcurrentSyncTests.swift */; }; + CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */; }; CCC7E1CC127610C3687B8A50 /* SortPreferencesResolving.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */; }; D080B0A77D9844C3A0737170 /* IntegrationConnectionFormViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FB91B577BC77F45EDB2AAAA /* IntegrationConnectionFormViewModel.swift */; }; D2B95B92F8F84F2FA4B41BF6 /* BookEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33D03D266EF46B5B02FBF40 /* BookEntity.swift */; }; @@ -1773,11 +1773,11 @@ 990442112F88B0FC007E2A44 /* SyncInvitationCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncInvitationCard.swift; sourceTree = ""; }; 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionPillView.swift; sourceTree = ""; }; 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncOperation.swift; sourceTree = ""; }; - 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrenceService.swift; sourceTree = ""; }; - 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTasksRepository.swift; sourceTree = ""; }; + 9911FBAE2F71D03100DC9A2B /* SyncQueueService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueService.swift; sourceTree = ""; }; + 9911FBB12F71E54600DC9A2B /* SyncQueueRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueRepository.swift; sourceTree = ""; }; 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalUpdateProgressOperation.swift; sourceTree = ""; }; - 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentSyncTask.swift; sourceTree = ""; }; - 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentTaskProgressMonitor.swift; sourceTree = ""; }; + 9911FBB72F72F46200DC9A2B /* QueuedSyncTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedSyncTask.swift; sourceTree = ""; }; + 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueProgressMonitor.swift; sourceTree = ""; }; 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueueCounts.swift; sourceTree = ""; }; 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUploadOperation.swift; sourceTree = ""; }; 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncableExternalResource.swift; sourceTree = ""; }; @@ -1984,7 +1984,7 @@ F78387C7EDD9105363712F34 /* VideoFullscreenViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoFullscreenViewController.swift; sourceTree = ""; }; FEEDBABE0000000000000001 /* SharedWidgetStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStore.swift; sourceTree = ""; }; FEEDBABE0000000000000004 /* SharedWidgetStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStoreTests.swift; sourceTree = ""; }; - FF75FEB4DEC37DBE232CD140 /* ConcurrentSyncTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConcurrentSyncTests.swift; sourceTree = ""; }; + FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncQueueTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -2848,7 +2848,7 @@ 9FD8FE4C286566FF00EB2C3D /* Sync */, 64957AF0989CEBEEEC40E4BB /* Preferences */, FEEDBABE0000000000000001 /* SharedWidgetStore.swift */, - 9911FBAA2F71CD1600DC9A2B /* ConcurrentSync */, + 9911FBAA2F71CD1600DC9A2B /* SyncQueue */, D95DF238A734AE606D62DADB /* ExternalProgress */, ); path = Services; @@ -3366,7 +3366,7 @@ EC40E520F644AFA46DAD76B0 /* AudioMetadataServiceTests.swift */, A11C418B028982CF431C589F /* LibraryServiceReloadChaptersTests.swift */, 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */, - FF75FEB4DEC37DBE232CD140 /* ConcurrentSyncTests.swift */, + FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */, ); path = Services; sourceTree = ""; @@ -3427,19 +3427,19 @@ path = ExternalProgress; sourceTree = ""; }; - 9911FBAA2F71CD1600DC9A2B /* ConcurrentSync */ = { + 9911FBAA2F71CD1600DC9A2B /* SyncQueue */ = { isa = PBXGroup; children = ( - 9911FBBD2F74526F00DC9A2B /* ConcurrentTaskProgressMonitor.swift */, + 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */, 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */, - 9911FBB72F72F46200DC9A2B /* ConcurrentSyncTask.swift */, - 9911FBB12F71E54600DC9A2B /* ConcurrentTasksRepository.swift */, - 9911FBAE2F71D03100DC9A2B /* ConcurrenceService.swift */, + 9911FBB72F72F46200DC9A2B /* QueuedSyncTask.swift */, + 9911FBB12F71E54600DC9A2B /* SyncQueueRepository.swift */, + 9911FBAE2F71D03100DC9A2B /* SyncQueueService.swift */, 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */, 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */, 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */, ); - path = ConcurrentSync; + path = SyncQueue; sourceTree = ""; }; 992D6E112FA98AEF0091849F /* AudiobookShelf */ = { @@ -4730,7 +4730,7 @@ 63E1FF912E6C8C2000F2E003 /* SyncJobType.swift in Sources */, 9FC1E45D2814E6A500522FA8 /* NetworkProvider.swift in Sources */, 9FC1E4602814F66F00522FA8 /* AccountAPI.swift in Sources */, - 9911FBBF2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */, + 9911FBBF2F74527800DC9A2B /* SyncQueueProgressMonitor.swift in Sources */, 7AA06DC64EDBA7F10753CF4C /* QueueCounts.swift in Sources */, 9FC1E4792816001400522FA8 /* KeychainService.swift in Sources */, 99D995902F71AB6800BAF216 /* JellyfinLibraryItem.swift in Sources */, @@ -4742,12 +4742,12 @@ 9FBDBC7E287940D900D315A2 /* ContentsResponse.swift in Sources */, 4140EA7C227289C70009F794 /* LibraryItem+CoreDataClass.swift in Sources */, 63C6C3122B54F16800FFE0D8 /* LibraryItemSyncOperation.swift in Sources */, - 9911FBAF2F71D03800DC9A2B /* ConcurrenceService.swift in Sources */, + 9911FBAF2F71D03800DC9A2B /* SyncQueueService.swift in Sources */, 992D6E1A2FA98C8F0091849F /* AudiobookShelfLibraryLevelData.swift in Sources */, 638352CE2E67F327009EE79E /* TasksDataManager.swift in Sources */, 638352D02E67F327009EE79E /* SyncTasksModels.swift in Sources */, 638352D12E67F327009EE79E /* SwiftDataModels+Extensions.swift in Sources */, - 9911FBB82F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */, + 9911FBB82F72F46900DC9A2B /* QueuedSyncTask.swift in Sources */, 4140EA74227289AE0009F794 /* Theme+CoreDataClass.swift in Sources */, 4140EA6E227289960009F794 /* DeleteMode.swift in Sources */, 9F6BC86727E6D03E002CF2A6 /* WatchApplicationContext.swift in Sources */, @@ -4776,7 +4776,7 @@ 996D4CD42F98A50C00FC3B57 /* IntegrationLibraryItemProtocol.swift in Sources */, 4124AB2225DFE1A60007C839 /* CoreDataStack.swift in Sources */, 9F7B64722803216100895ECC /* Account+CoreDataProperties.swift in Sources */, - 9911FBB22F71E54C00DC9A2B /* ConcurrentTasksRepository.swift in Sources */, + 9911FBB22F71E54C00DC9A2B /* SyncQueueRepository.swift in Sources */, 9F7B64752803217400895ECC /* Account+CoreDataClass.swift in Sources */, 9FBF33ED29F6293C00501639 /* SimpleBookmark.swift in Sources */, 639AC98B2AD9F2840053AFC6 /* BPTaskDownloadDelegate.swift in Sources */, @@ -5281,7 +5281,7 @@ E101E3603ACF4DB50AA0037B /* JellyfinQuickConnectTests.swift in Sources */, 5A9506FC8DAB858289E0EF89 /* IntegrationServerAddressTests.swift in Sources */, 3F058A74415A3AF6C17DA8F4 /* IntegrationHostResolverTests.swift in Sources */, - CB3844DD8C695EAD32A4A811 /* ConcurrentSyncTests.swift in Sources */, + CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5290,11 +5290,11 @@ buildActionMask = 2147483647; files = ( 996D4CC52F98A25100FC3B57 /* MappingModel_v10_to_v11.xcmappingmodel in Sources */, - 9911FBBE2F74527800DC9A2B /* ConcurrentTaskProgressMonitor.swift in Sources */, + 9911FBBE2F74527800DC9A2B /* SyncQueueProgressMonitor.swift in Sources */, F99B9D63217ABDAFED95696A /* QueueCounts.swift in Sources */, 9FC1E46C2815A8CA00522FA8 /* LibraryAPI.swift in Sources */, 9FAFC9F42995BB5C00FD531E /* RemoteFileURLResponse.swift in Sources */, - 9911FBB92F72F46900DC9A2B /* ConcurrentSyncTask.swift in Sources */, + 9911FBB92F72F46900DC9A2B /* QueuedSyncTask.swift in Sources */, 992D6E172FA98C5C0091849F /* AudiobookShelfLibraryItem.swift in Sources */, 4124AB2125DFE1A60007C839 /* CoreDataStack.swift in Sources */, 41A1B11F226F88C500EA0400 /* Chapter+CoreDataClass.swift in Sources */, @@ -5406,7 +5406,7 @@ 992D6E1D2FA98E1A0091849F /* AudiobookShelfAudiobookDetailsData.swift in Sources */, 639AC9892AD9F1D50053AFC6 /* BPDownloadURLSession.swift in Sources */, 9F7B64742803217400895ECC /* Account+CoreDataClass.swift in Sources */, - 9911FBB02F71D03800DC9A2B /* ConcurrenceService.swift in Sources */, + 9911FBB02F71D03800DC9A2B /* SyncQueueService.swift in Sources */, 63E1FF922E6C8C2000F2E003 /* SyncJobType.swift in Sources */, 99F3C20A2F62285800AC91A2 /* ApiResponse.swift in Sources */, 99D995872F719E7600BAF216 /* JellyfinConnectionService.swift in Sources */, @@ -5421,7 +5421,7 @@ 41A1B12A226F88C500EA0400 /* Folder+CoreDataProperties.swift in Sources */, 9911FBAD2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */, 99F3C1FE2F5FC2F200AC91A2 /* SchemaV1SyncTasksModels.swift in Sources */, - 9911FBB32F71E54C00DC9A2B /* ConcurrentTasksRepository.swift in Sources */, + 9911FBB32F71E54C00DC9A2B /* SyncQueueRepository.swift in Sources */, 3F66408A2E162ABF00356522 /* AudioMetadataService.swift in Sources */, 41EB07152752F17B00EFEE13 /* PlayableItem.swift in Sources */, 41A1B11E226F88C500EA0400 /* Theme+CoreDataProperties.swift in Sources */, diff --git a/BookPlayer/AppDelegate.swift b/BookPlayer/AppDelegate.swift index a9a8ae216..41dfce11b 100644 --- a/BookPlayer/AppDelegate.swift +++ b/BookPlayer/AppDelegate.swift @@ -451,13 +451,13 @@ extension AppDelegate { } func handleAppRefresh(task: BGAppRefreshTask) { - guard let concurrenceService = AppServices.shared.coreServices?.concurrenceService else { return } + guard let syncQueueService = AppServices.shared.coreServices?.syncQueueService else { return } // Sync lane only: metadata pushes are what the refresh window is for. Provider pushes // retry forever against an unreachable home server, and S3 uploads already run on a // background URLSession — neither should keep the process awake until expiration. let refreshOperation = RefreshTaskOperation( - queueDrained: concurrenceService.observeQueueCounts().laneDrained(TaskQueueKey.sync) + queueDrained: syncQueueService.observeQueueCounts().laneDrained(TaskQueueKey.sync) ) refreshOperation.completionBlock = { [weak self] in diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index d2ef3ebe9..4a84e3813 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -30,7 +30,7 @@ class MainCoordinator: NSObject { let watchConnectivityService: PhoneWatchConnectivityService let jellyfinConnectionService: JellyfinConnectionService let audiobookshelfConnectionService: AudiobookShelfConnectionService - let concurrenceService: ConcurrenceService + let syncQueueService: SyncQueueService let hardcoverService: HardcoverService let preferencesService: PreferencesSyncService @@ -60,7 +60,7 @@ class MainCoordinator: NSObject { playerLoaderService: coreServices.playerLoaderService, preferencesService: coreServices.preferencesService ) - self.concurrenceService = coreServices.concurrenceService + self.syncQueueService = coreServices.syncQueueService self.externalProgressService = coreServices.externalProgressService self.singleFileDownloadService = SingleFileDownloadService(networkClient: NetworkClient()) self.watchConnectivityService = coreServices.watchService @@ -112,7 +112,7 @@ class MainCoordinator: NSObject { .environment(\.playerLoaderService, playerLoaderService) .environment(\.playbackService, playbackService) .environment(\.preferencesService, preferencesService) - .environment(\.concurrenceService, concurrenceService) + .environment(\.syncQueueService, syncQueueService) .environment(\.externalProgressService, externalProgressService) ) vc.modalPresentationStyle = .fullScreen diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index 299b7772b..6f9a086d1 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -115,8 +115,8 @@ struct BookView: View { let accountService = AccountService() accountService.setup(dataManager: dataManager) let tasksDataManager = TasksDataManager() - let concurrenceService = ConcurrenceService() - concurrenceService.setup( + let syncQueueService = SyncQueueService() + syncQueueService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, tasksDataManager: tasksDataManager, @@ -127,7 +127,7 @@ struct BookView: View { isActive: true, libraryService: libraryService, accountService: accountService, - concurrenceService: concurrenceService + syncQueueService: syncQueueService ) return syncService diff --git a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift index 9f31b8dc9..1f9112ec5 100644 --- a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift @@ -19,7 +19,7 @@ struct ProfileSyncTasksSectionView: View { String(format: "queued_sync_tasks_title".localized, queuedCount) } - @Environment(\.concurrenceService) private var concurrenceService + @Environment(\.syncQueueService) private var syncQueueService @EnvironmentObject private var theme: ThemeViewModel var body: some View { @@ -33,7 +33,7 @@ struct ProfileSyncTasksSectionView: View { .foregroundStyle(theme.secondaryColor) } } - .onReceive(concurrenceService.observeQueueCounts()) { counts in + .onReceive(syncQueueService.observeQueueCounts()) { counts in guard queuedCount != counts.total else { return } queuedCount = counts.total @@ -94,15 +94,15 @@ struct ProfileSyncTasksSectionView: View { // Environment defaults are un-setup() placeholders whose count methods trap (see // CLAUDE.md's DI section) — previews must construct + setup() + inject. #Preview { - @Previewable var concurrenceService: ConcurrenceService = { + @Previewable var syncQueueService: SyncQueueService = { let dataManager = DataManager(coreDataStack: CoreDataStack(testPath: "")) let audioMetadataService = AudioMetadataService() let libraryService = LibraryService() libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) let accountService = AccountService() accountService.setup(dataManager: dataManager) - let concurrenceService = ConcurrenceService() - concurrenceService.setup( + let syncQueueService = SyncQueueService() + syncQueueService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, tasksDataManager: TasksDataManager(), @@ -110,10 +110,10 @@ struct ProfileSyncTasksSectionView: View { dataManager: dataManager ) - return concurrenceService + return syncQueueService }() ProfileSyncTasksSectionView() .environmentObject(ThemeViewModel()) - .environment(\.concurrenceService, concurrenceService) + .environment(\.syncQueueService, syncQueueService) } diff --git a/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift b/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift index 97751104e..0079c2364 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift @@ -36,17 +36,17 @@ enum QueueDisplay { /// One collapsible lane on the Queued Tasks screen struct QueuedTaskSection: Identifiable { let queueKey: String - let tasks: [ConcurrentSyncTask] + let tasks: [QueuedSyncTask] var id: String { queueKey } } -extension Array where Element == ConcurrentSyncTask { +extension Array where Element == QueuedSyncTask { /// Lanes in display order — the sync lane first, then alphabetically — each keeping the /// engine's order (active tasks first) for its own rows. A drained lane has no section. func groupedByLane() -> [QueuedTaskSection] { var laneOrder = [String]() - var tasksByLane = [String: [ConcurrentSyncTask]]() + var tasksByLane = [String: [QueuedSyncTask]]() for task in self { if tasksByLane[task.queueKey] == nil { laneOrder.append(task.queueKey) @@ -64,7 +64,7 @@ extension Array where Element == ConcurrentSyncTask { } } -extension ConcurrentSyncTask { +extension QueuedSyncTask { /// Sync-lane jobs name the item they touch (the library match names the whole library); /// file uploads and provider pushes describe the work instead. var displayTitle: String { diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index 2e7d908aa..d1dacee77 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -15,15 +15,15 @@ import SwiftUI struct QueuedTasksView: View { @AppStorage(Constants.UserDefaults.allowCellularData) private var allowsCellularData: Bool = false - @State private var tasks = [ConcurrentSyncTask]() + @State private var tasks = [QueuedSyncTask]() @State private var counts = QueueCounts() /// Stored inverted on purpose: a lane that appears while the screen is open starts expanded @State private var collapsedLanes = Set() @State private var showInfoAlert = false @State private var networkMonitor = NetworkMonitor() - var monitor = ConcurrentTaskProgressMonitor.shared + var monitor = SyncQueueProgressMonitor.shared - @Environment(\.concurrenceService) private var concurrenceService + @Environment(\.syncQueueService) private var syncQueueService @EnvironmentObject private var theme: ThemeViewModel private var sections: [QueuedTaskSection] { tasks.groupedByLane() } @@ -86,7 +86,7 @@ struct QueuedTasksView: View { } } // Replays the current snapshot on subscribe, so this is the initial load as well. - .onReceive(concurrenceService.observeQueueCounts()) { snapshot in + .onReceive(syncQueueService.observeQueueCounts()) { snapshot in counts = snapshot reloadTasks() } @@ -160,7 +160,7 @@ struct QueuedTasksView: View { func reloadTasks() { Task { @MainActor in - tasks = await concurrenceService.getOrderedQueuedJobs(activeTaskIDs: Set(monitor.activeTasks.keys)) + tasks = await syncQueueService.getOrderedQueuedJobs(activeTaskIDs: Set(monitor.activeTasks.keys)) } } } @@ -170,27 +170,27 @@ struct QueuedTasksView: View { // CLAUDE.md's DI section) — previews must construct + setup() + inject, same as // ProfileSyncTasksSectionView's preview. #Preview { - @Previewable var concurrenceService: ConcurrenceService = { + @Previewable var syncQueueService: SyncQueueService = { let dataManager = DataManager(coreDataStack: CoreDataStack(testPath: "")) let audioMetadataService = AudioMetadataService() let libraryService = LibraryService() libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) let accountService = AccountService() accountService.setup(dataManager: dataManager) - let concurrenceService = ConcurrenceService() - concurrenceService.setup( + let syncQueueService = SyncQueueService() + syncQueueService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, tasksDataManager: TasksDataManager(), networkClient: NetworkClient(), dataManager: dataManager ) - return concurrenceService + return syncQueueService }() NavigationStack { QueuedTasksView() } .environmentObject(ThemeViewModel()) - .environment(\.concurrenceService, concurrenceService) + .environment(\.syncQueueService, syncQueueService) } diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index 7e664f051..886c3cdce 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -85,7 +85,7 @@ final class AppServices: BPLogger { let audioMetadataService = makeAudioMetadataService() let libraryService = makeLibraryService(dataManager: dataManager, audioMetadataService: audioMetadataService) let tasksDataManager = TasksDataManager() - let concurrenceService = makeConcurrenceService( + let syncQueueService = makeSyncQueueService( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, tasksDataManager: tasksDataManager, @@ -94,7 +94,7 @@ final class AppServices: BPLogger { let syncService = makeSyncService( accountService: accountService, libraryService: libraryService, - concurrenceService: concurrenceService + syncQueueService: syncQueueService ) let playbackService = makePlaybackService(libraryService: libraryService) let playerManager = PlayerManager( @@ -141,7 +141,7 @@ final class AppServices: BPLogger { playerManager: playerManager, preferencesService: preferencesService, syncService: syncService, - concurrenceService: concurrenceService, + syncQueueService: syncQueueService, externalProgressService: externalProgressService, watchService: watchService ) @@ -244,25 +244,25 @@ final class AppServices: BPLogger { private func makeSyncService( accountService: AccountService, libraryService: LibraryService, - concurrenceService: ConcurrenceService + syncQueueService: SyncQueueService ) -> SyncService { let service = SyncService() service.setup( isActive: accountService.hasSyncEnabled(), libraryService: libraryService, accountService: accountService, - concurrenceService: concurrenceService + syncQueueService: syncQueueService ) return service } - private func makeConcurrenceService( + private func makeSyncQueueService( libraryService: LibraryService, getAccessLevel: @escaping () -> AccessLevel, tasksDataManager: TasksDataManager, dataManager: DataManager - ) -> ConcurrenceService { - let service = ConcurrenceService() + ) -> SyncQueueService { + let service = SyncQueueService() service.setup( libraryService: libraryService, getAccessLevel: getAccessLevel, diff --git a/BookPlayer/Utils/CoreServices.swift b/BookPlayer/Utils/CoreServices.swift index 412c638a5..ca52e1fe7 100644 --- a/BookPlayer/Utils/CoreServices.swift +++ b/BookPlayer/Utils/CoreServices.swift @@ -19,7 +19,7 @@ struct CoreServices { let playerManager: PlayerManager let preferencesService: PreferencesSyncService let syncService: SyncService - let concurrenceService: ConcurrenceService + let syncQueueService: SyncQueueService let externalProgressService: ExternalProgressService let watchService: PhoneWatchConnectivityService } diff --git a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift index b89567b73..67ad67368 100644 --- a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift +++ b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift @@ -15,7 +15,7 @@ extension EnvironmentValues { @Entry var syncService: SyncService = .init() @Entry var playerLoaderService: PlayerLoaderService = .init() @Entry var playbackService: PlaybackService = .init() - @Entry var concurrenceService: ConcurrenceService = .init() + @Entry var syncQueueService: SyncQueueService = .init() @Entry var externalProgressService: ExternalProgressService = .init() @Entry var jellyfinService: JellyfinConnectionService = .init() @Entry var audiobookshelfService: AudiobookShelfConnectionService = .init() diff --git a/BookPlayerTests/QueuedTaskDisplayTests.swift b/BookPlayerTests/QueuedTaskDisplayTests.swift index c6a26d4ec..074e0773b 100644 --- a/BookPlayerTests/QueuedTaskDisplayTests.swift +++ b/BookPlayerTests/QueuedTaskDisplayTests.swift @@ -19,8 +19,8 @@ final class QueuedTaskDisplayTests: XCTestCase { jobType: SyncJobType = .externalUpdate, uuid: String = "", relativePath: String = "" - ) -> ConcurrentSyncTask { - ConcurrentSyncTask( + ) -> QueuedSyncTask { + QueuedSyncTask( id: id, queueKey: lane, jobType: jobType, @@ -49,7 +49,7 @@ final class QueuedTaskDisplayTests: XCTestCase { } func testGroupedByLane_drainedLanesHaveNoSection() { - XCTAssertTrue([ConcurrentSyncTask]().groupedByLane().isEmpty) + XCTAssertTrue([QueuedSyncTask]().groupedByLane().isEmpty) XCTAssertEqual([task("j1", lane: "jellyfin")].groupedByLane().map(\.queueKey), ["jellyfin"]) } diff --git a/BookPlayerTests/Services/ConcurrentSyncTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift similarity index 93% rename from BookPlayerTests/Services/ConcurrentSyncTests.swift rename to BookPlayerTests/Services/SyncQueueTests.swift index bf7460a01..311c6ca7f 100644 --- a/BookPlayerTests/Services/ConcurrentSyncTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -1,5 +1,5 @@ // -// ConcurrentSyncTests.swift +// SyncQueueTests.swift // BookPlayerTests // // Copyright © 2026 BookPlayer LLC. All rights reserved. @@ -13,12 +13,12 @@ import XCTest @testable import BookPlayer @testable import BookPlayerKit -/// First dedicated coverage for the unified concurrent-sync engine: task persistence +/// First dedicated coverage for the sync-queue engine: task persistence /// round-trips (notably `hostId`, whose omission silently discarded every persisted progress /// push), queue ordering, the per-tier access policy, and the operation state machine. -final class ConcurrentSyncTests: XCTestCase { +final class SyncQueueTests: XCTestCase { private var tasksDataManager: TasksDataManager! - private var repository: ConcurrentTasksRepository! + private var repository: SyncQueueRepository! override func setUpWithError() throws { let schema = Schema([ @@ -34,15 +34,15 @@ final class ConcurrentSyncTests: XCTestCase { UploadExternalResourceTaskModel.self, ExternalResourceToDownloadTaskModel.self, DeleteExternalResourceTaskModel.self, - ConcurrentTasksContainer.self, - ConcurrentTaskReferenceModel.self, + SyncQueueContainer.self, + QueuedTaskReferenceModel.self, ExternalUpdateTaskModel.self, - ConcurrentUploadTaskModel.self, + UploadFileTaskModel.self, ]) let config = ModelConfiguration(isStoredInMemoryOnly: true, cloudKitDatabase: .none) let container = try ModelContainer(for: schema, configurations: config) tasksDataManager = TasksDataManager(container: container) - repository = ConcurrentTasksRepository(tasksDataManager: tasksDataManager) + repository = SyncQueueRepository(tasksDataManager: tasksDataManager) } override func tearDown() { @@ -136,27 +136,27 @@ final class ConcurrentSyncTests: XCTestCase { /// `externalUpdate` targets the USER'S OWN media server, so it stays available on every /// tier (Android parity); `uploadFile` (S3) is PRO-only. func testAccessPolicy_perTier() { - let service = ConcurrenceService(maxConcurrentTasks: 1) + let service = SyncQueueService(maxConcurrentTasks: 1) - service.updateConcurrentService(.pro) + service.updateAccessPolicy(.pro) XCTAssertEqual(service.accessPolicy[.externalUpdate], true) XCTAssertEqual(service.accessPolicy[.uploadFile], true) - service.updateConcurrentService(.lite) + service.updateAccessPolicy(.lite) XCTAssertEqual(service.accessPolicy[.externalUpdate], true) XCTAssertEqual(service.accessPolicy[.uploadFile], false) - service.updateConcurrentService(.free) + service.updateAccessPolicy(.free) XCTAssertEqual(service.accessPolicy[.externalUpdate], true) XCTAssertEqual(service.accessPolicy[.uploadFile], false) - service.updateConcurrentService(.plus) + service.updateAccessPolicy(.plus) XCTAssertEqual(service.accessPolicy[.externalUpdate], true) XCTAssertEqual(service.accessPolicy[.uploadFile], false) } func testScheduleMetadataUpdate_gatedByPolicy() async throws { - let service = ConcurrenceService(maxConcurrentTasks: 1) + let service = SyncQueueService(maxConcurrentTasks: 1) service.taskContainer = repository // Denied: nothing is persisted. @@ -181,7 +181,7 @@ final class ConcurrentSyncTests: XCTestCase { } func testScheduleFileUpload_gatedByPolicy() async throws { - let service = ConcurrenceService(maxConcurrentTasks: 1) + let service = SyncQueueService(maxConcurrentTasks: 1) service.taskContainer = repository service.accessPolicy = [.uploadFile: false] @@ -262,18 +262,18 @@ final class ConcurrentSyncTests: XCTestCase { // MARK: - Policy ownership (self-refresh on account updates) -extension ConcurrentSyncTests { +extension SyncQueueTests { /// The mid-session-upgrade pin: the service re-derives its per-job policy from /// .accountUpdate on its own — no coordinator wiring. Before this, an upgrade left /// file uploads gated off until the next app start unless every platform remembered /// to forward the new level manually. @MainActor func testAccessPolicyRefreshesOnAccountUpdate() { - let service = ConcurrenceService(maxConcurrentTasks: 1) + let service = SyncQueueService(maxConcurrentTasks: 1) var level = AccessLevel.free service.getAccessLevel = { level } service.bindAccountObserver() - service.updateConcurrentService(level) + service.updateAccessPolicy(level) XCTAssertEqual(service.accessPolicy[.uploadFile], false) level = .pro @@ -292,7 +292,7 @@ extension ConcurrentSyncTests { // MARK: - Queue counts (engine-owned) -extension ConcurrentSyncTests { +extension SyncQueueTests { private func syncUpdateParams(id: String, relativePath: String) -> [String: Any] { [ "id": id, @@ -383,7 +383,7 @@ extension ConcurrentSyncTests { /// The engine forwards the store owner's publisher — no second bookkeeping anywhere. func testEngine_observeQueueCounts_forwardsTheStoreOwner() async throws { - let service = ConcurrenceService(maxConcurrentTasks: 1) + let service = SyncQueueService(maxConcurrentTasks: 1) service.taskContainer = repository service.tasksDataManager = tasksDataManager try await repository.storeTask(parameters: externalUpdateParams(id: "j1")) diff --git a/BookPlayerTests/Services/SyncTasksStorageTests.swift b/BookPlayerTests/Services/SyncTasksStorageTests.swift index e8718bd05..de64e88f9 100644 --- a/BookPlayerTests/Services/SyncTasksStorageTests.swift +++ b/BookPlayerTests/Services/SyncTasksStorageTests.swift @@ -15,7 +15,7 @@ import XCTest final class SyncTasksRepositoryTests: XCTestCase { private var tasksDataManager: TasksDataManager! - private var repository: ConcurrentTasksRepository! + private var repository: SyncQueueRepository! override func setUpWithError() throws { let schema = Schema([ @@ -31,15 +31,15 @@ final class SyncTasksRepositoryTests: XCTestCase { UploadExternalResourceTaskModel.self, ExternalResourceToDownloadTaskModel.self, DeleteExternalResourceTaskModel.self, - ConcurrentTasksContainer.self, - ConcurrentTaskReferenceModel.self, + SyncQueueContainer.self, + QueuedTaskReferenceModel.self, ExternalUpdateTaskModel.self, - ConcurrentUploadTaskModel.self, + UploadFileTaskModel.self, ]) let config = ModelConfiguration(isStoredInMemoryOnly: true, cloudKitDatabase: .none) let container = try ModelContainer(for: schema, configurations: config) tasksDataManager = TasksDataManager(container: container) - repository = ConcurrentTasksRepository(tasksDataManager: tasksDataManager) + repository = SyncQueueRepository(tasksDataManager: tasksDataManager) } override func tearDown() { diff --git a/BookPlayerWatch/CoreServices.swift b/BookPlayerWatch/CoreServices.swift index faec7d64a..d0844df2b 100644 --- a/BookPlayerWatch/CoreServices.swift +++ b/BookPlayerWatch/CoreServices.swift @@ -13,7 +13,7 @@ class CoreServices: ObservableObject { let dataManager: DataManager let accountService: AccountServiceProtocol var syncService: SyncServiceProtocol - var concurrenceService: ConcurrenceServiceProtocol + var syncQueueService: SyncQueueServiceProtocol let libraryService: LibraryService let playbackService: PlaybackServiceProtocol let playerManager: PlayerManager @@ -30,7 +30,7 @@ class CoreServices: ObservableObject { dataManager: DataManager, accountService: AccountServiceProtocol, syncService: SyncServiceProtocol, - concurrenceService: ConcurrenceServiceProtocol, + syncQueueService: SyncQueueServiceProtocol, libraryService: LibraryService, playbackService: PlaybackServiceProtocol, playerManager: PlayerManager, @@ -41,7 +41,7 @@ class CoreServices: ObservableObject { self.dataManager = dataManager self.accountService = accountService self.syncService = syncService - self.concurrenceService = concurrenceService + self.syncQueueService = syncQueueService self.libraryService = libraryService self.playbackService = playbackService self.hasSyncEnabled = accountService.hasSyncEnabled() @@ -53,7 +53,7 @@ class CoreServices: ObservableObject { func checkAndReloadIfSyncIsEnabled() { self.hasSyncEnabled = accountService.hasSyncEnabled() - // ConcurrenceService re-derives its own policy from .accountUpdate (posted by the + // SyncQueueService re-derives its own policy from .accountUpdate (posted by the // Shared AccountService update this flow just ran) — no manual forwarding needed. } diff --git a/BookPlayerWatch/ExtensionDelegate.swift b/BookPlayerWatch/ExtensionDelegate.swift index 077b4ce30..01ac264e5 100644 --- a/BookPlayerWatch/ExtensionDelegate.swift +++ b/BookPlayerWatch/ExtensionDelegate.swift @@ -72,8 +72,8 @@ class ExtensionDelegate: NSObject, WKApplicationDelegate, ObservableObject { let libraryService = LibraryService() libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) let tasksDataManager = TasksDataManager() - let concurrenceService = ConcurrenceService() - concurrenceService.setup( + let syncQueueService = SyncQueueService() + syncQueueService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, tasksDataManager: tasksDataManager, @@ -85,7 +85,7 @@ class ExtensionDelegate: NSObject, WKApplicationDelegate, ObservableObject { isActive: accountService.hasSyncEnabled(), libraryService: libraryService, accountService: accountService, - concurrenceService: concurrenceService + syncQueueService: syncQueueService ) let playbackService = PlaybackService() playbackService.setup(libraryService: libraryService) @@ -119,7 +119,7 @@ class ExtensionDelegate: NSObject, WKApplicationDelegate, ObservableObject { dataManager: dataManager, accountService: accountService, syncService: syncService, - concurrenceService: concurrenceService, + syncQueueService: syncQueueService, libraryService: libraryService, playbackService: playbackService, playerManager: playerManager, @@ -317,7 +317,7 @@ extension ExtensionDelegate: PurchasesDelegate { coreServices?.updateSyncEnabled(enableSync) // Same route as iOS's MainCoordinator delegate: AccountService derives the level - // and posts .accountUpdate, which ConcurrenceService (and SyncService) observe — + // and posts .accountUpdate, which SyncQueueService (and SyncService) observe — // this replaced a hand-rolled entitlement parse forwarded manually to the queue. coreServices?.accountService.updateAccount(from: customerInfo) } diff --git a/CLAUDE.md b/CLAUDE.md index 727d8aabb..d3d56e8dd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -122,7 +122,7 @@ first. Reordering boot risks a launch crash. - `@MainActor final class AppServices` with `static let shared` + `private init()`. Owns the async `setupCoreServicesTask`, the `DatabaseInitializer`, and a shared `PlayerState`. - `CoreServices` (`BookPlayer/Utils/CoreServices.swift`) is a struct of exactly **12 services**: `accountService`, - `concurrenceService`, `externalProgressService` (pulls media-server playback positions; self-subscribes to + `syncQueueService`, `externalProgressService` (pulls media-server playback positions; self-subscribes to `.bookPlayed` so the pull never depends on which UI is attached), `dataManager`, `hardcoverService`, `libraryService`, `playbackService`, `playerLoaderService`, `playerManager`, `preferencesService` (`PreferencesSyncService`), `syncService`, `watchService` (`PhoneWatchConnectivityService`). @@ -146,7 +146,7 @@ first. Reordering boot risks a launch crash. throwaway placeholder (an un-`setup()` service).** A view that reads the environment default instead of the injected instance gets a non-functional service: stored-property reads return inert defaults, but METHODS that touch un-`setup()` dependencies trap on their implicitly-unwrapped optionals - (`ConcurrenceService.observeQueueCounts` and siblings all behave this way — it is the pattern, not a + (`SyncQueueService.observeQueueCounts` and siblings all behave this way — it is the pattern, not a defect). Verify real injection by `MainCoordinator`; previews that exercise such views must construct and inject set-up services (see `ProfileSyncTasksSectionView`'s preview), never rely on the defaults. - **App Intents DI:** only `playerLoaderService` and `libraryService` are registered via @@ -234,16 +234,16 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi (`.incompatible` suffix, never deleted) and retries fresh; any other failure — including a fresh-store failure — still crashes (`fatalError`). - Versioned schema: `SchemaV1` (10 models) → `SchemaV2` (11 models, adds `MatchUuidsTaskModel` + a `uuid` field) - → `SchemaV3` (unified concurrent-task container: `ConcurrentTaskReferenceModel` with per-queue keys, plus - `ExternalUpdateTaskModel`/`ConcurrentUploadTaskModel` payloads). App code always uses the V3 typealiases. + → `SchemaV3` (unified concurrent-task container: `QueuedTaskReferenceModel` with per-queue keys, plus + `ExternalUpdateTaskModel`/`UploadFileTaskModel` payloads). App code always uses the V3 typealiases. - `MigrationPlan.swift` (`SchemaMigrationPlan`) has a **custom `v1ToV2` stage that reads UUIDs out of the CoreData `LibraryItem` table** — it requires `MigrationPlan.injectedCoreDataContext` to be set first, else **`fatalError`** (the `v2ToV3` stage also uses the injected context, but degrades gracefully when absent). This is the coupling between the two stores; set it before the `ModelContainer` is built. - **`ModelContext` is per-actor and not `Sendable`.** All task-queue reads/writes go through - `public actor ConcurrentTasksRepository: ModelActor` (`Shared/Services/ConcurrentSync/`) with a single + `public actor SyncQueueRepository: ModelActor` (`Shared/Services/SyncQueue/`) with a single confined `ModelContext` (it replaced the old `SyncTasksStorage` actor). Do not share/pass a `ModelContext` - across actors or threads. Execution lives in `ConcurrenceService` (OperationQueue): the `sync` queue key runs + across actors or threads. Execution lives in `SyncQueueService` (OperationQueue): the `sync` queue key runs BookPlayer-server jobs serially; provider-named keys (externalUpdate pushes) and `uploadFile` run concurrently. **The engine is the single owner of queue counts:** `observeQueueCounts()` publishes one per-lane `QueueCounts` snapshot (the Profile row shows its `total`; the single Queued Tasks screen — one `DisclosureGroup` per lane, @@ -316,7 +316,7 @@ lines). It is the highest-risk file in the app. logout→login can't let a late `resetAllJobs()` wipe freshly-scheduled jobs — preserve this ordering. Every `schedule*` method short-circuits on `guard isActive`. - **Sync = the `pro` OR `lite` entitlement** (`hasSyncEnabled()`); `lite` gets DB-backed sync only — - S3 file uploads are gated per-job via `ConcurrenceService.accessPolicy` (`.uploadFile` is pro-only, + S3 file uploads are gated per-job via `SyncQueueService.accessPolicy` (`.uploadFile` is pro-only, `.externalUpdate` — progress pushes to the USER'S OWN media server — is available on every tier, matching the Android app). Job types (`SyncJobType`): `upload, update, move, renameFolder, delete, shallowDelete, setBookmark, deleteBookmark, uploadArtwork, matchUuid`. @@ -479,7 +479,7 @@ The crash surfaces and invariants most likely to be broken by a change. (The ful 2. **CoreData model change without the full 5-step manual-migration ritual** (auto-inference is OFF) → crashes existing installs. 3. **SwiftData:** don't share a `ModelContext` across actors; the sync-queue lives behind the - `ConcurrentTasksRepository` actor; `MigrationPlan.injectedCoreDataContext` must be set before the container + `SyncQueueRepository` actor; `MigrationPlan.injectedCoreDataContext` must be set before the container is built. 4. **Retain cycles / Combine leaks:** missing `[weak self]` in a sink; an `AnyCancellable` not stored; a named subscription not `.cancel()`'d before rebind (`PlayerManager` depends on this). diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index c79fc437e..6f3bd5434 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -337,7 +337,7 @@ extension LibraryItemSyncOperation { // The bytes are on S3 now — failing the operation on a flaky confirmation would // retry the uploaded:false branch and re-upload the entire (potentially multi-GB) // file. Retry just the confirmation instead, mirroring the synced:true handling - // in ConcurrenceService.handleFinishedOperation. + // in SyncQueueService.handleFinishedOperation. var confirmationError: Error? for attempt in 1...3 { do { @@ -348,7 +348,7 @@ extension LibraryItemSyncOperation { } catch { confirmationError = error Self.logger.error("uploaded:true confirmation attempt \(attempt) failed for \(self.uuid): \(error.localizedDescription)") - // Space out the attempts (same 2s as the ConcurrenceService sibling): a single + // Space out the attempts (same 2s as the SyncQueueService sibling): a single // transient blip would otherwise burn all three back-to-back in under a second // and re-upload the file anyway if attempt < 3 { @@ -362,7 +362,7 @@ extension LibraryItemSyncOperation { // still thinks the object isn't uploaded, so the next external_set round-trip // heals cheaply (it answers url == null for an already-existing object, which the // nil-url branch above consumes). Same bytes-are-on-S3 semantics as the - // FileUploadOperation confirmation in ConcurrenceService.handleFinishedOperation. + // FileUploadOperation confirmation in SyncQueueService.handleFinishedOperation. if let confirmationError { Self.logger.error( "uploaded:true confirmation exhausted for \(self.uuid), consuming (bytes on S3): \(confirmationError.localizedDescription)" diff --git a/Shared/Services/Sync/SyncJobScheduler.swift b/Shared/Services/Sync/SyncJobScheduler.swift index 8522a096c..0e08cb511 100644 --- a/Shared/Services/Sync/SyncJobScheduler.swift +++ b/Shared/Services/Sync/SyncJobScheduler.swift @@ -50,11 +50,11 @@ public protocol JobSchedulerProtocol { } /// Scheduling facade for the serial BookPlayer-server queue: builds task parameters -/// and persists them under the `sync` queue key. Execution lives in `ConcurrenceService`. +/// and persists them under the `sync` queue key. Execution lives in `SyncQueueService`. public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { - let tasksRepository: ConcurrentTasksRepositoryProtocol + let tasksRepository: SyncQueueRepositoryProtocol - public init(tasksRepository: ConcurrentTasksRepositoryProtocol) { + public init(tasksRepository: SyncQueueRepositoryProtocol) { self.tasksRepository = tasksRepository } diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 4d961ba7e..88d847780 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -112,7 +112,7 @@ public protocol SyncServiceProtocol { public final class SyncService: SyncServiceProtocol, BPLogger { private var libraryService: LibrarySyncProtocol! private var accountService: AccountServiceProtocol! - private var concurrenceService: ConcurrenceServiceProtocol! + private var syncQueueService: SyncQueueServiceProtocol! var jobManager: JobSchedulerProtocol! private var client: NetworkClientProtocol! /// Owned here: writes go through `updateSyncEnabled(_:)` / `logout()`, mutated on the @@ -168,7 +168,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { isActive: Bool, libraryService: LibrarySyncProtocol, accountService: AccountServiceProtocol, - concurrenceService: ConcurrenceServiceProtocol, + syncQueueService: SyncQueueServiceProtocol, client: NetworkClientProtocol = NetworkClient(), streamResolver: ExternalStreamResolving = ExternalStreamResolver() ) { @@ -176,8 +176,8 @@ public final class SyncService: SyncServiceProtocol, BPLogger { self.streamResolver = streamResolver self.libraryService = libraryService self.accountService = accountService - self.concurrenceService = concurrenceService - self.jobManager = SyncJobScheduler(tasksRepository: concurrenceService.taskContainer) + self.syncQueueService = syncQueueService + self.jobManager = SyncJobScheduler(tasksRepository: syncQueueService.taskContainer) self.client = client self.provider = NetworkProvider(client: client) @@ -606,7 +606,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { } public func getLastSyncError() -> SyncErrorInfo? { - return concurrenceService.lastSyncError + return syncQueueService.lastSyncError } public func cancelAllJobs() { @@ -630,7 +630,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { // Clearing the persisted rows isn't enough (develop parity): an operation // already executing keeps uploading after the lapse without this. Scoped so // in-flight externalUpdate pushes survive — they run on every tier. - self.concurrenceService.cancelServerQueueOperations() + self.syncQueueService.cancelServerQueueOperations() } } } diff --git a/Shared/Services/ConcurrentSync/AsyncOperation.swift b/Shared/Services/SyncQueue/AsyncOperation.swift similarity index 96% rename from Shared/Services/ConcurrentSync/AsyncOperation.swift rename to Shared/Services/SyncQueue/AsyncOperation.swift index 241fa863f..7b92c5b4f 100644 --- a/Shared/Services/ConcurrentSync/AsyncOperation.swift +++ b/Shared/Services/SyncQueue/AsyncOperation.swift @@ -41,7 +41,7 @@ class AsyncOperation: Operation, @unchecked Sendable { var onProgress: (@Sendable (Double) -> Void)? /// Written from the subclasses' async Tasks / completion sinks, read from the queue - /// thread in ConcurrenceService's completionBlock — lock-guarded like `state` so the + /// thread in SyncQueueService's completionBlock — lock-guarded like `state` so the /// read has a happens-before edge with the write. private var _didSucceed = false var didSucceed: Bool { diff --git a/Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift b/Shared/Services/SyncQueue/ExternalUpdateProgressOperation.swift similarity index 100% rename from Shared/Services/ConcurrentSync/ExternalUpdateProgressOperation.swift rename to Shared/Services/SyncQueue/ExternalUpdateProgressOperation.swift diff --git a/Shared/Services/ConcurrentSync/FileUploadOperation.swift b/Shared/Services/SyncQueue/FileUploadOperation.swift similarity index 100% rename from Shared/Services/ConcurrentSync/FileUploadOperation.swift rename to Shared/Services/SyncQueue/FileUploadOperation.swift diff --git a/Shared/Services/ConcurrentSync/QueueCounts.swift b/Shared/Services/SyncQueue/QueueCounts.swift similarity index 100% rename from Shared/Services/ConcurrentSync/QueueCounts.swift rename to Shared/Services/SyncQueue/QueueCounts.swift diff --git a/Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift b/Shared/Services/SyncQueue/QueuedSyncTask.swift similarity index 91% rename from Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift rename to Shared/Services/SyncQueue/QueuedSyncTask.swift index d7f9202e9..198aacd91 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentSyncTask.swift +++ b/Shared/Services/SyncQueue/QueuedSyncTask.swift @@ -1,12 +1,12 @@ // -// ConcurrentSyncTask.swift +// QueuedSyncTask.swift // BookPlayer // // Created by Pedro Iñiguez on 24/3/26. // Copyright © 2026 BookPlayer LLC. All rights reserved. // -public struct ConcurrentSyncTask: Identifiable { +public struct QueuedSyncTask: Identifiable { public let id: String public let queueKey: String public let jobType: SyncJobType diff --git a/Shared/Services/ConcurrentSync/ConcurrentTaskProgressMonitor.swift b/Shared/Services/SyncQueue/SyncQueueProgressMonitor.swift similarity index 92% rename from Shared/Services/ConcurrentSync/ConcurrentTaskProgressMonitor.swift rename to Shared/Services/SyncQueue/SyncQueueProgressMonitor.swift index 8520b2dc5..1e8cd51b3 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTaskProgressMonitor.swift +++ b/Shared/Services/SyncQueue/SyncQueueProgressMonitor.swift @@ -1,5 +1,5 @@ // -// ConcurrentTasksProgressMonitor.swift +// SyncQueueProgressMonitor.swift // BookPlayer // // Created by Pedro Iñiguez on 25/3/26. @@ -27,9 +27,9 @@ public class TaskProgressTracker { @Observable @MainActor -public class ConcurrentTaskProgressMonitor { +public class SyncQueueProgressMonitor { // Shared instance so both the UI and the Orchestrator can access it easily - public static let shared = ConcurrentTaskProgressMonitor() + public static let shared = SyncQueueProgressMonitor() // A dictionary mapping the Task ID to a progress double (0.0 to 1.0) public var activeTasks: [String: TaskProgressTracker] = [:] diff --git a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift b/Shared/Services/SyncQueue/SyncQueueRepository.swift similarity index 92% rename from Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift rename to Shared/Services/SyncQueue/SyncQueueRepository.swift index 13613cefe..6630885c5 100644 --- a/Shared/Services/ConcurrentSync/ConcurrentTasksRepository.swift +++ b/Shared/Services/SyncQueue/SyncQueueRepository.swift @@ -1,5 +1,5 @@ // -// ConcurrentTasksStore.swift +// SyncQueueRepository.swift // BookPlayer // // Created by Pedro Iñiguez on 23/3/26. @@ -10,12 +10,12 @@ import Combine import Foundation import SwiftData -public protocol ConcurrentTasksRepositoryProtocol: ModelActor { +public protocol SyncQueueRepositoryProtocol: ModelActor { init(tasksDataManager: TasksDataManager) - func getNextTask(for queueKey: String) -> ConcurrentSyncTask? + func getNextTask(for queueKey: String) -> QueuedSyncTask? - func pop(_ task: ConcurrentSyncTask) + func pop(_ task: QueuedSyncTask) func getAllQueueKeys() -> [String] @@ -23,11 +23,11 @@ public protocol ConcurrentTasksRepositoryProtocol: ModelActor { /// Every queued task across all lanes in stored order — a display-level list, so /// `parameters` is left empty (workers reload payloads through `getNextTask`) - func getAllTasks() async -> [ConcurrentSyncTask] + func getAllTasks() async -> [QueuedSyncTask] // Set (not the @MainActor TaskProgressTracker map): only the ids cross the actor // boundary — the tracker object is non-Sendable. - func getOrderedTasks(activeTaskIDs: Set) async -> [ConcurrentSyncTask] + func getOrderedTasks(activeTaskIDs: Set) async -> [QueuedSyncTask] func getTasksCount(in queueKey: String) -> Int @@ -42,7 +42,7 @@ public protocol ConcurrentTasksRepositoryProtocol: ModelActor { func clearAll() throws } -public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLogger { +public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { nonisolated public let modelContainer: ModelContainer nonisolated public let modelExecutor: any ModelExecutor @@ -58,7 +58,7 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog self.tasksDataManager = tasksDataManager } - public func getNextTask(for queueKey: String) -> ConcurrentSyncTask? { + public func getNextTask(for queueKey: String) -> QueuedSyncTask? { guard let tasksContainer = fetchGlobalQueueModel() else { return nil } for reference in tasksContainer.orderedTasks(for: queueKey) { @@ -83,7 +83,7 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog continue } - return ConcurrentSyncTask( + return QueuedSyncTask( id: reference.taskID, queueKey: reference.queueKey, jobType: reference.jobType, @@ -96,7 +96,7 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog return nil } - public func pop(_ task: ConcurrentSyncTask) { + public func pop(_ task: QueuedSyncTask) { guard let tasksContainer = fetchGlobalQueueModel() else { return } let context = modelContext @@ -141,10 +141,10 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog tasksDataManager.notifyTasksChanged(context: context) } - private func fetchGlobalQueueModel() -> ConcurrentTasksContainer? { + private func fetchGlobalQueueModel() -> SyncQueueContainer? { let context = modelContext - let descriptor = FetchDescriptor() + let descriptor = FetchDescriptor() let containers = try? context.fetch(descriptor) guard let tasksContainer = containers?.first else { @@ -171,9 +171,9 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog let context = modelContext // Get or create the tasks container - let descriptor = FetchDescriptor() + let descriptor = FetchDescriptor() let containers = try context.fetch(descriptor) - let tasksContainer = containers.first ?? ConcurrentTasksContainer() + let tasksContainer = containers.first ?? SyncQueueContainer() if containers.isEmpty { context.insert(tasksContainer) @@ -194,7 +194,7 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog let nextPosition = (tasksContainer.tasks.map(\.position).max() ?? -1) + 1 // Create task reference - let taskReference = ConcurrentTaskReferenceModel( + let taskReference = QueuedTaskReferenceModel( queueKey: queueKey, taskID: taskId, jobType: jobType, @@ -225,7 +225,7 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog jobType: SyncJobType, queueKey: String, parameters: [String: Any], - tasksContainer: ConcurrentTasksContainer + tasksContainer: SyncQueueContainer ) -> Bool { let queuedReferences = tasksContainer.orderedTasks(for: queueKey) /// Skip the head of the queue when looking for a merge target @@ -298,11 +298,11 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog } } - public func getAllTasks() async -> [ConcurrentSyncTask] { + public func getAllTasks() async -> [QueuedSyncTask] { guard let tasksContainer = fetchGlobalQueueModel() else { return [] } return tasksContainer.orderedTasks.map { task in - ConcurrentSyncTask( + QueuedSyncTask( id: task.taskID, queueKey: task.queueKey, jobType: task.jobType, @@ -313,7 +313,7 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog } } - public func getOrderedTasks(activeTaskIDs: Set) async -> [ConcurrentSyncTask] { + public func getOrderedTasks(activeTaskIDs: Set) async -> [QueuedSyncTask] { let concurrentTasks = await self.getAllTasks() let activeGroup = concurrentTasks.filter { task in @@ -384,7 +384,7 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog let oldUuid = conflict.key let newUuid = conflict.uuid let refs = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.uuid == oldUuid }) + FetchDescriptor(predicate: #Predicate { $0.uuid == oldUuid }) ) for ref in refs { ref.uuid = newUuid @@ -438,7 +438,7 @@ public actor ConcurrentTasksRepository: ConcurrentTasksRepositoryProtocol, BPLog ).first { task.uuid = newUuid } case .uploadFile: if let task = try modelContext.fetch( - FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) ).first { task.uuid = newUuid } } } diff --git a/Shared/Services/ConcurrentSync/ConcurrenceService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift similarity index 95% rename from Shared/Services/ConcurrentSync/ConcurrenceService.swift rename to Shared/Services/SyncQueue/SyncQueueService.swift index 4aad23898..b80ddce39 100644 --- a/Shared/Services/ConcurrentSync/ConcurrenceService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -1,5 +1,5 @@ // -// SyncOrchestrator.swift +// SyncQueueService.swift // BookPlayer // // Created by Pedro Iñiguez on 23/3/26. @@ -10,11 +10,11 @@ import Foundation import Combine import CoreData -public protocol ConcurrenceServiceProtocol { +public protocol SyncQueueServiceProtocol { var accessPolicy: [SyncJobType: Bool] { get set } /// Shared repository backing every task queue - var taskContainer: ConcurrentTasksRepositoryProtocol! { get } + var taskContainer: SyncQueueRepositoryProtocol! { get } /// Last sync error information for debugging var lastSyncError: SyncErrorInfo? { get } @@ -35,7 +35,7 @@ public protocol ConcurrenceServiceProtocol { func observeQueueCounts() -> AnyPublisher /// Every queued task across all lanes, the in-flight ones first (display-level list) - func getOrderedQueuedJobs(activeTaskIDs: Set) async -> [ConcurrentSyncTask] + func getOrderedQueuedJobs(activeTaskIDs: Set) async -> [QueuedSyncTask] func scheduleMetadataUpdate(params: [String: Any]) @@ -48,9 +48,9 @@ public protocol ConcurrenceServiceProtocol { func cancelServerQueueOperations() } -public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { +public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { let operationQueue: OperationQueue - public var taskContainer: ConcurrentTasksRepositoryProtocol! // Your DB model + public var taskContainer: SyncQueueRepositoryProtocol! // Your DB model var libraryService: LibrarySyncProtocol! var networkClient: NetworkClientProtocol! var dataManager: DataManager! @@ -115,7 +115,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { self.getAccessLevel = getAccessLevel self.networkClient = networkClient self.dataManager = dataManager - self.taskContainer = ConcurrentTasksRepository(tasksDataManager: tasksDataManager) + self.taskContainer = SyncQueueRepository(tasksDataManager: tasksDataManager) self.tasksDataManager = tasksDataManager startListeningForNewTasks() bindObservers() @@ -123,7 +123,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { // Policy BEFORE workers: createOperation consults accessPolicy to decide whether a // persisted upload may run — waking workers first only worked because wakeUpWorkers // happens to suspend on the repository actor before any pop - updateConcurrentService(getAccessLevel()) + updateAccessPolicy(getAccessLevel()) wakeUpWorkers() } @@ -136,7 +136,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { .receive(on: DispatchQueue.main) .sink { [weak self] _ in guard let self else { return } - self.updateConcurrentService(self.getAccessLevel()) + self.updateAccessPolicy(self.getAccessLevel()) } .store(in: &disposeBag) } @@ -239,7 +239,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { operation.onProgress = { progress in Task { @MainActor in - ConcurrentTaskProgressMonitor.shared.updateProgress(for: nextTask.id, progress: progress) + SyncQueueProgressMonitor.shared.updateProgress(for: nextTask.id, progress: progress) // Three consumers (SyncJobScheduler, the profile task views) still listen for this // notification with a {uuid, relativePath, progress} payload — the old poster was // removed with LibraryItemSyncOperation's upload path, silently freezing every @@ -287,24 +287,24 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { // 3. AWAIT the recursive call await MainActor.run { - ConcurrentTaskProgressMonitor.shared.clear(taskID: nextTask.id) + SyncQueueProgressMonitor.shared.clear(taskID: nextTask.id) } await self.enqueueNextTask(for: queueKey) } } await MainActor.run { - ConcurrentTaskProgressMonitor.shared.markAsProcessing(taskID: nextTask.id) + SyncQueueProgressMonitor.shared.markAsProcessing(taskID: nextTask.id) } operationQueue.addOperation(operation) } - public func getOrderedQueuedJobs(activeTaskIDs: Set) async -> [ConcurrentSyncTask] { + public func getOrderedQueuedJobs(activeTaskIDs: Set) async -> [QueuedSyncTask] { return await taskContainer.getOrderedTasks(activeTaskIDs: activeTaskIDs) } - private func createOperation(for task: ConcurrentSyncTask) -> AsyncOperation? { + private func createOperation(for task: QueuedSyncTask) -> AsyncOperation? { switch task.jobType { case .externalUpdate: guard let providerName = task.parameters["providerName"] as? String, @@ -368,7 +368,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { } /// Post-completion side effects for finished sync tasks - private func handleFinishedOperation(_ operation: AsyncOperation, task: ConcurrentSyncTask) async { + private func handleFinishedOperation(_ operation: AsyncOperation, task: QueuedSyncTask) async { // The synced:true confirmation for file-backed books happens HERE, after the bytes are // actually on S3 — LibraryItemSyncOperation deliberately no longer confirms when it // schedules a file upload (confirming before the PUT lies to the server if the upload @@ -487,7 +487,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { } } - func updateConcurrentService(_ accessLevel: AccessLevel) { + func updateAccessPolicy(_ accessLevel: AccessLevel) { switch accessLevel { case .lite: accessPolicy = [ @@ -521,7 +521,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { /// removes the schedule-time temp hard link — same temp-dir-only guard as the /// operation's own success/4xx/cancel cleanup paths (a real Processed-folder file /// must never be deleted here). - private func cleanUpDroppedUploadTempLink(_ task: ConcurrentSyncTask) { + private func cleanUpDroppedUploadTempLink(_ task: QueuedSyncTask) { guard let filePath = task.parameters["filePath"] as? String, let fileURL = URL(string: filePath), @@ -531,7 +531,7 @@ public class ConcurrenceService: ConcurrenceServiceProtocol, BPLogger { } } -extension ConcurrenceService { +extension SyncQueueService { public func scheduleMetadataUpdate(params: [String: Any]) { guard accessPolicy[.externalUpdate] == true else { return diff --git a/Shared/SwiftData/MigrationPlan.swift b/Shared/SwiftData/MigrationPlan.swift index 1323f698c..e8567e4c4 100644 --- a/Shared/SwiftData/MigrationPlan.swift +++ b/Shared/SwiftData/MigrationPlan.swift @@ -138,9 +138,9 @@ public enum MigrationPlan: SchemaMigrationPlan, BPLogger { } }, didMigrate: { context in - let descriptor = FetchDescriptor() + let descriptor = FetchDescriptor() let containers = try context.fetch(descriptor) - let tasksContainer = containers.first ?? SchemaV3.ConcurrentTasksContainer() + let tasksContainer = containers.first ?? SchemaV3.SyncQueueContainer() if containers.isEmpty { context.insert(tasksContainer) } @@ -148,7 +148,7 @@ public enum MigrationPlan: SchemaMigrationPlan, BPLogger { // 1. Replay the stashed V2 sync queue, preserving its FIFO order. var nextPosition = (tasksContainer.tasks.map(\.position).max() ?? -1) + 1 for reference in stashedSyncReferences.sorted(by: { $0.position < $1.position }) { - let migrated = SchemaV3.ConcurrentTaskReferenceModel( + let migrated = SchemaV3.QueuedTaskReferenceModel( queueKey: TaskQueueKey.sync, taskID: reference.taskID, jobType: reference.jobType, @@ -244,7 +244,7 @@ public enum MigrationPlan: SchemaMigrationPlan, BPLogger { ) context.insert(task) - let reference = SchemaV3.ConcurrentTaskReferenceModel( + let reference = SchemaV3.QueuedTaskReferenceModel( queueKey: TaskQueueKey.sync, taskID: taskId, jobType: .externalResource, diff --git a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift index 4f2b89da9..eb21405b0 100644 --- a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift +++ b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift @@ -26,10 +26,10 @@ public enum SchemaV3: VersionedSchema { ArtworkUploadTaskModel.self, MatchUuidsTaskModel.self, UploadExternalResourceTaskModel.self, - ConcurrentTasksContainer.self, - ConcurrentTaskReferenceModel.self, + SyncQueueContainer.self, + QueuedTaskReferenceModel.self, ExternalUpdateTaskModel.self, - ConcurrentUploadTaskModel.self, + UploadFileTaskModel.self, ExternalResourceToDownloadTaskModel.self, DeleteExternalResourceTaskModel.self ] @@ -283,17 +283,17 @@ public enum SchemaV3: VersionedSchema { /// The `"sync"` key holds the serial BookPlayer-server queue; every other key /// is a provider/upload queue that runs concurrently with the rest. @Model - public class ConcurrentTasksContainer { - @Relationship(deleteRule: .cascade, inverse: \ConcurrentTaskReferenceModel.container) - public var tasks: [ConcurrentTaskReferenceModel] = [] + public class SyncQueueContainer { + @Relationship(deleteRule: .cascade, inverse: \QueuedTaskReferenceModel.container) + public var tasks: [QueuedTaskReferenceModel] = [] - public var orderedTasks: [ConcurrentTaskReferenceModel] { tasks.sorted { $0.position < $1.position } } + public var orderedTasks: [QueuedTaskReferenceModel] { tasks.sorted { $0.position < $1.position } } public var allQueueKeys: [String] { Array(Set(tasks.map { $0.queueKey })) } - public func orderedTasks(for queueKey: String) -> [ConcurrentTaskReferenceModel] { + public func orderedTasks(for queueKey: String) -> [QueuedTaskReferenceModel] { tasks .filter { $0.queueKey == queueKey } .sorted { $0.position < $1.position } @@ -303,7 +303,7 @@ public enum SchemaV3: VersionedSchema { } @Model - public class ConcurrentTaskReferenceModel { + public class QueuedTaskReferenceModel { @Attribute(.unique) public var id: String public var taskID: String public var jobType: SyncJobType @@ -311,7 +311,7 @@ public enum SchemaV3: VersionedSchema { public var queueKey: String public var uuid: String = "" public var relativePath: String = "" - public var container: ConcurrentTasksContainer? + public var container: SyncQueueContainer? public init( id: String = UUID().uuidString, @@ -374,7 +374,7 @@ public enum SchemaV3: VersionedSchema { } @Model - public class ConcurrentUploadTaskModel { + public class UploadFileTaskModel { @Attribute(.unique) public var id: String public var filePath: String public var remotePath: String? diff --git a/Shared/SwiftData/Models/SyncTasksModels.swift b/Shared/SwiftData/Models/SyncTasksModels.swift index f8353db4a..04e0a1245 100644 --- a/Shared/SwiftData/Models/SyncTasksModels.swift +++ b/Shared/SwiftData/Models/SyncTasksModels.swift @@ -22,7 +22,7 @@ public typealias UploadExternalResourceTaskModel = SchemaV3.UploadExternalResour public typealias ExternalResourceToDownloadTaskModel = SchemaV3.ExternalResourceToDownloadTaskModel public typealias DeleteExternalResourceTaskModel = SchemaV3.DeleteExternalResourceTaskModel -public typealias ConcurrentTasksContainer = SchemaV3.ConcurrentTasksContainer -public typealias ConcurrentTaskReferenceModel = SchemaV3.ConcurrentTaskReferenceModel +public typealias SyncQueueContainer = SchemaV3.SyncQueueContainer +public typealias QueuedTaskReferenceModel = SchemaV3.QueuedTaskReferenceModel public typealias ExternalUpdateTaskModel = SchemaV3.ExternalUpdateTaskModel -public typealias ConcurrentUploadTaskModel = SchemaV3.ConcurrentUploadTaskModel +public typealias UploadFileTaskModel = SchemaV3.UploadFileTaskModel diff --git a/Shared/SwiftData/SwiftDataModels+Extensions.swift b/Shared/SwiftData/SwiftDataModels+Extensions.swift index bc3f0430e..c7f274fc0 100644 --- a/Shared/SwiftData/SwiftDataModels+Extensions.swift +++ b/Shared/SwiftData/SwiftDataModels+Extensions.swift @@ -47,7 +47,7 @@ extension UploadTaskModel: DictionaryConvertible { } /// Provider-backed items skip the device file upload (the server pulls the file - /// from the provider instead) — see `ConcurrenceService.handleFinishedOperation` + /// from the provider instead) — see `SyncQueueService.handleFinishedOperation` if let provider { dict["provider"] = provider } @@ -267,7 +267,7 @@ extension ExternalUpdateTaskModel: DictionaryConvertible { } } -extension ConcurrentUploadTaskModel: DictionaryConvertible { +extension UploadFileTaskModel: DictionaryConvertible { public func toDictionaryPayload() -> [String: Any] { var dictionary: [String: Any] = [ "id": id, diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index 6a96962bb..a5fd2584d 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -28,10 +28,10 @@ public final class TasksDataManager: BPLogger { UploadExternalResourceTaskModel.self, ExternalResourceToDownloadTaskModel.self, DeleteExternalResourceTaskModel.self, - ConcurrentTasksContainer.self, - ConcurrentTaskReferenceModel.self, + SyncQueueContainer.self, + QueuedTaskReferenceModel.self, ExternalUpdateTaskModel.self, - ConcurrentUploadTaskModel.self, + UploadFileTaskModel.self, ]) let storeURL = DataManager.getSyncTasksSwiftDataURL() @@ -94,7 +94,7 @@ public final class TasksDataManager: BPLogger { /// Recount every lane from the unified container and publish the snapshot. public func notifyTasksChanged(context: ModelContext) { - let descriptor = FetchDescriptor() + let descriptor = FetchDescriptor() do { let tasks = try context.fetch(descriptor).first?.tasks ?? [] @@ -121,20 +121,20 @@ public final class TasksDataManager: BPLogger { try context.delete(model: ExternalResourceToDownloadTaskModel.self) try context.delete(model: DeleteExternalResourceTaskModel.self) - try context.delete(model: ConcurrentUploadTaskModel.self) + try context.delete(model: UploadFileTaskModel.self) try context.delete(model: ExternalUpdateTaskModel.self) - // ConcurrentTaskReferenceModel.container participates in a cascade relationship - // with ConcurrentTasksContainer. A store-level batch delete runs below the object + // QueuedTaskReferenceModel.container participates in a cascade relationship + // with SyncQueueContainer. A store-level batch delete runs below the object // graph and skips relationship-maintenance (cascade/nullify) entirely, which trips // a constraint-trigger / optimistic-lock error on that inverse. Delete through the // object graph instead: removing each container cascades to its task references. - let containers = try context.fetch(FetchDescriptor()) + let containers = try context.fetch(FetchDescriptor()) for container in containers { context.delete(container) } // Defensively clear any references that aren't attached to a container. - let orphanedReferences = try context.fetch(FetchDescriptor()) + let orphanedReferences = try context.fetch(FetchDescriptor()) for reference in orphanedReferences { context.delete(reference) } @@ -249,8 +249,8 @@ public final class TasksDataManager: BPLogger { context.delete(task) } case .uploadFile: - let descriptor = FetchDescriptor( - predicate: #Predicate { task in task.id == id } + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } ) if let task = try context.fetch(descriptor).first { context.delete(task) @@ -362,7 +362,7 @@ public final class TasksDataManager: BPLogger { case .externalUpdate: context.insert(buildExternalUpdateTask(parameters)) case .uploadFile: - let task = ConcurrentUploadTaskModel( + let task = UploadFileTaskModel( id: parameters["id"] as! String, uuid: parameters["uuid"] as! String, filePath: parameters["filePath"] as! String, @@ -512,8 +512,8 @@ public final class TasksDataManager: BPLogger { ) return try context.fetch(descriptor).first case .uploadFile: - let descriptor = FetchDescriptor( - predicate: #Predicate { task in task.id == id } + let descriptor = FetchDescriptor( + predicate: #Predicate { task in task.id == id } ) return try context.fetch(descriptor).first } From dbff6d688e4b57490a0d2dee7d99efc3e17733af Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 13 Sep 2026 19:40:56 -0500 Subject: [PATCH 120/172] fix: set aside a task store no schema in the migration plan can open MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The launch guard matched Cocoa codes 134504/134100 on the error thrown by ModelContainer, but SwiftData wraps them opaquely (SwiftDataError .loadIssueModelContainer, the code only in its explanation text), so the guard never fired: a store written by a schema the plan does not know hit the fatalError and crash-looped the app at launch. The rename in the previous commit exposed it on the test host's pre-rename store. The decision now comes from the store's own metadata, before the container is built: NSManagedObjectModel.makeManagedObjectModel(for:) for every MigrationPlan schema, isConfiguration(withName:compatibleWithStoreMetadata:) against the store — the check SwiftData itself makes before reporting an unknown model version. Unknown → moved aside (.incompatible, one generation); known (current or migratable) → untouched; any other load failure still crashes, as intended (a migration-stage bug must not nuke a healthy store). TasksDataManager gains init(storeURL:) so the path is testable, and takes its schema from SchemaV3 instead of a duplicated model list. Tests: current, V1, alien and missing store detection; the launch path setting an alien store aside and opening fresh; a current store left alone; one set-aside generation kept. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01YNhXd8EkXcrjBVYLHm5ZSp --- BookPlayer.xcodeproj/project.pbxproj | 4 + .../Services/TasksDataManagerStoreTests.swift | 113 ++++++++++++++++++ CLAUDE.md | 9 +- Shared/SwiftData/TasksDataManager.swift | 108 ++++++++--------- 4 files changed, 177 insertions(+), 57 deletions(-) create mode 100644 BookPlayerTests/Services/TasksDataManagerStoreTests.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index f6ca78e32..e097185ce 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -963,6 +963,7 @@ C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */; }; CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */; }; + 786041B335FF61901E55666C /* TasksDataManagerStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */; }; CCC7E1CC127610C3687B8A50 /* SortPreferencesResolving.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */; }; D080B0A77D9844C3A0737170 /* IntegrationConnectionFormViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FB91B577BC77F45EDB2AAAA /* IntegrationConnectionFormViewModel.swift */; }; D2B95B92F8F84F2FA4B41BF6 /* BookEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33D03D266EF46B5B02FBF40 /* BookEntity.swift */; }; @@ -1985,6 +1986,7 @@ FEEDBABE0000000000000001 /* SharedWidgetStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStore.swift; sourceTree = ""; }; FEEDBABE0000000000000004 /* SharedWidgetStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStoreTests.swift; sourceTree = ""; }; FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncQueueTests.swift; sourceTree = ""; }; + B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TasksDataManagerStoreTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -3367,6 +3369,7 @@ A11C418B028982CF431C589F /* LibraryServiceReloadChaptersTests.swift */, 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */, FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */, + B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */, ); path = Services; sourceTree = ""; @@ -5282,6 +5285,7 @@ 5A9506FC8DAB858289E0EF89 /* IntegrationServerAddressTests.swift in Sources */, 3F058A74415A3AF6C17DA8F4 /* IntegrationHostResolverTests.swift in Sources */, CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */, + 786041B335FF61901E55666C /* TasksDataManagerStoreTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/BookPlayerTests/Services/TasksDataManagerStoreTests.swift b/BookPlayerTests/Services/TasksDataManagerStoreTests.swift new file mode 100644 index 000000000..d908f706d --- /dev/null +++ b/BookPlayerTests/Services/TasksDataManagerStoreTests.swift @@ -0,0 +1,113 @@ +// +// TasksDataManagerStoreTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import CoreData +import SwiftData +import XCTest + +@testable import BookPlayerKit + +/// A model no schema in `MigrationPlan` knows — what a store written between schema edits +/// (or by a newer build) looks like to this build. +@Model +final class AlienQueueModel { + var id: String + + init(id: String) { + self.id = id + } +} + +/// The launch-time store guard. Its previous form matched Cocoa error codes on the thrown +/// error, which SwiftData wraps opaquely, so it never fired and an unknown store crash-looped +/// the app at launch. The decision now comes from the store's own metadata, up front. +final class TasksDataManagerStoreTests: XCTestCase { + private var storeURL: URL! + + override func setUpWithError() throws { + let directory = FileManager.default.temporaryDirectory + .appendingPathComponent(UUID().uuidString, isDirectory: true) + try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + storeURL = directory.appendingPathComponent("bp-synctasks.sqlite") + } + + override func tearDownWithError() throws { + try? FileManager.default.removeItem(at: storeURL.deletingLastPathComponent()) + } + + /// Writes an on-disk store for `schema` and releases it. + private func writeStore(_ schema: Schema) throws { + let container = try ModelContainer( + for: schema, + configurations: ModelConfiguration(url: storeURL, cloudKitDatabase: .none) + ) + let context = ModelContext(container) + try context.save() + XCTAssertTrue(FileManager.default.fileExists(atPath: storeURL.path)) + } + + // MARK: - Detection + + func testCurrentSchemaStore_isKnownToThePlan() throws { + try writeStore(Schema(versionedSchema: SchemaV3.self)) + + XCTAssertFalse(TasksDataManager.storeIsUnknownToMigrationPlan(at: storeURL)) + } + + /// An older, migratable store must never be set aside — the plan can carry it forward. + func testOlderSchemaStore_isKnownToThePlan() throws { + try writeStore(Schema(versionedSchema: SchemaV1.self)) + + XCTAssertFalse(TasksDataManager.storeIsUnknownToMigrationPlan(at: storeURL)) + } + + func testAlienSchemaStore_isUnknownToThePlan() throws { + try writeStore(Schema([AlienQueueModel.self])) + + XCTAssertTrue(TasksDataManager.storeIsUnknownToMigrationPlan(at: storeURL)) + } + + func testMissingStore_isNotUnknown() { + XCTAssertFalse(TasksDataManager.storeIsUnknownToMigrationPlan(at: storeURL)) + } + + // MARK: - Launch path + + /// The crash the guard existed for and never caught: an unknown store is set aside (kept as + /// `.incompatible`) and a fresh container opens. + func testInit_setsAsideAnAlienStoreAndOpensFresh() throws { + try writeStore(Schema([AlienQueueModel.self])) + + let manager = TasksDataManager(storeURL: storeURL) + + XCTAssertTrue(FileManager.default.fileExists(atPath: storeURL.path + ".incompatible"), "kept, not deleted") + XCTAssertTrue(FileManager.default.fileExists(atPath: storeURL.path), "a fresh store replaces it") + let context = ModelContext(manager.container) + XCTAssertEqual(try context.fetchCount(FetchDescriptor()), 0) + } + + func testInit_keepsACurrentStore() throws { + try writeStore(Schema(versionedSchema: SchemaV3.self)) + + _ = TasksDataManager(storeURL: storeURL) + + XCTAssertFalse(FileManager.default.fileExists(atPath: storeURL.path + ".incompatible")) + } + + /// Only one set-aside generation survives, so a repeated mismatch cannot pile up copies. + func testSetAsideStore_replacesThePreviousGeneration() throws { + try writeStore(Schema([AlienQueueModel.self])) + TasksDataManager.setAsideStore(at: storeURL) + XCTAssertFalse(FileManager.default.fileExists(atPath: storeURL.path)) + + try writeStore(Schema([AlienQueueModel.self])) + TasksDataManager.setAsideStore(at: storeURL) + + XCTAssertTrue(FileManager.default.fileExists(atPath: storeURL.path + ".incompatible")) + XCTAssertFalse(FileManager.default.fileExists(atPath: storeURL.path)) + } +} diff --git a/CLAUDE.md b/CLAUDE.md index d3d56e8dd..3bb5e7542 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -230,9 +230,12 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi - `TasksDataManager.swift` owns the `ModelContainer`. **Store is `applicationSupportDirectory/bp-synctasks.sqlite` — the app-support dir, NOT the App Group**, separate from the CoreData store. CloudKit disabled. - Container-build failure with an incompatible-store code (cocoa 134504/134100) MOVES the store aside - (`.incompatible` suffix, never deleted) and retries fresh; any other failure — including a fresh-store - failure — still crashes (`fatalError`). + Before the container is built, `storeIsUnknownToMigrationPlan(at:)` checks the store's own metadata against + every `MigrationPlan.schemas` model; a store none of them can open (dev builds between schema edits, an older + build over a newer store) is MOVED aside (`.incompatible` suffix, never deleted) and a fresh one is created. + Don't match Cocoa codes (134504/134100) on the thrown error instead — SwiftData wraps them opaquely, so that + guard never fired. Any load failure that remains — a custom-migration-stage bug, a corrupt file, a fresh store + that won't open — still crashes (`fatalError`). - Versioned schema: `SchemaV1` (10 models) → `SchemaV2` (11 models, adds `MatchUuidsTaskModel` + a `uuid` field) → `SchemaV3` (unified concurrent-task container: `QueuedTaskReferenceModel` with per-queue keys, plus `ExternalUpdateTaskModel`/`UploadFileTaskModel` payloads). App code always uses the V3 typealiases. diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index a5fd2584d..f1bd0f1dd 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -6,78 +6,78 @@ // Copyright © 2024 BookPlayer LLC. All rights reserved. // +import Combine +import CoreData import Foundation import SwiftData -import Combine public final class TasksDataManager: BPLogger { public let container: ModelContainer private let queueCountsSubject = CurrentValueSubject(QueueCounts()) - public init() { - let schema = Schema([ - UploadTaskModel.self, - UpdateTaskModel.self, - MoveTaskModel.self, - DeleteTaskModel.self, - DeleteBookmarkTaskModel.self, - SetBookmarkTaskModel.self, - RenameFolderTaskModel.self, - ArtworkUploadTaskModel.self, - MatchUuidsTaskModel.self, - UploadExternalResourceTaskModel.self, - ExternalResourceToDownloadTaskModel.self, - DeleteExternalResourceTaskModel.self, - SyncQueueContainer.self, - QueuedTaskReferenceModel.self, - ExternalUpdateTaskModel.self, - UploadFileTaskModel.self, - ]) - - let storeURL = DataManager.getSyncTasksSwiftDataURL() + public convenience init() { + self.init(storeURL: DataManager.getSyncTasksSwiftDataURL()) + } + + /// Opens (or creates) the task store at `storeURL`, running `MigrationPlan` when needed. + /// + /// A store written by a schema the plan does not know can never be opened — dev builds + /// between schema edits, or an older build launched over a newer store (TestFlight + /// rollback). Left alone that is a permanent launch crash-loop, so it is set aside FIRST, + /// decided from the store's own metadata: SwiftData wraps the Cocoa error (134504/134100) + /// opaquely, so the code cannot be matched after the fact. Only that case is recoverable. + /// Anything else that fails to load — a bug in a custom migration stage, a corrupt file, a + /// fresh store that will not open — is a programming error and still crashes: the store is + /// healthy, and nuking it would silently discard queued tasks a code fix could still migrate. + init(storeURL: URL) { + let schema = Schema(versionedSchema: SchemaV3.self) let modelConfiguration = ModelConfiguration(url: storeURL, cloudKitDatabase: .none) + if Self.storeIsUnknownToMigrationPlan(at: storeURL) { + Self.logger.error("Sync-tasks store matches no schema in the migration plan; setting aside: \(storeURL.path)") + Self.setAsideStore(at: storeURL) + } + do { container = try ModelContainer(for: schema, migrationPlan: MigrationPlan.self, configurations: [modelConfiguration]) } catch { - // An unloadable store here is a PERMANENT launch crash-loop under try! — e.g. a store - // written by a schema revision the migration plan no longer knows (dev builds between - // schema edits hit exactly this). The task queue is recoverable state: queued work is - // re-derivable, a crashed app is not. Destroy and recreate rather than trap forever. - // ONLY for store-compatibility errors though: a bug thrown by the custom v2ToV3 - // migration stage must keep crashing (the store is healthy — nuking it would silently - // discard queued tasks a code fix could still migrate). - let cocoaCode = ((error as NSError).underlyingErrors.first as? NSError)?.code ?? (error as NSError).code - // ONLY unknown/incompatible-model codes: the generic migration-failure range - // (134110 etc.) can surface a BUG in the custom v2ToV3 stage, and nuking the store - // there would silently discard queued tasks a code fix could still migrate. - let incompatibleStoreCodes: Set = [ - 134504, // Cannot use staged migration with an unknown model version - 134100, // The model used to open the store is incompatible - ] - guard incompatibleStoreCodes.contains(cocoaCode) else { - fatalError("Sync-tasks container failed to load: \(error)") - } - Self.logger.error("Sync-tasks store unloadable (\(error)); setting aside: \(storeURL.path)") - // Move ASIDE, never delete: 134100 also fires when an OLDER build runs over a store - // written by a NEWER schema (TestFlight rollback) — pending deletes/bookmarks there - // are not re-derivable, and the set-aside copy survives for the eventual re-upgrade - // (or support recovery). Only one generation is kept. - let fm = FileManager.default - for suffix in ["", "-wal", "-shm"] { - let src = URL(fileURLWithPath: storeURL.path + suffix) - let dst = URL(fileURLWithPath: storeURL.path + suffix + ".incompatible") - try? fm.removeItem(at: dst) - try? fm.moveItem(at: src, to: dst) - } - // A second failure on a FRESH store is a programming error — crashing is correct. - container = try! ModelContainer(for: schema, migrationPlan: MigrationPlan.self, configurations: [modelConfiguration]) + fatalError("Sync-tasks container failed to load: \(error)") } // Initialize task count from database initializeTasksCount() } + /// `true` when a store exists at `storeURL` whose model matches none of `MigrationPlan.schemas` + /// — the same check SwiftData's staged migration makes before failing with "unknown model + /// version". A missing or unreadable store is NOT unknown: SwiftData gets to report it. + static func storeIsUnknownToMigrationPlan(at storeURL: URL) -> Bool { + guard + FileManager.default.fileExists(atPath: storeURL.path), + let metadata = try? NSPersistentStoreCoordinator.metadataForPersistentStore(type: .sqlite, at: storeURL) + else { return false } + + return !MigrationPlan.schemas.contains { versionedSchema in + guard let model = NSManagedObjectModel.makeManagedObjectModel(for: versionedSchema.models) else { + return false + } + return model.isConfiguration(withName: nil, compatibleWithStoreMetadata: metadata) + } + } + + /// Move ASIDE, never delete: pending deletes and bookmarks in the store are not + /// re-derivable, and the copy survives for the eventual re-upgrade (or support recovery). + /// Only one generation is kept. + static func setAsideStore(at storeURL: URL) { + let fm = FileManager.default + for suffix in ["", "-wal", "-shm"] { + let src = URL(fileURLWithPath: storeURL.path + suffix) + let dst = URL(fileURLWithPath: storeURL.path + suffix + ".incompatible") + try? fm.removeItem(at: dst) + try? fm.moveItem(at: src, to: dst) + } + } + /// Test-only init that accepts a pre-built container (e.g. in-memory for unit tests). internal init(container: ModelContainer) { self.container = container From 9ef0caccab90b8793d87a007d4fd5a1413f32cc4 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 14 Sep 2026 10:05:18 -0500 Subject: [PATCH 121/172] feat: media-server progress pull requires the sync entitlement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The push (`.externalUpdate`) keeps running on every tier — it writes the user's position to the user's own server. The pull is the cross-device sync feature, so ExternalProgressService now gates both the on-play resume prompt and the list refresh on accountService.hasSyncEnabled() (lite or pro), read live on every call, and cancels an in-flight pull when an .accountUpdate drops the entitlement. Free and plus accounts push but never see other devices' positions. The service takes AccountServiceProtocol, matching how SyncService and PreferencesSyncService receive it. Tests: gated on-play pull asks no provider and publishes nothing; gated list pull never reaches the ingest; a downgrade during a slow pull cancels it; an account update that keeps the entitlement leaves the pull alone. AccountServiceMock.hasSyncEnabled is now settable. Android must mirror the pull gate (its external-update gating was deferred). Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_011zgFQrGSgWMre6xsfyrdRw --- BookPlayer/Utils/AppServices.swift | 2 +- BookPlayerTests/ImportOperationTests.swift | 76 ++++++++++++++++++- .../Mocks/AccountServiceMock.swift | 5 +- CLAUDE.md | 10 ++- .../ExternalProgressService.swift | 23 +++++- 5 files changed, 106 insertions(+), 10 deletions(-) diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index 886c3cdce..237a7a6c6 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -128,7 +128,7 @@ final class AppServices: BPLogger { Task { await preferencesService.bootstrap() } let externalProgressService = ExternalProgressService() - externalProgressService.setup(libraryService: libraryService) + externalProgressService.setup(libraryService: libraryService, accountService: accountService) resumeOfferArbiter.bind(to: externalProgressService) let coreServices = CoreServices( diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 4dcddbf49..887d1a1ad 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -747,12 +747,14 @@ final class ExternalProgressServiceTests: XCTestCase { } private var notificationCenter: NotificationCenter! + private var accountService: AccountServiceMock! private var received: [ExternalPlaybackProgress] = [] private var cancellable: AnyCancellable? override func setUp() { super.setUp() notificationCenter = NotificationCenter() + accountService = AccountServiceMock(account: nil) received = [] } @@ -823,15 +825,23 @@ final class ExternalProgressServiceTests: XCTestCase { ) } + /// Entitled (lite/pro) unless a test says otherwise — the pull is gated, the push is not. private func makeSUT( resources: [SimpleExternalResource], - providers: [ExternalResource.ProviderName: ExternalProgressProviding] + providers: [ExternalResource.ProviderName: ExternalProgressProviding], + syncEnabled: Bool = true ) -> (ExternalProgressService, LibraryServiceProtocolMock) { let libraryService = LibraryServiceProtocolMock() libraryService.findResourcesForReturnValue = resources + accountService.hasSyncEnabledValue = syncEnabled let sut = ExternalProgressService() - sut.setup(libraryService: libraryService, providers: providers, notificationCenter: notificationCenter) + sut.setup( + libraryService: libraryService, + accountService: accountService, + providers: providers, + notificationCenter: notificationCenter + ) return (sut, libraryService) } @@ -1067,6 +1077,68 @@ final class ExternalProgressServiceTests: XCTestCase { XCTAssertTrue(jellyfin.requested.isEmpty) XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount, 0) } + + // MARK: the entitlement gate (pull only — the push runs on every tier) + + func testOnPlayPullIsGatedToSyncTiers() async { + let jellyfin = ProviderStub { _ in XCTFail("a free account must not pull"); return nil } + let (sut, _) = makeSUT( + resources: [makeResource(provider: "jellyfin", id: "jf-1")], + providers: [.jellyfin: jellyfin], + syncEnabled: false + ) + let nothing = expectPublish(from: sut, inverted: true) + + sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) + await fulfillment(of: [nothing], timeout: 0.3) + + XCTAssertTrue(jellyfin.requested.isEmpty) + } + + func testListPullIsGatedToSyncTiers() async { + let jellyfin = ProviderStub { _ in XCTFail("a free account must not pull"); return nil } + let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin], syncEnabled: false) + + await sut.refreshItems([makeLibraryItem(resources: [makeResource(provider: "jellyfin", id: "jf-1")])]) + + XCTAssertTrue(jellyfin.requested.isEmpty) + XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount, 0) + } + + /// The entitlement is read live, so a downgrade takes effect on the NEXT pull; the one + /// already in flight is cancelled by the account-update observer. + func testDowngradeCancelsAnInFlightPull() async { + let slow = slowStub(ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000))) + let (sut, _) = makeSUT( + resources: [makeResource(provider: "jellyfin", id: "jf-1")], + providers: [.jellyfin: slow] + ) + let nothing = expectPublish(from: sut, inverted: true) + + sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) + accountService.hasSyncEnabledValue = false + notificationCenter.post(name: .accountUpdate, object: nil) + // Longer than the stub's sleep, so an un-cancelled refresh WOULD have published by now. + await fulfillment(of: [nothing], timeout: 0.6) + + XCTAssertEqual(slow.requested, ["jf-1"], "the pull had started; the downgrade stopped it") + } + + /// Account updates that keep the entitlement (renewal, pro↔lite) must not cancel anything. + func testAccountUpdateWhileEntitledKeepsThePull() async { + let slow = slowStub(ExternalPlaybackProgress(currentTime: 900, lastPlayedDate: Date(timeIntervalSince1970: 9000))) + let (sut, _) = makeSUT( + resources: [makeResource(provider: "jellyfin", id: "jf-1")], + providers: [.jellyfin: slow] + ) + let published = expectPublish(from: sut) + + sut.refreshProgress(for: makeItem(uuid: "UUID", currentTime: 0, lastPlayDate: nil)) + notificationCenter.post(name: .accountUpdate, object: nil) + await fulfillment(of: [published], timeout: 2) + + XCTAssertEqual(received.map(\.currentTime), [900]) + } } // MARK: - External stream resolution diff --git a/BookPlayerTests/Mocks/AccountServiceMock.swift b/BookPlayerTests/Mocks/AccountServiceMock.swift index 652509144..27e093477 100644 --- a/BookPlayerTests/Mocks/AccountServiceMock.swift +++ b/BookPlayerTests/Mocks/AccountServiceMock.swift @@ -21,8 +21,11 @@ class AccountServiceMock: AccountServiceProtocol { return nil } + /// Settable so a test can model lite/pro (true) vs free/plus (false); defaults to free. + var hasSyncEnabledValue = false + func hasSyncEnabled() -> Bool { - return false + return hasSyncEnabledValue } func hasPlusAccess() -> Bool { diff --git a/CLAUDE.md b/CLAUDE.md index 3bb5e7542..c6c8b33ef 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -122,8 +122,8 @@ first. Reordering boot risks a launch crash. - `@MainActor final class AppServices` with `static let shared` + `private init()`. Owns the async `setupCoreServicesTask`, the `DatabaseInitializer`, and a shared `PlayerState`. - `CoreServices` (`BookPlayer/Utils/CoreServices.swift`) is a struct of exactly **12 services**: `accountService`, - `syncQueueService`, `externalProgressService` (pulls media-server playback positions; self-subscribes to - `.bookPlayed` so the pull never depends on which UI is attached), + `syncQueueService`, `externalProgressService` (pulls media-server playback positions for lite/pro accounts; + self-subscribes to `.bookPlayed` so the pull never depends on which UI is attached), `dataManager`, `hardcoverService`, `libraryService`, `playbackService`, `playerLoaderService`, `playerManager`, `preferencesService` (`PreferencesSyncService`), `syncService`, `watchService` (`PhoneWatchConnectivityService`). - **Two-step `init()` + `setup(...)` DI pattern:** services are created empty then configured, e.g. @@ -321,7 +321,11 @@ lines). It is the highest-risk file in the app. - **Sync = the `pro` OR `lite` entitlement** (`hasSyncEnabled()`); `lite` gets DB-backed sync only — S3 file uploads are gated per-job via `SyncQueueService.accessPolicy` (`.uploadFile` is pro-only, `.externalUpdate` — progress pushes to the USER'S OWN media server — is available on every tier, - matching the Android app). Job types (`SyncJobType`): `upload, update, move, + matching the Android app). **The media-server progress PULL is the opposite:** `ExternalProgressService` + gates both the on-play resume prompt and the list refresh on `accountService.hasSyncEnabled()` (lite/pro), + read live on every pull, and cancels an in-flight pull on an `.accountUpdate` that drops the entitlement — + free/plus users push to their own server but never see other devices' positions. Android must mirror this. + Job types (`SyncJobType`): `upload, update, move, renameFolder, delete, shallowDelete, setBookmark, deleteBookmark, uploadArtwork, matchUuid`. - **Download verification:** `verifyDownloadedFile` rejects truncated files by comparing `AVURLAsset` duration to the stored duration (tolerance `max(2, expected*0.02)`); completion is broadcast only after verification. diff --git a/Shared/Services/ExternalProgress/ExternalProgressService.swift b/Shared/Services/ExternalProgress/ExternalProgressService.swift index cad03b559..79c2ab7a0 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressService.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressService.swift @@ -18,15 +18,17 @@ import Foundation /// decide whether the feature ran at all: CarPlay claims the same delegate slot and answered /// with an empty implementation, so a car-only session silently never pulled. /// -/// Nothing here is entitlement-gated, matching the push: `.externalUpdate` runs on every tier -/// because it talks to the user's OWN server, and gating only the pull would make the two -/// directions disagree. +/// The two directions are gated differently on purpose. The push (`.externalUpdate`) runs on +/// every tier: it writes the user's position to the user's OWN server. The pull — both the +/// on-play prompt and the list refresh — is the cross-device sync feature, so it needs the +/// sync entitlement (`lite` or `pro`, `hasSyncEnabled()`), read live on every call. public final class ExternalProgressService { /// A remote position worth offering the user, published rather than written into UI state so /// both presentations — the SwiftUI alert and CarPlay's own — can consume the one decision. public let promptablePositionPublisher = PassthroughSubject() private var libraryService: LibraryServiceProtocol! + private var accountService: AccountServiceProtocol! private var providers: [ExternalResource.ProviderName: ExternalProgressProviding] = [:] /// Guards the single in-flight refresh and the uuid it was started for. Non-isolated so the @@ -41,6 +43,7 @@ public final class ExternalProgressService { public func setup( libraryService: LibraryServiceProtocol, + accountService: AccountServiceProtocol, providers: [ExternalResource.ProviderName: ExternalProgressProviding] = [ .jellyfin: JellyfinProgressProvider(), .audiobookshelf: AudiobookShelfProgressProvider(), @@ -48,6 +51,7 @@ public final class ExternalProgressService { notificationCenter: NotificationCenter = .default ) { self.libraryService = libraryService + self.accountService = accountService self.providers = providers self.notificationCenter = notificationCenter @@ -70,6 +74,15 @@ public final class ExternalProgressService { self?.teardown() } .store(in: &disposeBag) + + // A downgrade mid-refresh must not still publish a prompt: the entitlement is checked + // at the start of every pull, and here for the one already in flight. + notificationCenter.publisher(for: .accountUpdate) + .sink { [weak self] _ in + guard let self, !self.accountService.hasSyncEnabled() else { return } + self.teardown() + } + .store(in: &disposeBag) } /// Ask every media server this item is linked to where the user is, and publish the answer @@ -80,6 +93,8 @@ public final class ExternalProgressService { /// already moved on from could still raise a prompt carrying that book's position — and the /// alert's "resume" then seeks whatever is playing to a timestamp from another book. public func refreshProgress(for item: PlayableItem) { + guard accountService.hasSyncEnabled() else { return } + let uuid = item.uuid let localTime = item.currentTime let localDate = item.lastPlayDate @@ -120,6 +135,8 @@ public final class ExternalProgressService { /// items refresh alongside Jellyfin ones — they never did before, because the ingest was /// typed to a Jellyfin item and the caller collected only Jellyfin resources. public func refreshItems(_ items: [SimpleLibraryItem]) async { + guard accountService.hasSyncEnabled() else { return } + let resources = items.flatMap { $0.externalResources?.mediaServerResources ?? [] } guard !resources.isEmpty else { return } From d85705e9f3563e3cfc0b2c21aeb7fedf7fb0e305 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 14 Sep 2026 10:24:43 -0500 Subject: [PATCH 122/172] refactor: the list refresh pulls media-server progress per level, resource-first MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ListSyncRefreshService.syncList(at:) is now the one place every list refresh goes through — list appear, pull-to-refresh, sync activation, CarPlay — and it pulls the level's media-server positions right after the cloud sync of the same level: strictly sequential (cloud writes on the background context, the progress ingest on the view context; no merge policy), whatever the cloud outcome, for the whole level rather than the loaded page. Pull-to-refresh and CarPlay gain the pull; links that arrived in the same sync are pulled in the same cycle. Resource-first: LibraryService.findMediaServerResources(at:) fetches only the level's media-server ExternalResource rows on the background context — direct children, providers filtered in SQL from ProviderName.mediaServerRawValues — instead of building every item snapshot at the level on the main thread and discarding all but the links. ExternalResource.ProviderName.isMediaServer is now the single exhaustive switch; SimpleExternalResource derives from it. The view model loses updateFromResource and its progress-service dependency; the environment key and the coordinator's injection go with it. The dead syncList(at:alertPresenter:) variant (no callers here or on develop) is removed. ExternalProgressRefreshing is the one-method seam the refresh service takes. Tests: level query at root (Hardcover filtered), folder (direct children only, a moved book leaves root), empty and unknown levels; first coverage of ListSyncRefreshService (cloud then pull for the same path, pull still runs when the cloud sync throws); the progress-service batch tests ported onto the path-based refresh, plus the gate skipping the library query entirely. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_011zgFQrGSgWMre6xsfyrdRw --- BookPlayer.xcodeproj/project.pbxproj | 4 + BookPlayer/Coordinators/MainCoordinator.swift | 6 +- .../Generated/AutoMockable.generated.swift | 20 ++++ .../Library/ItemList/ItemListViewModel.swift | 11 --- .../Library/ItemList/LibraryRootView.swift | 3 - BookPlayer/Services/CarPlayManager.swift | 3 +- .../Services/ListSyncRefreshService.swift | 95 +++---------------- .../Extensions/Environment+BookPlayer.swift | 1 - BookPlayerTests/ImportOperationTests.swift | 52 ++++------ .../ListSyncRefreshServiceTests.swift | 87 +++++++++++++++++ .../Services/LibraryServiceTests.swift | 46 +++++++++ CLAUDE.md | 11 ++- .../ExternalResource+CoreDataClass.swift | 23 ++++- .../SimpleExternalResource.swift | 18 +--- .../ExternalProgressProviding.swift | 8 ++ .../ExternalProgressService.swift | 18 ++-- Shared/Services/LibraryService.swift | 39 +++++++- 17 files changed, 284 insertions(+), 161 deletions(-) create mode 100644 BookPlayerTests/ListSyncRefreshServiceTests.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index e097185ce..47432dc00 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -133,6 +133,7 @@ 4160A0A123F304530039166B /* LocalizableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4160A0A023F304530039166B /* LocalizableLabel.swift */; }; 4163E313214AC43000072AA2 /* ImportOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4163E312214AC43000072AA2 /* ImportOperationTests.swift */; }; 28EEB2588DE468A6B8C15272 /* RefreshTaskOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */; }; + 3EBBB264D481A0F2DF48763E /* ListSyncRefreshServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098A98893A8783E8BE1C5420 /* ListSyncRefreshServiceTests.swift */; }; FDA22898B1CD320A1D8F6C52 /* QueuedTaskDisplayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */; }; 41640A3724416EE8004FB97B /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 41640A3624416EE8004FB97B /* Intents.intentdefinition */; settings = {ATTRIBUTES = (no_codegen, ); }; }; 41640A452441ACE2004FB97B /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 41640A3624416EE8004FB97B /* Intents.intentdefinition */; }; @@ -1261,6 +1262,7 @@ 4163E3102148606600072AA2 /* ImportFileItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportFileItem.swift; sourceTree = ""; }; 4163E312214AC43000072AA2 /* ImportOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportOperationTests.swift; sourceTree = ""; }; 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTaskOperationTests.swift; sourceTree = ""; }; + 098A98893A8783E8BE1C5420 /* ListSyncRefreshServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListSyncRefreshServiceTests.swift; sourceTree = ""; }; EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTaskDisplayTests.swift; sourceTree = ""; }; 4163E314214ACB4300072AA2 /* DataTestUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTestUtils.swift; sourceTree = ""; }; 41640A1F24416774004FB97B /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; }; @@ -2469,6 +2471,7 @@ 63833DF82AAC134600496246 /* PerformanceTests */, 4163E312214AC43000072AA2 /* ImportOperationTests.swift */, 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */, + 098A98893A8783E8BE1C5420 /* ListSyncRefreshServiceTests.swift */, EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */, 41C3CF7D20AEA5E5007C3EF4 /* DataManagerTests.swift */, 9F8A9A5D27AC3F8C0093AA1C /* PlayableItemTests.swift */, @@ -5270,6 +5273,7 @@ 232F1DA50BB33EB5A629B8B7 /* PlayableChapterTests.swift in Sources */, 4163E313214AC43000072AA2 /* ImportOperationTests.swift in Sources */, 28EEB2588DE468A6B8C15272 /* RefreshTaskOperationTests.swift in Sources */, + 3EBBB264D481A0F2DF48763E /* ListSyncRefreshServiceTests.swift in Sources */, FDA22898B1CD320A1D8F6C52 /* QueuedTaskDisplayTests.swift in Sources */, 0CEC6B48350FC9C0A0B7D1C0 /* SyncTasksStorageTests.swift in Sources */, 1A26F7D72FFD6D625A313FC5 /* AudioMetadataServiceTests.swift in Sources */, diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index 4a84e3813..1c11da993 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -19,7 +19,6 @@ class MainCoordinator: NSObject { let importManager: ImportManager let playerManager: PlayerManager - let externalProgressService: ExternalProgressService let playerLoaderService: PlayerLoaderService let singleFileDownloadService: SingleFileDownloadService let libraryService: LibraryService @@ -58,10 +57,10 @@ class MainCoordinator: NSObject { playerManager: playerManager, syncService: syncService, playerLoaderService: coreServices.playerLoaderService, - preferencesService: coreServices.preferencesService + preferencesService: coreServices.preferencesService, + externalProgressService: coreServices.externalProgressService ) self.syncQueueService = coreServices.syncQueueService - self.externalProgressService = coreServices.externalProgressService self.singleFileDownloadService = SingleFileDownloadService(networkClient: NetworkClient()) self.watchConnectivityService = coreServices.watchService let jellyfinService = JellyfinConnectionService() @@ -113,7 +112,6 @@ class MainCoordinator: NSObject { .environment(\.playbackService, playbackService) .environment(\.preferencesService, preferencesService) .environment(\.syncQueueService, syncQueueService) - .environment(\.externalProgressService, externalProgressService) ) vc.modalPresentationStyle = .fullScreen vc.modalTransitionStyle = .crossDissolve diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index 3ca7e53bd..b2d4ac745 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -1117,6 +1117,26 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { return findResourcesForReturnValue } } + //MARK: - findMediaServerResources + + var findMediaServerResourcesAtCallsCount = 0 + var findMediaServerResourcesAtCalled: Bool { + return findMediaServerResourcesAtCallsCount > 0 + } + var findMediaServerResourcesAtReceivedRelativePath: String? + var findMediaServerResourcesAtReceivedInvocations: [String?] = [] + var findMediaServerResourcesAtReturnValue: [SimpleExternalResource]! + var findMediaServerResourcesAtClosure: ((String?) async -> [SimpleExternalResource])? + func findMediaServerResources(at relativePath: String?) async -> [SimpleExternalResource] { + findMediaServerResourcesAtCallsCount += 1 + findMediaServerResourcesAtReceivedRelativePath = relativePath + findMediaServerResourcesAtReceivedInvocations.append(relativePath) + if let findMediaServerResourcesAtClosure = findMediaServerResourcesAtClosure { + return await findMediaServerResourcesAtClosure(relativePath) + } else { + return findMediaServerResourcesAtReturnValue + } + } //MARK: - insertItems var insertItemsFromResourcesCallsCount = 0 diff --git a/BookPlayer/Library/ItemList/ItemListViewModel.swift b/BookPlayer/Library/ItemList/ItemListViewModel.swift index db4d403a2..2371933cf 100644 --- a/BookPlayer/Library/ItemList/ItemListViewModel.swift +++ b/BookPlayer/Library/ItemList/ItemListViewModel.swift @@ -17,7 +17,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { let playerManager: PlayerManager private let syncService: SyncService private let listSyncRefreshService: ListSyncRefreshService - private let externalProgressService: ExternalProgressService private let loadingState: LoadingOverlayState private let listState: ListStateManager let singleFileDownloadService: SingleFileDownloadService @@ -106,7 +105,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { playerManager: PlayerManager, syncService: SyncService, listSyncRefreshService: ListSyncRefreshService, - externalProgressService: ExternalProgressService, loadingState: LoadingOverlayState, listState: ListStateManager, singleFileDownloadService: SingleFileDownloadService @@ -117,7 +115,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { self.playerManager = playerManager self.syncService = syncService self.listSyncRefreshService = listSyncRefreshService - self.externalProgressService = externalProgressService self.loadingState = loadingState self.listState = listState self.singleFileDownloadService = singleFileDownloadService @@ -267,7 +264,6 @@ final class ItemListViewModel: ObservableObject, BPLogger { contentsFetchTask = Task { do { try await listSyncRefreshService.syncList(at: libraryNode.folderRelativePath) - await updateFromResource() await MainActor.run { listState.reloadAll() } @@ -867,13 +863,6 @@ extension ItemListViewModel { loadingState.error = BookPlayerError.networkError("Code \(statusCode)\n\(HTTPURLResponse.localizedString(forStatusCode: statusCode))") } } - - /// Fold in what the items' own media servers report. The grouping-by-server and the - /// per-provider batching live in ExternalProgressService now, which is also why - /// AudiobookShelf items refresh here at all — this used to collect Jellyfin resources only. - func updateFromResource() async { - await externalProgressService.refreshItems(items) - } } extension ItemListViewModel: PlaybackSyncProgressDelegate { diff --git a/BookPlayer/Library/ItemList/LibraryRootView.swift b/BookPlayer/Library/ItemList/LibraryRootView.swift index f0f9de6b0..3818ff9bf 100644 --- a/BookPlayer/Library/ItemList/LibraryRootView.swift +++ b/BookPlayer/Library/ItemList/LibraryRootView.swift @@ -46,7 +46,6 @@ struct LibraryRootView: View { @Environment(\.playbackService) private var playbackService @Environment(\.syncService) private var syncService @Environment(\.hardcoverService) private var hardcoverService - @Environment(\.externalProgressService) private var externalProgressService @Environment(\.scenePhase) private var scenePhase var body: some View { @@ -59,7 +58,6 @@ struct LibraryRootView: View { playerManager: playerManager, syncService: syncService, listSyncRefreshService: listSyncRefreshService, - externalProgressService: externalProgressService, loadingState: loadingState, listState: listState, singleFileDownloadService: singleFileDownloadService @@ -74,7 +72,6 @@ struct LibraryRootView: View { playerManager: playerManager, syncService: syncService, listSyncRefreshService: listSyncRefreshService, - externalProgressService: externalProgressService, loadingState: loadingState, listState: listState, singleFileDownloadService: singleFileDownloadService diff --git a/BookPlayer/Services/CarPlayManager.swift b/BookPlayer/Services/CarPlayManager.swift index e3cbced5a..3759dd713 100644 --- a/BookPlayer/Services/CarPlayManager.swift +++ b/BookPlayer/Services/CarPlayManager.swift @@ -142,7 +142,8 @@ class CarPlayManager: NSObject { playerManager: coreServices.playerManager, syncService: coreServices.syncService, playerLoaderService: coreServices.playerLoaderService, - preferencesService: coreServices.preferencesService + preferencesService: coreServices.preferencesService, + externalProgressService: coreServices.externalProgressService ) self?.listSyncRefreshService = listRefreshService diff --git a/BookPlayer/Services/ListSyncRefreshService.swift b/BookPlayer/Services/ListSyncRefreshService.swift index dbece3d44..e28f2c778 100644 --- a/BookPlayer/Services/ListSyncRefreshService.swift +++ b/BookPlayer/Services/ListSyncRefreshService.swift @@ -15,108 +15,37 @@ enum BPSyncRefreshError: Error { case disabled } +/// Refreshes one library level from every remote it has: the BookPlayer cloud (contents and +/// last-played book), the user's synced preferences, and the positions the level's media +/// servers report. Every caller — list appear, pull-to-refresh, sync activation, CarPlay — +/// goes through `syncList(at:)`, so no entry point can forget a step. final class ListSyncRefreshService: BPLogger, ObservableObject { let playerManager: PlayerManagerProtocol let syncService: SyncServiceProtocol let playerLoaderService: PlayerLoaderService let preferencesService: PreferencesSyncServiceProtocol + let externalProgressService: ExternalProgressRefreshing init( playerManager: PlayerManagerProtocol, syncService: SyncServiceProtocol, playerLoaderService: PlayerLoaderService, - preferencesService: PreferencesSyncServiceProtocol + preferencesService: PreferencesSyncServiceProtocol, + externalProgressService: ExternalProgressRefreshing ) { self.playerManager = playerManager self.syncService = syncService self.playerLoaderService = playerLoaderService self.preferencesService = preferencesService + self.externalProgressService = externalProgressService } - func syncList(at relativePath: String?, alertPresenter: AlertPresenter) async { + func syncList(at relativePath: String?) async throws { // Pref pull runs in parallel with content sync and is independent of the // item-sync queue state — kick it off first so a queue-blocked content // sync doesn't skip the pref refresh. async let prefPull: Void = { await preferencesService.pullFromServer(force: false) }() - do { - if let relativePath { - try await syncService.syncListContents(at: relativePath) - } else if UserDefaults.standard.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents) == true { - try await syncService.syncListContents(at: nil) - } else { - try await syncService.syncLibraryContents() - } - } catch BPSyncError.reloadLastBook(let relativePath) { - await reloadLastBook(relativePath: relativePath, alertPresenter: alertPresenter) - } catch BPSyncError.differentLastBook(let relativePath) { - await setSyncedLastPlayedItem(relativePath: relativePath, alertPresenter: alertPresenter) - } catch { - Self.logger.trace("Sync contents error: \(error.localizedDescription)") - } - - _ = await prefPull - } - - @MainActor - private func reloadLastBook(relativePath: String, alertPresenter: AlertPresenter) { - let wasPlaying = playerManager.isPlaying - playerManager.stop() - - Task { @MainActor in - do { - try await playerLoaderService.loadPlayer( - relativePath, - autoplay: wasPlaying - ) - } catch BPPlayerError.fileMissing { - alertPresenter.showAlert( - "file_missing_title".localized, - message: - "\("file_missing_description".localized)\n\(relativePath)", - completion: nil - ) - } catch { - alertPresenter.showAlert( - "error_title".localized, - message: error.localizedDescription, - completion: nil - ) - } - } - } - - @MainActor - private func setSyncedLastPlayedItem(relativePath: String, alertPresenter: AlertPresenter) async { - /// Only continue overriding local book if it's not currently playing - guard playerManager.isPlaying == false else { return } - - await syncService.setLibraryLastBook(with: relativePath) - - do { - try await playerLoaderService.loadPlayer( - relativePath, - autoplay: false - ) - } catch BPPlayerError.fileMissing { - alertPresenter.showAlert( - "file_missing_title".localized, - message: - "\("file_missing_description".localized)\n\(relativePath)", - completion: nil - ) - } catch { - alertPresenter.showAlert( - "error_title".localized, - message: error.localizedDescription, - completion: nil - ) - } - } - - func syncList(at relativePath: String?) async throws { - async let prefPull: Void = { await preferencesService.pullFromServer(force: false) }() - do { if let relativePath { try await syncService.syncListContents(at: relativePath) @@ -133,6 +62,12 @@ final class ListSyncRefreshService: BPLogger, ObservableObject { Self.logger.trace("Sync contents error: \(error.localizedDescription)") } + // Strictly AFTER the cloud step, never alongside it: the sync wrote this level on the + // background context and the progress ingest writes on the view context, and with no + // merge policy set the two must not overlap. Runs whatever the cloud outcome was — the + // media servers are separate hosts, and the pull is gated on the entitlement inside. + await externalProgressService.refreshItems(at: relativePath) + _ = await prefPull } diff --git a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift index 67ad67368..bb06d802e 100644 --- a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift +++ b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift @@ -16,7 +16,6 @@ extension EnvironmentValues { @Entry var playerLoaderService: PlayerLoaderService = .init() @Entry var playbackService: PlaybackService = .init() @Entry var syncQueueService: SyncQueueService = .init() - @Entry var externalProgressService: ExternalProgressService = .init() @Entry var jellyfinService: JellyfinConnectionService = .init() @Entry var audiobookshelfService: AudiobookShelfConnectionService = .init() @Entry var hardcoverService: HardcoverService = .init() diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 887d1a1ad..17730341d 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -775,28 +775,6 @@ final class ExternalProgressServiceTests: XCTestCase { ) } - private func makeLibraryItem(resources: [SimpleExternalResource]?) -> SimpleLibraryItem { - SimpleLibraryItem( - title: "Book", - details: "Author", - speed: 1, - currentTime: 0, - duration: 1000, - percentCompleted: 0, - isFinished: false, - relativePath: "book-\(resources?.first?.providerId ?? "none").m4b", - remoteURL: nil, - artworkURL: nil, - orderRank: 0, - parentFolder: nil, - originalFileName: "book.m4b", - lastPlayDate: nil, - type: .book, - uuid: "UUID-\(resources?.first?.providerId ?? "none")", - externalResources: resources - ) - } - private func makeItem(uuid: String, currentTime: TimeInterval, lastPlayDate: Date?) -> PlayableItem { PlayableItem( title: "Book", @@ -1038,7 +1016,9 @@ final class ExternalProgressServiceTests: XCTestCase { /// The gap this closes: the list refresh collected Jellyfin resources only and handed them /// to an ingest typed to a Jellyfin item, so AudiobookShelf items were never refreshed. - func testRefreshItemsFoldsInBothProviders() async { + /// The level's links come from ONE resource-first library query, asked for exactly the path + /// the list is syncing. + func testRefreshItemsAtLevelFoldsInBothProviders() async { let jellyfin = ProviderStub { _ in ExternalPlaybackProgress(currentTime: 120, lastPlayedDate: Date(timeIntervalSince1970: 500)) } @@ -1046,13 +1026,14 @@ final class ExternalProgressServiceTests: XCTestCase { ExternalPlaybackProgress(currentTime: 340, lastPlayedDate: Date(timeIntervalSince1970: 900)) } let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin, .audiobookshelf: abs]) + libraryService.findMediaServerResourcesAtReturnValue = [ + makeResource(provider: "jellyfin", id: "jf-1"), + makeResource(provider: "audiobookshelf", id: "abs-1"), + ] - await sut.refreshItems([ - makeLibraryItem(resources: [makeResource(provider: "jellyfin", id: "jf-1")]), - makeLibraryItem(resources: [makeResource(provider: "audiobookshelf", id: "abs-1")]), - makeLibraryItem(resources: [makeResource(provider: "hardcover", id: "12345")]), - ]) + await sut.refreshItems(at: "Author/Series") + XCTAssertEqual(libraryService.findMediaServerResourcesAtReceivedInvocations, ["Author/Series"]) XCTAssertEqual(jellyfin.requested, ["jf-1"]) XCTAssertEqual(abs.requested, ["abs-1"], "AudiobookShelf items refresh too") @@ -1062,18 +1043,16 @@ final class ExternalProgressServiceTests: XCTestCase { ["jellyfin", "audiobookshelf"], "each provider folds its own answers in, under its own provider name" ) - XCTAssertFalse( - ingested.contains { $0.providerName == "hardcover" }, - "hardcover hosts nothing, so it is never batched" - ) } - func testRefreshItemsDoesNothingWithoutMediaServerResources() async { + func testRefreshItemsAtLevelDoesNothingWithoutMediaServerResources() async { let jellyfin = ProviderStub { _ in XCTFail("must not be asked"); return nil } let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin]) + libraryService.findMediaServerResourcesAtReturnValue = [] - await sut.refreshItems([makeLibraryItem(resources: nil)]) + await sut.refreshItems(at: nil) + XCTAssertEqual(libraryService.findMediaServerResourcesAtReceivedInvocations, [nil], "root is asked as nil") XCTAssertTrue(jellyfin.requested.isEmpty) XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount, 0) } @@ -1095,12 +1074,15 @@ final class ExternalProgressServiceTests: XCTestCase { XCTAssertTrue(jellyfin.requested.isEmpty) } + /// Gated before the library is even queried: a free account costs no fetch at all. func testListPullIsGatedToSyncTiers() async { let jellyfin = ProviderStub { _ in XCTFail("a free account must not pull"); return nil } let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin], syncEnabled: false) + libraryService.findMediaServerResourcesAtReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] - await sut.refreshItems([makeLibraryItem(resources: [makeResource(provider: "jellyfin", id: "jf-1")])]) + await sut.refreshItems(at: "Folder") + XCTAssertEqual(libraryService.findMediaServerResourcesAtCallsCount, 0) XCTAssertTrue(jellyfin.requested.isEmpty) XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount, 0) } diff --git a/BookPlayerTests/ListSyncRefreshServiceTests.swift b/BookPlayerTests/ListSyncRefreshServiceTests.swift new file mode 100644 index 000000000..6c1a53396 --- /dev/null +++ b/BookPlayerTests/ListSyncRefreshServiceTests.swift @@ -0,0 +1,87 @@ +// +// ListSyncRefreshServiceTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import XCTest + +@testable import BookPlayer +@testable import BookPlayerKit + +/// First coverage for the one entry point every list refresh goes through. What it pins is +/// the ORDER: the media-server pull runs after the cloud sync of the same level (they write +/// on different contexts and must never overlap), for the same path, and regardless of how +/// the cloud step ended — the servers are independent hosts. +final class ListSyncRefreshServiceTests: XCTestCase { + /// Shared by the cloud mock and the pull stub so a test can read the sequence back. + private final class Recorder: @unchecked Sendable { + private let lock = NSLock() + private var _events: [String] = [] + + var events: [String] { + lock.lock() + defer { lock.unlock() } + return _events + } + + func record(_ event: String) { + lock.lock() + _events.append(event) + lock.unlock() + } + } + + private final class ProgressRefreshStub: ExternalProgressRefreshing { + let recorder: Recorder + + init(recorder: Recorder) { + self.recorder = recorder + } + + func refreshItems(at relativePath: String?) async { + recorder.record("pull:\(relativePath ?? "root")") + } + } + + private var recorder: Recorder! + private var syncService: SyncServiceProtocolMock! + private var preferencesService: PreferencesSyncServiceProtocolMock! + private var sut: ListSyncRefreshService! + + override func setUp() { + super.setUp() + recorder = Recorder() + syncService = SyncServiceProtocolMock() + syncService.syncListContentsAtClosure = { [recorder] path in + recorder?.record("cloud:\(path ?? "root")") + } + preferencesService = PreferencesSyncServiceProtocolMock() + sut = ListSyncRefreshService( + playerManager: PlayerManagerProtocolMock(), + syncService: syncService, + // Never reached: the loader only runs on the two last-book errors, which no test throws. + playerLoaderService: PlayerLoaderService(), + preferencesService: preferencesService, + externalProgressService: ProgressRefreshStub(recorder: recorder) + ) + } + + func testPullsTheLevelAfterItsCloudSync() async throws { + try await sut.syncList(at: "Author/Series") + + XCTAssertEqual(recorder.events, ["cloud:Author/Series", "pull:Author/Series"]) + XCTAssertEqual(preferencesService.pullFromServerForceCallsCount, 1) + } + + /// A cloud failure (network, server) is logged and swallowed; the media servers still get asked. + func testPullStillRunsWhenTheCloudSyncFails() async throws { + syncService.syncListContentsAtThrowableError = URLError(.notConnectedToInternet) + + try await sut.syncList(at: "Author/Series") + + XCTAssertEqual(recorder.events, ["pull:Author/Series"], "the closure never ran; the pull did") + XCTAssertEqual(preferencesService.pullFromServerForceCallsCount, 1) + } +} diff --git a/BookPlayerTests/Services/LibraryServiceTests.swift b/BookPlayerTests/Services/LibraryServiceTests.swift index 4a0bfedff..401b80589 100644 --- a/BookPlayerTests/Services/LibraryServiceTests.swift +++ b/BookPlayerTests/Services/LibraryServiceTests.swift @@ -2379,6 +2379,52 @@ class LibraryServiceExternalResourceTests: XCTestCase { let rowsAtPath = sut.fetchIdentifiers().filter { $0 == "twin-1-twin-book.m4b" } XCTAssertEqual(rowsAtPath.count, 1, "exactly one row may exist at the synthesized relativePath") } + + // MARK: - findMediaServerResources(at:) — the level query behind the list refresh + + /// Root level: every media-server link on a root item, Hardcover filtered out in the query. + func testFindMediaServerResourcesAtRootSkipsHardcover() async { + let first = makeBook("root-a") + let second = makeBook("root-b") + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "jf-1", for: first.uuid) + _ = await sut.setExternalResource(providerName: "hardcover", providerId: "hc-1", for: first.uuid) + _ = await sut.setExternalResource(providerName: "audiobookshelf", providerId: "abs-1", for: second.uuid) + + let resources = await sut.findMediaServerResources(at: nil) + + XCTAssertEqual(Set(resources.map(\.providerId)), ["jf-1", "abs-1"]) + XCTAssertFalse(resources.contains { $0.providerName == "hardcover" }) + } + + /// A level is its direct children only, like the list: a book moved into a folder leaves the + /// root result and appears in the folder's, and the folder row itself has no links. + func testFindMediaServerResourcesAtFolderReturnsDirectChildrenOnly() async throws { + let inFolder = makeBook("folder-book") + let atRoot = makeBook("root-book") + // Structure first, on the view context; the links after, on the background context. + // No merge policy is set anywhere, so a view-context save over a row the background + // context just changed is a hard crash, not a conflict to resolve (CLAUDE.md hotlist #1). + let folder = try sut.createFolder(with: "Series", inside: nil) + try sut.moveItems([LibraryItemRef(relativePath: inFolder.relativePath, uuid: inFolder.uuid)], inside: folder.relativePath) + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "in-folder", for: inFolder.uuid) + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "at-root", for: atRoot.uuid) + + let folderResources = await sut.findMediaServerResources(at: folder.relativePath) + let rootResources = await sut.findMediaServerResources(at: nil) + + XCTAssertEqual(folderResources.map(\.providerId), ["in-folder"]) + XCTAssertEqual(rootResources.map(\.providerId), ["at-root"], "the moved book no longer belongs to root") + } + + func testFindMediaServerResourcesAtEmptyLevelIsEmpty() async { + _ = makeBook("unlinked") + + let resources = await sut.findMediaServerResources(at: nil) + let missingFolder = await sut.findMediaServerResources(at: "Nowhere") + + XCTAssertTrue(resources.isEmpty) + XCTAssertTrue(missingFolder.isEmpty) + } } // MARK: - Hardcover stub repair diff --git a/CLAUDE.md b/CLAUDE.md index c6c8b33ef..c9b94b2d8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -123,7 +123,8 @@ first. Reordering boot risks a launch crash. `setupCoreServicesTask`, the `DatabaseInitializer`, and a shared `PlayerState`. - `CoreServices` (`BookPlayer/Utils/CoreServices.swift`) is a struct of exactly **12 services**: `accountService`, `syncQueueService`, `externalProgressService` (pulls media-server playback positions for lite/pro accounts; - self-subscribes to `.bookPlayed` so the pull never depends on which UI is attached), + self-subscribes to `.bookPlayed` for the on-play prompt, and `ListSyncRefreshService.syncList` drives the + per-level list pull through the one-method `ExternalProgressRefreshing` seam), `dataManager`, `hardcoverService`, `libraryService`, `playbackService`, `playerLoaderService`, `playerManager`, `preferencesService` (`PreferencesSyncService`), `syncService`, `watchService` (`PhoneWatchConnectivityService`). - **Two-step `init()` + `setup(...)` DI pattern:** services are created empty then configured, e.g. @@ -136,6 +137,14 @@ first. Reordering boot risks a launch crash. - **Services → coordinators:** `CoreServices` is passed whole into `MainCoordinator.init(...)`, which also builds coordinator-scoped services (`ImportManager`, `ListSyncRefreshService`, `SingleFileDownloadService`, `JellyfinConnectionService`, `AudiobookShelfConnectionService`). + `ListSyncRefreshService.syncList(at:)` is the ONE list-refresh entry point (list appear, pull-to-refresh, sync + activation, CarPlay): cloud contents for the level → the level's media-server progress pull → preferences pull. + The pull runs strictly AFTER the cloud step and never alongside it (cloud writes on the background context, the + progress ingest on the view context; no merge policy), whatever the cloud outcome. It is resource-first: + `LibraryService.findMediaServerResources(at:)` fetches only the level's media-server `ExternalResource` rows + (direct children, providers filtered in SQL from `ProviderName.mediaServerRawValues`) on the background context, + so the main thread does nothing but the ingest. `ExternalResource.ProviderName.isMediaServer` is the single + exhaustive "is this a media server" switch; `SimpleExternalResource.isMediaServer` and the SQL filter derive from it. - **Services → SwiftUI:** `ObservableObject`s (`playerManager`, `importManager`, `singleFileDownloadService`, `listSyncRefreshService`) via `.environmentObject`, plus `externalImportEvents`, which `MainView` owns as a `@StateObject` and injects itself — the coordinator builds services, not SwiftUI-internal wires; the rest via `.environment(\.key, …)`. diff --git a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift index ec5050593..1b944bcd6 100644 --- a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift +++ b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift @@ -17,10 +17,29 @@ extension ExternalResource { case downloaded = "downloaded" } - public enum ProviderName: String, Codable { + public enum ProviderName: String, Codable, CaseIterable { case jellyfin case hardcover case audiobookshelf - + + /// Whether this provider is a server the user connects to, as opposed to a metadata + /// service like Hardcover that has no host and streams nothing. + /// + /// The switch has NO `default` on purpose: this is the one place the question is answered, + /// so adding a provider case becomes a compile error here and whoever adds it has to say + /// which side it falls on. Everything else derives from it — `SimpleExternalResource + /// .isMediaServer` and the SQL filter in `LibraryService.findMediaServerResources(at:)`. + public var isMediaServer: Bool { + switch self { + case .jellyfin, .audiobookshelf: true + case .hardcover: false + } + } + + /// The media-server providers as stored in `ExternalResource.providerName`, for an `IN` + /// predicate. + public static var mediaServerRawValues: [String] { + allCases.filter(\.isMediaServer).map(\.rawValue) + } } } diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift index c847635a3..accf65078 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -44,20 +44,12 @@ public struct SimpleExternalResource: Identifiable, Equatable, Hashable { } extension SimpleExternalResource { - /// Whether this link points at a server the user connects to, as opposed to a metadata - /// service like Hardcover that has no host and streams nothing. - /// - /// The switch has NO `default` on purpose: this is the one place the question is answered, - /// so adding a provider case becomes a compile error here and whoever adds it has to say - /// which side it falls on. + /// Whether this link points at a server the user connects to. The answer lives on + /// `ExternalResource.ProviderName.isMediaServer`, the one exhaustive switch. A providerName + /// this build doesn't know is not streamable: building a URL for it would need + /// provider-specific knowledge we don't have. public var isMediaServer: Bool { - switch ExternalResource.ProviderName(rawValue: providerName) { - case .jellyfin, .audiobookshelf: true - case .hardcover: false - // A providerName this build doesn't know: not streamable, since building a URL for it - // would require provider-specific knowledge we don't have. - case nil: false - } + ExternalResource.ProviderName(rawValue: providerName)?.isMediaServer ?? false } } diff --git a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift index b5175d5f7..ec6683321 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift @@ -56,6 +56,14 @@ extension [ExternalPlaybackProgress] { } } +/// The list-refresh entry point `ListSyncRefreshService` drives. One method, so the refresh +/// service can be tested with a recording stub instead of providers, a keychain or a network. +public protocol ExternalProgressRefreshing: AnyObject { + /// Pull the positions of every media-server item at one library level (root when nil) and + /// fold them into the library. Gated to the sync entitlement inside. + func refreshItems(at relativePath: String?) async +} + /// Reads one provider's playback position for a resource. /// /// `Sendable` so the service can fan the providers out concurrently: an item linked to two diff --git a/Shared/Services/ExternalProgress/ExternalProgressService.swift b/Shared/Services/ExternalProgress/ExternalProgressService.swift index 79c2ab7a0..64e386487 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressService.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressService.swift @@ -22,7 +22,7 @@ import Foundation /// every tier: it writes the user's position to the user's OWN server. The pull — both the /// on-play prompt and the list refresh — is the cross-device sync feature, so it needs the /// sync entitlement (`lite` or `pro`, `hasSyncEnabled()`), read live on every call. -public final class ExternalProgressService { +public final class ExternalProgressService: ExternalProgressRefreshing { /// A remote position worth offering the user, published rather than written into UI state so /// both presentations — the SwiftUI alert and CarPlay's own — can consume the one decision. public let promptablePositionPublisher = PassthroughSubject() @@ -128,16 +128,18 @@ public final class ExternalProgressService { } } - /// Refresh the positions of items already on screen, so a list shows what the user's other - /// devices did without waiting for them to open each book. + /// Refresh every media-server item at one library level, so the list shows what the user's + /// other devices did without waiting for them to open each book. /// - /// Every provider is asked in parallel and each folds its own answers in, so AudiobookShelf - /// items refresh alongside Jellyfin ones — they never did before, because the ingest was - /// typed to a Jellyfin item and the caller collected only Jellyfin resources. - public func refreshItems(_ items: [SimpleLibraryItem]) async { + /// Driven by `ListSyncRefreshService.syncList` right after the cloud sync of the same level, + /// on the links that sync just reconciled. Resource-first: one background query returns only + /// the media-server rows, so the main thread does nothing here but the ingest. Every provider + /// is asked in parallel and each folds its own answers in — AudiobookShelf items refresh + /// alongside Jellyfin ones, which they never did while the ingest was typed to a Jellyfin item. + public func refreshItems(at relativePath: String?) async { guard accountService.hasSyncEnabled() else { return } - let resources = items.flatMap { $0.externalResources?.mediaServerResources ?? [] } + let resources = await libraryService.findMediaServerResources(at: relativePath) guard !resources.isEmpty else { return } let byProvider = Dictionary(grouping: resources) { $0.providerName } diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 0afe56149..5853c5de6 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -181,7 +181,13 @@ public protocol LibraryServiceProtocol: AnyObject { func findResource(for providerId: String, providerName: String?) -> SimpleExternalResource? func findResources(for uuid: String) -> [SimpleExternalResource]? - + + /// Media-server links of every item at one library level (root when nil), the way the list + /// refresh needs them: one background fetch of the small resource rows, filtered to media + /// servers in the predicate, with no item snapshots built. Direct children only, like the + /// list itself — a book inside a subfolder belongs to that folder's level. + func findMediaServerResources(at relativePath: String?) async -> [SimpleExternalResource] + // fromResources (not from:): overloading insertItems(from: [URL]) collides in the // Sourcery-generated mock property names. @MainActor func insertItems(fromResources resources: [SimpleExternalResource]) async -> [SimpleLibraryItem] @@ -2944,7 +2950,36 @@ extension LibraryService { } return snapshots } - + + public func findMediaServerResources(at relativePath: String?) async -> [SimpleExternalResource] { + // The background context is the one the cloud sync writes a level on, so the links it just + // reconciled are visible here directly, and the main thread does nothing for this query. + let context = dataManager.getBackgroundContext() + + return await context.perform { + let fetch: NSFetchRequest = ExternalResource.fetchRequest() + let level: NSPredicate + if let relativePath { + level = NSPredicate( + format: "%K == %@", + #keyPath(ExternalResource.libraryItem.folder.relativePath), + relativePath + ) + } else { + level = NSPredicate(format: "%K != nil", #keyPath(ExternalResource.libraryItem.library)) + } + let mediaServers = NSPredicate( + format: "%K IN %@", + #keyPath(ExternalResource.providerName), + ExternalResource.ProviderName.mediaServerRawValues + ) + fetch.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [level, mediaServers]) + + let resources = (try? context.fetch(fetch)) ?? [] + return resources.map { SimpleExternalResource(from: $0, ignoreLibraryItem: true) } + } + } + /// Provider-neutral on purpose: this only ever used the position, the date and the finished /// flag, and typing it to `JellyfinLibraryItem` is what kept AudiobookShelf items from being /// refreshed at all — the caller could not even express an ABS batch. From 26448f750dc1345b83bdf58c35dc8b8829816557 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 14 Sep 2026 22:08:33 -0500 Subject: [PATCH 123/172] feat: split the media-server bulk action into explicit Stream and Download The Jellyfin and AudiobookShelf browsers had one bulk action whose behaviour was chosen by entitlement: handleImportItems streamed when the account could stream and downloaded otherwise. The toolbar gated on hasLiteEnabled(), which reads only the lite entitlement, so pro accounts fell through to an invitation card whose "Download" button ran a virtual import, while lite skipped the card entirely and left the card's own lite copy unreachable. Stream and Download are now separate actions in the overflow menu and in the edit-mode bottom bar. Stream imports the level or the selection when the account carries the entitlement and opens the subscribe flow when it does not; Download always downloads. Both paying tiers can now do either, which they could not before -- the bytes come from the user's own server, so no entitlement is bypassed. SyncInvitationCard is deleted along with its hand-rolled scrim, transition and zIndex, and the confirmation returns to the confirmationDialog it replaced: whole-level Download only, since an explicit selection needs no second confirmation and Stream is already confirmed by ExternalImportView. The dialog's count comes from the resolved request list rather than totalItems, which stays Int.max until a fetch lands. For Jellyfin folders that resolution now happens before the dialog rather than after it, because that download reaches the complete level and counting loaded items promised 20 files while downloading 200; totalItems could not stand in either, since a server omitting totalRecordCount makes updatedTotal publish items.count + itemBatchSize as a pagination probe. The fetch moved rather than duplicated, and a fully loaded folder still short-circuits with no network. isPreparingDownload drives both the progress overlay and the disabled state, as that overlay is a small centred box and cannot guard the toolbar button on its own. The subscribe flow is presented as a sheet instead of a pushed destination, matching every other paywall in the app (SettingsView, AccountView) and keeping it clear of the edit-mode bottom toolbar. Four defects surfaced while auditing this and are fixed alongside it: - The Jellyfin Authors tab inherited allowsEditing from the protocol default while all of its editing actions are empty stubs, so the toolbar offered Select and Download over a list of people. Its sort section was empty too. - Whole-level Download was a no-op on the author/narrator books screen -- onDownloadFolderTapped and confirmDownloadFolder were stubs, so free and plus accounts got a confirmation and then nothing. - The selection branches of both providers filtered by nothing at all while the whole-level branches filtered kind == .audiobook. Both now use isDownloadable, which also drops podcasts: they carry episodes rather than audioFiles, so fileExtension is always nil and VirtualImportPipeline skips them. Removing the Kind case rejects them at the decode boundary instead. Podcast libraries were already filtered by mediaType == "book". - Jellyfin handed an empty request array to handleDownload and dismissed the browser when every request failed to build, which reads as success. On the details screen the download button called handleImportAudiobook, so for pro and lite it streamed rather than downloaded and was indistinguishable from the Stream button beside it; it now calls beginDownloadAudiobook. The unreachable else branch and showSubscribeButton are removed, and Stream no longer dismisses the browser before its own confirmation sheet can present. --- BookPlayer.xcodeproj/project.pbxproj | 4 - .../AudiobookShelfRootView.swift | 9 +- .../AudiobookShelfLibraryViewModel.swift | 34 ++-- ...iobookShelfAudiobookDetailsViewModel.swift | 3 +- BookPlayer/Base.lproj/Localizable.strings | 14 +- BookPlayer/Jellyfin/JellyfinRootView.swift | 18 ++- .../JellyfinAudiobookDetailsViewModel.swift | 3 +- .../JellyfinLibraryGridItemView.swift | 2 +- .../JellyfinLibraryViewModel.swift | 147 +++++++++++++----- .../MediaServerIntegration/BPNavigation.swift | 4 + .../IntegrationLibraryViewModelProtocol.swift | 28 +++- .../IntegrationAudiobookDetailsView.swift | 58 +++---- .../IntegrationLibraryView.swift | 110 ++++++------- .../CompleteAccount/SyncInvitationCard.swift | 100 ------------ .../Profile/Login/ExternalSyncInfoView.swift | 12 ++ BookPlayer/ar.lproj/Localizable.strings | 7 - BookPlayer/ca.lproj/Localizable.strings | 7 - BookPlayer/cs.lproj/Localizable.strings | 7 - BookPlayer/da.lproj/Localizable.strings | 7 - BookPlayer/de.lproj/Localizable.strings | 7 - BookPlayer/el.lproj/Localizable.strings | 7 - BookPlayer/en.lproj/Localizable.strings | 14 +- BookPlayer/es.lproj/Localizable.strings | 7 - BookPlayer/fi.lproj/Localizable.strings | 7 - BookPlayer/fr.lproj/Localizable.strings | 7 - BookPlayer/hu.lproj/Localizable.strings | 7 - BookPlayer/it.lproj/Localizable.strings | 7 - BookPlayer/ja.lproj/Localizable.strings | 7 - BookPlayer/nb.lproj/Localizable.strings | 7 - BookPlayer/nl.lproj/Localizable.strings | 7 - BookPlayer/pl.lproj/Localizable.strings | 7 - BookPlayer/pt-BR.lproj/Localizable.strings | 7 - BookPlayer/pt-PT.lproj/Localizable.strings | 7 - BookPlayer/ro.lproj/Localizable.strings | 7 - BookPlayer/ru.lproj/Localizable.strings | 7 - BookPlayer/sk-SK.lproj/Localizable.strings | 7 - BookPlayer/sv.lproj/Localizable.strings | 7 - BookPlayer/tr.lproj/Localizable.strings | 7 - BookPlayer/uk.lproj/Localizable.strings | 7 - BookPlayer/zh-Hans.lproj/Localizable.strings | 7 - .../AudiobookShelfLibraryItem.swift | 5 +- .../AudiobookShelfLibraryLevelData.swift | 1 - .../IntegrationDetailsViewModelProtocol.swift | 1 - .../IntegrationLibraryItemProtocol.swift | 4 + 44 files changed, 260 insertions(+), 479 deletions(-) delete mode 100644 BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 47432dc00..0fe836dfa 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -680,7 +680,6 @@ 9586CECD8FB418C6CFB0A7DD /* IntegrationLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C407B5BD19D3CF9CC64EC7 /* IntegrationLibraryView.swift */; }; 98BA9BA4D6A94BC8BCCE5F8B /* IntegrationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D9D68F735D2519CDBC18495 /* IntegrationSettingsView.swift */; }; 990442102F889201007E2A44 /* ExternalSyncInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */; }; - 990442122F88B101007E2A44 /* SyncInvitationCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990442112F88B0FC007E2A44 /* SyncInvitationCard.swift */; }; 990442142F894DDB007E2A44 /* SubscriptionPillView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */; }; 990775772FF33BD700E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 990775762FF33BD700E35FAE /* Get */; }; 990775792FF33BE100E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 990775782FF33BE100E35FAE /* Get */; }; @@ -1773,7 +1772,6 @@ 8DA0C0229963991F8CE1E941 /* IntegrationConnectionFlowView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionFlowView.swift; sourceTree = ""; }; 8FBF775DDE66D0AA08818D45 /* LibraryOptionsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LibraryOptionsView.swift; sourceTree = ""; }; 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalSyncInfoView.swift; sourceTree = ""; }; - 990442112F88B0FC007E2A44 /* SyncInvitationCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncInvitationCard.swift; sourceTree = ""; }; 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionPillView.swift; sourceTree = ""; }; 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncOperation.swift; sourceTree = ""; }; 9911FBAE2F71D03100DC9A2B /* SyncQueueService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueService.swift; sourceTree = ""; }; @@ -3678,7 +3676,6 @@ 9F4691F32800F65400A8F0E8 /* CompleteAccount */ = { isa = PBXGroup; children = ( - 990442112F88B0FC007E2A44 /* SyncInvitationCard.swift */, 9F2DC9D82A008B19006CDF1F /* PricingOptionsView.swift */, 9F2DC9DA2A008B28006CDF1F /* PricingRowView.swift */, 9FAB93732A53117C005B92B2 /* CompleteAccountView.swift */, @@ -5207,7 +5204,6 @@ 4124122A26D19B9100B099DB /* StorageItem.swift in Sources */, 41A1B12F226FE0F900EA0400 /* Notification+BookPlayer.swift in Sources */, 3F6640942E17386400356522 /* DeleteUserBookData.swift in Sources */, - 990442122F88B101007E2A44 /* SyncInvitationCard.swift in Sources */, 6356F9BD2AC7CFFB00B7A027 /* CustomSleepTimerIntent.swift in Sources */, 63C48D512E3F1FCC005FBB96 /* ItemListView.swift in Sources */, 412AB70E2701463100969618 /* LoadingViewModel.swift in Sources */, diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index 2723d2611..eaf70668c 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -397,8 +397,6 @@ private struct AudiobookShelfTabRoot: View { ) { onDismiss() } - case .subscribe: - ExternalSyncIntroView() } } .toolbar { @@ -466,6 +464,13 @@ private struct AudiobookShelfTabRoot: View { .tint(theme.linkColor) .environmentObject(theme) } + .sheet(isPresented: $navigation.showingSubscribe) { + NavigationStack { + ExternalSyncIntroView() + } + .tint(theme.linkColor) + .environmentObject(theme) + } .task { navigation.dismiss = onDismiss } diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index ef830a0fe..b6ad7622c 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -49,7 +49,6 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] - @Published var useSelectedItems: Bool = false @Published var showingDownloadConfirmation = false var onTransition: BPTransition? @@ -177,7 +176,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, func destination(for item: AudiobookShelfLibraryItem) -> AudiobookShelfLibraryLevelData? { switch item.kind { - case .audiobook, .podcast: + case .audiobook: return .details(data: item) case .library: return nil @@ -234,27 +233,27 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, } } - func handleImportItems(useSelectedItems: Bool) async { - if accountService.hasStreamingEnabled() { - await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) - } else { - if useSelectedItems { - onDownloadTapped() - } else { - confirmDownloadFolder() - } + /// Stream never downloads: without the entitlement it sells the entitlement. + @MainActor + func onStreamTapped(useSelectedItems: Bool) { + guard accountService.hasStreamingEnabled() else { + goToSubscribe() + return } + Task { await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) } } @MainActor func virtualImportFolderAudiobooks(useSelectedItems: Bool) async { // Reentrancy guard: a double-tap mid-hydration must not run two imports guard !isImporting else { return } + // Both branches filter on isDownloadable so a selection can never carry something + // the whole-level branch would have skipped let audiobooks = useSelectedItems - ? selectedItems.compactMap({ id in - self.items.first(where: { $0.id == id }) - }) - : self.items.filter { $0.kind == .audiobook } + ? selectedItems.compactMap({ id in + self.items.first(where: { $0.id == id && $0.isDownloadable }) + }) + : self.items.filter { $0.isDownloadable } guard !audiobooks.isEmpty else { return } isImporting = true @@ -295,7 +294,6 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, @MainActor func onDownloadFolderTapped() { - useSelectedItems = false showingDownloadConfirmation = true } @@ -305,7 +303,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, // Same filter as virtualImportFolderAudiobooks: folder/collection rows at this // level would each throw in createItemDownloadRequest (last error wins) while // the rest of the loop proceeds — a confusing partial download - for item in self.items where item.kind == .audiobook { + for item in self.items where item.isDownloadable { do { let request = try connectionService.createItemDownloadRequest(item) requests.append(request) @@ -342,7 +340,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, @MainActor func goToSubscribe() { - self.navigation.path.append(AudiobookShelfLibraryLevelData.subscribe) + navigation.showingSubscribe = true } @MainActor diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index 1ac814094..3d07e8142 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -22,7 +22,6 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc @Published var pendingImportBatch: ExternalImportBatch? private var disposeBag = Set() - var showSubscribeButton: Bool { !accountService.hasSyncEnabled() } var allowStream: Bool { accountService.hasStreamingEnabled() } @MainActor @@ -34,7 +33,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc @MainActor func goToSubscribe() { - navigation.path.append(AudiobookShelfLibraryLevelData.subscribe) + navigation.showingSubscribe = true } private var singleFileDownloadService: SingleFileDownloadService diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 29bf93e57..eb6ebe9b1 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -177,8 +177,7 @@ "library_add_title" = "Add your first book"; "invalid_url_title" = "Invalid URL: %@"; "progress_title" = "Progress"; -"download_folder_confirmation_title" = "Download Folder"; -"download_folder_confirmation_message" = "Download all %d files from this folder?"; +"download_folder_confirmation_message" = "Download all %d files?"; "settings_siri_sleeptimer_title" = "Sleep Timer"; "active_title" = "On"; "voiceover_currently_playing_title" = "Currently playing %@ by %@"; @@ -511,10 +510,6 @@ We're working hard on providing a seamless experience, if possible, please conta "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Save Your Storage!"; -"sync_invitation_learn_more_button" = "Learn more"; -"sync_invitation_description" = "You're about to %1$@ %2$d items. %3$@"; -"sync_invitation_stream_description" = "Instead of taking up space, stream them directly from your server and keep your progress synced."; "sync_tasks_concurrent_count_title" = "Concurrent Tasks (%d)"; "sync_tasks_running_empty_title" = "No running tasks"; "sync_tasks_empty_title" = "No queued tasks"; @@ -523,8 +518,6 @@ We're working hard on providing a seamless experience, if possible, please conta "sync_task_upload_file_label" = "Uploading file"; "audiobook_details_narrator_label" = "Narrated by %@"; "stream_button" = "Stream"; -"import_verb" = "import"; -"download_verb" = "download"; "passkey_title" = "Passkey"; "create_profile_title" = "Create your profile"; "create_profile_description" = "To enable cloud sync, sign into your profile. You can always do this later from within the Profile tab"; @@ -541,7 +534,6 @@ We're working hard on providing a seamless experience, if possible, please conta "import_no_audio_files_alert" = "The selected items have no audio files to import."; "import_title" = "Import"; "files_title" = "%d Files"; -"sync_invitation_learn_more_hint" = "Learn more about streaming and syncing items from your server."; "file_path_title" = "File Path"; "genres_title" = "Genres"; "overview_title" = "Overview"; @@ -555,10 +547,6 @@ We're working hard on providing a seamless experience, if possible, please conta "resume_playback_alert_message" = "There is another source with current play time %@. Play from this time?"; "queue_library_sync_title" = "Library Sync"; "queue_file_uploads_title" = "File Uploads"; -"sync_invitation_download_label" = "Download Locally"; -"sync_invitation_import_hint" = "Import %d items to your library."; -"sync_invitation_download_hint" = "Download %d items to your device storage."; -"sync_invitation_close_hint" = "Dismisses the invitation card."; "close_title" = "Close"; "external_sync_benefit_server_title" = "Bring Your Own Server"; "external_sync_benefit_server_subtitle" = "Connect your existing Jellyfin or Audiobookshelf directly to the app."; diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 0b4e0ffff..9a0ea1c47 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -344,6 +344,13 @@ struct JellyfinTabRoot: View { .sheet(isPresented: $showConnectionDetails) { connectionDetailsSheet } + .sheet(isPresented: $navigation.showingSubscribe) { + NavigationStack { + ExternalSyncIntroView() + } + .tint(theme.linkColor) + .environmentObject(theme) + } .task { navigation.dismiss = onDismiss } @@ -420,8 +427,6 @@ struct JellyfinTabRoot: View { ) { onDismiss() } - case .subscribe: - ExternalSyncIntroView() } } @@ -564,6 +569,13 @@ where ViewModel.Item == JellyfinLibraryItem { dismissAll: dismissAll ) } + .sheet(isPresented: $navigation.showingSubscribe) { + NavigationStack { + ExternalSyncIntroView() + } + .tint(theme.linkColor) + .environmentObject(theme) + } .task { navigation.dismiss = onDismiss } @@ -650,8 +662,6 @@ extension JellyfinTabRoot { ) { onDismiss() } - case .subscribe: - ExternalSyncIntroView() } } diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index cbf9f4aef..355b4f3f1 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -27,7 +27,6 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { @Published var pendingImportBatch: ExternalImportBatch? private var disposeBag = Set() - var showSubscribeButton: Bool { !accountService.hasSyncEnabled() } var allowStream: Bool { accountService.hasStreamingEnabled() } @MainActor @@ -39,7 +38,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { @MainActor func goToSubscribe() { - navigation.path.append(JellyfinLibraryLevelData.subscribe) + navigation.showingSubscribe = true } private var singleFileDownloadService: SingleFileDownloadService diff --git a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridItemView.swift b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridItemView.swift index 8df2a22ae..b436c51f9 100644 --- a/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridItemView.swift +++ b/BookPlayer/Jellyfin/Library Screen/GridLayout/JellyfinLibraryGridItemView.swift @@ -33,7 +33,7 @@ struct JellyfinLibraryGridItemView: View { } ) .overlay { - if editMode?.wrappedValue.isEditing == true, item.kind == .audiobook { + if editMode?.wrappedValue.isEditing == true, item.isDownloadable { Image(systemName: isSelected ? "checkmark.circle" : "circle") .foregroundStyle(.white) .background(isSelected ? .blue : .clear) diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index 7d6466fb6..9080e38ad 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -19,7 +19,6 @@ enum JellyfinLibraryLevelData: Equatable, Hashable { case authorBooks(authorID: String, authorName: String, parentID: String?) case narratorBooks(personID: String, personName: String, parentID: String?) case details(data: JellyfinLibraryItem) - case subscribe } /// The author/narrator browse screens are the same VM with a different fetch + @@ -32,7 +31,7 @@ enum JellyfinPersonRole { // MARK: - Shared folder-import flow /// The two Jellyfin book-listing VMs share the identical import flow verbatim; the -/// persons-list VM never imports and deliberately does not conform. handleImportItems +/// persons-list VM never imports and deliberately does not conform. onStreamTapped /// and confirmExternalImport are witnessed by the extension defaults below; /// virtualImportFolderAudiobooks stays a per-VM wrapper so the isImporting reentrancy /// guard keeps its @Published private(set) access. @@ -50,20 +49,18 @@ protocol JellyfinFolderImporting: AnyObject, BPLogger { func virtualImportFolderAudiobooks(useSelectedItems: Bool) async func onDownloadTapped() func confirmDownloadFolder() + func goToSubscribe() } extension JellyfinFolderImporting { + /// Stream never downloads: without the entitlement it sells the entitlement. @MainActor - func handleImportItems(useSelectedItems: Bool) async { - if accountService.hasStreamingEnabled() { - await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) - } else { - if useSelectedItems { - onDownloadTapped() - } else { - confirmDownloadFolder() - } + func onStreamTapped(useSelectedItems: Bool) { + guard accountService.hasStreamingEnabled() else { + goToSubscribe() + return } + Task { await virtualImportFolderAudiobooks(useSelectedItems: useSelectedItems) } } @MainActor @@ -76,13 +73,14 @@ extension JellyfinFolderImporting { /// The shared import body — callers hold the isImporting guard. func runFolderImport(useSelectedItems: Bool) async { - let audiobooks = useSelectedItems - ? selectedItems.compactMap({ id in - self.items.first(where: { $0.id == id }) - }) - : self.items.filter { $0.kind == .audiobook } - - + // Both branches filter on isDownloadable so a selection can never carry something + // the whole-level branch would have skipped + let audiobooks = useSelectedItems + ? selectedItems.compactMap({ id in + self.items.first(where: { $0.id == id && $0.isDownloadable }) + }) + : self.items.filter { $0.isDownloadable } + guard !audiobooks.isEmpty else { return } do { @@ -152,10 +150,15 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, Jelly @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] @Published var showingDownloadConfirmation = false + @Published private(set) var isPreparingDownload = false + + /// Resolved BEFORE the confirmation so the dialog can state the real figure: this + /// folder's download reaches the complete level, which `items` alone can't count. + /// Held only between `onDownloadFolderTapped` and `confirmDownloadFolder`. + private var pendingDownloadRequests: [URLRequest] = [] var isSearchable: Bool { true } - var useSelectedItems = false var onTransition: BPTransition? let folderID: String? @@ -177,6 +180,15 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, Jelly nextStartItemIndex < totalItems } + /// While a confirmation is pending this is the exact number of requests about to run. + /// `totalItems` is not usable here: a server that omits `totalRecordCount` makes + /// `updatedTotal` publish `items.count + itemBatchSize` as a pagination probe. + var downloadableItemCount: Int { + showingDownloadConfirmation + ? pendingDownloadRequests.count + : items.filter { $0.isDownloadable }.count + } + init( folderID: String?, recursive: Bool = false, @@ -387,6 +399,8 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, Jelly @MainActor func onSelectTapped(for item: JellyfinLibraryItem) { + guard item.isDownloadable else { return } + if let index = selectedItems.firstIndex(of: item.id) { selectedItems.remove(at: index) } else { @@ -398,7 +412,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, Jelly func onSelectAllTapped() { if selectedItems.isEmpty { let ids: [JellyfinLibraryItem.ID] = items.compactMap { item in - guard item.kind == .audiobook else { return nil } + guard item.isDownloadable else { return nil } return item.id } @@ -407,11 +421,11 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, Jelly selectedItems.removeAll() } } - + @MainActor func onDownloadTapped() { let items = selectedItems.compactMap({ id in - self.items.first(where: { $0.id == id }) + self.items.first(where: { $0.id == id && $0.isDownloadable }) }) var requests = [URLRequest]() @@ -423,37 +437,58 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, Jelly self.error = error } } + // Every request failing must not read as success: surface the error already set + // above and leave the browser open, matching the AudiobookShelf path + guard !requests.isEmpty else { return } singleFileDownloadService.handleDownload(requests) navigation.dismiss?() } + /// Resolves the request list BEFORE showing the confirmation, so the dialog states the + /// number that will actually download rather than the number currently paged in. This is + /// the same call the download used to make afterwards — moved, not duplicated — and + /// `getAllAudiobookDownloadRequests` still short-circuits a fully loaded folder with no + /// network at all. @MainActor func onDownloadFolderTapped() { - useSelectedItems = false - showingDownloadConfirmation = true - } - - @MainActor - func confirmDownloadFolder() { - guard let folderID else { return } + guard let folderID, !isPreparingDownload else { return } + isPreparingDownload = true Task { @MainActor [weak self] in guard let self else { return } + defer { self.isPreparingDownload = false } do { let requests = try await self.getAllAudiobookDownloadRequests(for: folderID) - self.singleFileDownloadService.handleDownload(requests, folderName: self.navigationTitle) - self.navigation.dismiss?() + // getAllAudiobookDownloadRequests swallows per-item failures with try?, so an + // empty array means nothing could be built — say so instead of opening a + // dialog that would download nothing. + guard !requests.isEmpty else { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return + } + self.pendingDownloadRequests = requests + self.showingDownloadConfirmation = true } catch { self.error = error } } } + @MainActor + func confirmDownloadFolder() { + let requests = pendingDownloadRequests + pendingDownloadRequests = [] + guard !requests.isEmpty else { return } + + singleFileDownloadService.handleDownload(requests, folderName: navigationTitle) + navigation.dismiss?() + } + @MainActor private func getAllAudiobookDownloadRequests(for folderID: String) async throws -> [URLRequest] { if items.count == totalItems { - let audiobooks = items.filter { $0.kind == .audiobook } + let audiobooks = items.filter { $0.isDownloadable } return audiobooks.compactMap { audiobook in try? connectionService.createItemDownloadRequest(audiobook) } @@ -474,7 +509,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, Jelly @MainActor func goToSubscribe() { - self.navigation.path.append(JellyfinLibraryLevelData.subscribe) + navigation.showingSubscribe = true } } @@ -505,10 +540,13 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, J @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] - @Published var useSelectedItems: Bool = false @Published var showingDownloadConfirmation = false var isSearchable: Bool { true } + /// Same reason as the persons list: `JellyfinLibraryView.sortPickerContent` only builds + /// a picker for `JellyfinLibraryViewModel`, so leaving this on renders an empty section. + /// Surfacing this screen's live `sortBy` would mean extending that picker — its own change. + var showsSortPreferences: Bool { false } let onImportConfirmed: ([SimpleExternalResource]) -> Void let connectionService: JellyfinConnectionService @@ -657,8 +695,28 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, J await runFolderImport(useSelectedItems: useSelectedItems) } - @MainActor func onDownloadFolderTapped() {} - @MainActor func confirmDownloadFolder() {} + @MainActor + func onDownloadFolderTapped() { + showingDownloadConfirmation = true + } + + /// Unlike the folder VM there is no `folderID` to fetch against — this level is a query + /// result. It doesn't need one: `fetchInitialItems` asks for `limit: nil` and + /// `fetchMoreItemsIfNeeded` is a no-op, so `items` is always the complete level. + @MainActor + func confirmDownloadFolder() { + let requests = items + .filter { $0.isDownloadable } + .compactMap { try? connectionService.createItemDownloadRequest($0) } + + guard !requests.isEmpty else { + self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + return + } + + singleFileDownloadService.handleDownload(requests, folderName: navigationTitle) + navigation.dismiss?() + } private func applySearch() { let query = searchQuery.trimmingCharacters(in: .whitespacesAndNewlines) @@ -672,7 +730,7 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, J @MainActor func goToSubscribe() { - self.navigation.path.append(JellyfinLibraryLevelData.subscribe) + navigation.showingSubscribe = true } } @@ -700,10 +758,17 @@ final class JellyfinPersonsListViewModel: IntegrationLibraryViewModelProtocol, B @Published var editMode: EditMode = .inactive @Published var selectedItems: Set = [] - @Published var useSelectedItems: Bool = false - @Published var showingDownloadConfirmation = false + // showingDownloadConfirmation is deliberately NOT stored here — the protocol's no-op + // default makes the confirmation structurally unpresentable on a list of people var isSearchable: Bool { true } + /// People aren't importable: every editing action on this screen is a no-op, so the + /// toolbar must not offer Select/Download over a list of authors (ABS opts out the + /// same way for its `.entities` sources). + var allowsEditing: Bool { false } + /// `JellyfinLibraryView.sortPickerContent` only builds a picker for + /// `JellyfinLibraryViewModel`, so leaving this on renders an empty section. + var showsSortPreferences: Bool { false } let connectionService: JellyfinConnectionService var accountService: AccountService @@ -781,7 +846,7 @@ final class JellyfinPersonsListViewModel: IntegrationLibraryViewModelProtocol, B @MainActor func onDownloadFolderTapped() {} @MainActor func confirmDownloadFolder() {} @Published var pendingImportBatch: ExternalImportBatch? - @MainActor func handleImportItems(useSelectedItems: Bool) async {} + @MainActor func onStreamTapped(useSelectedItems: Bool) {} @MainActor func confirmExternalImport(_ resources: [SimpleExternalResource]) {} private func applyLocalSearch() { @@ -792,6 +857,6 @@ final class JellyfinPersonsListViewModel: IntegrationLibraryViewModelProtocol, B @MainActor func goToSubscribe() { - self.navigation.path.append(JellyfinLibraryLevelData.subscribe) + navigation.showingSubscribe = true } } diff --git a/BookPlayer/MediaServerIntegration/BPNavigation.swift b/BookPlayer/MediaServerIntegration/BPNavigation.swift index 71322f502..4755e3de3 100644 --- a/BookPlayer/MediaServerIntegration/BPNavigation.swift +++ b/BookPlayer/MediaServerIntegration/BPNavigation.swift @@ -13,6 +13,10 @@ final class BPNavigation: ObservableObject { var dismiss: (() -> Void)? @Published var path = NavigationPath() + /// Drives the subscribe flow. A sheet rather than a pushed destination, matching how + /// every other paywall in the app is presented (SettingsView, AccountView) and keeping + /// it clear of the edit-mode bottom toolbar. + @Published var showingSubscribe = false nonisolated init() {} } diff --git a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift index 90d0b0504..472bd9b0b 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift +++ b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift @@ -30,14 +30,26 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { var editMode: EditMode { get set } var selectedItems: Set { get set } + /// Drives the whole-level download confirmation. List-only screens inherit the + /// no-op default below so the dialog can never present over them. var showingDownloadConfirmation: Bool { get set } - var useSelectedItems: Bool { get set } var accountService: AccountService { get set } var searchQuery: String { get set } var isSearchable: Bool { get } + /// True while the whole-level download is resolving its request list. Drives both the + /// progress overlay and the disabled state: the loading overlay is a small centred box, + /// so it only absorbs taps that land on it and cannot guard the toolbar button. The + /// gating has to be explicit. + var isPreparingDownload: Bool { get } + + /// Count shown in the whole-level download confirmation. Declared here, not only in the + /// extension, so a conformer whose download reaches past the loaded page can override it + /// — an extension-only member would dispatch statically through `Model` and ignore them. + var downloadableItemCount: Int { get } + // Feature flags (defaults provided) var isGridEnabled: Bool { get } var showsLayoutPreferences: Bool { get } @@ -53,7 +65,9 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { @MainActor func onEditToggleSelectTapped() @MainActor func onSelectTapped(for item: Item) @MainActor func onSelectAllTapped() - @MainActor func handleImportItems(useSelectedItems: Bool) async + /// Stream: virtual-import the level or the selection when the account carries the + /// entitlement, otherwise open the subscribe flow. Never downloads. + @MainActor func onStreamTapped(useSelectedItems: Bool) /// Staged virtual-import selection awaiting confirmation (`.sheet(item:)`); /// nil on the list-only screens that never import. var pendingImportBatch: ExternalImportBatch? { get set } @@ -66,6 +80,16 @@ protocol IntegrationLibraryViewModelProtocol: ObservableObject { } extension IntegrationLibraryViewModelProtocol { + /// Count for the whole-level download confirmation — what will actually download, + /// after filtering. Never `totalItems`, which stays `Int.max` until a fetch resolves + /// and would render as 9223372036854775807 in the dialog. + var downloadableItemCount: Int { + items.filter { $0.isDownloadable }.count + } + + /// Only the Jellyfin folder screen resolves anything before confirming. + var isPreparingDownload: Bool { false } + var isGridEnabled: Bool { true } var showsLayoutPreferences: Bool { true } var showsSortPreferences: Bool { true } diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index b50a812bc..a563f2cfe 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -75,13 +75,16 @@ struct IntegrationAudiobookDetailsView< .bpFont(.caption) } + // Both buttons always render: Stream sells the entitlement when it's missing, + // Download always downloads. The old `if allowStream || showSubscribeButton` + // was a tautology — allowStream is hasStreamingEnabled(), which is literally + // `return hasSyncEnabled()`, and showSubscribeButton was its exact negation — + // so the else branch was unreachable and both it and showSubscribeButton are + // gone. If hasStreamingEnabled() ever stops aliasing hasSyncEnabled(), the + // gating here needs revisiting. HStack(spacing: 12) { - if viewModel.allowStream || viewModel.showSubscribeButton { - SmallDownloadButton - SynchronizeButton - } else { - DownloadButton - } + SmallDownloadButton + SynchronizeButton } .padding(.horizontal) .padding(.vertical, 12) @@ -150,42 +153,14 @@ struct IntegrationAudiobookDetailsView< .scrollIndicators(.hidden) } - @ViewBuilder - private var DownloadButton: some View { - Button { - Task { - do { - try await viewModel.handleImportAudiobook(viewModel.item) - onDownloadTap() - } catch { - viewModel.error = error - } - } - } label: { - HStack { - Image(systemName: "square.and.arrow.down") - Text("download_title".localized) - .fontWeight(.semibold) - } - .frame(height: 24) - .frame(maxWidth: .infinity) - .padding() - .foregroundStyle(theme.primaryColor) - .background(theme.tertiarySystemBackgroundColor) - .cornerRadius(10) - } - } - @ViewBuilder private var SmallDownloadButton: some View { Button { - Task { - do { - try await viewModel.handleImportAudiobook(viewModel.item) - onDownloadTap() - } catch { - viewModel.error = error - } + do { + try viewModel.beginDownloadAudiobook(viewModel.item) + onDownloadTap() + } catch { + viewModel.error = error } } label: { HStack { @@ -206,8 +181,11 @@ struct IntegrationAudiobookDetailsView< if viewModel.allowStream { Task { do { + // No onDownloadTap() here: this stages pendingImportBatch for the + // confirmation sheet below, and dismissing the browser would tear that + // sheet down before it could present. confirmExternalImport deliberately + // keeps you in the browser afterwards. try await self.viewModel.handleImportAudiobook(viewModel.item) - onDownloadTap() } catch { viewModel.error = error } diff --git a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift index 1d2120176..04a3bca73 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift @@ -34,57 +34,15 @@ struct IntegrationLibraryView< } var body: some View { - ZStack { - Group { - if viewModel.isGridEnabled, viewModel.layout == .grid { - ScrollView { - IntegrationLibraryGridView(viewModel: viewModel, cellContent: gridCell) - .padding() - } - } else { - IntegrationLibraryListView(viewModel: viewModel, rowContent: listRow) - .scrollContentBackground(.hidden) + Group { + if viewModel.isGridEnabled, viewModel.layout == .grid { + ScrollView { + IntegrationLibraryGridView(viewModel: viewModel, cellContent: gridCell) + .padding() } - } - - if viewModel.showingDownloadConfirmation { - // Dimmed background - Color.black.opacity(0.4) - .ignoresSafeArea() - .onTapGesture { - // Allow tapping outside to dismiss - withAnimation { viewModel.showingDownloadConfirmation = false } - } - // This prevents touches from passing through to the view behind it - .allowsHitTesting(true) - - // The charming card aligned to the bottom - VStack { - Spacer() - - SyncInvitationCard( - totalItems: viewModel.useSelectedItems ? viewModel.selectedItems.count : viewModel.totalItems, - subscription: viewModel.accountService.accessLevel, - onDownload: { - withAnimation { viewModel.showingDownloadConfirmation = false } - Task { await viewModel.handleImportItems(useSelectedItems: viewModel.useSelectedItems) } - }, - onSync: { - withAnimation { viewModel.showingDownloadConfirmation = false } - viewModel.goToSubscribe() - }, - onCancel: { - withAnimation { viewModel.showingDownloadConfirmation = false } - } - ) - .padding(.horizontal, 16) - // Push it slightly off the bottom edge for a floating look - .padding(.bottom, 32) - } - // Animate the card sliding in from the bottom - .transition(.move(edge: .bottom).combined(with: .opacity)) - // Ensure it sits above everything else in the ZStack - .zIndex(1) + } else { + IntegrationLibraryListView(viewModel: viewModel, rowContent: listRow) + .scrollContentBackground(.hidden) } } .sheet(item: $viewModel.pendingImportBatch) { batch in @@ -99,6 +57,7 @@ struct IntegrationLibraryView< .environmentObject(theme) } .scrollDismissesKeyboard(.interactively) + .loadingOverlay(viewModel.isPreparingDownload) .background(theme.systemBackgroundColor) .modifier(IntegrationSearchableModifier( isSearchable: viewModel.isSearchable, @@ -108,6 +67,24 @@ struct IntegrationLibraryView< .onAppear { viewModel.fetchInitialItems() } .onDisappear { viewModel.cancelFetchItems() } .errorAlert(error: $viewModel.error) + // Whole-level download only: an explicit selection needs no second confirmation, + // and Stream is already confirmed downstream by ExternalImportView. + .confirmationDialog( + "download_title".localized, + isPresented: $viewModel.showingDownloadConfirmation + ) { + Button("download_title".localized) { + viewModel.confirmDownloadFolder() + } + Button("cancel_button".localized, role: .cancel) {} + } message: { + Text( + String.localizedStringWithFormat( + "download_folder_confirmation_message".localized, + viewModel.downloadableItemCount + ) + ) + } .environment(\.editMode, $viewModel.editMode) .onChange(of: viewModel.editMode) { _, newValue in tabEditing.wrappedValue = newValue.isEditing @@ -142,18 +119,22 @@ struct IntegrationLibraryView< Label("select_title".localized, systemImage: "checkmark.circle") } + // Both fire OUTSIDE edit mode, where the selection is empty — they + // always mean "everything at this level". Button { - if viewModel.accountService.hasLiteEnabled() { - Task { await viewModel.handleImportItems(useSelectedItems: false) } - } else { - // This toolbar action fires OUTSIDE edit mode where the selection is empty — - // it always means "everything", same as the lite branch above. - viewModel.useSelectedItems = false - withAnimation { viewModel.showingDownloadConfirmation = true } - } + viewModel.onStreamTapped(useSelectedItems: false) } label: { + Label("stream_button".localized, systemImage: "arrow.down.circle.dotted") + } + .disabled(viewModel.downloadableItemCount == 0) + + Button(action: viewModel.onDownloadFolderTapped) { Label("download_title".localized, systemImage: "arrow.down.to.line") } + // Conservative: on a Jellyfin folder whose loaded page is all subfolders this + // reads 0 while the server has audiobooks, so Download is briefly unavailable + // until another page lands. A false negative — never the wrong action. + .disabled(viewModel.downloadableItemCount == 0 || viewModel.isPreparingDownload) } } @@ -194,13 +175,14 @@ struct IntegrationLibraryView< Spacer() Button { - if viewModel.accountService.hasLiteEnabled() { - Task { await viewModel.handleImportItems(useSelectedItems: true) } - } else { - viewModel.useSelectedItems = true - withAnimation { viewModel.showingDownloadConfirmation = true } - } + viewModel.onStreamTapped(useSelectedItems: true) } label: { + Image(systemName: "arrow.down.circle.dotted") + .accessibilityLabel("stream_button".localized) + } + .disabled(viewModel.selectedItems.isEmpty) + + Button(action: viewModel.onDownloadTapped) { Image(systemName: "arrow.down.to.line") .accessibilityLabel("download_title".localized) } diff --git a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift b/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift deleted file mode 100644 index dc84247a7..000000000 --- a/BookPlayer/Profile/CompleteAccount/SyncInvitationCard.swift +++ /dev/null @@ -1,100 +0,0 @@ -// -// SyncInvitationCard.swift -// BookPlayer -// -// Created by Pedro Iñiguez on 9/4/26. -// Copyright © 2026 BookPlayer LLC. All rights reserved. -// - -import SwiftUI -import BookPlayerKit - -struct SyncInvitationCard: View { - let totalItems: Int - let subscription: AccessLevel - let onDownload: () -> Void - let onSync: () -> Void - let onCancel: () -> Void - - var body: some View { - VStack(spacing: 24) { - Image(systemName: (subscription == .pro || subscription == .lite) ? "arrow.down.circle.fill" : "cloud.sun.fill") - .resizable() - .scaledToFit() - .frame(width: 64, height: 64) - .foregroundStyle(.white, .orange) - .padding(.top, 16) - - if !(subscription == .pro || subscription == .lite) { - VStack(spacing: 8) { - Text("sync_invitation_save_storage_title".localized) - .bpFont(.title2) - .fontWeight(.bold) - .multilineTextAlignment(.center) - } - } - - Text(String.localizedStringWithFormat("sync_invitation_description".localized, - (subscription == .lite ? "import_verb" : "download_verb").localized, - totalItems, - ((subscription == .pro || subscription == .lite) ? "" : "sync_invitation_stream_description".localized))) - .bpFont(.subheadline) - .foregroundColor(.secondary) - .multilineTextAlignment(.center) - - VStack(spacing: 12) { - if !(subscription == .pro || subscription == .lite) { - Button { - onSync() - } label: { - HStack { - Text("sync_invitation_learn_more_button".localized) - .fontWeight(.semibold) - } - .frame(maxWidth: .infinity) - .padding() - .background(Color.accentColor) - .foregroundColor(.white) - .cornerRadius(14) - } - .accessibilityLabel("learn_more_title".localized) - .accessibilityHint("sync_invitation_learn_more_hint".localized) - } - - Button { - onDownload() - } label: { - Text(subscription == .lite ? "import_button".localized : "download_title".localized) - .fontWeight(.medium) - .frame(maxWidth: .infinity) - .padding() - .background(Color.secondary.opacity(0.15)) - .foregroundColor(.primary) - .cornerRadius(14) - } - .accessibilityLabel(subscription == .lite ? "import_button".localized : "sync_invitation_download_label".localized) - .accessibilityHint( - String( - format: (subscription == .lite ? "sync_invitation_import_hint" : "sync_invitation_download_hint").localized, - totalItems - ) - ) - } - } - .padding(24) - .background(Color(UIColor.secondarySystemGroupedBackground)) - .cornerRadius(24) - .shadow(color: Color.black.opacity(0.15), radius: 20, x: 0, y: 10) - .overlay(alignment: .topLeading) { - Button(action: onCancel) { - Image(systemName: "xmark.circle.fill") - .bpFont(.title2) - .foregroundStyle(.tertiary) - .frame(width: 44, height: 44) - } - .padding(16) - .accessibilityLabel("close_title".localized) - .accessibilityHint("sync_invitation_close_hint".localized) - } - } -} diff --git a/BookPlayer/Profile/Login/ExternalSyncInfoView.swift b/BookPlayer/Profile/Login/ExternalSyncInfoView.swift index c7f4a5693..8b735ab14 100644 --- a/BookPlayer/Profile/Login/ExternalSyncInfoView.swift +++ b/BookPlayer/Profile/Login/ExternalSyncInfoView.swift @@ -80,6 +80,18 @@ struct ExternalSyncIntroView: View { .listSectionSpacing(Spacing.S2) .navigationTitle("external_sync_info_title".localized) .navigationBarTitleDisplayMode(.inline) + // Presented as a sheet, so there is no back button to fall back on + .toolbar { + ToolbarItem(placement: .cancellationAction) { + Button { + dismiss() + } label: { + Image(systemName: "xmark") + .foregroundStyle(theme.linkColor) + } + .accessibilityLabel("close_title".localized) + } + } .sheet(isPresented: $showCompleteAccount) { NavigationStack { CompleteAccountView(subType: .lite) { diff --git a/BookPlayer/ar.lproj/Localizable.strings b/BookPlayer/ar.lproj/Localizable.strings index 5b6505dbc..185a67053 100644 --- a/BookPlayer/ar.lproj/Localizable.strings +++ b/BookPlayer/ar.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "تمكين البحث في شاشة القفل"; "donate_title" = "تبرع"; "bookmark_automatic_sleep_title" = "آخر موضع تم فيه عند تشغيل مؤقت السكون"; -"download_folder_confirmation_title" = "تحميل المجلد"; "download_folder_confirmation_message" = "تحميل جميع الملفات %d من هذا المجلد؟"; "hardcover_searching_books" = "البحث عن الكتب..."; "hardcover_unlink_button" = "إلغاء الربط"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "وفر مساحة التخزين الخاصة بك!"; -"sync_invitation_learn_more_button" = "معرفة المزيد"; -"sync_invitation_description" = "أنت على وشك %1$@ %2$d من العناصر. %3$@"; -"sync_invitation_stream_description" = "بدلاً من استهلاك المساحة، قم ببثها مباشرة من خادمك وحافظ على مزامنة تقدمك."; "sync_tasks_concurrent_count_title" = "المهام المتزامنة (%d)"; "sync_tasks_running_empty_title" = "لا توجد مهام قيد التشغيل"; "sync_tasks_empty_title" = "لا توجد مهام في الانتظار"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "جاري رفع الملف"; "audiobook_details_narrator_label" = "رواية %@"; "stream_button" = "بث"; -"import_verb" = "استيراد"; -"download_verb" = "تنزيل"; "passkey_title" = "مفتاح المرور"; "create_profile_title" = "أنشئ ملفك الشخصي"; "create_profile_description" = "لتمكين المزامنة السحابية، قم بتسجيل الدخول إلى ملفك الشخصي. يمكنك القيام بذلك لاحقًا من علامة تبويب الملف الشخصي."; diff --git a/BookPlayer/ca.lproj/Localizable.strings b/BookPlayer/ca.lproj/Localizable.strings index 851f2d832..681cc96b4 100644 --- a/BookPlayer/ca.lproj/Localizable.strings +++ b/BookPlayer/ca.lproj/Localizable.strings @@ -400,7 +400,6 @@ Estem treballant dur per oferir una experiència perfecta; si és possible, pose "settings_seekprogressbar_description" = "Activa la cerca a la pantalla de bloqueig"; "donate_title" = "Donar"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Baixar carpeta"; "download_folder_confirmation_message" = "Baixar tots els %d fitxers d'aquesta carpeta?"; "hardcover_searching_books" = "Cercant llibres..."; "hardcover_unlink_button" = "Desvinculat"; @@ -504,10 +503,6 @@ Estem treballant dur per oferir una experiència perfecta; si és possible, pose "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Estalvia espai d'emmagatzematge!"; -"sync_invitation_learn_more_button" = "Més informació"; -"sync_invitation_description" = "Estàs a punt de %1$@ %2$d elements. %3$@"; -"sync_invitation_stream_description" = "En lloc d'ocupar espai, reprodueix-los directament des del teu servidor i mantén el teu progrés sincronitzat."; "sync_tasks_concurrent_count_title" = "Tasques simultànies (%d)"; "sync_tasks_running_empty_title" = "No hi ha tasques en curs"; "sync_tasks_empty_title" = "No hi ha tasques a la cua"; @@ -516,8 +511,6 @@ Estem treballant dur per oferir una experiència perfecta; si és possible, pose "sync_task_upload_file_label" = "S'està pujant el fitxer"; "audiobook_details_narrator_label" = "Narrat per %@"; "stream_button" = "Reprodueix"; -"import_verb" = "importar"; -"download_verb" = "descarregar"; "passkey_title" = "Clau d'accés"; "create_profile_title" = "Crea el teu perfil"; "create_profile_description" = "Per habilitar la sincronització al núvol, inicia sessió al teu perfil. Pots fer-ho més tard des de la pestanya Perfil."; diff --git a/BookPlayer/cs.lproj/Localizable.strings b/BookPlayer/cs.lproj/Localizable.strings index d1922ba73..8545044d1 100644 --- a/BookPlayer/cs.lproj/Localizable.strings +++ b/BookPlayer/cs.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Darovat"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Stáhnout složku"; "download_folder_confirmation_message" = "Stáhnout všechny %d soubory z této složky?"; "hardcover_searching_books" = "Hledám knihy..."; "hardcover_unlink_button" = "Odpojit"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Šetřete své úložiště!"; -"sync_invitation_learn_more_button" = "Dozvědět se více"; -"sync_invitation_description" = "Chystáte se %1$@ %2$d položek. %3$@"; -"sync_invitation_stream_description" = "Místo zabírání místa je streamujte přímo ze svého serveru a udržujte svůj pokrok synchronizovaný."; "sync_tasks_concurrent_count_title" = "Souběžné úkoly (%d)"; "sync_tasks_running_empty_title" = "Žádné běžící úkoly"; "sync_tasks_empty_title" = "Žádné úkoly ve frontě"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Nahrávání souboru"; "audiobook_details_narrator_label" = "Vypráví %@"; "stream_button" = "Streamovat"; -"import_verb" = "importovat"; -"download_verb" = "stáhnout"; "passkey_title" = "Passkey"; "create_profile_title" = "Vytvořte si profil"; "create_profile_description" = "Chcete-li povolit synchronizaci v cloudu, přihlaste se ke svému profilu. To můžete provést kdykoli později na kartě Profil."; diff --git a/BookPlayer/da.lproj/Localizable.strings b/BookPlayer/da.lproj/Localizable.strings index 4a5ce703d..c5d33fe8a 100644 --- a/BookPlayer/da.lproj/Localizable.strings +++ b/BookPlayer/da.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Doner"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Download mappe"; "download_folder_confirmation_message" = "Download alle %d filer fra denne mappe?"; "hardcover_searching_books" = "Søger efter bøger..."; "hardcover_unlink_button" = "Afkobl"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Spar din lagerplads!"; -"sync_invitation_learn_more_button" = "Læs mere"; -"sync_invitation_description" = "Du er ved at %1$@ %2$d emner. %3$@"; -"sync_invitation_stream_description" = "I stedet for at optage plads kan du streame dem direkte fra din server og holde din fremgang synkroniseret."; "sync_tasks_concurrent_count_title" = "Samtidige opgaver (%d)"; "sync_tasks_running_empty_title" = "Ingen aktive opgaver"; "sync_tasks_empty_title" = "Ingen opgaver i kø"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Uploader fil"; "audiobook_details_narrator_label" = "Indtalt af %@"; "stream_button" = "Stream"; -"import_verb" = "importere"; -"download_verb" = "downloade"; "passkey_title" = "Adgangsnøgle"; "create_profile_title" = "Opret din profil"; "create_profile_description" = "For at aktivere skysynkronisering skal du logge ind på din profil. Du kan altid gøre dette senere fra fanen Profil."; diff --git a/BookPlayer/de.lproj/Localizable.strings b/BookPlayer/de.lproj/Localizable.strings index affbc248a..7c6887b0e 100644 --- a/BookPlayer/de.lproj/Localizable.strings +++ b/BookPlayer/de.lproj/Localizable.strings @@ -401,7 +401,6 @@ "settings_seekprogressbar_description" = "Aktiviert das Navigieren in der Fortschrittsleiste auf dem Sperrbildschirm."; "donate_title" = "Spenden"; "bookmark_automatic_sleep_title" = "Letzte Position, als der Einschlaf-Timer aktiviert wurde"; -"download_folder_confirmation_title" = "Ordner herunterladen"; "download_folder_confirmation_message" = "Alle %d Dateien aus diesem Ordner herunterladen?"; "hardcover_searching_books" = "Bücher suchen..."; "hardcover_unlink_button" = "Verknüpfung lösen"; @@ -505,10 +504,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Speicherplatz sparen!"; -"sync_invitation_learn_more_button" = "Mehr erfahren"; -"sync_invitation_description" = "Sie sind dabei, %2$d Elemente zu %1$@. %3$@"; -"sync_invitation_stream_description" = "Anstatt Platz zu beanspruchen, streamen Sie diese direkt von Ihrem Server und halten Sie Ihren Fortschritt synchronisiert."; "sync_tasks_concurrent_count_title" = "Gleichzeitige Aufgaben (%d)"; "sync_tasks_running_empty_title" = "Keine laufenden Aufgaben"; "sync_tasks_empty_title" = "Keine Aufgaben in der Warteschlange"; @@ -517,8 +512,6 @@ "sync_task_upload_file_label" = "Datei wird hochgeladen"; "audiobook_details_narrator_label" = "Gelesen von %@"; "stream_button" = "Streamen"; -"import_verb" = "importieren"; -"download_verb" = "herunterladen"; "passkey_title" = "Passkey"; "create_profile_title" = "Profil erstellen"; "create_profile_description" = "Um die Cloud-Synchronisierung zu aktivieren, melden Sie sich bei Ihrem Profil an. Sie können dies später jederzeit im Tab „Profil“ nachholen."; diff --git a/BookPlayer/el.lproj/Localizable.strings b/BookPlayer/el.lproj/Localizable.strings index 9128e4b9d..1fd65a4a3 100644 --- a/BookPlayer/el.lproj/Localizable.strings +++ b/BookPlayer/el.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Ενεργοποιήστε την αναζήτηση στην οθόνη κλειδώματος"; "donate_title" = "Προσφέρω"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Κατέβασμα φακέλου"; "download_folder_confirmation_message" = "Κατέβασμα όλων των %d αρχείων από αυτόν τον φάκελο;"; "hardcover_searching_books" = "Αναζήτηση βιβλίων..."; "hardcover_unlink_button" = "Αποσύνδεση"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Εξοικονομήστε χώρο αποθήκευσης!"; -"sync_invitation_learn_more_button" = "Μάθετε περισσότερα"; -"sync_invitation_description" = "Πρόκειται να %1$@ %2$d στοιχεία. %3$@"; -"sync_invitation_stream_description" = "Αντί να καταλαμβάνουν χώρο, μεταδώστε τα απευθείας από τον διακομιστή σας και διατηρήστε την πρόοδό σας συγχρονισμένη."; "sync_tasks_concurrent_count_title" = "Ταυτόχρονες εργασίες (%d)"; "sync_tasks_running_empty_title" = "Δεν υπάρχουν εργασίες σε εκτέλεση"; "sync_tasks_empty_title" = "Δεν υπάρχουν εργασίες σε αναμονή"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Μεταφόρτωση αρχείου"; "audiobook_details_narrator_label" = "Αφήγηση από %@"; "stream_button" = "Μετάδοση"; -"import_verb" = "εισαγωγή"; -"download_verb" = "λήψη"; "passkey_title" = "Κλειδί πρόσβασης"; "create_profile_title" = "Δημιουργήστε το προφίλ σας"; "create_profile_description" = "Για να ενεργοποιήσετε τον συγχρονισμό στο cloud, συνδεθείτε στο προφίλ σας. Μπορείτε να το κάνετε αργότερα από την καρτέλα Προφίλ."; diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index c7d78064b..43c7881ae 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -318,10 +318,6 @@ Keep in mind that upload tasks can take some time, and the progress will be periodically posted on the previous screen."; -"sync_invitation_save_storage_title" = "Save Your Storage!"; -"sync_invitation_learn_more_button" = "Learn more"; -"sync_invitation_description" = "You're about to %1$@ %2$d items. %3$@"; -"sync_invitation_stream_description" = "Instead of taking up space, stream them directly from your server and keep your progress synced."; "sync_tasks_concurrent_count_title" = "Concurrent Tasks (%d)"; "sync_tasks_running_empty_title" = "No running tasks"; "sync_tasks_empty_title" = "No queued tasks"; @@ -331,8 +327,6 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "audiobook_details_narrator_label" = "Narrated by %@"; "stream_button" = "Stream"; "integrations_title" = "Integrations"; -"import_verb" = "import"; -"download_verb" = "download"; "passkey_title" = "Passkey"; "create_profile_title" = "Create your profile"; "create_profile_description" = "To enable cloud sync, sign into your profile. You can always do this later from within the Profile tab"; @@ -430,8 +424,7 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Donate"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Download Folder"; -"download_folder_confirmation_message" = "Download all %d files from this folder?"; +"download_folder_confirmation_message" = "Download all %d files?"; "hardcover_searching_books" = "Searching books..."; "hardcover_unlink_button" = "Unlink"; "hardcover_auto_match_books" = "Auto-match books"; @@ -545,7 +538,6 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "import_no_audio_files_alert" = "The selected items have no audio files to import."; "import_title" = "Import"; "files_title" = "%d Files"; -"sync_invitation_learn_more_hint" = "Learn more about streaming and syncing items from your server."; "task_uploading_file_label" = "Uploading file"; "task_updating_progress_label" = "Updating progress for %@"; "yes_button" = "Yes"; @@ -554,10 +546,6 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "resume_playback_alert_message" = "There is another source with current play time %@. Play from this time?"; "queue_library_sync_title" = "Library Sync"; "queue_file_uploads_title" = "File Uploads"; -"sync_invitation_download_label" = "Download Locally"; -"sync_invitation_import_hint" = "Import %d items to your library."; -"sync_invitation_download_hint" = "Download %d items to your device storage."; -"sync_invitation_close_hint" = "Dismisses the invitation card."; "close_title" = "Close"; "external_sync_benefit_server_title" = "Bring Your Own Server"; "external_sync_benefit_server_subtitle" = "Connect your existing Jellyfin or Audiobookshelf directly to the app."; diff --git a/BookPlayer/es.lproj/Localizable.strings b/BookPlayer/es.lproj/Localizable.strings index fd672bebc..bdbc0cfe3 100644 --- a/BookPlayer/es.lproj/Localizable.strings +++ b/BookPlayer/es.lproj/Localizable.strings @@ -401,7 +401,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Donar"; "bookmark_automatic_sleep_title" = "Última posición antes de que inicie el temporizador de suspensión"; -"download_folder_confirmation_title" = "Descargar carpeta"; "download_folder_confirmation_message" = "¿Descargar todos los %d archivos de esta carpeta?"; "hardcover_searching_books" = "Buscando libros..."; "hardcover_unlink_button" = "Desvincular"; @@ -505,10 +504,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "¡Ahorra espacio!"; -"sync_invitation_learn_more_button" = "Más información"; -"sync_invitation_description" = "Estás a punto de %1$@ %2$d elementos. %3$@"; -"sync_invitation_stream_description" = "En lugar de ocupar espacio, transmítelos directamente desde tu servidor y mantén tu progreso sincronizado."; "sync_tasks_concurrent_count_title" = "Tareas simultáneas (%d)"; "sync_tasks_running_empty_title" = "No hay tareas en curso"; "sync_tasks_empty_title" = "No hay tareas en cola"; @@ -517,8 +512,6 @@ "sync_task_upload_file_label" = "Subiendo archivo"; "audiobook_details_narrator_label" = "Narrado por %@"; "stream_button" = "Transmitir"; -"import_verb" = "importar"; -"download_verb" = "descargar"; "passkey_title" = "Llave de acceso"; "create_profile_title" = "Crea tu perfil"; "create_profile_description" = "Para habilitar la sincronización en la nube, inicia sesión en tu perfil. Siempre puedes hacerlo más tarde desde la pestaña Perfil."; diff --git a/BookPlayer/fi.lproj/Localizable.strings b/BookPlayer/fi.lproj/Localizable.strings index 9f0227fea..d5f263a2e 100644 --- a/BookPlayer/fi.lproj/Localizable.strings +++ b/BookPlayer/fi.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Lahjoittaa"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Lataa kansio"; "download_folder_confirmation_message" = "Ladataanko kaikki %d tiedostoa tästä kansiosta?"; "hardcover_searching_books" = "Etsitään kirjoja..."; "hardcover_unlink_button" = "Poista linkki"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Säästä tallennustilaasi!"; -"sync_invitation_learn_more_button" = "Lue lisää"; -"sync_invitation_description" = "Olet aikeissa %1$@ %2$d kohdetta. %3$@"; -"sync_invitation_stream_description" = "Tilan viemisen sijaan voit suoratoistaa ne suoraan palvelimeltasi ja pitää edistymisesi synkronoituna."; "sync_tasks_concurrent_count_title" = "Samanaikaiset tehtävät (%d)"; "sync_tasks_running_empty_title" = "Ei käynnissä olevia tehtäviä"; "sync_tasks_empty_title" = "Ei jonossa olevia tehtäviä"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Ladataan tiedostoa"; "audiobook_details_narrator_label" = "Lukija: %@"; "stream_button" = "Suoratoista"; -"import_verb" = "tuoda"; -"download_verb" = "ladata"; "passkey_title" = "Pääsyavain"; "create_profile_title" = "Luo profiilisi"; "create_profile_description" = "Ota pilvisynkronointi käyttöön kirjautumalla profiiliisi. Voit tehdä tämän myöhemmin Profiili-välilehdeltä."; diff --git a/BookPlayer/fr.lproj/Localizable.strings b/BookPlayer/fr.lproj/Localizable.strings index 12e7347fe..1d143c812 100644 --- a/BookPlayer/fr.lproj/Localizable.strings +++ b/BookPlayer/fr.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Faire un don"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Télécharger le dossier"; "download_folder_confirmation_message" = "Télécharger tous les %d fichiers de ce dossier ?"; "hardcover_searching_books" = "Recherche de livres..."; "hardcover_unlink_button" = "Dissocier"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Économisez votre stockage !"; -"sync_invitation_learn_more_button" = "En savoir plus"; -"sync_invitation_description" = "Vous êtes sur le point de %1$@ %2$d éléments. %3$@"; -"sync_invitation_stream_description" = "Au lieu de prendre de la place, diffusez-les directement depuis votre serveur et gardez votre progression synchronisée."; "sync_tasks_concurrent_count_title" = "Tâches simultanées (%d)"; "sync_tasks_running_empty_title" = "Aucune tâche en cours"; "sync_tasks_empty_title" = "Aucune tâche en attente"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Chargement du fichier"; "audiobook_details_narrator_label" = "Narré par %@"; "stream_button" = "Diffuser"; -"import_verb" = "importer"; -"download_verb" = "télécharger"; "passkey_title" = "Clé d'accès"; "create_profile_title" = "Créez votre profil"; "create_profile_description" = "Pour activer la synchronisation cloud, connectez-vous à votre profil. Vous pourrez toujours le faire plus tard via l'onglet Profil."; diff --git a/BookPlayer/hu.lproj/Localizable.strings b/BookPlayer/hu.lproj/Localizable.strings index 941c706b3..1d2c6f907 100644 --- a/BookPlayer/hu.lproj/Localizable.strings +++ b/BookPlayer/hu.lproj/Localizable.strings @@ -400,7 +400,6 @@ "donate_title" = "Adományozás"; "bookmark_automatic_sleep_title" = "Az utolsó pozíció, amikor az elalváskapcsolót bekapcsolták"; "integration_selection_count" = "%d / %d Elem"; -"download_folder_confirmation_title" = "Mappa letöltése"; "download_folder_confirmation_message" = "Letölti az összes %d fájlt ebből a mappából?"; "hardcover_searching_books" = "Könyvek keresése..."; "hardcover_unlink_button" = "Szétkapcsolás"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Spóroljon a tárhellyel!"; -"sync_invitation_learn_more_button" = "Tudjon meg többet"; -"sync_invitation_description" = "Éppen %1$@ %2$d elemet. %3$@"; -"sync_invitation_stream_description" = "Ahelyett, hogy helyet foglalna, streamelje őket közvetlenül a szerveréről, és tartsa szinkronban a haladását."; "sync_tasks_concurrent_count_title" = "Párhuzamos feladatok (%d)"; "sync_tasks_running_empty_title" = "Nincsenek futó feladatok"; "sync_tasks_empty_title" = "Nincsenek várakozó feladatok"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Fájl feltöltése"; "audiobook_details_narrator_label" = "Felolvassa: %@"; "stream_button" = "Streamelés"; -"import_verb" = "importálni"; -"download_verb" = "letölteni"; "passkey_title" = "Jelkulcs"; "create_profile_title" = "Hozza létre profilját"; "create_profile_description" = "A felhőalapú szinkronizálás engedélyezéséhez jelentkezzen be profiljába. Ezt később bármikor megteheti a Profil lapon."; diff --git a/BookPlayer/it.lproj/Localizable.strings b/BookPlayer/it.lproj/Localizable.strings index be853d003..6158c0d9d 100644 --- a/BookPlayer/it.lproj/Localizable.strings +++ b/BookPlayer/it.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Donare"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Scarica cartella"; "download_folder_confirmation_message" = "Scaricare tutti i %d file da questa cartella?"; "hardcover_searching_books" = "Ricerca libri..."; "hardcover_unlink_button" = "Scollega"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Risparmia spazio!"; -"sync_invitation_learn_more_button" = "Scopri di più"; -"sync_invitation_description" = "Stai per %1$@ %2$d elementi. %3$@"; -"sync_invitation_stream_description" = "Invece di occupare spazio, riproducili in streaming direttamente dal tuo server e mantieni i tuoi progressi sincronizzati."; "sync_tasks_concurrent_count_title" = "Attività simultanee (%d)"; "sync_tasks_running_empty_title" = "Nessuna attività in corso"; "sync_tasks_empty_title" = "Nessuna attività in coda"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Caricamento file"; "audiobook_details_narrator_label" = "Narrato da %@"; "stream_button" = "Streaming"; -"import_verb" = "importare"; -"download_verb" = "scaricare"; "passkey_title" = "Passkey"; "create_profile_title" = "Crea il tuo profilo"; "create_profile_description" = "Per abilitare la sincronizzazione cloud, accedi al tuo profilo. Puoi farlo in qualsiasi momento dalla scheda Profilo."; diff --git a/BookPlayer/ja.lproj/Localizable.strings b/BookPlayer/ja.lproj/Localizable.strings index 99a57f6d1..df67c7198 100644 --- a/BookPlayer/ja.lproj/Localizable.strings +++ b/BookPlayer/ja.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "ロック画面でシークを有効にします。"; "donate_title" = "寄付"; "bookmark_automatic_sleep_title" = "スリープタイマーがオンになった最後の位置"; -"download_folder_confirmation_title" = "フォルダをダウンロード"; "download_folder_confirmation_message" = "このフォルダからすべての %d ファイルをダウンロードしますか?"; "hardcover_searching_books" = "本を検索中..."; "hardcover_unlink_button" = "リンク解除"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "ストレージを節約しましょう!"; -"sync_invitation_learn_more_button" = "詳細はこちら"; -"sync_invitation_description" = "%2$d 個のアイテムを %1$@ しようとしています。%3$@"; -"sync_invitation_stream_description" = "容量を占有する代わりに、サーバーから直接ストリーミングして進捗を同期させることができます。"; "sync_tasks_concurrent_count_title" = "同時タスク (%d)"; "sync_tasks_running_empty_title" = "実行中のタスクはありません"; "sync_tasks_empty_title" = "待機中のタスクはありません"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "ファイルをアップロード中"; "audiobook_details_narrator_label" = "ナレーション: %@"; "stream_button" = "ストリーム"; -"import_verb" = "インポート"; -"download_verb" = "ダウンロード"; "passkey_title" = "パスキー"; "create_profile_title" = "プロフィールを作成"; "create_profile_description" = "クラウド同期を有効にするには、プロフィールにサインインしてください。これは後でプロフィールタブからいつでも行えます。"; diff --git a/BookPlayer/nb.lproj/Localizable.strings b/BookPlayer/nb.lproj/Localizable.strings index 20f5c8c2f..51c5d9218 100644 --- a/BookPlayer/nb.lproj/Localizable.strings +++ b/BookPlayer/nb.lproj/Localizable.strings @@ -400,7 +400,6 @@ Vi jobber hardt for å gi deg en sømløs opplevelse. Hvis mulig, kontakt oss p "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Donere"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Last ned mappe"; "download_folder_confirmation_message" = "Last ned alle %d filer fra denne mappen?"; "hardcover_searching_books" = "Søker etter bøker..."; "hardcover_unlink_button" = "Koble fra"; @@ -504,10 +503,6 @@ Vi jobber hardt for å gi deg en sømløs opplevelse. Hvis mulig, kontakt oss p "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Spar lagringsplass!"; -"sync_invitation_learn_more_button" = "Lær mer"; -"sync_invitation_description" = "Du er i ferd med å %1$@ %2$d elementer. %3$@"; -"sync_invitation_stream_description" = "I stedet for å ta opp plass, kan du strømme dem direkte fra serveren din og holde fremgangen din synkronisert."; "sync_tasks_concurrent_count_title" = "Samtidige oppgaver (%d)"; "sync_tasks_running_empty_title" = "Ingen oppgaver kjører"; "sync_tasks_empty_title" = "Ingen oppgaver i kø"; @@ -516,8 +511,6 @@ Vi jobber hardt for å gi deg en sømløs opplevelse. Hvis mulig, kontakt oss p "sync_task_upload_file_label" = "Laster opp fil"; "audiobook_details_narrator_label" = "Lest av %@"; "stream_button" = "Strøm"; -"import_verb" = "importere"; -"download_verb" = "laste ned"; "passkey_title" = "Passnøkkel"; "create_profile_title" = "Opprett din profil"; "create_profile_description" = "Logg inn på profilen din for å aktivere skysynkronisering. Du kan alltid gjøre dette senere fra Profil-fanen."; diff --git a/BookPlayer/nl.lproj/Localizable.strings b/BookPlayer/nl.lproj/Localizable.strings index 9fa7835e0..31cb49ecc 100644 --- a/BookPlayer/nl.lproj/Localizable.strings +++ b/BookPlayer/nl.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Doneren"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Map downloaden"; "download_folder_confirmation_message" = "Alle %d bestanden uit deze map downloaden?"; "hardcover_searching_books" = "Zoeken naar boeken..."; "hardcover_unlink_button" = "Ontkoppelen"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Bespaar opslagruimte!"; -"sync_invitation_learn_more_button" = "Meer informatie"; -"sync_invitation_description" = "Je staat op het punt om %2$d items te %1$@. %3$@"; -"sync_invitation_stream_description" = "In plaats van ruimte in beslag te nemen, kun je ze rechtstreeks vanaf je server streamen en je voortgang gesynchroniseerd houden."; "sync_tasks_concurrent_count_title" = "Gelijktijdige taken (%d)"; "sync_tasks_running_empty_title" = "Geen lopende taken"; "sync_tasks_empty_title" = "Geen taken in de wachtrij"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Bestand uploaden"; "audiobook_details_narrator_label" = "Verteld door %@"; "stream_button" = "Streamen"; -"import_verb" = "importeren"; -"download_verb" = "downloaden"; "passkey_title" = "Toegangssleutel"; "create_profile_title" = "Maak je profiel aan"; "create_profile_description" = "Log in op je profiel om cloudsynchronisatie in te schakelen. Je kunt dit later altijd doen via het tabblad Profiel."; diff --git a/BookPlayer/pl.lproj/Localizable.strings b/BookPlayer/pl.lproj/Localizable.strings index ec4882b8b..281f8fcad 100644 --- a/BookPlayer/pl.lproj/Localizable.strings +++ b/BookPlayer/pl.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Podarować"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Pobierz folder"; "download_folder_confirmation_message" = "Pobrać wszystkie %d pliki z tego folderu?"; "hardcover_searching_books" = "Wyszukiwanie książek..."; "hardcover_unlink_button" = "Odłącz"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Oszczędzaj miejsce na dysku!"; -"sync_invitation_learn_more_button" = "Dowiedz się więcej"; -"sync_invitation_description" = "Zaraz zaczniesz %1$@ %2$d elementów. %3$@"; -"sync_invitation_stream_description" = "Zamiast zajmować miejsce, odtwarzaj je strumieniowo bezpośrednio z serwera i synchronizuj swoje postępy."; "sync_tasks_concurrent_count_title" = "Zadania współbieżne (%d)"; "sync_tasks_running_empty_title" = "Brak uruchomionych zadań"; "sync_tasks_empty_title" = "Brak zadań w kolejce"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Przesyłanie pliku"; "audiobook_details_narrator_label" = "Czyta %@"; "stream_button" = "Strumieniuj"; -"import_verb" = "importować"; -"download_verb" = "pobierać"; "passkey_title" = "Klucz dostępu"; "create_profile_title" = "Utwórz swój profil"; "create_profile_description" = "Aby włączyć synchronizację w chmurze, zaloguj się do swojego profilu. Możesz to zrobić później w zakładce Profil."; diff --git a/BookPlayer/pt-BR.lproj/Localizable.strings b/BookPlayer/pt-BR.lproj/Localizable.strings index b6ae87965..abc607df5 100644 --- a/BookPlayer/pt-BR.lproj/Localizable.strings +++ b/BookPlayer/pt-BR.lproj/Localizable.strings @@ -401,7 +401,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Doar"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Baixar pasta"; "download_folder_confirmation_message" = "Baixar todos os %d arquivos desta pasta?"; "hardcover_searching_books" = "Procurando livros..."; "hardcover_unlink_button" = "Desvincular"; @@ -505,10 +504,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Economize seu armazenamento!"; -"sync_invitation_learn_more_button" = "Saiba mais"; -"sync_invitation_description" = "Você está prestes a %1$@ %2$d itens. %3$@"; -"sync_invitation_stream_description" = "Em vez de ocupar espaço, transmita-os diretamente do seu servidor e mantenha seu progresso sincronizado."; "sync_tasks_concurrent_count_title" = "Tarefas Simultâneas (%d)"; "sync_tasks_running_empty_title" = "Nenhuma tarefa em execução"; "sync_tasks_empty_title" = "Nenhuma tarefa na fila"; @@ -517,8 +512,6 @@ "sync_task_upload_file_label" = "Enviando arquivo"; "audiobook_details_narrator_label" = "Narrado por %@"; "stream_button" = "Transmitir"; -"import_verb" = "importar"; -"download_verb" = "baixar"; "passkey_title" = "Chave de Acesso"; "create_profile_title" = "Crie seu perfil"; "create_profile_description" = "Para ativar a sincronização na nuvem, entre no seu perfil. Você pode fazer isso mais tarde na aba Perfil."; diff --git a/BookPlayer/pt-PT.lproj/Localizable.strings b/BookPlayer/pt-PT.lproj/Localizable.strings index b3af0a38b..0edc09ab0 100644 --- a/BookPlayer/pt-PT.lproj/Localizable.strings +++ b/BookPlayer/pt-PT.lproj/Localizable.strings @@ -401,7 +401,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Doar"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Transferir pasta"; "download_folder_confirmation_message" = "Transferir todos os %d ficheiros desta pasta?"; "hardcover_searching_books" = "A procurar livros..."; "hardcover_unlink_button" = "Desvincular"; @@ -505,10 +504,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Poupe o seu armazenamento!"; -"sync_invitation_learn_more_button" = "Saber mais"; -"sync_invitation_description" = "Está prestes a %1$@ %2$d itens. %3$@"; -"sync_invitation_stream_description" = "Em vez de ocupar espaço, transmita-os diretamente do seu servidor e mantenha o seu progresso sincronizado."; "sync_tasks_concurrent_count_title" = "Tarefas Simultâneas (%d)"; "sync_tasks_running_empty_title" = "Nenhuma tarefa em execução"; "sync_tasks_empty_title" = "Nenhuma tarefa na fila"; @@ -517,8 +512,6 @@ "sync_task_upload_file_label" = "A enviar ficheiro"; "audiobook_details_narrator_label" = "Narrado por %@"; "stream_button" = "Transmitir"; -"import_verb" = "importar"; -"download_verb" = "transferir"; "passkey_title" = "Chave de Acesso"; "create_profile_title" = "Crie o seu perfil"; "create_profile_description" = "Para ativar a sincronização na nuvem, inicie sessão no seu perfil. Pode fazê-lo mais tarde no separador Perfil."; diff --git a/BookPlayer/ro.lproj/Localizable.strings b/BookPlayer/ro.lproj/Localizable.strings index 86e8c034e..ea324b8ff 100644 --- a/BookPlayer/ro.lproj/Localizable.strings +++ b/BookPlayer/ro.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Dona"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Descarcă dosarul"; "download_folder_confirmation_message" = "Descarcă toate cele %d fișiere din acest dosar?"; "hardcover_searching_books" = "Căutând cărți..."; "hardcover_unlink_button" = "Deconectează"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Economisiți spațiu de stocare!"; -"sync_invitation_learn_more_button" = "Aflați mai multe"; -"sync_invitation_description" = "Sunteți pe cale să %1$@ %2$d elemente. %3$@"; -"sync_invitation_stream_description" = "În loc să ocupați spațiu, redați-le direct de pe server și păstrați progresul sincronizat."; "sync_tasks_concurrent_count_title" = "Sarcini simultane (%d)"; "sync_tasks_running_empty_title" = "Nicio sarcină în curs"; "sync_tasks_empty_title" = "Nicio sarcină în coadă"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Se încarcă fișierul"; "audiobook_details_narrator_label" = "Narat de %@"; "stream_button" = "Redare"; -"import_verb" = "importa"; -"download_verb" = "descărca"; "passkey_title" = "Cheie de acces"; "create_profile_title" = "Creați-vă profilul"; "create_profile_description" = "Pentru a activa sincronizarea în cloud, conectați-vă la profilul dvs. Puteți face acest lucru mai târziu din fila Profil."; diff --git a/BookPlayer/ru.lproj/Localizable.strings b/BookPlayer/ru.lproj/Localizable.strings index 9592f37ad..e86ca249a 100644 --- a/BookPlayer/ru.lproj/Localizable.strings +++ b/BookPlayer/ru.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Включить возможность перемотки на экране блокировки"; "donate_title" = "Пожертвовать"; "bookmark_automatic_sleep_title" = "Последняя позиция, когда был включен таймер сна"; -"download_folder_confirmation_title" = "Скачать папку"; "download_folder_confirmation_message" = "Скачать все %d файлов из этой папки?"; "hardcover_searching_books" = "Поиск книг..."; "hardcover_unlink_button" = "Отвязать"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Экономьте место!"; -"sync_invitation_learn_more_button" = "Узнать больше"; -"sync_invitation_description" = "Вы собираетесь %1$@ %2$d элементов. %3$@"; -"sync_invitation_stream_description" = "Вместо того чтобы занимать место, транслируйте их прямо со своего сервера и синхронизируйте прогресс."; "sync_tasks_concurrent_count_title" = "Параллельные задачи (%d)"; "sync_tasks_running_empty_title" = "Нет запущенных задач"; "sync_tasks_empty_title" = "В очереди нет задач"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Загрузка файла"; "audiobook_details_narrator_label" = "Текст читает %@"; "stream_button" = "Транслировать"; -"import_verb" = "импортировать"; -"download_verb" = "скачать"; "passkey_title" = "Ключ доступа"; "create_profile_title" = "Создайте свой профиль"; "create_profile_description" = "Чтобы включить облачную синхронизацию, войдите в свой профиль. Вы всегда можете сделать это позже во вкладке «Профиль»."; diff --git a/BookPlayer/sk-SK.lproj/Localizable.strings b/BookPlayer/sk-SK.lproj/Localizable.strings index ec430503e..ebf6b4562 100644 --- a/BookPlayer/sk-SK.lproj/Localizable.strings +++ b/BookPlayer/sk-SK.lproj/Localizable.strings @@ -400,7 +400,6 @@ Usilovne pracujeme na poskytovaní bezproblémového zážitku, ak je to možné "settings_seekprogressbar_description" = "Povolenie vyhľadávania pri zamknutej obrazovke"; "donate_title" = "Darovať"; "bookmark_automatic_sleep_title" = "Posledná pozícia, keď bol časovač spánku zapnutý"; -"download_folder_confirmation_title" = "Stiahnuť priečinok"; "download_folder_confirmation_message" = "Stiahnuť všetkých %d súbory z tohto priečinku?"; "hardcover_searching_books" = "Hľadanie kníh..."; "hardcover_unlink_button" = "Odpojiť"; @@ -504,10 +503,6 @@ Usilovne pracujeme na poskytovaní bezproblémového zážitku, ak je to možné "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Šetrite svoje úložisko!"; -"sync_invitation_learn_more_button" = "Dozvedieť sa viac"; -"sync_invitation_description" = "Chystáte sa %1$@ %2$d položiek. %3$@"; -"sync_invitation_stream_description" = "Namiesto zaberania miesta ich streamujte priamo zo svojho servera a udržujte svoj pokrok synchronizovaný."; "sync_tasks_concurrent_count_title" = "Súbežné úlohy (%d)"; "sync_tasks_running_empty_title" = "Žiadne bežiace úlohy"; "sync_tasks_empty_title" = "Žiadne úlohy v poradí"; @@ -516,8 +511,6 @@ Usilovne pracujeme na poskytovaní bezproblémového zážitku, ak je to možné "sync_task_upload_file_label" = "Nahrávanie súboru"; "audiobook_details_narrator_label" = "Rozpráva %@"; "stream_button" = "Streamovať"; -"import_verb" = "importovať"; -"download_verb" = "stiahnuť"; "passkey_title" = "Prístupový kľúč"; "create_profile_title" = "Vytvorte si profil"; "create_profile_description" = "Ak chcete povoliť synchronizáciu v cloude, prihláste sa do svojho profilu. Môžete to urobiť kedykoľvek neskôr na karte Profil."; diff --git a/BookPlayer/sv.lproj/Localizable.strings b/BookPlayer/sv.lproj/Localizable.strings index 0aa37dc71..1bae71c90 100644 --- a/BookPlayer/sv.lproj/Localizable.strings +++ b/BookPlayer/sv.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Donera"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Ladda ner mapp"; "download_folder_confirmation_message" = "Ladda ner alla %d filer från denna mapp?"; "hardcover_searching_books" = "Söker böcker..."; "hardcover_unlink_button" = "Koppla från"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Spara ditt lagringsutrymme!"; -"sync_invitation_learn_more_button" = "Läs mer"; -"sync_invitation_description" = "Du är på väg att %1$@ %2$d objekt. %3$@"; -"sync_invitation_stream_description" = "Istället för att ta upp plats kan du streama dem direkt från din server och hålla dina framsteg synkroniserade."; "sync_tasks_concurrent_count_title" = "Samtidiga uppgifter (%d)"; "sync_tasks_running_empty_title" = "Inga pågående uppgifter"; "sync_tasks_empty_title" = "Inga uppgifter i kön"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Laddar upp fil"; "audiobook_details_narrator_label" = "Uppläst av %@"; "stream_button" = "Streama"; -"import_verb" = "importera"; -"download_verb" = "ladda ner"; "passkey_title" = "Nyckelkod"; "create_profile_title" = "Skapa din profil"; "create_profile_description" = "För att aktivera molnsynkronisering, logga in på din profil. Du kan alltid göra detta senare från Profil-fliken."; diff --git a/BookPlayer/tr.lproj/Localizable.strings b/BookPlayer/tr.lproj/Localizable.strings index ca22d2bd7..5666e04ce 100644 --- a/BookPlayer/tr.lproj/Localizable.strings +++ b/BookPlayer/tr.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Bağış yapmak"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Klasörü indir"; "download_folder_confirmation_message" = "Bu klasördeki tüm %d dosya indirilsin mi?"; "hardcover_searching_books" = "Kitaplar aranıyor..."; "hardcover_unlink_button" = "Bağlantıyı kes"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Depolama Alanınızdan Tasarruf Edin!"; -"sync_invitation_learn_more_button" = "Daha fazla bilgi al"; -"sync_invitation_description" = "%2$d öğeyi %1$@ etmek üzeresiniz. %3$@"; -"sync_invitation_stream_description" = "Yer kaplamak yerine, onları doğrudan sunucunuzdan yayınlayın ve ilerlemenizi senkronize tutun."; "sync_tasks_concurrent_count_title" = "Eşzamanlı Görevler (%d)"; "sync_tasks_running_empty_title" = "Çalışan görev yok"; "sync_tasks_empty_title" = "Sırada bekleyen görev yok"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Dosya yükleniyor"; "audiobook_details_narrator_label" = "Seslendiren: %@"; "stream_button" = "Yayınla"; -"import_verb" = "içe aktarmak"; -"download_verb" = "indirmek"; "passkey_title" = "Geçiş Anahtarı"; "create_profile_title" = "Profilinizi oluşturun"; "create_profile_description" = "Bulut senkronizasyonunu etkinleştirmek için profilinize giriş yapın. Bunu daha sonra Profil sekmesinden istediğiniz zaman yapabilirsiniz."; diff --git a/BookPlayer/uk.lproj/Localizable.strings b/BookPlayer/uk.lproj/Localizable.strings index a678f75f9..34b17187c 100644 --- a/BookPlayer/uk.lproj/Localizable.strings +++ b/BookPlayer/uk.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "Пожертвуйте"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "Завантажити папку"; "download_folder_confirmation_message" = "Завантажити всі %d файлів з цієї папки?"; "hardcover_searching_books" = "Пошук книг..."; "hardcover_unlink_button" = "Від'єднати"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "Економте місце на пристрої!"; -"sync_invitation_learn_more_button" = "Докладніше"; -"sync_invitation_description" = "Ви збираєтеся %1$@ %2$d елементів. %3$@"; -"sync_invitation_stream_description" = "Замість того, щоб займати місце, транслюйте їх безпосередньо з вашого сервера та синхронізуйте прогрес."; "sync_tasks_concurrent_count_title" = "Паралельні завдання (%d)"; "sync_tasks_running_empty_title" = "Немає запущених завдань"; "sync_tasks_empty_title" = "Немає завдань у черзі"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "Завантаження файлу"; "audiobook_details_narrator_label" = "Читає %@"; "stream_button" = "Транслювати"; -"import_verb" = "імпортувати"; -"download_verb" = "завантажити"; "passkey_title" = "Ключ доступу"; "create_profile_title" = "Створіть свій профіль"; "create_profile_description" = "Щоб увімкнути хмарну синхронізацію, увійдіть у свій профіль. Ви завжди можете зробити це пізніше у вкладці «Профіль»."; diff --git a/BookPlayer/zh-Hans.lproj/Localizable.strings b/BookPlayer/zh-Hans.lproj/Localizable.strings index 255f93f8f..7ec966988 100644 --- a/BookPlayer/zh-Hans.lproj/Localizable.strings +++ b/BookPlayer/zh-Hans.lproj/Localizable.strings @@ -400,7 +400,6 @@ "settings_seekprogressbar_description" = "Enable seeking on the lock screen"; "donate_title" = "捐"; "bookmark_automatic_sleep_title" = "Last position when the sleep timer was turned on"; -"download_folder_confirmation_title" = "下载文件夹"; "download_folder_confirmation_message" = "下载此文件夹中的所有 %d 个文件?"; "hardcover_searching_books" = "正在搜索图书..."; "hardcover_unlink_button" = "取消链接"; @@ -504,10 +503,6 @@ "jellyfin_quick_connect_error_no_code" = "Your Jellyfin server didn't return a Quick Connect code. Make sure Quick Connect is enabled in the server's dashboard."; "jellyfin_quick_connect_error_generic" = "Quick Connect couldn't complete. Check that Quick Connect is enabled on your server and try again."; "jellyfin_quick_connect_error_timeout" = "Timed out waiting for the code to be entered. Please try again."; -"sync_invitation_save_storage_title" = "节省您的存储空间!"; -"sync_invitation_learn_more_button" = "了解更多"; -"sync_invitation_description" = "您即将 %1$@ %2$d 个项目。%3$@"; -"sync_invitation_stream_description" = "无需占用空间,直接从服务器流式传输并保持进度同步。"; "sync_tasks_concurrent_count_title" = "并发任务 (%d)"; "sync_tasks_running_empty_title" = "无正在运行的任务"; "sync_tasks_empty_title" = "无排队任务"; @@ -516,8 +511,6 @@ "sync_task_upload_file_label" = "正在上传文件"; "audiobook_details_narrator_label" = "讲述人:%@"; "stream_button" = "流式传输"; -"import_verb" = "导入"; -"download_verb" = "下载"; "passkey_title" = "通行密钥"; "create_profile_title" = "创建您的个人资料"; "create_profile_description" = "要启用云同步,请登录您的个人资料。您稍后可以随时在“个人资料”选项卡中执行此操作。"; diff --git a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift index d68405100..5a0d8cb41 100644 --- a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift @@ -17,7 +17,6 @@ public struct AudiobookShelfSeriesReference: Codable, Hashable { public struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable { public enum Kind: String, Codable { case audiobook = "book" - case podcast = "podcast" case library = "library" case browseCategory = "browseCategory" case series = "series" @@ -109,7 +108,7 @@ extension AudiobookShelfLibraryItem { public var displayName: String { title } public var isDownloadable: Bool { - kind == .audiobook || kind == .podcast + kind == .audiobook } public var isNavigable: Bool { @@ -118,7 +117,7 @@ extension AudiobookShelfLibraryItem { public var placeholderImageName: String { switch kind { - case .podcast, .audiobook: "waveform" + case .audiobook: "waveform" case .library: "folder" case .browseCategory: switch browseCategory { diff --git a/Shared/AudiobookShelf/AudiobookShelfLibraryLevelData.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryLevelData.swift index b383ab6b0..c4d9047c6 100644 --- a/Shared/AudiobookShelf/AudiobookShelfLibraryLevelData.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryLevelData.swift @@ -62,5 +62,4 @@ public enum AudiobookShelfLibraryViewSource: Equatable, Hashable { public enum AudiobookShelfLibraryLevelData: Equatable, Hashable { case library(source: AudiobookShelfLibraryViewSource, title: String) case details(data: AudiobookShelfLibraryItem) - case subscribe } diff --git a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift index 6fd01b7ed..f7767d1ae 100644 --- a/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift +++ b/Shared/Integrations/IntegrationDetailsViewModelProtocol.swift @@ -52,7 +52,6 @@ public protocol IntegrationDetailsViewModelProtocol: ObservableObject { /// re-rendered via .accountUpdate): the Stream CTA pushes the subscribe flow, /// so a purchase completed on the pushed screen must flip these on pop — /// snapshot Bools captured at construction go stale exactly there. - var showSubscribeButton: Bool { get } var allowStream: Bool { get } /// Staged virtual-import selection awaiting user confirmation; drives the diff --git a/Shared/Integrations/IntegrationLibraryItemProtocol.swift b/Shared/Integrations/IntegrationLibraryItemProtocol.swift index 83d29131d..43a9c7fbb 100644 --- a/Shared/Integrations/IntegrationLibraryItemProtocol.swift +++ b/Shared/Integrations/IntegrationLibraryItemProtocol.swift @@ -11,6 +11,10 @@ import Foundation public protocol IntegrationLibraryItemProtocol: Identifiable, Hashable { var id: String { get } var displayName: String { get } + /// A playable leaf item rather than a browsable container. The single predicate behind + /// row selection, select-all and the whole-level bulk actions, so a selection can never + /// contain something "everything here" would have skipped. Conformers also key artwork + /// and the disclosure chevron off it. var isDownloadable: Bool { get } var isNavigable: Bool { get } var placeholderImageName: String { get } From 240062e2ec79a38c4d039a31588f9851f1d4a27e Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Tue, 15 Sep 2026 12:40:38 -0500 Subject: [PATCH 124/172] refactor: drop the streaming buffering overlay and its state chain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DynamicWaveLoadingView was this PR's only streaming indicator: a hand-rolled capsule animation driven by a Task.sleep loop, hardcoded black/white over the themed artwork, sitting on an untested state chain that three review rounds had to harden. develop has streamed from S3 for years with no buffering cue, so removing it returns to known behavior rather than regressing one. Everything that existed only for it goes with it: PlayerManager's playerIsLoadingURL flag and setter, the timeControlStatus sink (playerLoadingStateSubscription), isStreamingChapter, the Combine AVPlayerItem.status sink (playerItemStatusSubscription — the KVO observeValue path remains the one status observer, closing the dual-observation item), the four teardown resets, the protocol member and the watch's dead declaration of it, PlayerViewModel's mirror + sink, PlayerView's overlay + animation binding, and the loading_title key (Base + en). Playback logic is untouched. Android still ships SoundwaveLoadingOverlay with the same gate; parity follow-up to drop it there. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_011zgFQrGSgWMre6xsfyrdRw --- BookPlayer.xcodeproj/project.pbxproj | 4 - BookPlayer/Base.lproj/Localizable.strings | 1 - .../Generated/AutoMockable.generated.swift | 5 - BookPlayer/Player/PlayerManager.swift | 104 ------------------ BookPlayer/Player/PlayerManagerProtocol.swift | 1 - .../Player/ViewModels/PlayerViewModel.swift | 10 -- .../Player/Views/DynamicWaveLoadingView.swift | 73 ------------ BookPlayer/Player/Views/PlayerView.swift | 12 -- BookPlayer/en.lproj/Localizable.strings | 1 - .../LocalPlayback/Player/PlayerManager.swift | 1 - 10 files changed, 212 deletions(-) delete mode 100644 BookPlayer/Player/Views/DynamicWaveLoadingView.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 0fe836dfa..ec71d2614 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -707,7 +707,6 @@ 9911FBC82F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */; }; 9911FBD72F7CACEC00DC9A2B /* QueuedTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */; }; 32F59104BFC8DDAA7DBEC934 /* QueuedTaskDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */; }; - 992D6E102FA2BD290091849F /* DynamicWaveLoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 992D6E0F2FA2BD230091849F /* DynamicWaveLoadingView.swift */; }; 992D6E132FA98B4D0091849F /* AudiobookShelfConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */; }; 992D6E142FA98B4D0091849F /* AudiobookShelfConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879C2EC7722400DF442B /* AudiobookShelfConnectionData.swift */; }; 992D6E152FA98B4D0091849F /* AudiobookShelfConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */; }; @@ -1784,7 +1783,6 @@ 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncableExternalResource.swift; sourceTree = ""; }; 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTasksView.swift; sourceTree = ""; }; 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTaskDisplay.swift; sourceTree = ""; }; - 992D6E0F2FA2BD230091849F /* DynamicWaveLoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicWaveLoadingView.swift; sourceTree = ""; }; 99329DB62F3AA8F6003F8E73 /* PlayControlsRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayControlsRowView.swift; sourceTree = ""; }; 99329DBA2F3AAA61003F8E73 /* ListeningProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListeningProgressView.swift; sourceTree = ""; }; 99329DBC2F3AAAB4003F8E73 /* NavigationRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationRowView.swift; sourceTree = ""; }; @@ -3475,7 +3473,6 @@ 4138CE1A26E5B4020014F11E /* Bookmarks */, 9F64C6222793C37C00B2493C /* Controls */, 9F3D0CE328C2BF2A00E9E8A3 /* ButtonFree */, - 992D6E0F2FA2BD230091849F /* DynamicWaveLoadingView.swift */, 99329DC02F3AAB57003F8E73 /* DismissableRegionView.swift */, 99329DB62F3AA8F6003F8E73 /* PlayControlsRowView.swift */, 99329DBA2F3AAA61003F8E73 /* ListeningProgressView.swift */, @@ -5121,7 +5118,6 @@ 6370434C2E2C046F005353D1 /* SettingsPrivacySectionView.swift in Sources */, 8A9D0D242CCED53C007A924D /* JellyfinLibraryViewModel.swift in Sources */, 631908AA2E369BDB009249C1 /* ProgressSeekingSectionView.swift in Sources */, - 992D6E102FA2BD290091849F /* DynamicWaveLoadingView.swift in Sources */, 636ED1E82D51331E00BFF3FD /* TipJarViewModel.swift in Sources */, 9F2E00DE2A5C2B810001FE20 /* StorageCloudDeletedViewModel.swift in Sources */, 3F7B64422E0FB27000299D97 /* AnyCodable.swift in Sources */, diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index eb6ebe9b1..ffa9b74f4 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -560,6 +560,5 @@ We're working hard on providing a seamless experience, if possible, please conta "subscription_tier_plus_title" = "Plus"; "subscription_tier_lite_title" = "Lite"; "subscription_tier_pro_title" = "Pro"; -"loading_title" = "Loading"; "info_title" = "Info"; "integration_error_missing_connection" = "This book streams from your media server. Connect it in Settings to download or play it."; diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index b2d4ac745..1bc4e3996 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -1343,11 +1343,6 @@ class PlayerManagerProtocolMock: PlayerManagerProtocol { set(value) { underlyingIsPlaying = value } } var underlyingIsPlaying: Bool! - var playerIsLoadingURL: Bool { - get { return underlyingPlayerIsLoadingURL } - set(value) { underlyingPlayerIsLoadingURL = value } - } - var underlyingPlayerIsLoadingURL: Bool! var syncProgressDelegate: PlaybackSyncProgressDelegate? //MARK: - load diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 453cde4a6..e9cec4145 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -39,17 +39,14 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP private var nowPlayingClaimSubscription: AnyCancellable? /// Named + cancelled-before-rebind: bound on every player recreation (init, .failed, /// mediaServicesWereReset) — a disposeBag entry would accumulate one sink per recreation. - private var playerLoadingStateSubscription: AnyCancellable? /// Named + cancelled-before-rebind: bound on EVERY chapter/item load — a disposeBag entry /// leaks one KVO publisher (which retains its AVPlayerItem) per loaded chapter. - private var playerItemStatusSubscription: AnyCancellable? private var periodicTimeObserver: Any? private var disposeBag = Set() /// Flag determining if it should resume playback after finishing up loading an item @Published private var playbackQueued: Bool? /// Flag determining if it's in the process of fetching the URL for playback @Published private var isFetchingRemoteURL: Bool? - @Published var playerIsLoadingURL: Bool = false /// Prevent loop from automatic URL refreshes private var canFetchRemoteURL = true /// Set when audio-session activation fails in the current process, so a later @@ -183,52 +180,8 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP audioPlayer.allowsExternalPlayback = false bindTimeControlPassthroughPublisher() - setupPlayerObservers(player: audioPlayer) } - private func updatePlayerIsLoadingURL(_ isLoading: Bool) { - if Thread.isMainThread { - self.playerIsLoadingURL = isLoading - } else { - DispatchQueue.main.async { - self.playerIsLoadingURL = isLoading - } - } - } - - private func setupPlayerObservers(player: AVPlayer?) { - guard let player = player else { return } - - // 2. Observe Buffering (AVPlayer TimeControlStatus) - playerLoadingStateSubscription?.cancel() - playerLoadingStateSubscription = player.publisher(for: \.timeControlStatus) - // AVFoundation delivers this KVO off-main; the sink reads currentItem, which is - // mutated on main — hop before reading, like the player's other sinks - .receive(on: DispatchQueue.main) - .sink { [weak self, weak player] status in - guard let self = self, let player = player else { return } - // Same remote-only gate as the item-status observer: a stalled/seeking LOCAL book - // must not flash the streaming buffering overlay. - guard self.isStreamingChapter(self.currentItem?.currentChapter) else { return } - - switch status { - case .waitingToPlayAtSpecifiedRate: - if player.reasonForWaitingToPlay == .toMinimizeStalls { - // We are actively buffering mid-playback (or right after hitting play) - self.updatePlayerIsLoadingURL(true) - } - case .playing, .paused: - // If the item status is still .unknown, we are still preparing - if self.playerItem?.status == .readyToPlay { - self.updatePlayerIsLoadingURL(false) - } - @unknown default: - break - } - } - - } - func currentItemPublisher() -> AnyPublisher { return self.$currentItem.eraseToAnyPublisher() } @@ -308,9 +261,6 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP @MainActor func loadPlayerItem(for chapter: PlayableChapter, forceRefreshURL: Bool) async throws -> PlayableChapter { - // Reset unconditionally: the flag's setters are gated on remote loads, so a LOCAL load - // that interrupts a buffering stream would otherwise leave the overlay stuck on. - updatePlayerIsLoadingURL(false) let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(chapter.relativePath) @@ -378,53 +328,9 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP self.playerItem?.preferredForwardBufferDuration = 20 } - setupPlayerItemObservers(playerItem: playerItem) - return self.currentItem?.currentChapter ?? chapter } - /// True only when the chapter actually streams: it has a remote source AND no local - /// copy on disk — the same branch condition loadPlayerItem plays by. A downloaded - /// cloud book keeps its remoteURL forever, so checking URLs alone would flash the - /// buffering overlay over purely local playback. - private func isStreamingChapter(_ chapter: PlayableChapter?) -> Bool { - guard let chapter, - chapter.externalUrl != nil || chapter.remoteURL != nil else { - return false - } - let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(chapter.relativePath) - return !FileManager.default.fileExists(atPath: fileURL.path) - } - - func setupPlayerItemObservers(playerItem: AVPlayerItem?) { - guard let playerItem else { - return - } - - // Local files attach ready almost instantly but still emit the initial .unknown — - // only streamed/remote loads should drive the buffering overlay. - let isRemoteLoad = isStreamingChapter(currentItem?.currentChapter) - playerItemStatusSubscription?.cancel() - playerItemStatusSubscription = playerItem.publisher(for: \.status) - .receive(on: DispatchQueue.main) - .sink { [weak self] status in - guard let self = self, isRemoteLoad else { return } - - switch status { - case .readyToPlay: - // The item is fully loaded and ready to be played - self.updatePlayerIsLoadingURL(false) - case .failed: - self.updatePlayerIsLoadingURL(false) - case .unknown: - // Still evaluating the asset - self.updatePlayerIsLoadingURL(true) - @unknown default: - break - } - } - - } func load(_ item: PlayableItem, autoplay: Bool) { load(item, autoplay: autoplay, forceRefreshURL: false) } @@ -550,9 +456,6 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP self.playbackQueued = nil self.isFetchingRemoteURL = nil self.observeStatus = false - // The load died before the item attached — nothing will ever flip the buffering - // overlay off, so clear it here or it covers the player indefinitely. - self.updatePlayerIsLoadingURL(false) self.showErrorAlert(title: "\("error_title".localized) Metadata", error.localizedDescription, actions: actions) return } @@ -569,8 +472,6 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP DispatchQueue.main.async { [weak self] in self?.playbackQueued = nil self?.isFetchingRemoteURL = nil - // The item was never attached, so nothing else flips the buffering overlay off. - self?.updatePlayerIsLoadingURL(false) NotificationCenter.default.post(name: .bookReady, object: nil, userInfo: ["loaded": false]) } return @@ -1441,11 +1342,6 @@ extension PlayerManager { private func stopPlayback() { observeStatus = false playbackQueued = nil - // Stopping mid-buffer never reaches .readyToPlay, so the status sinks won't - // clear the streaming buffering overlay — reset it on teardown, and release - // the item-status sink promptly (it retains its AVPlayerItem until rebind) - updatePlayerIsLoadingURL(false) - playerItemStatusSubscription?.cancel() audioPlayer.pause() playTask?.cancel() diff --git a/BookPlayer/Player/PlayerManagerProtocol.swift b/BookPlayer/Player/PlayerManagerProtocol.swift index 45a3ff71f..0bf702695 100644 --- a/BookPlayer/Player/PlayerManagerProtocol.swift +++ b/BookPlayer/Player/PlayerManagerProtocol.swift @@ -18,7 +18,6 @@ public protocol PlayerManagerProtocol: AnyObject { var currentItem: PlayableItem? { get set } var currentSpeed: Float { get set } var isPlaying: Bool { get } - var playerIsLoadingURL: Bool { get } var syncProgressDelegate: PlaybackSyncProgressDelegate? { get set } func load(_ item: PlayableItem, autoplay: Bool) diff --git a/BookPlayer/Player/ViewModels/PlayerViewModel.swift b/BookPlayer/Player/ViewModels/PlayerViewModel.swift index a9b7d7c31..e32c06678 100644 --- a/BookPlayer/Player/ViewModels/PlayerViewModel.swift +++ b/BookPlayer/Player/ViewModels/PlayerViewModel.swift @@ -33,9 +33,6 @@ final class PlayerViewModel: ObservableObject { @Published var sleepText: String? @Published var sleepAccessibilityLabel: String? @Published var hasNextChapter = false - /// Mirrors playerManager.playerIsLoadingURL: the view can't observe an @Published on a - /// nested ObservableObject, so the buffering overlay would only update coincidentally. - @Published var isLoadingURL = false @Published var hasPreviousChapter = false @Published var lastBookmark: SimpleBookmark? @Published var sheetStyle: PlayerSheetStyle? @@ -201,13 +198,6 @@ final class PlayerViewModel: ObservableObject { } func bindBookPlayingProgressEvents() { - self.playerManager.$playerIsLoadingURL - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak self] isLoading in - self?.isLoadingURL = isLoading - } - .store(in: &disposeBag) self.playerManager.isPlayingPublisher() .removeDuplicates() diff --git a/BookPlayer/Player/Views/DynamicWaveLoadingView.swift b/BookPlayer/Player/Views/DynamicWaveLoadingView.swift deleted file mode 100644 index 08f28fd8c..000000000 --- a/BookPlayer/Player/Views/DynamicWaveLoadingView.swift +++ /dev/null @@ -1,73 +0,0 @@ -// -// DynamicWaveLoadingView.swift -// BookPlayer -// -// Created by Pedro Iñiguez on 29/4/26. -// Copyright © 2026 BookPlayer LLC. All rights reserved. -// - -import SwiftUI - -struct DynamicWaveLoadingView: View { - // VoiceOver: announce the buffering state instead of nothing. - // Controls the fade in/out of the background and wave - @State private var isPulsing = false - - // Stores the current random heights for the waveform bars - @State private var waveHeights: [CGFloat] = [0.5, 0.5, 0.5, 0.5, 0.5] - - // Customization properties - let animationDuration: TimeInterval = 0.8 - let barCount = 5 - - var body: some View { - ZStack { - // 1. The Dimming Background - Color.black - .opacity(isPulsing ? 0.6 : 0.2) // Pulses between slightly dark and very dark - .edgesIgnoringSafeArea(.all) - - // 2. The Sound Wave - HStack(spacing: 4) { - ForEach(0.. Date: Wed, 16 Sep 2026 00:35:23 -0500 Subject: [PATCH 125/172] feat: virtual imports require a server-reported duration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A media-server import creates a library row without ever opening the audio file, so `book.duration` can only be what the server reported. It was taken as `duration ?? 0`, and a 0-duration row is silently unplayable: the `chapter.duration > 0` guard in `loadChapterOperation` bails to a `bookReady loaded:false` that no UI listens to. The pipeline now hydrates a `HydratedItem` — a real file extension AND a positive length — per selected item, and an item that can produce neither is left out of the hydration map and skipped, exactly as items with no audio-file metadata already were. The alert only fires when the whole selection was skipped; its copy is reworded to cover both causes without naming streaming, since two download call sites share the key. Jellyfin gains a media-source runtime fallback for items the server hasn't probed at the item level, resolved in one place so the details screen and the import gate can't disagree. Both import paths read `details.runtimeInSeconds` rather than `durationSeconds`, which collapses "unmeasured" to 0 and would defeat the gate's fallbacks. --- .../AudiobookShelfLibraryViewModel.swift | 13 +- ...iobookShelfAudiobookDetailsViewModel.swift | 19 +- BookPlayer/Base.lproj/Localizable.strings | 2 +- .../JellyfinAudiobookDetailsViewModel.swift | 24 ++- .../JellyfinLibraryViewModel.swift | 18 +- .../IntegrationLibraryViewModelProtocol.swift | 55 ++++-- BookPlayer/en.lproj/Localizable.strings | 2 +- BookPlayerTests/ImportOperationTests.swift | 165 +++++++++++++++++- .../AudiobookShelfLibraryItem.swift | 19 +- Shared/Jellyfin/JellyfinLibraryItem.swift | 37 +++- .../Network/JellyfinConnectionService.swift | 8 +- 11 files changed, 298 insertions(+), 64 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index b6ad7622c..00647da02 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -263,15 +263,18 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, let resources = try await VirtualImportPipeline.run( items: audiobooks, id: \.id, - hydrateExtensions: { ids in + hydrate: { ids in // batch/get returns EXPANDED items (list endpoints are minified without // audioFiles); one round-trip for the whole selection let hydrated = try await self.connectionService.fetchItems(ids: ids) - return hydrated.reduce(into: [:]) { $0[$1.id] = $1.fileExtension } + return hydrated.reduce(into: [:]) { + $0[$1.id] = HydratedItem(fileExtension: $1.fileExtension, duration: $1.duration) + } }, - buildResource: { item, fileExtension in + buildResource: { item, hydrated in item.asVirtualImportResource( - fileExtension: fileExtension, + fileExtension: hydrated.fileExtension, + duration: hydrated.duration, connectionService: self.connectionService, artworkSize: CGSize(width: 300, height: 300) ) @@ -282,7 +285,7 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, return } if resources.count < audiobooks.count { - Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata") + Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata or no server-measured length") } // Stage as a VALUE for this screen's own confirmation sheet — the browser // stays open beneath it; dismissal happens on confirm diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index 3d07e8142..c8a23aad6 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -119,17 +119,22 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc let resources = try await VirtualImportPipeline.run( items: [item], id: \.id, - hydrateExtensions: { ids in + hydrate: { ids in // Same contract as the bulk paths: list navigation hands us a MINIFIED - // item, so hydrate it for the real file extension — never guessed + // item, so hydrate it for the real file extension — never guessed — and + // for the length, which an import is refused without let hydrated = try await self.connectionService.fetchItems(ids: ids) - var extensions: [String: String] = [:] - extensions[item.id] = hydrated.first?.fileExtension ?? item.fileExtension - return extensions + var hydratedByID: [String: HydratedItem] = [:] + hydratedByID[item.id] = HydratedItem( + fileExtension: hydrated.first?.fileExtension ?? item.fileExtension, + duration: hydrated.first?.duration ?? item.duration + ) + return hydratedByID }, - buildResource: { item, fileExtension in + buildResource: { item, hydrated in item.asVirtualImportResource( - fileExtension: fileExtension, + fileExtension: hydrated.fileExtension, + duration: hydrated.duration, connectionService: self.connectionService, artworkSize: CGSize(width: 300, height: 300) ) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index ffa9b74f4..1da679de4 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -531,7 +531,7 @@ We're working hard on providing a seamless experience, if possible, please conta "layout_grid_option" = "Grid"; "layout_list_option" = "List"; "authors_title" = "Authors"; -"import_no_audio_files_alert" = "The selected items have no audio files to import."; +"import_no_audio_files_alert" = "Your server hasn't reported the audio details for these items yet. Try again once it has finished scanning them."; "import_title" = "Import"; "files_title" = "%d Files"; "file_path_title" = "File Path"; diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 355b4f3f1..85fdf02bb 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -127,17 +127,25 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { let resources = try await VirtualImportPipeline.run( items: [item], id: \.id, - hydrateExtensions: { ids in - // Same contract as the bulk paths: the extension comes from the server's - // media sources or the item is not importable — never guessed + hydrate: { ids in + // Same contract as the bulk paths: the extension and the runtime come from the + // server's media sources or the item is not importable — never guessed, never + // defaulted to a 0 length let hydrated = try await self.connectionService.fetchItems(ids: ids) - var extensions: [String: String] = [:] - extensions[item.id] = hydrated.first?.details?.fileExtension ?? self.details?.fileExtension - return extensions + var hydratedByID: [String: HydratedItem] = [:] + hydratedByID[item.id] = HydratedItem( + fileExtension: hydrated.first?.details?.fileExtension ?? self.details?.fileExtension, + // `details.runtimeInSeconds`, never `durationSeconds`: the mapper collapses an + // unmeasured runtime to 0 rather than nil, so reading it here would satisfy the + // `??` with a zero and skip the fallback in exactly the case it exists for + duration: hydrated.first?.details?.runtimeInSeconds ?? self.details?.runtimeInSeconds + ) + return hydratedByID }, - buildResource: { item, fileExtension in + buildResource: { item, hydrated in item.asVirtualImportResource( - fileExtension: fileExtension, + fileExtension: hydrated.fileExtension, + duration: hydrated.duration, detailsOverride: self.details, connectionService: self.connectionService, artworkSize: CGSize(width: 200, height: 200) diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index 9080e38ad..86b91115c 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -87,13 +87,21 @@ extension JellyfinFolderImporting { let resources = try await VirtualImportPipeline.run( items: audiobooks, id: \.id, - hydrateExtensions: { ids in + hydrate: { ids in let hydrated = try await self.connectionService.fetchItems(ids: ids) - return hydrated.reduce(into: [:]) { $0[$1.id] = $1.details?.fileExtension } + return hydrated.reduce(into: [:]) { + $0[$1.id] = HydratedItem( + fileExtension: $1.details?.fileExtension, + // `details.runtimeInSeconds` keeps "unmeasured" as nil and avoids the whole-second + // truncation `durationSeconds` applies + duration: $1.details?.runtimeInSeconds + ) + } }, - buildResource: { item, fileExtension in + buildResource: { item, hydrated in item.asVirtualImportResource( - fileExtension: fileExtension, + fileExtension: hydrated.fileExtension, + duration: hydrated.duration, detailsOverride: nil, connectionService: self.connectionService, artworkSize: CGSize(width: 200, height: 200) @@ -105,7 +113,7 @@ extension JellyfinFolderImporting { return } if resources.count < audiobooks.count { - Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata") + Self.logger.warning("Virtual import skipped \(audiobooks.count - resources.count) item(s) with no audio-file metadata or no server-measured length") } // Stage as a VALUE for this screen's own confirmation sheet — the browser // stays open beneath it; dismissal happens on confirm diff --git a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift index 472bd9b0b..19410f2bd 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift +++ b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift @@ -102,31 +102,58 @@ extension IntegrationLibraryViewModelProtocol { // MARK: - Virtual import pipeline +/// What hydration has to prove about a selected item before it can be imported: a REAL +/// file extension (never guessed) and a length the server actually measured. +/// +/// The duration is not cosmetic. It is the only source for an external row's +/// `book.duration` — nothing opens the file, so nothing can measure it later — and +/// `loadChapterOperation` refuses to start playback on a chapter whose duration is 0, +/// silently. An item imported without one is a row that can never play. +struct HydratedItem { + let fileExtension: String + let duration: TimeInterval + + /// Both pieces or nothing: a nil result leaves the id out of the hydration map, which + /// is the pipeline's existing skip contract. + init?(fileExtension: String?, duration: TimeInterval?) { + guard + let fileExtension, + !fileExtension.isEmpty, + let duration, + duration > 0 + else { return nil } + + self.fileExtension = fileExtension + self.duration = duration + } +} + /// Shared orchestration for virtual imports, used by every provider's bulk and -/// details path: hydrate the selection for REAL file extensions (never guessed), -/// build the import payloads, and skip items without audio-file metadata. Callers -/// own the `isImporting` reentrancy guard, error surfacing, and staging the result -/// as their `pendingImportBatch`; the two closures carry the only -/// provider-specific parts. +/// details path: hydrate the selection for the values an import can't be built without, +/// build the import payloads, and skip the items that have none. Callers own the +/// `isImporting` reentrancy guard, error surfacing, and staging the result as their +/// `pendingImportBatch`; the two closures carry the only provider-specific parts. @MainActor enum VirtualImportPipeline { - /// - Returns: the import payloads for every item whose REAL file extension could - /// be hydrated, in selection order — the caller stages them as its - /// `pendingImportBatch`. Empty means nothing in the selection had audio-file - /// metadata (callers surface the `import_no_audio_files_alert`); fewer than - /// `items.count` means the remainder was skipped. + /// - Returns: the import payloads for every item that hydrated, in selection order — + /// the caller stages them as its `pendingImportBatch`. Empty means nothing in the + /// selection was importable (callers surface the `import_no_audio_files_alert`); + /// fewer than `items.count` means the remainder was skipped. The two skip causes — + /// no audio-file metadata, no server-measured length — are deliberately not + /// distinguished: both mean "this can't be streamed", and neither is actionable + /// per-item beyond that one message. /// - Throws: hydration/network errors, for the caller's error state. static func run( items: [Item], id: (Item) -> String, - hydrateExtensions: ([String]) async throws -> [String: String], - buildResource: (Item, String) -> SimpleExternalResource + hydrate: ([String]) async throws -> [String: HydratedItem], + buildResource: (Item, HydratedItem) -> SimpleExternalResource ) async throws -> [SimpleExternalResource] { guard !items.isEmpty else { return [] } - let extensionsByID = try await hydrateExtensions(items.map(id)) + let hydratedByID = try await hydrate(items.map(id)) return items.compactMap { item in - extensionsByID[id(item)].map { buildResource(item, $0) } + hydratedByID[id(item)].map { buildResource(item, $0) } } } } diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 186bf14d6..a0fab8496 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -535,7 +535,7 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "layout_grid_option" = "Grid"; "layout_list_option" = "List"; "authors_title" = "Authors"; -"import_no_audio_files_alert" = "The selected items have no audio files to import."; +"import_no_audio_files_alert" = "Your server hasn't reported the audio details for these items yet. Try again once it has finished scanning them."; "import_title" = "Import"; "files_title" = "%d Files"; "task_uploading_file_label" = "Uploading file"; diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 17730341d..49245c104 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -148,26 +148,83 @@ final class VirtualImportPipelineTests: XCTestCase { ) } + private func hydrated(_ fileExtension: String, duration: TimeInterval = 4800) -> HydratedItem? { + HydratedItem(fileExtension: fileExtension, duration: duration) + } + func testBuildsOnlyHydratedItemsInSelectionOrder() async throws { let items = [StubItem(id: "a"), StubItem(id: "b"), StubItem(id: "c")] let resources = try await VirtualImportPipeline.run( items: items, id: \.id, - hydrateExtensions: { ids in + hydrate: { ids in XCTAssertEqual(ids, ["a", "b", "c"]) - return ["a": "m4b", "c": "mp3"] // "b" reports no audio-file metadata + var hydratedByID: [String: HydratedItem] = [:] + hydratedByID["a"] = self.hydrated("m4b") + hydratedByID["c"] = self.hydrated("mp3") + return hydratedByID // "b" reports no audio-file metadata }, buildResource: { item, _ in self.makeResource(id: item.id) } ) XCTAssertEqual(resources.map(\.providerId), ["a", "c"], "skips unhydrated items, keeps selection order") } + /// Drives the drop through the REAL provider mapping rather than a stub, so it fails if a + /// closure ever starts reading a source that reports "unmeasured" as something other than nil. + func testSkipsItemsTheServerNeverMeasured() async throws { + let measured = AudiobookShelfLibraryItem( + id: "measured", + title: "Measured", + kind: .audiobook, + libraryId: "lib", + duration: 4800, + fileExtension: "m4b" + ) + let unmeasured = AudiobookShelfLibraryItem( + id: "unmeasured", + title: "Unmeasured", + kind: .audiobook, + libraryId: "lib", + duration: nil, + fileExtension: "m4b" + ) + + let resources = try await VirtualImportPipeline.run( + items: [measured, unmeasured], + id: \.id, + hydrate: { _ in + [measured, unmeasured].reduce(into: [:]) { + $0[$1.id] = HydratedItem(fileExtension: $1.fileExtension, duration: $1.duration) + } + }, + buildResource: { item, _ in self.makeResource(id: item.id) } + ) + + XCTAssertEqual( + resources.map(\.providerId), + ["measured"], + "an item with no server-measured length would import a row that can never play" + ) + } + + func testHydratedItemRequiresARealExtensionAndAMeasuredLength() { + XCTAssertNotNil(HydratedItem(fileExtension: "m4b", duration: 1)) + + XCTAssertNil(HydratedItem(fileExtension: nil, duration: 4800)) + XCTAssertNil(HydratedItem(fileExtension: "", duration: 4800)) + XCTAssertNil(HydratedItem(fileExtension: "m4b", duration: nil)) + /// Jellyfin's mapper collapses an unprobed runtime to 0 rather than nil, so the + /// gate has to be `> 0`, not `!= nil` + XCTAssertNil(HydratedItem(fileExtension: "m4b", duration: 0)) + XCTAssertNil(HydratedItem(fileExtension: "m4b", duration: -1)) + } + func testEmptySelectionNeverHydrates() async throws { var hydrateCalled = false let resources = try await VirtualImportPipeline.run( items: [StubItem](), id: \.id, - hydrateExtensions: { _ in + hydrate: { _ in hydrateCalled = true return [:] }, @@ -182,7 +239,7 @@ final class VirtualImportPipelineTests: XCTestCase { _ = try await VirtualImportPipeline.run( items: [StubItem(id: "a")], id: \.id, - hydrateExtensions: { _ in throw URLError(.notConnectedToInternet) }, + hydrate: { _ in throw URLError(.notConnectedToInternet) }, buildResource: { item, _ in self.makeResource(id: item.id) } ) XCTFail("expected the hydration error to propagate to the caller's error state") @@ -358,6 +415,7 @@ final class AudiobookShelfDecodingTests: XCTestCase { "mediaType": "book", "media": { "metadata": { "title": "Real Book" }, + "duration": 4800, "audioFiles": [ { "index": 1, @@ -380,6 +438,11 @@ final class AudiobookShelfDecodingTests: XCTestCase { let items = (decoded.libraryItems ?? []).compactMap { AudiobookShelfLibraryItem(apiItem: $0) } XCTAssertEqual(items.first?.fileExtension, "m4b", "nested metadata decodes; leading dot is stripped") + XCTAssertEqual( + items.first?.duration, + 4800, + "the virtual import refuses an item without a length, so the batch payload has to carry one" + ) } } @@ -1370,3 +1433,97 @@ final class ResumeOfferArbiterTests: XCTestCase { XCTAssertTrue(playerState.showResumePopup, "a weak presenter that went away is the same as none") } } + +// MARK: - Provider runtime mapping + +/// The runtime is the sole source of an external row's `duration` — nothing opens the file — +/// so where the mapper reads it from decides whether an item is importable at all. +final class JellyfinRuntimeMappingTests: XCTestCase { + private let twentyMinutesInTicks = 12_000_000_000 + + func testItemLevelRuntimeWins() { + XCTAssertEqual( + JellyfinLibraryItem.resolveRuntimeSeconds(itemTicks: twentyMinutesInTicks, mediaSourceTicks: 1), + 1200 + ) + } + + func testMediaSourceRuntimeCoversAnItemReportedWithoutOne() { + XCTAssertEqual( + JellyfinLibraryItem.resolveRuntimeSeconds(itemTicks: nil, mediaSourceTicks: twentyMinutesInTicks), + 1200, + "an item Jellyfin hasn't probed still has a runtime on its media source" + ) + } + + func testNoRuntimeAnywhereStaysUnmeasured() { + XCTAssertNil( + JellyfinLibraryItem.resolveRuntimeSeconds(itemTicks: nil, mediaSourceTicks: nil), + "nil, not 0 — the mapper collapses it to 0 for `durationSeconds`, which the import gate rejects" + ) + } +} + +// MARK: - Virtual import payload + +/// The chain this phase exists to protect: the hydrated duration has to survive all the way +/// onto the import payload, because `createExternalBook` copies it straight into +/// `book.duration` and nothing ever measures the file afterwards. +@MainActor +final class VirtualImportPayloadTests: XCTestCase { + func testAudiobookShelfPayloadCarriesTheHydratedDuration() { + let item = AudiobookShelfLibraryItem( + id: "abs-1", + title: "Dune", + kind: .audiobook, + libraryId: "lib", + duration: 60, + progress: 0.25, + currentTime: 1200 + ) + + let resource = item.asVirtualImportResource( + fileExtension: "m4b", + duration: 4800, + connectionService: AudiobookShelfConnectionService(), + artworkSize: CGSize(width: 300, height: 300) + ) + + XCTAssertEqual( + resource.libraryItem?.duration, + 4800, + "the HYDRATED length wins over the minified list item's own value" + ) + XCTAssertEqual(resource.libraryItem?.percentCompleted, 25, "ABS reports progress as a 0-1 fraction") + } + + func testJellyfinPayloadCarriesTheHydratedDuration() { + let item = JellyfinLibraryItem( + id: "jf-1", + name: "Dune", + kind: .audiobook, + durationSeconds: 60, + currentSeconds: 1200, + isFinished: false, + lastPlayedDate: nil, + blurHash: nil, + imageAspectRatio: nil, + details: nil + ) + + let resource = item.asVirtualImportResource( + fileExtension: "m4b", + duration: 4800, + detailsOverride: nil, + connectionService: JellyfinConnectionService(), + artworkSize: CGSize(width: 200, height: 200) + ) + + XCTAssertEqual(resource.libraryItem?.duration, 4800) + XCTAssertEqual( + resource.libraryItem?.percentCompleted, + 25, + "progress divides by the hydrated duration, which the pipeline guarantees is non-zero" + ) + } +} diff --git a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift index 5a0d8cb41..3e3dcc2ea 100644 --- a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift @@ -393,13 +393,16 @@ public struct AudiobookShelfCollectionsResponse: Codable { // MARK: - Virtual import extension AudiobookShelfLibraryItem { - /// Builds the virtual-import payload for this item. The file extension is REQUIRED: - /// list endpoints return minified items without audio-file metadata, so callers - /// hydrate the selection via `fetchItems(ids:)` (POST /api/items/batch/get) and SKIP - /// items that have none — the extension is never guessed. + /// Builds the virtual-import payload for this item. The file extension and the duration + /// are REQUIRED and both come from hydration (`VirtualImportPipeline`): list endpoints + /// return minified items without audio-file metadata, so callers hydrate the selection + /// via `fetchItems(ids:)` (POST /api/items/batch/get) and SKIP items that have neither + /// a real extension nor a measured length — the extension is never guessed, and the + /// duration is never defaulted to 0, which would import an unplayable row. @MainActor public func asVirtualImportResource( fileExtension: String, + duration: TimeInterval, connectionService: AudiobookShelfConnectionService, artworkSize: CGSize ) -> SimpleExternalResource { @@ -408,10 +411,10 @@ extension AudiobookShelfLibraryItem { details: authorName ?? "voiceover_unknown_author".localized, speed: 1, currentTime: Double(currentTime ?? 0), - duration: Double(duration ?? 0), - percentCompleted: (progress ?? 0) > 0 && (duration ?? 0) > 0 - ? Double(progress!) * 100 - : 0, + duration: duration, + /// ABS reports progress as a 0-1 fraction; the duration gate the old expression + /// carried is now the pipeline's precondition. + percentCompleted: max(progress ?? 0, 0) * 100, isFinished: isFinished ?? false, relativePath: "", remoteURL: nil, diff --git a/Shared/Jellyfin/JellyfinLibraryItem.swift b/Shared/Jellyfin/JellyfinLibraryItem.swift index 9c8134c65..80c9588e0 100644 --- a/Shared/Jellyfin/JellyfinLibraryItem.swift +++ b/Shared/Jellyfin/JellyfinLibraryItem.swift @@ -72,6 +72,17 @@ extension JellyfinLibraryItem { } extension JellyfinLibraryItem { + /// Jellyfin only reports a runtime at the item level once it has probed the file, but the + /// media source can carry one on its own — and a virtual import is REFUSED without a + /// runtime, so take it wherever it exists. + /// + /// Static and tick-typed rather than inline in the mapper so the resolution can be tested + /// without a `BaseItemDto`: `BookPlayerTests` declares no JellyfinAPI dependency, so a test + /// that names one of its types compiles but fails to LINK. + static func resolveRuntimeSeconds(itemTicks: Int?, mediaSourceTicks: Int?) -> TimeInterval? { + (itemTicks ?? mediaSourceTicks).map { TimeInterval($0) / 10000000.0 } + } + public init?(apiItem: BaseItemDto) { let kind: JellyfinLibraryItem.Kind? = switch apiItem.type { case .userView, .collectionFolder: .userView @@ -88,7 +99,10 @@ extension JellyfinLibraryItem { let artist = apiItem.albumArtist ?? apiItem.artists?.first let filePath = apiItem.mediaSources?.first?.path ?? apiItem.path - let runtimeInSeconds = (apiItem.runTimeTicks != nil) ? TimeInterval(apiItem.runTimeTicks!) / 10000000.0 : nil + let runtimeInSeconds = Self.resolveRuntimeSeconds( + itemTicks: apiItem.runTimeTicks, + mediaSourceTicks: apiItem.mediaSources?.first?.runTimeTicks + ) let fileExtension = apiItem.mediaSources?.first?.container?.components(separatedBy: ",").first ?? apiItem.mediaSources?.first?.container ?? (filePath as NSString?)?.pathExtension @@ -111,7 +125,7 @@ extension JellyfinLibraryItem { id: id, name: name, kind: kind, - durationSeconds: Int64((apiItem.runTimeTicks ?? 0) / 10000000), + durationSeconds: Int64(runtimeInSeconds ?? 0), currentSeconds: Int64((apiItem.userData?.playbackPositionTicks ?? 0) / 10000000), isFinished: apiItem.userData?.isPlayed, lastPlayedDate: apiItem.userData?.lastPlayedDate, @@ -143,13 +157,16 @@ extension JellyfinLibraryItem { // MARK: - Virtual import extension JellyfinLibraryItem { - /// Builds the virtual-import payload for this item. The file extension is REQUIRED: - /// callers hydrate it from the server (`fetchItems(ids:)` requests media sources) and - /// SKIP items that have none — an item without audio-file metadata has nothing to - /// stream, so the extension is never guessed. + /// Builds the virtual-import payload for this item. The file extension and the duration + /// are REQUIRED and both come from hydration (`VirtualImportPipeline`): callers hydrate + /// from the server (`fetchItems(ids:)` requests media sources) and SKIP items that have + /// neither. An item without audio-file metadata has nothing to stream, so the extension + /// is never guessed; one Jellyfin has not probed has no runtime, and importing it with a + /// 0 duration yields a row that can never play. @MainActor public func asVirtualImportResource( fileExtension: String, + duration: TimeInterval, detailsOverride: JellyfinAudiobookDetailsData?, connectionService: JellyfinConnectionService, artworkSize: CGSize @@ -160,9 +177,11 @@ extension JellyfinLibraryItem { details: resolvedDetails?.artist ?? "voiceover_unknown_author".localized, speed: 1, currentTime: Double(currentSeconds ?? 0), - duration: Double(durationSeconds ?? 0), - percentCompleted: (durationSeconds ?? 0) > 0 && (currentSeconds ?? 0) > 0 - ? Double(currentSeconds!) / Double(durationSeconds!) * 100 + duration: duration, + /// The duration half of the old guard is now the pipeline's precondition, so the + /// division is safe on any item that reaches here. + percentCompleted: (currentSeconds ?? 0) > 0 + ? Double(currentSeconds!) / duration * 100 : 0, isFinished: isFinished ?? false, relativePath: "", diff --git a/Shared/Jellyfin/Network/JellyfinConnectionService.swift b/Shared/Jellyfin/Network/JellyfinConnectionService.swift index 68d896680..a18ff4ecc 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionService.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionService.swift @@ -669,8 +669,12 @@ public class JellyfinConnectionService: BPLogger { let artist: String? = itemInfo.albumArtist let filePath: String? = itemInfo.mediaSources?.first?.path ?? itemInfo.path let fileSize: Int? = itemInfo.mediaSources?.first?.size - let runtimeInSeconds: TimeInterval? = - (itemInfo.runTimeTicks != nil) ? TimeInterval(itemInfo.runTimeTicks!) / 10000000.0 : nil + /// Same resolution as the list mapper, so the details screen and the import gate can't + /// disagree about whether this item has a runtime + let runtimeInSeconds = JellyfinLibraryItem.resolveRuntimeSeconds( + itemTicks: itemInfo.runTimeTicks, + mediaSourceTicks: itemInfo.mediaSources?.first?.runTimeTicks + ) return JellyfinAudiobookDetailsData( artist: artist, From d1d722dc2b364134999f984b7b006234bad67e35 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 16 Sep 2026 00:42:55 -0500 Subject: [PATCH 126/172] fix: give the two download failures their own message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `import_no_audio_files_alert` was shared by six call sites, and the previous commit reworded it around what the import gate now means: a length the server hasn't reported yet, remedied by waiting for a scan. That is accurate for the four virtual-import sites and wrong for the two Jellyfin download ones, which fire when `createItemDownloadUrl` throws `noClient`/`urlFromComponents` or the folder holds no audiobooks — none of which a server scan fixes. Those two now use `download_prepare_error`, which names no cause, and the import message keeps the specificity it earned. --- BookPlayer/Base.lproj/Localizable.strings | 1 + .../Jellyfin/Library Screen/JellyfinLibraryViewModel.swift | 4 ++-- BookPlayer/en.lproj/Localizable.strings | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 1da679de4..a4ac6937c 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -252,6 +252,7 @@ "details_title" = "Details"; "download_title" = "Download"; "download_incomplete_error" = "The download was incomplete. Please try again."; +"download_prepare_error" = "These items couldn't be prepared for download."; "cancel_download_title" = "Cancel download"; "remove_downloaded_file_title" = "Remove from device"; "download_from_url_title" = "Download from URL"; diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index 86b91115c..f8775a64f 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -472,7 +472,7 @@ final class JellyfinLibraryViewModel: IntegrationLibraryViewModelProtocol, Jelly // empty array means nothing could be built — say so instead of opening a // dialog that would download nothing. guard !requests.isEmpty else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + self.error = BookPlayerError.runtimeError("download_prepare_error".localized) return } self.pendingDownloadRequests = requests @@ -718,7 +718,7 @@ final class JellyfinPersonBooksViewModel: IntegrationLibraryViewModelProtocol, J .compactMap { try? connectionService.createItemDownloadRequest($0) } guard !requests.isEmpty else { - self.error = BookPlayerError.runtimeError("import_no_audio_files_alert".localized) + self.error = BookPlayerError.runtimeError("download_prepare_error".localized) return } diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index a0fab8496..7fbe657bb 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -251,6 +251,7 @@ "details_title" = "Details"; "download_title" = "Download"; "download_incomplete_error" = "The download was incomplete. Please try again."; +"download_prepare_error" = "These items couldn't be prepared for download."; "cancel_download_title" = "Cancel download"; "remove_downloaded_file_title" = "Remove from device"; "download_from_url_title" = "Download from URL"; From 8c0ebf21c168e2d801ffbd28c528ec6b9858fa6d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 16 Sep 2026 00:44:40 -0500 Subject: [PATCH 127/172] fix: populate the file extension the details screen imports with MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `fetchItemDetails` never passed `fileExtension:`, so the details path's `?? details?.fileExtension` fallback was dead: a single-item import whose batch hydration came back empty had no extension to fall back to and was refused. It now resolves the extension the same way the list mapper does, through a shared helper, so the two producers of `JellyfinAudiobookDetailsData` cannot disagree about whether an item is importable — the same hazard the runtime helper exists for. --- BookPlayerTests/ImportOperationTests.swift | 28 +++++++++++++++++++ Shared/Jellyfin/JellyfinLibraryItem.swift | 19 +++++++++++-- .../Network/JellyfinConnectionService.swift | 6 ++++ 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 49245c104..e90df1b02 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -1527,3 +1527,31 @@ final class VirtualImportPayloadTests: XCTestCase { ) } } + +/// The file extension decides importability alongside the runtime, and it has the same +/// two-producer hazard: the list mapper and `fetchItemDetails` must agree. +final class JellyfinFileExtensionMappingTests: XCTestCase { + func testFirstContainerCandidateWins() { + XCTAssertEqual( + JellyfinLibraryItem.resolveFileExtension(container: "m4b,mp4,mov", filePath: "/books/Dune.aax"), + "m4b", + "Jellyfin reports the container as a candidate list; the first is the real one" + ) + } + + func testPathExtensionCoversAMissingContainer() { + XCTAssertEqual( + JellyfinLibraryItem.resolveFileExtension(container: nil, filePath: "/books/Dune.m4b"), + "m4b" + ) + } + + func testNothingToDeriveFromStaysNil() { + XCTAssertNil(JellyfinLibraryItem.resolveFileExtension(container: nil, filePath: nil)) + XCTAssertEqual( + JellyfinLibraryItem.resolveFileExtension(container: nil, filePath: "/books/Dune"), + "", + "an extensionless path yields an empty string, which the import gate rejects" + ) + } +} diff --git a/Shared/Jellyfin/JellyfinLibraryItem.swift b/Shared/Jellyfin/JellyfinLibraryItem.swift index 80c9588e0..25d2dfded 100644 --- a/Shared/Jellyfin/JellyfinLibraryItem.swift +++ b/Shared/Jellyfin/JellyfinLibraryItem.swift @@ -83,6 +83,18 @@ extension JellyfinLibraryItem { (itemTicks ?? mediaSourceTicks).map { TimeInterval($0) / 10000000.0 } } + /// The playable file's extension: Jellyfin reports a media source's container, which can be + /// a comma-separated list of candidates, and falls back to the path's own extension. + /// + /// Shared with `JellyfinConnectionService.fetchItemDetails` for the same reason as the + /// runtime — the two producers of `JellyfinAudiobookDetailsData` must not disagree about + /// whether an item is importable. + static func resolveFileExtension(container: String?, filePath: String?) -> String? { + container?.components(separatedBy: ",").first + ?? container + ?? (filePath as NSString?)?.pathExtension + } + public init?(apiItem: BaseItemDto) { let kind: JellyfinLibraryItem.Kind? = switch apiItem.type { case .userView, .collectionFolder: .userView @@ -103,9 +115,10 @@ extension JellyfinLibraryItem { itemTicks: apiItem.runTimeTicks, mediaSourceTicks: apiItem.mediaSources?.first?.runTimeTicks ) - let fileExtension = apiItem.mediaSources?.first?.container?.components(separatedBy: ",").first - ?? apiItem.mediaSources?.first?.container - ?? (filePath as NSString?)?.pathExtension + let fileExtension = Self.resolveFileExtension( + container: apiItem.mediaSources?.first?.container, + filePath: filePath + ) var myDetails: JellyfinAudiobookDetailsData? = nil if artist != nil || filePath != nil || runtimeInSeconds != nil || fileExtension != nil { diff --git a/Shared/Jellyfin/Network/JellyfinConnectionService.swift b/Shared/Jellyfin/Network/JellyfinConnectionService.swift index a18ff4ecc..cb0139794 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionService.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionService.swift @@ -680,6 +680,12 @@ public class JellyfinConnectionService: BPLogger { artist: artist, filePath: filePath, fileSize: fileSize, + /// Was never populated here, which left the details screen's import with a dead + /// `?? details?.fileExtension` fallback whenever the batch hydration came back empty + fileExtension: JellyfinLibraryItem.resolveFileExtension( + container: itemInfo.mediaSources?.first?.container, + filePath: filePath + ), overview: itemInfo.overview, runtimeInSeconds: runtimeInSeconds, genres: itemInfo.genres, From a358715d8f7b604d699cc70b73f53a063a53c9cf Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 16 Sep 2026 00:52:49 -0500 Subject: [PATCH 128/172] refactor: drop the playback-time duration probe for external chapters The external branch of `loadPlayerItem` loaded `.duration` off the network stream whenever a media-server chapter reported a length of 0, then re-read chapters and rebuilt `currentItem` from the library. It could not do what it was for: `loadChaptersIfNeeded` writes chapter rows and never `book.duration`, so an unchaptered stream came back with the same 0 it started with and died at `loadChapterOperation`'s guard, silently, after paying for the round trip on every attempt. With the import gate in place a 0-duration external row can't be created, so the probe has nothing left to rescue. Deleting it also removes a live bug: for a bound book the block rebuilt `currentItem` from the NESTED chapter's relativePath, replacing the whole bound item with a single-file one mid-load and dropping its sibling chapters. Its sibling `loadRemoteURLAsset` guards that with `isBoundBook == false`; this one never did. Around it: the misattached "cancelled-before-rebind" comments move onto the two subscriptions they describe, the duplicated alert-action blocks collapse into `failureAlertActions(for:)`, `showErrorAlert` takes its actions unconditionally now that no caller omits them, the retry comment says what the retry actually recovers, and the missing-file/sync-inactive case goes back to develop's precise-timing value. A test pins the branch order the external path depends on, and the watch copy loses the trailing whitespace this branch gave it. --- BookPlayer/Player/PlayerManager.swift | 170 ++++++++---------- BookPlayerTests/PlayerManagerTests.swift | 30 +++- .../LocalPlayback/Player/PlayerManager.swift | 5 +- 3 files changed, 108 insertions(+), 97 deletions(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index e9cec4145..0e9d37f51 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -15,7 +15,7 @@ import Sentry // swiftlint:disable:next file_length -final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BPLogger { +final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { private let libraryService: LibraryServiceProtocol private let playbackService: PlaybackServiceProtocol /// Narrow read of the streaming entitlement (pro or lite), not the whole account @@ -32,15 +32,15 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP private var fadeTimer: Timer? private var timeControlPassthroughPublisher = CurrentValueSubject(.paused) + /// Named + cancelled-before-rebind: bound on every player recreation (init, .failed, + /// mediaServicesWereReset) — a disposeBag entry would accumulate one sink per recreation. private var timeControlSubscription: AnyCancellable? + /// Named + cancelled-before-rebind: bound on EVERY chapter/item load — a disposeBag entry + /// leaks one KVO publisher (which retains its AVPlayerItem) per loaded chapter. private var playableChapterSubscription: AnyCancellable? private var isPlayingSubscription: AnyCancellable? /// Tracks the brief muted play used to claim Now Playing on CarPlay connect, so we can pause once it starts private var nowPlayingClaimSubscription: AnyCancellable? - /// Named + cancelled-before-rebind: bound on every player recreation (init, .failed, - /// mediaServicesWereReset) — a disposeBag entry would accumulate one sink per recreation. - /// Named + cancelled-before-rebind: bound on EVERY chapter/item load — a disposeBag entry - /// leaks one KVO publisher (which retains its AVPlayerItem) per loaded chapter. private var periodicTimeObserver: Any? private var disposeBag = Set() /// Flag determining if it should resume playback after finishing up loading an item @@ -75,7 +75,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP private var loadChapterTask: Task<(), Never>? @Published var currentItem: PlayableItem? @Published var currentSpeed: Float = 1.0 - + var nowPlayingInfo = [String: Any]() private let queue = OperationQueue() @@ -181,7 +181,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP bindTimeControlPassthroughPublisher() } - + func currentItemPublisher() -> AnyPublisher { return self.$currentItem.eraseToAnyPublisher() } @@ -261,56 +261,27 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP @MainActor func loadPlayerItem(for chapter: PlayableChapter, forceRefreshURL: Bool) async throws -> PlayableChapter { - let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(chapter.relativePath) + let isMissingLocally = !FileManager.default.fileExists(atPath: fileURL.path) let asset: AVURLAsset - if !FileManager.default.fileExists(atPath: fileURL.path) - { - if let externalUrl = chapter.externalUrl { - // Media-server chapters ALWAYS stream from their external URL — a forced refresh - // must not reroute them to the cloud/S3 presign path (their fresh URL comes from - // the chapter rebuild during reload, resolved against the local connection). - asset = AVURLAsset(url: externalUrl, options: [ - AVURLAssetPreferPreciseDurationAndTimingKey: false, - "AVURLAssetHTTPHeaderFieldsKey": chapter.externalHeaders - ]) - - // Only load metadata if duration is unknown, to avoid network bottleneck - if chapter.duration == 0 { - do { - _ = try await asset.load(.duration, .isPlayable) - } catch { - // Deliberately non-fatal: a dead stream fails LOUDLY at the player-item - // level right after (the .failed -> session-expired alert path). The only - // silent case is a transient metadata-only failure — playback proceeds with - // duration 0 (degraded scrubber/progress), so log it for diagnosability. - Self.logger.warning("External stream metadata load failed; continuing with duration 0: \(error)") - } - - await libraryService.loadChaptersIfNeeded(relativePath: chapter.relativePath, asset: asset) - // The awaits above can outlive this load (user tapped another book) — applying the - // refreshed item afterwards would clobber the newer load's state. - // The repo's own cancellation error: Swift's CancellationError would fall through - // to the GENERIC catch in loadChapterTask and pop a spurious alert on the very - // normal tap-another-book-mid-load path. - if Task.isCancelled { throw BookPlayerError.cancelledTask } - if let libraryItem = libraryService.getSimpleItem(with: chapter.relativePath), - let updatedItem = try? playbackService.getPlayableItem(from: libraryItem) { - currentItem = updatedItem - // Invariant: EVERY currentItem reassignment rebinds the chapter subscription — - // otherwise .chapterChange keeps firing off the orphaned item and the - // end-of-chapter sleep timer + Now Playing chapter title silently break. - bindPlayableChapterSubscription(to: updatedItem, dropInitialReplay: true) - } - } - } else if syncService.isActive { - asset = try await loadRemoteURLAsset(for: chapter, forceRefresh: forceRefreshURL) - } else { - asset = AVURLAsset(url: fileURL, options: [AVURLAssetPreferPreciseDurationAndTimingKey: false]) - } + if isMissingLocally, let externalUrl = chapter.externalUrl { + // Media-server chapters ALWAYS stream from their external URL — a forced refresh + // must not reroute them to the cloud/S3 presign path. No metadata is loaded here: + // the length comes from the server at import time (`VirtualImportPipeline` refuses + // an item without one), so there is nothing a round trip to the stream could add. + // `AVURLAssetHTTPHeaderFieldsKey` is undocumented, but it is the only way to attach + // the server's auth header short of an AVAssetResourceLoaderDelegate. + asset = AVURLAsset(url: externalUrl, options: [ + AVURLAssetPreferPreciseDurationAndTimingKey: false, + "AVURLAssetHTTPHeaderFieldsKey": chapter.externalHeaders + ]) + } else if isMissingLocally, syncService.isActive { + asset = try await loadRemoteURLAsset(for: chapter, forceRefresh: forceRefreshURL) } else { + /// The file is on disk — or it is missing with no remote source, and AVFoundation + /// surfaces that as a player-item failure. asset = AVURLAsset(url: fileURL, options: [AVURLAssetPreferPreciseDurationAndTimingKey: true]) } @@ -319,18 +290,18 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP self.playerItem?.removeObserver(self, forKeyPath: "status") self.hasObserverRegistered = false } - + self.playerItem = AVPlayerItem(asset: asset) self.playerItem?.audioTimePitchAlgorithm = .timeDomain - + if chapter.externalUrl != nil { // Buffer a reasonable amount for streaming (20 seconds) self.playerItem?.preferredForwardBufferDuration = 20 } - + return self.currentItem?.currentChapter ?? chapter } - + func load(_ item: PlayableItem, autoplay: Bool) { load(item, autoplay: autoplay, forceRefreshURL: false) } @@ -425,17 +396,33 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP /// Whether a failed load should offer the Media Servers shortcut: the tier can stream at /// all, and going to Media Servers could actually fix this chapter's failure. Not private - /// so the entitlement wiring itself is testable, and shared by both alert sites so the - /// rule can't drift between them. + /// so the entitlement wiring itself is testable. func offersMediaServers(for chapter: PlayableChapter) -> Bool { hasStreamingEnabled() && chapter.needsMediaServer() } + /// The actions for a playback-failure alert: OK, plus the Media Servers shortcut when it + /// could actually fix this chapter. Shared by both failure sites so the offer can't drift + /// between the metadata path and the player-item path. + private func failureAlertActions(for chapter: PlayableChapter?) -> [BPActionItem] { + var actions = [BPActionItem.okAction] + + if let chapter, offersMediaServers(for: chapter) { + actions.append( + BPActionItem(title: "media_servers_title".localized) { + NotificationCenter.default.post(name: .showMediaServers, object: nil) + } + ) + } + + return actions + } + func loadChapterMetadata(_ chapter: PlayableChapter, autoplay: Bool? = nil, forceRefreshURL: Bool = false) { if let autoplay { playbackQueued = autoplay } - + loadChapterTask = Task { @MainActor [unowned self] in do { let updatedChapter = try await self.loadPlayerItem(for: chapter, forceRefreshURL: forceRefreshURL) @@ -443,20 +430,14 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP } catch BookPlayerError.cancelledTask { /// Do nothing, as it was cancelled to load another item } catch { - var actions = [BPActionItem.okAction] - - if offersMediaServers(for: chapter) { - actions.append( - BPActionItem(title: "media_servers_title".localized) { - NotificationCenter.default.post(name: .showMediaServers, object: nil) - } - ) - } - self.playbackQueued = nil self.isFetchingRemoteURL = nil self.observeStatus = false - self.showErrorAlert(title: "\("error_title".localized) Metadata", error.localizedDescription, actions: actions) + self.showErrorAlert( + title: "\("error_title".localized) Metadata", + error.localizedDescription, + actions: failureAlertActions(for: chapter) + ) return } } @@ -465,6 +446,11 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP func loadChapterOperation(_ chapter: PlayableChapter) { self.queue.addOperation { // try loading the player + // `duration > 0` is load-bearing for PLAYBACK, not just hygiene: failing it posts + // `.bookReady loaded:false`, which only CarPlay and the watch observe, so the user + // sees the spinner clear and nothing happen. Media-server rows can't land here with + // a 0 duration — `HydratedItem` refuses to import one — and that is what lets the + // external branch of `loadPlayerItem` skip loading metadata off the stream. guard let playerItem = self.playerItem, chapter.duration > 0 @@ -483,7 +469,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject, BP // Update UI on main thread DispatchQueue.main.async { self.isFetchingRemoteURL = nil - + self.audioPlayer.replaceCurrentItem(with: playerItem) self.currentSpeed = self.speedService.getSpeed(relativePath: chapter.relativePath) @@ -1235,21 +1221,19 @@ extension PlayerManager { } else if let currentItem, currentItem.currentChapter.externalUrl != nil, canFetchExternalURL { + /// One retry for a transient stream failure. The reload replays the SAME item, so + /// the URL and auth headers are identical — this recovers a blip, never a rotated + /// token. Re-authenticating and tapping the SAME book does not recover either: + /// `currentItem` survives the failure, so `PlayerLoaderService.loadPlayer` + /// short-circuits on the matching uuid straight to `play()`, and the item is never + /// rebuilt from the saved connection. That needs another book, or a relaunch. loadAndRefreshURL(item: currentItem) canFetchExternalURL = false } else { /// Avoid showing any alert if playback is not queued, this could be from the initial app launch /// where we preload the player with the last played item if playbackQueued == true { - var actions = [BPActionItem.okAction] - - if let chapter = currentItem?.currentChapter, offersMediaServers(for: chapter) { - actions.append( - BPActionItem(title: "media_servers_title".localized) { - NotificationCenter.default.post(name: .showMediaServers, object: nil) - } - ) - } + let actions = failureAlertActions(for: currentItem?.currentChapter) if let nsError = item.error as? NSError { let errorDescription = """ @@ -1604,22 +1588,18 @@ extension PlayerManager { } extension PlayerManager { - private func showErrorAlert(title: String, _ message: String?, actions: [BPActionItem]? = nil) { + private func showErrorAlert(title: String, _ message: String?, actions: [BPActionItem]) { DispatchQueue.main.async { - let viewController = WindowHelper.activeWindow?.rootViewController? - .getTopVisibleViewController() - - if let actions = actions { - let content = BPAlertContent( - title: title, - message: message, - style: .alert, - actionItems: actions - ) - viewController?.showAlert(content) - } else { - viewController?.showAlert(title, message: message) - } + let content = BPAlertContent( + title: title, + message: message, + style: .alert, + actionItems: actions + ) + + WindowHelper.activeWindow?.rootViewController? + .getTopVisibleViewController()? + .showAlert(content) } } } diff --git a/BookPlayerTests/PlayerManagerTests.swift b/BookPlayerTests/PlayerManagerTests.swift index 6d310c662..f789174fe 100644 --- a/BookPlayerTests/PlayerManagerTests.swift +++ b/BookPlayerTests/PlayerManagerTests.swift @@ -16,6 +16,7 @@ import XCTest class PlayerManagerTests: XCTestCase { var playbackServiceMock: PlaybackServiceProtocolMock! + var syncServiceMock: SyncServiceProtocolMock! var sut: PlayerManager! override func setUp() { @@ -29,10 +30,11 @@ class PlayerManagerTests: XCTestCase { self.playbackServiceMock.updatePlaybackTimeItemTimeClosure = { item, time in item.currentTime = time } + self.syncServiceMock = SyncServiceProtocolMock() self.sut = PlayerManager( libraryService: LibraryServiceProtocolMock(), playbackService: playbackServiceMock, - syncService: SyncServiceProtocolMock(), + syncService: syncServiceMock, speedService: SpeedServiceProtocolMock(), shakeMotionService: ShakeMotionServiceProtocolMock(), widgetReloadService: WidgetReloadService(), @@ -156,6 +158,32 @@ class PlayerManagerTests: XCTestCase { ) } + /// Branch order in `loadPlayerItem`: a media-server chapter streams from its own URL even + /// when the caller forces a refresh. Inverting the external and cloud branches would send + /// a Jellyfin/ABS book to the S3 presign endpoint, which has nothing to hand back for it. + @MainActor + func testForcedRefreshKeepsAnExternalChapterOnItsStreamURL() async throws { + syncServiceMock.isActive = true + let chapter = PlayableChapter( + title: "test chapter", + author: "test author", + start: 0, + duration: 100, + relativePath: "no-such-file.m4b", + remoteURL: URL(string: "https://s3.example.com/presigned"), + externalURL: URL(string: "https://jelly.example.com/stream"), + index: 1 + ) + + _ = try await sut.loadPlayerItem(for: chapter, forceRefreshURL: true) + + XCTAssertEqual( + syncServiceMock.getRemoteFileURLsOfForTypeCallsCount, + 0, + "the cloud presign path must never be consulted for a chapter that has a stream URL" + ) + } + func testUpdatingEmptyNowPlayingBookTime() { self.sut.setNowPlayingBookTime() diff --git a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift index c1f7dd7ef..124f1582c 100644 --- a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift +++ b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift @@ -62,7 +62,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { @Published var currentSpeed: Float = 1.0 @Published private(set) var currentPlaybackTime: TimeInterval = 0 @Published var error: Error? - + var nowPlayingInfo = [String: Any]() private let queue = OperationQueue() @@ -193,6 +193,9 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { // TODO: Check if there's a way to reduce the time this operation takes // it's currently a bottleneck when streaming playback + // Deliberately one key short of the phone's list: `.hasProtectedContent` is + // unavailable in watchOS. The old string-based `loadValues(forKeys:)` accepted it + // only because those keys were untyped. _ = try? await asset.load( .duration, .isPlayable, From 5b81e5d3ac3e51c2ebe049890c49ba11ad8f0cb9 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 16 Sep 2026 02:24:00 -0500 Subject: [PATCH 129/172] feat: media-server chapters from the provider, at import and on the pull MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A streamed item's file is never opened, so nothing could ever parse its chapters and every media-server book played as a single one — even though both providers hand the list over in payloads the app already fetches and then discarded. AudiobookShelf is the starker case: its chapters can be a server-side edit that isn't in the file at all, so no amount of parsing would have found them. Chapters now ride those same responses, through two entry points and one storage rule: - The virtual import carries them on `HydratedItem` to `createExternalBook`, so the FIRST play has chapter navigation. - The per-level progress pull carries them on a new `ExternalItemSnapshot` and the ingest writes them in the same loop and save that applies the position. That covers a second device, which receives the row through BookPlayer's own sync — chapters are not in that payload — and never hydrates from the provider. - `storeChaptersIfEmpty` is the single rule: only ever ADD. A list the parser produced for a downloaded copy is never replaced, and an empty answer never clears one. The mapping differs per provider because the inputs do: AudiobookShelf reports a start AND an end, Jellyfin only a start, so each Jellyfin chapter runs to the next one and the last is bounded by the item runtime — without a runtime the list is dropped rather than guessing an end. Both queries ask for chapters explicitly; the Jellyfin item query needs `ItemFields.chapters` or the server returns none. --- .../AudiobookShelfLibraryViewModel.swift | 7 +- ...iobookShelfAudiobookDetailsViewModel.swift | 4 +- .../Generated/AutoMockable.generated.swift | 37 +++-- .../JellyfinAudiobookDetailsViewModel.swift | 4 +- .../JellyfinLibraryViewModel.swift | 4 +- .../IntegrationLibraryViewModelProtocol.swift | 6 +- BookPlayerTests/ImportOperationTests.swift | 143 +++++++++++++++++- .../Services/LibraryServiceTests.swift | 80 +++++++++- .../AudiobookShelfLibraryItem.swift | 49 +++++- .../SimpleExternalResource.swift | 8 +- Shared/Jellyfin/JellyfinLibraryItem.swift | 49 +++++- .../Network/JellyfinConnectionService.swift | 11 +- Shared/Services/AudioMetadataService.swift | 2 +- .../ExternalProgressProviding.swift | 49 ++++-- .../ExternalProgressService.swift | 6 +- Shared/Services/LibraryService.swift | 61 ++++++-- 16 files changed, 451 insertions(+), 69 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift index 00647da02..6bc278b19 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryViewModel.swift @@ -268,13 +268,18 @@ final class AudiobookShelfLibraryViewModel: IntegrationLibraryViewModelProtocol, // audioFiles); one round-trip for the whole selection let hydrated = try await self.connectionService.fetchItems(ids: ids) return hydrated.reduce(into: [:]) { - $0[$1.id] = HydratedItem(fileExtension: $1.fileExtension, duration: $1.duration) + $0[$1.id] = HydratedItem( + fileExtension: $1.fileExtension, + duration: $1.duration, + chapters: $1.chapters + ) } }, buildResource: { item, hydrated in item.asVirtualImportResource( fileExtension: hydrated.fileExtension, duration: hydrated.duration, + chapters: hydrated.chapters, connectionService: self.connectionService, artworkSize: CGSize(width: 300, height: 300) ) diff --git a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift index c8a23aad6..77cfc2d36 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/Details/AudiobookShelfAudiobookDetailsViewModel.swift @@ -127,7 +127,8 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc var hydratedByID: [String: HydratedItem] = [:] hydratedByID[item.id] = HydratedItem( fileExtension: hydrated.first?.fileExtension ?? item.fileExtension, - duration: hydrated.first?.duration ?? item.duration + duration: hydrated.first?.duration ?? item.duration, + chapters: hydrated.first?.chapters ?? [] ) return hydratedByID }, @@ -135,6 +136,7 @@ class AudiobookShelfAudiobookDetailsViewModel: IntegrationDetailsViewModelProtoc item.asVirtualImportResource( fileExtension: hydrated.fileExtension, duration: hydrated.duration, + chapters: hydrated.chapters, connectionService: self.connectionService, artworkSize: CGSize(width: 300, height: 300) ) diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index 1bc4e3996..39a3a63b0 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -513,6 +513,21 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { loadChaptersIfNeededRelativePathAssetReceivedInvocations.append((relativePath: relativePath, asset: asset)) await loadChaptersIfNeededRelativePathAssetClosure?(relativePath, asset) } + //MARK: - storeChaptersIfNeeded + + var storeChaptersIfNeededRelativePathChaptersCallsCount = 0 + var storeChaptersIfNeededRelativePathChaptersCalled: Bool { + return storeChaptersIfNeededRelativePathChaptersCallsCount > 0 + } + var storeChaptersIfNeededRelativePathChaptersReceivedArguments: (relativePath: String, chapters: [ChapterMetadata])? + var storeChaptersIfNeededRelativePathChaptersReceivedInvocations: [(relativePath: String, chapters: [ChapterMetadata])] = [] + var storeChaptersIfNeededRelativePathChaptersClosure: ((String, [ChapterMetadata]) async -> Void)? + func storeChaptersIfNeeded(relativePath: String, chapters: [ChapterMetadata]) async { + storeChaptersIfNeededRelativePathChaptersCallsCount += 1 + storeChaptersIfNeededRelativePathChaptersReceivedArguments = (relativePath: relativePath, chapters: chapters) + storeChaptersIfNeededRelativePathChaptersReceivedInvocations.append((relativePath: relativePath, chapters: chapters)) + await storeChaptersIfNeededRelativePathChaptersClosure?(relativePath, chapters) + } //MARK: - reloadChapters var reloadChaptersRelativePathCallsCount = 0 @@ -1160,19 +1175,19 @@ class LibraryServiceProtocolMock: LibraryServiceProtocol { } //MARK: - handleSyncFromExternalResource - var handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount = 0 - var handleSyncFromExternalResourceProviderNameProgressByProviderIdCalled: Bool { - return handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount > 0 + var handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdCallsCount = 0 + var handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdCalled: Bool { + return handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdCallsCount > 0 } - var handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedArguments: (providerName: String, progressByProviderId: [String: ExternalPlaybackProgress])? - var handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedInvocations: [(providerName: String, progressByProviderId: [String: ExternalPlaybackProgress])] = [] - var handleSyncFromExternalResourceProviderNameProgressByProviderIdClosure: ((String, [String: ExternalPlaybackProgress]) -> Void)? + var handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdReceivedArguments: (providerName: String, snapshotsByProviderId: [String: ExternalItemSnapshot])? + var handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdReceivedInvocations: [(providerName: String, snapshotsByProviderId: [String: ExternalItemSnapshot])] = [] + var handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdClosure: ((String, [String: ExternalItemSnapshot]) -> Void)? @MainActor - func handleSyncFromExternalResource(providerName: String, progressByProviderId: [String: ExternalPlaybackProgress]) { - handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount += 1 - handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedArguments = (providerName: providerName, progressByProviderId: progressByProviderId) - handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedInvocations.append((providerName: providerName, progressByProviderId: progressByProviderId)) - handleSyncFromExternalResourceProviderNameProgressByProviderIdClosure?(providerName, progressByProviderId) + func handleSyncFromExternalResource(providerName: String, snapshotsByProviderId: [String: ExternalItemSnapshot]) { + handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdCallsCount += 1 + handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdReceivedArguments = (providerName: providerName, snapshotsByProviderId: snapshotsByProviderId) + handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdReceivedInvocations.append((providerName: providerName, snapshotsByProviderId: snapshotsByProviderId)) + handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdClosure?(providerName, snapshotsByProviderId) } } class PlaybackServiceProtocolMock: PlaybackServiceProtocol { diff --git a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift index 85fdf02bb..b6925a6f3 100644 --- a/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/Details/JellyfinAudiobookDetailsViewModel.swift @@ -138,7 +138,8 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { // `details.runtimeInSeconds`, never `durationSeconds`: the mapper collapses an // unmeasured runtime to 0 rather than nil, so reading it here would satisfy the // `??` with a zero and skip the fallback in exactly the case it exists for - duration: hydrated.first?.details?.runtimeInSeconds ?? self.details?.runtimeInSeconds + duration: hydrated.first?.details?.runtimeInSeconds ?? self.details?.runtimeInSeconds, + chapters: hydrated.first?.chapters ?? [] ) return hydratedByID }, @@ -146,6 +147,7 @@ class JellyfinAudiobookDetailsViewModel: IntegrationDetailsViewModelProtocol { item.asVirtualImportResource( fileExtension: hydrated.fileExtension, duration: hydrated.duration, + chapters: hydrated.chapters, detailsOverride: self.details, connectionService: self.connectionService, artworkSize: CGSize(width: 200, height: 200) diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift index f8775a64f..23d0ee278 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryViewModel.swift @@ -94,7 +94,8 @@ extension JellyfinFolderImporting { fileExtension: $1.details?.fileExtension, // `details.runtimeInSeconds` keeps "unmeasured" as nil and avoids the whole-second // truncation `durationSeconds` applies - duration: $1.details?.runtimeInSeconds + duration: $1.details?.runtimeInSeconds, + chapters: $1.chapters ) } }, @@ -102,6 +103,7 @@ extension JellyfinFolderImporting { item.asVirtualImportResource( fileExtension: hydrated.fileExtension, duration: hydrated.duration, + chapters: hydrated.chapters, detailsOverride: nil, connectionService: self.connectionService, artworkSize: CGSize(width: 200, height: 200) diff --git a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift index 19410f2bd..1e03ae80b 100644 --- a/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift +++ b/BookPlayer/MediaServerIntegration/IntegrationLibraryViewModelProtocol.swift @@ -112,10 +112,13 @@ extension IntegrationLibraryViewModelProtocol { struct HydratedItem { let fileExtension: String let duration: TimeInterval + /// Whatever chapter list the same payload carried. Optional to an import — an item with + /// none is still perfectly playable as a single chapter. + let chapters: [ChapterMetadata] /// Both pieces or nothing: a nil result leaves the id out of the hydration map, which /// is the pipeline's existing skip contract. - init?(fileExtension: String?, duration: TimeInterval?) { + init?(fileExtension: String?, duration: TimeInterval?, chapters: [ChapterMetadata] = []) { guard let fileExtension, !fileExtension.isEmpty, @@ -125,6 +128,7 @@ struct HydratedItem { self.fileExtension = fileExtension self.duration = duration + self.chapters = chapters } } diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index e90df1b02..07dc973d7 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -416,6 +416,10 @@ final class AudiobookShelfDecodingTests: XCTestCase { "media": { "metadata": { "title": "Real Book" }, "duration": 4800, + "chapters": [ + { "start": 0, "end": 600, "title": "Chapter One" }, + { "start": 600, "end": 4800, "title": "Chapter Two" } + ], "audioFiles": [ { "index": 1, @@ -443,6 +447,12 @@ final class AudiobookShelfDecodingTests: XCTestCase { 4800, "the virtual import refuses an item without a length, so the batch payload has to carry one" ) + XCTAssertEqual( + items.first?.chapters.map(\.title), + ["Chapter One", "Chapter Two"], + "batch/get returns EXPANDED media, so chapters arrive on the same response as audioFiles" + ) + XCTAssertEqual(items.first?.chapters.map(\.duration), [600, 4200]) } } @@ -778,6 +788,9 @@ final class ExternalProgressServiceTests: XCTestCase { private let lock = NSLock() private var _requested: [String] = [] private let answer: @Sendable (SimpleExternalResource) async throws -> ExternalPlaybackProgress? + /// Attached to every answered snapshot, so a test can script the chapter half without + /// restating the position half. + private let chapters: [ChapterMetadata] var requested: [String] { lock.lock() @@ -785,7 +798,11 @@ final class ExternalProgressServiceTests: XCTestCase { return _requested } - init(answer: @escaping @Sendable (SimpleExternalResource) async throws -> ExternalPlaybackProgress?) { + init( + chapters: [ChapterMetadata] = [], + answer: @escaping @Sendable (SimpleExternalResource) async throws -> ExternalPlaybackProgress? + ) { + self.chapters = chapters self.answer = answer } @@ -798,11 +815,11 @@ final class ExternalProgressServiceTests: XCTestCase { func progress( forBatch resources: [SimpleExternalResource] - ) async throws -> [String: ExternalPlaybackProgress] { - var out: [String: ExternalPlaybackProgress] = [:] + ) async throws -> [String: ExternalItemSnapshot] { + var out: [String: ExternalItemSnapshot] = [:] for resource in resources { if let progress = try await progress(for: resource) { - out[resource.providerId] = progress + out[resource.providerId] = ExternalItemSnapshot(progress: progress, chapters: chapters) } } return out @@ -1100,7 +1117,7 @@ final class ExternalProgressServiceTests: XCTestCase { XCTAssertEqual(jellyfin.requested, ["jf-1"]) XCTAssertEqual(abs.requested, ["abs-1"], "AudiobookShelf items refresh too") - let ingested = libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdReceivedInvocations + let ingested = libraryService.handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdReceivedInvocations XCTAssertEqual( Set(ingested.map(\.providerName)), ["jellyfin", "audiobookshelf"], @@ -1108,6 +1125,30 @@ final class ExternalProgressServiceTests: XCTestCase { ) } + /// The second-device path: a row arrives through BookPlayer's own sync, which carries no + /// chapters, and the level refresh is the only thing that can supply them. + func testRefreshItemsForwardsTheProvidersChaptersToTheIngest() async { + let chapters = [ + ChapterMetadata(title: "One", start: 0, duration: 600, index: 1), + ChapterMetadata(title: "Two", start: 600, duration: 900, index: 2), + ] + let jellyfin = ProviderStub(chapters: chapters) { _ in + ExternalPlaybackProgress(currentTime: 120, lastPlayedDate: Date(timeIntervalSince1970: 500)) + } + let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin]) + // The LEVEL path reads this one; `resources:` above feeds the on-play path. + libraryService.findMediaServerResourcesAtReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] + + await sut.refreshItems(at: nil) + + let ingested = libraryService.handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdReceivedInvocations + XCTAssertEqual( + ingested.first?.snapshotsByProviderId["jf-1"]?.chapters, + chapters, + "chapters ride the same snapshot as the position, unchanged" + ) + } + func testRefreshItemsAtLevelDoesNothingWithoutMediaServerResources() async { let jellyfin = ProviderStub { _ in XCTFail("must not be asked"); return nil } let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin]) @@ -1117,7 +1158,7 @@ final class ExternalProgressServiceTests: XCTestCase { XCTAssertEqual(libraryService.findMediaServerResourcesAtReceivedInvocations, [nil], "root is asked as nil") XCTAssertTrue(jellyfin.requested.isEmpty) - XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount, 0) + XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdCallsCount, 0) } // MARK: the entitlement gate (pull only — the push runs on every tier) @@ -1147,7 +1188,7 @@ final class ExternalProgressServiceTests: XCTestCase { XCTAssertEqual(libraryService.findMediaServerResourcesAtCallsCount, 0) XCTAssertTrue(jellyfin.requested.isEmpty) - XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameProgressByProviderIdCallsCount, 0) + XCTAssertEqual(libraryService.handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdCallsCount, 0) } /// The entitlement is read live, so a downgrade takes effect on the NEXT pull; the one @@ -1508,7 +1549,8 @@ final class VirtualImportPayloadTests: XCTestCase { lastPlayedDate: nil, blurHash: nil, imageAspectRatio: nil, - details: nil + details: nil, + chapters: [] ) let resource = item.asVirtualImportResource( @@ -1555,3 +1597,88 @@ final class JellyfinFileExtensionMappingTests: XCTestCase { ) } } + +// MARK: - Media-server chapter mapping + +/// A streamed item's chapters can only come from its server: nothing opens the file, and on +/// AudiobookShelf the list may be a server-side edit that isn't in the file at all. +final class MediaServerChapterMappingTests: XCTestCase { + // MARK: AudiobookShelf — start AND end, so durations are direct + + func testAudiobookShelfChaptersMapWithDirectDurations() { + let chapters = AudiobookShelfLibraryItem.chapterMetadata(from: [ + .init(start: 0, end: 600, title: "One"), + .init(start: 600, end: 1500, title: "Two"), + ]) + + XCTAssertEqual(chapters.map(\.title), ["One", "Two"]) + XCTAssertEqual(chapters.map(\.start), [0, 600]) + XCTAssertEqual(chapters.map(\.duration), [600, 900]) + XCTAssertEqual(chapters.map(\.index), [1, 2], "index is 1-based, matching the playable list") + } + + func testAudiobookShelfOutOfOrderChaptersAreSortedAndZeroLengthOnesDropped() { + let chapters = AudiobookShelfLibraryItem.chapterMetadata(from: [ + .init(start: 600, end: 1500, title: "Two"), + .init(start: 1500, end: 1500, title: "Empty"), + .init(start: 0, end: 600, title: "One"), + ]) + + XCTAssertEqual( + chapters.map(\.title), + ["One", "Two"], + "a zero-length entry would be filtered by getPlayableChapters anyway — don't store it" + ) + } + + func testAudiobookShelfNoChaptersIsEmptyNotASynthesizedOne() { + XCTAssertTrue(AudiobookShelfLibraryItem.chapterMetadata(from: nil).isEmpty) + XCTAssertTrue(AudiobookShelfLibraryItem.chapterMetadata(from: []).isEmpty) + } + + // MARK: Jellyfin — starts only, so each duration is the gap to the next + + func testJellyfinChapterDurationsDeriveFromTheNextStart() { + let chapters = JellyfinLibraryItem.chapterMetadata( + from: [(name: "One", startTicks: 0), (name: "Two", startTicks: 6_000_000_000)], + runtimeSeconds: 1500 + ) + + XCTAssertEqual(chapters.map(\.title), ["One", "Two"]) + XCTAssertEqual(chapters.map(\.start), [0, 600]) + XCTAssertEqual( + chapters.map(\.duration), + [600, 900], + "the last chapter runs to the item runtime, which is the only thing that bounds it" + ) + } + + func testJellyfinChaptersNeedARuntimeToBeBounded() { + XCTAssertTrue( + JellyfinLibraryItem.chapterMetadata( + from: [(name: "One", startTicks: 0)], + runtimeSeconds: nil + ).isEmpty, + "without a runtime the final chapter has no end; storing a guess is worse than none" + ) + } + + func testJellyfinChaptersStartingPastTheRuntimeAreDropped() { + let chapters = JellyfinLibraryItem.chapterMetadata( + from: [(name: "One", startTicks: 0), (name: "Bogus", startTicks: 99_000_000_000)], + runtimeSeconds: 1500 + ) + + XCTAssertEqual(chapters.map(\.title), ["One"]) + XCTAssertEqual(chapters.map(\.duration), [1500]) + } + + func testJellyfinChaptersWithoutAStartAreSkipped() { + let chapters = JellyfinLibraryItem.chapterMetadata( + from: [(name: "Unanchored", startTicks: nil), (name: "One", startTicks: 0)], + runtimeSeconds: 600 + ) + + XCTAssertEqual(chapters.map(\.title), ["One"]) + } +} diff --git a/BookPlayerTests/Services/LibraryServiceTests.swift b/BookPlayerTests/Services/LibraryServiceTests.swift index 401b80589..9168207cf 100644 --- a/BookPlayerTests/Services/LibraryServiceTests.swift +++ b/BookPlayerTests/Services/LibraryServiceTests.swift @@ -2207,6 +2207,72 @@ class LibraryServiceExternalResourceTests: XCTestCase { XCTAssertEqual(abs?.libraryItemUuid, book2.uuid) } + // MARK: - Media-server chapters + + private func chapters(_ spans: [(TimeInterval, TimeInterval)]) -> [ChapterMetadata] { + spans.enumerated().map { index, span in + ChapterMetadata(title: "Chapter \(index + 1)", start: span.0, duration: span.1, index: index + 1) + } + } + + func testStoreChaptersIfNeededFillsABookWithNone() async { + let book = makeBook("external-chapters-1", duration: 1500) + + await sut.storeChaptersIfNeeded(relativePath: book.relativePath, chapters: chapters([(0, 600), (600, 900)])) + + sut.dataManager.getContext().refresh(book, mergeChanges: true) + XCTAssertEqual(sut.getChapters(from: book.relativePath)?.map(\.title), ["Chapter 1", "Chapter 2"]) + } + + func testStoreChaptersIfNeededNeverReplacesAList() async { + let book = makeBook("external-chapters-2", duration: 1500) + await sut.storeChaptersIfNeeded(relativePath: book.relativePath, chapters: chapters([(0, 1500)])) + + await sut.storeChaptersIfNeeded(relativePath: book.relativePath, chapters: chapters([(0, 600), (600, 900)])) + + sut.dataManager.getContext().refresh(book, mergeChanges: true) + XCTAssertEqual( + sut.getChapters(from: book.relativePath)?.count, + 1, + "a parsed list on a downloaded copy must not be overwritten by a later server refresh" + ) + } + + func testStoreChaptersIfNeededNeverClearsAListWithAnEmptyAnswer() async { + let book = makeBook("external-chapters-3", duration: 1500) + await sut.storeChaptersIfNeeded(relativePath: book.relativePath, chapters: chapters([(0, 600), (600, 900)])) + + // A server that reports no chapters must not wipe what the item already has. + await sut.storeChaptersIfNeeded(relativePath: book.relativePath, chapters: []) + + sut.dataManager.getContext().refresh(book, mergeChanges: true) + XCTAssertEqual(sut.getChapters(from: book.relativePath)?.count, 2) + } + + @MainActor + func testHandleSyncFromExternalResourceStoresTheSnapshotsChapters() async { + let book = makeBook("external-chapters-4", duration: 1500) + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "jelly-ch", for: book.uuid) + sut.dataManager.getContext().refreshAllObjects() + + sut.handleSyncFromExternalResource( + providerName: "jellyfin", + snapshotsByProviderId: [ + "jelly-ch": ExternalItemSnapshot( + progress: ExternalPlaybackProgress(currentTime: 0, lastPlayedDate: nil), + chapters: chapters([(0, 600), (600, 900)]) + ) + ] + ) + + sut.dataManager.getContext().refresh(book, mergeChanges: true) + XCTAssertEqual( + sut.getChapters(from: book.relativePath)?.map(\.title), + ["Chapter 1", "Chapter 2"], + "chapters ride the same response and land in the same save as the progress" + ) + } + @MainActor func testHandleSyncFromExternalResourceUpdatesNewerProgress() async { let book = makeBook("external-5", duration: 200) @@ -2224,7 +2290,7 @@ class LibraryServiceExternalResourceTests: XCTestCase { let remote = ExternalPlaybackProgress(currentTime: 100, lastPlayedDate: remoteDate, isFinished: false) sut.handleSyncFromExternalResource( providerName: "jellyfin", - progressByProviderId: ["jelly-5": remote] + snapshotsByProviderId: ["jelly-5": ExternalItemSnapshot(progress: remote)] ) sut.dataManager.getContext().refresh(book, mergeChanges: true) @@ -2253,7 +2319,7 @@ class LibraryServiceExternalResourceTests: XCTestCase { ) sut.handleSyncFromExternalResource( providerName: "jellyfin", - progressByProviderId: ["jelly-6": remote] + snapshotsByProviderId: ["jelly-6": ExternalItemSnapshot(progress: remote)] ) sut.dataManager.getContext().refresh(book, mergeChanges: true) @@ -2278,10 +2344,12 @@ class LibraryServiceExternalResourceTests: XCTestCase { // Same providerId, different provider: an ABS batch must not move the Jellyfin-linked row. sut.handleSyncFromExternalResource( providerName: "audiobookshelf", - progressByProviderId: [ - "shared-id": ExternalPlaybackProgress( - currentTime: 180, - lastPlayedDate: Date(timeIntervalSince1970: 9_000) + snapshotsByProviderId: [ + "shared-id": ExternalItemSnapshot( + progress: ExternalPlaybackProgress( + currentTime: 180, + lastPlayedDate: Date(timeIntervalSince1970: 9_000) + ) ) ] ) diff --git a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift index 3e3dcc2ea..e56138f1c 100644 --- a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift @@ -49,6 +49,10 @@ public struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable public let progress: Double? public let currentTime: TimeInterval? public let isFinished: Bool? + /// The server's chapter list, empty unless this item came from an EXPANDED payload. + /// A streamed item has no other source: nothing opens the file to read embedded ones, + /// and ABS chapters can be server-side edits that aren't in the file at all. + public let chapters: [ChapterMetadata] /// From the progress payload's lastUpdate (ms epoch) — drives the resume-playback /// prompt's date comparison, same as Jellyfin's lastPlayedDate public let lastPlayedDate: Date? @@ -77,6 +81,7 @@ public struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable currentTime: TimeInterval? = nil, isFinished: Bool? = nil, lastPlayedDate: Date? = nil, + chapters: [ChapterMetadata] = [], browseCategory: AudiobookShelfBrowseCategory? = nil, filter: AudiobookShelfItemFilter? = nil ) { @@ -99,6 +104,7 @@ public struct AudiobookShelfLibraryItem: IntegrationLibraryItemProtocol, Codable self.currentTime = currentTime self.isFinished = isFinished self.lastPlayedDate = lastPlayedDate + self.chapters = chapters self.browseCategory = browseCategory self.filter = filter } @@ -225,9 +231,33 @@ extension AudiobookShelfLibraryItem { coverPath: apiItem.media.coverPath, progress: apiItem.userMediaProgress?.progress, currentTime: apiItem.userMediaProgress?.currentTime, - isFinished: apiItem.userMediaProgress?.isFinished + isFinished: apiItem.userMediaProgress?.isFinished, + chapters: Self.chapterMetadata(from: apiItem.media.chapters) ) } + + /// ABS gives every chapter a start AND an end, so durations are direct. Entries that + /// don't describe a positive span are dropped — `PlaybackService.getPlayableChapters` + /// filters those out anyway, and storing them would make the stored list disagree with + /// the playable one. + static func chapterMetadata(from chapters: [AudiobookShelfAPIItem.Media.Chapter]?) -> [ChapterMetadata] { + guard let chapters else { return [] } + + return chapters + .sorted { $0.start < $1.start } + .enumerated() + .compactMap { index, chapter in + let duration = chapter.end - chapter.start + guard duration > 0 else { return nil } + + return ChapterMetadata( + title: chapter.title, + start: chapter.start, + duration: duration, + index: index + 1 + ) + } + } public init(progressItem: AudiobookShelfAPIItem.UserMediaProgress) { self.init( @@ -261,6 +291,19 @@ public struct AudiobookShelfAPIItem: Codable { public let coverPath: String? public let duration: TimeInterval? public let audioFiles: [AudioFile]? + /// Present on EXPANDED media only, alongside `audioFiles` — which is exactly what + /// `POST /api/items/batch/get` returns. These are the server's chapters, which the + /// user may have edited in ABS and which a multi-file book has instead of embedded + /// ones, so they are the authoritative list for an item we only ever stream. + public let chapters: [Chapter]? + + /// Only the fields we read, like `AudioFile` below: a malformed element we never look at + /// would otherwise throw and take the whole batch response — and the import with it. + public struct Chapter: Codable { + public let start: TimeInterval + public let end: TimeInterval + public let title: String + } public struct Metadata: Codable { public let title: String @@ -403,6 +446,7 @@ extension AudiobookShelfLibraryItem { public func asVirtualImportResource( fileExtension: String, duration: TimeInterval, + chapters: [ChapterMetadata] = [], connectionService: AudiobookShelfConnectionService, artworkSize: CGSize ) -> SimpleExternalResource { @@ -434,7 +478,8 @@ extension AudiobookShelfLibraryItem { syncStatus: ExternalResource.SyncStatus.stream.rawValue, lastSyncedAt: nil, hostId: connectionService.connection?.stableHostId, - libraryItem: libraryItem + libraryItem: libraryItem, + chapters: chapters ) } } diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift index accf65078..3cf7df704 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -19,6 +19,10 @@ public struct SimpleExternalResource: Identifiable, Equatable, Hashable { public var libraryItemUuid: String? public var libraryItemName: String? public var libraryItem: SimpleLibraryItem? + /// Chapters the server reported for a virtual import: set by `asVirtualImportResource`, + /// consumed by `createExternalBook`. Import-only — `init(from: ExternalResource)` leaves it + /// empty, because the entity has no chapter column; the rows live on the Book. + public var chapters: [ChapterMetadata] = [] public init( id: Int = 0, @@ -29,7 +33,8 @@ public struct SimpleExternalResource: Identifiable, Equatable, Hashable { hostId: String? = nil, libraryItemUuid: String? = nil, libraryItemName: String? = nil, - libraryItem: SimpleLibraryItem? = nil + libraryItem: SimpleLibraryItem? = nil, + chapters: [ChapterMetadata] = [] ) { self.id = id self.providerName = providerName @@ -40,6 +45,7 @@ public struct SimpleExternalResource: Identifiable, Equatable, Hashable { self.libraryItemUuid = libraryItemUuid self.libraryItemName = libraryItemName self.libraryItem = libraryItem + self.chapters = chapters } } diff --git a/Shared/Jellyfin/JellyfinLibraryItem.swift b/Shared/Jellyfin/JellyfinLibraryItem.swift index 25d2dfded..30066cb75 100644 --- a/Shared/Jellyfin/JellyfinLibraryItem.swift +++ b/Shared/Jellyfin/JellyfinLibraryItem.swift @@ -33,6 +33,9 @@ public struct JellyfinLibraryItem: IntegrationLibraryItemProtocol { public let blurHash: String? public let imageAspectRatio: Double? public let details: JellyfinAudiobookDetailsData? + /// The server's chapter list, empty unless this item came from a payload that requested + /// `ItemFields.chapters`. A streamed item has no other source — nothing opens the file. + public let chapters: [ChapterMetadata] public var isDownloadable: Bool { kind == .audiobook @@ -66,7 +69,8 @@ extension JellyfinLibraryItem { lastPlayedDate: nil, blurHash: nil, imageAspectRatio: nil, - details: nil + details: nil, + chapters: [] ) } } @@ -83,6 +87,35 @@ extension JellyfinLibraryItem { (itemTicks ?? mediaSourceTicks).map { TimeInterval($0) / 10000000.0 } } + /// Jellyfin reports only a START per chapter, so each duration is the gap to the next one + /// and the last runs to the item's runtime. Without a runtime the final chapter has no + /// end, so the whole list is dropped rather than storing one with a bogus length. + /// + /// Tick-typed pairs rather than `[ChapterInfo]` so this is testable without JellyfinAPI, + /// which `BookPlayerTests` does not link. + static func chapterMetadata( + from chapters: [(name: String?, startTicks: Int?)], + runtimeSeconds: TimeInterval? + ) -> [ChapterMetadata] { + guard let runtimeSeconds, runtimeSeconds > 0 else { return [] } + + let starts = chapters + .compactMap { chapter -> (String, TimeInterval)? in + guard let startTicks = chapter.startTicks else { return nil } + return (chapter.name ?? "", TimeInterval(startTicks) / 10000000.0) + } + .filter { $0.1 < runtimeSeconds } + .sorted { $0.1 < $1.1 } + + return starts.enumerated().compactMap { index, entry in + let end = index + 1 < starts.count ? starts[index + 1].1 : runtimeSeconds + let duration = end - entry.1 + guard duration > 0 else { return nil } + + return ChapterMetadata(title: entry.0, start: entry.1, duration: duration, index: index + 1) + } + } + /// The playable file's extension: Jellyfin reports a media source's container, which can be /// a comma-separated list of candidates, and falls back to the path's own extension. /// @@ -144,7 +177,11 @@ extension JellyfinLibraryItem { lastPlayedDate: apiItem.userData?.lastPlayedDate, blurHash: blurHash, imageAspectRatio: apiItem.primaryImageAspectRatio, - details: myDetails + details: myDetails, + chapters: Self.chapterMetadata( + from: (apiItem.chapters ?? []).map { (name: $0.name, startTicks: $0.startPositionTicks) }, + runtimeSeconds: runtimeInSeconds + ) ) } @@ -154,7 +191,7 @@ extension JellyfinLibraryItem { let name = authorApiItem.name ?? id let blurHash = authorApiItem.imageBlurHashes?.primary?.first?.value self.init(id: id, name: name, kind: .author, durationSeconds: Int64((authorApiItem.runTimeTicks ?? 0) / 10000000), currentSeconds: Int64((authorApiItem.userData?.playbackPositionTicks ?? 0) / 10000000), isFinished: authorApiItem.userData?.isPlayed, - lastPlayedDate: authorApiItem.userData?.lastPlayedDate, blurHash: blurHash, imageAspectRatio: authorApiItem.primaryImageAspectRatio, details: nil) + lastPlayedDate: authorApiItem.userData?.lastPlayedDate, blurHash: blurHash, imageAspectRatio: authorApiItem.primaryImageAspectRatio, details: nil, chapters: []) } /// Create a narrator item from a Persons API response @@ -163,7 +200,7 @@ extension JellyfinLibraryItem { let name = narratorApiItem.name ?? id let blurHash = narratorApiItem.imageBlurHashes?.primary?.first?.value self.init(id: id, name: name, kind: .narrator, durationSeconds: Int64((narratorApiItem.runTimeTicks ?? 0) / 10000000), currentSeconds: Int64((narratorApiItem.userData?.playbackPositionTicks ?? 0) / 10000000), isFinished: narratorApiItem.userData?.isPlayed, - lastPlayedDate: narratorApiItem.userData?.lastPlayedDate, blurHash: blurHash, imageAspectRatio: narratorApiItem.primaryImageAspectRatio, details: nil) + lastPlayedDate: narratorApiItem.userData?.lastPlayedDate, blurHash: blurHash, imageAspectRatio: narratorApiItem.primaryImageAspectRatio, details: nil, chapters: []) } } @@ -180,6 +217,7 @@ extension JellyfinLibraryItem { public func asVirtualImportResource( fileExtension: String, duration: TimeInterval, + chapters: [ChapterMetadata] = [], detailsOverride: JellyfinAudiobookDetailsData?, connectionService: JellyfinConnectionService, artworkSize: CGSize @@ -215,7 +253,8 @@ extension JellyfinLibraryItem { syncStatus: ExternalResource.SyncStatus.stream.rawValue, lastSyncedAt: nil, hostId: connectionService.connection?.stableHostId, - libraryItem: libraryItem + libraryItem: libraryItem, + chapters: chapters ) } } diff --git a/Shared/Jellyfin/Network/JellyfinConnectionService.swift b/Shared/Jellyfin/Network/JellyfinConnectionService.swift index cb0139794..c21abc779 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionService.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionService.swift @@ -466,7 +466,7 @@ public class JellyfinConnectionService: BPLogger { let chunk = Array(ids[start.. [String: JellyfinLibraryItem] { guard !externalResources.isEmpty, let myId = connection?.userID else { return [:] } - let request = Paths.getItems(parameters: Paths.GetItemsParameters(userID: myId, ids: externalResources.map(\.providerId))) - let response = try await send(request) + var parameters = Paths.GetItemsParameters(userID: myId, ids: externalResources.map(\.providerId)) + /// `Chapters` is opt-in — without it Jellyfin returns the item with no chapter list and + /// the refresh would ingest an empty one for every book. The runtime that bounds the last + /// chapter is a base property and needs no field of its own. + parameters.fields = [.chapters] + + let response = try await send(Paths.getItems(parameters: parameters)) var itemsDictionary: [String: JellyfinLibraryItem] = [:] for item in response.value.items ?? [] { diff --git a/Shared/Services/AudioMetadataService.swift b/Shared/Services/AudioMetadataService.swift index 8cc30c6c4..62aa86a25 100644 --- a/Shared/Services/AudioMetadataService.swift +++ b/Shared/Services/AudioMetadataService.swift @@ -9,7 +9,7 @@ import AVFoundation import CoreMedia -public struct ChapterMetadata { +public struct ChapterMetadata: Codable, Equatable, Hashable, Sendable { public let title: String public let start: TimeInterval public let duration: TimeInterval diff --git a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift index ec6683321..515da6565 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift @@ -24,6 +24,23 @@ public struct ExternalPlaybackProgress: Equatable, Sendable { } } +/// Everything one refresh learns about an item from its own server. The progress is why the +/// pull exists; the chapters ride along because the SAME response already carries them and a +/// streamed item has no other source — nothing ever opens its file. +public struct ExternalItemSnapshot: Sendable { + public let progress: ExternalPlaybackProgress + /// Carried by the BATCH paths, which both ask for chapters explicitly: AudiobookShelf's + /// `batch/get` returns expanded media, and the Jellyfin item query passes + /// `ItemFields.chapters`. An empty list therefore means the server has none — not that + /// we forgot to ask. + public let chapters: [ChapterMetadata] + + public init(progress: ExternalPlaybackProgress, chapters: [ChapterMetadata] = []) { + self.progress = progress + self.chapters = chapters + } +} + extension [ExternalPlaybackProgress] { /// The candidate worth prompting the user about, or nil when no server has anything newer. /// @@ -78,7 +95,7 @@ public protocol ExternalProgressProviding: Sendable { /// The resources may span SEVERAL servers of the same provider, so each is resolved to its /// own connection and queried there — a batch is not one request. A resource whose host /// resolves to nothing is simply absent from the result. - func progress(forBatch resources: [SimpleExternalResource]) async throws -> [String: ExternalPlaybackProgress] + func progress(forBatch resources: [SimpleExternalResource]) async throws -> [String: ExternalItemSnapshot] } extension ExternalProgressProviding { @@ -139,21 +156,24 @@ public struct JellyfinProgressProvider: ExternalProgressProviding { public func progress( forBatch resources: [SimpleExternalResource] - ) async throws -> [String: ExternalPlaybackProgress] { + ) async throws -> [String: ExternalItemSnapshot] { let service = await JellyfinConnectionService() await service.setup() - var progress: [String: ExternalPlaybackProgress] = [:] + var progress: [String: ExternalItemSnapshot] = [:] for group in grouped(resources, by: await service.connections) { await service.useConnection(group.connection) let items = try await service.updateItemsFromJellyfin(group.resources) for (providerId, item) in items { - progress[providerId] = ExternalPlaybackProgress( - currentTime: TimeInterval(item.currentSeconds ?? 0), - lastPlayedDate: item.lastPlayedDate, - isFinished: item.isFinished + progress[providerId] = ExternalItemSnapshot( + progress: ExternalPlaybackProgress( + currentTime: TimeInterval(item.currentSeconds ?? 0), + lastPlayedDate: item.lastPlayedDate, + isFinished: item.isFinished + ), + chapters: item.chapters ) } } @@ -190,20 +210,23 @@ public struct AudiobookShelfProgressProvider: ExternalProgressProviding { public func progress( forBatch resources: [SimpleExternalResource] - ) async throws -> [String: ExternalPlaybackProgress] { + ) async throws -> [String: ExternalItemSnapshot] { let service = await AudiobookShelfConnectionService() await service.setup() - var progress: [String: ExternalPlaybackProgress] = [:] + var progress: [String: ExternalItemSnapshot] = [:] for group in grouped(resources, by: await service.connections) { await service.useConnection(group.connection) for item in try await service.fetchItems(ids: group.resources.map(\.providerId)) { - progress[item.id] = ExternalPlaybackProgress( - currentTime: item.currentTime ?? 0, - lastPlayedDate: item.lastPlayedDate, - isFinished: item.isFinished + progress[item.id] = ExternalItemSnapshot( + progress: ExternalPlaybackProgress( + currentTime: item.currentTime ?? 0, + lastPlayedDate: item.lastPlayedDate, + isFinished: item.isFinished + ), + chapters: item.chapters ) } } diff --git a/Shared/Services/ExternalProgress/ExternalProgressService.swift b/Shared/Services/ExternalProgress/ExternalProgressService.swift index 64e386487..652f04721 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressService.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressService.swift @@ -144,7 +144,7 @@ public final class ExternalProgressService: ExternalProgressRefreshing { let byProvider = Dictionary(grouping: resources) { $0.providerName } - await withTaskGroup(of: (String, [String: ExternalPlaybackProgress]).self) { group in + await withTaskGroup(of: (String, [String: ExternalItemSnapshot]).self) { group in for (providerName, providerResources) in byProvider { guard let name = ExternalResource.ProviderName(rawValue: providerName), @@ -156,10 +156,10 @@ public final class ExternalProgressService: ExternalProgressRefreshing { } } - for await (providerName, progress) in group where !progress.isEmpty { + for await (providerName, snapshots) in group where !snapshots.isEmpty { await libraryService.handleSyncFromExternalResource( providerName: providerName, - progressByProviderId: progress + snapshotsByProviderId: snapshots ) } } diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 5853c5de6..12768c662 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -96,6 +96,10 @@ public protocol LibraryServiceProtocol: AnyObject { func createBook(from url: URL) async -> Book /// Load metadata chapters if needed func loadChaptersIfNeeded(relativePath: String, asset: AVAsset) async + /// Store chapters a media server reported for an item whose file is never opened here. + /// Same empty-guard as `loadChaptersIfNeeded(relativePath:asset:)`: an existing list is + /// never replaced, so this can run on every refresh without fighting the parsed one. + func storeChaptersIfNeeded(relativePath: String, chapters: [ChapterMetadata]) async /// Re-parse chapters from the file with our manual parsers, replacing the stored list only /// when more chapters are found. Returns the new chapter count, or nil if nothing changed. func reloadChapters(relativePath: String) async -> Int? @@ -195,7 +199,7 @@ public protocol LibraryServiceProtocol: AnyObject { /// Fold positions reported by a provider's servers into the local rows. @MainActor func handleSyncFromExternalResource( providerName: String, - progressByProviderId: [String: ExternalPlaybackProgress] + snapshotsByProviderId: [String: ExternalItemSnapshot] ) } @@ -1041,6 +1045,22 @@ extension LibraryService { } } + /// The media-server rule, in one place: chapters are only ever ADDED. A list the parser + /// produced for a downloaded copy is never replaced by a later server refresh, and an empty + /// answer never clears one. + /// - Returns: whether anything was written, so a caller can skip a pointless save. + @discardableResult + private func storeChaptersIfEmpty( + _ chapters: [ChapterMetadata], + for book: Book, + context: NSManagedObjectContext + ) -> Bool { + guard !chapters.isEmpty, book.chapters?.count == 0 else { return false } + + storeChapters(chapters, for: book, context: context) + return true + } + /// Overload for backwards compatibility when we need to query by relativePath private func storeChapters(_ chapters: [ChapterMetadata], for relativePath: String, context: NSManagedObjectContext) { guard let book = getItem(with: relativePath, context: context) as? Book else { @@ -1884,7 +1904,12 @@ extension LibraryService { external.libraryItem = book book.addToExternalResources(external) - + + // The server's chapters, if the hydration carried any. Written here rather than left + // to the progress pull so the FIRST play already has chapter navigation — nothing + // opens the file later to recover them. + storeChaptersIfEmpty(externalResource.chapters, for: book, context: context) + self.dataManager.saveSyncContext(context) return book } @@ -1908,13 +1933,21 @@ extension LibraryService { return } - // Store chapters in the context, re-checking if still needed to avoid race conditions + await storeChaptersIfNeeded(relativePath: relativePath, chapters: chapters) + } + + public func storeChaptersIfNeeded(relativePath: String, chapters: [ChapterMetadata]) async { + guard !chapters.isEmpty else { return } + + let context = dataManager.getBackgroundContext() + + // The guard lives inside `perform` so it re-reads the book under the context that will + // write it — a caller's earlier check may have raced another writer. await context.perform { [unowned self] in guard let book = self.getItem(with: relativePath, context: context) as? Book, - book.chapters?.count == 0 else { - return - } - self.storeChapters(chapters, for: book, context: context) + self.storeChaptersIfEmpty(chapters, for: book, context: context) + else { return } + self.dataManager.saveSyncContext(context) } } @@ -2985,9 +3018,9 @@ extension LibraryService { /// refreshed at all — the caller could not even express an ABS batch. @MainActor public func handleSyncFromExternalResource( providerName: String, - progressByProviderId: [String: ExternalPlaybackProgress] + snapshotsByProviderId: [String: ExternalItemSnapshot] ) { - let remoteKeys = Array(progressByProviderId.keys) + let remoteKeys = Array(snapshotsByProviderId.keys) let fetch: NSFetchRequest = ExternalResource.fetchRequest() fetch.predicate = NSPredicate( @@ -3003,10 +3036,16 @@ extension LibraryService { for localResource in localResources { // We already know this exists because of our predicate! guard let localItem = localResource.libraryItem, - let remoteItem = progressByProviderId[localResource.providerId] else { + let snapshot = snapshotsByProviderId[localResource.providerId] else { continue } - + + // Chapters ride the same response and land in the same save as the progress. + if let book = localItem as? Book { + self.storeChaptersIfEmpty(snapshot.chapters, for: book, context: context) + } + + let remoteItem = snapshot.progress let localDate = localItem.lastPlayDate ?? .distantPast let remoteDate = remoteItem.lastPlayedDate ?? .distantPast From c8cc0fa87961a9ac8bc36cfcd893b523a725b1ed Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 16 Sep 2026 02:33:35 -0500 Subject: [PATCH 130/172] fix: media-server chapters have to cover the whole item MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AudiobookShelf takes its chapter list verbatim from the media, so it need not reach the item's end — an m4b whose embedded chapter track stops before the trailing silence leaves a gap, since `media.duration` sums the audio files while `media.chapters` does not. A position in that gap resolves to NO chapter, and `PlayableItem.init` falls back to `chapters[0]`. From there the session is pinned to chapter 1: the tick only reassigns when `getChapter` finds one, so it never advances and never reaches `chapters.last` — the book shows the wrong chapter title and chapter-context times for the whole tail, and at the end neither branch of `playerDidFinishPlaying` runs, so it never completes, never autoplays the next item and never resolves the sleep timer. The last chapter is now stretched to the item duration, giving ABS the total-coverage invariant the Jellyfin mapping already had by construction. Degenerate entries are dropped BEFORE the stretch picks its target — a test caught the first attempt resurrecting a zero-length trailing chapter and overlapping its predecessor. The Jellyfin pull also asks for `MediaSources` now: an item the server hasn't probed has no item-level `runTimeTicks`, and without a runtime the last chapter has no end, so the whole list was dropped for exactly the items the runtime fallback exists for. --- BookPlayerTests/ImportOperationTests.swift | 79 ++++++++++++++++--- .../AudiobookShelfLibraryItem.swift | 61 +++++++++----- .../Network/JellyfinConnectionService.swift | 8 +- 3 files changed, 116 insertions(+), 32 deletions(-) diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 07dc973d7..5e3910f45 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -1606,10 +1606,13 @@ final class MediaServerChapterMappingTests: XCTestCase { // MARK: AudiobookShelf — start AND end, so durations are direct func testAudiobookShelfChaptersMapWithDirectDurations() { - let chapters = AudiobookShelfLibraryItem.chapterMetadata(from: [ - .init(start: 0, end: 600, title: "One"), - .init(start: 600, end: 1500, title: "Two"), - ]) + let chapters = AudiobookShelfLibraryItem.chapterMetadata( + from: [ + .init(start: 0, end: 600, title: "One"), + .init(start: 600, end: 1500, title: "Two"), + ], + duration: 1500 + ) XCTAssertEqual(chapters.map(\.title), ["One", "Two"]) XCTAssertEqual(chapters.map(\.start), [0, 600]) @@ -1618,11 +1621,14 @@ final class MediaServerChapterMappingTests: XCTestCase { } func testAudiobookShelfOutOfOrderChaptersAreSortedAndZeroLengthOnesDropped() { - let chapters = AudiobookShelfLibraryItem.chapterMetadata(from: [ - .init(start: 600, end: 1500, title: "Two"), - .init(start: 1500, end: 1500, title: "Empty"), - .init(start: 0, end: 600, title: "One"), - ]) + let chapters = AudiobookShelfLibraryItem.chapterMetadata( + from: [ + .init(start: 600, end: 1500, title: "Two"), + .init(start: 700, end: 700, title: "Empty"), + .init(start: 0, end: 600, title: "One"), + ], + duration: 1500 + ) XCTAssertEqual( chapters.map(\.title), @@ -1632,8 +1638,59 @@ final class MediaServerChapterMappingTests: XCTestCase { } func testAudiobookShelfNoChaptersIsEmptyNotASynthesizedOne() { - XCTAssertTrue(AudiobookShelfLibraryItem.chapterMetadata(from: nil).isEmpty) - XCTAssertTrue(AudiobookShelfLibraryItem.chapterMetadata(from: []).isEmpty) + XCTAssertTrue(AudiobookShelfLibraryItem.chapterMetadata(from: nil, duration: 1500).isEmpty) + XCTAssertTrue(AudiobookShelfLibraryItem.chapterMetadata(from: [], duration: 1500).isEmpty) + } + + /// The bug this exists for: an uncovered tail resolves to NO chapter, so `PlayableItem.init` + /// falls back to `chapters[0]` and the session is pinned to chapter 1 — it never advances + /// (the tick only reassigns when `getChapter` finds one) and never reaches `chapters.last`, + /// so the book never completes. + func testAudiobookShelfLastChapterStretchesToTheItemDuration() { + let chapters = AudiobookShelfLibraryItem.chapterMetadata( + from: [ + .init(start: 0, end: 600, title: "One"), + .init(start: 600, end: 1400, title: "Two"), + ], + duration: 1500 + ) + + XCTAssertEqual( + chapters.last?.start.advanced(by: chapters.last?.duration ?? 0), + 1500, + "the chapter track stopping before the trailing silence must not leave a hole" + ) + } + + func testAudiobookShelfChapterEndBeyondTheDurationIsClamped() { + let chapters = AudiobookShelfLibraryItem.chapterMetadata( + from: [.init(start: 0, end: 9999, title: "Overlong")], + duration: 1500 + ) + + XCTAssertEqual(chapters.map(\.duration), [1500]) + } + + func testAudiobookShelfChaptersStartingPastTheDurationAreDropped() { + let chapters = AudiobookShelfLibraryItem.chapterMetadata( + from: [ + .init(start: 0, end: 600, title: "One"), + .init(start: 1600, end: 1700, title: "Bogus"), + ], + duration: 1500 + ) + + XCTAssertEqual(chapters.map(\.title), ["One"]) + XCTAssertEqual(chapters.map(\.duration), [1500], "the survivor still covers the item") + } + + func testAudiobookShelfWithoutADurationKeepsTheServersEnds() { + let chapters = AudiobookShelfLibraryItem.chapterMetadata( + from: [.init(start: 0, end: 600, title: "One")], + duration: nil + ) + + XCTAssertEqual(chapters.map(\.duration), [600]) } // MARK: Jellyfin — starts only, so each duration is the gap to the next diff --git a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift index e56138f1c..594632755 100644 --- a/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift +++ b/Shared/AudiobookShelf/AudiobookShelfLibraryItem.swift @@ -232,31 +232,56 @@ extension AudiobookShelfLibraryItem { progress: apiItem.userMediaProgress?.progress, currentTime: apiItem.userMediaProgress?.currentTime, isFinished: apiItem.userMediaProgress?.isFinished, - chapters: Self.chapterMetadata(from: apiItem.media.chapters) + chapters: Self.chapterMetadata(from: apiItem.media.chapters, duration: apiItem.media.duration) ) } - /// ABS gives every chapter a start AND an end, so durations are direct. Entries that - /// don't describe a positive span are dropped — `PlaybackService.getPlayableChapters` - /// filters those out anyway, and storing them would make the stored list disagree with - /// the playable one. - static func chapterMetadata(from chapters: [AudiobookShelfAPIItem.Media.Chapter]?) -> [ChapterMetadata] { + /// ABS gives every chapter a start AND an end, so durations are direct — but the list is + /// taken verbatim from the media and need not reach the item's end: an m4b whose embedded + /// chapter track stops before the trailing silence or credits leaves a gap, since + /// `media.duration` sums the audio files while `media.chapters` does not. + /// + /// The LAST chapter is therefore stretched to the item duration, giving the same total + /// coverage the Jellyfin mapping has by construction. Without it a position in that gap + /// resolves to no chapter, and `PlayableItem.init` falls back to `chapters[0]` — pinning + /// the whole session to chapter 1, which then never advances (the tick only reassigns when + /// `getChapter` finds one) and never reaches `chapters.last`, so the book never completes. + /// + /// Entries that don't describe a positive span are dropped: `getPlayableChapters` filters + /// those anyway, and storing them would make the stored list disagree with the playable one. + static func chapterMetadata( + from chapters: [AudiobookShelfAPIItem.Media.Chapter]?, + duration: TimeInterval? + ) -> [ChapterMetadata] { guard let chapters else { return [] } - return chapters + // Degenerate entries go FIRST, so the stretch below lands on a real chapter — stretching + // whatever happened to sort last would resurrect a zero-length one and overlap its + // predecessor. + let usable = chapters + .filter { chapter in + guard chapter.end > chapter.start else { return false } + guard let duration else { return true } + return chapter.start < duration + } .sorted { $0.start < $1.start } - .enumerated() - .compactMap { index, chapter in - let duration = chapter.end - chapter.start - guard duration > 0 else { return nil } - - return ChapterMetadata( - title: chapter.title, - start: chapter.start, - duration: duration, - index: index + 1 - ) + + return usable.enumerated().map { index, chapter in + let isLast = index == usable.count - 1 + let end: TimeInterval + if let duration, isLast || chapter.end > duration { + end = duration + } else { + end = chapter.end } + + return ChapterMetadata( + title: chapter.title, + start: chapter.start, + duration: end - chapter.start, + index: index + 1 + ) + } } public init(progressItem: AudiobookShelfAPIItem.UserMediaProgress) { diff --git a/Shared/Jellyfin/Network/JellyfinConnectionService.swift b/Shared/Jellyfin/Network/JellyfinConnectionService.swift index c21abc779..3912a14d2 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionService.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionService.swift @@ -718,9 +718,11 @@ public class JellyfinConnectionService: BPLogger { var parameters = Paths.GetItemsParameters(userID: myId, ids: externalResources.map(\.providerId)) /// `Chapters` is opt-in — without it Jellyfin returns the item with no chapter list and - /// the refresh would ingest an empty one for every book. The runtime that bounds the last - /// chapter is a base property and needs no field of its own. - parameters.fields = [.chapters] + /// the refresh would ingest an empty one for every book. `MediaSources` comes along for + /// the runtime fallback: an item Jellyfin hasn't probed at the item level has no + /// `runTimeTicks`, and without a runtime the last chapter has no end, so the whole list + /// is dropped. The import path requests both for the same reason. + parameters.fields = [.chapters, .mediaSources] let response = try await send(Paths.getItems(parameters: parameters)) From 2ea28e99d27ba19cd853e57de61327c2ad425b1f Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 16 Sep 2026 12:13:37 -0500 Subject: [PATCH 131/172] perf: ask a media server for chapters only where they're missing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The per-level progress pull started carrying every book's chapters on every refresh — list appear, pull-to-refresh, sync activation, CarPlay — for data that is written once and never replaced. A level of 200 books at ~40 chapters each is ~8,000 chapter objects per refresh, all but the first discarded by `storeChaptersIfEmpty`. `findMediaServerResources(at:)` now marks the rows whose book still has no chapters, and the refresh asks for them only for those. In the steady state that set is empty and the request is byte-identical to the progress-only one this call made before chapters existed. The split is per item rather than a single per-level flag on purpose: a book whose server genuinely has no chapters never gets filled, so it stays in the needing set forever. Per item that is one small request; per level it would have made every refresh carry the whole level's chapters indefinitely. The flag comes from a second fetch against `Book` rather than a predicate through `ExternalResource.libraryItem`: `chapters` is declared on `Book` while that relationship's destination is the abstract `LibraryItem`, so the keypath would not resolve. The rows it needs were already being faulted for the snapshot's uuid and title, so the prefetch makes it one batched read. --- BookPlayerTests/ImportOperationTests.swift | 83 +++++++++++++++++-- .../Services/LibraryServiceTests.swift | 18 ++++ .../SimpleExternalResource.swift | 8 +- .../Network/JellyfinConnectionService.swift | 19 +++-- .../ExternalProgressProviding.swift | 47 ++++++++--- .../ExternalProgressService.swift | 15 +++- Shared/Services/LibraryService.swift | 43 +++++++++- 7 files changed, 207 insertions(+), 26 deletions(-) diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 5e3910f45..9943dba25 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -787,6 +787,7 @@ final class ExternalProgressServiceTests: XCTestCase { private final class ProviderStub: ExternalProgressProviding, @unchecked Sendable { private let lock = NSLock() private var _requested: [String] = [] + private var _chapterRequests: [[String]] = [] private let answer: @Sendable (SimpleExternalResource) async throws -> ExternalPlaybackProgress? /// Attached to every answered snapshot, so a test can script the chapter half without /// restating the position half. @@ -798,6 +799,14 @@ final class ExternalProgressServiceTests: XCTestCase { return _requested } + /// The id sets asked WITH chapters, one entry per call — so a test can assert both that + /// chapters were requested for the right items and that they weren't requested at all. + var chapterRequests: [[String]] { + lock.lock() + defer { lock.unlock() } + return _chapterRequests + } + init( chapters: [ChapterMetadata] = [], answer: @escaping @Sendable (SimpleExternalResource) async throws -> ExternalPlaybackProgress? @@ -814,12 +823,22 @@ final class ExternalProgressServiceTests: XCTestCase { } func progress( - forBatch resources: [SimpleExternalResource] + forBatch resources: [SimpleExternalResource], + includingChapters: Bool ) async throws -> [String: ExternalItemSnapshot] { + if includingChapters { + lock.lock() + _chapterRequests.append(resources.map(\.providerId)) + lock.unlock() + } + var out: [String: ExternalItemSnapshot] = [:] for resource in resources { if let progress = try await progress(for: resource) { - out[resource.providerId] = ExternalItemSnapshot(progress: progress, chapters: chapters) + out[resource.providerId] = ExternalItemSnapshot( + progress: progress, + chapters: includingChapters ? chapters : [] + ) } } return out @@ -844,14 +863,19 @@ final class ExternalProgressServiceTests: XCTestCase { super.tearDown() } - private func makeResource(provider: String, id: String) -> SimpleExternalResource { + private func makeResource( + provider: String, + id: String, + needsChapters: Bool = false + ) -> SimpleExternalResource { SimpleExternalResource( providerName: provider, providerId: id, syncStatus: ExternalResource.SyncStatus.stream.rawValue, lastSyncedAt: nil, hostId: "guid-host", - libraryItem: nil + libraryItem: nil, + needsChapters: needsChapters ) } @@ -1137,7 +1161,9 @@ final class ExternalProgressServiceTests: XCTestCase { } let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin]) // The LEVEL path reads this one; `resources:` above feeds the on-play path. - libraryService.findMediaServerResourcesAtReturnValue = [makeResource(provider: "jellyfin", id: "jf-1")] + libraryService.findMediaServerResourcesAtReturnValue = [ + makeResource(provider: "jellyfin", id: "jf-1", needsChapters: true) + ] await sut.refreshItems(at: nil) @@ -1149,6 +1175,53 @@ final class ExternalProgressServiceTests: XCTestCase { ) } + /// The repeated case, and the reason the flag exists: once every book has chapters the + /// refresh must cost exactly what a progress-only refresh always cost. + func testRefreshItemsAsksForNoChaptersWhenNothingNeedsThem() async { + let jellyfin = ProviderStub { _ in + ExternalPlaybackProgress(currentTime: 120, lastPlayedDate: Date(timeIntervalSince1970: 500)) + } + let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin]) + libraryService.findMediaServerResourcesAtReturnValue = [ + makeResource(provider: "jellyfin", id: "jf-1"), + makeResource(provider: "jellyfin", id: "jf-2"), + ] + + await sut.refreshItems(at: nil) + + XCTAssertTrue(jellyfin.chapterRequests.isEmpty, "a chapters request here would repeat forever") + XCTAssertEqual(Set(jellyfin.requested), ["jf-1", "jf-2"], "every item is still refreshed for position") + } + + /// A book whose server has no chapters never gets filled, so it stays in the needing set — + /// it must not drag the whole level's chapters along on every refresh. + func testRefreshItemsAsksForChaptersOnlyForTheItemsMissingThem() async { + let jellyfin = ProviderStub { _ in + ExternalPlaybackProgress(currentTime: 120, lastPlayedDate: Date(timeIntervalSince1970: 500)) + } + let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin]) + libraryService.findMediaServerResourcesAtReturnValue = [ + makeResource(provider: "jellyfin", id: "has-chapters"), + makeResource(provider: "jellyfin", id: "needs-chapters", needsChapters: true), + ] + + await sut.refreshItems(at: nil) + + XCTAssertEqual(jellyfin.chapterRequests, [["needs-chapters"]]) + XCTAssertEqual( + Set(jellyfin.requested), + ["has-chapters", "needs-chapters"], + "both partitions are still asked for position, and both reach the ingest" + ) + + let ingested = libraryService.handleSyncFromExternalResourceProviderNameSnapshotsByProviderIdReceivedInvocations + XCTAssertEqual( + Set(ingested.first?.snapshotsByProviderId.keys ?? [:].keys), + ["has-chapters", "needs-chapters"], + "the two partitions' answers are merged before the ingest" + ) + } + func testRefreshItemsAtLevelDoesNothingWithoutMediaServerResources() async { let jellyfin = ProviderStub { _ in XCTFail("must not be asked"); return nil } let (sut, libraryService) = makeSUT(resources: [], providers: [.jellyfin: jellyfin]) diff --git a/BookPlayerTests/Services/LibraryServiceTests.swift b/BookPlayerTests/Services/LibraryServiceTests.swift index 9168207cf..5e6dfd668 100644 --- a/BookPlayerTests/Services/LibraryServiceTests.swift +++ b/BookPlayerTests/Services/LibraryServiceTests.swift @@ -2249,6 +2249,24 @@ class LibraryServiceExternalResourceTests: XCTestCase { XCTAssertEqual(sut.getChapters(from: book.relativePath)?.count, 2) } + func testFindMediaServerResourcesMarksOnlyTheBooksWithoutChapters() async { + let chaptered = makeBook("needs-nothing", duration: 1500) + let bare = makeBook("needs-chapters", duration: 1500) + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "jf-chaptered", for: chaptered.uuid) + _ = await sut.setExternalResource(providerName: "jellyfin", providerId: "jf-bare", for: bare.uuid) + await sut.storeChaptersIfNeeded(relativePath: chaptered.relativePath, chapters: chapters([(0, 1500)])) + + let resources = await sut.findMediaServerResources(at: nil) + + let byProviderId = Dictionary(uniqueKeysWithValues: resources.map { ($0.providerId, $0.needsChapters) }) + XCTAssertEqual(byProviderId["jf-bare"], true) + XCTAssertEqual( + byProviderId["jf-chaptered"], + false, + "a book that already has chapters must not make the refresh ask for them again" + ) + } + @MainActor func testHandleSyncFromExternalResourceStoresTheSnapshotsChapters() async { let book = makeBook("external-chapters-4", duration: 1500) diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift index 3cf7df704..b314218b8 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -23,6 +23,10 @@ public struct SimpleExternalResource: Identifiable, Equatable, Hashable { /// consumed by `createExternalBook`. Import-only — `init(from: ExternalResource)` leaves it /// empty, because the entity has no chapter column; the rows live on the Book. public var chapters: [ChapterMetadata] = [] + /// Whether this item's book still has no chapters, so a refresh knows to ask its server + /// for them. Set only by `findMediaServerResources(at:)`; `false` everywhere else, which + /// is the safe default — it costs a book its chapters, never a wrong write. + public var needsChapters = false public init( id: Int = 0, @@ -34,7 +38,8 @@ public struct SimpleExternalResource: Identifiable, Equatable, Hashable { libraryItemUuid: String? = nil, libraryItemName: String? = nil, libraryItem: SimpleLibraryItem? = nil, - chapters: [ChapterMetadata] = [] + chapters: [ChapterMetadata] = [], + needsChapters: Bool = false ) { self.id = id self.providerName = providerName @@ -46,6 +51,7 @@ public struct SimpleExternalResource: Identifiable, Equatable, Hashable { self.libraryItemName = libraryItemName self.libraryItem = libraryItem self.chapters = chapters + self.needsChapters = needsChapters } } diff --git a/Shared/Jellyfin/Network/JellyfinConnectionService.swift b/Shared/Jellyfin/Network/JellyfinConnectionService.swift index 3912a14d2..fabc66390 100644 --- a/Shared/Jellyfin/Network/JellyfinConnectionService.swift +++ b/Shared/Jellyfin/Network/JellyfinConnectionService.swift @@ -713,16 +713,21 @@ public class JellyfinConnectionService: BPLogger { /// Batch-fetches the Jellyfin items backing the given synced external resources, keyed by /// provider item id — one round-trip instead of N when refreshing a list. - public func updateItemsFromJellyfin(_ externalResources: [SimpleExternalResource]) async throws -> [String: JellyfinLibraryItem] { + public func updateItemsFromJellyfin( + _ externalResources: [SimpleExternalResource], + includingChapters: Bool + ) async throws -> [String: JellyfinLibraryItem] { guard !externalResources.isEmpty, let myId = connection?.userID else { return [:] } var parameters = Paths.GetItemsParameters(userID: myId, ids: externalResources.map(\.providerId)) - /// `Chapters` is opt-in — without it Jellyfin returns the item with no chapter list and - /// the refresh would ingest an empty one for every book. `MediaSources` comes along for - /// the runtime fallback: an item Jellyfin hasn't probed at the item level has no - /// `runTimeTicks`, and without a runtime the last chapter has no end, so the whole list - /// is dropped. The import path requests both for the same reason. - parameters.fields = [.chapters, .mediaSources] + /// Both fields are opt-in and both are needed together, but ONLY for the items that still + /// have no chapters: `Chapters` is the list itself, and `MediaSources` carries the runtime + /// that bounds the last chapter for an item Jellyfin hasn't probed at the item level — + /// without a runtime the whole list is dropped. A progress-only refresh asks for neither, + /// which is the payload this call carried before chapters existed. + if includingChapters { + parameters.fields = [.chapters, .mediaSources] + } let response = try await send(Paths.getItems(parameters: parameters)) diff --git a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift index 515da6565..c61040045 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressProviding.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressProviding.swift @@ -29,10 +29,10 @@ public struct ExternalPlaybackProgress: Equatable, Sendable { /// streamed item has no other source — nothing ever opens its file. public struct ExternalItemSnapshot: Sendable { public let progress: ExternalPlaybackProgress - /// Carried by the BATCH paths, which both ask for chapters explicitly: AudiobookShelf's - /// `batch/get` returns expanded media, and the Jellyfin item query passes - /// `ItemFields.chapters`. An empty list therefore means the server has none — not that - /// we forgot to ask. + /// Filled only when the batch was asked `includingChapters` — i.e. for the items that + /// still have none. An empty list is therefore NOT a statement that the server has no + /// chapters, which is why the ingest only ever ADDS (`storeChaptersIfEmpty`) and never + /// clears a list. public let chapters: [ChapterMetadata] public init(progress: ExternalPlaybackProgress, chapters: [ChapterMetadata] = []) { @@ -95,10 +95,29 @@ public protocol ExternalProgressProviding: Sendable { /// The resources may span SEVERAL servers of the same provider, so each is resolved to its /// own connection and queried there — a batch is not one request. A resource whose host /// resolves to nothing is simply absent from the result. - func progress(forBatch resources: [SimpleExternalResource]) async throws -> [String: ExternalItemSnapshot] + /// + /// `includingChapters` is asked for only the items that still need them. Chapters are + /// written once and never replaced, so carrying them on every refresh would pay for a + /// large payload forever — and a book whose server genuinely has none would keep asking. + func progress( + forBatch resources: [SimpleExternalResource], + includingChapters: Bool + ) async throws -> [String: ExternalItemSnapshot] } extension ExternalProgressProviding { + /// A batch that never throws and never asks for nothing: a provider builds a connection + /// service and reads the keychain even for an empty list, so the caller's partitions can + /// be empty without paying for it, and one server being down can't fail the refresh. + func snapshots( + forBatch resources: [SimpleExternalResource], + includingChapters: Bool + ) async -> [String: ExternalItemSnapshot] { + guard !resources.isEmpty else { return [:] } + + return (try? await progress(forBatch: resources, includingChapters: includingChapters)) ?? [:] + } + /// Groups resources by the connection that owns them, so a caller can query each server /// with only its own ids. Shared by both adapters: the grouping rule is the resolution /// contract, not provider-specific. @@ -155,7 +174,8 @@ public struct JellyfinProgressProvider: ExternalProgressProviding { } public func progress( - forBatch resources: [SimpleExternalResource] + forBatch resources: [SimpleExternalResource], + includingChapters: Bool ) async throws -> [String: ExternalItemSnapshot] { let service = await JellyfinConnectionService() await service.setup() @@ -165,7 +185,10 @@ public struct JellyfinProgressProvider: ExternalProgressProviding { for group in grouped(resources, by: await service.connections) { await service.useConnection(group.connection) - let items = try await service.updateItemsFromJellyfin(group.resources) + let items = try await service.updateItemsFromJellyfin( + group.resources, + includingChapters: includingChapters + ) for (providerId, item) in items { progress[providerId] = ExternalItemSnapshot( progress: ExternalPlaybackProgress( @@ -173,7 +196,7 @@ public struct JellyfinProgressProvider: ExternalProgressProviding { lastPlayedDate: item.lastPlayedDate, isFinished: item.isFinished ), - chapters: item.chapters + chapters: includingChapters ? item.chapters : [] ) } } @@ -208,8 +231,12 @@ public struct AudiobookShelfProgressProvider: ExternalProgressProviding { ) } + /// `includingChapters` changes nothing about the REQUEST here: `batch/get` returns expanded + /// media either way, so the chapters are already on the wire. It only decides whether they + /// are carried forward, keeping the flag's meaning the same across providers. public func progress( - forBatch resources: [SimpleExternalResource] + forBatch resources: [SimpleExternalResource], + includingChapters: Bool ) async throws -> [String: ExternalItemSnapshot] { let service = await AudiobookShelfConnectionService() await service.setup() @@ -226,7 +253,7 @@ public struct AudiobookShelfProgressProvider: ExternalProgressProviding { lastPlayedDate: item.lastPlayedDate, isFinished: item.isFinished ), - chapters: item.chapters + chapters: includingChapters ? item.chapters : [] ) } } diff --git a/Shared/Services/ExternalProgress/ExternalProgressService.swift b/Shared/Services/ExternalProgress/ExternalProgressService.swift index 652f04721..cc32a1d73 100644 --- a/Shared/Services/ExternalProgress/ExternalProgressService.swift +++ b/Shared/Services/ExternalProgress/ExternalProgressService.swift @@ -152,7 +152,20 @@ public final class ExternalProgressService: ExternalProgressRefreshing { else { continue } group.addTask { - (providerName, (try? await provider.progress(forBatch: providerResources)) ?? [:]) + // Only the items that still lack chapters pay for them. In the steady state that + // set is empty and this is exactly the progress-only refresh it has always been; + // a book whose server has none stays in the small set instead of making every + // refresh carry the whole level's chapters forever. + let needing = providerResources.filter(\.needsChapters) + let rest = providerResources.filter { !$0.needsChapters } + + async let withChapters = provider.snapshots(forBatch: needing, includingChapters: true) + async let withoutChapters = provider.snapshots(forBatch: rest, includingChapters: false) + + // Disjoint by construction, so the tie-break only fires when one providerId is + // linked twice at this level — and then the answer carrying chapters is the one + // worth keeping. + return (providerName, await withChapters.merging(withoutChapters) { current, _ in current }) } } diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 12768c662..345aa596a 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -2989,7 +2989,7 @@ extension LibraryService { // reconciled are visible here directly, and the main thread does nothing for this query. let context = dataManager.getBackgroundContext() - return await context.perform { + return await context.perform { [unowned self] in let fetch: NSFetchRequest = ExternalResource.fetchRequest() let level: NSPredicate if let relativePath { @@ -3007,12 +3007,51 @@ extension LibraryService { ExternalResource.ProviderName.mediaServerRawValues ) fetch.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [level, mediaServers]) + // The snapshot already reads `libraryItem` for the uuid and title, and the chapter + // lookup below needs its relativePath — one prefetch instead of a fault per row. + fetch.relationshipKeyPathsForPrefetching = [#keyPath(ExternalResource.libraryItem)] let resources = (try? context.fetch(fetch)) ?? [] - return resources.map { SimpleExternalResource(from: $0, ignoreLibraryItem: true) } + let chapterless = self.relativePathsWithoutChapters( + among: resources.compactMap { $0.libraryItem?.relativePath }, + context: context + ) + + return resources.map { resource in + var simple = SimpleExternalResource(from: resource, ignoreLibraryItem: true) + if let relativePath = resource.libraryItem?.relativePath { + simple.needsChapters = chapterless.contains(relativePath) + } + return simple + } } } + /// Which of these books still have no chapters, answered SQL-side in one fetch. + /// + /// Asks `Book` directly rather than reaching through `ExternalResource.libraryItem`: + /// `chapters` is declared on `Book`, and that relationship's destination is the abstract + /// `LibraryItem`, so the keypath would not resolve. + private func relativePathsWithoutChapters( + among relativePaths: [String], + context: NSManagedObjectContext + ) -> Set { + guard !relativePaths.isEmpty else { return [] } + + let fetch = NSFetchRequest(entityName: "Book") + fetch.resultType = .dictionaryResultType + fetch.propertiesToFetch = [#keyPath(Book.relativePath)] + fetch.predicate = NSPredicate( + format: "%K IN %@ AND %K.@count == 0", + #keyPath(Book.relativePath), + relativePaths, + #keyPath(Book.chapters) + ) + + let results = (try? context.fetch(fetch)) ?? [] + return Set(results.compactMap { $0[#keyPath(Book.relativePath)] as? String }) + } + /// Provider-neutral on purpose: this only ever used the position, the date and the finished /// flag, and typing it to `JellyfinLibraryItem` is what kept AudiobookShelf items from being /// refreshed at all — the caller could not even express an ABS batch. From f098f91b79e39a1f8ca5d1836fb1435ed283421c Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 16 Sep 2026 14:26:18 -0500 Subject: [PATCH 132/172] revert: keep loadValues(forKeys:) for asset metadata MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The migration to the typed `asset.load(_:)` was drive-by — unrelated to media-server support, and the reason the watch copy quietly lost `hasProtectedContent`, since that key has no typed equivalent on watchOS. Both copies go back to develop's call verbatim, and the comment explaining the watch's shorter list goes with them. --- BookPlayer/Player/PlayerManager.swift | 20 ++++++++--------- .../LocalPlayback/Player/PlayerManager.swift | 22 +++++++++---------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 0e9d37f51..0141c8607 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -213,16 +213,16 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { // TODO: Check if there's a way to reduce the time this operation takes // it's currently a bottleneck when streaming playback - _ = try? await asset.load( - .duration, - .isPlayable, - .preferredRate, - .preferredVolume, - .hasProtectedContent, - .providesPreciseDurationAndTiming, - .commonMetadata, - .metadata - ) + await asset.loadValues(forKeys: [ + "duration", + "playable", + "preferredRate", + "preferredVolume", + "hasProtectedContent", + "providesPreciseDurationAndTiming", + "commonMetadata", + "metadata", + ]) guard !Task.isCancelled else { throw BookPlayerError.cancelledTask diff --git a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift index 124f1582c..e63a5c61c 100644 --- a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift +++ b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift @@ -193,18 +193,16 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { // TODO: Check if there's a way to reduce the time this operation takes // it's currently a bottleneck when streaming playback - // Deliberately one key short of the phone's list: `.hasProtectedContent` is - // unavailable in watchOS. The old string-based `loadValues(forKeys:)` accepted it - // only because those keys were untyped. - _ = try? await asset.load( - .duration, - .isPlayable, - .preferredRate, - .preferredVolume, - .providesPreciseDurationAndTiming, - .commonMetadata, - .metadata - ) + await asset.loadValues(forKeys: [ + "duration", + "playable", + "preferredRate", + "preferredVolume", + "hasProtectedContent", + "providesPreciseDurationAndTiming", + "commonMetadata", + "metadata", + ]) guard !Task.isCancelled else { throw BookPlayerError.cancelledTask From 4f3c81b50e5f2b413f86cd986fc04b0c8958fc14 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 16 Sep 2026 17:39:34 -0500 Subject: [PATCH 133/172] feat: media-server streaming for anyone who has ever paid MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Streaming reaches the user's OWN Jellyfin or AudiobookShelf and never our servers, so it has no reason to end when a subscription does. It is now available to anyone who has ever paid — an active tier, a one-time tip, or a subscription that expired without being refunded — while sync, S3 uploads and the media-server progress pull stay behind an active lite/pro subscription. `hasStreamingEnabled()` stops aliasing `hasSyncEnabled()` and composes three clauses, each load-bearing. `hasPlusAccess()` covers the active tiers and a tip while its entitlement holds. `hasEverSubscribed()` adds the expired case, reading `subscriptionsByProductIdentifier` directly rather than through `getSubscriptionInfo(from:)` — that helper breaks on the first `PricingOption` match, so enum order would have decided access for someone holding a refunded pro alongside a legitimately lapsed lite, and it misses the support products entirely. `donationMade` is read separately because `hasPlusAccess()` returns EARLY on a refunded pro/lite, which would otherwise deny a user who tipped and later had an unrelated subscription refunded. Family-shared and sandbox rows would also satisfy the refund test. Neither is filtered: every product in the StoreKit configuration is `familyShareable: false`, and sandbox subscriptions only reach developers and QA, since purchases are disabled on TestFlight. The external branch of `loadPlayerItem` gains the entitlement check it never had — until now the rule was unenforceable in either direction, since rows outlive the subscription that created them and no server of ours sees the stream. The composition and the refund rule are behind plain-value statics: RevenueCat's `SubscriptionInfo` initializer is internal, so a test cannot build one. --- .../IntegrationAudiobookDetailsView.swift | 8 +-- BookPlayer/Player/PlayerManager.swift | 7 ++- .../Mocks/AccountServiceMock.swift | 7 +++ BookPlayerTests/PlayerManagerTests.swift | 46 +++++++++++++- .../Services/AccountServiceTests.swift | 48 +++++++++++++++ .../PreferencesSyncServiceTests.swift | 1 + Shared/Services/Account/AccountService.swift | 60 +++++++++++++++++-- 7 files changed, 164 insertions(+), 13 deletions(-) diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index a563f2cfe..d634036b0 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -77,11 +77,11 @@ struct IntegrationAudiobookDetailsView< // Both buttons always render: Stream sells the entitlement when it's missing, // Download always downloads. The old `if allowStream || showSubscribeButton` - // was a tautology — allowStream is hasStreamingEnabled(), which is literally - // `return hasSyncEnabled()`, and showSubscribeButton was its exact negation — + // was a tautology — showSubscribeButton was the exact negation of allowStream, // so the else branch was unreachable and both it and showSubscribeButton are - // gone. If hasStreamingEnabled() ever stops aliasing hasSyncEnabled(), the - // gating here needs revisiting. + // gone. The entitlement question lives inside the button instead: allowStream + // is hasStreamingEnabled() (anyone who has ever paid), and SynchronizeButton + // routes to goToSubscribe() when it is false. HStack(spacing: 12) { SmallDownloadButton SynchronizeButton diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 0141c8607..e9210f326 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -266,9 +266,12 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { let asset: AVURLAsset - if isMissingLocally, let externalUrl = chapter.externalUrl { + if isMissingLocally, hasStreamingEnabled(), let externalUrl = chapter.externalUrl { // Media-server chapters ALWAYS stream from their external URL — a forced refresh - // must not reroute them to the cloud/S3 presign path. No metadata is loaded here: + // must not reroute them to the cloud/S3 presign path. The entitlement is checked HERE + // rather than only at import: the rows outlive the subscription that created them, and + // the stream reaches the user's own server, so nothing server-side can gate it. + // No metadata is loaded here: // the length comes from the server at import time (`VirtualImportPipeline` refuses // an item without one), so there is nothing a round trip to the stream could add. // `AVURLAssetHTTPHeaderFieldsKey` is undocumented, but it is the only way to attach diff --git a/BookPlayerTests/Mocks/AccountServiceMock.swift b/BookPlayerTests/Mocks/AccountServiceMock.swift index 27e093477..b5515424d 100644 --- a/BookPlayerTests/Mocks/AccountServiceMock.swift +++ b/BookPlayerTests/Mocks/AccountServiceMock.swift @@ -32,6 +32,13 @@ class AccountServiceMock: AccountServiceProtocol { return false } + /// Settable so a test can model a lapsed subscriber — paid once, no longer subscribed. + var hasEverSubscribedValue = false + + func hasEverSubscribed() -> Bool { + return hasEverSubscribedValue + } + func getSecondOnboarding() async throws -> T { throw BookPlayerError.cancelledTask } diff --git a/BookPlayerTests/PlayerManagerTests.swift b/BookPlayerTests/PlayerManagerTests.swift index f789174fe..364a97385 100644 --- a/BookPlayerTests/PlayerManagerTests.swift +++ b/BookPlayerTests/PlayerManagerTests.swift @@ -17,6 +17,10 @@ import XCTest class PlayerManagerTests: XCTestCase { var playbackServiceMock: PlaybackServiceProtocolMock! var syncServiceMock: SyncServiceProtocolMock! + /// Read live by `sut`'s entitlement closure. A test flips this rather than building a second + /// `PlayerManager`: two of them means two AVPlayers, and the one going out of scope takes its + /// still-registered periodic time observer with it, which aborts the process. + var streamingEnabled = true var sut: PlayerManager! override func setUp() { @@ -38,9 +42,9 @@ class PlayerManagerTests: XCTestCase { speedService: SpeedServiceProtocolMock(), shakeMotionService: ShakeMotionServiceProtocolMock(), widgetReloadService: WidgetReloadService(), - // Entitled, so nothing here is suppressed by tier; the item half of the rule is - // covered by MediaServersShortcutTests against PlayableChapter. - hasStreamingEnabled: { true } + // Entitled by default, so nothing here is suppressed by tier; the item half of the rule + // is covered by MediaServersShortcutTests against PlayableChapter. + hasStreamingEnabled: { [weak self] in self?.streamingEnabled ?? true } ) } @@ -158,6 +162,42 @@ class PlayerManagerTests: XCTestCase { ) } + /// The gate that makes the entitlement enforceable at all: before it, the external branch + /// had no check, so a row that outlived its subscription kept streaming. + /// + /// `syncService.isActive` is forced true only to make the diversion observable — in + /// production it implies an active pro/lite, which implies streaming access, so the two can + /// never disagree this way. What is being pinned is that the external branch is skipped. + @MainActor + func testAnUnentitledUserDoesNotStreamAnExternalChapter() async throws { + streamingEnabled = false + syncServiceMock.isActive = true + // Fail the presign through the CLOSURE, not `ThrowableError`: the generated mock throws + // before it increments its call count, which would make the assertion below unfalsifiable. + // `RemoteFileURL` is decode-only, so returning a stub response isn't an option. + syncServiceMock.getRemoteFileURLsOfForTypeClosure = { _, _, _ in + throw BookPlayerError.cancelledTask + } + let chapter = PlayableChapter( + title: "test chapter", + author: "test author", + start: 0, + duration: 100, + relativePath: "no-such-file.m4b", + remoteURL: nil, + externalURL: URL(string: "https://jelly.example.com/stream"), + index: 1 + ) + + _ = try? await sut.loadPlayerItem(for: chapter, forceRefreshURL: false) + + XCTAssertEqual( + syncServiceMock.getRemoteFileURLsOfForTypeCallsCount, + 1, + "without streaming access the external branch is skipped, so the load falls through it" + ) + } + /// Branch order in `loadPlayerItem`: a media-server chapter streams from its own URL even /// when the caller forces a refresh. Inverting the external and cloud branches would send /// a Jellyfin/ABS book to the S3 presign endpoint, which has nothing to hand back for it. diff --git a/BookPlayerTests/Services/AccountServiceTests.swift b/BookPlayerTests/Services/AccountServiceTests.swift index e10931b15..4f1605b54 100644 --- a/BookPlayerTests/Services/AccountServiceTests.swift +++ b/BookPlayerTests/Services/AccountServiceTests.swift @@ -88,3 +88,51 @@ class AccountServiceTests: XCTestCase { XCTAssert(try keychainMock.get(.token) == nil) } } + +// MARK: - Streaming access + +/// Media-server streaming is granted to anyone who has EVER paid, so the rule has to answer +/// correctly for a history rather than for the current subscription. +final class StreamingAccessTests: XCTestCase { + func testAnUnrefundedSubscriptionCounts() { + XCTAssertTrue(AccountService.hasUnrefundedSubscription(refundDates: [nil])) + } + + func testARefundOnlyHistoryDoesNot() { + XCTAssertFalse(AccountService.hasUnrefundedSubscription(refundDates: [Date()])) + } + + /// The reason this reads the whole dictionary instead of `getSubscriptionInfo(from:)`, which + /// breaks on the first `PricingOption` match: a refunded pro alongside a legitimately lapsed + /// lite must still grant access, whichever one the enum happens to list first. + func testARefundAlongsideAGenuineSubscriptionStillCounts() { + XCTAssertTrue(AccountService.hasUnrefundedSubscription(refundDates: [Date(), nil])) + XCTAssertTrue(AccountService.hasUnrefundedSubscription(refundDates: [nil, Date()])) + } + + func testNoPurchaseHistoryDoesNot() { + XCTAssertFalse(AccountService.hasUnrefundedSubscription(refundDates: [])) + } + + // MARK: composing the three clauses + + func testAnyOneClauseGrantsAccess() { + XCTAssertTrue(AccountService.resolveStreamingAccess(hasPlusAccess: true, hasEverSubscribed: false, donationMade: false)) + XCTAssertTrue(AccountService.resolveStreamingAccess(hasPlusAccess: false, hasEverSubscribed: true, donationMade: false)) + XCTAssertTrue(AccountService.resolveStreamingAccess(hasPlusAccess: false, hasEverSubscribed: false, donationMade: true)) + } + + /// The donation clause is read separately from `hasPlusAccess()` for this case: that method + /// returns EARLY on a refunded pro/lite, so a user who tipped and later had a separate + /// subscription refunded would be denied by the first two clauses alone. + func testATipSurvivesARefundedSubscription() { + XCTAssertTrue( + AccountService.resolveStreamingAccess(hasPlusAccess: false, hasEverSubscribed: false, donationMade: true), + "an unrefunded one-time payment is still having paid" + ) + } + + func testNothingPaidDeniesAccess() { + XCTAssertFalse(AccountService.resolveStreamingAccess(hasPlusAccess: false, hasEverSubscribed: false, donationMade: false)) + } +} diff --git a/BookPlayerTests/Services/PreferencesSyncServiceTests.swift b/BookPlayerTests/Services/PreferencesSyncServiceTests.swift index 0172f2652..4068c1053 100644 --- a/BookPlayerTests/Services/PreferencesSyncServiceTests.swift +++ b/BookPlayerTests/Services/PreferencesSyncServiceTests.swift @@ -615,6 +615,7 @@ private final class SyncToggleAccountStub: AccountServiceProtocol { func hasSyncEnabled() -> Bool { syncEnabled } func hasPlusAccess() -> Bool { syncEnabled } + func hasEverSubscribed() -> Bool { false } func hasAccount() -> Bool { false } func getAccountId() -> String? { nil } func getAccount() -> Account? { nil } diff --git a/Shared/Services/Account/AccountService.swift b/Shared/Services/Account/AccountService.swift index f029588f3..703429981 100644 --- a/Shared/Services/Account/AccountService.swift +++ b/Shared/Services/Account/AccountService.swift @@ -69,6 +69,8 @@ public protocol AccountServiceProtocol { func hasAccount() -> Bool func hasSyncEnabled() -> Bool func hasPlusAccess() -> Bool + /// Whether the user holds, or ever held, a subscription they did not get refunded. + func hasEverSubscribed() -> Bool @discardableResult func createAccount(donationMade: Bool) -> Account @@ -225,6 +227,44 @@ public final class AccountService: AccountServiceProtocol { return getAccount()?.donationMade == true } + /// Whether the user holds, or ever held, a subscription they did not get refunded — the + /// "has paid at some point" half of streaming access, which outlives the subscription. + /// + /// Family-shared and sandbox rows would also qualify, since neither carries a refund date. + /// Neither is filtered: every product in `IAP-Configuration.storekit` is + /// `familyShareable: false`, and sandbox subscriptions only reach developers and QA + /// (purchases are disabled on TestFlight via `AppEnvironment.isPurchaseEnabled`). + /// + /// Reads `subscriptionsByProductIdentifier` directly rather than going through + /// `getSubscriptionInfo(from:)`: that helper breaks on the first `PricingOption` match, so it + /// answers about ONE subscription chosen by enum order, and would deny someone who had a + /// refunded pro alongside a legitimately lapsed lite. Reading the dictionary also covers a + /// legacy product id that predates the enum. + public func hasEverSubscribed() -> Bool { + guard let cachedInfo = Purchases.shared.cachedCustomerInfo else { return false } + + return Self.hasUnrefundedSubscription( + refundDates: cachedInfo.subscriptionsByProductIdentifier.values.map(\.refundedAt) + ) + } + + /// The streaming rule, taking plain values so the composition is testable: the three inputs + /// come from RevenueCat and CoreData, neither of which a unit test can stand up. + static func resolveStreamingAccess( + hasPlusAccess: Bool, + hasEverSubscribed: Bool, + donationMade: Bool + ) -> Bool { + hasPlusAccess || hasEverSubscribed || donationMade + } + + /// The rule behind `hasEverSubscribed()`, taking the refund dates rather than the + /// subscriptions: `SubscriptionInfo`'s initializer is internal to RevenueCat, so a test + /// cannot build one. + static func hasUnrefundedSubscription(refundDates: [Date?]) -> Bool { + refundDates.contains { $0 == nil } + } + public func getAccessLevel() -> AccessLevel { // The pro entitlement is checked explicitly first: a user holding BOTH pro and lite // (e.g. mid-crossgrade) must resolve to the higher tier, not fall through to lite. @@ -581,10 +621,22 @@ public final class AccountService: AccountServiceProtocol { extension AccountServiceProtocol { - /// Whether media-server STREAMING (virtual imports) is available: the lite tier's headline - /// feature, and pro is a superset of lite — a pro-only subscriber must never lose it. - /// Protocol extension (not a requirement) so the Sourcery mocks need no regeneration. + /// Whether media-server streaming is available: anyone who has EVER paid, which is broader + /// than `hasSyncEnabled()` on purpose. Streaming reaches the user's own Jellyfin/AudiobookShelf + /// and never our servers, so it survives a subscription ending — while sync, S3 and the + /// progress pull stay behind an active lite/pro subscription. + /// + /// The three clauses are each load-bearing: + /// - `hasPlusAccess()` — an active tier, or a one-time tip while its `plus` entitlement holds. + /// - `hasEverSubscribed()` — a subscription that expired without being refunded. + /// - `donationMade` — a tip, read directly rather than through `hasPlusAccess()`, which + /// returns EARLY on a refunded pro/lite and would otherwise deny someone who tipped and + /// later had a separate subscription refunded. public func hasStreamingEnabled() -> Bool { - return hasSyncEnabled() + return AccountService.resolveStreamingAccess( + hasPlusAccess: hasPlusAccess(), + hasEverSubscribed: hasEverSubscribed(), + donationMade: getAccount()?.donationMade == true + ) } } From 3f60b947f905c365eb4802f337b718719f3794d3 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 17 Sep 2026 09:04:16 -0500 Subject: [PATCH 134/172] revert: drop the subscription tier badge from the profile card MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The badge showed the user's tier as a pill next to their email on the profile card. It went in with the rebase and never existed on develop, and it is the only place in the app that put a translated tier name on screen. Everywhere else a tier is named to the user it is an untranslated brand literal — "BookPlayer Pro" in the settings banner, the profile callout, the perks list and both login screens — so the four `subscription_tier_*_title` keys would have shipped a translated "Pro" sitting next to an untranslated "BookPlayer Pro" in 27 locales. They had no translations yet, so dropping them costs nothing and saves the translators a round. `ProfileCardView` and `ProfileCardSectionView` are byte-identical to develop again, `SubscriptionPillView` is gone, and `AccessLevel.localizedTitle` goes with it — it had no other caller. The enum itself and every gating site that compares its cases are untouched. --- BookPlayer.xcodeproj/project.pbxproj | 4 --- BookPlayer/Base.lproj/Localizable.strings | 4 --- .../Profile/ProfileCardSectionView.swift | 2 +- .../Profile/Views/ProfileCardView.swift | 4 --- .../Profile/Views/SubscriptionPillView.swift | 27 ------------------- BookPlayer/en.lproj/Localizable.strings | 4 --- Shared/Services/Account/AccountService.swift | 10 ------- 7 files changed, 1 insertion(+), 54 deletions(-) delete mode 100644 BookPlayer/Profile/Profile/Views/SubscriptionPillView.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index ec71d2614..f52963785 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -680,7 +680,6 @@ 9586CECD8FB418C6CFB0A7DD /* IntegrationLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C407B5BD19D3CF9CC64EC7 /* IntegrationLibraryView.swift */; }; 98BA9BA4D6A94BC8BCCE5F8B /* IntegrationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D9D68F735D2519CDBC18495 /* IntegrationSettingsView.swift */; }; 990442102F889201007E2A44 /* ExternalSyncInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */; }; - 990442142F894DDB007E2A44 /* SubscriptionPillView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */; }; 990775772FF33BD700E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 990775762FF33BD700E35FAE /* Get */; }; 990775792FF33BE100E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 990775782FF33BE100E35FAE /* Get */; }; 9907757C2FF33C0C00E35FAE /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 9907757B2FF33C0C00E35FAE /* Kingfisher */; }; @@ -1771,7 +1770,6 @@ 8DA0C0229963991F8CE1E941 /* IntegrationConnectionFlowView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionFlowView.swift; sourceTree = ""; }; 8FBF775DDE66D0AA08818D45 /* LibraryOptionsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LibraryOptionsView.swift; sourceTree = ""; }; 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalSyncInfoView.swift; sourceTree = ""; }; - 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionPillView.swift; sourceTree = ""; }; 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncOperation.swift; sourceTree = ""; }; 9911FBAE2F71D03100DC9A2B /* SyncQueueService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueService.swift; sourceTree = ""; }; 9911FBB12F71E54600DC9A2B /* SyncQueueRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueRepository.swift; sourceTree = ""; }; @@ -3708,7 +3706,6 @@ 9F5F13662978D9B800F061A0 /* Views */ = { isa = PBXGroup; children = ( - 990442132F894DD5007E2A44 /* SubscriptionPillView.swift */, 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */, 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */, 9F5F13452977A06300F061A0 /* ProfileCardView.swift */, @@ -4973,7 +4970,6 @@ 9F5011F92A6580800075FEBA /* ShakeMotionService.swift in Sources */, 634BA5932C160B890015314D /* LoadingBar.swift in Sources */, 9F64C6242793C3DA00B2493C /* PlayerControlsViewModel.swift in Sources */, - 990442142F894DDB007E2A44 /* SubscriptionPillView.swift in Sources */, 63B4A3C22E92A87C00784A22 /* BookmarksFileTransferable.swift in Sources */, 6356F9B52AC7CC5600B7A027 /* CancelSleepTimerIntent.swift in Sources */, 6319089B2E335196009249C1 /* ContributorsListView.swift in Sources */, diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index a4ac6937c..55f4e2de1 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -557,9 +557,5 @@ We're working hard on providing a seamless experience, if possible, please conta "external_sync_benefit_sync_subtitle" = "Your listening progress stays perfectly synced with your server and across all your devices."; "external_sync_info_title" = "Stream & Sync"; "queued_tasks_title" = "Queued Tasks"; -"subscription_tier_free_title" = "Free"; -"subscription_tier_plus_title" = "Plus"; -"subscription_tier_lite_title" = "Lite"; -"subscription_tier_pro_title" = "Pro"; "info_title" = "Info"; "integration_error_missing_connection" = "This book streams from your media server. Connect it in Settings to download or play it."; diff --git a/BookPlayer/Profile/Profile/ProfileCardSectionView.swift b/BookPlayer/Profile/Profile/ProfileCardSectionView.swift index f46423337..ba1ee56f4 100644 --- a/BookPlayer/Profile/Profile/ProfileCardSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileCardSectionView.swift @@ -18,7 +18,7 @@ struct ProfileCardSectionView: View { var body: some View { ThemedSection { Button(action: action) { - ProfileCardView(email: accountService.account.email, sub: accountService.accessLevel.localizedTitle, subColor: theme.secondarySystemBackgroundColor) + ProfileCardView(email: accountService.account.email) } } } diff --git a/BookPlayer/Profile/Profile/Views/ProfileCardView.swift b/BookPlayer/Profile/Profile/Views/ProfileCardView.swift index 1a4cd8863..697dddbe9 100644 --- a/BookPlayer/Profile/Profile/Views/ProfileCardView.swift +++ b/BookPlayer/Profile/Profile/Views/ProfileCardView.swift @@ -16,8 +16,6 @@ struct ProfileCardView: View { var cornerRadius: CGFloat = 10 var email: String = "" - var sub: String? - var subColor: Color? @EnvironmentObject var theme: ThemeViewModel var titleAccessibilityLabel: String { @@ -63,8 +61,6 @@ struct ProfileCardView: View { Text(status) .bpFont(.subheadline) .foregroundStyle(theme.secondaryColor) - } else if let sub, let subColor { - SubscriptionPillView(title: sub, backgroundColor: subColor, foregroundColor: theme.secondaryColor) } } diff --git a/BookPlayer/Profile/Profile/Views/SubscriptionPillView.swift b/BookPlayer/Profile/Profile/Views/SubscriptionPillView.swift deleted file mode 100644 index ffa5adb66..000000000 --- a/BookPlayer/Profile/Profile/Views/SubscriptionPillView.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// SubscriptionPillView.swift -// BookPlayer -// -// Created by Pedro Iñiguez on 10/4/26. -// Copyright © 2026 BookPlayer LLC. All rights reserved. -// - -import SwiftUI - -struct SubscriptionPillView: View { - let title: String - let backgroundColor: Color - let foregroundColor: Color - - var body: some View { - Text(title) - .bpFont(.caption) - // The padding here dictates the thickness and width of the pill - .padding(.horizontal, 8) - .padding(.vertical, 4) - .background(backgroundColor) - .foregroundColor(foregroundColor) - // This is what makes it a perfect pill shape - .clipShape(Capsule()) - } -} diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 7fbe657bb..06995c3f2 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -556,9 +556,5 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "external_sync_benefit_sync_subtitle" = "Your listening progress stays perfectly synced with your server and across all your devices."; "external_sync_info_title" = "Stream & Sync"; "queued_tasks_title" = "Queued Tasks"; -"subscription_tier_free_title" = "Free"; -"subscription_tier_plus_title" = "Plus"; -"subscription_tier_lite_title" = "Lite"; -"subscription_tier_pro_title" = "Pro"; "info_title" = "Info"; "integration_error_missing_connection" = "This book streams from your media server. Connect it in Settings to download or play it."; diff --git a/Shared/Services/Account/AccountService.swift b/Shared/Services/Account/AccountService.swift index 703429981..3737a951e 100644 --- a/Shared/Services/Account/AccountService.swift +++ b/Shared/Services/Account/AccountService.swift @@ -31,16 +31,6 @@ public enum AccessLevel: String, CaseIterable, Identifiable { case free, plus, lite, pro public var id: String { rawValue } - - /// User-facing tier name — the raw enum value is an implementation detail and never localized. - public var localizedTitle: String { - switch self { - case .free: return "subscription_tier_free_title".localized - case .plus: return "subscription_tier_plus_title".localized - case .lite: return "subscription_tier_lite_title".localized - case .pro: return "subscription_tier_pro_title".localized - } - } } extension AccountError: LocalizedError { From 20eb0b047606b94fd6ed8dc08607ceef6be30ef6 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 17 Sep 2026 09:20:50 -0500 Subject: [PATCH 135/172] revert: let AVFoundation choose the streaming buffer depth MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `preferredForwardBufferDuration` defaults to 0, which does not mean "no buffering" — it means the player picks a level appropriate for the content. Apple is explicit that a low value "will increase the chance that playback will stall and re-buffer". Audiobooks are long-form and linear, streamed here from the user's own server over whatever link reaches it, so a fixed 20-second ceiling is the wrong side of that trade: a tunnel hiccup longer than the remaining buffer stalls playback where the adaptive default would have ridden through it. The condition was wrong besides. `chapter.externalUrl != nil` is not "we just built a streaming asset" — `PlaybackService` fills `externalUrl` from the resource row and a matching connection without consulting the filesystem, so a DOWNLOADED media-server book still carries one and was having a streaming buffer hint applied to a local file. The same happened whenever the entitlement check sent playback down the cloud or local branch. The cloud/S3 streaming path never set this and has always used the default; both streaming paths now agree. --- BookPlayer/Player/PlayerManager.swift | 5 ----- 1 file changed, 5 deletions(-) diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index e9210f326..019ca4554 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -297,11 +297,6 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { self.playerItem = AVPlayerItem(asset: asset) self.playerItem?.audioTimePitchAlgorithm = .timeDomain - if chapter.externalUrl != nil { - // Buffer a reasonable amount for streaming (20 seconds) - self.playerItem?.preferredForwardBufferDuration = 20 - } - return self.currentItem?.currentChapter ?? chapter } From ddfe34c78aa89672d1709278cf904a90b6dbb127 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 17 Sep 2026 12:38:58 -0500 Subject: [PATCH 136/172] fix: playback failures reach the surface the user is actually on MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A failed playback alert went through `WindowHelper.activeWindow`, which looks for a foregroundActive UIWindowScene. CarPlay is a CPTemplateApplicationScene and a locked phone has no active window scene, so the alert — OK button and all — was dropped on the floor. The case that matters: you get in the car, tap a book backed by your home Jellyfin, you're off the home network, and playback just stops with no explanation. The PR made that worse by adding a Media Servers shortcut to the one surface that could not show it. Nothing routed these before. `AlertPresenter` is picked by hand at each call site, and CarPlay's own error path works only because `playItem` writes `self`. That path covers synchronous throws only: `loadPlayer` ends in a fire-and-forget `playerManager.load`, so CarPlay's catch has already reported success by the time the metadata task or the AVPlayerItem KVO status reports a failure. Everything after that handoff belongs to PlayerManager, which was never wired in. ResumeOfferArbiter already owned "which surface may talk to the user", so it becomes PromptSurfaceArbiter and owns this too — a second object holding a second copy of that rule is the drift it was built to prevent. Failures follow the same rule: the car only when the app is not foreground-active. A failure raised from the car while the app happens to be foregrounded therefore lands on the phone, which is deliberate — CPAlertTemplate is modal on the dashboard until someone taps it, and a passenger tapping around in the app must not block the driver's screen. The car closes the gap with its own copy instead of a second alert, and it never shows an error code or an NSError dump. Presenters return whether they actually presented. CarPlay permits one presented template at a time, so an alert already on screen would have made this one fail silently; `canPresentTemplate` reports that and the prompt falls back to the phone. Not @discardableResult — discarding that answer is the bug. The phone side moves off UIKit onto PlayerState, which also fixes the backgrounded drop: state survives until the user returns, where a missing key window was simply gone. Both alerts now live in one PlaybackAlerts modifier applied at the two attachment points a fullScreenCover forces, so the site count stays at two however many alerts the player grows. SwiftUI presents one alert per view, so a pending failure suppresses the resume offer rather than racing it — the offer returns once the error is dismissed. PlayerManager hops to main before building the failure, not just before presenting it: the reason derivation reaches hasStreamingEnabled(), which reads donationMade through a fetch on the view context, and the KVO site is not guaranteed to be on the main thread. Keeping the hop inside PlayerManager means no injector has to remember it. Two behaviour changes worth calling out. Prompts no longer transfer between the open and closed player — a question asked against a closed player that reappears over an open one has lost the context that made it make sense — and that now applies to the resume offer as well. And a downloaded book is never blamed on a missing server: hasUnresolvedExternalHost stays true on a book you already have on disk from a server you later removed, so needsMediaServer() gates both media-server reasons. Localization: two new CarPlay strings. The fallback deliberately gives no media-server advice, since it is also what a local file that won't open gets. --- BookPlayer.xcodeproj/project.pbxproj | 20 +- .../BookPlayerWatch (Complication).xcscheme | 2 - .../xcschemes/BookPlayerWatch.xcscheme | 2 - .../xcschemes/BookPlayerWidgetsWatch.xcscheme | 2 - BookPlayer/Base.lproj/Localizable.strings | 2 + BookPlayer/MainView.swift | 43 +- BookPlayer/Player/PlayerManager.swift | 108 ++++-- BookPlayer/Services/CarPlayManager.swift | 46 ++- BookPlayer/Services/PlaybackFailure.swift | 53 +++ .../Services/PromptSurfaceArbiter.swift | 109 ++++++ BookPlayer/Services/ResumeOfferArbiter.swift | 71 ---- BookPlayer/Utils/AppServices.swift | 12 +- BookPlayer/Utils/PlaybackAlerts.swift | 85 ++++ BookPlayer/Utils/PlayerState.swift | 33 +- BookPlayer/en.lproj/Localizable.strings | 2 + BookPlayerTests/ImportOperationTests.swift | 76 ---- BookPlayerTests/PlayerManagerTests.swift | 88 ++++- .../PromptSurfaceArbiterTests.swift | 366 ++++++++++++++++++ 18 files changed, 897 insertions(+), 223 deletions(-) create mode 100644 BookPlayer/Services/PlaybackFailure.swift create mode 100644 BookPlayer/Services/PromptSurfaceArbiter.swift delete mode 100644 BookPlayer/Services/ResumeOfferArbiter.swift create mode 100644 BookPlayer/Utils/PlaybackAlerts.swift create mode 100644 BookPlayerTests/PromptSurfaceArbiterTests.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index f52963785..3996fefea 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -562,7 +562,10 @@ 63B4A3C42E93749300784A22 /* DynamicAccessibilityLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B4A3C32E93749300784A22 /* DynamicAccessibilityLabel.swift */; }; 63B4A3C62E93858C00784A22 /* PlayerControlsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */; }; 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */; }; - D071ABD44684949C58C7D8D0 /* ResumeOfferArbiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B6A047D0689D9E2E2D9749 /* ResumeOfferArbiter.swift */; }; + D071ABD44684949C58C7D8D0 /* PromptSurfaceArbiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */; }; + 9AB6B44F84D195FCCF7A4F9F /* PromptSurfaceArbiterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D4833D717C7B97F7B5DFDC5 /* PromptSurfaceArbiterTests.swift */; }; + C0C40794A90EEED394B4C957 /* PlaybackAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3B31C1E62A380C33C60FF9B /* PlaybackAlerts.swift */; }; + 5823F9DE917AE83D3C4DC04E /* PlaybackFailure.swift in Sources */ = {isa = PBXBuildFile; fileRef = F05D3B1199FC741AB2FDED67 /* PlaybackFailure.swift */; }; 63B760E82C31FFC600AA98C7 /* SupportFlowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B760E72C31FFC600AA98C7 /* SupportFlowCoordinator.swift */; }; 63B760F72C32734000AA98C7 /* SecondOnboardingResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B760F62C32734000AA98C7 /* SecondOnboardingResponse.swift */; }; 63B760F92C32738E00AA98C7 /* StoryAccountSubscriptionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B760F82C32738E00AA98C7 /* StoryAccountSubscriptionService.swift */; }; @@ -1667,7 +1670,10 @@ 63B4A3C32E93749300784A22 /* DynamicAccessibilityLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicAccessibilityLabel.swift; sourceTree = ""; }; 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerControlsView.swift; sourceTree = ""; }; 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListSyncRefreshService.swift; sourceTree = ""; }; - 42B6A047D0689D9E2E2D9749 /* ResumeOfferArbiter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResumeOfferArbiter.swift; sourceTree = ""; }; + 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptSurfaceArbiter.swift; sourceTree = ""; }; + 3D4833D717C7B97F7B5DFDC5 /* PromptSurfaceArbiterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptSurfaceArbiterTests.swift; sourceTree = ""; }; + F3B31C1E62A380C33C60FF9B /* PlaybackAlerts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaybackAlerts.swift; sourceTree = ""; }; + F05D3B1199FC741AB2FDED67 /* PlaybackFailure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaybackFailure.swift; sourceTree = ""; }; 63B760E72C31FFC600AA98C7 /* SupportFlowCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportFlowCoordinator.swift; sourceTree = ""; }; 63B760F62C32734000AA98C7 /* SecondOnboardingResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondOnboardingResponse.swift; sourceTree = ""; }; 63B760F82C32738E00AA98C7 /* StoryAccountSubscriptionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryAccountSubscriptionService.swift; sourceTree = ""; }; @@ -2464,6 +2470,7 @@ 69343D34213A079B000C425E /* Services */, 63833DF82AAC134600496246 /* PerformanceTests */, 4163E312214AC43000072AA2 /* ImportOperationTests.swift */, + 3D4833D717C7B97F7B5DFDC5 /* PromptSurfaceArbiterTests.swift */, 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */, 098A98893A8783E8BE1C5420 /* ListSyncRefreshServiceTests.swift */, EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */, @@ -3342,7 +3349,8 @@ 4193E201243A91AE004D6A82 /* ActionParserService.swift */, 9F82DF9B27DFE46B001B0EA8 /* PhoneWatchConnectivityService.swift */, 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */, - 42B6A047D0689D9E2E2D9749 /* ResumeOfferArbiter.swift */, + 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */, + F05D3B1199FC741AB2FDED67 /* PlaybackFailure.swift */, 8A9D0D2F2CD0E06F007A924D /* SingleFileDownloadService.swift */, ); path = Services; @@ -3905,6 +3913,7 @@ 635771D52F378EE800BB5F59 /* ThemedSection.swift */, 0FC8B923A5506F865253B97C /* AppServices.swift */, 4BB8BFBB9A63469069F0D44A /* WindowHelper.swift */, + F3B31C1E62A380C33C60FF9B /* PlaybackAlerts.swift */, ); path = Utils; sourceTree = ""; @@ -5096,6 +5105,7 @@ 9FD8D95829DC53750074C2D8 /* CoreServices.swift in Sources */, 5163037679ED3EE0D1866A8F /* AppServices.swift in Sources */, F50163BEFB92FB6B1B778C5E /* WindowHelper.swift in Sources */, + C0C40794A90EEED394B4C957 /* PlaybackAlerts.swift in Sources */, 63E54C342D50576C0040355D /* TipJarView.swift in Sources */, 63AD93DD2E3C7F5A0077E73A /* ProfileProCalloutSectionView.swift in Sources */, 631908B62E36B007009249C1 /* SettingsAppIconsView.swift in Sources */, @@ -5172,7 +5182,8 @@ 99329DB72F3AA8F6003F8E73 /* PlayControlsRowView.swift in Sources */, 416AAC3323F51031005AD04F /* LocalizableButton.swift in Sources */, 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */, - D071ABD44684949C58C7D8D0 /* ResumeOfferArbiter.swift in Sources */, + D071ABD44684949C58C7D8D0 /* PromptSurfaceArbiter.swift in Sources */, + 5823F9DE917AE83D3C4DC04E /* PlaybackFailure.swift in Sources */, 416A297D2568671F00605395 /* AVPlayer+BookPlayer.swift in Sources */, 634BA5A52C176B5A0015314D /* StoryActionView.swift in Sources */, 8A9D0D302CD0E074007A924D /* SingleFileDownloadService.swift in Sources */, @@ -5260,6 +5271,7 @@ 9F8A9A5E27AC3F8C0093AA1C /* PlayableItemTests.swift in Sources */, 232F1DA50BB33EB5A629B8B7 /* PlayableChapterTests.swift in Sources */, 4163E313214AC43000072AA2 /* ImportOperationTests.swift in Sources */, + 9AB6B44F84D195FCCF7A4F9F /* PromptSurfaceArbiterTests.swift in Sources */, 28EEB2588DE468A6B8C15272 /* RefreshTaskOperationTests.swift in Sources */, 3EBBB264D481A0F2DF48763E /* ListSyncRefreshServiceTests.swift in Sources */, FDA22898B1CD320A1D8F6C52 /* QueuedTaskDisplayTests.swift in Sources */, diff --git a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch (Complication).xcscheme b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch (Complication).xcscheme index 7b33e39cb..1bee3baed 100644 --- a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch (Complication).xcscheme +++ b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch (Complication).xcscheme @@ -70,7 +70,6 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "4140EA2E227288ED0009F794" BuildableName = "BookPlayerWatch.app" - BlueprintName = "BookPlayerWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> @@ -88,7 +87,6 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "4140EA2E227288ED0009F794" BuildableName = "BookPlayerWatch.app" - BlueprintName = "BookPlayerWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> diff --git a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch.xcscheme b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch.xcscheme index 3bb22c7a6..017f6ad6f 100644 --- a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch.xcscheme +++ b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWatch.xcscheme @@ -69,7 +69,6 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "4140EA2E227288ED0009F794" BuildableName = "BookPlayerWatch.app" - BlueprintName = "BookPlayerWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> @@ -86,7 +85,6 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "4140EA2E227288ED0009F794" BuildableName = "BookPlayerWatch.app" - BlueprintName = "BookPlayerWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> diff --git a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWidgetsWatch.xcscheme b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWidgetsWatch.xcscheme index a2b1a2fb5..a893f7eac 100644 --- a/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWidgetsWatch.xcscheme +++ b/BookPlayer.xcodeproj/xcshareddata/xcschemes/BookPlayerWidgetsWatch.xcscheme @@ -76,7 +76,6 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "63005A262AE7FD8000A4CA2C" BuildableName = "BookPlayerWidgetsWatch.appex" - BlueprintName = "BookPlayerWidgetsWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> @@ -119,7 +118,6 @@ BuildableIdentifier = "primary" BlueprintIdentifier = "63005A262AE7FD8000A4CA2C" BuildableName = "BookPlayerWidgetsWatch.appex" - BlueprintName = "BookPlayerWidgetsWatch" ReferencedContainer = "container:BookPlayer.xcodeproj"> diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 55f4e2de1..11ac535cc 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -559,3 +559,5 @@ We're working hard on providing a seamless experience, if possible, please conta "queued_tasks_title" = "Queued Tasks"; "info_title" = "Info"; "integration_error_missing_connection" = "This book streams from your media server. Connect it in Settings to download or play it."; +"carplay_playback_failed_message" = "Can't play this book. Open BookPlayer on your phone for details."; +"carplay_missing_connection_message" = "This book streams from a media server that isn't set up on this device. Open BookPlayer on your phone to connect it."; diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index 8f9f482de..fdf6e1ce7 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -109,29 +109,36 @@ struct MainView: View { ) } .presentationBackground(.clear) - .alert("resume_playback_alert_title".localized, isPresented: playerState.showResumePopupBinding(whenPlayerVisible: true)) { - Button("yes_button".localized) { playerManager.jumpTo(playerState.remotePlayTime ?? 0)} - Button("ignore_button".localized, role: .cancel) { } - } message: { - Text(String(format: "resume_playback_alert_message".localized, TimeParser.formatTime(playerState.remotePlayTime ?? 0))) - } + .playbackAlerts(playerState: playerState, playerManager: playerManager, whenPlayerVisible: true) } - // Posted by PlayerManager when a book can't play because its media server isn't - // configured here. Lives at this level because both pieces of state it writes are - // owned above: the cover has to come down before the sheet can present, since the - // sheet is attached underneath it. + // Posted by the failure alert's Media Servers button (PlaybackAlerts) when a book can't + // play because its media server isn't configured here. Lives at this level because both + // pieces of state it writes are owned above: the cover has to come down before the sheet + // can present, since the sheet is attached underneath it. .onReceive(NotificationCenter.default.publisher(for: .showMediaServers)) { _ in playerState.isShowingPlayer = false listState.activeIntegrationSheet = .mediaServers } - // Sibling copy of the resume alert (see showResumePopupBinding): playback also starts - // with the player CLOSED — mini-player, CarPlay, remote commands, last-book restore — - // and the copy inside the cover isn't in the hierarchy then, silently dropping the prompt - .alert("resume_playback_alert_title".localized, isPresented: playerState.showResumePopupBinding(whenPlayerVisible: false)) { - Button("yes_button".localized) { playerManager.jumpTo(playerState.remotePlayTime ?? 0)} - Button("ignore_button".localized, role: .cancel) { } - } message: { - Text(String(format: "resume_playback_alert_message".localized, TimeParser.formatTime(playerState.remotePlayTime ?? 0))) + // Sibling copy (see PlaybackAlerts): playback also starts with the player CLOSED — + // mini-player, CarPlay, remote commands, last-book restore — and the copy inside the cover + // isn't in the hierarchy then, silently dropping the prompt. + .playbackAlerts(playerState: playerState, playerManager: playerManager, whenPlayerVisible: false) + // A prompt belongs to the context that raised it and is NOT handed over when the player + // opens or closes — a deliberate product decision, not a workaround. The two-copy gate + // exists so exactly one copy can present, not so a prompt can migrate: a question the user + // was asked against a closed player, re-appearing over an open one after something else + // (a widget, an intent, Siri) opened it, has lost the context that made it make sense. + // Dropping it is the conservative half of that trade, and the alert is re-raised by the + // next attempt anyway. + .onChange(of: playerState.isShowingPlayer) { + playerState.clearPrompts() + } + // A failure raised while backgrounded outlives the attempt that caused it, so playback + // succeeding in the meantime has to retire it — otherwise coming back to the app shows an + // error for something that is playing right now. Only the failure: `.bookPlayed` is what + // drives the resume prompt in the first place (ExternalProgressService subscribes to it). + .onReceive(NotificationCenter.default.publisher(for: .bookPlayed)) { _ in + playerState.pendingFailure = nil } .accessibilityAction(.magicTap) { playerManager.playPause() diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index 019ca4554..f362dda78 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -21,6 +21,10 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { /// Narrow read of the streaming entitlement (pro or lite), not the whole account /// service — the media-servers shortcut is only actionable for a tier that can stream. private let hasStreamingEnabled: () -> Bool + /// Hands a failure to whichever surface the user is on. Injected because both failure sites + /// are async and surface-agnostic — see `playbackFailure(for:title:message:)`. Always called + /// through `presentOnMain(for:title:message:)`, never directly. + private let presentFailure: (PlaybackFailure) -> Void private let syncService: SyncServiceProtocol private let speedService: SpeedServiceProtocol private let userActivityManager: UserActivityManager @@ -87,7 +91,8 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { speedService: SpeedServiceProtocol, shakeMotionService: ShakeMotionServiceProtocol, widgetReloadService: WidgetReloadServiceProtocol, - hasStreamingEnabled: @escaping () -> Bool + hasStreamingEnabled: @escaping () -> Bool, + presentFailure: @escaping (PlaybackFailure) -> Void ) { self.libraryService = libraryService self.playbackService = playbackService @@ -97,6 +102,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { self.shakeMotionService = shakeMotionService self.widgetReloadService = widgetReloadService self.hasStreamingEnabled = hasStreamingEnabled + self.presentFailure = presentFailure super.init() setupPlayerInstance() @@ -399,21 +405,60 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { hasStreamingEnabled() && chapter.needsMediaServer() } - /// The actions for a playback-failure alert: OK, plus the Media Servers shortcut when it - /// could actually fix this chapter. Shared by both failure sites so the offer can't drift - /// between the metadata path and the player-item path. - private func failureAlertActions(for chapter: PlayableChapter?) -> [BPActionItem] { - var actions = [BPActionItem.okAction] + /// A failure described for whichever surface ends up showing it. Shared by both failure + /// sites so the reason and the offer can't drift between the metadata path and the + /// player-item path. + /// + /// This only DESCRIBES the failure. Presenting it is the arbiter's job: both call sites are + /// asynchronous — a detached metadata task and a KVO status callback — so by the time either + /// fires, whichever surface asked for playback is long gone from the stack. + /// + /// Not private so the reason derivation is testable without provoking a real AVFoundation + /// failure, same as `offersMediaServers(for:)`. + func playbackFailure( + for chapter: PlayableChapter?, + title: String, + message: String? + ) -> PlaybackFailure { + /// `needsMediaServer()` gates BOTH media-server reasons, because it is the only one of the + /// two predicates that checks the filesystem: `hasUnresolvedExternalHost` is a stored flag + /// that stays true on a DOWNLOADED book whose connection was later removed. Reading it + /// first would have blamed a missing server for a local file that simply won't open, and + /// reported a reason that disagrees with `canOfferMediaServers` on the same value. + let reason: PlaybackFailure.Reason + + if let chapter, chapter.needsMediaServer() { + reason = chapter.hasUnresolvedExternalHost ? .missingConnection : .streamUnavailable + } else { + reason = .other + } - if let chapter, offersMediaServers(for: chapter) { - actions.append( - BPActionItem(title: "media_servers_title".localized) { - NotificationCenter.default.post(name: .showMediaServers, object: nil) - } + return PlaybackFailure( + reason: reason, + phoneTitle: title, + phoneMessage: message, + canOfferMediaServers: chapter.map(offersMediaServers(for:)) ?? false + ) + } + + /// The one way a failure leaves this class. Hops to main unconditionally, as the UIKit + /// presentation this replaced did: `PlayerManager` is not `@MainActor`, and the player-item + /// site is a raw KVO callback on `AVPlayerItem.status`, which AVFoundation does not promise + /// to deliver on the main thread — while every presenter writes `@Observable` state or puts + /// a template on screen. Keeping the hop here rather than in the injected closure means an + /// injector cannot forget it. + /// + /// It BUILDS the failure inside the hop, not just presents it: `playbackFailure` reaches + /// `hasStreamingEnabled()`, which reads `donationMade` through `AccountService.getAccount()` + /// — a fetch on the VIEW context. Constructing at the call site would run that fetch on + /// whatever thread KVO happened to use. The caller still resolves `chapter` itself, so the + /// snapshot is taken when the failure occurs rather than a turn later. + private func presentOnMain(for chapter: PlayableChapter?, title: String, message: String?) { + Task { @MainActor in + self.presentFailure( + self.playbackFailure(for: chapter, title: title, message: message) ) } - - return actions } func loadChapterMetadata(_ chapter: PlayableChapter, autoplay: Bool? = nil, forceRefreshURL: Bool = false) { @@ -431,10 +476,10 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { self.playbackQueued = nil self.isFetchingRemoteURL = nil self.observeStatus = false - self.showErrorAlert( + self.presentOnMain( + for: chapter, title: "\("error_title".localized) Metadata", - error.localizedDescription, - actions: failureAlertActions(for: chapter) + message: error.localizedDescription ) return } @@ -1231,7 +1276,7 @@ extension PlayerManager { /// Avoid showing any alert if playback is not queued, this could be from the initial app launch /// where we preload the player with the last played item if playbackQueued == true { - let actions = failureAlertActions(for: currentItem?.currentChapter) + let chapter = currentItem?.currentChapter if let nsError = item.error as? NSError { let errorDescription = """ @@ -1243,9 +1288,17 @@ extension PlayerManager { Additional Info \(nsError.userInfo) """ - showErrorAlert(title: "\("error_title".localized) \(nsError.code)", errorDescription, actions: actions) + presentOnMain( + for: chapter, + title: "\("error_title".localized) \(nsError.code)", + message: errorDescription + ) } else { - showErrorAlert(title: "error_title".localized, item.error?.localizedDescription, actions: actions) + presentOnMain( + for: chapter, + title: "error_title".localized, + message: item.error?.localizedDescription + ) } } @@ -1585,23 +1638,6 @@ extension PlayerManager { } } -extension PlayerManager { - private func showErrorAlert(title: String, _ message: String?, actions: [BPActionItem]) { - DispatchQueue.main.async { - let content = BPAlertContent( - title: title, - message: message, - style: .alert, - actionItems: actions - ) - - WindowHelper.activeWindow?.rootViewController? - .getTopVisibleViewController()? - .showAlert(content) - } - } -} - // MARK: - Sleep timer extension PlayerManager { private func handleSleepTimerThresholdEvent() { diff --git a/BookPlayer/Services/CarPlayManager.swift b/BookPlayer/Services/CarPlayManager.swift index 3759dd713..f4a6811df 100644 --- a/BookPlayer/Services/CarPlayManager.swift +++ b/BookPlayer/Services/CarPlayManager.swift @@ -42,7 +42,7 @@ class CarPlayManager: NSObject { self.interfaceController?.delegate = self // The arbiter exists from launch, so this can't race CoreServices on a cold start into // the car — the subscription this replaced lived in init and silently never bound there. - AppServices.shared.resumeOfferArbiter.carPlayPresenter = self + AppServices.shared.promptSurfaceArbiter.carPlayPresenter = self /// Reset connect-scoped state so a re-connect without a paired disconnect doesn't act on a stale flag self.shouldShowPlayerOnConnect = false self.setupNowPlayingTemplate() @@ -109,7 +109,7 @@ class CarPlayManager: NSObject { } func disconnect() { - AppServices.shared.resumeOfferArbiter.carPlayPresenter = nil + AppServices.shared.promptSurfaceArbiter.carPlayPresenter = nil self.interfaceController = nil self.recentTemplate = nil self.libraryTemplate = nil @@ -755,12 +755,28 @@ extension CarPlayManager: PlaybackSyncProgressDelegate { } } +extension CarPlayManager { + /// Whether a modal template would actually reach the screen: connected, and nothing already + /// presented. Reporting an optimistic `true` here would drop the prompt entirely, which is + /// the failure the surface arbiter exists to prevent. + var canPresentTemplate: Bool { + guard let interfaceController else { return false } + + return interfaceController.presentedTemplate == nil + } +} + extension CarPlayManager: ResumeOfferPresenting { - /// The car's half of the resume offer. ResumeOfferArbiter decides that the car — and only + /// The car's half of the resume offer. PromptSurfaceArbiter decides that the car — and only /// the car — asks; this only presents. No shared flag to clear: the phone never raised one /// for an offer routed here. - func presentResumeOffer(at remoteTime: TimeInterval) { - guard interfaceController != nil else { return } + /// + /// Returns false when the car cannot present, so the arbiter hands the prompt back to the + /// phone rather than dropping it. CarPlay allows ONE presented template at a time, so an + /// alert already on screen would make this one fail silently — and `presentTemplate` + /// reports that only through a completion handler we cannot answer synchronously. + func presentResumeOffer(at remoteTime: TimeInterval) -> Bool { + guard canPresentTemplate else { return false } showAlert( BPAlertContent( @@ -778,5 +794,25 @@ extension CarPlayManager: ResumeOfferPresenting { ] ) ) + + return true + } +} + +extension CarPlayManager: PlaybackFailurePresenting { + /// One line and an OK. The phone's copy prints the underlying error and offers the Media + /// Servers shortcut; neither belongs on a dashboard, so the car points at the phone instead. + func presentPlaybackFailure(_ failure: PlaybackFailure) -> Bool { + guard canPresentTemplate else { return false } + + showAlert( + BPAlertContent( + title: failure.carPlayMessage, + style: .alert, + actionItems: [BPActionItem.okAction] + ) + ) + + return true } } diff --git a/BookPlayer/Services/PlaybackFailure.swift b/BookPlayer/Services/PlaybackFailure.swift new file mode 100644 index 000000000..07dcccbcc --- /dev/null +++ b/BookPlayer/Services/PlaybackFailure.swift @@ -0,0 +1,53 @@ +// +// PlaybackFailure.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import Foundation + +/// A playback failure on its way to whichever surface the user is on. +/// +/// Carries the REASON rather than finished copy: the phone and the car word it differently and +/// offer different actions, so rendering belongs to the presenter. `PlayerManager` raises this +/// from two async paths — the metadata load and the player item's KVO status — long after the +/// caller that started playback has gone, which is why it cannot present the alert itself. +struct PlaybackFailure: Equatable { + enum Reason: Equatable { + /// No saved connection on this device matches the item's host: the server was never added + /// here, or it was removed. Adding it in Media Servers is the fix. + case missingConnection + /// A stream URL resolved and playback still failed — server unreachable, network gone, or + /// a token that no longer works. + case streamUnavailable + /// Everything else: a local file that won't open, an unrecognized AVFoundation error. + case other + } + + let reason: Reason + /// Title and body exactly as the phone has always shown them, error code and `NSError` dump + /// included — they are worth keeping for support threads. Neither reaches the car, which + /// words its own single line: a domain and a `userInfo` dump is not dashboard copy. + let phoneTitle: String + let phoneMessage: String? + /// Whether the Media Servers shortcut can actually fix this one. False when the tier cannot + /// stream at all, since adding a server would not help. + let canOfferMediaServers: Bool + + /// What the car says. One line, no error codes, and it always points at the phone — the car + /// is never where a media server gets configured. + /// + /// Gated on `canOfferMediaServers` for the same reason the phone hides its shortcut: telling + /// a tier that cannot stream to go connect a server is advice that leads nowhere. The two + /// surfaces have to agree on that, or they hold different answers to one decision. + var carPlayMessage: String { + switch reason { + case .missingConnection where canOfferMediaServers: + return "carplay_missing_connection_message".localized + case .missingConnection, .streamUnavailable, .other: + return "carplay_playback_failed_message".localized + } + } +} diff --git a/BookPlayer/Services/PromptSurfaceArbiter.swift b/BookPlayer/Services/PromptSurfaceArbiter.swift new file mode 100644 index 000000000..b7c093671 --- /dev/null +++ b/BookPlayer/Services/PromptSurfaceArbiter.swift @@ -0,0 +1,109 @@ +// +// PromptSurfaceArbiter.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import Combine +import UIKit + +/// A surface that can ask the user whether to jump to a position another device reached. +/// +/// Returns whether it actually presented: a registered CarPlay manager that cannot put a +/// template on screen has to say so, or the prompt disappears instead of falling back to the +/// phone. Deliberately NOT `@discardableResult` — discarding the answer is the bug. +@MainActor +protocol ResumeOfferPresenting: AnyObject { + func presentResumeOffer(at remoteTime: TimeInterval) -> Bool +} + +/// A surface that can tell the user playback failed. +/// +/// Takes the failure rather than a rendered alert, because the two surfaces answer it +/// differently: the phone offers the Media Servers shortcut and prints the underlying error, +/// the car shows one line and an OK, since neither configuring a server nor reading an +/// `NSError` dump is something to do while driving. +@MainActor +protocol PlaybackFailurePresenting: AnyObject { + func presentPlaybackFailure(_ failure: PlaybackFailure) -> Bool +} + +/// Decides WHICH surface talks to the user — and only one ever does. +/// +/// `ExternalProgressService` publishes remote positions; this is the single subscriber. Two +/// subscribers each applying half a rule left a gap: the car presented when the app was +/// inactive, but the coordinator had already raised the phone's flag, so a driver who ignored +/// the car alert got asked again on unlocking the phone. A prompt now belongs to whichever +/// surface received it, and the other never sees it. +/// +/// Playback failures follow the SAME rule rather than getting their own arbiter, because a +/// second object holding a second copy of "which surface may speak" is exactly the drift that +/// bug came from. +/// +/// Created eagerly next to `PlayerState`, not with `CoreServices`: CarPlay registers itself +/// here from `connect()`, which on a cold launch into the car can run before the services +/// exist. Registration and subscription are decoupled so that ordering cannot matter — the +/// previous subscription lived on `CarPlayManager.init` and silently never bound on exactly +/// that path. +@MainActor +final class PromptSurfaceArbiter { + /// Set by CarPlayManager on connect, cleared on disconnect. + weak var carPlayPresenter: (ResumeOfferPresenting & PlaybackFailurePresenting)? + + private let playerState: PlayerState + private let isAppActive: () -> Bool + private var disposeBag = Set() + + init( + playerState: PlayerState, + isAppActive: @escaping () -> Bool = { UIApplication.shared.applicationState == .active } + ) { + self.playerState = playerState + self.isAppActive = isAppActive + } + + func bind(to service: ExternalProgressService) { + service.promptablePositionPublisher + .receive(on: DispatchQueue.main) + .sink { [weak self] position in + self?.route(position) + } + .store(in: &disposeBag) + } + + /// The car only when the phone can't ask: an active app shows the SwiftUI alert, and asking + /// twice for one decision is worse than either surface asking once. + func route(_ position: ExternalPlaybackProgress) { + if presentOnCarPlay({ $0.presentResumeOffer(at: position.currentTime) }) { return } + + // Don't clobber a prompt the user is already looking at. + guard !playerState.showResumePopup else { return } + + playerState.remotePlayTime = position.currentTime + playerState.showResumePopup = true + } + + /// Same surface rule as the resume offer. The car is deliberately NOT given a copy when the + /// app is active: `CPAlertTemplate` is modal on the dashboard until someone taps it, so a + /// failure caused by a passenger tapping around in the app would block the driver's screen. + /// The cost is that a failure raised from the car while the app happens to be foregrounded + /// lands on the phone — accepted, rather than putting modal templates in front of a driver. + func routeFailure(_ failure: PlaybackFailure) { + if presentOnCarPlay({ $0.presentPlaybackFailure(failure) }) { return } + + playerState.pendingFailure = failure + } + + /// Whether the car took it. A presenter that is registered but can no longer present (its + /// interface controller went away between connect and here) reports false, and the caller + /// falls through to the phone rather than dropping the prompt on the floor. + private func presentOnCarPlay( + _ present: (ResumeOfferPresenting & PlaybackFailurePresenting) -> Bool + ) -> Bool { + guard let carPlayPresenter, !isAppActive() else { return false } + + return present(carPlayPresenter) + } +} diff --git a/BookPlayer/Services/ResumeOfferArbiter.swift b/BookPlayer/Services/ResumeOfferArbiter.swift deleted file mode 100644 index 7f9195b12..000000000 --- a/BookPlayer/Services/ResumeOfferArbiter.swift +++ /dev/null @@ -1,71 +0,0 @@ -// -// ResumeOfferArbiter.swift -// BookPlayer -// -// Copyright © 2026 BookPlayer LLC. All rights reserved. -// - -import BookPlayerKit -import Combine -import UIKit - -/// A surface that can ask the user whether to jump to a position another device reached. -@MainActor -protocol ResumeOfferPresenting: AnyObject { - func presentResumeOffer(at remoteTime: TimeInterval) -} - -/// Decides WHICH surface asks about a farther remote position — and only one ever does. -/// -/// `ExternalProgressService` publishes the position; this is the single subscriber. Two -/// subscribers each applying half a rule left a gap: the car presented when the app was -/// inactive, but the coordinator had already raised the phone's flag, so a driver who ignored -/// the car alert got asked again on unlocking the phone. An offer now belongs to whichever -/// surface received it, and the other never sees it. -/// -/// Created eagerly next to `PlayerState`, not with `CoreServices`: CarPlay registers itself -/// here from `connect()`, which on a cold launch into the car can run before the services -/// exist. Registration and subscription are decoupled so that ordering cannot matter — the -/// previous subscription lived on `CarPlayManager.init` and silently never bound on exactly -/// that path. -@MainActor -final class ResumeOfferArbiter { - /// Set by CarPlayManager on connect, cleared on disconnect. - weak var carPlayPresenter: ResumeOfferPresenting? - - private let playerState: PlayerState - private let isAppActive: () -> Bool - private var disposeBag = Set() - - init( - playerState: PlayerState, - isAppActive: @escaping () -> Bool = { UIApplication.shared.applicationState == .active } - ) { - self.playerState = playerState - self.isAppActive = isAppActive - } - - func bind(to service: ExternalProgressService) { - service.promptablePositionPublisher - .receive(on: DispatchQueue.main) - .sink { [weak self] position in - self?.route(position) - } - .store(in: &disposeBag) - } - - /// The car only when the phone can't ask: an active app shows the SwiftUI alert, and asking - /// twice for one decision is worse than either surface asking once. - func route(_ position: ExternalPlaybackProgress) { - if let carPlayPresenter, !isAppActive() { - carPlayPresenter.presentResumeOffer(at: position.currentTime) - return - } - - // Don't clobber a prompt the user is already looking at. - guard !playerState.showResumePopup else { return } - - playerState.remotePlayTime = position.currentTime - playerState.showResumePopup = true - } -} diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index 237a7a6c6..033ce60c1 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -29,14 +29,14 @@ final class AppServices: BPLogger { let playerState: PlayerState /// Eager, like playerState: CarPlay registers here from connect(), which on a cold launch /// into the car runs before CoreServices exist. Its subscription is bound in setup below. - let resumeOfferArbiter: ResumeOfferArbiter + let promptSurfaceArbiter: PromptSurfaceArbiter let reviewPromptService = ReviewPromptService() private init() { let playerState = PlayerState() self.playerState = playerState - self.resumeOfferArbiter = ResumeOfferArbiter(playerState: playerState) + self.promptSurfaceArbiter = PromptSurfaceArbiter(playerState: playerState) } // MARK: - Core Services Setup @@ -104,7 +104,11 @@ final class AppServices: BPLogger { speedService: SpeedService(libraryService: libraryService), shakeMotionService: ShakeMotionService(), widgetReloadService: WidgetReloadService(), - hasStreamingEnabled: { accountService.hasStreamingEnabled() } + hasStreamingEnabled: { accountService.hasStreamingEnabled() }, + /// Already on main: `PlayerManager` routes every failure through `presentOnMain`. + presentFailure: { [promptSurfaceArbiter] failure in + promptSurfaceArbiter.routeFailure(failure) + } ) let watchService = PhoneWatchConnectivityService( libraryService: libraryService, @@ -129,7 +133,7 @@ final class AppServices: BPLogger { let externalProgressService = ExternalProgressService() externalProgressService.setup(libraryService: libraryService, accountService: accountService) - resumeOfferArbiter.bind(to: externalProgressService) + promptSurfaceArbiter.bind(to: externalProgressService) let coreServices = CoreServices( accountService: accountService, diff --git a/BookPlayer/Utils/PlaybackAlerts.swift b/BookPlayer/Utils/PlaybackAlerts.swift new file mode 100644 index 000000000..2d6206127 --- /dev/null +++ b/BookPlayer/Utils/PlaybackAlerts.swift @@ -0,0 +1,85 @@ +// +// PlaybackAlerts.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import SwiftUI + +/// Every alert the player raises, declared once and attached twice. +/// +/// A `fullScreenCover` is its own presentation context: an alert attached beneath it cannot +/// present over it, and one attached inside it does not exist while the player is closed — +/// and playback starts (and fails) from the mini-player, CarPlay, remote commands and +/// last-book restore, not just from the open player. So both copies have to exist, and +/// `whenPlayerVisible` is what guarantees exactly one of them is ever eligible. +/// +/// Bundling them keeps the number of attachment points at two no matter how many alerts the +/// player grows. +struct PlaybackAlerts: ViewModifier { + let playerState: PlayerState + let playerManager: PlayerManager + /// Which of the two presentation contexts this copy lives in. + let whenPlayerVisible: Bool + + func body(content: Content) -> some View { + /// Read both flags in `body`, not only inside the Binding getters: with `@Observable`, the + /// thing that registers this modifier as a dependency is a read during body evaluation, + /// and these two are the only state that makes it present at all. + _ = playerState.showResumePopup + _ = playerState.pendingFailure + + return content + .alert( + "resume_playback_alert_title".localized, + isPresented: playerState.showResumePopupBinding(whenPlayerVisible: whenPlayerVisible) + ) { + Button("yes_button".localized) { playerManager.jumpTo(playerState.remotePlayTime ?? 0) } + Button("ignore_button".localized, role: .cancel) {} + } message: { + Text( + String( + format: "resume_playback_alert_message".localized, + TimeParser.formatTime(playerState.remotePlayTime ?? 0) + ) + ) + } + .alert( + playerState.pendingFailure?.phoneTitle ?? "", + isPresented: playerState.pendingFailureBinding(whenPlayerVisible: whenPlayerVisible), + presenting: playerState.pendingFailure + ) { failure in + /// No `.cancel` role, matching `BPActionItem.okAction` and the CarPlay copy: the role + /// would emphasize Media Servers over OK and add outside-tap dismissal, neither of + /// which the UIKit alert this replaced did. + Button("ok_button".localized) {} + if failure.canOfferMediaServers { + Button("media_servers_title".localized) { + NotificationCenter.default.post(name: .showMediaServers, object: nil) + } + } + } message: { failure in + if let message = failure.phoneMessage { + Text(message) + } + } + } +} + +extension View { + func playbackAlerts( + playerState: PlayerState, + playerManager: PlayerManager, + whenPlayerVisible: Bool + ) -> some View { + modifier( + PlaybackAlerts( + playerState: playerState, + playerManager: playerManager, + whenPlayerVisible: whenPlayerVisible + ) + ) + } +} diff --git a/BookPlayer/Utils/PlayerState.swift b/BookPlayer/Utils/PlayerState.swift index 6dde44a56..3d1eca8ef 100644 --- a/BookPlayer/Utils/PlayerState.swift +++ b/BookPlayer/Utils/PlayerState.swift @@ -15,6 +15,10 @@ class PlayerState { var isShowingPlayer = false var showResumePopup = false var remotePlayTime: Double? = nil + /// The playback failure waiting to be shown, or nil. State rather than a presented alert so + /// a failure raised while the app is backgrounded survives until the user comes back — + /// the UIKit window walk this replaced simply found no key window and dropped it. + var pendingFailure: PlaybackFailure? var showPlayerBinding: Binding { .init( @@ -38,10 +42,37 @@ class PlayerState { /// exactly one of them can present. func showResumePopupBinding(whenPlayerVisible visible: Bool) -> Binding { .init( - get: { self.showResumePopup && self.isShowingPlayer == visible }, + get: { + // A pending failure outranks the offer: SwiftUI presents ONE alert per view, so two + // live bindings mean one is dropped with its flag still set. An error about the + // attempt the user just made is the more urgent of the two, and the offer is not + // lost — this turns true again the moment the failure is dismissed. + self.showResumePopup && self.pendingFailure == nil && self.isShowingPlayer == visible + }, set: { self.showResumePopup = $0 } ) } + /// Sibling of `showResumePopupBinding` — same two-copy reason, same gate. + func pendingFailureBinding(whenPlayerVisible visible: Bool) -> Binding { + .init( + get: { self.pendingFailure != nil && self.isShowingPlayer == visible }, + set: { presented in + if !presented { + self.pendingFailure = nil + } + } + ) + } + + /// Retires both prompts. They belong to the context that raised them and are NOT handed over + /// when the player opens or closes — see the call site in `MainView` for why that is the + /// deliberate choice rather than a workaround. + func clearPrompts() { + showResumePopup = false + remotePlayTime = nil + pendingFailure = nil + } + init() {} } diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 06995c3f2..8446d21ce 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -558,3 +558,5 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "queued_tasks_title" = "Queued Tasks"; "info_title" = "Info"; "integration_error_missing_connection" = "This book streams from your media server. Connect it in Settings to download or play it."; +"carplay_playback_failed_message" = "Can't play this book. Open BookPlayer on your phone for details."; +"carplay_missing_connection_message" = "This book streams from a media server that isn't set up on this device. Open BookPlayer on your phone to connect it."; diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 9943dba25..5be9082d5 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -1472,82 +1472,6 @@ final class PlayableChapterExternalHostTests: XCTestCase { } } -// MARK: - Resume offer routing - -/// One surface asks, never two: the arbiter is the single subscriber to the service. -@MainActor -final class ResumeOfferArbiterTests: XCTestCase { - private final class PresenterSpy: ResumeOfferPresenting { - var presentedTimes: [TimeInterval] = [] - func presentResumeOffer(at remoteTime: TimeInterval) { presentedTimes.append(remoteTime) } - } - - private let position = ExternalPlaybackProgress(currentTime: 480, lastPlayedDate: Date()) - - func testWithoutCarPlayThePhoneGetsTheOffer() { - let playerState = PlayerState() - let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { false }) - - sut.route(position) - - XCTAssertTrue(playerState.showResumePopup) - XCTAssertEqual(playerState.remotePlayTime, 480) - } - - /// The driving case: phone in a pocket, car connected. The car asks and the phone's flag is - /// never raised, so unlocking the phone later cannot ask the same question again. - func testCarPlayGetsTheOfferWhenTheAppIsInactive() { - let playerState = PlayerState() - let car = PresenterSpy() - let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { false }) - sut.carPlayPresenter = car - - sut.route(position) - - XCTAssertEqual(car.presentedTimes, [480]) - XCTAssertFalse(playerState.showResumePopup, "an offer routed to the car leaves no phone flag behind") - XCTAssertNil(playerState.remotePlayTime) - } - - /// Phone in hand with the car connected: the SwiftUI alert is the better surface, and the - /// car must stay quiet rather than ask in parallel. - func testThePhoneWinsWhenTheAppIsActiveEvenWithCarPlayConnected() { - let playerState = PlayerState() - let car = PresenterSpy() - let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { true }) - sut.carPlayPresenter = car - - sut.route(position) - - XCTAssertTrue(car.presentedTimes.isEmpty) - XCTAssertTrue(playerState.showResumePopup) - } - - func testAnOfferAlreadyShowingIsNotClobbered() { - let playerState = PlayerState() - playerState.showResumePopup = true - playerState.remotePlayTime = 120 - let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { true }) - - sut.route(position) - - XCTAssertEqual(playerState.remotePlayTime, 120, "the prompt the user is looking at keeps its position") - } - - /// Disconnecting the car must hand the next offer back to the phone. - func testAReleasedPresenterFallsBackToThePhone() { - let playerState = PlayerState() - let sut = ResumeOfferArbiter(playerState: playerState, isAppActive: { false }) - var car: PresenterSpy? = PresenterSpy() - sut.carPlayPresenter = car - car = nil - - sut.route(position) - - XCTAssertTrue(playerState.showResumePopup, "a weak presenter that went away is the same as none") - } -} - // MARK: - Provider runtime mapping /// The runtime is the sole source of an external row's `duration` — nothing opens the file — diff --git a/BookPlayerTests/PlayerManagerTests.swift b/BookPlayerTests/PlayerManagerTests.swift index 364a97385..332b58323 100644 --- a/BookPlayerTests/PlayerManagerTests.swift +++ b/BookPlayerTests/PlayerManagerTests.swift @@ -44,7 +44,8 @@ class PlayerManagerTests: XCTestCase { widgetReloadService: WidgetReloadService(), // Entitled by default, so nothing here is suppressed by tier; the item half of the rule // is covered by MediaServersShortcutTests against PlayableChapter. - hasStreamingEnabled: { [weak self] in self?.streamingEnabled ?? true } + hasStreamingEnabled: { [weak self] in self?.streamingEnabled ?? true }, + presentFailure: { _ in } ) } @@ -141,6 +142,88 @@ class PlayerManagerTests: XCTestCase { ) } + /// An item whose host has no saved connection is a DIFFERENT problem from a server that + /// won't answer, and only the surfaces can word that difference — so the reason has to be + /// derived correctly here. Order matters: `needsMediaServer()` is true for both shapes. + func testAnUnresolvedHostIsAMissingConnectionNotAnUnreachableStream() { + let failure = sut.playbackFailure( + for: makeUnplayableExternalChapter(), + title: "t", + message: "m" + ) + + XCTAssertEqual(failure.reason, .missingConnection) + XCTAssertTrue(failure.canOfferMediaServers) + } + + /// The case the derivation order exists for. `hasUnresolvedExternalHost` is a stored flag + /// that stays true on a book you already DOWNLOADED from a server you later removed, so + /// reading it first blamed a missing server for a local file that simply won't open — and + /// produced a reason that disagreed with `canOfferMediaServers` on the same value. + func testADownloadedBookIsNeverBlamedOnAMissingServer() throws { + let relativePath = "downloaded-from-a-removed-server.m4b" + let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(relativePath) + try Data("not really audio".utf8).write(to: fileURL) + defer { try? FileManager.default.removeItem(at: fileURL) } + + let chapter = PlayableChapter( + title: "test chapter", + author: "test author", + start: 0, + duration: 50, + relativePath: relativePath, + remoteURL: nil, + externalURL: nil, + index: 0, + hasUnresolvedExternalHost: true + ) + + let failure = sut.playbackFailure(for: chapter, title: "t", message: "m") + + XCTAssertEqual(failure.reason, .other, "the file is on disk — no server is involved") + XCTAssertFalse( + failure.canOfferMediaServers, + "reason and the shortcut must not disagree on the same failure" + ) + } + + func testAResolvedStreamThatFailedIsUnavailableNotMissing() { + let chapter = PlayableChapter( + title: "test chapter", + author: "test author", + start: 0, + duration: 50, + relativePath: "no-such-file.m4b", + remoteURL: nil, + externalURL: URL(string: "https://jellyfin.example.com/stream"), + index: 0, + hasUnresolvedExternalHost: false + ) + + XCTAssertEqual( + sut.playbackFailure(for: chapter, title: "t", message: "m").reason, + .streamUnavailable + ) + } + + /// No chapter at all (the player item failed before one was resolved) must not claim a + /// media-server problem, or the surfaces offer a fix for something else entirely. + func testAFailureWithNoChapterOffersNothing() { + let failure = sut.playbackFailure(for: nil, title: "t", message: nil) + + XCTAssertEqual(failure.reason, .other) + XCTAssertFalse(failure.canOfferMediaServers) + } + + /// The phone's copy is deliberately passed through untouched — the error code and NSError + /// dump are worth keeping for support threads. + func testThePhoneCopyIsCarriedVerbatim() { + let failure = sut.playbackFailure(for: nil, title: "Error 1234", message: "userInfo={...}") + + XCTAssertEqual(failure.phoneTitle, "Error 1234") + XCTAssertEqual(failure.phoneMessage, "userInfo={...}") + } + func testMediaServersShortcutOfferedWhenStreamingIsEnabled() { XCTAssertTrue(self.sut.offersMediaServers(for: makeUnplayableExternalChapter())) } @@ -153,7 +236,8 @@ class PlayerManagerTests: XCTestCase { speedService: SpeedServiceProtocolMock(), shakeMotionService: ShakeMotionServiceProtocolMock(), widgetReloadService: WidgetReloadService(), - hasStreamingEnabled: { false } + hasStreamingEnabled: { false }, + presentFailure: { _ in } ) XCTAssertFalse( diff --git a/BookPlayerTests/PromptSurfaceArbiterTests.swift b/BookPlayerTests/PromptSurfaceArbiterTests.swift new file mode 100644 index 000000000..f79c21468 --- /dev/null +++ b/BookPlayerTests/PromptSurfaceArbiterTests.swift @@ -0,0 +1,366 @@ +// +// PromptSurfaceArbiterTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +@testable import BookPlayer +@testable import BookPlayerKit +import XCTest + +// MARK: - Resume offer routing + +/// One surface asks, never two: the arbiter is the single subscriber to the service. +@MainActor +final class PromptSurfaceArbiterTests: XCTestCase { + private final class PresenterSpy: ResumeOfferPresenting, PlaybackFailurePresenting { + var presentedTimes: [TimeInterval] = [] + var presentedFailures: [PlaybackFailure] = [] + /// False stands in for a registered car whose interface controller has gone away. + var canPresent = true + + func presentResumeOffer(at remoteTime: TimeInterval) -> Bool { + guard canPresent else { return false } + presentedTimes.append(remoteTime) + return true + } + + func presentPlaybackFailure(_ failure: PlaybackFailure) -> Bool { + guard canPresent else { return false } + presentedFailures.append(failure) + return true + } + } + + private let position = ExternalPlaybackProgress(currentTime: 480, lastPlayedDate: Date()) + + func testWithoutCarPlayThePhoneGetsTheOffer() { + let playerState = PlayerState() + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { false }) + + sut.route(position) + + XCTAssertTrue(playerState.showResumePopup) + XCTAssertEqual(playerState.remotePlayTime, 480) + } + + /// The driving case: phone in a pocket, car connected. The car asks and the phone's flag is + /// never raised, so unlocking the phone later cannot ask the same question again. + func testCarPlayGetsTheOfferWhenTheAppIsInactive() { + let playerState = PlayerState() + let car = PresenterSpy() + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { false }) + sut.carPlayPresenter = car + + sut.route(position) + + XCTAssertEqual(car.presentedTimes, [480]) + XCTAssertFalse(playerState.showResumePopup, "an offer routed to the car leaves no phone flag behind") + XCTAssertNil(playerState.remotePlayTime) + } + + /// Phone in hand with the car connected: the SwiftUI alert is the better surface, and the + /// car must stay quiet rather than ask in parallel. + func testThePhoneWinsWhenTheAppIsActiveEvenWithCarPlayConnected() { + let playerState = PlayerState() + let car = PresenterSpy() + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { true }) + sut.carPlayPresenter = car + + sut.route(position) + + XCTAssertTrue(car.presentedTimes.isEmpty) + XCTAssertTrue(playerState.showResumePopup) + } + + func testAnOfferAlreadyShowingIsNotClobbered() { + let playerState = PlayerState() + playerState.showResumePopup = true + playerState.remotePlayTime = 120 + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { true }) + + sut.route(position) + + XCTAssertEqual(playerState.remotePlayTime, 120, "the prompt the user is looking at keeps its position") + } + + /// Disconnecting the car must hand the next offer back to the phone. + func testAReleasedPresenterFallsBackToThePhone() { + let playerState = PlayerState() + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { false }) + var car: PresenterSpy? = PresenterSpy() + sut.carPlayPresenter = car + car = nil + + sut.route(position) + + XCTAssertTrue(playerState.showResumePopup, "a weak presenter that went away is the same as none") + } +} + +// MARK: - Playback failure routing + +/// Same surface rule as the resume offer, deliberately: a second copy of "which surface may +/// speak" is the drift the arbiter exists to prevent. +@MainActor +final class PlaybackFailureRoutingTests: XCTestCase { + private final class PresenterSpy: ResumeOfferPresenting, PlaybackFailurePresenting { + var presentedFailures: [PlaybackFailure] = [] + var canPresent = true + + func presentResumeOffer(at remoteTime: TimeInterval) -> Bool { canPresent } + + func presentPlaybackFailure(_ failure: PlaybackFailure) -> Bool { + guard canPresent else { return false } + presentedFailures.append(failure) + return true + } + } + + private let failure = PlaybackFailure( + reason: .streamUnavailable, + phoneTitle: "Error 1234", + phoneMessage: "the underlying NSError dump", + canOfferMediaServers: true + ) + + func testWithoutCarPlayTheFailureWaitsOnThePhone() { + let playerState = PlayerState() + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { false }) + + sut.routeFailure(failure) + + XCTAssertEqual(playerState.pendingFailure, failure) + } + + /// The case the whole change exists for: streaming fails in the car with the phone locked. + /// The old code walked to a foregroundActive UIWindowScene, found none, and dropped it. + func testCarPlayGetsTheFailureWhenTheAppIsInactive() { + let playerState = PlayerState() + let car = PresenterSpy() + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { false }) + sut.carPlayPresenter = car + + sut.routeFailure(failure) + + XCTAssertEqual(car.presentedFailures, [failure]) + XCTAssertNil(playerState.pendingFailure, "a failure routed to the car leaves nothing behind") + } + + /// Phone in hand with the car connected — a passenger tapping around, or parked. The car + /// stays quiet on purpose: CPAlertTemplate is modal on the dashboard until someone taps it. + func testThePhoneWinsWhenTheAppIsActiveEvenWithCarPlayConnected() { + let playerState = PlayerState() + let car = PresenterSpy() + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { true }) + sut.carPlayPresenter = car + + sut.routeFailure(failure) + + XCTAssertTrue(car.presentedFailures.isEmpty) + XCTAssertEqual(playerState.pendingFailure, failure) + } + + /// Registered but unable to present: the interface controller went away between connect and + /// here. An error must fall back to the phone rather than vanish. + func testACarThatCannotPresentFallsBackToThePhone() { + let playerState = PlayerState() + let car = PresenterSpy() + car.canPresent = false + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { false }) + sut.carPlayPresenter = car + + sut.routeFailure(failure) + + XCTAssertTrue(car.presentedFailures.isEmpty) + XCTAssertEqual(playerState.pendingFailure, failure, "a declined presentation is not a delivered one") + } + + func testAReleasedPresenterFallsBackToThePhone() { + let playerState = PlayerState() + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { false }) + var car: PresenterSpy? = PresenterSpy() + sut.carPlayPresenter = car + car = nil + + sut.routeFailure(failure) + + XCTAssertEqual(playerState.pendingFailure, failure) + } + + /// Unlike the resume offer, a newer failure replaces an older one: the second attempt is + /// what the user just did, so its error is the relevant one. + func testANewerFailureReplacesThePendingOne() { + let playerState = PlayerState() + let sut = PromptSurfaceArbiter(playerState: playerState, isAppActive: { true }) + sut.routeFailure(failure) + + let newer = PlaybackFailure( + reason: .missingConnection, + phoneTitle: "Error 5678", + phoneMessage: nil, + canOfferMediaServers: false + ) + sut.routeFailure(newer) + + XCTAssertEqual(playerState.pendingFailure, newer) + } +} + +// MARK: - Surface-specific copy + +final class PlaybackFailureCopyTests: XCTestCase { + private static let phoneTitleSentinel = "Error 1234" + private static let phoneMessageSentinel = "NSCocoaErrorDomain userInfo={dump}" + + private func failure(_ reason: PlaybackFailure.Reason) -> PlaybackFailure { + PlaybackFailure( + reason: reason, + phoneTitle: Self.phoneTitleSentinel, + phoneMessage: Self.phoneMessageSentinel, + canOfferMediaServers: true + ) + } + + /// The car never shows an error code or an NSError dump, and it points at the one device + /// where a media server can actually be configured. + func testTheCarGetsItsOwnLineNotTheTechnicalDetail() { + for reason in [PlaybackFailure.Reason.missingConnection, .streamUnavailable, .other] { + let message = failure(reason).carPlayMessage + + XCTAssertFalse(message.isEmpty) + XCTAssertFalse( + message.contains(Self.phoneTitleSentinel), + "an error code has no business on a dashboard" + ) + XCTAssertFalse( + message.contains(Self.phoneMessageSentinel), + "the phone's technical detail must not reach the dashboard" + ) + } + } + + /// A host with no saved connection is a different problem from a server that won't answer, + /// and the car words it differently. + /// + /// Asserts the key RESOLVES as well as matching: `.localized` hands back the key itself when + /// the entry is missing, so comparing two `.localized` calls alone would still pass after + /// someone deleted the string. + func testAMissingConnectionGetsItsOwnExplanation() { + let missing = failure(.missingConnection).carPlayMessage + let unavailable = failure(.streamUnavailable).carPlayMessage + + XCTAssertEqual(missing, "carplay_missing_connection_message".localized) + XCTAssertNotEqual(missing, "carplay_missing_connection_message", "the string is missing") + + XCTAssertEqual(unavailable, "carplay_playback_failed_message".localized) + XCTAssertNotEqual(unavailable, "carplay_playback_failed_message", "the string is missing") + + XCTAssertNotEqual(missing, unavailable, "the two problems read the same to the driver") + } + + /// The fallback is what `.other` gets — a local file that won't open, no server involved — + /// and what an unentitled user gets. It must not send either of them to look at a media + /// server, which is the whole point of gating the other string. + func testTheFallbackGivesNoMediaServerAdvice() { + let fallback = failure(.other).carPlayMessage + + XCTAssertFalse(fallback.localizedCaseInsensitiveContains("media server")) + XCTAssertFalse(fallback.localizedCaseInsensitiveContains("connect")) + } + + /// The car must not tell a tier that cannot stream to go connect a server — the phone hides + /// its shortcut for that exact user, and the two surfaces have to agree. + func testAnUnentitledUserIsNotToldToConnectAServer() { + let unentitled = PlaybackFailure( + reason: .missingConnection, + phoneTitle: Self.phoneTitleSentinel, + phoneMessage: Self.phoneMessageSentinel, + canOfferMediaServers: false + ) + + XCTAssertEqual(unentitled.carPlayMessage, "carplay_playback_failed_message".localized) + } +} + +// MARK: - Which alert gets the one slot + +/// SwiftUI presents one alert per view, and both prompts hang off the same two attachment +/// points — so the bindings, not luck, have to decide which one appears. +@MainActor +final class PromptBindingPrecedenceTests: XCTestCase { + func testAPendingFailureSuppressesTheResumeOffer() { + let playerState = PlayerState() + playerState.showResumePopup = true + playerState.pendingFailure = PlaybackFailure( + reason: .streamUnavailable, + phoneTitle: "Error 1234", + phoneMessage: nil, + canOfferMediaServers: false + ) + + XCTAssertFalse( + playerState.showResumePopupBinding(whenPlayerVisible: false).wrappedValue, + "two live bindings would drop one alert with its flag still set" + ) + XCTAssertTrue(playerState.pendingFailureBinding(whenPlayerVisible: false).wrappedValue) + } + + /// The offer is deferred, not discarded. + func testTheResumeOfferReturnsOnceTheFailureIsDismissed() { + let playerState = PlayerState() + playerState.showResumePopup = true + playerState.pendingFailure = PlaybackFailure( + reason: .other, + phoneTitle: "t", + phoneMessage: nil, + canOfferMediaServers: false + ) + + playerState.pendingFailureBinding(whenPlayerVisible: false).wrappedValue = false + + XCTAssertNil(playerState.pendingFailure) + XCTAssertTrue(playerState.showResumePopupBinding(whenPlayerVisible: false).wrappedValue) + } + + /// Only the copy in the live presentation context may present. + func testOnlyOneContextCopyIsEverEligible() { + let playerState = PlayerState() + playerState.pendingFailure = PlaybackFailure( + reason: .other, + phoneTitle: "t", + phoneMessage: nil, + canOfferMediaServers: false + ) + + playerState.isShowingPlayer = false + XCTAssertTrue(playerState.pendingFailureBinding(whenPlayerVisible: false).wrappedValue) + XCTAssertFalse(playerState.pendingFailureBinding(whenPlayerVisible: true).wrappedValue) + + playerState.isShowingPlayer = true + XCTAssertFalse(playerState.pendingFailureBinding(whenPlayerVisible: false).wrappedValue) + XCTAssertTrue(playerState.pendingFailureBinding(whenPlayerVisible: true).wrappedValue) + } + + func testClearPromptsRetiresBoth() { + let playerState = PlayerState() + playerState.showResumePopup = true + playerState.remotePlayTime = 480 + playerState.pendingFailure = PlaybackFailure( + reason: .other, + phoneTitle: "t", + phoneMessage: nil, + canOfferMediaServers: false + ) + + playerState.clearPrompts() + + XCTAssertFalse(playerState.showResumePopup) + XCTAssertNil(playerState.remotePlayTime) + XCTAssertNil(playerState.pendingFailure) + } +} + From 28900d7f1ea8964c619ae2eb280aa42d16a72507 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 17 Sep 2026 15:28:16 -0500 Subject: [PATCH 137/172] chore: let SwiftUI literals localize themselves again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A string literal handed to a SwiftUI API that takes `LocalizedStringKey` already localizes — the non-generic `LocalizedStringKey` overload wins over the generic `S: StringProtocol` one, which is why develop ships bare literals in `Text` and `accessibilityLabel` and they translate fine. The PR had added `.localized` to 34 of them, which reads as though it were required and suggests the bare ones nearby are bugs. Only lines this PR introduced are touched. Develop has plenty of the same redundancy and cleaning it up here would bury the branch's real changes under churn in files it never meant to modify. Everything that genuinely needs `.localized` keeps it: ternaries and `??`, `String(format:)` and `localizedStringWithFormat`, and `String`-typed parameters like `JellyfinLibraryViewModel.navigationTitle`. `files_title` is one of these and is load-bearing — it is a stringsdict plural key in 25 locales, so it has to reach `localizedStringWithFormat` with its count. "Apple Watch (Beta)" goes back to a plain literal. Every other place a tier or product is named to the user is an untranslated brand literal — "BookPlayer Pro" in the settings banner, the profile callout, this same perks list and both login screens — so translating this one alone would have been the odd one out. `apple_watch_beta_title` had no other caller and is removed from Base and en, the only locales that had it. One behaviour difference worth recording: `Text(LocalizedStringKey)` parses the RESOLVED string as Markdown, which `Text(String)` does not. No translation of any of the 33 unwrapped keys contains a Markdown-active character today, so nothing changes now — but a future translation with a `*` or `_` would render as emphasis rather than literally. --- BookPlayer/Base.lproj/Localizable.strings | 1 - BookPlayer/Import/ImportConfirmationView.swift | 10 +++++----- .../ItemDetailsExternalResourceSectionView.swift | 8 ++++---- .../Account/AccountPasskeySectionView.swift | 2 +- .../Profile/Account/AccountPerksSectionView.swift | 8 ++++---- .../Profile/Login/ExternalSyncInfoView.swift | 6 +++--- .../Profile/Profile/Views/QueuedTasksView.swift | 14 +++++++------- .../Support/SupportProfileView.swift | 6 +++--- .../PlayerControls/GlobalSpeedSectionView.swift | 4 ++-- .../Sections/SettingsIntegrationsSectionView.swift | 2 +- BookPlayer/Utils/PlaybackAlerts.swift | 10 +++++----- BookPlayer/en.lproj/Localizable.strings | 1 - 12 files changed, 35 insertions(+), 37 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 11ac535cc..5dee26c6e 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -524,7 +524,6 @@ We're working hard on providing a seamless experience, if possible, please conta "create_profile_description" = "To enable cloud sync, sign into your profile. You can always do this later from within the Profile tab"; "not_now_button" = "Not now"; "quick_action_label" = "Quick Action %d"; -"apple_watch_beta_title" = "Apple Watch (Beta)"; "sort_by_title" = "Sort by"; "sort_default_option" = "Default"; "sort_name_option" = "Name"; diff --git a/BookPlayer/Import/ImportConfirmationView.swift b/BookPlayer/Import/ImportConfirmationView.swift index 2dbc644c9..50cfd9f00 100644 --- a/BookPlayer/Import/ImportConfirmationView.swift +++ b/BookPlayer/Import/ImportConfirmationView.swift @@ -45,7 +45,7 @@ struct ImportConfirmationView: View { onCancel() } label: { Image(systemName: "xmark") - .accessibilityLabel("cancel_button".localized) + .accessibilityLabel("cancel_button") .bpFont(.title) .foregroundColor(theme.primaryColor) .frame(width: 44, height: 44) @@ -60,7 +60,7 @@ struct ImportConfirmationView: View { onConfirm() } label: { Image(systemName: "checkmark") - .accessibilityLabel("import_button".localized) + .accessibilityLabel("import_button") .bpFont(.title) .foregroundColor(theme.primaryColor) .frame(width: 44, height: 44) @@ -75,12 +75,12 @@ struct ImportConfirmationView: View { .safeAreaPadding(.top) // Headers - Text("import_title".localized) + Text("import_title") .bpFont(.titleStory) .fontWeight(.bold) .foregroundColor(theme.primaryColor) - Text("import_warning_description".localized) + Text("import_warning_description") .bpFont(.subheadline) .foregroundColor(theme.primaryColor.opacity(0.6)) .lineSpacing(4) @@ -100,7 +100,7 @@ struct ImportConfirmationView: View { } } label: { Image(systemName: "minus.circle.fill") - .accessibilityLabel("delete_button".localized) + .accessibilityLabel("delete_button") .foregroundColor(.red) .bpFont(.titleLarge) } diff --git a/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift index e0bbe1d42..1c2358d62 100644 --- a/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift +++ b/BookPlayer/Library/ItemDetails/ItemDetailsExternalResourceSectionView.swift @@ -25,7 +25,7 @@ struct ItemDetailsExternalResourceSectionView: View { ForEach(externalResources, id: \.providerId) { resource in VStack(alignment: .leading, spacing: Spacing.S1) { HStack { - Text("provider_title".localized) + Text("provider_title") .bold() Spacer() Text(resource.providerName.capitalized) @@ -33,7 +33,7 @@ struct ItemDetailsExternalResourceSectionView: View { } HStack { - Text("provider_id_title".localized) + Text("provider_id_title") .bold() Spacer() Text(resource.providerId) @@ -42,7 +42,7 @@ struct ItemDetailsExternalResourceSectionView: View { if let hostId = resource.hostId, !hostId.isEmpty { HStack { - Text("host_title".localized) + Text("host_title") .bold() Spacer() // The raw hostId is what resolution itself falls back to for a host @@ -58,7 +58,7 @@ struct ItemDetailsExternalResourceSectionView: View { .padding(.vertical, Spacing.S1) } } header: { - Text("external_resources_title".localized) + Text("external_resources_title") } } diff --git a/BookPlayer/Profile/Account/AccountPasskeySectionView.swift b/BookPlayer/Profile/Account/AccountPasskeySectionView.swift index e44b5fd3c..41b49083c 100644 --- a/BookPlayer/Profile/Account/AccountPasskeySectionView.swift +++ b/BookPlayer/Profile/Account/AccountPasskeySectionView.swift @@ -32,7 +32,7 @@ struct AccountPasskeySectionView: View { addButton } } header: { - Text("passkey_title".localized) + Text("passkey_title") .foregroundStyle(theme.secondaryColor) } .onAppear { diff --git a/BookPlayer/Profile/Account/AccountPerksSectionView.swift b/BookPlayer/Profile/Account/AccountPerksSectionView.swift index 3a77b50af..a6fb4ac43 100644 --- a/BookPlayer/Profile/Account/AccountPerksSectionView.swift +++ b/BookPlayer/Profile/Account/AccountPerksSectionView.swift @@ -22,7 +22,7 @@ struct AccountPerksSectionView: View { .foregroundStyle(theme.primaryColor) .frame(maxWidth: .infinity) Label { - Text("benefits_cloudsync_title".localized) + Text("benefits_cloudsync_title") .bpFont(.titleRegular) .foregroundStyle(theme.primaryColor) } icon: { @@ -30,7 +30,7 @@ struct AccountPerksSectionView: View { .foregroundStyle(theme.linkColor) } Label { - Text("apple_watch_beta_title".localized) + Text("Apple Watch (Beta)") .bpFont(.titleRegular) .foregroundStyle(theme.primaryColor) } icon: { @@ -38,7 +38,7 @@ struct AccountPerksSectionView: View { .foregroundStyle(theme.linkColor) } Label { - Text("benefits_themesicons_title".localized) + Text("benefits_themesicons_title") .bpFont(.titleRegular) .foregroundStyle(theme.primaryColor) } icon: { @@ -47,7 +47,7 @@ struct AccountPerksSectionView: View { } Button(action: action) { - Text("completeaccount_title".localized) + Text("completeaccount_title") .contentShape(Rectangle()) .bpFont(.headline) .frame(height: 45) diff --git a/BookPlayer/Profile/Login/ExternalSyncInfoView.swift b/BookPlayer/Profile/Login/ExternalSyncInfoView.swift index 8b735ab14..2906934c1 100644 --- a/BookPlayer/Profile/Login/ExternalSyncInfoView.swift +++ b/BookPlayer/Profile/Login/ExternalSyncInfoView.swift @@ -63,7 +63,7 @@ struct ExternalSyncIntroView: View { Button { showCompleteAccount = true } label: { - Text("continue_title".localized) + Text("continue_title") .font(.headline) .foregroundColor(.white) .frame(maxWidth: .infinity) @@ -78,7 +78,7 @@ struct ExternalSyncIntroView: View { } } .listSectionSpacing(Spacing.S2) - .navigationTitle("external_sync_info_title".localized) + .navigationTitle("external_sync_info_title") .navigationBarTitleDisplayMode(.inline) // Presented as a sheet, so there is no back button to fall back on .toolbar { @@ -89,7 +89,7 @@ struct ExternalSyncIntroView: View { Image(systemName: "xmark") .foregroundStyle(theme.linkColor) } - .accessibilityLabel("close_title".localized) + .accessibilityLabel("close_title") } } .sheet(isPresented: $showCompleteAccount) { diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index d1dacee77..d1131d60a 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -67,12 +67,12 @@ struct QueuedTasksView: View { .scrollContentBackground(.hidden) .background(theme.systemBackgroundColor) .toolbarColorScheme(theme.useDarkVariant ? .dark : .light, for: .navigationBar) - .navigationTitle("queued_tasks_title".localized) + .navigationTitle("queued_tasks_title") .navigationBarTitleDisplayMode(.inline) .alert("", isPresented: $showInfoAlert) { - Button("ok_button".localized, role: .cancel) {} + Button("ok_button", role: .cancel) {} } message: { - Text("sync_tasks_alert_description".localized) + Text("sync_tasks_alert_description") } .toolbar { ToolbarItem(placement: .confirmationAction) { @@ -81,7 +81,7 @@ struct QueuedTasksView: View { } label: { Image(systemName: "info.circle") } - .accessibilityLabel("info_title".localized) + .accessibilityLabel("info_title") .foregroundStyle(theme.linkColor) } } @@ -118,7 +118,7 @@ struct QueuedTasksView: View { .frame(width: 20, height: 20) .foregroundStyle(theme.linkColor) .padding([.trailing], 5) - Text("upload_wifi_required_title".localized) + Text("upload_wifi_required_title") .bpFont(.body) .foregroundStyle(theme.secondaryColor) Spacer() @@ -132,10 +132,10 @@ struct QueuedTasksView: View { .imageScale(.large) .foregroundStyle(.secondary) - Text("sync_tasks_empty_title".localized) + Text("sync_tasks_empty_title") .bpFont(.headline) - Text("sync_tasks_empty_description".localized) + Text("sync_tasks_empty_description") .bpFont(.subheadline) .foregroundStyle(.secondary) .multilineTextAlignment(.center) diff --git a/BookPlayer/SecondOnboarding/Support/SupportProfileView.swift b/BookPlayer/SecondOnboarding/Support/SupportProfileView.swift index 4badceffa..5b8184a5e 100644 --- a/BookPlayer/SecondOnboarding/Support/SupportProfileView.swift +++ b/BookPlayer/SecondOnboarding/Support/SupportProfileView.swift @@ -43,11 +43,11 @@ struct SupportProfileView: View { .accessibilityHidden(true) Group { - Text("create_profile_title".localized) + Text("create_profile_title") .bpFont(.titleStory) .foregroundStyle(themeViewModel.primaryColor) .padding() - Text("create_profile_description".localized) + Text("create_profile_description") .bpFont(.bodyStory) .foregroundStyle(themeViewModel.primaryColor) .multilineTextAlignment(.center) @@ -70,7 +70,7 @@ struct SupportProfileView: View { Button(action: { viewModel.dismiss() }, label: { - Text("not_now_button".localized) + Text("not_now_button") .underline() .bpFont(.body) .foregroundStyle(themeViewModel.secondaryColor) diff --git a/BookPlayer/Settings/Sections/PlayerControls/GlobalSpeedSectionView.swift b/BookPlayer/Settings/Sections/PlayerControls/GlobalSpeedSectionView.swift index f04f0b7e7..97e41b92b 100644 --- a/BookPlayer/Settings/Sections/PlayerControls/GlobalSpeedSectionView.swift +++ b/BookPlayer/Settings/Sections/PlayerControls/GlobalSpeedSectionView.swift @@ -61,7 +61,7 @@ struct GlobalSpeedSectionView: View { } .pickerStyle(.menu) Toggle(isOn: $globalSpeedEnabled) { - Text("settings_globalspeed_title".localized) + Text("settings_globalspeed_title") .bpFont(.body) } } header: { @@ -69,7 +69,7 @@ struct GlobalSpeedSectionView: View { .bpFont(.subheadline) .foregroundStyle(theme.secondaryColor) } footer: { - Text("settings_globalspeed_description".localized) + Text("settings_globalspeed_description") .bpFont(.caption) .foregroundStyle(theme.secondaryColor) } diff --git a/BookPlayer/Settings/Sections/SettingsIntegrationsSectionView.swift b/BookPlayer/Settings/Sections/SettingsIntegrationsSectionView.swift index 2ca4a0db7..dcff141f9 100644 --- a/BookPlayer/Settings/Sections/SettingsIntegrationsSectionView.swift +++ b/BookPlayer/Settings/Sections/SettingsIntegrationsSectionView.swift @@ -23,7 +23,7 @@ struct SettingsIntegrationsSectionView: View { .bpFont(.body) } } header: { - Text("integrations_title".localized) + Text("integrations_title") .bpFont(.subheadline) .foregroundStyle(theme.secondaryColor) } diff --git a/BookPlayer/Utils/PlaybackAlerts.swift b/BookPlayer/Utils/PlaybackAlerts.swift index 2d6206127..4a6cb9531 100644 --- a/BookPlayer/Utils/PlaybackAlerts.swift +++ b/BookPlayer/Utils/PlaybackAlerts.swift @@ -33,11 +33,11 @@ struct PlaybackAlerts: ViewModifier { return content .alert( - "resume_playback_alert_title".localized, + "resume_playback_alert_title", isPresented: playerState.showResumePopupBinding(whenPlayerVisible: whenPlayerVisible) ) { - Button("yes_button".localized) { playerManager.jumpTo(playerState.remotePlayTime ?? 0) } - Button("ignore_button".localized, role: .cancel) {} + Button("yes_button") { playerManager.jumpTo(playerState.remotePlayTime ?? 0) } + Button("ignore_button", role: .cancel) {} } message: { Text( String( @@ -54,9 +54,9 @@ struct PlaybackAlerts: ViewModifier { /// No `.cancel` role, matching `BPActionItem.okAction` and the CarPlay copy: the role /// would emphasize Media Servers over OK and add outside-tap dismissal, neither of /// which the UIKit alert this replaced did. - Button("ok_button".localized) {} + Button("ok_button") {} if failure.canOfferMediaServers { - Button("media_servers_title".localized) { + Button("media_servers_title") { NotificationCenter.default.post(name: .showMediaServers, object: nil) } } diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 8446d21ce..44298557b 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -338,7 +338,6 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "overview_title" = "Overview"; "tags_title" = "Tags"; "series_title" = "Series"; -"apple_watch_beta_title" = "Apple Watch (Beta)"; "sort_by_size_title" = "Size"; "settings_storage_sync_deleted_description" = "Files removed (sync operations)"; "storage_sync_deleted_recover_description" = "You can import back your local books and folders if they were deleted by a sync operation. This will move all of them back to the documents folder, triggering the import process. If folders are involved, this could mean that the originals are still in the library, and some renaming will have to take place, sorry about this inconvenience"; From 254b7bc54dffcc505b06180579b8ad81677237c3 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 17 Sep 2026 15:34:00 -0500 Subject: [PATCH 138/172] refactor: name the tier at the call site, not through a parameter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `SettingsCompleteAccountView` took a `subType` with a `.pro` default and forwarded it, but no caller ever set it — `SettingsView`, `AccountView` and the preview all construct it bare, so the value was always `.pro`. The parameter read as a variation point that does not exist. The one place that genuinely varies the tier, `ExternalSyncInfoView`, builds `CompleteAccountView(subType: .lite)` directly rather than going through this wrapper, so nothing is lost by fixing the tier here. The `BookPlayerKit` import goes with it: it was there for the `AccessLevel` annotation, and `.pro` infers from `CompleteAccountView`'s own parameter. The file is now one line away from develop. --- BookPlayer/Settings/SettingsCompleteAccountView.swift | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/BookPlayer/Settings/SettingsCompleteAccountView.swift b/BookPlayer/Settings/SettingsCompleteAccountView.swift index c7a2e209d..a6fd96c1e 100644 --- a/BookPlayer/Settings/SettingsCompleteAccountView.swift +++ b/BookPlayer/Settings/SettingsCompleteAccountView.swift @@ -7,15 +7,13 @@ // import SwiftUI -import BookPlayerKit struct SettingsCompleteAccountView: View { @Environment(\.dismiss) private var dismiss - var subType: AccessLevel = .pro - + var body: some View { NavigationStack { - CompleteAccountView(subType: subType) { + CompleteAccountView(subType: .pro) { dismiss() } } From fcf1514f6958ab1f3545a606abe043a37d192359 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 17 Sep 2026 15:38:24 -0500 Subject: [PATCH 139/172] revert: drop the Info.plist churn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The file showed 80 changed lines and almost none of it meant anything: the `.lpf` imported-type declaration moved from the top of the dict to the bottom, every alternate app icon was re-sorted alphabetically under both `CFBundleIcons` and `CFBundleIcons~ipad`, `UIPrerenderedIcon` moved below the shortcut colour keys, and the mime-type and filename-extension arrays swapped places. A plist dict is unordered, so the built app is byte-identical either way — it just buried the file in a diff nobody can read. Two real keys were hiding in that noise, and neither should stay. `LSApplicationCategoryType` was added as an empty string, which says nothing. `NSAllowsLocalNetworking` looks like it would help reach a media server on the LAN, but it does the opposite here. develop already sets `NSAllowsArbitraryLoads`, and when a narrower ATS key is present alongside it, iOS 10 and later IGNORE `NSAllowsArbitraryLoads` and honour only the narrow one — this target deploys to iOS 18. So the effect is to shrink plain-HTTP access from "anywhere" down to "local network only", which would break a server reached over a tunnel or a public http address while still working on the LAN. It is also unnecessary for the local case: arbitrary loads already cover it, and the iOS 14 local-network prompt is a different mechanism (`NSLocalNetworkUsageDescription` plus Bonjour) that this key has no bearing on. The file is identical to develop again. --- BookPlayer/Info.plist | 156 ++++++++++++++++++++---------------------- 1 file changed, 76 insertions(+), 80 deletions(-) diff --git a/BookPlayer/Info.plist b/BookPlayer/Info.plist index 1008b8366..4698569eb 100644 --- a/BookPlayer/Info.plist +++ b/BookPlayer/Info.plist @@ -2,6 +2,28 @@ + UTImportedTypeDeclarations + + + UTTypeConformsTo + + com.pkware.zip-archive + + UTTypeIdentifier + com.pkware.lpf-zip-archive + UTTypeTagSpecification + + public.mime-type + + application/lpf+zip + + public.filename-extension + + lpf + + + + BGTaskSchedulerPermittedIdentifiers $(BP_BUNDLE_IDENTIFIER).background @@ -84,95 +106,95 @@ CFBundleAlternateIcons - Ayu Light + Fruit Based26 CFBundleIconFiles - ayu-light + fruit-based-26 - Dark + Music CFBundleIconFiles - dark + music-26 - Forest Green + Platinum CFBundleIconFiles - forest-green + Platinum - Fruit Based + Pride26 CFBundleIconFiles - fruit-based + pride-26 - Fruit Based26 + Pride CFBundleIconFiles - fruit-based-26 + pride - Heart of Glass + Ayu Light CFBundleIconFiles - heart-of-glass + ayu-light - Heart of Glass (Ayu) + Dark CFBundleIconFiles - heart-of-glass-ayu + dark - Heart of Glass (Forest) + Forest Green CFBundleIconFiles - heart-of-glass-forest + forest-green - Music + Fruit Based CFBundleIconFiles - music-26 + fruit-based - Neon + Heart of Glass CFBundleIconFiles - neon + heart-of-glass - Platinum + Heart of Glass (Ayu) CFBundleIconFiles - Platinum + heart-of-glass-ayu - Pride + Heart of Glass (Forest) CFBundleIconFiles - pride + heart-of-glass-forest - Pride26 + Neon CFBundleIconFiles - pride-26 + neon Retro @@ -203,6 +225,8 @@ + UIPrerenderedIcon + NSAppIconActionTintColorName ShortcutsForegroundColor NSAppIconComplementingColorNames @@ -210,103 +234,101 @@ ShortcutsBackgroundColor1 ShortcutsBackgroundColor2 - UIPrerenderedIcon - CFBundleIcons~ipad CFBundleAlternateIcons - Ayu Light + Fruit Based26 CFBundleIconFiles - ayu-light-ipad + fruit-based-ipad-26 - Dark + Music CFBundleIconFiles - dark-ipad + music-ipad-26 - Forest Green + Platinum CFBundleIconFiles - forest-green-ipad + Platinum-ipad - Fruit Based + Pride26 CFBundleIconFiles - fruit-based-ipad + pride-ipad-26 - Fruit Based26 + Pride CFBundleIconFiles - fruit-based-ipad-26 + pride-ipad - Heart of Glass + Ayu Light CFBundleIconFiles - heart-of-glass-ipad + ayu-light-ipad - Heart of Glass (Ayu) + Dark CFBundleIconFiles - heart-of-glass-ayu-ipad + dark-ipad - Heart of Glass (Forest) + Forest Green CFBundleIconFiles - heart-of-glass-forest-ipad + forest-green-ipad - Music + Fruit Based CFBundleIconFiles - music-ipad-26 + fruit-based-ipad - Neon + Heart of Glass CFBundleIconFiles - neon-ipad + heart-of-glass-ipad - Platinum + Heart of Glass (Ayu) CFBundleIconFiles - Platinum-ipad + heart-of-glass-ayu-ipad - Pride + Heart of Glass (Forest) CFBundleIconFiles - pride-ipad + heart-of-glass-forest-ipad - Pride26 + Neon CFBundleIconFiles - pride-ipad-26 + neon-ipad Retro @@ -378,8 +400,6 @@ NSAllowsArbitraryLoads - NSAllowsLocalNetworking - NSMicrophoneUsageDescription Enable microphone access so you can record audio @@ -455,29 +475,5 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown - UTImportedTypeDeclarations - - - UTTypeConformsTo - - com.pkware.zip-archive - - UTTypeIdentifier - com.pkware.lpf-zip-archive - UTTypeTagSpecification - - public.filename-extension - - lpf - - public.mime-type - - application/lpf+zip - - - - - LSApplicationCategoryType - From ffe910188bcd004257a4b79ad34f7a40cb547958 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 17 Sep 2026 15:59:19 -0500 Subject: [PATCH 140/172] fix: the media-server sign-up screen shows its errors again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `ExternalSyncIntroView` did not say what it was. It is the sibling of `LoginView` — same benefit rows, same sign-in buttons — pitching the server features and ending on `.lite` where `LoginView` pitches cloud sync and ends on `.pro`. It is now `MediaServersLoginView`, which pairs with the screen it mirrors and matches the user-facing wording of `MediaServersView`, and the file name matches the type again (it was `ExternalSyncInfoView.swift` holding an `ExternalSyncIntroView`, so both names were in circulation for one screen). A doc comment states the relationship, since that is the part the old name hid. The copy from `LoginView` lost three modifiers, and the omission is user-visible. `AppleSignInLink` reads `\.loadingState` from the environment and writes its progress and its errors into it. This screen declared a `LoadingOverlayState` but never injected it and never attached `.errorAlert` or `.loadingOverlay`, so sign-in wrote into the `@Entry` placeholder that nothing observes: no spinner, and a failed Apple sign-in did nothing at all. The same failure on `LoginView` raises an alert. All three are restored. The `ZStack` went with them. `LoginView` needs one because it reserves space with a hardcoded 88pt spacer and overlays the buttons as a sibling; this screen puts the buttons inside `safeAreaInset` as real content, which reserves their height on its own. Once that changed the `ZStack` wrapped a single child. Also: the missing `#Preview`, and two comments that were addressed to whoever was going to finish the screen — "State to trigger your subscription tiers presentation" and "Or whatever your primary button color is". Left alone: the Continue button still carries its own font, padding and background rather than sharing the sign-in buttons' treatment. That is a visual call, not a defect. --- BookPlayer.xcodeproj/project.pbxproj | 8 +- .../AudiobookShelfRootView.swift | 2 +- BookPlayer/Jellyfin/JellyfinRootView.swift | 4 +- .../Profile/Login/ExternalSyncInfoView.swift | 118 ---------------- .../Profile/Login/MediaServersLoginView.swift | 131 ++++++++++++++++++ 5 files changed, 138 insertions(+), 125 deletions(-) delete mode 100644 BookPlayer/Profile/Login/ExternalSyncInfoView.swift create mode 100644 BookPlayer/Profile/Login/MediaServersLoginView.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 3996fefea..463ea1772 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -682,7 +682,7 @@ 9305492473601C69B999F588 /* VideoArtworkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCD948B0DFDC349DADE2A3D8 /* VideoArtworkView.swift */; }; 9586CECD8FB418C6CFB0A7DD /* IntegrationLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C407B5BD19D3CF9CC64EC7 /* IntegrationLibraryView.swift */; }; 98BA9BA4D6A94BC8BCCE5F8B /* IntegrationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D9D68F735D2519CDBC18495 /* IntegrationSettingsView.swift */; }; - 990442102F889201007E2A44 /* ExternalSyncInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */; }; + 990442102F889201007E2A44 /* MediaServersLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9904420F2F8891F9007E2A44 /* MediaServersLoginView.swift */; }; 990775772FF33BD700E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 990775762FF33BD700E35FAE /* Get */; }; 990775792FF33BE100E35FAE /* Get in Frameworks */ = {isa = PBXBuildFile; productRef = 990775782FF33BE100E35FAE /* Get */; }; 9907757C2FF33C0C00E35FAE /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 9907757B2FF33C0C00E35FAE /* Kingfisher */; }; @@ -1775,7 +1775,7 @@ 8D3EFD93E6D1E0366A3FD1E9 /* mp3_WITH_toc.mp3 */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = audio.mp3; path = mp3_WITH_toc.mp3; sourceTree = ""; }; 8DA0C0229963991F8CE1E941 /* IntegrationConnectionFlowView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionFlowView.swift; sourceTree = ""; }; 8FBF775DDE66D0AA08818D45 /* LibraryOptionsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LibraryOptionsView.swift; sourceTree = ""; }; - 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalSyncInfoView.swift; sourceTree = ""; }; + 9904420F2F8891F9007E2A44 /* MediaServersLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaServersLoginView.swift; sourceTree = ""; }; 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncOperation.swift; sourceTree = ""; }; 9911FBAE2F71D03100DC9A2B /* SyncQueueService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueService.swift; sourceTree = ""; }; 9911FBB12F71E54600DC9A2B /* SyncQueueRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueRepository.swift; sourceTree = ""; }; @@ -3663,7 +3663,7 @@ 9F4691EC2800C90400A8F0E8 /* Login */ = { isa = PBXGroup; children = ( - 9904420F2F8891F9007E2A44 /* ExternalSyncInfoView.swift */, + 9904420F2F8891F9007E2A44 /* MediaServersLoginView.swift */, 63C48D3D2E3E7F9E005FBB96 /* LoginViewModel.swift */, 9F2681B528898A7300359BD3 /* LoginDisclaimerView.swift */, 63C48C792E3DAC9D005FBB96 /* LoginView.swift */, @@ -5023,7 +5023,7 @@ D6BA8F162A4CA94800C2BD9A /* StorageRowView.swift in Sources */, 9F3C436A284181690066D99A /* DataInitializerCoordinator.swift in Sources */, 9F3C436B284181C70066D99A /* AlertPresenter.swift in Sources */, - 990442102F889201007E2A44 /* ExternalSyncInfoView.swift in Sources */, + 990442102F889201007E2A44 /* MediaServersLoginView.swift in Sources */, 63E893B22CB0AACE00946CD4 /* PlayLastControlWidgetView.swift in Sources */, 63B760FC2C33B77F00AA98C7 /* SupportProfileView.swift in Sources */, 638487CD2EC77B1200DF442B /* AudiobookShelfAudiobookDetailsView.swift in Sources */, diff --git a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift index eaf70668c..0796ae82c 100644 --- a/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift +++ b/BookPlayer/AudiobookShelf/AudiobookShelfRootView.swift @@ -466,7 +466,7 @@ private struct AudiobookShelfTabRoot: View { } .sheet(isPresented: $navigation.showingSubscribe) { NavigationStack { - ExternalSyncIntroView() + MediaServersLoginView() } .tint(theme.linkColor) .environmentObject(theme) diff --git a/BookPlayer/Jellyfin/JellyfinRootView.swift b/BookPlayer/Jellyfin/JellyfinRootView.swift index 9a0ea1c47..be7e59c96 100644 --- a/BookPlayer/Jellyfin/JellyfinRootView.swift +++ b/BookPlayer/Jellyfin/JellyfinRootView.swift @@ -346,7 +346,7 @@ struct JellyfinTabRoot: View { } .sheet(isPresented: $navigation.showingSubscribe) { NavigationStack { - ExternalSyncIntroView() + MediaServersLoginView() } .tint(theme.linkColor) .environmentObject(theme) @@ -571,7 +571,7 @@ where ViewModel.Item == JellyfinLibraryItem { } .sheet(isPresented: $navigation.showingSubscribe) { NavigationStack { - ExternalSyncIntroView() + MediaServersLoginView() } .tint(theme.linkColor) .environmentObject(theme) diff --git a/BookPlayer/Profile/Login/ExternalSyncInfoView.swift b/BookPlayer/Profile/Login/ExternalSyncInfoView.swift deleted file mode 100644 index 2906934c1..000000000 --- a/BookPlayer/Profile/Login/ExternalSyncInfoView.swift +++ /dev/null @@ -1,118 +0,0 @@ -// -// ExternalSyncInfoView.swift -// BookPlayer -// -// Created by Pedro Iñiguez on 9/4/26. -// Copyright © 2026 BookPlayer LLC. All rights reserved. -// - -import SwiftUI -import AuthenticationServices -import BookPlayerKit - -struct ExternalSyncIntroView: View { - @EnvironmentObject private var theme: ThemeViewModel - @Environment(\.dismiss) private var dismiss - - // State to trigger your subscription tiers presentation - @State private var loadingState = LoadingOverlayState() - @State private var showCompleteAccount = false - @State private var showPasskeyRegistration = false - @Environment(\.accountService) private var accountService - - var body: some View { - ZStack(alignment: .bottom) { - Form { - // Feature 1: External Server Connection - LoginBenefitSectionView( - imageName: "server.rack", - title: "external_sync_benefit_server_title", - subtitle: "external_sync_benefit_server_subtitle" - ) - - // Feature 2: Streaming (No Local Storage) - LoginBenefitSectionView( - imageName: "waveform", - title: "external_sync_benefit_stream_title", - subtitle: "external_sync_benefit_stream_subtitle" - ) - - // Feature 3: Two-Way Sync - LoginBenefitSectionView( - imageName: "arrow.triangle.2.circlepath", - title: "external_sync_benefit_sync_title", - subtitle: "external_sync_benefit_sync_subtitle" - ) - - LoginDisclaimerSectionView() - } - .applyListStyle(with: theme, background: theme.systemGroupedBackgroundColor) - .safeAreaInset(edge: .bottom) { - VStack(spacing: Spacing.S) { - if accountService.account.id.isEmpty { - AppleSignInLink { hasSubscription in - handleSignInResult(hasSubscription: hasSubscription) - } - - // Continue with Passkey - goes to registration/sign-in screen - ContinueWithPasskeyButton { - showPasskeyRegistration = true - } - .padding(.bottom, Spacing.S) - } else { - Button { - showCompleteAccount = true - } label: { - Text("continue_title") - .font(.headline) - .foregroundColor(.white) - .frame(maxWidth: .infinity) - .padding() - .background(theme.linkColor) // Or whatever your primary button color is - .cornerRadius(12) - } - .padding(.horizontal) - .padding(.bottom, Spacing.S) - } - } - } - } - .listSectionSpacing(Spacing.S2) - .navigationTitle("external_sync_info_title") - .navigationBarTitleDisplayMode(.inline) - // Presented as a sheet, so there is no back button to fall back on - .toolbar { - ToolbarItem(placement: .cancellationAction) { - Button { - dismiss() - } label: { - Image(systemName: "xmark") - .foregroundStyle(theme.linkColor) - } - .accessibilityLabel("close_title") - } - } - .sheet(isPresented: $showCompleteAccount) { - NavigationStack { - CompleteAccountView(subType: .lite) { - dismiss() - } - } - .presentationDetents([.medium]) - } - .sheet(isPresented: $showPasskeyRegistration) { - PasskeyRegistrationView { hasSubscription in - showPasskeyRegistration = false - handleSignInResult(hasSubscription: hasSubscription) - } - } - } - - private func handleSignInResult(hasSubscription: Bool) { - if hasSubscription { - dismiss() - } else { - showCompleteAccount = true - } - } -} diff --git a/BookPlayer/Profile/Login/MediaServersLoginView.swift b/BookPlayer/Profile/Login/MediaServersLoginView.swift new file mode 100644 index 000000000..41e5fc7ce --- /dev/null +++ b/BookPlayer/Profile/Login/MediaServersLoginView.swift @@ -0,0 +1,131 @@ +// +// MediaServersLoginView.swift +// BookPlayer +// +// Created by Pedro Iñiguez on 9/4/26. +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import AuthenticationServices +import BookPlayerKit +import SwiftUI + +/// The media-server half of the sign-up funnel, presented when someone without the entitlement +/// asks to stream. `LoginView` is its sibling: same benefit rows and the same sign-in buttons, +/// but it pitches cloud sync and ends on `.pro`, where this pitches the server features and +/// ends on `.lite`. +struct MediaServersLoginView: View { + @EnvironmentObject private var theme: ThemeViewModel + @Environment(\.dismiss) private var dismiss + @Environment(\.accountService) private var accountService + + @State private var loadingState = LoadingOverlayState() + @State private var showCompleteAccount = false + @State private var showPasskeyRegistration = false + + var body: some View { + Form { + LoginBenefitSectionView( + imageName: "server.rack", + title: "external_sync_benefit_server_title", + subtitle: "external_sync_benefit_server_subtitle" + ) + + LoginBenefitSectionView( + imageName: "waveform", + title: "external_sync_benefit_stream_title", + subtitle: "external_sync_benefit_stream_subtitle" + ) + + LoginBenefitSectionView( + imageName: "arrow.triangle.2.circlepath", + title: "external_sync_benefit_sync_title", + subtitle: "external_sync_benefit_sync_subtitle" + ) + + LoginDisclaimerSectionView() + } + .applyListStyle(with: theme, background: theme.systemGroupedBackgroundColor) + /// The buttons ARE the inset, so the list reserves exactly their height — `LoginView` does + /// this with a spacer of a hardcoded 88pt and a sibling overlay instead. + .safeAreaInset(edge: .bottom) { + VStack(spacing: Spacing.S) { + if accountService.account.id.isEmpty { + AppleSignInLink { hasSubscription in + handleSignInResult(hasSubscription: hasSubscription) + } + + /// Goes to the registration/sign-in screen + ContinueWithPasskeyButton { + showPasskeyRegistration = true + } + .padding(.bottom, Spacing.S) + } else { + Button { + showCompleteAccount = true + } label: { + Text("continue_title") + .font(.headline) + .foregroundColor(.white) + .frame(maxWidth: .infinity) + .padding() + .background(theme.linkColor) + .cornerRadius(12) + } + .padding(.horizontal) + .padding(.bottom, Spacing.S) + } + } + } + /// Load-bearing: `AppleSignInLink` reads `\.loadingState` from the environment and writes + /// its progress and its errors there. Without the injection it would write into the + /// `@Entry` placeholder, and a failed sign-in would be swallowed with nothing on screen. + .environment(\.loadingState, loadingState) + .listSectionSpacing(Spacing.S2) + .navigationTitle("external_sync_info_title") + .navigationBarTitleDisplayMode(.inline) + .errorAlert(error: $loadingState.error) + .loadingOverlay(loadingState.show) + /// Presented as a sheet, so there is no back button to fall back on + .toolbar { + ToolbarItem(placement: .cancellationAction) { + Button { + dismiss() + } label: { + Image(systemName: "xmark") + .foregroundStyle(theme.linkColor) + } + .accessibilityLabel("close_title") + } + } + .sheet(isPresented: $showCompleteAccount) { + NavigationStack { + CompleteAccountView(subType: .lite) { + dismiss() + } + } + .presentationDetents([.medium]) + } + .sheet(isPresented: $showPasskeyRegistration) { + PasskeyRegistrationView { hasSubscription in + showPasskeyRegistration = false + handleSignInResult(hasSubscription: hasSubscription) + } + } + } + + private func handleSignInResult(hasSubscription: Bool) { + if hasSubscription { + dismiss() + } else { + showCompleteAccount = true + } + } +} + +#Preview { + NavigationStack { + MediaServersLoginView() + } + .environmentObject(ThemeViewModel()) +} From 494387dcc5dd5f8571ecce2818ee3f7767f148df Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 17 Sep 2026 16:51:35 -0500 Subject: [PATCH 141/172] fix: the media-server paywall stops selling what is already free MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first benefit row pitched "Bring Your Own Server — connect your existing Jellyfin or Audiobookshelf". Nothing gates that: adding a connection and downloading from it cost nothing, and only streaming and the progress pull sit behind the entitlement. The screen is also reachable only from inside a connected browser, so the row described something the reader had already done, for free, on a screen asking them to pay. Its two strings go with it. The sync row claimed progress "stays perfectly synced with your server and across all your devices", which reads as though the devices talk to each other. They do not — the cross-device half goes through BookPlayer's servers, and that is the part the subscription pays for. The disclaimer below already says as much ("ongoing server costs for cloud storage and progress syncing"), so the benefit row was the only place not admitting it. It now names both hops. "Two-way" stays in the title because it is the accurate word for the paid half: pushing progress TO your own server is free on every tier, and it is the pull back that needs lite or pro. The icon follows the copy. `arrow.triangle.2.circlepath` said "sync" but not "cloud"; `arrow.clockwise.icloud` keeps the sync motion and adds the cloud the sentence now describes, while staying distinct from the `icloud.and.arrow.up.fill` that LoginView's own sync row uses. Symbol verified against the system catalog (available since 2019, against an iOS 18 target) rather than trusted from memory. --- BookPlayer/Base.lproj/Localizable.strings | 4 +--- BookPlayer/Profile/Login/MediaServersLoginView.swift | 11 ++++------- BookPlayer/en.lproj/Localizable.strings | 4 +--- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 5dee26c6e..a4e58af2c 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -548,12 +548,10 @@ We're working hard on providing a seamless experience, if possible, please conta "queue_library_sync_title" = "Library Sync"; "queue_file_uploads_title" = "File Uploads"; "close_title" = "Close"; -"external_sync_benefit_server_title" = "Bring Your Own Server"; -"external_sync_benefit_server_subtitle" = "Connect your existing Jellyfin or Audiobookshelf directly to the app."; "external_sync_benefit_stream_title" = "Stream & Save Space"; "external_sync_benefit_stream_subtitle" = "Listen instantly by streaming directly from your source. No need to download files or use up local storage."; "external_sync_benefit_sync_title" = "Two-Way Progress Sync"; -"external_sync_benefit_sync_subtitle" = "Your listening progress stays perfectly synced with your server and across all your devices."; +"external_sync_benefit_sync_subtitle" = "Your position syncs both ways with Jellyfin or Audiobookshelf, and through your BookPlayer account so every device you use stays in step."; "external_sync_info_title" = "Stream & Sync"; "queued_tasks_title" = "Queued Tasks"; "info_title" = "Info"; diff --git a/BookPlayer/Profile/Login/MediaServersLoginView.swift b/BookPlayer/Profile/Login/MediaServersLoginView.swift index 41e5fc7ce..840e7eaba 100644 --- a/BookPlayer/Profile/Login/MediaServersLoginView.swift +++ b/BookPlayer/Profile/Login/MediaServersLoginView.swift @@ -25,12 +25,9 @@ struct MediaServersLoginView: View { var body: some View { Form { - LoginBenefitSectionView( - imageName: "server.rack", - title: "external_sync_benefit_server_title", - subtitle: "external_sync_benefit_server_subtitle" - ) - + /// No "bring your own server" row: this screen is only reachable from inside a connected + /// browser, and connecting a server is free anyway — pitching it on a paywall reads as + /// charging for something the user already has. LoginBenefitSectionView( imageName: "waveform", title: "external_sync_benefit_stream_title", @@ -38,7 +35,7 @@ struct MediaServersLoginView: View { ) LoginBenefitSectionView( - imageName: "arrow.triangle.2.circlepath", + imageName: "arrow.clockwise.icloud", title: "external_sync_benefit_sync_title", subtitle: "external_sync_benefit_sync_subtitle" ) diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 44298557b..8c724b234 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -547,12 +547,10 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "queue_library_sync_title" = "Library Sync"; "queue_file_uploads_title" = "File Uploads"; "close_title" = "Close"; -"external_sync_benefit_server_title" = "Bring Your Own Server"; -"external_sync_benefit_server_subtitle" = "Connect your existing Jellyfin or Audiobookshelf directly to the app."; "external_sync_benefit_stream_title" = "Stream & Save Space"; "external_sync_benefit_stream_subtitle" = "Listen instantly by streaming directly from your source. No need to download files or use up local storage."; "external_sync_benefit_sync_title" = "Two-Way Progress Sync"; -"external_sync_benefit_sync_subtitle" = "Your listening progress stays perfectly synced with your server and across all your devices."; +"external_sync_benefit_sync_subtitle" = "Your position syncs both ways with Jellyfin or Audiobookshelf, and through your BookPlayer account so every device you use stays in step."; "external_sync_info_title" = "Stream & Sync"; "queued_tasks_title" = "Queued Tasks"; "info_title" = "Info"; From a289e496aab64f19b7147b028b5ea2be8a6de060 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 17 Sep 2026 17:58:40 -0500 Subject: [PATCH 142/172] fix: the media-server paywall stops disclaiming someone else's product MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The shared disclaimer was written for the cloud funnel and both of its bullets are wrong on this screen. "Due to ongoing server costs for cloud storage and progress syncing" describes storage we do not provide these users: lite sets `.uploadFile: false`, so their audio never reaches our S3 and stays on their own server. Telling a self-hoster they are paying for our storage is both false and the claim least likely to land with that audience. Worse, "you only need an account with us if you plan to listen across different devices" sits directly above Sign in with Apple and Continue with Passkey, and this screen cannot proceed without an account — streaming needs a purchase and the purchase needs the account. The text talked the reader out of the thing the screen was asking for. Deleting the block outright was the other option and I did not take it: the question a self-hoster asks is sharper here than on the cloud screen, not softer — my server, my bandwidth, why am I paying you. Leaving that unanswered on a paywall reads worse than answering it. So the slot stays and the words change: Your audiobook files stay on your own server, never on ours. Your subscription unlocks streaming and covers the cost of syncing your progress between devices through our servers. The two halves are deliberately different verbs. Streaming is UNLOCKED — it costs us nothing, since it is their server and their bandwidth, and pretending otherwise invites exactly the objection above. The syncing is what we COVER THE COST of, because that genuinely runs on our machines. Naming our servers is the point rather than an admission: "we never store your audiobooks" alone implies we store nothing, which is untrue, and a reader who learns otherwise from a network trace has been misled by omission. It says "audiobook FILES" for the same reason. Two things about this branch make the looser wording a claim the code will not back. A media-server book that is DOWNLOADED is not a special object — `SingleFileDownloadService` moves it into the documents folder and the ordinary import pipeline turns it into a regular local `Book`, which `.pro` then uploads. And even on lite the library rows travel: `handleItemsToUpload` schedules `scheduleLibraryItemUploadJob` and `scheduleExternalResourceUpload` for every item, which is what DB-only sync means. The audio is what never leaves their server, so the audio is what the sentence promises. `LoginDisclaimerSectionView` takes its bullets as a parameter now, defaulting to the existing two keys, so `LoginView` is untouched. `ForEach` iterates `.indices` because `LocalizedStringKey` is Equatable but not Hashable, so `id: \.self` over the elements does not compile. --- BookPlayer/Base.lproj/Localizable.strings | 1 + .../Login/LoginDisclaimerSectionView.swift | 24 ++++++++++++++----- .../Profile/Login/MediaServersLoginView.swift | 5 +++- BookPlayer/en.lproj/Localizable.strings | 1 + 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index a4e58af2c..7236ce81d 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -552,6 +552,7 @@ We're working hard on providing a seamless experience, if possible, please conta "external_sync_benefit_stream_subtitle" = "Listen instantly by streaming directly from your source. No need to download files or use up local storage."; "external_sync_benefit_sync_title" = "Two-Way Progress Sync"; "external_sync_benefit_sync_subtitle" = "Your position syncs both ways with Jellyfin or Audiobookshelf, and through your BookPlayer account so every device you use stays in step."; +"external_sync_disclaimer_description" = "- Your audiobook files stay on your own server, never on ours. Your subscription unlocks streaming and covers the cost of syncing your progress between devices through our servers."; "external_sync_info_title" = "Stream & Sync"; "queued_tasks_title" = "Queued Tasks"; "info_title" = "Info"; diff --git a/BookPlayer/Profile/Login/LoginDisclaimerSectionView.swift b/BookPlayer/Profile/Login/LoginDisclaimerSectionView.swift index 0a738d8ce..e3b420e9a 100644 --- a/BookPlayer/Profile/Login/LoginDisclaimerSectionView.swift +++ b/BookPlayer/Profile/Login/LoginDisclaimerSectionView.swift @@ -12,17 +12,29 @@ import SwiftUI struct LoginDisclaimerSectionView: View { @EnvironmentObject private var theme: ThemeViewModel + /// The bullets under the shared heading. The default is the cloud pitch, where we do host + /// the files; the media-server screen hosts nothing of theirs and says something different. + let descriptions: [LocalizedStringKey] + + init( + descriptions: [LocalizedStringKey] = [ + "benefits_disclaimer_account_description", + "benefits_disclaimer_subscription_description", + ] + ) { + self.descriptions = descriptions + } + var body: some View { Section { VStack(alignment: .leading, spacing: 10) { Text("benefits_disclaimer_title") .bpFont(.title) - Text("benefits_disclaimer_account_description") - .bpFont(.body) - .foregroundStyle(theme.secondaryColor) - Text("benefits_disclaimer_subscription_description") - .bpFont(.body) - .foregroundStyle(theme.secondaryColor) + ForEach(descriptions.indices, id: \.self) { index in + Text(descriptions[index]) + .bpFont(.body) + .foregroundStyle(theme.secondaryColor) + } } } .listRowBackground(Color.clear) diff --git a/BookPlayer/Profile/Login/MediaServersLoginView.swift b/BookPlayer/Profile/Login/MediaServersLoginView.swift index 840e7eaba..649fc9509 100644 --- a/BookPlayer/Profile/Login/MediaServersLoginView.swift +++ b/BookPlayer/Profile/Login/MediaServersLoginView.swift @@ -40,7 +40,10 @@ struct MediaServersLoginView: View { subtitle: "external_sync_benefit_sync_subtitle" ) - LoginDisclaimerSectionView() + /// Not the shared bullets: those explain hosting costs for files we keep, and we keep + /// none of this user's. Theirs answers the question a self-hoster actually asks — + /// why pay when the server is already mine. + LoginDisclaimerSectionView(descriptions: ["external_sync_disclaimer_description"]) } .applyListStyle(with: theme, background: theme.systemGroupedBackgroundColor) /// The buttons ARE the inset, so the list reserves exactly their height — `LoginView` does diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 8c724b234..4cbf16a6c 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -551,6 +551,7 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "external_sync_benefit_stream_subtitle" = "Listen instantly by streaming directly from your source. No need to download files or use up local storage."; "external_sync_benefit_sync_title" = "Two-Way Progress Sync"; "external_sync_benefit_sync_subtitle" = "Your position syncs both ways with Jellyfin or Audiobookshelf, and through your BookPlayer account so every device you use stays in step."; +"external_sync_disclaimer_description" = "- Your audiobook files stay on your own server, never on ours. Your subscription unlocks streaming and covers the cost of syncing your progress between devices through our servers."; "external_sync_info_title" = "Stream & Sync"; "queued_tasks_title" = "Queued Tasks"; "info_title" = "Info"; From ff39d695ca5fab089fa867cff70f75a48119c830 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 19 Sep 2026 09:48:31 -0500 Subject: [PATCH 143/172] fix: one glyph per idea across the media-server screens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Stream button wore `arrow.down.circle.dotted` — a downward arrow into a dotted circle, which is iOS's pending-download idiom — while sitting beside the actual download button wearing `square.and.arrow.down`. Two download arrows, and the reader left to work out which one streams. It is `waveform` now, in all three places it appeared: the details screen and both the Label and the Image on the library screen, so the two screens no longer disagree about what streaming looks like. That glyph is now absent from the app. The library tab's "Import files" menu had the opposite problem: it used `waveform`, which everywhere else in this codebase means "this is an audiobook" — the library rows, the Jellyfin and AudiobookShelf item icons, the share extension. Importing is not audio, and the clash got worse once `waveform` also started meaning "stream", so it takes `square.and.arrow.down`. Stream now leads and Download follows, and Stream is driven by the app's shared `PrimaryButtonStyle` rather than a fourth hand-rolled treatment — the feature already had three, differing in height, corner radius and font. The style is passed `theme.linkColor` and white, so the button looks as it did while its geometry, pressed and disabled states come from one place. Download is resized to match the style's 48pt height with the same radius; at its old 68x56 it would have stood 8pt taller than the button beside it. Also folded in, per the request: the redundant `.localized` calls that the earlier sweep missed. That sweep parsed `+++ b/` from the diff, and git appends a TAB to paths containing spaces, so `Path(f).exists()` was false and every file under `Library Screen/`, `ItemDetails Section/` and their siblings was skipped in silence — the media-server feature almost in its entirety. 20 lines across 5 files, all of them PR-added; develop's own redundancy is left alone as before. --- .../AudiobookShelfLibraryView.swift | 4 +- .../ItemDetailsHardcoverSectionView.swift | 4 +- .../Library Screen/JellyfinLibraryView.swift | 6 +-- .../Library/ItemList/ItemListView.swift | 2 +- .../IntegrationAudiobookDetailsView.swift | 47 ++++++++----------- .../IntegrationLibraryView.swift | 14 +++--- 6 files changed, 35 insertions(+), 42 deletions(-) diff --git a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift index 889cf391c..b441466f5 100644 --- a/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift +++ b/BookPlayer/AudiobookShelf/Library Screen/AudiobookShelfLibraryView.swift @@ -40,9 +40,9 @@ where Model.Item == AudiobookShelfLibraryItem { Picker(selection: Binding( get: { vm.sortBy }, set: { vm.sortBy = $0 } - ), label: Text("sort_by_title".localized)) { + ), label: Text("sort_by_title")) { Label("sort_most_recent_button", systemImage: "clock").tag(AudiobookShelfLayout.SortBy.recent) - Label("title_button".localized, systemImage: "textformat.abc").tag(AudiobookShelfLayout.SortBy.title) + Label("title_button", systemImage: "textformat.abc").tag(AudiobookShelfLayout.SortBy.title) } } } diff --git a/BookPlayer/Hardcover/ItemDetails Section/ItemDetailsHardcoverSectionView.swift b/BookPlayer/Hardcover/ItemDetails Section/ItemDetailsHardcoverSectionView.swift index 97671f197..86db3b59d 100644 --- a/BookPlayer/Hardcover/ItemDetails Section/ItemDetailsHardcoverSectionView.swift +++ b/BookPlayer/Hardcover/ItemDetails Section/ItemDetailsHardcoverSectionView.swift @@ -18,7 +18,7 @@ struct ItemDetailsHardcoverSectionView: View { var body: some View { Section( header: HStack(spacing: Spacing.S) { - Text("section_item_hardcover".localized) + Text("section_item_hardcover") .foregroundStyle(theme.secondaryColor) if viewModel.isFetchingBook { ProgressView() @@ -49,7 +49,7 @@ private struct HardcoverSelectionLabel: View { if let row = pickerViewModel.selected { HardcoverBookRow(viewModel: row) } else { - Text("select_title".localized) + Text("select_title") } } } diff --git a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift index d0e40c16e..255fe4ae1 100644 --- a/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift +++ b/BookPlayer/Jellyfin/Library Screen/JellyfinLibraryView.swift @@ -46,10 +46,10 @@ where Model.Item == JellyfinLibraryItem { Picker(selection: Binding( get: { vm.sortBy }, set: { vm.sortBy = $0 } - ), label: Text("sort_by_title".localized)) { - Text("sort_default_option".localized).tag(JellyfinLayout.SortBy.smart) + ), label: Text("sort_by_title")) { + Text("sort_default_option").tag(JellyfinLayout.SortBy.smart) Label("sort_most_recent_button", systemImage: "clock").tag(JellyfinLayout.SortBy.recent) - Label("sort_name_option".localized, systemImage: "textformat.abc").tag(JellyfinLayout.SortBy.name) + Label("sort_name_option", systemImage: "textformat.abc").tag(JellyfinLayout.SortBy.name) } } } diff --git a/BookPlayer/Library/ItemList/ItemListView.swift b/BookPlayer/Library/ItemList/ItemListView.swift index fc7aaaad2..afad81da6 100644 --- a/BookPlayer/Library/ItemList/ItemListView.swift +++ b/BookPlayer/Library/ItemList/ItemListView.swift @@ -381,7 +381,7 @@ struct ItemListView: View { @ViewBuilder func addFilesOptions() -> some View { - Button("import_button", systemImage: "waveform") { + Button("import_button", systemImage: "square.and.arrow.down") { showDocumentPicker = true } Button("download_from_url_title", systemImage: "link") { diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index d634036b0..d65dc0095 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -83,8 +83,8 @@ struct IntegrationAudiobookDetailsView< // is hasStreamingEnabled() (anyone who has ever paid), and SynchronizeButton // routes to goToSubscribe() when it is false. HStack(spacing: 12) { - SmallDownloadButton SynchronizeButton + SmallDownloadButton } .padding(.horizontal) .padding(.vertical, 12) @@ -92,32 +92,32 @@ struct IntegrationAudiobookDetailsView< if let details = viewModel.details { VStack { if let filePath = details.filePath { - DisclosureGroup("file_path_title".localized, isExpanded: $isFilePathExpanded) { + DisclosureGroup("file_path_title", isExpanded: $isFilePathExpanded) { Text(filePath) } .accessibilityHidden(true) } if let genres = details.genres, !genres.isEmpty { - DisclosureGroup("genres_title".localized, isExpanded: $isGenresExpanded) { + DisclosureGroup("genres_title", isExpanded: $isGenresExpanded) { IntegrationTagsView(tags: genres) } } if let overview = details.overview { - DisclosureGroup("overview_title".localized, isExpanded: $isOverviewExpanded) { + DisclosureGroup("overview_title", isExpanded: $isOverviewExpanded) { Text(overview) } } if let tags = details.tags, !tags.isEmpty { - DisclosureGroup("tags_title".localized, isExpanded: $isTagsExpanded) { + DisclosureGroup("tags_title", isExpanded: $isTagsExpanded) { IntegrationTagsView(tags: tags) } } if !details.seriesEntries.isEmpty { - DisclosureGroup("series_title".localized, isExpanded: .constant(true)) { + DisclosureGroup("series_title", isExpanded: .constant(true)) { VStack(alignment: .leading, spacing: 8) { ForEach(details.seriesEntries) { item in Text(item.name) @@ -163,16 +163,13 @@ struct IntegrationAudiobookDetailsView< viewModel.error = error } } label: { - HStack { - Image(systemName: "square.and.arrow.down") - } - .accessibilityLabel("download_title".localized) - .frame(width: 36, height: 24) - .padding() - .foregroundStyle(theme.primaryColor) - .background(theme.tertiarySystemBackgroundColor) - .cornerRadius(10) + Image(systemName: "square.and.arrow.down") + .frame(width: 68, height: 48) + .foregroundStyle(theme.primaryColor) + .background(theme.tertiarySystemBackgroundColor) + .clipShape(RoundedRectangle(cornerRadius: 24)) } + .accessibilityLabel("download_title") } @ViewBuilder @@ -195,19 +192,15 @@ struct IntegrationAudiobookDetailsView< } } label: { HStack { - Image(systemName: "arrow.down.circle.dotted") - Text("stream_button".localized) - .bpFont(.title) + /// `waveform`, not a second downward arrow: this sat next to the download button + /// wearing `arrow.down.circle.dotted`, so the screen offered two download glyphs and + /// left you to guess. It also matches the streaming row on the paywall. + Image(systemName: "waveform") + Text("stream_button") } - .frame(height: 24) - .frame(maxWidth: .infinity) - .padding() - // Set once for the label AND the symbol: systemBackgroundColor on linkColor is the - // app's accent-filled button treatment (what the Download button this replaced used). - // primaryColor is the main foreground colour and reads low-contrast on the accent. - .foregroundStyle(theme.systemBackgroundColor) - .background(theme.linkColor) - .cornerRadius(10) } + /// The app's shared primary treatment rather than a fourth hand-rolled one — height, + /// radius, font, pressed and disabled states all come from the style. + .buttonStyle(PrimaryButtonStyle(background: theme.linkColor, foregroundStyle: .white)) } } diff --git a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift index 04a3bca73..24cca1208 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/IntegrationLibraryView.swift @@ -124,7 +124,7 @@ struct IntegrationLibraryView< Button { viewModel.onStreamTapped(useSelectedItems: false) } label: { - Label("stream_button".localized, systemImage: "arrow.down.circle.dotted") + Label("stream_button", systemImage: "waveform") } .disabled(viewModel.downloadableItemCount == 0) @@ -153,9 +153,9 @@ struct IntegrationLibraryView< var layoutPreferences: some View { if viewModel.showsLayoutPreferences { ThemedSection { - Picker(selection: $viewModel.layout, label: Text("layout_options_title".localized)) { - Label("layout_grid_option".localized, systemImage: "square.grid.2x2").tag(IntegrationLayout.Options.grid) - Label("layout_list_option".localized, systemImage: "list.bullet").tag(IntegrationLayout.Options.list) + Picker(selection: $viewModel.layout, label: Text("layout_options_title")) { + Label("layout_grid_option", systemImage: "square.grid.2x2").tag(IntegrationLayout.Options.grid) + Label("layout_list_option", systemImage: "list.bullet").tag(IntegrationLayout.Options.list) } } } @@ -177,14 +177,14 @@ struct IntegrationLibraryView< Button { viewModel.onStreamTapped(useSelectedItems: true) } label: { - Image(systemName: "arrow.down.circle.dotted") - .accessibilityLabel("stream_button".localized) + Image(systemName: "waveform") + .accessibilityLabel("stream_button") } .disabled(viewModel.selectedItems.isEmpty) Button(action: viewModel.onDownloadTapped) { Image(systemName: "arrow.down.to.line") - .accessibilityLabel("download_title".localized) + .accessibilityLabel("download_title") } .disabled(viewModel.selectedItems.isEmpty) } From 9e130c38d828eb93800c1bfeff3fd82ec340b86d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 19 Sep 2026 10:18:02 -0500 Subject: [PATCH 144/172] refactor: one primary button instead of four MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The app had four primary-button treatments and no two agreed: the shared `PrimaryButtonStyle` at 48pt with a 24 radius, `IntegrationFlowPrimaryButton` at 14pt vertical padding with a 12 radius, a hand-rolled Stream button at 56pt with a 10 radius, and another hand-rolled one on the media-server paywall at a 12 radius. Three of them existed because the shared one was wearing the wrong clothes. `PrimaryButtonStyle` inverted black and white by theme, which is Sign in with Apple's treatment — and imitating it was pointless, because that button is Apple's own `SignInWithAppleButton` and takes its look from `.signInWithAppleButtonStyle`, never from us. The lookalike mostly appeared on sign-in screens standing next to the real thing. It is the accent treatment now, matching the Pro callout's Learn More button, so the two hand-rolled copies had no reason to exist: `IntegrationFlowPrimaryButton` is deleted and its three call sites plus the paywall's Continue button use `PrimaryButton`. `disabledWithOpacity` is not needed either — the style already dims through `@Environment(\.isEnabled)`. Shapes follow one rule. Everything is a `Capsule`, including Apple's button, whose corners were never a house choice — we simply never styled them. `Capsule` rather than a radius constant because it tracks the height instead of going quietly wrong when someone changes it, and because `cornerRadius(_:)` is deprecated and was only a clip mask anyway, so it was never setting Apple's `cornerRadius` property regardless. The label goes to `.headline` (17pt semibold). At `.title` (16pt callout) it looked undersized in a 48pt button beside Sign in with Apple, whose text scales with its height; `.titleLarge` (20pt) was tried and reads too loud for a one-word label. On the details screen both buttons now take that style — Stream in the accent, Download in the secondary colours — so they cannot drift apart in height, radius or font the way hand-matched geometry does, and they split the row evenly. Download shows its label instead of a bare glyph, reusing the `download_title` string it was already announcing to VoiceOver; the explicit `accessibilityLabel` goes, since a visible `Label` supplies it. It is no longer `SmallDownloadButton`, because it is not small. Download leads and Stream follows, which is also the order develop had. --- .../IntegrationConnectionFlowView.swift | 38 +++---------------- .../IntegrationAudiobookDetailsView.swift | 19 ++++++---- .../Profile/Login/AppleSignInLink.swift | 3 ++ .../Profile/Login/LoginSignInButton.swift | 3 ++ .../Profile/Login/MediaServersLoginView.swift | 10 +---- BookPlayer/Utils/Views/PrimaryButton.swift | 19 +++++++--- 6 files changed, 37 insertions(+), 55 deletions(-) diff --git a/BookPlayer/MediaServerIntegration/Connection Screen/IntegrationConnectionFlowView.swift b/BookPlayer/MediaServerIntegration/Connection Screen/IntegrationConnectionFlowView.swift index acc36bd57..232a47ebe 100644 --- a/BookPlayer/MediaServerIntegration/Connection Screen/IntegrationConnectionFlowView.swift +++ b/BookPlayer/MediaServerIntegration/Connection Screen/IntegrationConnectionFlowView.swift @@ -275,14 +275,12 @@ struct IntegrationAddressScreen: Vie IntegrationCustomHeadersSectionView(customHeaders: $viewModel.form.customHeaders) IntegrationFlowButtonsSection { - IntegrationFlowPrimaryButton( - title: "integration_connect_button".localized, - isDisabled: address.url == nil || isLoading - ) { + PrimaryButton(text: "integration_connect_button".localized) { hideKeyboard() viewModel.form.serverUrl = address.urlString ?? "" onConnect() } + .disabled(address.url == nil || isLoading) } } .scrollDismissesKeyboard(.immediately) @@ -355,9 +353,10 @@ struct IntegrationMethodScreen: View } } IntegrationFlowButtonsSection { - IntegrationFlowPrimaryButton(title: primaryTitle, isDisabled: isLoading) { + PrimaryButton(text: primaryTitle) { onStartAlternative() } + .disabled(isLoading) if viewModel.supportsPasswordSignIn { Button { viewModel.flowPath.append(.password) @@ -418,11 +417,8 @@ struct IntegrationPasswordScreen: Vi onCommit: onSignIn ) IntegrationFlowButtonsSection { - IntegrationFlowPrimaryButton( - title: "integration_sign_in_button".localized, - isDisabled: viewModel.form.username.isEmpty || viewModel.form.password.isEmpty || isLoading, - action: onSignIn - ) + PrimaryButton(text: "integration_sign_in_button".localized, action: onSignIn) + .disabled(viewModel.form.username.isEmpty || viewModel.form.password.isEmpty || isLoading) } } .scrollDismissesKeyboard(.immediately) @@ -525,25 +521,3 @@ struct IntegrationFlowButtonsSection: View { } } } - -/// The flow's primary action — filled, full width, directly after the screen's content. -struct IntegrationFlowPrimaryButton: View { - let title: String - var isDisabled: Bool = false - var action: () -> Void - - @EnvironmentObject var theme: ThemeViewModel - - var body: some View { - Button(action: action) { - Text(title) - .bpFont(.headline) - .frame(maxWidth: .infinity) - .padding(.vertical, 14) - .background(theme.linkColor) - .foregroundColor(.white) - .clipShape(RoundedRectangle(cornerRadius: 12)) - } - .disabledWithOpacity(isDisabled) - } -} diff --git a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift index d65dc0095..523dd53b4 100644 --- a/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift +++ b/BookPlayer/MediaServerIntegration/Library Screen/Details/IntegrationAudiobookDetailsView.swift @@ -83,8 +83,8 @@ struct IntegrationAudiobookDetailsView< // is hasStreamingEnabled() (anyone who has ever paid), and SynchronizeButton // routes to goToSubscribe() when it is false. HStack(spacing: 12) { + DownloadButton SynchronizeButton - SmallDownloadButton } .padding(.horizontal) .padding(.vertical, 12) @@ -154,7 +154,7 @@ struct IntegrationAudiobookDetailsView< } @ViewBuilder - private var SmallDownloadButton: some View { + private var DownloadButton: some View { Button { do { try viewModel.beginDownloadAudiobook(viewModel.item) @@ -163,13 +163,16 @@ struct IntegrationAudiobookDetailsView< viewModel.error = error } } label: { - Image(systemName: "square.and.arrow.down") - .frame(width: 68, height: 48) - .foregroundStyle(theme.primaryColor) - .background(theme.tertiarySystemBackgroundColor) - .clipShape(RoundedRectangle(cornerRadius: 24)) + Label("download_title", systemImage: "square.and.arrow.down") } - .accessibilityLabel("download_title") + /// The same style as Stream, in the secondary colours: sharing it means the two cannot + /// drift apart in height, radius or font the way hand-matched geometry does. + .buttonStyle( + PrimaryButtonStyle( + background: theme.tertiarySystemBackgroundColor, + foregroundStyle: theme.primaryColor + ) + ) } @ViewBuilder diff --git a/BookPlayer/Profile/Login/AppleSignInLink.swift b/BookPlayer/Profile/Login/AppleSignInLink.swift index ced879092..14f23adc8 100644 --- a/BookPlayer/Profile/Login/AppleSignInLink.swift +++ b/BookPlayer/Profile/Login/AppleSignInLink.swift @@ -58,6 +58,9 @@ struct AppleSignInLink: View { } .frame(height: 46) .signInWithAppleButtonStyle(theme.useDarkVariant ? .white : .black) + /// Apple's default corner radius is its own, not a house choice — clipping it to the same + /// capsule the rest of our buttons use keeps one shape language on these screens. + .clipShape(Capsule()) .padding(.horizontal, Spacing.M) } } diff --git a/BookPlayer/Profile/Login/LoginSignInButton.swift b/BookPlayer/Profile/Login/LoginSignInButton.swift index f08e02661..766cb946d 100644 --- a/BookPlayer/Profile/Login/LoginSignInButton.swift +++ b/BookPlayer/Profile/Login/LoginSignInButton.swift @@ -54,6 +54,9 @@ struct LoginSignInButton: View { } .frame(height: 46) .signInWithAppleButtonStyle(theme.useDarkVariant ? .white : .black) + /// Apple's default corner radius is its own, not a house choice — clipping it to the same + /// capsule the rest of our buttons use keeps one shape language on these screens. + .clipShape(Capsule()) .padding(.vertical) .padding(.horizontal, Spacing.M) } diff --git a/BookPlayer/Profile/Login/MediaServersLoginView.swift b/BookPlayer/Profile/Login/MediaServersLoginView.swift index 649fc9509..e5a863651 100644 --- a/BookPlayer/Profile/Login/MediaServersLoginView.swift +++ b/BookPlayer/Profile/Login/MediaServersLoginView.swift @@ -61,16 +61,8 @@ struct MediaServersLoginView: View { } .padding(.bottom, Spacing.S) } else { - Button { + PrimaryButton(text: "continue_title".localized) { showCompleteAccount = true - } label: { - Text("continue_title") - .font(.headline) - .foregroundColor(.white) - .frame(maxWidth: .infinity) - .padding() - .background(theme.linkColor) - .cornerRadius(12) } .padding(.horizontal) .padding(.bottom, Spacing.S) diff --git a/BookPlayer/Utils/Views/PrimaryButton.swift b/BookPlayer/Utils/Views/PrimaryButton.swift index f9155c689..292c49451 100644 --- a/BookPlayer/Utils/Views/PrimaryButton.swift +++ b/BookPlayer/Utils/Views/PrimaryButton.swift @@ -19,10 +19,12 @@ struct PrimaryButton: View { Button(action: action, label: { Text(text) }) - .buttonStyle(PrimaryButtonStyle( - background: theme.useDarkVariant ? .white : .black, - foregroundStyle: theme.useDarkVariant ? .black : .white - )) + /// The app's accent treatment, matching the Pro callout's Learn More button. It used to + /// invert black/white by theme, which was an imitation of Sign in with Apple — and an + /// unnecessary one: that button is Apple's own `SignInWithAppleButton` and gets its look + /// from `.signInWithAppleButtonStyle`, never from here. The lookalike mostly turned up on + /// sign-in screens standing next to the real thing. + .buttonStyle(PrimaryButtonStyle(background: theme.linkColor, foregroundStyle: .white)) } } @@ -33,7 +35,10 @@ struct PrimaryButtonStyle: ButtonStyle { func makeBody(configuration: Self.Configuration) -> some View { configuration.label - .bpFont(.title) + /// `.headline` (17pt semibold), not `.title` (16pt callout): the smaller size left the + /// label looking undersized in a 48pt button next to Sign in with Apple, whose text + /// scales with its height. It is also the conventional size for a full-width iOS button. + .bpFont(.headline) .frame(height: 48) .frame(maxWidth: .infinity) .background( @@ -46,7 +51,9 @@ struct PrimaryButtonStyle: ButtonStyle { ? foregroundStyle : foregroundStyle.opacity(0.5) ) - .clipShape(RoundedRectangle(cornerRadius: 24)) + /// `Capsule`, not a hardcoded radius: it tracks the height instead of silently going + /// wrong when someone changes it, and it matches the Pro callout's Learn More button. + .clipShape(Capsule()) .opacity(configuration.isPressed ? 0.4 : 1.0) } } From 5c65c71c68cfa2a074e399b2411646bf6b02ff81 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 19 Sep 2026 11:29:44 -0500 Subject: [PATCH 145/172] fix: the SwiftUI import sheet stops imitating a navigation bar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Comparing it against the `ImportViewController` it will eventually replace, the differences came from three separate causes rather than one drift. The structural one: it re-implemented a navigation bar. The UIKit screen uses a real `UINavigationBar` with `prefersLargeTitles` and `systemItem="cancel"` / `"done"`, which is why iOS 26 gives it a large title and circular glass buttons for nothing. This built an HStack of two buttons with hand-drawn `Circle()`s inside a `ZStack`, so it could inherit none of that. It is a `NavigationStack` with `.toolbar` and `.navigationTitle` now, over a `List` with the house `applyListStyle` — which also brings `toolbarColorScheme`, a modifier that only does anything once a real navigation bar exists. The two fixes were one fix. Two colours were drawn with the background token: the button circles at `systemBackgroundColor.opacity(0.3)` and the row dividers at `0.2`. On a dark theme that is near-black on near-black, which is why the circles were invisible. Both elements are gone — `List` and the toolbar supply them — along with the hardcoded 24pt horizontal padding, so the insets are the system's like every other list in the app. The row icon was a literal `.pink`, ignoring the theme; `ImportTableViewCell` tints it `theme.linkColor`. Rows are sorted with `localizedStandardCompare`, matching `ImportFileItem`'s `Comparable` and the library's own sort — "002" before "010", which plain string ordering gets wrong on the numbered filenames audiobooks nearly always have. Sorted in the shell so every adopter inherits it. The header gains `.localizedCapitalized`, as UIKit has. `import_warning_description` is now a parameter rather than fixed copy, and the external flow passes none: it warns that files are still transferring and the count may change, and neither is true there — the batch is frozen when the sheet opens. Not defaulted, because a default is how that copy reached this screen in the first place. Where it IS supplied it is pinned with `safeAreaInset` in a new `glassCard` helper: as a section footer, a long list scrolled the one caveat you are meant to read before confirming clean off the screen. `glassCard` gives glass an explicit rounded rect, because `liquidGlassBackground` is shaped for floating pills — the mini player, the player's bubble buttons — and stretching it full width produced a capsule with its ends clipped to the display. Swipe-to-dismiss is disabled, deliberately stricter than UIKit, which allows it and runs `try? discardImportOperation()` on the way out — cleanup whose failure it then swallows. The four things the file flow must bring before it can adopt this are documented on the type: closures that can report failure, folder icons with sub-counts, the directory watching that keeps the count live, and counting files inside folders rather than rows. None is reachable from the external flow, whose batch is frozen and whose removals cannot fail. --- .../ExternalSource/ExternalImportView.swift | 6 +- .../Import/ImportConfirmationView.swift | 227 ++++++++++-------- .../Utils/Extensions/View+BookPlayer.swift | 11 + 3 files changed, 149 insertions(+), 95 deletions(-) diff --git a/BookPlayer/Import/ExternalSource/ExternalImportView.swift b/BookPlayer/Import/ExternalSource/ExternalImportView.swift index 270d2f6bc..e0837a388 100644 --- a/BookPlayer/Import/ExternalSource/ExternalImportView.swift +++ b/BookPlayer/Import/ExternalSource/ExternalImportView.swift @@ -24,13 +24,17 @@ struct ExternalImportView: View { var body: some View { ImportConfirmationView( rows: viewModel.confirmationRows, + /// No description: `import_warning_description` warns that files are still + /// transferring and the count may change, and neither is true here — the batch is + /// frozen when the sheet opens and nothing is being copied. onRemove: { viewModel.removeResource(withId: $0) }, onConfirm: { viewModel.confirm() dismiss() }, onCancel: { - // Dismissal alone is cancellation: .sheet(item:) nils the staged batch + // Cancelling is just dismissing: `.sheet(item:)` nils the staged batch on its way + // out. The shell disables interactive dismissal, so this runs only from the X. dismiss() } ) diff --git a/BookPlayer/Import/ImportConfirmationView.swift b/BookPlayer/Import/ImportConfirmationView.swift index 50cfd9f00..88bb1e5d1 100644 --- a/BookPlayer/Import/ImportConfirmationView.swift +++ b/BookPlayer/Import/ImportConfirmationView.swift @@ -6,8 +6,8 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // -import SwiftUI import BookPlayerKit +import SwiftUI /// One removable row of an import confirmation list. Flow-agnostic: the external /// flow renders waveform rows from its batch; the file-import flow (a future @@ -20,123 +20,162 @@ struct ImportConfirmationRow: Identifiable { var subtitle: String? } -/// The reusable import-confirmation shell: header, description, count, a removable -/// row list, and cancel/confirm actions. Deliberately presentation-agnostic — +/// The reusable import-confirmation shell: title, optional description, count, a +/// removable row list, and cancel/confirm actions. Deliberately presentation-agnostic — /// dismissal, destructive-cancel semantics, and row sourcing belong to the flow -/// wrappers (see `ExternalImportView`; `ImportViewController` is the future -/// adopter for the file flow, whose ImportViewModel is already an -/// ObservableObject publishing its rows). +/// wrappers (see `ExternalImportView`). +/// +/// # Gaps for the `ImportViewController` retirement +/// +/// This shell is currently shaped for the external flow, whose needs are the simpler +/// half. Four things the UIKit screen does are NOT implemented here, and the file flow +/// cannot adopt it until they are. None of them are reachable today: an external batch +/// is frozen at confirmation and its removals cannot fail. +/// +/// 1. **Failure has nowhere to go.** `onRemove` and `onCancel` are non-throwing, because the +/// external flow only mutates an array and dismisses. Their file-flow equivalents both +/// throw — `ImportViewModel.deleteItem` and `discardImportOperation` — and +/// `ImportViewController` catches each and raises `error_title`. Adopting needs throwing +/// closures, or an error binding, or those failures vanish silently. `onConfirm` is fine +/// as it is: `createOperation()` does not throw. +/// 2. **Folder rows.** `ImportViewController` picks `folder` vs `waveform` per item and +/// fills a "N Files" subtitle for folders. `ImportConfirmationRow` already carries +/// `icon` and `subtitle` for this; only the external flow's mapping ignores them, +/// since media-server items are always single files. +/// 3. **Live counts.** `ImportViewModel.subscribeNewFolders` runs a `DirectoryWatcher` per +/// nested SUBDIRECTORY — not the dropped folder itself, so files landing in its root +/// never bump `subItems` — and raises the count as files arrive. That is what +/// `import_warning_description` warns about, so without it the copy is a promise the +/// screen cannot keep, which is why the external flow passes no description at all. +/// 4. **Total vs row count.** The UIKit header counts files INSIDE folders via +/// `getTotalItems()`; this counts rows. Identical until folders appear. struct ImportConfirmationView: View { let rows: [ImportConfirmationRow] + /// Nil when the flow has no caveat to give. Not defaulted on purpose: a default is how + /// the file flow's "transferring files may take a while" ended up on the external + /// screen, where nothing transfers and the batch cannot change size. + var description: LocalizedStringKey? let onRemove: (ImportConfirmationRow.ID) -> Void let onConfirm: () -> Void let onCancel: () -> Void @EnvironmentObject private var theme: ThemeViewModel - var body: some View { - ZStack { - theme.systemBackgroundColor - .ignoresSafeArea() + /// Finder-style ordering, matching `ImportFileItem`'s `Comparable` and the library's own + /// sort: "002" before "010", which plain string ordering gets wrong on the numbered + /// filenames audiobooks almost always have. Sorted here rather than per flow so every + /// adopter gets it. + private var sortedRows: [ImportConfirmationRow] { + rows.sorted { $0.title.localizedStandardCompare($1.title) == .orderedAscending } + } - VStack(alignment: .leading, spacing: 20) { - HStack { + var body: some View { + NavigationStack { + List { + Section { + ForEach(sortedRows) { row in + HStack(spacing: Spacing.S1) { + Button { + withAnimation { + onRemove(row.id) + } + } label: { + Image(systemName: "minus.circle.fill") + .foregroundStyle(.red) + .bpFont(.titleLarge) + } + .buttonStyle(.plain) + .accessibilityLabel("delete_button") + + Image(systemName: row.icon) + .foregroundStyle(theme.linkColor) + .accessibilityHidden(true) + + VStack(alignment: .leading, spacing: 2) { + Text(row.title) + .foregroundStyle(theme.primaryColor) + .bpFont(.footnote) + .lineLimit(1) + + if let subtitle = row.subtitle { + Text(subtitle) + .foregroundStyle(theme.secondaryColor) + .bpFont(.caption) + .lineLimit(1) + } + } + } + .listRowBackground(theme.systemBackgroundColor) + } + } header: { + Text( + String.localizedStringWithFormat("files_title".localized, rows.count) + .localizedCapitalized + ) + .bpFont(.subheadline) + .foregroundStyle(theme.secondaryColor) + .accessibilityAddTraits(.isHeader) + } + } + .applyListStyle(with: theme, background: theme.systemBackgroundColor) + /// Pinned rather than a section footer: this is the caveat to read BEFORE confirming, + /// and as a footer a long enough list scrolled it off screen entirely. `safeAreaInset` + /// also reserves its height, so the last row can still be scrolled clear of it. + .safeAreaInset(edge: .bottom) { + if let description { + Text(description) + .bpFont(.subheadline) + /// `primaryColor`, not secondary: on glass the muted tone loses too much + /// contrast against whatever rows happen to scroll behind it. + .foregroundStyle(theme.primaryColor) + .multilineTextAlignment(.center) + .frame(maxWidth: .infinity) + .padding(.horizontal, Spacing.S) + .padding(.vertical, Spacing.S1) + /// An inset CARD, not a full-width capsule. `liquidGlassBackground` is built for + /// floating, content-sized chrome — the mini player and the player's bubble + /// buttons — so stretching it edge to edge produced a capsule with its ends + /// clipped to the screen. Margins plus an explicit rounded rect give it the room + /// the treatment expects. + .glassCard() + .padding(.horizontal, Spacing.S) + .padding(.bottom, Spacing.S2) + } + } + /// Set here rather than inherited: the two current call sites happen to sit under a + /// `.tint(theme.linkColor)`, but a reusable shell should not depend on an ancestor the + /// file flow will not have. `linkColor` also matches what UIKit puts on the bar — + /// the hand-rolled buttons this replaced used `primaryColor`, which never did. + .tint(theme.linkColor) + /// Cancelling has to be a choice: a swipe-away would discard a staged import by + /// accident. Deliberately STRICTER than the UIKit screen, which allows the swipe and + /// runs `try? discardImportOperation()` from `presentationControllerDidDismiss` — + /// cleanup whose failure it then swallows. The file flow should adopt this stricter + /// behaviour rather than restore that path. + .interactiveDismissDisabled() + .navigationTitle("import_title") + .toolbar { + ToolbarItem(placement: .cancellationAction) { Button { onCancel() } label: { Image(systemName: "xmark") - .accessibilityLabel("cancel_button") - .bpFont(.title) - .foregroundColor(theme.primaryColor) - .frame(width: 44, height: 44) - .background( - Circle().stroke(theme.systemBackgroundColor.opacity(0.3), lineWidth: 1) - ) } + .accessibilityLabel("cancel_button") + } - Spacer() - + ToolbarItem(placement: .confirmationAction) { Button { onConfirm() } label: { Image(systemName: "checkmark") - .accessibilityLabel("import_button") - .bpFont(.title) - .foregroundColor(theme.primaryColor) - .frame(width: 44, height: 44) - .background( - Circle().stroke(theme.systemBackgroundColor.opacity(0.3), lineWidth: 1) - ) } - // Parity with the file flow's ImportViewController, which disables Done - // at zero files: confirming an emptied list is a no-op — don't offer it + .accessibilityLabel("import_button") + /// Parity with `ImportViewController`, which disables Done at zero files: + /// confirming an emptied list is a no-op, so don't offer it. .disabled(rows.isEmpty) } - .safeAreaPadding(.top) - - // Headers - Text("import_title") - .bpFont(.titleStory) - .fontWeight(.bold) - .foregroundColor(theme.primaryColor) - - Text("import_warning_description") - .bpFont(.subheadline) - .foregroundColor(theme.primaryColor.opacity(0.6)) - .lineSpacing(4) - - Text(String.localizedStringWithFormat("files_title".localized, rows.count)) - .bpFont(.headline) - .foregroundColor(theme.primaryColor.opacity(0.6)) - .padding(.top, 10) - - ScrollView { - LazyVStack(spacing: 0) { - ForEach(rows) { row in - HStack(spacing: 16) { - Button { - withAnimation { - onRemove(row.id) - } - } label: { - Image(systemName: "minus.circle.fill") - .accessibilityLabel("delete_button") - .foregroundColor(.red) - .bpFont(.titleLarge) - } - - Image(systemName: row.icon) - .foregroundColor(.pink) - .accessibilityHidden(true) - - VStack(alignment: .leading, spacing: 2) { - Text(row.title) - .foregroundColor(theme.primaryColor) - .bpFont(.footnote) - .lineLimit(1) - - if let subtitle = row.subtitle { - Text(subtitle) - .foregroundColor(theme.secondaryColor) - .bpFont(.caption) - .lineLimit(1) - } - } - - Spacer() - } - .padding(.vertical, 14) - - // Separator - Divider() - .background(theme.systemBackgroundColor.opacity(0.2)) - } - } - } - - Spacer() } - .padding(.horizontal, 24) } } } diff --git a/BookPlayer/Utils/Extensions/View+BookPlayer.swift b/BookPlayer/Utils/Extensions/View+BookPlayer.swift index b94ab01e0..36feedbcf 100644 --- a/BookPlayer/Utils/Extensions/View+BookPlayer.swift +++ b/BookPlayer/Utils/Extensions/View+BookPlayer.swift @@ -333,6 +333,17 @@ extension View { } extension View { + /// Glass in an explicit rounded rect rather than the default capsule, for panels that span + /// a width instead of floating as a pill. + @ViewBuilder + func glassCard(cornerRadius: CGFloat = 16) -> some View { + if #available(iOS 26.0, *) { + glassEffect(in: .rect(cornerRadius: cornerRadius)) + } else { + background(.ultraThinMaterial, in: .rect(cornerRadius: cornerRadius)) + } + } + @ViewBuilder func liquidGlassBackground() -> some View { if #available(iOS 26.0, *) { From b1b80438d057adf72846f13be52f717fdb4ff420 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 20 Sep 2026 07:51:45 -0500 Subject: [PATCH 146/172] fix: the login buttons are the inset, not an overlay MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `LoginView` reserved a hardcoded 88pt of bottom safe area with a clear spacer and then floated the button stack over it as a `ZStack` sibling. The stack is nearer 100pt before Dynamic Type touches it, so the reservation was short from the start: the last line of the disclaimer could not be scrolled clear of the buttons on a short screen. The buttons ARE the `safeAreaInset` now, which is what `MediaServersLoginView` already did, so the list reserves exactly their height whatever that height turns out to be and the `ZStack` goes with it. The opaque background matters as much as the geometry, and both screens needed it. `AppleSignInLink` is an opaque pill and hides whatever passes behind it, which is why this never looked broken in a screenshot — but `ContinueWithPasskeyButton` is bare text over nothing, so the disclaimer scrolled straight through it. --- BookPlayer/Profile/Login/LoginView.swift | 55 ++++++++++--------- .../Profile/Login/MediaServersLoginView.swift | 6 +- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/BookPlayer/Profile/Login/LoginView.swift b/BookPlayer/Profile/Login/LoginView.swift index b65e14ed2..b0ec45be8 100644 --- a/BookPlayer/Profile/Login/LoginView.swift +++ b/BookPlayer/Profile/Login/LoginView.swift @@ -19,42 +19,45 @@ struct LoginView: View { @Environment(\.dismiss) private var dismiss var body: some View { - ZStack(alignment: .bottom) { - Form { - LoginBenefitSectionView( - imageName: "icloud.and.arrow.up.fill", - title: "benefits_cloudsync_title", - subtitle: "benefits_cloudsync_description" - ) - LoginBenefitSectionView( - imageName: "applewatch.radiowaves.left.and.right", - title: "Apple Watch (Beta)", - subtitle: "benefits_watchapp_description" - ) - LoginBenefitSectionView( - imageName: "paintpalette.fill", - title: "benefits_themesicons_title", - subtitle: "benefits_themesicons_description" - ) - LoginDisclaimerSectionView() - } - .applyListStyle(with: theme, background: theme.systemGroupedBackgroundColor) - .safeAreaInset(edge: .bottom) { - Color.clear - .frame(height: 88) - } - + Form { + LoginBenefitSectionView( + imageName: "icloud.and.arrow.up.fill", + title: "benefits_cloudsync_title", + subtitle: "benefits_cloudsync_description" + ) + LoginBenefitSectionView( + imageName: "applewatch.radiowaves.left.and.right", + title: "Apple Watch (Beta)", + subtitle: "benefits_watchapp_description" + ) + LoginBenefitSectionView( + imageName: "paintpalette.fill", + title: "benefits_themesicons_title", + subtitle: "benefits_themesicons_description" + ) + LoginDisclaimerSectionView() + } + .applyListStyle(with: theme, background: theme.systemGroupedBackgroundColor) + /// The buttons ARE the inset, so the list reserves exactly their height. This used to + /// reserve a hardcoded 88pt and overlay the stack as a ZStack sibling — but the stack is + /// nearer 100pt before Dynamic Type touches it, so the last disclaimer line could not be + /// scrolled clear of the buttons on a short screen. The opaque background matters as much: + /// `AppleSignInLink` is an opaque pill and hides what passes behind it, while + /// `ContinueWithPasskeyButton` is bare text, so the disclaimer used to scroll straight + /// through it. + .safeAreaInset(edge: .bottom) { VStack(spacing: Spacing.S) { AppleSignInLink { hasSubscription in handleSignInResult(hasSubscription: hasSubscription) } - // Continue with Passkey - goes to registration/sign-in screen + /// Goes to the registration/sign-in screen ContinueWithPasskeyButton { showPasskeyRegistration = true } .padding(.bottom, Spacing.S) } + .background(theme.systemGroupedBackgroundColor) } .environment(\.loadingState, loadingState) .listSectionSpacing(Spacing.S2) diff --git a/BookPlayer/Profile/Login/MediaServersLoginView.swift b/BookPlayer/Profile/Login/MediaServersLoginView.swift index e5a863651..d73070504 100644 --- a/BookPlayer/Profile/Login/MediaServersLoginView.swift +++ b/BookPlayer/Profile/Login/MediaServersLoginView.swift @@ -46,8 +46,9 @@ struct MediaServersLoginView: View { LoginDisclaimerSectionView(descriptions: ["external_sync_disclaimer_description"]) } .applyListStyle(with: theme, background: theme.systemGroupedBackgroundColor) - /// The buttons ARE the inset, so the list reserves exactly their height — `LoginView` does - /// this with a spacer of a hardcoded 88pt and a sibling overlay instead. + /// The buttons ARE the inset, so the list reserves exactly their height. Opaque, because + /// `ContinueWithPasskeyButton` has no background of its own and the disclaimer scrolled + /// straight through it on a short screen. .safeAreaInset(edge: .bottom) { VStack(spacing: Spacing.S) { if accountService.account.id.isEmpty { @@ -68,6 +69,7 @@ struct MediaServersLoginView: View { .padding(.bottom, Spacing.S) } } + .background(theme.systemGroupedBackgroundColor) } /// Load-bearing: `AppleSignInLink` reads `\.loadingState` from the environment and writes /// its progress and its errors there. Without the injection it would write into the From 76e86f2d7820fd3b5edf13109c9f822ca42dd0f7 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 20 Sep 2026 07:51:45 -0500 Subject: [PATCH 147/172] fix: a tip no longer reopens streaming after sign-out MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `hasStreamingEnabled()` asked only whether the user had ever paid, and `donationMade` deliberately outlives logout. A past tipper who signed out kept media-server streaming with no account at all. The gate takes `isSignedIn` now, and reads it from `getAccountId()` rather than `hasAccount()`. Logout blanks the account's fields but leaves the row behind, so `hasAccount()` stays true afterwards — `AccountServiceTests` asserts it is still true even after `deleteAccount()`. Only the id going empty marks a signed-out user. The separate `donationMade` clause goes at the same time, because it was never buying anything. It was read directly to dodge `hasPlusAccess()` returning early on a refunded pro/lite, but RevenueCat attaches `plus` to non-subscription purchases and that check short-circuits before the refund handling, so `hasPlusAccess()` already answers for tippers. Two clauses, both load-bearing: an active tier or a tip, and a subscription that expired without being refunded. `AccountServiceMock.getAccountId()` mirrors the real one in mapping an empty id to nil. Without that, a mock account in the logged-out state — blank id, row still present — reports `Optional("")` and reads as signed IN, which is exactly the state this gate exists to catch. --- .../Mocks/AccountServiceMock.swift | 7 ++- .../Services/AccountServiceTests.swift | 43 +++++++++++++------ Shared/Services/Account/AccountService.swift | 40 +++++++++-------- 3 files changed, 58 insertions(+), 32 deletions(-) diff --git a/BookPlayerTests/Mocks/AccountServiceMock.swift b/BookPlayerTests/Mocks/AccountServiceMock.swift index b5515424d..c3736d434 100644 --- a/BookPlayerTests/Mocks/AccountServiceMock.swift +++ b/BookPlayerTests/Mocks/AccountServiceMock.swift @@ -49,8 +49,13 @@ class AccountServiceMock: AccountServiceProtocol { self.account = account } + /// Mirrors the real `getAccountId()`, which maps an empty id to nil. Without that, a mock + /// account in the logged-out state — blank id, row still present — reports `Optional("")` + /// and reads as signed IN, which is exactly the state the streaming gate has to catch. func getAccountId() -> String? { - return self.account?.id + guard let id = self.account?.id, !id.isEmpty else { return nil } + + return id } func getAccount() -> Account? { diff --git a/BookPlayerTests/Services/AccountServiceTests.swift b/BookPlayerTests/Services/AccountServiceTests.swift index 4f1605b54..4c2b3d6da 100644 --- a/BookPlayerTests/Services/AccountServiceTests.swift +++ b/BookPlayerTests/Services/AccountServiceTests.swift @@ -114,25 +114,40 @@ final class StreamingAccessTests: XCTestCase { XCTAssertFalse(AccountService.hasUnrefundedSubscription(refundDates: [])) } - // MARK: composing the three clauses + // MARK: composing the rule - func testAnyOneClauseGrantsAccess() { - XCTAssertTrue(AccountService.resolveStreamingAccess(hasPlusAccess: true, hasEverSubscribed: false, donationMade: false)) - XCTAssertTrue(AccountService.resolveStreamingAccess(hasPlusAccess: false, hasEverSubscribed: true, donationMade: false)) - XCTAssertTrue(AccountService.resolveStreamingAccess(hasPlusAccess: false, hasEverSubscribed: false, donationMade: true)) + func testEitherPaidClauseGrantsAccessWhenSignedIn() { + XCTAssertTrue( + AccountService.resolveStreamingAccess(isSignedIn: true, hasPlusAccess: true, hasEverSubscribed: false) + ) + XCTAssertTrue( + AccountService.resolveStreamingAccess(isSignedIn: true, hasPlusAccess: false, hasEverSubscribed: true) + ) } - /// The donation clause is read separately from `hasPlusAccess()` for this case: that method - /// returns EARLY on a refunded pro/lite, so a user who tipped and later had a separate - /// subscription refunded would be denied by the first two clauses alone. - func testATipSurvivesARefundedSubscription() { - XCTAssertTrue( - AccountService.resolveStreamingAccess(hasPlusAccess: false, hasEverSubscribed: false, donationMade: true), - "an unrefunded one-time payment is still having paid" + /// The case that prompted the sign-in clause: `donationMade` deliberately outlives logout, + /// so a past tipper who signs out still satisfies `hasPlusAccess()` — and used to keep + /// streaming with no account at all. + func testPayingIsNotEnoughWhileSignedOut() { + XCTAssertFalse( + AccountService.resolveStreamingAccess(isSignedIn: false, hasPlusAccess: true, hasEverSubscribed: false), + "a tip that survived logout must not reopen streaming" + ) + XCTAssertFalse( + AccountService.resolveStreamingAccess(isSignedIn: false, hasPlusAccess: false, hasEverSubscribed: true) ) } - func testNothingPaidDeniesAccess() { - XCTAssertFalse(AccountService.resolveStreamingAccess(hasPlusAccess: false, hasEverSubscribed: false, donationMade: false)) + /// Signing in is necessary, not sufficient — streaming is still something you have to buy. + func testSigningInAloneDeniesAccess() { + XCTAssertFalse( + AccountService.resolveStreamingAccess(isSignedIn: true, hasPlusAccess: false, hasEverSubscribed: false) + ) + } + + func testNothingPaidAndSignedOutDeniesAccess() { + XCTAssertFalse( + AccountService.resolveStreamingAccess(isSignedIn: false, hasPlusAccess: false, hasEverSubscribed: false) + ) } } diff --git a/Shared/Services/Account/AccountService.swift b/Shared/Services/Account/AccountService.swift index 3737a951e..bc65599dc 100644 --- a/Shared/Services/Account/AccountService.swift +++ b/Shared/Services/Account/AccountService.swift @@ -238,14 +238,14 @@ public final class AccountService: AccountServiceProtocol { ) } - /// The streaming rule, taking plain values so the composition is testable: the three inputs - /// come from RevenueCat and CoreData, neither of which a unit test can stand up. + /// The streaming rule, taking plain values so the composition is testable: the inputs come + /// from RevenueCat and CoreData, neither of which a unit test can stand up. static func resolveStreamingAccess( + isSignedIn: Bool, hasPlusAccess: Bool, - hasEverSubscribed: Bool, - donationMade: Bool + hasEverSubscribed: Bool ) -> Bool { - hasPlusAccess || hasEverSubscribed || donationMade + isSignedIn && (hasPlusAccess || hasEverSubscribed) } /// The rule behind `hasEverSubscribed()`, taking the refund dates rather than the @@ -611,22 +611,28 @@ public final class AccountService: AccountServiceProtocol { extension AccountServiceProtocol { - /// Whether media-server streaming is available: anyone who has EVER paid, which is broader - /// than `hasSyncEnabled()` on purpose. Streaming reaches the user's own Jellyfin/AudiobookShelf - /// and never our servers, so it survives a subscription ending — while sync, S3 and the - /// progress pull stay behind an active lite/pro subscription. + /// Whether media-server streaming is available: signed in, AND has paid at some point — + /// broader than `hasSyncEnabled()` on the second half, on purpose. Streaming reaches the + /// user's own Jellyfin/AudiobookShelf and never our servers, so it survives a subscription + /// ending, while sync, S3 and the progress pull stay behind an active lite/pro subscription. + /// + /// `getAccountId()`, not `hasAccount()`: logout blanks the account's fields but leaves the + /// row, so `hasAccount()` stays true afterwards — `AccountServiceTests` asserts it is still + /// true even after `deleteAccount()`. Only the id going empty marks a signed-out user, and + /// without this check a tip alone reopened streaming after sign-out, since `donationMade` + /// deliberately outlives logout. /// - /// The three clauses are each load-bearing: - /// - `hasPlusAccess()` — an active tier, or a one-time tip while its `plus` entitlement holds. - /// - `hasEverSubscribed()` — a subscription that expired without being refunded. - /// - `donationMade` — a tip, read directly rather than through `hasPlusAccess()`, which - /// returns EARLY on a refunded pro/lite and would otherwise deny someone who tipped and - /// later had a separate subscription refunded. + /// Both remaining clauses are load-bearing: + /// - `hasPlusAccess()` — an active tier, or a one-time tip. A tip is not read separately: + /// RevenueCat attaches `plus` to non-subscription purchases, and that check short-circuits + /// before the refund handling, so `hasPlusAccess()` already answers for tippers. + /// - `hasEverSubscribed()` — a subscription that expired without being refunded, which no + /// entitlement reports any more. public func hasStreamingEnabled() -> Bool { return AccountService.resolveStreamingAccess( + isSignedIn: getAccountId() != nil, hasPlusAccess: hasPlusAccess(), - hasEverSubscribed: hasEverSubscribed(), - donationMade: getAccount()?.donationMade == true + hasEverSubscribed: hasEverSubscribed() ) } } From d8a922641ef93ab95d2ac7c66244e524c987c563 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 20 Sep 2026 07:51:45 -0500 Subject: [PATCH 148/172] fix: the provider mark is a glyph, not a picture beside the text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `jellyfin-icon` and `audiobookshelf-icon` were image sets, and an image set interpolated into a `Text` draws at its intrinsic point size with its bottom edge pinned to the baseline — font metrics apply to symbol images only. `jellyfin.svg` declared 20x18.3 and `abs.svg` 16x16, against a `.caption` whose cap height is about 8.5pt. So the marks towered over the line they sat in, disagreed with each other, and ignored Dynamic Type entirely, which is the opposite of what the comment above `subtitle` claimed they did. Both are `.symbolset`s now, authored as v4.0 templates against the real guides: each logo scaled so its ink spans exactly baseline to capline, 70.459 units, which is SF Pro's cap height at the 100 points the template is typeset at. Equal heights rather than equal boxes — Jellyfin's mark is square and Audiobookshelf's is 0.84 as wide as it is tall, so matching width would have made one of them look oversized. Measured against Apple's own symbols, flat shapes land at about 1.0x cap height (square.fill 1.015, book.fill 1.022) while round and pointed ones overshoot (triangle.fill 1.043, circle.fill 1.128). These sit at a strict 1.000; the overshoot is a knob to turn if Jellyfin's apex reads small on device. The same artwork fills all three weight slots on purpose: a brand mark has no business getting bolder next to a bold font. With the mark finally the size of the text, the name beside it was a second copy of the same fact, and the expensive one — "Audiobookshelf • " crowded the author off the single line this row gives it, worst at large Dynamic Type where that line truncates first. Glyph and author now, no name and no separator. That leaves the glyph as the only trace of where an item came from, so VoiceOver needs it, and it never had it: `getAccessibilityLabel` builds from title, details, percent and duration, and the row is `children: .ignore`, so the visible name never reached the accessibility tree either. Only the sighted reader ever knew. `includeSource` adds the provider names, leading the announcement the way the glyphs lead the line, and defaults to false so the Watch cell — which draws no glyph — says exactly what it said before. The names are deliberately unlocalized. They are brands, and wrapping them in a `"from %@"` key would be worse than bare: `localized` is a plain `NSLocalizedString` with no fallback to Base, so the two dozen locales without the key would announce the key itself and swallow the name — a regression aimed squarely at the users the change is for. Two things turned up on the way. `DynamicAccessibilityLabelModifier` rebuilds `SimpleLibraryItem` on every progress tick and when the title-source toggle flips, and neither rebuild passed `externalResources`, which the initialiser defaults to nil; the source would have been announced once and then silently dropped. And the order was undefined — `resourcesArray` is `allObjects` off an `NSSet`, so an item linked to two servers could draw its glyphs, and now speak their names, in a different order each launch. `streamingResource` already documents and pins that hazard, so `displayOrderedMediaServerResources` reuses its comparator for everything the user sees or hears. It mattered little while the names were spelled out; it matters now that the silhouette is all there is. --- .../Contents.json | 15 ---- .../audiobookshelf-icon.imageset/abs.svg | 31 -------- .../Contents.json | 12 +++ .../audiobookshelf.svg | 72 +++++++++++++++++ .../jellyfin-icon.imageset/jellyfin.svg | 1 - .../Contents.json | 15 ++-- .../jellyfin-icon.symbolset/jellyfin.svg | 72 +++++++++++++++++ .../Library/ItemList/Views/BookView.swift | 18 +++-- .../Views/DynamicAccessibilityLabel.swift | 16 ++-- BookPlayer/Services/VoiceOverService.swift | 30 +++++++- .../Services/VoiceOverServiceTest.swift | 77 +++++++++++++++++++ .../SimpleExternalResource.swift | 11 +++ 12 files changed, 300 insertions(+), 70 deletions(-) delete mode 100644 BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/Contents.json delete mode 100644 BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/abs.svg create mode 100644 BookPlayer/Assets.xcassets/audiobookshelf-icon.symbolset/Contents.json create mode 100644 BookPlayer/Assets.xcassets/audiobookshelf-icon.symbolset/audiobookshelf.svg delete mode 100644 BookPlayer/Assets.xcassets/jellyfin-icon.imageset/jellyfin.svg rename BookPlayer/Assets.xcassets/{jellyfin-icon.imageset => jellyfin-icon.symbolset}/Contents.json (61%) create mode 100644 BookPlayer/Assets.xcassets/jellyfin-icon.symbolset/jellyfin.svg diff --git a/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/Contents.json b/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/Contents.json deleted file mode 100644 index 90b58dbed..000000000 --- a/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "abs.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" - } -} diff --git a/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/abs.svg b/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/abs.svg deleted file mode 100644 index 54cb18495..000000000 --- a/BookPlayer/Assets.xcassets/audiobookshelf-icon.imageset/abs.svg +++ /dev/null @@ -1,31 +0,0 @@ - - -bgAsset 6 - - - - - - - - - - - - \ No newline at end of file diff --git a/BookPlayer/Assets.xcassets/audiobookshelf-icon.symbolset/Contents.json b/BookPlayer/Assets.xcassets/audiobookshelf-icon.symbolset/Contents.json new file mode 100644 index 000000000..b521ab8b1 --- /dev/null +++ b/BookPlayer/Assets.xcassets/audiobookshelf-icon.symbolset/Contents.json @@ -0,0 +1,12 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "symbols" : [ + { + "filename" : "audiobookshelf.svg", + "idiom" : "universal" + } + ] +} diff --git a/BookPlayer/Assets.xcassets/audiobookshelf-icon.symbolset/audiobookshelf.svg b/BookPlayer/Assets.xcassets/audiobookshelf-icon.symbolset/audiobookshelf.svg new file mode 100644 index 000000000..f3c0a3c8a --- /dev/null +++ b/BookPlayer/Assets.xcassets/audiobookshelf-icon.symbolset/audiobookshelf.svg @@ -0,0 +1,72 @@ + + + + + + + + + + Weight/Scale Variations + Ultralight + Thin + Light + Regular + Medium + Semibold + Bold + Heavy + Black + + Template v.4.0 + Requires Xcode 14 or greater + Generated from audiobookshelf-icon + Typeset at 100 points + Small + Medium + Large + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/jellyfin.svg b/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/jellyfin.svg deleted file mode 100644 index 5c75f1c06..000000000 --- a/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/jellyfin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/Contents.json b/BookPlayer/Assets.xcassets/jellyfin-icon.symbolset/Contents.json similarity index 61% rename from BookPlayer/Assets.xcassets/jellyfin-icon.imageset/Contents.json rename to BookPlayer/Assets.xcassets/jellyfin-icon.symbolset/Contents.json index 7385abcb2..7675d1c1c 100644 --- a/BookPlayer/Assets.xcassets/jellyfin-icon.imageset/Contents.json +++ b/BookPlayer/Assets.xcassets/jellyfin-icon.symbolset/Contents.json @@ -1,15 +1,12 @@ { - "images" : [ - { - "filename" : "jellyfin.svg", - "idiom" : "universal" - } - ], "info" : { "author" : "xcode", "version" : 1 }, - "properties" : { - "template-rendering-intent" : "template" - } + "symbols" : [ + { + "filename" : "jellyfin.svg", + "idiom" : "universal" + } + ] } diff --git a/BookPlayer/Assets.xcassets/jellyfin-icon.symbolset/jellyfin.svg b/BookPlayer/Assets.xcassets/jellyfin-icon.symbolset/jellyfin.svg new file mode 100644 index 000000000..d3e811bb6 --- /dev/null +++ b/BookPlayer/Assets.xcassets/jellyfin-icon.symbolset/jellyfin.svg @@ -0,0 +1,72 @@ + + + + + + + + + + Weight/Scale Variations + Ultralight + Thin + Light + Regular + Medium + Semibold + Bold + Heavy + Black + + Template v.4.0 + Requires Xcode 14 or greater + Generated from jellyfin-icon + Typeset at 100 points + Small + Medium + Large + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index 6f9a086d1..90421b70a 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -43,7 +43,7 @@ struct BookView: View { : theme.primaryColor } - /// Provider links then the author, as ONE `Text` rather than a stack of them. + /// Provider glyphs then the author, as ONE `Text` rather than a stack of them. /// /// Concatenation buys three things a stack can't: an interpolated `Image` is sized from the /// font, so the provider icon grows with Dynamic Type instead of sitting at a fixed 12pt; @@ -52,17 +52,25 @@ struct BookView: View { /// to look right); and the subtitle truncates once at the end instead of each piece /// competing for width and truncating on its own. /// + /// The font sizing holds only because the provider icons are symbol sets: a plain image set + /// interpolated into `Text` draws at its intrinsic point size with its bottom edge pinned to + /// the baseline, which is how these read as oversized and misaligned before. Keep them as + /// `.symbolset`s drawn to the cap-height guides, or this comment stops being true. + /// /// The row is a single accessibility element (`children: .ignore` + - /// `dynamicAccessibilityLabel`), so nothing here reaches VoiceOver — the icon and the - /// separator need no `accessibilityHidden`. + /// `dynamicAccessibilityLabel`), so nothing here reaches VoiceOver and the glyphs need no + /// `accessibilityHidden`. They are also the only visible trace of where the item came from, + /// which is why `VoiceOverService` takes `includeSource` and speaks the provider names. private var subtitle: Text { // Media-server links only, same rule the details section uses: Hardcover is // progress-sync, not a source the book streams from, so it earns no badge here. - (item.externalResources?.mediaServerResources ?? []) + (item.externalResources?.displayOrderedMediaServerResources ?? []) .reduce(Text(verbatim: "")) { partial, resource in let provider = ExternalResource.ProviderName(rawValue: resource.providerName) ?? .jellyfin - return partial + Text("\(Image(provider.icon)) \(resource.providerName.capitalized) • ") + // Glyph only: the provider name next to its own logo was a second copy of the same + // fact, and it crowded the author off the one line this row gives it. + return partial + Text("\(Image(provider.icon)) ") } // Appended outside the reduce: the author renders even when the item has no external // resources (nil for locally-imported books on some construction paths). diff --git a/BookPlayer/Library/ItemList/Views/DynamicAccessibilityLabel.swift b/BookPlayer/Library/ItemList/Views/DynamicAccessibilityLabel.swift index 45ffe3c22..445efa1c5 100644 --- a/BookPlayer/Library/ItemList/Views/DynamicAccessibilityLabel.swift +++ b/BookPlayer/Library/ItemList/Views/DynamicAccessibilityLabel.swift @@ -45,7 +45,8 @@ struct DynamicAccessibilityLabelModifier: ViewModifier { self._accessibilityLabel = State( initialValue: VoiceOverService.getAccessibilityLabel( for: item, - useOriginalFileName: initialUseOriginalFileName + useOriginalFileName: initialUseOriginalFileName, + includeSource: true ) ) } @@ -97,12 +98,14 @@ struct DynamicAccessibilityLabelModifier: ViewModifier { originalFileName: item.originalFileName, lastPlayDate: item.lastPlayDate, type: item.type, - uuid: item.uuid + uuid: item.uuid, + externalResources: item.externalResources ) accessibilityLabel = VoiceOverService.getAccessibilityLabel( for: updatedItem, - useOriginalFileName: useOriginalFileName + useOriginalFileName: useOriginalFileName, + includeSource: true ) } .onChange(of: useOriginalFileName) { @@ -113,7 +116,8 @@ struct DynamicAccessibilityLabelModifier: ViewModifier { // overwrite this with the current playback state. accessibilityLabel = VoiceOverService.getAccessibilityLabel( for: item, - useOriginalFileName: useOriginalFileName + useOriginalFileName: useOriginalFileName, + includeSource: true ) } .onChange(of: playerManager.currentItem?.relativePath) { oldPath, newPath in @@ -162,10 +166,12 @@ struct DynamicAccessibilityLabelModifier: ViewModifier { lastPlayDate: item.lastPlayDate, type: item.type, uuid: item.uuid, + externalResources: item.externalResources ) accessibilityLabel = VoiceOverService.getAccessibilityLabel( for: updatedItem, - useOriginalFileName: useOriginalFileName + useOriginalFileName: useOriginalFileName, + includeSource: true ) } } diff --git a/BookPlayer/Services/VoiceOverService.swift b/BookPlayer/Services/VoiceOverService.swift index a30968e80..019f99a27 100644 --- a/BookPlayer/Services/VoiceOverService.swift +++ b/BookPlayer/Services/VoiceOverService.swift @@ -12,9 +12,14 @@ class VoiceOverService { /// the imported filename (matching what `BookView` renders under the /// library display preference). Defaults to false so non-library /// callers (Watch, etc.) keep their current behavior. + /// - Parameter includeSource: When true, the announcement names the media servers the item + /// is linked to. `BookView` draws those as bare glyphs and the row is a single + /// accessibility element, so this is the only way that provenance reaches VoiceOver. + /// Defaults to false for callers whose rows don't draw the glyphs. public static func getAccessibilityLabel( for item: SimpleLibraryItem, - useOriginalFileName: Bool = false + useOriginalFileName: Bool = false, + includeSource: Bool = false ) -> String { let displayPercent = item.isFinished ? 100.0 : item.percentCompleted let remainingTime = item.duration - item.currentTime @@ -24,9 +29,10 @@ class VoiceOverService { remainingTimeLabel += !parsedDuration.isEmpty ? " \(parsedDuration)" : " 0" } let displayTitle = item.displayTitle(useOriginalFileName: useOriginalFileName) + let sourcePrefix = includeSource ? self.sourcePrefix(for: item) : "" switch item.type { case .book: - return String.localizedStringWithFormat( + return sourcePrefix + String.localizedStringWithFormat( "voiceover_book_progress".localized, displayTitle, item.details, @@ -34,13 +40,13 @@ class VoiceOverService { item.durationFormatted ) + ", \(remainingTimeLabel)" case .folder: - return String.localizedStringWithFormat( + return sourcePrefix + String.localizedStringWithFormat( "voiceover_playlist_progress".localized, displayTitle, displayPercent ) case .bound: - return String.localizedStringWithFormat( + return sourcePrefix + String.localizedStringWithFormat( "voiceover_bound_books_progress".localized, displayTitle, displayPercent, @@ -49,6 +55,22 @@ class VoiceOverService { } } + /// `"Jellyfin, "` — the spoken counterpart of the provider glyphs, and in the same + /// position: they lead the subtitle line, so the names lead the announcement. + /// + /// Deliberately unlocalized. These are brand names, and wrapping them in a `"from %@"` key + /// would be worse than bare: `localized` is a plain `NSLocalizedString` with no fallback to + /// Base, so every locale missing the key would announce the key itself and swallow the name. + /// Empty when the item isn't linked to a media server. + private static func sourcePrefix(for item: SimpleLibraryItem) -> String { + let providers = (item.externalResources?.displayOrderedMediaServerResources ?? []) + .map { $0.providerName.capitalized } + + guard !providers.isEmpty else { return "" } + + return providers.joined(separator: ", ") + ", " + } + // MARK: - PlayerMetaView public static func playerMetaText( diff --git a/BookPlayerTests/Services/VoiceOverServiceTest.swift b/BookPlayerTests/Services/VoiceOverServiceTest.swift index cf7d63c2f..df892b171 100644 --- a/BookPlayerTests/Services/VoiceOverServiceTest.swift +++ b/BookPlayerTests/Services/VoiceOverServiceTest.swift @@ -34,4 +34,81 @@ class VoiceOverServiceTest: XCTestCase { XCTAssert(VoiceOverService.fastForwardText() == localizedString) } + + // MARK: - Media-server source + + private func makeItem(resources: [SimpleExternalResource]?) -> SimpleLibraryItem { + SimpleLibraryItem( + title: "CD 01- 001", + details: "Timothy Ferriss", + speed: 1, + currentTime: 0, + duration: 100, + percentCompleted: 0, + isFinished: false, + relativePath: "cd-01-001.mp3", + remoteURL: nil, + artworkURL: nil, + orderRank: 0, + parentFolder: nil, + originalFileName: "cd-01-001.mp3", + lastPlayDate: nil, + type: .book, + uuid: UUID().uuidString, + externalResources: resources + ) + } + + private func resource(_ provider: ExternalResource.ProviderName) -> SimpleExternalResource { + SimpleExternalResource( + providerName: provider.rawValue, + providerId: "1", + syncStatus: ExternalResource.SyncStatus.stream.rawValue, + lastSyncedAt: nil + ) + } + + /// The Watch cell draws no provider glyph, so its announcement must not grow one. + func testAccessibilityLabelOmitsSourceByDefault() { + let label = VoiceOverService.getAccessibilityLabel(for: makeItem(resources: [resource(.jellyfin)])) + + XCTAssertFalse(label.contains("Jellyfin"), label) + } + + /// `BookView` draws the glyph ahead of the author, so the name leads the announcement. + func testAccessibilityLabelLeadsWithMediaServerSource() { + let label = VoiceOverService.getAccessibilityLabel( + for: makeItem(resources: [resource(.jellyfin)]), + includeSource: true + ) + + XCTAssertTrue(label.hasPrefix("Jellyfin, "), label) + } + + /// `externalResources` comes off an unordered NSSet, so two providers must not swap + /// between launches. + func testAccessibilityLabelSourceOrderIsStable() { + let resources = [resource(.jellyfin), resource(.audiobookshelf)] + + for ordering in [resources, resources.reversed()] { + let label = VoiceOverService.getAccessibilityLabel( + for: makeItem(resources: Array(ordering)), + includeSource: true + ) + + XCTAssertTrue(label.hasPrefix("Audiobookshelf, Jellyfin, "), label) + } + } + + /// Hardcover is progress-sync, not a source the book streams from — it earns no glyph in + /// `BookView`, so it earns no mention here either. + func testAccessibilityLabelSkipsNonMediaServerSources() { + let label = VoiceOverService.getAccessibilityLabel( + for: makeItem(resources: [resource(.hardcover)]), + includeSource: true + ) + + XCTAssertFalse(label.contains("Hardcover"), label) + XCTAssertTrue(label.hasPrefix("CD 01- 001"), label) + } } diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift index b314218b8..239e9d6a2 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -71,6 +71,17 @@ extension Array where Element == SimpleExternalResource { filter(\.isMediaServer) } + /// The item's media-server links in a stable order, for anything the user sees or hears. + /// + /// `mediaServerResources` filters an UNORDERED set (`resourcesArray` is `allObjects`), so an + /// item linked to two providers would otherwise draw its glyphs — and speak their names — in + /// whichever order the set yields, varying between launches. Same hazard `streamingResource` + /// pins, same comparator. + public var displayOrderedMediaServerResources: [SimpleExternalResource] { + mediaServerResources + .sorted { ($0.providerName, $0.providerId) < ($1.providerName, $1.providerId) } + } + /// The link that decides streaming for the item, or nil if none can. /// /// Deterministic: the source set is UNORDERED, so an item linked to two streaming providers From 6ddcd2083e98970cd08a5f8d03477f9bbb742b50 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 20 Sep 2026 17:42:14 -0500 Subject: [PATCH 149/172] refactor: media-server-only code takes a type that cannot be Hardcover MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `ProviderName` answers two questions at once: which row is this in Core Data, and which server does it belong to. Hardcover is a provider but not a server — no host, nothing streams from it — so every piece of code that only makes sense for a server carried a case it had no answer for. Three of them answered with `default:`. `ExternalStreamResolver`, `IntegrationHostResolver` and `ExternalUpdateProgressOperation` each handled `.jellyfin` and `.audiobookshelf` and swept the rest into a catch-all. That is right for Hardcover and for a providerName this build doesn't know, and silently wrong for the next media server anyone adds: it would not stream, would not resolve its host, and would not push progress, with no compile error at any of the three to say so. The fourth answered with a placeholder — the library-row glyph returned `plusImageAppIcons`, a 2023 Plus promo PNG, for Hardcover. That arm was already unreachable (the row filters to media servers), and a plain image set interpolated into a `Text` draws at its intrinsic size anyway, which is the bug the comment above `subtitle` warns about. The asset had no other reference in the project and is deleted. `MediaServerProvider` is that second question as a type. `ProviderName.mediaServer` maps onto it in the one exhaustive switch, `isMediaServer` and `SimpleExternalResource.mediaServer` derive from it, and the four sites above now take a value with two cases and nothing to leave unhandled. Adding a media server is a compile error in each of them. It is deliberately not `RawRepresentable`. `ProviderName` owns the strings that reach Core Data, so there is no second spelling to drift from them: `mediaServerRawValues` still derives from `allCases` and the `IN` predicate in `findMediaServerResources(at:)` is byte-identical. Nothing changes for the user — the `case nil:` arms cover exactly what `default:` covered, and `BookView`'s `?? .jellyfin` fallback was already dead behind the media-server filter. `testProviderNameMapsOntoItsOwnMediaServer` pins the `.audiobookshelf` arm, which nothing else did. The existing host-resolver test catches a wrong `.jellyfin` mapping, but no test drives an AudiobookShelf resource through one, so a transposition there compiles, leaves the SQL predicate intact — it filters on nil-ness, not identity — and passes the whole suite while routing every AudiobookShelf item at the Jellyfin connection. Verified by mutating the mapping: it is the only test in the suite that fails. `ExternalProgressService` keeps its `[ProviderName: ExternalProgressProviding]` registry on purpose. It holds only the two servers today, but Hardcover is a progress provider by nature, so that key stays the wider type. --- BookPlayer.xcodeproj/project.pbxproj | 8 ++-- .../plusImageAppIcons.imageset/Contents.json | 26 ------------ .../plusImageAppIcons.png | Bin 656 -> 0 bytes .../plusImageAppIcons@2x.png | Bin 1420 -> 0 bytes .../plusImageAppIcons@3x.png | Bin 2135 -> 0 bytes .../Library/ItemList/Views/BookView.swift | 7 ++-- .../ExternalResourceProvider+Icon.swift | 24 ------------ .../Extensions/MediaServerProvider+Icon.swift | 23 +++++++++++ BookPlayerTests/ImportOperationTests.swift | 20 ++++++++++ CLAUDE.md | 6 ++- .../ExternalResource+CoreDataClass.swift | 37 ++++++++++++++---- .../SimpleExternalResource.swift | 15 ++++--- .../Integrations/ExternalStreamResolver.swift | 5 ++- .../IntegrationHostResolver.swift | 5 ++- .../ExternalUpdateProgressOperation.swift | 6 ++- 15 files changed, 103 insertions(+), 79 deletions(-) delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageAppIcons.imageset/Contents.json delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageAppIcons.imageset/plusImageAppIcons.png delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageAppIcons.imageset/plusImageAppIcons@2x.png delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageAppIcons.imageset/plusImageAppIcons@3x.png delete mode 100644 BookPlayer/Utils/Extensions/ExternalResourceProvider+Icon.swift create mode 100644 BookPlayer/Utils/Extensions/MediaServerProvider+Icon.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 463ea1772..5c5173767 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -8,7 +8,7 @@ /* Begin PBXBuildFile section */ 02C668174D24A70B4CD6FCB1 /* IntegrationConnectionStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269BB56618B150DCAA2CA5FB /* IntegrationConnectionStoreTests.swift */; }; - 048E8DAA13C4530F4419A030 /* ExternalResourceProvider+Icon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56AC45C580EED027394A645B /* ExternalResourceProvider+Icon.swift */; }; + 048E8DAA13C4530F4419A030 /* MediaServerProvider+Icon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56AC45C580EED027394A645B /* MediaServerProvider+Icon.swift */; }; 058C840BB5E944B2899BC769 /* ReviewPromptServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F83542FF9A240EC87E55AC8 /* ReviewPromptServiceTests.swift */; }; 07416E5AD384927D90BFB6EE /* PasskeyCreatingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C084D4BC05BF6B413C86C6F0 /* PasskeyCreatingView.swift */; }; 0CEC6B48350FC9C0A0B7D1C0 /* SyncTasksStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700DFD61111AC10253D6EBAA /* SyncTasksStorageTests.swift */; }; @@ -1422,7 +1422,7 @@ 5126F120258E9F18009965DC /* URL+BookPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URL+BookPlayer.swift"; sourceTree = ""; }; 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHTTPClient.swift; sourceTree = ""; }; 53AE3D4C955A493470C8EAA9 /* QueryTimeSortSpikeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryTimeSortSpikeTests.swift; sourceTree = ""; }; - 56AC45C580EED027394A645B /* ExternalResourceProvider+Icon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "ExternalResourceProvider+Icon.swift"; sourceTree = ""; }; + 56AC45C580EED027394A645B /* MediaServerProvider+Icon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "MediaServerProvider+Icon.swift"; sourceTree = ""; }; 587EDC7DEA9D2985635F1161 /* IntegrationConnectionStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationConnectionStore.swift; sourceTree = ""; }; 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IntegrationHostResolverTests.swift; sourceTree = ""; }; 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SortPreferencesResolving.swift; sourceTree = ""; }; @@ -4006,7 +4006,7 @@ 63E784382E2EAF79001B2E94 /* Environment+BookPlayer.swift */, 63AE5A8C2E4C59FE002531B8 /* AppHostingViewController.swift */, 63D561342E5A214400615522 /* SimpleLibraryItem+SwiftUI.swift */, - 56AC45C580EED027394A645B /* ExternalResourceProvider+Icon.swift */, + 56AC45C580EED027394A645B /* MediaServerProvider+Icon.swift */, ); path = Extensions; sourceTree = ""; @@ -5234,7 +5234,7 @@ 39313742614BCCA918DA7C0E /* IntegrationConnectionFlowView.swift in Sources */, BF96AEBA456420ADE446427F /* URL+BookPlayer.swift in Sources */, ED1900FB7892C8FA42A5A665 /* UUIDMigrationPolicy.swift in Sources */, - 048E8DAA13C4530F4419A030 /* ExternalResourceProvider+Icon.swift in Sources */, + 048E8DAA13C4530F4419A030 /* MediaServerProvider+Icon.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/BookPlayer/Assets.xcassets/plus/plusImageAppIcons.imageset/Contents.json b/BookPlayer/Assets.xcassets/plus/plusImageAppIcons.imageset/Contents.json deleted file mode 100644 index b0966e4ac..000000000 --- a/BookPlayer/Assets.xcassets/plus/plusImageAppIcons.imageset/Contents.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "plusImageAppIcons.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "plusImageAppIcons@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "plusImageAppIcons@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "template-rendering-intent" : "template" - } -} \ No newline at end of file diff --git a/BookPlayer/Assets.xcassets/plus/plusImageAppIcons.imageset/plusImageAppIcons.png b/BookPlayer/Assets.xcassets/plus/plusImageAppIcons.imageset/plusImageAppIcons.png deleted file mode 100644 index dabe391a271e003311c43b898ab85610ca5800d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656 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 diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index 90421b70a..29d4134db 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -65,12 +65,11 @@ struct BookView: View { // Media-server links only, same rule the details section uses: Hardcover is // progress-sync, not a source the book streams from, so it earns no badge here. (item.externalResources?.displayOrderedMediaServerResources ?? []) - .reduce(Text(verbatim: "")) { partial, resource in - let provider = ExternalResource.ProviderName(rawValue: resource.providerName) ?? .jellyfin - + .compactMap(\.mediaServer) + .reduce(Text(verbatim: "")) { partial, provider in // Glyph only: the provider name next to its own logo was a second copy of the same // fact, and it crowded the author off the one line this row gives it. - return partial + Text("\(Image(provider.icon)) ") + partial + Text("\(Image(provider.icon)) ") } // Appended outside the reduce: the author renders even when the item has no external // resources (nil for locally-imported books on some construction paths). diff --git a/BookPlayer/Utils/Extensions/ExternalResourceProvider+Icon.swift b/BookPlayer/Utils/Extensions/ExternalResourceProvider+Icon.swift deleted file mode 100644 index e9dc14ebf..000000000 --- a/BookPlayer/Utils/Extensions/ExternalResourceProvider+Icon.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// ExternalResourceProvider+Icon.swift -// BookPlayer -// -// Copyright © 2026 BookPlayer LLC. All rights reserved. -// - -import BookPlayerKit -import SwiftUI - -extension ExternalResource.ProviderName { - /// UI concern kept in the app target: putting an ImageResource on the Shared CoreData enum - /// would couple both framework targets to the app's asset catalog. - var icon: ImageResource { - switch self { - case .jellyfin: - return .jellyfinIcon - case .hardcover: - return .plusImageAppIcons - case .audiobookshelf: - return .audiobookshelfIcon - } - } -} diff --git a/BookPlayer/Utils/Extensions/MediaServerProvider+Icon.swift b/BookPlayer/Utils/Extensions/MediaServerProvider+Icon.swift new file mode 100644 index 000000000..ab60f9bf4 --- /dev/null +++ b/BookPlayer/Utils/Extensions/MediaServerProvider+Icon.swift @@ -0,0 +1,23 @@ +// +// MediaServerProvider+Icon.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import SwiftUI + +extension ExternalResource.MediaServerProvider { + /// UI concern kept in the app target: putting an ImageResource on the Shared CoreData enum + /// would couple both framework targets to the app's asset catalog. + /// + /// On `MediaServerProvider` rather than `ProviderName` because only a server earns a glyph: + /// Hardcover is progress-sync, not a source, and had no logo to return here. + var icon: ImageResource { + switch self { + case .jellyfin: .jellyfinIcon + case .audiobookshelf: .audiobookshelfIcon + } + } +} diff --git a/BookPlayerTests/ImportOperationTests.swift b/BookPlayerTests/ImportOperationTests.swift index 5be9082d5..a576f929d 100644 --- a/BookPlayerTests/ImportOperationTests.swift +++ b/BookPlayerTests/ImportOperationTests.swift @@ -512,6 +512,26 @@ final class ExternalResourceResolutionTests: XCTestCase { XCTAssertEqual(resolved["r2"], "unknown-guid", "unknown host falls back to the raw hostId") } + /// Pins the `.audiobookshelf` arm, which nothing else does. + /// `testResolvesSavedConnectionsAndFallsBackToRawHostId` above catches a wrong `.jellyfin` + /// mapping — it drives a Jellyfin resource through the host resolver, which now routes on + /// `mediaServer` — but no test drives an AudiobookShelf resource through one. So + /// `case .audiobookshelf: .jellyfin` compiles, leaves `mediaServerRawValues` untouched + /// (it filters on nil-ness, not identity, so the SQL predicate still fetches the rows) and + /// passes the whole suite, while every AudiobookShelf item resolves against the Jellyfin + /// connection: nothing to stream, its progress pushes misrouted into the Jellyfin path and + /// silently dropped by that path's own host guard, and its row wearing the wrong glyph. + func testProviderNameMapsOntoItsOwnMediaServer() { + XCTAssertEqual(ExternalResource.ProviderName.jellyfin.mediaServer, .jellyfin) + XCTAssertEqual(ExternalResource.ProviderName.audiobookshelf.mediaServer, .audiobookshelf) + XCTAssertNil(ExternalResource.ProviderName.hardcover.mediaServer) + XCTAssertEqual( + Set(ExternalResource.ProviderName.mediaServerRawValues), + ["jellyfin", "audiobookshelf"], + "the SQL IN predicate reads these strings — they are the stored providerName values" + ) + } + /// The section shows media-server links only: Hardcover has its own section, and /// repeating its link here would render a bare provider/id pair with no host. The rule /// allowlists known media servers, and its switch is exhaustive, so adding a provider diff --git a/CLAUDE.md b/CLAUDE.md index c9b94b2d8..f9d7de702 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -143,8 +143,10 @@ first. Reordering boot risks a launch crash. progress ingest on the view context; no merge policy), whatever the cloud outcome. It is resource-first: `LibraryService.findMediaServerResources(at:)` fetches only the level's media-server `ExternalResource` rows (direct children, providers filtered in SQL from `ProviderName.mediaServerRawValues`) on the background context, - so the main thread does nothing but the ingest. `ExternalResource.ProviderName.isMediaServer` is the single - exhaustive "is this a media server" switch; `SimpleExternalResource.isMediaServer` and the SQL filter derive from it. + so the main thread does nothing but the ingest. `ExternalResource.ProviderName.mediaServer` — which maps a + provider onto the `ExternalResource.MediaServerProvider` sub-enum (`jellyfin`, `audiobookshelf`) — is the single + exhaustive "is this a media server" switch; `isMediaServer`, `SimpleExternalResource.mediaServer`, the SQL filter, + and every server-only switch (stream source, host display, progress push, the library-row glyph) derive from it. - **Services → SwiftUI:** `ObservableObject`s (`playerManager`, `importManager`, `singleFileDownloadService`, `listSyncRefreshService`) via `.environmentObject`, plus `externalImportEvents`, which `MainView` owns as a `@StateObject` and injects itself — the coordinator builds services, not SwiftUI-internal wires; the rest via `.environment(\.key, …)`. diff --git a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift index 1b944bcd6..6409d34fc 100644 --- a/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift +++ b/Shared/CoreData/Backed-Models/ExternalResource+CoreDataClass.swift @@ -8,7 +8,6 @@ import Foundation import CoreData -import SwiftUI extension ExternalResource { public enum SyncStatus: String, Codable { @@ -17,25 +16,47 @@ extension ExternalResource { case downloaded = "downloaded" } + /// A provider that is a server the user connects to: it has a host, an item can stream + /// from it, and progress can be pushed to it. The complement of a metadata service like + /// Hardcover, which has none of those. + /// + /// A type of its own rather than a subset of `ProviderName` so the compiler carries the + /// distinction: anything that only makes sense for a server — a stream URL, a host, the + /// glyph in the library row — takes this and has no case left to answer with a placeholder. + /// Deliberately NOT `RawRepresentable`: `ProviderName` owns the strings that reach Core + /// Data, so there is no second spelling of them to drift. + public enum MediaServerProvider { + case jellyfin + case audiobookshelf + } + public enum ProviderName: String, Codable, CaseIterable { case jellyfin case hardcover case audiobookshelf - /// Whether this provider is a server the user connects to, as opposed to a metadata - /// service like Hardcover that has no host and streams nothing. + /// This provider as a media server, or nil for one that isn't. /// /// The switch has NO `default` on purpose: this is the one place the question is answered, /// so adding a provider case becomes a compile error here and whoever adds it has to say - /// which side it falls on. Everything else derives from it — `SimpleExternalResource - /// .isMediaServer` and the SQL filter in `LibraryService.findMediaServerResources(at:)`. - public var isMediaServer: Bool { + /// which side it falls on. Everything else derives from it — `isMediaServer`, + /// `SimpleExternalResource.mediaServer`, the SQL filter in + /// `LibraryService.findMediaServerResources(at:)`, and every switch that handles servers + /// only (stream source, host display, progress push, the row glyph), each of which then + /// gets the same compile error for the half of the question it answers. + public var mediaServer: MediaServerProvider? { switch self { - case .jellyfin, .audiobookshelf: true - case .hardcover: false + case .jellyfin: .jellyfin + case .audiobookshelf: .audiobookshelf + case .hardcover: nil } } + /// Convenience over `mediaServer` where only the yes/no matters. + public var isMediaServer: Bool { + mediaServer != nil + } + /// The media-server providers as stored in `ExternalResource.providerName`, for an `IN` /// predicate. public static var mediaServerRawValues: [String] { diff --git a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift index 239e9d6a2..4dea4aed1 100644 --- a/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift +++ b/Shared/CoreData/Lightweight-Models/SimpleExternalResource.swift @@ -56,12 +56,17 @@ public struct SimpleExternalResource: Identifiable, Equatable, Hashable { } extension SimpleExternalResource { - /// Whether this link points at a server the user connects to. The answer lives on - /// `ExternalResource.ProviderName.isMediaServer`, the one exhaustive switch. A providerName - /// this build doesn't know is not streamable: building a URL for it would need - /// provider-specific knowledge we don't have. + /// The server this link points at, or nil if it points at something else. The answer lives + /// on `ExternalResource.ProviderName.mediaServer`, the one exhaustive switch. Hardcover is + /// not a server, and a providerName this build doesn't know is not streamable either: + /// building a URL for it would need provider-specific knowledge we don't have. + public var mediaServer: ExternalResource.MediaServerProvider? { + ExternalResource.ProviderName(rawValue: providerName)?.mediaServer + } + + /// Convenience over `mediaServer` where only the yes/no matters. public var isMediaServer: Bool { - ExternalResource.ProviderName(rawValue: providerName)?.isMediaServer ?? false + mediaServer != nil } } diff --git a/Shared/Integrations/ExternalStreamResolver.swift b/Shared/Integrations/ExternalStreamResolver.swift index 5d60aabd4..6c1ea5c7a 100644 --- a/Shared/Integrations/ExternalStreamResolver.swift +++ b/Shared/Integrations/ExternalStreamResolver.swift @@ -41,7 +41,7 @@ public struct ExternalStreamResolver: ExternalStreamResolving, BPLogger { } public func streamSource(for resource: SimpleExternalResource) -> ExternalStreamSource? { - switch ExternalResource.ProviderName(rawValue: resource.providerName) { + switch resource.mediaServer { case .jellyfin: guard let connection: JellyfinConnectionData = connection(for: resource, key: .jellyfinConnection) @@ -75,7 +75,8 @@ public struct ExternalStreamResolver: ExternalStreamResolving, BPLogger { headers: authorizing(connection.customHeaders, with: "Bearer \(connection.apiToken)") ) - default: + case nil: + // Hardcover, or a provider this build doesn't know: nothing to stream from. return nil } } diff --git a/Shared/Integrations/IntegrationHostResolver.swift b/Shared/Integrations/IntegrationHostResolver.swift index d275dd153..1918605a4 100644 --- a/Shared/Integrations/IntegrationHostResolver.swift +++ b/Shared/Integrations/IntegrationHostResolver.swift @@ -61,12 +61,13 @@ public enum IntegrationHostResolver { resources.reduce(into: [:]) { hosts, resource in let hostId = resource.hostId ?? "" let url: URL? = - switch ExternalResource.ProviderName(rawValue: resource.providerName) { + switch resource.mediaServer { case .jellyfin: hostURL(for: hostId, key: .jellyfinConnection, of: [JellyfinConnectionData].self, keychain: keychain) case .audiobookshelf: hostURL(for: hostId, key: .audiobookshelfConnection, of: [AudiobookShelfConnectionData].self, keychain: keychain) - default: + case nil: + // Hardcover, or a provider this build doesn't know: no host to show but its own id. nil } hosts[resource.providerId] = url?.absoluteString ?? hostId diff --git a/Shared/Services/SyncQueue/ExternalUpdateProgressOperation.swift b/Shared/Services/SyncQueue/ExternalUpdateProgressOperation.swift index 056cae495..2d2edfe4e 100644 --- a/Shared/Services/SyncQueue/ExternalUpdateProgressOperation.swift +++ b/Shared/Services/SyncQueue/ExternalUpdateProgressOperation.swift @@ -48,12 +48,14 @@ class ExternalUpdateProgressOperation: AsyncOperation, BPLogger, @unchecked Send // 2. Wrap the throwing code in a do-catch do { - switch ExternalResource.ProviderName(rawValue: self.providerName) { + switch ExternalResource.ProviderName(rawValue: self.providerName)?.mediaServer { case .jellyfin: try await doJellyfinUpdate() case .audiobookshelf: try await doAudiobookshelfUpdate() - default: + case nil: + // Hardcover, or a provider this build doesn't know: nothing to push to. The task is + // consumed rather than retried forever, same as it always was. break } From 32796552a55fa457f60429e065f10e6cb1312af1 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 20 Sep 2026 22:41:00 -0500 Subject: [PATCH 150/172] chore: drop the unreferenced Plus assets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deleting the Hardcover glyph's placeholder left `plus/` holding four more imagesets nothing asks for: `BookPlayerPlus`, `plusImageSupport`, `plusImageThemes` and `support-no-padding`, all from the 2023 Plus screen that no longer exists. They compiled into every build of the app, the watch app and both frameworks — the catalog is a folder reference, so each is carried by all four targets that list it. Verified unreferenced rather than assumed, because this app force-unwraps `UIImage(named:)` in places and a missed lookup is a crash, not a blank frame. Checked every file type (Swift, storyboards, xibs, Info.plist's 32 `CFBundleIconFiles`, `Icons.json`'s 15 `imageName`s, strings, pbxproj, catalog JSON), case-insensitively and in the generated camelCase symbol form (`.bookPlayerPlus`, `.supportNoPadding`) that a literal grep for the directory name would miss. Also traced every non-literal `UIImage(named:)` argument in the repo — CarPlay's chevron ternaries, `AppIconView`'s `Icons.json` lookup, and `addLayerMask`'s parameter — and none can construct these names. No string interpolation reaches an image lookup anywhere. `plus/confetti/` stays. Four of its five are live in `ConfettiView`, and `confetti_heart` is unreferenced but belongs to that set rather than to the dead Plus screen. Neither `plus/` nor `plus/confetti/` provides a namespace, so those lookups are flat and independent of what sits beside them. --- .../BookPlayerPlus.png | Bin 2877 -> 0 bytes .../BookPlayerPlus@2x.png | Bin 6863 -> 0 bytes .../BookPlayerPlus@3x.png | Bin 11131 -> 0 bytes .../BookPlayerPlus.imageset/Contents.json | 23 ---------------- .../plusImageSupport.imageset/Contents.json | 26 ------------------ .../plusImageSupport.png | Bin 559 -> 0 bytes .../plusImageSupport@2x.png | Bin 1063 -> 0 bytes .../plusImageSupport@3x.png | Bin 1597 -> 0 bytes .../plusImageThemes.imageset/Contents.json | 26 ------------------ .../plusImageThemes.png | Bin 331 -> 0 bytes .../plusImageThemes@2x.png | Bin 655 -> 0 bytes .../plusImageThemes@3x.png | Bin 893 -> 0 bytes .../support-no-padding.imageset/Contents.json | 26 ------------------ .../support-no-padding.png | Bin 2799 -> 0 bytes .../support-no-padding@2x.png | Bin 5082 -> 0 bytes .../support-no-padding@3x.png | Bin 5458 -> 0 bytes 16 files changed, 101 deletions(-) delete mode 100644 BookPlayer/Assets.xcassets/plus/BookPlayerPlus.imageset/BookPlayerPlus.png delete mode 100644 BookPlayer/Assets.xcassets/plus/BookPlayerPlus.imageset/BookPlayerPlus@2x.png delete mode 100644 BookPlayer/Assets.xcassets/plus/BookPlayerPlus.imageset/BookPlayerPlus@3x.png delete mode 100644 BookPlayer/Assets.xcassets/plus/BookPlayerPlus.imageset/Contents.json delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageSupport.imageset/Contents.json delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageSupport.imageset/plusImageSupport.png delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageSupport.imageset/plusImageSupport@2x.png delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageSupport.imageset/plusImageSupport@3x.png delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/Contents.json delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/plusImageThemes.png delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/plusImageThemes@2x.png delete mode 100644 BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/plusImageThemes@3x.png delete mode 100644 BookPlayer/Assets.xcassets/plus/support-no-padding.imageset/Contents.json delete mode 100644 BookPlayer/Assets.xcassets/plus/support-no-padding.imageset/support-no-padding.png delete mode 100644 BookPlayer/Assets.xcassets/plus/support-no-padding.imageset/support-no-padding@2x.png delete mode 100644 BookPlayer/Assets.xcassets/plus/support-no-padding.imageset/support-no-padding@3x.png diff --git a/BookPlayer/Assets.xcassets/plus/BookPlayerPlus.imageset/BookPlayerPlus.png b/BookPlayer/Assets.xcassets/plus/BookPlayerPlus.imageset/BookPlayerPlus.png deleted file mode 100644 index 343c578376caeeb72403d0f091e1a15a215e1fa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2877 zcmV-D3&Qk?P)~prQ0gYz-yaf?WVw}dfm+^PTAjUYxd`1gnJEN6xfYCoYU#lx5>jCU9Z$$+~UlyWx37smKA zni=inDGb=99Qsd`F|!zJX`)~Nxt!&#F(#u9@mU>Y^3<5G$k#CNm0Dv=#0v&Y?iw@8 zxO{QHtj!wF7=K|Ez0n}>cVŖXhR$(Vl#@2433oGH$XxkCm-T5cwytsvOGU_Nfwu(N#DW#X8`4sUahe94?(zCl6^!R2PJ-C)i zcLI~><{t@k{kH_V`DY^Cxs=TQoqPf!Cc&6#BnSzgE07FLGUk053B)uQvzG(_*LP2ocJ-Gy`t94# z^v%Wh^zUB8wZboS(H5U=q!yob-=vmTdIUeZE>uouSsPMl%0+3Eh(6t@#({xOEW zy6~2c9(qnYc7)LSjZbOah9_5e4p!K7ah`=9W=+v>7v~lw@B+{ou z87K>7D(OKzC;)LVCZ9MXDkyjCFXYEqI&tI$ZQLXo!jUKwWkbVgUC=53`7p*pobmWp zxGE72gK4H}^pnmNM?V+M#Lnj5<5tMl(zGuE*#S+o8rtz7?v zmb3qtGA?FZxc(U}Soe(PG0s^RM6(zJB+isLgK@fyGeFt<0TO579E@`r=QHBmC}RoZ zGR75*tJgc41C7uM&73jd$7|ZE%}&(XGep-P=dgqX(E=$^v!p~$(+FosM&gSwpP9Fa z@fy?I!n6+|2tKg+kq^*e9j4NzK1!08;faCamUpesT%w3}HB z_gO42a@#1eyqk&}`>3sVh^eCm7{`^!wh8G^@)9NFyY5tCI-5CST z(0=hjfz#L!a~g{sInb0b_=PAL0)7)xMr)3~q1A_9(VVSex-$lvp&c1s@aqS#;FSZLFk_XrH6S(`(3XACq;`Vk9aQjGUnY$I|a))>3pPQe*1iXuVN zck%xV3Y@tiSa-%ivn&S0R+j?L-^+6dXw{)tXwvG=7-)ueSuBXn zW$YzQed3IHo!_A-?ANyz+Hm^4Loh22yhNb7B(%$8L2QUoDgHP4?c$7aRks}eGYtVa zaM`}+6OyEWjlp#M+ZYOaQ%V_mO;laiMb^F{5U=q!yob-=vlCJ#w2zJlF)GD>J+@Jd zG1ftwa)tleLTit`85782QsDjvj$SQYcoKV;`` zOmp|3qM)Of(jj~d7w(GitW~rrgzkpq6MhjM0>|PUIG0BnpxsGKh*dEUt-VA1jj3ww zcV4%=tD$wr-#81xqs}G1>3PL1G(o_*Jo@!OyR(=OD`Iw*3rqU|e`E6Mtj=3v_w$?u z;8Evt`^h)d@ zF9+I{;zG>Ma)BW#?#6s7?sQt|V@%0Wxcbf|lAz}D)!j2d4+i0s{srdITo+g0A;zW3o$6ghuBBw10(Cajd3~@ zbMUtmMd8c$zi{^wrn>cYJ2-FTc)V8KT66c3h8Ps$L+nn6X1E*kG;ORgTh4z}6uxw? zd!0-4IRIY904UQPZHPfBKEyscAJ5WS_#1K(+BL@z*0aBa!8*?wo(U>2iDj`sj3*6{jVh9D`Yz%<1$J2)xT*inT$a2DR z)WqMITk(w!BL4Nb$ff9c+sE%*Vth-GF(`XHeTczjjL3mJC$|#>7;`<&(U^165WhE_ zOAJ1WG6rRP)5!#p19?tv#5eLc=5n;-$nxo1IW9#9xY1w0$grz^3X<-OhyL?vMN_Lfk+SN@1W`<4IQ z#3q%^<*+ZHxg4hb=JLZ7l^x8Ty6<2j22~wQOsC~;%#+lXzu}Nfr1pnof-_oG4q`@q z0fU%P>IN~>1&l67WVLB=*xwlTe^=0<@(Gm+ewzQoy>x{d*r6aLW2)bE5pXxGJrKRleHc8cr* z9Z!*6pqDAKc!F2;r1CvFo>aa^CzHyh+si5*!$2ofzmH)+yDlEX06r9{dvIy_0jZOz zLqfZ59$czu>DS_;e#WDIKzLTG)*g;E9*zZi`faiqGsffOc>GcL2(HFRVBV1RP~Xce^}cAR#$Coz_gmk=vt(}fy$H(faI!%Y{? zYk$*)--$D@^~b#{+TW%G8bxkXvX=y)qO?`>8~Z?`AnX;o6;|wrawI^Lgf@YgCVca_ z+|2rsO&GL5Xn`h8Y#t|kyT$f4D<#EN(z81m!VE##&;Tuhk*vuLO8cyX)Y{xjmdbW2 z&Tpd3lv;}aR6*}w6caYt!Csj`_c96lRzAF*N~oZ32PV;t-xCPLYy1uG;WPLwj=`}w z2hN3a;@l_$WuZ(B;k2=(ul6tqFN{sFwTC;#w(&aJHXbySC>Suq10`ep8EeS^Zy@LX zu8aX^aqZU_7?yJGH=Z$|i45?92|0Jy81O6dH4Grferk;YO+LA-85nl_rKmRsoHfA> z0;8gr>J)E{0sR@xMnA{veu`P%`tsfw$4=-SWB5k(Fv}fz=g}9&$j8=BGo~1IkYXK@ zEahmjCppGH-g1(3vu&?*n>t9E;E~U0k>;&gr5T?#(l2aM3|1*7ixgv=6f)5edDwfJg@g>4e@5p|{X` zEEK8I6{Otgd+*Gh@B3qSXLiqX_Ut?}zqaApnkpblM#@Wg#>Yu&M1p+X%@xm+1fHDn6@9fQqZ`i{2XrLmNsmQBeq6olxn~tK z;wzLre)M$2SMpna$L5Fo_?+>f+j;l5>i$@rj$bX<)S*4z632-BxSFQjXPM^lX0f8* z%76T3!KQ`WvDZt;<@8Y9A^XfLQX&|wp4YlVec4*IFCb0aAh<*mY_{bv*lpN22|l;p z;ScmK81FU{!CYc^ZUkqzJ-ylS+y34*qR4m8WzuRfJFs4=;AAa&5Ims9wH&Sa%mWfA zl#?VT)Z4a58q1bzxisD3;w6Cgt?nXU{bUDoj(F0Zt(#<3N=HVh?&9{T^2syElX%_rtXA`9kYsJAA()0Do7w6B#jj=+6QlhpYkzW*p@TvEiuQ>m9zR#jS8rkuTlQNWM$0zNAWx$fMBhRx| z(|C#&mVmeTT?6z?ZmaV)M0&DsFb-Are_uWNao9TJUiVW|n)N%C8_QS7vt2jugkD7z zg?Uu&RT`n7dYT0{HgS3Sl8XZ=hrNU8_$Vf(nRu-35&zC3l(*PGtYQCk@v)u zGmT>8ITvGYDSz*N7&Js-?+q(qlqdaLY!SMbZZJ+2>sJ0O>Ptd@iJ1T3plLdX*aW0n zQP|nU`!o1a{6;Fv*zS?DVKFj7iEUG`2_+<1GTEt zn~}>nvARAi1=I4xok_Jt;ZI9z9}Ihb@AjhxFeoASB^m}%=lCUHgU0#0tX(NtoZT@M zaT&}UX`@WI12AI98YTDXTr4$a+xfy6BN4Imp8MT$!Ri!wujZcJO#$*Z%w(U(*VcR*oN)CRT=)of zsoHgc5w-p{TF5cU z^LJImjhn$>lb341g*w($#qHGNT8rFCU)kvYBtW#5Zui(swz1TlpH<*P-Rb+t=zmuG zxDGvFNNQ09m@@D1-nntH?OK^N*h>G$ST3|hZ(2B{#VVAze@wbDvxM1Vw#pLj|0ZL| zWZ!>A&w^F`bFcC@X2DAi_DCJ3WJY>zG?*g?_XgTUhZgs-^qq$ns;CM{9bY$L_TijS zn^y9s`SVH`BLmHLY4xf`?)g>of1d;R@pTIsF}94{b|Dy(u|p7_I+-KsnW=3zX->O! z%K+>uDK2PPC`A5w*W)~VUAg&;c?~@UqijSDUoJnR)9cB5Zu7W3!x!(&OB_>z?=U@G zY#ejH_(*rzk`72XY9;ieCfD_{OMG~?;Ta?+=hy}TMOO(>~N!RxpGyETz*r;N3EU0CalXodc~e-;B0HEZ0gM5 z5Q)k^ONlQV#~MRL(YsNfQsS6m4f^@!m^F`&M)meOBjs*f_CJ_8{K_89YMLi8OG{=1 z#VKyY>h~_M)7yaS>Mc{_9{%B>9u*;)c^XzdX?3Cht-U=PN7F@J>aq}ixl%jgYi1QA5_*MT^B8$)y=1Z}@y0t|~zolam{3WG+0?rq9YNS0!c}qW!#7QnSL^UJjbPm{Hv%VRs8W)PFsqYL_5IQeNiRn^Hqmc zQEN*L_(BG3l{92o zyu2B}!uAYnUrN54IqogBfJ9P*ju<%zD-4f^Q)-vi#-Z<2?m}BP;7wvhqFC5ry z_nVLSwP~UDiT(C{(N1mON7dOSj|Fi%r+dlY4pJ%hWAiDLf8E70|2g3>sV_9w%ql;s zQepoOzrBbZ{V?_v9*MXoKKRi`Y&iV|I9HqUJyEw$-(Lg44bmqa(w{(MZF2YR1jkji zzf5P?SRI@xz3AR$O(`xZUks#-X$Zfbi;qz zFUOJv=gjSW0rwrpJ~oo~VHcd2@3$*-PVQS*UbD^C!15#bM;0|o{#6H7DYM{8#Gj8X z@buByQBTsbyyR#mO=6cqSsv8HZO`NaRKJP!W)igCDF9ptJ& z>}PoGD)~(P9t&N=CX1>-ebUgK#%_GdWH^64|G|k*OC9AdUUy&nb(d1k^GWpys1*i@ zUUz2vui-k~e#ZN$0|>%QmpSqZ(fG$XlEpTf;%I{BRjDu?Rz}rj#FEvva~A()*+2%U zN1R{jgJ`|Nsw?>eMy>?d_C6m8&Au+UkYL=@3!2o!6Cq;jrp!0?W(p&>4)NyI#0peU z3+Owmo-24Ksg6CSX2vAn+Wo2l^BG|xsp^TIJU;)lK!Fn7miBsc+_Pn%c< zdih*9F5;r|5vy0HInn~*4^rT_=zbHGVfvB%1b0y<5Vs~EpJ&JETK?N)gxs1D1l10^ z3pL`3xMhRel+;^wrq~<4GaDJ+v=TgAvg`K%#q|QW?RB0lPdv@6Py^~)s|b94H>lpzfDsm!hfZ|=YqZmr-jI!u=$njJTxj#xp zRbPHZSuC%mPsz?7E}tP*hoT87LYquP*xJS{oe%Ds2}{$Q0@lsG(u zfdNPIQr2G{*uqhmX*uC@^znA;hC@h&*o$cYk%T_JMh3L3ii}TMRfBWtY2|_PDM+}E z{cQaF&fYH`%E9bqQ{p;WXGm2TH)2Oz&%AYGLOg+NZSU!M*+!)pa05I#tbJ~kS~YT0 zc568M;kEtO&(N0-7H)#VLmZiVgFJkN$`#3Q;xmiZ^HNetAxBP;vc-sXNASt^Dt#a& z`}N!O@%Rylv*7#MFLGk(i}NjnZibB|%7AXDwH7lUEf@ zwf}5x?8~l3Ms(|+9M($hC^m_>K-Y_JpLWFt4z|{==c6^JnUAv{Dz#5cRX>liUqi`& z0%Bk8BrvO{atcSlAV8&_VCH4J_JLR{J&7j)GU^8h6`APPP;s9k*;%=OCIDKE^NRmz zNLHSuLlG7zal#uZxZ&`_Z;4m%?>Frkmp*|KS$olroV!Y(epdpE4! z$qGMb7(EJDkL zE&W}wL_xaR#vR#~i=6pwp%xSo(;m{Gsuk0~n1_9f9fnShN{|QOW|$JhpAkzskMHhR7JupIJBIl<^zjuX zf-yqsi}E#}+ix6$nCU!O<@9=D!I;N^i}Et&A-a`>l15m8b+Q`piXfetk8ZGTWx?wD z8$o4R**)u}Lh$i#>WKKPqR2KRNyU)+H$`606rHnBY+kqqh0Iy}4$_-qnh@2Gu-X}Q z{+O?6O?`@ngGl>Wu)d;QySabQqZ*YZG?)@_o>RqoYpAdyc(AY{-i1~LiP3EK z@r+k<`L7Q3>aF?*ghgkm?e9ynP3}=_vS)-ctA2j&owKxpgthFOeT-N2EW?dyUvxXe z*}uDjA#;|BD{o!-_-+Q?5xOSu7h_47DDE=u&B8XRx&MGD@H!_Li9xL!V+3n0Q%FE- zIKAqQ%2p$gAbFFki9HQ4i zSOXmpwA(NbCsWbj^=PO}IC(5IQD@g&xb=@;^hx}p^#Ab-bBlX_%_F@#Nul+gStsHk zvY>^lSS4h}!-LY3|2V6a#98Ja9liLenW4UBu;5h6F?&oF9i4bxpGPV=fIqxQS0JO_ zOP%E(F^9vBL-V$atxm9K_3LjnY%dAB$g=-)R%{z$=}lp`pay**ydr}qBw>}VPZK^B zgX4GxYN0IbK7{cNP zeHncz0->FTSD@f*?T3ofcW-J2D8BeWVtlwnI~8@$hh!v|Rkla+jQfn+*0Nt$DW$C1 z_(rA!pC5mq zx+t00$x1somaP52tJux%+cPuW1K2?3{$bzej;YnVnt!HB?7UQMplJK|qW3xxGAmml zf-n(8F8_?>;FDvKeT-P-mFfLaNSF+Nc=Ec_)1G$|g^KT5(U<3Aiz&%Tf;Y3jxsLx7 z7`&Jp3%F@>%*ow7d&J1(9@}>uVob^7}MAxGQr{ zp4;T;iBVuC!``}W2&oC#bZ)FMmt37T7pi;Bw6et-I7Y{_PFv-Cq46;1KLLMkLfYaS z!3lxC+P&pk)4IQC6%-*=Hc?xV1uUnv(0ZTKmHdm;i>~&Eg5Q+hlU9L79;cf|eRv*J z9vGLuSZq=15Knf838TWU{%ax01aI-qe)f$!rP(LfuXZ0vbd{bLAo-$VYHj8FMAgs7 zWMlc}#Fq>>uI!u!4FP>o8}=DfOE&c*gXbdf1#?5>4LLf-T(|B)b35ZMD_dy!+q8+@ z)OQ-XbK^W|Kwx4LCa1MwLR7b9z{JmVo2kb9<-2^Us209OCx_F)bv<3LGR+}<82qr* za2v>Ot7?rg440q`oEKC;3nXy5Q!WuQLiXbD*ZCF`TU4v~j_RgE8?-r&rBJTQyZlsG zkH^)2s$89ZhvB>VH3;<4B9C~{4)GWp;&$ZT*LP;9o(iP|nfh#XS=)#0IKv0h_Peba zNI7Twn9>@&Q-3T^uZgX6)+g-e!2dbE9TkwcetSNV_5W^Ib=p|t5|vY@E_^Z5#=)Y8PAskBZb_Sqa{ap6B> zKY$9CFf~iOdMM`ay-v?yD>nr$d}x|u^1<|PAP|Mr3b6lA6z(mW){Fd-r{v zqI8^duchaYfm}r7DbOb6N?LXAAJ)h8)PKf6`#nS`160VmU*?o@7{?+hvGpn24N0=U z@4Ak0I49}krL0@uK7nVgHSv~`y5F|K_!BOzY8usEpRRFROvkEqMa7i6{a^~fMt@6R z9nz2B=;?;gDv`m)>!{7O{O$Va8N@_I>l_b4WPK;Ekd<0dibmeug--z@0( zSVYLVGXWt?;ZnGD&~b-60RoGfv!qW5B;vk=sfp54yh43nwqN(xt0Eu)rDk5!fUThy22*NUwwvL za4;gbM)R&pK3{od{8Wa;IVCmo2~H7z|HGH(&O;r4EfG~-Y)XoXqVOpbI*63T74x|E zZVs!H`}A}w;-g%9{znqmSMS!(@Fy;wEj8{mL3qh%k9ZnI++~pM_x>%={l%DBIH5J0 z)ztAVW%KAWj5UG0Kx)Vr0ak#G1Mx-Zw18VG~En^ ze-qqwNg&+T{sXJK9%x^MKwTOxI)iPT2Y0X%CVz(5nQhWQ&zC3b|(73SNt3LF`XQy*%Y((G0{HxdC0xaN9pM_?mic&d(Lx4 z4vtDE2x9DJ+Z%f8OYG&sxYJPZDd5m^(EZT8G(*NSkv*a6{p#^2b=}I*xCVVf)CO17 zyAeYYldqAHa=C+O+0iLY4^P3`vdxuKx^6keQ zW@^9YJDchWFd5#nsSPSI_X%4{#uK+v-}w41cblO07N!cM1>@%bTAkCF;T@A!oVNs^ z`y1x}g_I6tE;$-l4PcT^gxIz%=EFle005xniNd_9->)5LZ_lRE@<4&bEr3AaCCeZ2 zLy!v_DC+3JYMSw$&G%`r5N81;5Ot^N6Tuva64CQ{=-hSU<)&J%-9A;_&up&|wfjlRClL!|B0*B%^0>OauA?xT) zS^z-AE9TcuKcqqncpU};(s(`lwKE5K9@TjR0I=!V$_A1V6Mfp-Uz=~=!XnT6FkSaK zY>#>Aa39?fXxT9^#x8|W>^m&iT%iSMkr9S`ba>Ss+Xvb4W`JngSUoR0n{XRPJFv`W z5I`RYU@&{H24`>r$zrT#H4)xwkOi}?t)P`$Fh?dsv=1z`Y^)}$5%yW0%t6Sco+}v= zD;lO@5Y@OBBt0qA3n}^}_Til)?DFUA7-n^g;H+M>8voY=EI0iRHXyvWXk1s-O$gCl zh4rNuYpmY`gU4qi5>=>_;+sy{9M7X$UDl!UtgIxm4Z+6J$fQ;qTCKDkET zi@`-2nf}Z^NUwD({z~Kqe~K{)#FOy-we2!43k!=}^RfCfEG%rXyMH1A;LGbi zi(V`&0aZF2QihmacRaZ{O&~>%jL*h!1h2@_dYa*c#7z;OOGzo; zkJl%wKO*FehjV1Ad28%@;_=0c5TH{X;~4TxQAeFsR3bu{L4#2`iE9d-DT)AJclHU+ zdKIoXKBc>7F;fF)d35flc(I<~;k!#E^@EsW%0GwDAlBJ2OZ)=TO842~6rBZ4td{L{9?Sc)1B-YCgYNE=y(x){ zPlIq)w)-p@XBR9d9$^W)FP*0dEm#H-tQ^w2vCj5wP+)mCI?tnguPCs5-9WQltfwJZ zo}LjVkEA^FuNbl3w5TA!a@&8fR;U1@2Y^ux;>D*e?5?7n6d{YsEo|jOdY!}9p9ToA`dgq4G+2g?&(Baihdfv%!$Ue>S!Ok{^xF-dgUv~> zcIyNK;b6aeSQA^jQ2V5PH7xzkx3y6Eg}Wayr1l6wYAgxf*RS9PABeHCQk!=Kz*=}% zL-R^ z|5GAxY)JS`=k;a4?<3#6)w8}IC+QKzq;iywQipnO3vA}iilRQv9;>iv)NDh_xDf7^ z98~yR+oGavPmR=%*XYnVx8Fxj?*oNZWo}!=x#InWoAyhp5W*BvPN&Zh#4eYV8o>w2 znC0hOOy$XlNolm!c}I_2y!h-thJRrSJGnRKNQQs0)?Af8Rz9b9shg^2;OK64v2@A8XifZ_qDOngcu}FEWoyBX;<5PR^TtZK zi9h#}ShqrbsL>=hWg<{|O%?L)&qFGIhgaR**a{reEk(Ho248T2zDGnB)7@$@c1s9D zw|Z;@HF6BldU|{uMLC|8GFvxjo(F+r&{rb?C3Qg=&_^#|0o{p@tr3EW+N5DYzwh%* zj?L)l4ayN4Yx7ODN(&GhKV}%YhUuzWu&$EO6eX2)v>~7mL|niY8)v?6v*x$)oU6oY zLm<!^w^Nd6`sn^iLZTmh|b{ft;Yonm@el+b4`w{fKhrd=H8Y(qbUdRX$y_o zpB7Lk{_=~Yx3iiB%p@Tm@Z0epUNqa`T!TxxBsCwqerE8534>z%nwe)iQz|+*KVVaUq1ZXDDlvjJ&NL&-bdWP)a|N#uF-#Q z?_)YBe~m6tT2Y1cE&p6T62CCLp$KNk4;!g9d{G^#T|jEo#5~Iei(wZgx__9jkb>Rg zm4ykqvhm|=Zv^LYa=MSreVgWcc_#8CZUpJLCU<0cq5DQUiDPCpI%?0Pki({*%@5qF zjALYI{4(>FWDm~6dMTKx_%aLCP;p%E`}Y+H!5?ea4f#3aiI6d>>#zH~B1=3&ec%q) zM3R`w#RavX{ayWUlu3f>c~hhwA!W(I1Vz+bh;GQ*j2A^wn`Eypm+v(lu}R9hJ6un* zE4pva%7AWay10&S7X!Xpj|i-{_hE^uh>PMk3728Wp&cgQiuI9HL%V)$(d>#ZK7>lC z;z-#TKL;o5O#Czq2r=fYF#i=$X&L7)=&9Kx}eM2$~If7fL$gV%G0ymHF~$oNKP-?0x^1<#!O0 z0HRv{a*$N2kFI)E$rgT_jrRf-Jke#vXU(ctOzF!#mgV;*Xp>vLoJt&-B&U?gf5v6g zdmEin!HLaW%`0yl_U5%IV4rh`T#ADF0n}s36x$1r=h)1^q=-C z+Z@GrPvpR~X-kSEc2ovPqt_jxGsUNN5L1T!zjKIpU|R--IJMoRhg=~( zHnU=Q3M&|!P*mP%R0#g?V5X=sjF{R7X{AANSDMs~`l#83quoPMeZoeb_nQo@Tp7$u zFH7XVfwg2+r$R*zZdDbeqT6V6q5oIYS%iru=P}*mQx{IA9lDI9pJ8vp0k`T1Qo*^V zon5{pZ`o`H2N!*@$2GHwV8@2O2dXY4l%2Y=aW{;*77`~PzhPi_+$P<$6LTz zlCyZpU9ymvo+!%(e(;$ke5wfhElknr(pctj#J1m7f#hZx4CoAOM(Iu^EJvZm@(dw1Yj0oN8`n+xjBfVOcT=T$>bX{RTZ&MRN zA@am8+=Y;Oh}5ZcY1S-8YGFeHl3s zS5d?*WSAd~)CL6NYKMi`PS}9YHY`vF@CFsvQpsmv4V=v!0Kd%3ZlA*W8tiq2DSQ}d zE5j{}AF2wUL>#w^D)4@gv+EqN_t(90^~YeU|oqo-B9%e2_ z*Zbsy=8%QL5JLpX!@59nhnTXTnPqYo95MbV+5f2|N(}Z%en#Z7d(Ah&zwlffr~h`6 z;{v~KlU|SL)Acy|Ijj30QSWuJYtUjfp~kOASW;r2#uUiwWP?^2Hxqa&N)8Uh#{=v3gwN#F zBlK$x-c0A6Vj44ZU-EqWE4>g>`fkaW;{7D&T~N;F_y)+6D#nk@8ttcU?+2^fPHeO#qxM@UQ^w*e z8WrMA_#&kWsGab$jy23jcUb8RW+HCmo@ws!eLJ6bVj0ZEgTW2P$D4#c-}Ko&5&ZQj z|D^Xkwn%(sB!o*6Qo8Bwu+ zS#nQD2SN7XXVdSi;aAxuvBigy<8pziAzUR^-IZY~oC&WL=llOB~cD}^z z2?9;x!<}FbJq~&Bg%evz&*jV6wE+h*WcB+u>HqwdcOozgFEZSto9oy5Y7=D34vlV9 z0A~9E1Hpxcw?NeWflw?3@1?B0|9TLaB$vQ<^Kz1EsE!GEv=4)KN6uAxy)P4G@XHyF zIkJLQEncdc-doX;!_a?lA6*KYBf^PINpDDMSyHU^Tpqb+6?M@U=+{nS$`=W3b0%V1 z8xwKCm4v}!Q+|die!%KlBTjU8qt9!0xn`~6q$eq)_FxL{E0EL`QgUaa2aALAd=WJ~ z{}SNx3wjZlHt$RNUqjWZ91_1Du&TIXSc;3vw0VuxBxi`& zr6yorn+=spoD^<_toc=mGQ>Beqth6&4 z0j}MQ(Mb>q{r+bEQvWu?5`pI9N;|9JX1F=ZrXl(vGHibE?LV`rd-bT&Gvx1Jh!_~7 zV0$X1ynv?;Y`icM+! zxhm;#h+|2Ynr+(^HgluBSF>>*l7nIiz=-Hd)R^3aVhwwk3uGL2?7GA|Ayj! z^EUUC>T$mojB;VV=6@V!*Ds4_zh9V%^@{L7wMV5PupGo_MOn5edVKPRh|@-RnZ;tL zdT=?h82O0Y-`pv#CPe1LM)zbt;ZO;NO`^P>hfRT*4!qWP_R;DKX^$G6MPis%cuDMe z9{OXqEwd^4_Vb=*d`-3jM((+Y=;y+GdVB}8V7utCMVnjiA}m$??;6Y=_`TX1r_QD< zGW|9gLL@^aWB2RJ%Y}uv{1Q^UMCg^Wi<~l0Jx0IgPff}hrMSdW9=HZNH(+hW`!skP zlrtCFJDF*^S)jJ5z-!1OWLitmg~)SdtO1#2GJ@J)jyC@Qk+TdfiM&#e5Ef5^URH)?k3irPcu3%fTY{rz66 z+ro027Tjiqy*hFsH(r4y`p^SI5yMk>rtHGqQ2hvjAYFFw{Y^Yo^tCtzBLKk&z;B+eD#n44$bw{@j*o6GFg2Ar$@bOPGi6E4N_GtnrpU1e zIyJ(oC)g8YQ&I^jnQko?hdz2H$XeK*+oy(Nqx!ls5M!tb(>FIM31p#;lVWn#4pT!y zN+~pG#9vu+_9c6+h9K}ZlTj<3ml+d6#IPWeoF6b$F;az>$}UA;MtGn_AW&?<-%FEc zWv(eQYU2As;L1J_K~!uCM-kK_T}6#$E^@OlsN$8uw1P0Sh{+yXTkoOgw=5056;}ep zRlkhH85J0p%DnxAm>jZ0J10FV!3_};giYooTW*oeM%H>({2Qu%7POTxd7rnA*q#De z0=~adADaTfg-nSTW2jOU3xkGUrJ5@V0%POX`!-Z3AJiG8!{xEPK-LPkW0`$H0TFXx z?~DDG*Btde<7GS(#!zlYG6HDV%X-abDMCB3dgbfEl`ezQu?{vi41S|reufsRM}8TP zU}Cm2_)3UG8G;MT^$f%m{}ra`unRP7&y$%yo8$)G6Dn5)A5tO64xMB{sqf+QQ(%GY zMQSY_FPBV&Cu`xt* zmA1(%i5}rOs^VK;1sFV57FMN|RLHGc5nO8PQLFVD1|K-K(=CpUTh)2--QTr1c&M5> z@IDRjgep-5wr9Z#`FYwu(%)3xw~*(H2F+5={$rl4F+Y1VRGk92!KRqa3w59ZEPs>f zKz8nZTk-pQlO_NyVp+C-H9Y4qlOX+|7e$5xQ!>wng`lay;=OoZ{(cacjjVYy=w@nN zI)Q>Oa!d4nHl7GyK068WEe2)6Y`!Ke$IV-pJnGv)>S z^mikBlRL`+Y@Mw!iSoLejtQEf>H|wKnGbJ;R=Tl6Y&(7y>?vvRwBE~TP^Pz&^Y%4> zWCSF7V6lQd3z`DSA?`ddkFX+>yOH`RS|YS%hh3UDuUGb9Qnu)jt!Q_g{CYizJfacn z(wc|;yoFWzfBo{2(z&xP9#I9;{?A`(%-@{G_oNd{nG0qE72Fcsjqi=5Ydyr|bk3?n zezs))uC``77XZFfURNwpWluU=T;t!$YdLo&pOZQbSR63G;Je4|(cj)*3;&ix3KLJ) za5R`P!5r1p1pl|shy=ookHa$}{sCBZCGMaeBoImZyH6W!}oA~zbW8&M%Kl>pIZeJ7cEgQ<@7)u$Y zCEn|n_FLLmHhJnBD@kum(xTHidA1-ryKC0aVx;QyyW?@!O2=Y<)k$o4*dL zQhtJs*c5SuGTkpw>HWa2^Qvo_ezUe>DA_w8Bg078k0BFSThWe{v;SMfjA?y5#O1<> z5x@<|HOsn(8_z)0xhDXaz!rS3{{t4>wKfNp5q0U_U%_f zN$$0^`xjH@!pr5>B8(>gf2X$;YP3id?)tT8Cf)o@vX*w4E;eNc4{0{CP$^+5E|~F5 z0XPComx(=D@4T*p6S%Wr-Q3J;06F(R_Yt(*tDN2`T7%r_Ywl^53Pfy@&z*5Hjm-0` z|Hq5*K1r<3>SGC4<#%82C%a2vpc*`J5@H3 zF}5a8HYz&fl=#54GW+``HPE2{lx(FeN9*vt-DSE#6o9}WVm#~(0b8jxjP!HU7Si@3 zk9tvtpKAP6eN-tdDmK|jiv=iie*ky}2Ucb-eA(Zna-Fre>D-?I%5;&xU+t`mV$iHO zJ+Hi$j|h-n8ne9c>8X6`dR+~iIQF90ilxiQXiz=zkQz{{s4~z3p)Cm@$1GYL_lL>D z<8;^VZHM0pKXnLGfepxz6R{Sm|MOblmS(sxfS*J0i@ZPb}W5T-r={lPhHh=_hIXcDkTLpQ0Io|S7k zv1U=CQ2X+(fxRf<4L`!Pj3c#7L7f^OGQseTUwz{%)rp`kDQQ|IJ9--|5tx(VzfDoe zp6L4nL?uSTM~UII;8v>%W_|CaPJN^|vC>-r7YqE!Lvs>Tqlb{4nZ&WVDa{eSG7`iU zgwF&(=U`}GB=Yya(04u;0YV8*^yT*M@f*wjDX#83*9)5e5@}6$CMZUt<1qp3-)PKd z0Q0CvBLuilhK>2%>aRY<^hx)Mc>*z~q3OIvLeX@h9d=bTqtnR#q=%6v^RfTt+C3a3QH_|!Z~^ONKx7|oMQY4*TmZuGIkS?> zs61NRO(S*WpPuj{UuYA_1R&%(H4eZCis^LxAN%q-4v3hrVJm$SAqqf#lTy9z&E!wB zq63qPQUM$pzKjJ?d7+&y;Pj}FzR-p)cF%N9^6grvk!mnVgD;*)*8kmC>hGGz$e^mxC^;*k3)_GjeXs81B51iYN z)y4bYfOxKk%ouCiq4A+-(!Mc@glLHGzhJ<#h8^06pqnnR;->tY%?F&Sv6&S|ld@x>_JUeIonev|*F5x`3Yr{pso?mX#)6h=z<&+ztMJh0x@^%P*^qjcAf zrq&%f^=VwL#C1j&n8vtset}}U3Xteg1t_etl;?g3T6U;|m|^|f zQPYgfu#rI{x08qe;}BVhaJ0}GHbjiJsz*M5m^U=2%HQfd`VTc6;J{XO)G(m3xS#lp zK<$6?+SBaT^oKIJTi^J7hqdqo>4uM&$VlC48cYrSlBn6C^y;L8kg52+*QOVRh!1+K zAAl)$RAs(n_QZa> zVw{n&nWR9FaouG%F_~K%+)}XpKxo$&T=DPdr$=P7f9ii-cutelpS1&=dajp*uVWIWBwI?WZ@2woY)JKBFoVHi2U+IwEE8jnpT?%10!;L0 zbME$+f<;+N3p=lYy+q{3((+8BMlXQq)-2Hh()wk^BF~V zRF${WL5nM0%hiYFqY>Lq%)IW?&ONl5^n)9aMmD|EQ$4;{ zC+{s&n}zb=31&p5=m2fGTMHBes>5hB`7{T-6SOMPDxLc>leKc!DkC?QR9_v&^&;nF zZ_-e(UCQoR?Cn72?Pc4B*aIaZa%ECXWGFtZXss6@^X&d*y4pN>@sKuMhWKb#f z0S^D1No^_-|9|TAZgH^@)#Ti05%}g5JwYsv)rLd(psH;oq@D|{3Hn$!!!VS=sl5^f z8J6F}-Fm%Z0gB!0EXXbm^|3rXy%x`J$6Cf;!*=Wl8AYh9HQ7vwe%x3=ANQcW6lJO! zWwkYNQ+(E!zTi5kc7=0*Oey(e3Ti*IuKrCQEf#a04)kO9{3*!potV?=ij_rGT|fxs z8MRk72)d8F){}1%iJNMpbsfT?=WImP^e;$DpQeW5yZxtmS&x)Ff<#!e=oBC6NLM^Z zs;<*D2RSbl5@VAB(w8J4eZ>)958@s8mc2G7>ta$DPBEyGjRDrABrGNUT`0a%-r&iD z7e~npE(F&VT;3N0@@k|wQfc2&-kM$EGx_mtqziwI#N}t)C8JP`-dkEpRhEK)j_GX! z|G{O`y_lV@7{_vR^^*SJ`Y6vL7yrj|katwhWtO#*N>?--WQs#{%;QkIt^#tSlgScNox?jU$7z@sDDSxkGL-kH>U_e}{U9~G_r#AT!6I*z5zBHAhcURSPR z=S?fWI+{9=TQ-s&?}ZG>f12qwb3|4A6C=^zMc#fHJ&ioYcX zU+d9S7k({IZP#Cz_F%h_h-+|f=WfhpV~m(#hsLJ6zb<{S$Br%V4;Ok)NKAM%y-F!6<{63iqRFQnCtM0qOi?^`-Ad!Uc;#Bx z*9PQlIOepb)I2%_Wbm+7Wj-Ewlo!&4&iyn6c+Arf=DTt}Dxr^KET zh%J!U!fZ-IJY&wdOI_-y-=LR`Hpr!Xq7tal~DYhQ+tJonFyIv`wP z3%pxM6wJaa=M#EE;gy{=$}7Hua{O`n^H6=RK{9WuQhLNpkA*aexIfwsS(BxZhiVRG z9X*6L#Nd@@WM%mt=+PU>2XaOvu|6*Rdw;o@GKc5)Qj&jsY?G$z^w*H3=>K<`f(3XB z$9LaXx^{!h=8>y`k`MMyh-<*6|HIsW=1gQUcli>Xhp&F8aupLRbY-i~U3Zh-F`GBc z!30VP%iX_L#b0(vuJd{eVekhR6Ze-j3vSu$Rkdhj>9?ap{G@Ad`Dy#lT6>Y(Z}|PS zXqqQ~y?-W3@ylCUtU4L5#Rj&ZYaGIt_Pr65Vz6!mq2GK1-08{e0n^2&(bh$Syk4VJT0Iz`mp!8 zEfs;~-;U(q`huOGIiBt^k8%Wt8Ml%^?DVn3um}*oBwk7fXtwj6%~X9bf^5E|*fr8D zo3Ny#h>*6Xw5=&I{=|I8%ZS##SV|wz!vp+_nHtT~sLYdo=+7*M1z#Q$BO-)D%#}lK zHz9xDaO4L+%%@Z<{57&Z=4ZWm<05t;{*U4|I=_2l)$geFg6s{wB5i)+uP(oza>t7@ z1pjA4uHJ3tm|K^A3i(`%6&b{B&TtnyT5bi&{+AXTEqZ7filwgX`<9A~XcWt=JCqKW z$cdAkhycnCRqGqmo*izdv`DUZo4@Xu&x;x9JnHqUX}bCYuT4;*WW+pL5)rsX7dddhn!v`<==UX@wTxl~aXRASuAH^3Vk;0ddg=hed0&m- zrHw;_3#KbZGQe3Fv3MPKR%{QG zSV257djDm1LA(r_1NQ-_3$0s){UEl7O{^eR7%15N7%TIR16RKv3JeX^{(i7?x!$CwBX+>rxg}#8Tfot7j9cWjYGrr zd;hnDP0CoFC|}`jg|co7b~|0C>S*Q7;?1$Em^n7N5Mf9L;am=3JA z+G?x)L-PoUNhv5faG<0hB__oCeCUYeH|&^~Bt)Nr;UOrrp=B=+?*|c*83n(4M)=ON z$FqXpJ$_FfHl&(F?@5S>N!V-1N!h#_eoH=*-W|ciHv@JfH05kxJAFRNts%XJ;$ zYm$GXrsk$0!Y5Mt#*7?9O7fu6oU;a?);z5SL`LQS5=A~jtNaQk;B^Q^%85AvrE>m8 z%k(sWo(7~Gl%^!esCW39wqpXI#b-Ca807{OaGcQkGXOnDg82<8m6SV0fC+#Gq>4(- z02EUHgVRd@P9XKf!VEyE==L(G`%3Zy00-qWwJ%(hnkvlzsGM~Vb^pw2r4&_7{W*Yk z2>|O9SQnx7GPK@^thZw8FC*)(lYITu4WEgPOV?h9avB} xu%dBbN#($r&WS~(1FKpmmes4Rw%TeRuy2Z=U1CgnY2N?<002ovPDHLkV1g{-{V)Ik diff --git a/BookPlayer/Assets.xcassets/plus/plusImageSupport.imageset/plusImageSupport@2x.png b/BookPlayer/Assets.xcassets/plus/plusImageSupport.imageset/plusImageSupport@2x.png deleted file mode 100644 index 4bf60459cf6e76508472119147c47cfae88a289a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1063 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&bp`l@xB}@x0)&}3^np&%D+%%o zW?*FH5 zYaYISbd=RbAm*X=E4#-l-|*XCx%Sa5|7*;>$IAQWo#d~{37K?^FTT)cQQD#DmsBkG zd}uzZvLx?MO1O}raov>Xy|*@b707fnzLz?oS_YTFU+%QRb`S+ZP=5#OB z&n&y~R#4KLt+2)riHbx8+Op>XJ={Ot5B`;#@b=rbX@B*YtIj&56*o=rtDI3}aVx&a#>3J|RVE-E3=>DetqN-&l9hMyB~P3`s2S~`<8P$ z)e}}|E~%KL&2Ic6b`AS0Z{hjr?xW0%a}j3Z;K1Gc76YRWabPK6B~9A^vS_ zi~`Yz9iwjw#GEW)+I)+NrQw#>nG(Lu3pms^Y))i)!#8Py#Hn_#16A@`3H!q|e@tlL zl(=ytfU%5OErD&N*j`@o4Oh#S?fAIr*tLxhnR47&Ux})__$NpzC#+0YuvpM!-4NQ- zAj)&a%ht`ajyXA*C4xEsRKR|oeFrrB4sgWP1h23+=o2=$#{XnD3!7RYlUhQ}^#{JK zX;SJ5tDOF}ald~hbdKx$e0Gt0{AsV0_B}onTlzI&-TVE_ul^?R?cJSplr>g{yY|1V zz}K{8-EaR3e7NrZVQ=hjH3or(B!yK>;`jI4rHNVXdAg{<@6^lo3;WytI3KY;`X~KK z-SK-9D!iZhuH63AZpM!cwnHoXpYL1nL9|zYWsUFi?o;1a-%2eO+q33csja-umz2fs ztHaZFTiV|~`!VNvySM$_UmtIs|1OvCfup@W!sggxN45T<${A-L*T`jj@mSs-Wqa-Q g!L-)0<=}KLdN=D;|H@W(dr)@wboFyt=akR{0B9DbX8-^I diff --git a/BookPlayer/Assets.xcassets/plus/plusImageSupport.imageset/plusImageSupport@3x.png b/BookPlayer/Assets.xcassets/plus/plusImageSupport.imageset/plusImageSupport@3x.png deleted file mode 100644 index e50ab933b537614e474c403f6061d5af0ece5347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1597 zcmdUw{XY{30LJ%XBQuQ|D=$OKoZ^=EQD$z7m6tI?UgtHZm#a%SgypRm=B4QEnpNr$ zk}J~1h^#JKc|9+mwzg4H3HO;WJN?ifanI-TJl|iRpPuJD&DRsIxm^)6m+gi$v)gY}*cjX`{jFTi|*+ zAm~nevR`0mR2%|BpeI=R#+$@q86iYd|45@47jGwPT5s{yV*mg|gGwd^rUB<)=bwIx zN2rM+_OJ)%HxBv$C1jyXO;oRe`FHVLYx`X=G0$&-{*>wErjFj(3pi#YE803@6i)Am z{itvC#J~5hAR=jqjk$c=A~oUUwyuh4b46^)N^bk}2-=kePeDDqF07v@^NF_%Tkz|9 z?rg!!O^nl;ekEwK?G6?B9Fixw)HYD%0WVmCr4*aE!^uvQYoAZyO6M;MuqfK!HB(yeSVvf2>P>*827+*`^qi0n$oO5zG%giFfL zS6PA;{Ee>ZCxrS36W5M66Vcl0%E*U9#~C*!&!lB=z$8?D+gZ;sxu;a1hw#Qp-yMi1 zuetv%Ahd2gj=YF@IRi7jS0m)XATFUc($(hmCE~?vsF0Sq-NFw`j0eh`xvm=v*p`2x zy3zODhW;)8}M)R!s+-c7V%% zwQzM^u}gs<)3Cq9O#oP5PZD$V(DN^cNcxToqH6n+RUAhbDb2IkJ{5~XOt4DMkagy(c!x~!XB$T|~)~(+-XlOCnjRm=0>KF=dKxz#T$YQZ^&4LNSP%euz z;=&OoIq*W-q=A_?R~;75LG6!NXX{5aBlQ7yf@ zL4VYgzi~YlJHU4@mS5;HXeZ}Rv5bkcrbOnm(!{SqZ75}muc^yDqy4%-jn-aP?5BG| zq?WfY3-lMlhqW}dYN${Ie;KnA;{f+pniWow@EMXfj=77(Y@m1Vy*$mBX(jYh5%}AW z79+-@8Jy!K9VJ>UA77^|H@MlUf}%I~)V6_I*r}eim2^$+*WG<@Qf_J_za>`FM(TcQ zD!64AO4SLW)EqrRaDzG56&%pPUl^9yk#rcM@X~Ih5n8zrl-0=1H)2upu2ElP&Yo)@ zVUtP$Y^kFl%cxl%` z)1W_|F$xZhCl6Qb6!p|~>(Wto-}epZiiE>8bBT~$9>#}2#t{W+78!d7%iC2X8d1Ie zp^jKViO8HyTMfBX&+B^sRuxluZ`6j4%i#A*+_F@anqJzg}C7#vPuz0_;kk|^v>{d;6x`FRupZ??kR5L8k?;N zMKpH$Z~oH4d4OFm|1MQWd2D`~D;I;cDrKBqj4QboVW4qe8iDrZk; zb@R(=*3B^Z1PF9Gb2w*f#=Db-ZVNKc!FADfOsCq}<}sI*qWxvCZ19&1EUjia(vAyuRXDJVaYTk*RdKx7MuVGm<}l;dZYvpaVbQiWiR3IK&sfp;H* zo?8q+fm*%X$1dSVf=5BGneLNUoegQ#;Kh|?Wd=+yH2RfpxoWJv%?tN^+sxkr6Fy7M TpblMG`*s3UiZ8jzgL(Ep@W_rT diff --git a/BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/Contents.json b/BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/Contents.json deleted file mode 100644 index 5366e8695..000000000 --- a/BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/Contents.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "plusImageThemes.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "plusImageThemes@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "plusImageThemes@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "template-rendering-intent" : "template" - } -} \ No newline at end of file diff --git a/BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/plusImageThemes.png b/BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/plusImageThemes.png deleted file mode 100644 index 53eee94b0111239c551ac35f0a42a09c8c186039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmV-R0kr;!P)exfuZM!a^wu z=mW-Q0od9Ae=LBi4@kaO@l(E zx!uxK00Izz00eMcfcp5m&ZfHCTDRtDJGfW9uk(boGDTKbsr+sCj-wiZ#LtgYgLS-OlQ d5{cwL^90 diff --git a/BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/plusImageThemes@2x.png b/BookPlayer/Assets.xcassets/plus/plusImageThemes.imageset/plusImageThemes@2x.png deleted file mode 100644 index 0eff9ecb8f262299eb364733e989b4c4bf60fe15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&Mcx(3&&t}MHT#jQFQ;GV$8}siiw-%n*cCohWShU_!-NL^s0xpR>e@Cb z4=#(z6@Ad$^Cy{6>cZE<7LxKhjAdr=o-8-!PUM}@o8yq)!d&&T!O<#V3g3(+%sp%q zB7QPFX>FgQo!~EZQi6$Z$-*g$4?Lt!OEUQ_IohK5z$fag1k^v3_`)0awX!M^YeMo zf`xO3?z`>Nqzzg)cI*}{e;}gt;9;0eLv}~Q^5~B&y95~Zw?ATi{K8^v;#`c(EF1!Ye73%Jo)40Jr5PBQW_Y?dhEy=V zIe0O*Sy6)7;Xh*r19Qs%RBOkjA8aF6z5noj#!LvXT|dS9?@wo4%f0d^vT8qYFE-bh z)g2!#T=eZ>>t@AghrQ)JZtmHpm?9TvEo>#mES6%@X0qZ1&&vQq2_uC^i5Hl8_1X3= zR5a9ZbWRIsYdf@niFc}_s8rqUt;|=CB}()>j%VxEoS<#dIr*0N@e@w7cGs1$lxxX9ZN){HY~Z(u!oJ^ zN7GE<`$5KJF1{Iyn4i695R$#%&aT2F!@#kE-a`Z~AN}`OSW{vzKu}$m-_h zORmhmdNT4-Rtt&)!VEB%Jf<@b&F{QL0DpX^9v!EZNk`wufW7nA8U&pTpZ~ zo0#_M$^cWZO7%<(4VahW)!0Yf_Xv1j+>xO4S z2B#T}8{P;NOk(t7SY_D2An+knUN!(6oSIe%JbW*T3l6m0XfS1G*Kv5U{0Qqp#@9>? ziSsZ2o$^uZLHjcO&n9U#X`hyUnfW95z3I=0quHMhPP_bMvFrSk?YsRZ_h0|J%}$k@ wZ~n<}AHK=@KW)_FH_tjEk=$c=3`)GwuiO`ue~r)E5tNBMUHx3vIVCg!0JbnSWdHyG diff --git a/BookPlayer/Assets.xcassets/plus/support-no-padding.imageset/Contents.json b/BookPlayer/Assets.xcassets/plus/support-no-padding.imageset/Contents.json deleted file mode 100644 index 795b577de..000000000 --- a/BookPlayer/Assets.xcassets/plus/support-no-padding.imageset/Contents.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "images" : [ - { - "filename" : "support-no-padding.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "support-no-padding@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "support-no-padding@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" - } -} diff --git a/BookPlayer/Assets.xcassets/plus/support-no-padding.imageset/support-no-padding.png b/BookPlayer/Assets.xcassets/plus/support-no-padding.imageset/support-no-padding.png deleted file mode 100644 index 69e5423693ebb92f20b74d709ccf2bc3a57ccb0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2799 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 Date: Sun, 20 Sep 2026 23:48:44 -0500 Subject: [PATCH 151/172] fix: the corner badge says whose cloud the file is in MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The artwork's corner is a three-state download indicator — a spinner while downloading, nothing once downloaded, a `cloud` in a triangle while the file isn't on the device. That last glyph is right for our own storage and wrong for a media server: the file is sitting on the user's machine, not ours, which is the distinction the media-server paywall copy goes out of its way to make. The provider's mark says everything the cloud said and says whose as well. No state is lost, because the mapping is one to one. `.notDownloaded` is exactly the state in which the question "from where" has an answer worth showing, and the other two arms are untouched: a downloaded item still draws nothing, a downloading one still draws the spinner. `streamingResource`, not the first media-server link. It is the same value `downloadRemoteFiles` picks, so the badge can never name a server the tap won't reach — and it is already Hardcover-filtered, which matters here: the API's `markExternalSourceUploaded` marks EVERY provider row of an item 'downloaded', so a dual-linked book's Hardcover row passes a bare syncStatus check. That once aimed a download at a provider with no files at all. With the corner carrying provenance, the subtitle goes back to what develop has — glyph and separator deleted, `Text(verbatim: item.details)` inline again, and the doc comment justifying the `Text` concatenation with it. The trade accepted knowingly: provenance is now visible only while the file is remote. Once it is downloaded the book plays the local file and where it came from stops mattering to the reader. It does NOT stop mattering to the app — progress still pushes to that server, keyed off the resource's providerName — which is why `getAccessibilityLabel(includeSource:)` stays unconditional. VoiceOver never saw the badge in any state, so the announcement is that user's only channel. The geometry is measured against the cloud rather than eyeballed. All three badges share the cloud's 14pt-wide box, which is what centres them: a height-only frame lets each mark's own width decide where its centre falls, and these two differ enough (Jellyfin square, Audiobookshelf taller than wide) to sit visibly right of a cloud row. The 3pt below buys what the cloud gets for free — it is a wide, low glyph, so fitting it into a 14x16 box letterboxes it and leaves ~4.6pt of air under its ink, where a mark that fills its box lands flush on the corner's edge and reads as sitting lower. Heights are per-provider on `badgeHeight` because the symbols don't fill their boxes equally: at a shared frame height Jellyfin's ink draws ~0.4pt shorter than Audiobookshelf's. The ceiling is not the corner's diagonal, which nothing reaches until well past 13, but the ink's centre climbing away from the cloud's. --- .../Library/ItemList/Views/BookView.swift | 35 +------------ .../ItemList/Views/ItemArtworkView.swift | 50 +++++++++++++++++-- .../Extensions/MediaServerProvider+Icon.swift | 15 ++++++ 3 files changed, 62 insertions(+), 38 deletions(-) diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index 29d4134db..d885b6523 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -43,39 +43,6 @@ struct BookView: View { : theme.primaryColor } - /// Provider glyphs then the author, as ONE `Text` rather than a stack of them. - /// - /// Concatenation buys three things a stack can't: an interpolated `Image` is sized from the - /// font, so the provider icon grows with Dynamic Type instead of sitting at a fixed 12pt; - /// the enclosing VStack keeps its font-derived default spacing, which SwiftUI applies only - /// between adjacent `Text` views (an `HStack` child forfeits it, and needed a hardcoded gap - /// to look right); and the subtitle truncates once at the end instead of each piece - /// competing for width and truncating on its own. - /// - /// The font sizing holds only because the provider icons are symbol sets: a plain image set - /// interpolated into `Text` draws at its intrinsic point size with its bottom edge pinned to - /// the baseline, which is how these read as oversized and misaligned before. Keep them as - /// `.symbolset`s drawn to the cap-height guides, or this comment stops being true. - /// - /// The row is a single accessibility element (`children: .ignore` + - /// `dynamicAccessibilityLabel`), so nothing here reaches VoiceOver and the glyphs need no - /// `accessibilityHidden`. They are also the only visible trace of where the item came from, - /// which is why `VoiceOverService` takes `includeSource` and speaks the provider names. - private var subtitle: Text { - // Media-server links only, same rule the details section uses: Hardcover is - // progress-sync, not a source the book streams from, so it earns no badge here. - (item.externalResources?.displayOrderedMediaServerResources ?? []) - .compactMap(\.mediaServer) - .reduce(Text(verbatim: "")) { partial, provider in - // Glyph only: the provider name next to its own logo was a second copy of the same - // fact, and it crowded the author off the one line this row gives it. - partial + Text("\(Image(provider.icon)) ") - } - // Appended outside the reduce: the author renders even when the item has no external - // resources (nil for locally-imported books on some construction paths). - + Text(verbatim: item.details) - } - var body: some View { HStack(spacing: 0) { Button(action: artworkTap) { @@ -92,7 +59,7 @@ struct BookView: View { .bpFont(.subheadline) .fontWeight(.bold) .foregroundStyle(titleColor) - subtitle + Text(verbatim: item.details) .foregroundStyle(theme.secondaryColor) .bpFont(.caption) Text(verbatim: item.durationFormatted) diff --git a/BookPlayer/Library/ItemList/Views/ItemArtworkView.swift b/BookPlayer/Library/ItemList/Views/ItemArtworkView.swift index 08aadfa8f..30ee50bc9 100644 --- a/BookPlayer/Library/ItemList/Views/ItemArtworkView.swift +++ b/BookPlayer/Library/ItemList/Views/ItemArtworkView.swift @@ -137,10 +137,7 @@ struct ItemArtworkView: View { ZStack(alignment: .bottomTrailing) { CornerTriangle() .fill(theme.systemGroupedBackgroundColor) - Image(systemName: "cloud") - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 14, height: 16) + downloadBadge .padding(1) .padding(.trailing, 2) .foregroundStyle(theme.linkColor) @@ -148,6 +145,51 @@ struct ItemArtworkView: View { .clipShape(CornerTriangle()) } } + + /// The server this row would stream from, or nil when it isn't a media-server item. + /// + /// `streamingResource` rather than the first media-server link, for two reasons. It is the + /// same value `downloadRemoteFiles` picks, so the badge always names the server the tap will + /// actually reach. And it is already Hardcover-filtered: the API's `markExternalSourceUploaded` + /// marks EVERY provider row of an item 'downloaded', so a dual-linked book's Hardcover row + /// passes a bare syncStatus check — which once aimed the download at a provider that has no + /// files at all. + private var streamingServer: ExternalResource.MediaServerProvider? { + item.externalResources?.streamingResource?.mediaServer + } + + /// What sits in the corner while the file isn't on the device. + /// + /// `cloud` is right for our own storage and wrong for a media server — the file is on the + /// user's machine, not ours, which is the distinction the media-server paywall copy makes a + /// point of. The provider's mark says the same thing the cloud does, and says whose. + /// + /// All three badges share the cloud's 14pt-wide box so they land on ONE axis. The width is + /// what centres them: a height-only frame lets each mark's own width decide where its centre + /// falls, and the marks differ enough (Jellyfin is square, Audiobookshelf is taller than + /// wide) that they sat 1.6pt and 2.9pt right of the cloud — visibly off against a cloud row + /// above. Inside a shared box each one centres itself, whatever its aspect ratio. + /// + /// The 3pt below buys what the cloud gets for free. `cloud` is a wide, low glyph, so fitting + /// it into a 14x16 box letterboxes it and leaves ~4.6pt of air under its ink; a mark that + /// fills its box lands flush on the corner's edge instead and reads as sitting lower. + /// + /// The heights themselves are per-provider — see `MediaServerProvider.badgeHeight`. + @ViewBuilder + private var downloadBadge: some View { + if let streamingServer { + Image(streamingServer.icon) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 14, height: streamingServer.badgeHeight) + .padding(.bottom, 3) + } else { + Image(systemName: "cloud") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 14, height: 16) + } + } } /// Bottom-right angled triangle diff --git a/BookPlayer/Utils/Extensions/MediaServerProvider+Icon.swift b/BookPlayer/Utils/Extensions/MediaServerProvider+Icon.swift index ab60f9bf4..4262e6122 100644 --- a/BookPlayer/Utils/Extensions/MediaServerProvider+Icon.swift +++ b/BookPlayer/Utils/Extensions/MediaServerProvider+Icon.swift @@ -20,4 +20,19 @@ extension ExternalResource.MediaServerProvider { case .audiobookshelf: .audiobookshelfIcon } } + + /// Height of the mark in the library row's corner badge, per provider because one number + /// cannot make these two look the same size: the symbols don't fill their boxes equally, so + /// at a shared frame height Jellyfin's ink draws ~0.4pt shorter than Audiobookshelf's and + /// reads as undersized beside it. These land both inks at ~10.7pt. + /// + /// The ceiling is not the corner's diagonal — nothing clips until well past 13. It is the + /// ink's centre climbing above the cloud's, which is what makes a media-server row look + /// misaligned against a cloud row above it. Raise these together, and not by much. + var badgeHeight: CGFloat { + switch self { + case .jellyfin: 11.5 + case .audiobookshelf: 11 + } + } } From 44ffa13a92ee8dd228c143442e4c6ce8e55e5fdd Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 23 Sep 2026 06:03:20 -0500 Subject: [PATCH 152/172] fix(sync): send real uuids on GET requests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `[String: Any]` parameters holding a Swift optional were interpolated into the query string as `Optional("…")` (or the literal `nil`), so no GET on /v1/library has ever carried a valid uuid: the API silently fell back to the path. The encoder now unwraps optionals and drops nils. A valid uuid changes which row the API returns, so two call sites are made correct for it: a bound book's chapter refresh resolves by path only (the parent's uuid would return the parent row, which has no file URL), and .remoteContentsURL keeps the container's uuid now that the API (api#49) lists a container's children by its server-side key. Pinned by NetworkClientQueryEncodingTests (passes on the iPhone 17 Pro sim). --- BookPlayer.xcodeproj/project.pbxproj | 4 ++ BookPlayer/Player/PlayerManager.swift | 6 ++- .../NetworkClientQueryEncodingTests.swift | 44 +++++++++++++++++++ .../LocalPlayback/Player/PlayerManager.swift | 6 ++- Shared/Network/NetworkClient.swift | 22 +++++++--- Shared/Services/Sync/LibraryAPI.swift | 6 +++ 6 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 BookPlayerTests/NetworkClientQueryEncodingTests.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 5c5173767..a64c78469 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -135,6 +135,7 @@ 28EEB2588DE468A6B8C15272 /* RefreshTaskOperationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */; }; 3EBBB264D481A0F2DF48763E /* ListSyncRefreshServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098A98893A8783E8BE1C5420 /* ListSyncRefreshServiceTests.swift */; }; FDA22898B1CD320A1D8F6C52 /* QueuedTaskDisplayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */; }; + 74054210C96493349539697D /* NetworkClientQueryEncodingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5359C57600F2E373E8F33D39 /* NetworkClientQueryEncodingTests.swift */; }; 41640A3724416EE8004FB97B /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 41640A3624416EE8004FB97B /* Intents.intentdefinition */; settings = {ATTRIBUTES = (no_codegen, ); }; }; 41640A452441ACE2004FB97B /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 41640A3624416EE8004FB97B /* Intents.intentdefinition */; }; 4165EE0520A743D500616EDF /* BookPlayer.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 4165EDF920A743D500616EDF /* BookPlayer.xcdatamodeld */; }; @@ -1264,6 +1265,7 @@ 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshTaskOperationTests.swift; sourceTree = ""; }; 098A98893A8783E8BE1C5420 /* ListSyncRefreshServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListSyncRefreshServiceTests.swift; sourceTree = ""; }; EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTaskDisplayTests.swift; sourceTree = ""; }; + 5359C57600F2E373E8F33D39 /* NetworkClientQueryEncodingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkClientQueryEncodingTests.swift; sourceTree = ""; }; 4163E314214ACB4300072AA2 /* DataTestUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTestUtils.swift; sourceTree = ""; }; 41640A1F24416774004FB97B /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; }; 41640A3624416EE8004FB97B /* Intents.intentdefinition */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; path = Intents.intentdefinition; sourceTree = ""; }; @@ -2474,6 +2476,7 @@ 65962B5F03D221629A83C22C /* RefreshTaskOperationTests.swift */, 098A98893A8783E8BE1C5420 /* ListSyncRefreshServiceTests.swift */, EDC06443EFD052E697036798 /* QueuedTaskDisplayTests.swift */, + 5359C57600F2E373E8F33D39 /* NetworkClientQueryEncodingTests.swift */, 41C3CF7D20AEA5E5007C3EF4 /* DataManagerTests.swift */, 9F8A9A5D27AC3F8C0093AA1C /* PlayableItemTests.swift */, 689E2BCD29DC1D9253949A53 /* PlayableChapterTests.swift */, @@ -5275,6 +5278,7 @@ 28EEB2588DE468A6B8C15272 /* RefreshTaskOperationTests.swift in Sources */, 3EBBB264D481A0F2DF48763E /* ListSyncRefreshServiceTests.swift in Sources */, FDA22898B1CD320A1D8F6C52 /* QueuedTaskDisplayTests.swift in Sources */, + 74054210C96493349539697D /* NetworkClientQueryEncodingTests.swift in Sources */, 0CEC6B48350FC9C0A0B7D1C0 /* SyncTasksStorageTests.swift in Sources */, 1A26F7D72FFD6D625A313FC5 /* AudioMetadataServiceTests.swift in Sources */, 466E4B7066F10717C8CE7B3E /* LibraryServiceReloadChaptersTests.swift in Sources */, diff --git a/BookPlayer/Player/PlayerManager.swift b/BookPlayer/Player/PlayerManager.swift index f362dda78..6bfee644e 100755 --- a/BookPlayer/Player/PlayerManager.swift +++ b/BookPlayer/Player/PlayerManager.swift @@ -209,9 +209,13 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { fileURL = chapterURL } else { isFetchingRemoteURL = true + // For a bound book the chapter is a child file and `currentItem` is the parent: + // sending the parent's uuid would make the API return the parent row (no file + // URL) instead of this chapter, so resolve bound chapters by path only. + let itemUUID = currentItem?.isBoundBook == true ? nil : currentItem?.uuid fileURL = try await syncService - .getRemoteFileURLs(of: chapter.relativePath, for: currentItem?.uuid, type: .book)[0].url + .getRemoteFileURLs(of: chapter.relativePath, for: itemUUID, type: .book)[0].url isFetchingRemoteURL = false } diff --git a/BookPlayerTests/NetworkClientQueryEncodingTests.swift b/BookPlayerTests/NetworkClientQueryEncodingTests.swift new file mode 100644 index 000000000..b277c01fc --- /dev/null +++ b/BookPlayerTests/NetworkClientQueryEncodingTests.swift @@ -0,0 +1,44 @@ +// +// NetworkClientQueryEncodingTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import XCTest + +@testable import BookPlayerKit + +/// GET parameters travel as `[String: Any]`. An optional stored as `Any` used to be +/// interpolated into the query string as `Optional("…")` — or the literal `nil` — +/// which is what the API received for every `uuid` on `/v1/library` for years and +/// silently ignored. The encoder must unwrap optionals and drop absent values. +final class NetworkClientQueryEncodingTests: XCTestCase { + func testOptionalGetParametersAreUnwrappedAndAbsentOnesDropped() throws { + let client = NetworkClient() + let uuid: String? = "2C2D0F44-1111-4111-8111-111111111111" + let missing: String? = nil + + let request = try client.buildURLRequest( + path: "/v1/library", + method: .get, + parameters: [ + "relativePath": "Folder/", + "sign": true, + "uuid": uuid as Any, + "missing": missing as Any, + ] + ) + + let url = try XCTUnwrap(request.url) + let items = try XCTUnwrap(URLComponents(url: url, resolvingAgainstBaseURL: false)?.queryItems) + let byName = Dictionary(uniqueKeysWithValues: items.map { ($0.name, $0.value ?? "") }) + + XCTAssertEqual(byName["uuid"], uuid, "the wrapped value, not Optional(\"…\")") + XCTAssertEqual(byName["relativePath"], "Folder/") + XCTAssertEqual(byName["sign"], "true") + XCTAssertNil(byName["missing"], "a nil optional is omitted, not sent as the string \"nil\"") + XCTAssertFalse(url.absoluteString.contains("Optional")) + XCTAssertFalse(url.absoluteString.contains("nil")) + } +} diff --git a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift index e63a5c61c..8160be045 100644 --- a/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift +++ b/BookPlayerWatch/LocalPlayback/Player/PlayerManager.swift @@ -183,9 +183,13 @@ final class PlayerManager: NSObject, PlayerManagerProtocol, ObservableObject { fileURL = chapterURL } else { isFetchingRemoteURL = true + // For a bound book the chapter is a child file and `currentItem` is the parent: + // sending the parent's uuid would make the API return the parent row (no file + // URL) instead of this chapter, so resolve bound chapters by path only. + let itemUUID = currentItem?.isBoundBook == true ? nil : currentItem?.uuid fileURL = try await syncService - .getRemoteFileURLs(of: chapter.relativePath, for: currentItem?.uuid, type: .book)[0].url + .getRemoteFileURLs(of: chapter.relativePath, for: itemUUID, type: .book)[0].url isFetchingRemoteURL = false } diff --git a/Shared/Network/NetworkClient.swift b/Shared/Network/NetworkClient.swift index cfd43a0fd..f4aa0430e 100644 --- a/Shared/Network/NetworkClient.swift +++ b/Shared/Network/NetworkClient.swift @@ -275,13 +275,14 @@ public class NetworkClient: NetworkClientProtocol, BPLogger { if case .get = method, let parameters = parameters { - let queryItems = parameters.map({ - URLQueryItem( - name: $0.0, - value: "\($0.1)" - ) - }) - components.queryItems = queryItems + // Optionals stored as `Any` interpolate as `Optional("…")`, which is what the + // API had been receiving for every GET `uuid` (it silently failed the server's + // UUID check and fell back to a path lookup). Unwrap them, and drop absent + // values instead of sending the literal string "nil". + components.queryItems = parameters.compactMap { key, value in + guard let unwrapped = Self.unwrapOptional(value) else { return nil } + return URLQueryItem(name: key, value: "\(unwrapped)") + } } guard let url = components.url else { @@ -290,6 +291,13 @@ public class NetworkClient: NetworkClientProtocol, BPLogger { return try buildURLRequest(url: url, method: method, parameters: parameters) } + + /// `nil` for a nil optional, the wrapped value for a non-nil one, the value itself otherwise. + private static func unwrapOptional(_ value: Any) -> Any? { + if case Optional.none = value { return nil } + if case Optional.some(let inner) = value { return inner } + return value + } } /// Default error message structure diff --git a/Shared/Services/Sync/LibraryAPI.swift b/Shared/Services/Sync/LibraryAPI.swift index 13775e651..856f79e21 100644 --- a/Shared/Services/Sync/LibraryAPI.swift +++ b/Shared/Services/Sync/LibraryAPI.swift @@ -139,6 +139,12 @@ extension LibraryAPI: Endpoint { "uuid": uuid as Any ] case .remoteContentsURL(let path, let uuid): + // `uuid` names the container; the trailing slash asks the API for its + // children, listed by the container's server-side key — so the listing is + // right even when this device still holds a pre-rename path. Requires the + // API contract shipped in bookplayer-api#49. (Until the GET encoder fix in + // NetworkClient, this uuid reached the server as `Optional("…")` and was + // silently ignored, so the path did all the work.) return [ "relativePath": "\(path)/", "sign": true, From 071783145b9b085ce28ef6657998902b87ccd791 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 24 Sep 2026 11:03:03 -0500 Subject: [PATCH 153/172] fix(sync): show the file name on queued upload rows File upload rows in Queued Tasks showed a generic label, so users couldn't tell which book was uploading. Show the task's relativePath, as the sync-lane rows already do. --- BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift | 8 +++++--- BookPlayerTests/QueuedTaskDisplayTests.swift | 7 ++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift b/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift index 0079c2364..d4e613ab5 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTaskDisplay.swift @@ -65,14 +65,16 @@ extension Array where Element == QueuedSyncTask { } extension QueuedSyncTask { - /// Sync-lane jobs name the item they touch (the library match names the whole library); - /// file uploads and provider pushes describe the work instead. + /// Jobs name the item they touch (the library match names the whole library); a provider + /// push describes the work instead, since the row's lane already names the provider. var displayTitle: String { switch jobType { case .matchUuid: return "sync_library_title".localized case .uploadFile: - return "task_uploading_file_label".localized + // The reference carries the library key (see `handleUploadResult`), so the upload lane + // names the file like every other row — fall back only if a legacy task stored none. + return relativePath.isEmpty ? "task_uploading_file_label".localized : relativePath case .externalUpdate: return String(format: "task_updating_progress_label".localized, QueueDisplay.name(for: queueKey)) default: diff --git a/BookPlayerTests/QueuedTaskDisplayTests.swift b/BookPlayerTests/QueuedTaskDisplayTests.swift index 074e0773b..448324f07 100644 --- a/BookPlayerTests/QueuedTaskDisplayTests.swift +++ b/BookPlayerTests/QueuedTaskDisplayTests.swift @@ -62,9 +62,14 @@ final class QueuedTaskDisplayTests: XCTestCase { task("s", lane: TaskQueueKey.sync, jobType: .update, relativePath: "Author/Book.m4b").displayTitle, "Author/Book.m4b" ) + XCTAssertEqual( + task("u", lane: TaskQueueKey.uploadFile, jobType: .uploadFile, relativePath: "Author/Book.m4b").displayTitle, + "Author/Book.m4b" + ) XCTAssertEqual( task("u", lane: TaskQueueKey.uploadFile, jobType: .uploadFile).displayTitle, - "task_uploading_file_label".localized + "task_uploading_file_label".localized, + "a task stored before the key was persisted still reads as an upload" ) XCTAssertEqual( task("j", lane: "jellyfin").displayTitle, From 6509388ab11af3ed2c166a3481bc0baad5c993bd Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 24 Sep 2026 18:10:00 -0500 Subject: [PATCH 154/172] chore: raise the iOS minimum to 26 Background uploads will rely on BGContinuedProcessingTask, which is iOS 26+. All iOS targets move from 18.0 to 26.0; the watch targets stay on watchOS 10. - Drop the availability checks that are now always true, keeping the iOS 26 branch: the search tab and searchable modifier, Liquid Glass toolbar and glass helpers, the mini player accessory, the iOS 26 app icons, the iOS 17/18 widget and intent paths (a single widget bundle now), and the iOS 13/16 annotations. The iOS 26.1 checks stay. - Submit background tasks through submitTaskRequest on iOS 27, where BGTaskScheduler.submit(_:) is deprecated. --- BookPlayer.xcodeproj/project.pbxproj | 42 +++++++++---------- BookPlayer/AppDelegate.swift | 31 +++++++++++--- BookPlayer/AppIntents/BPAppShortcuts.swift | 2 +- .../AppIntents/CancelSleepTimerIntent.swift | 2 +- .../EndChapterSleepTimerIntent.swift | 2 +- .../Library/ItemList/ItemListView.swift | 35 ++++++---------- BookPlayer/MainView.swift | 2 +- .../Settings/Icons/SettingsAppIconsView.swift | 22 ++++------ BookPlayer/Utils/BPSKANManager.swift | 1 - .../Utils/Extensions/View+BookPlayer.swift | 27 +++--------- .../PlayAndSleepActionHandler.swift | 2 - BookPlayerIntents/SleepTimerHandler.swift | 2 - BookPlayerWidgets/BookPlayerWidgets.swift | 14 +------ .../Phone/BookPlaybackToggleIntent.swift | 2 +- .../Phone/LastPlayed/LastPlayedView.swift | 34 +++++++-------- .../Phone/PlayLastControlWidgetView.swift | 1 - .../RecentBooks/RecentBooksWidgetView.swift | 14 +------ BookPlayerWidgets/Phone/WidgetUtils.swift | 14 ++----- .../SharedIconWidget/SharedIconWidget.swift | 1 - .../SharedNowPlayingWidget/CircularView.swift | 1 - .../SharedNowPlayingWidget/CornerView.swift | 9 +--- .../RectangularView.swift | 1 - .../SharedNowPlayingWidget/SharedWidget.swift | 1 - .../SharedWidgetContainerView.swift | 1 - 24 files changed, 100 insertions(+), 163 deletions(-) diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index a64c78469..1d1b1639c 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -5704,7 +5704,7 @@ DEVELOPMENT_TEAM = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = BookPlayerIntents/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -5738,7 +5738,7 @@ DEVELOPMENT_TEAM = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = BookPlayerIntents/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -5770,7 +5770,7 @@ DEVELOPMENT_TEAM = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = BookPlayerIntents/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6054,7 +6054,7 @@ DEVELOPMENT_TEAM = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = BookPlayerWidgets/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6092,7 +6092,7 @@ DEVELOPMENT_TEAM = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = BookPlayerWidgets/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6128,7 +6128,7 @@ DEVELOPMENT_TEAM = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = BookPlayerWidgets/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6195,7 +6195,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = BookPlayer; @@ -6252,7 +6252,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = BookPlayer; SDKROOT = iphoneos; @@ -6286,7 +6286,7 @@ ); INFOPLIST_FILE = BookPlayer/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.books"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6324,7 +6324,7 @@ ); INFOPLIST_FILE = BookPlayer/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.books"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6354,7 +6354,7 @@ CODE_SIGN_STYLE = Manual; DEVELOPMENT_TEAM = "$(inherited)"; INFOPLIST_FILE = BookPlayerTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6380,7 +6380,7 @@ DEVELOPMENT_TEAM = "$(inherited)"; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = S7TJSJXWUZ; INFOPLIST_FILE = BookPlayerTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6419,7 +6419,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = BookPlayerKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6465,7 +6465,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = BookPlayerKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6509,7 +6509,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = BookPlayerKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6660,7 +6660,7 @@ INFOPLIST_FILE = BookPlayerShareExtension/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = BookPlayerShareExtension; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 BookPlayer LLC. All rights reserved."; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6700,7 +6700,7 @@ INFOPLIST_FILE = BookPlayerShareExtension/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = BookPlayerShareExtension; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 BookPlayer LLC. All rights reserved."; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6738,7 +6738,7 @@ INFOPLIST_FILE = BookPlayerShareExtension/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = BookPlayerShareExtension; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 BookPlayer LLC. All rights reserved."; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6800,7 +6800,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = BookPlayer; SDKROOT = iphoneos; @@ -6833,7 +6833,7 @@ ); INFOPLIST_FILE = BookPlayer/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.books"; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -6864,7 +6864,7 @@ DEVELOPMENT_TEAM = "$(inherited)"; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = S7TJSJXWUZ; INFOPLIST_FILE = BookPlayerTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/BookPlayer/AppDelegate.swift b/BookPlayer/AppDelegate.swift index 41dfce11b..e4191256e 100644 --- a/BookPlayer/AppDelegate.swift +++ b/BookPlayer/AppDelegate.swift @@ -447,7 +447,24 @@ extension AppDelegate { let request = BGAppRefreshTaskRequest(identifier: refreshTaskIdentifier) request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) - try? BGTaskScheduler.shared.submit(request) + submitBackgroundTask(request) + } + + /// `submit(_:)` is deprecated from iOS 27 in favor of `submitTaskRequest`. + func submitBackgroundTask( + _ request: BGTaskRequest, + completion: @escaping @Sendable ((any Error)?) -> Void = { _ in } + ) { + if #available(iOS 27, *) { + BGTaskScheduler.shared.submitTaskRequest(request, completionHandler: completion) + } else { + do { + try BGTaskScheduler.shared.submit(request) + completion(nil) + } catch { + completion(error) + } + } } func handleAppRefresh(task: BGAppRefreshTask) { @@ -509,11 +526,13 @@ extension AppDelegate { request.earliestBeginDate = Date(timeIntervalSinceNow: 24 * 60 * 60) } - do { - try BGTaskScheduler.shared.submit(request) - Self.logger.info("Database backup scheduled for: \(request.earliestBeginDate?.description ?? "unknown")") - } catch { - Self.logger.error("Failed to schedule database backup: \(error.localizedDescription)") + let scheduledFor = request.earliestBeginDate?.description ?? "unknown" + submitBackgroundTask(request) { error in + if let error { + Self.logger.error("Failed to schedule database backup: \(error.localizedDescription)") + } else { + Self.logger.info("Database backup scheduled for: \(scheduledFor)") + } } } diff --git a/BookPlayer/AppIntents/BPAppShortcuts.swift b/BookPlayer/AppIntents/BPAppShortcuts.swift index b32d7107f..8a43e1105 100644 --- a/BookPlayer/AppIntents/BPAppShortcuts.swift +++ b/BookPlayer/AppIntents/BPAppShortcuts.swift @@ -9,7 +9,7 @@ import Foundation import AppIntents -@available(iOS 16.4, macOS 14.0, watchOS 10.0, *) +@available(macOS 14.0, watchOS 10.0, *) struct BPAppShortcuts: AppShortcutsProvider { static var appShortcuts: [AppShortcut] { return [ diff --git a/BookPlayer/AppIntents/CancelSleepTimerIntent.swift b/BookPlayer/AppIntents/CancelSleepTimerIntent.swift index 07afdc520..170adddb2 100644 --- a/BookPlayer/AppIntents/CancelSleepTimerIntent.swift +++ b/BookPlayer/AppIntents/CancelSleepTimerIntent.swift @@ -9,7 +9,7 @@ import Foundation import AppIntents -@available(iOS 16.4, macOS 14.0, watchOS 10.0, *) +@available(macOS 14.0, watchOS 10.0, *) struct CancelSleepTimerIntent: AppIntent { static var title: LocalizedStringResource = "intent_sleeptimer_cancel" diff --git a/BookPlayer/AppIntents/EndChapterSleepTimerIntent.swift b/BookPlayer/AppIntents/EndChapterSleepTimerIntent.swift index 08af2cd7c..faaa32fdb 100644 --- a/BookPlayer/AppIntents/EndChapterSleepTimerIntent.swift +++ b/BookPlayer/AppIntents/EndChapterSleepTimerIntent.swift @@ -9,7 +9,7 @@ import Foundation import AppIntents -@available(iOS 16.4, macOS 14.0, watchOS 10.0, *) +@available(macOS 14.0, watchOS 10.0, *) struct EndChapterSleepTimerIntent: AppIntent { static var title: LocalizedStringResource = "intent_sleeptimer_eoc_title" diff --git a/BookPlayer/Library/ItemList/ItemListView.swift b/BookPlayer/Library/ItemList/ItemListView.swift index afad81da6..20a2965fe 100644 --- a/BookPlayer/Library/ItemList/ItemListView.swift +++ b/BookPlayer/Library/ItemList/ItemListView.swift @@ -433,35 +433,24 @@ struct ItemListView: View { /// `ToolbarSpacer(.fixed, ...)` render as one shared capsule. Without the /// fixed spacer (or with `.flexible`), each item gets its own pill — which is /// what the cascading `.tint(theme.linkColor)` from `LibraryRootView` was - /// producing previously. On iOS 18 we fall back to the legacy - /// `ToolbarItemGroup` layout since `ToolbarSpacer` isn't available. + /// producing previously. @ToolbarContentBuilder private func regularToolbarItems() -> some ToolbarContent { - if #available(iOS 26.0, *) { - if importOperationState.isOperationActive { - ToolbarItem(placement: .topBarTrailing) { - importOperationButton - } - ToolbarSpacer(.fixed, placement: .topBarTrailing) - } - + if importOperationState.isOperationActive { ToolbarItem(placement: .topBarTrailing) { - libraryOptionsButton + importOperationButton } - ToolbarSpacer(.fixed, placement: .topBarTrailing) + } - ToolbarItem(placement: .topBarTrailing) { - ellipsisMenu - } - } else { - ToolbarItemGroup(placement: .confirmationAction) { - if importOperationState.isOperationActive { - importOperationButton - } - libraryOptionsButton - ellipsisMenu - } + ToolbarItem(placement: .topBarTrailing) { + libraryOptionsButton + } + + ToolbarSpacer(.fixed, placement: .topBarTrailing) + + ToolbarItem(placement: .topBarTrailing) { + ellipsisMenu } } diff --git a/BookPlayer/MainView.swift b/BookPlayer/MainView.swift index fdf6e1ce7..5f8a7349b 100644 --- a/BookPlayer/MainView.swift +++ b/BookPlayer/MainView.swift @@ -63,7 +63,7 @@ struct MainView: View { Tab("settings_title", systemImage: "gearshape") { SettingsView() } - if #available(iOS 26.0, *), UIDevice.current.userInterfaceIdiom == .phone { + if UIDevice.current.userInterfaceIdiom == .phone { Tab("search_title", systemImage: "magnifyingglass", role: .search) { SearchView { SearchViewModel(libraryService: libraryService) diff --git a/BookPlayer/Settings/Icons/SettingsAppIconsView.swift b/BookPlayer/Settings/Icons/SettingsAppIconsView.swift index 257ea8cf8..c3a5a137b 100644 --- a/BookPlayer/Settings/Icons/SettingsAppIconsView.swift +++ b/BookPlayer/Settings/Icons/SettingsAppIconsView.swift @@ -67,20 +67,16 @@ extension Bundle { var icons = [Icon]() - if #available(iOS 26.0, *) { - for var icon in decodedIcons { - if icon.title == "Pride" { - icon.id += "26" - icon.imageName += "-26" - } else if icon.title == "Fruit Based" { - icon.id += "26" - icon.title = "Books" - icon.imageName += "-26" - } - icons.append(icon) + for var icon in decodedIcons { + if icon.title == "Pride" { + icon.id += "26" + icon.imageName += "-26" + } else if icon.title == "Fruit Based" { + icon.id += "26" + icon.title = "Books" + icon.imageName += "-26" } - } else { - icons = decodedIcons + icons.append(icon) } return icons diff --git a/BookPlayer/Utils/BPSKANManager.swift b/BookPlayer/Utils/BPSKANManager.swift index 376f84e99..a5e98fefc 100644 --- a/BookPlayer/Utils/BPSKANManager.swift +++ b/BookPlayer/Utils/BPSKANManager.swift @@ -41,7 +41,6 @@ class BPSKANManager: BPLogger { } /// Value received if there are low installs - @available(iOS 16.1, *) var coarseValue: SKAdNetwork.CoarseConversionValue { switch self { case .install, .import, .account: diff --git a/BookPlayer/Utils/Extensions/View+BookPlayer.swift b/BookPlayer/Utils/Extensions/View+BookPlayer.swift index 36feedbcf..ba0040994 100644 --- a/BookPlayer/Utils/Extensions/View+BookPlayer.swift +++ b/BookPlayer/Utils/Extensions/View+BookPlayer.swift @@ -104,7 +104,7 @@ struct ItemListSearchableModifier: ViewModifier { @Binding var selectedScope: ItemListSearchScope func body(content: Content) -> some View { - if #available(iOS 26.0, *), UIDevice.current.userInterfaceIdiom == .phone { + if UIDevice.current.userInterfaceIdiom == .phone { /// New tab bar role handles searches content } else { @@ -159,17 +159,12 @@ struct MiniPlayerSafeAreaInsetModifier: ViewModifier { .safeAreaInset(edge: .bottom) { Spacer().frame(height: spacerHeight) } - } else if #available(iOS 26.0, *) { + } else { /// New accessory view already insets the entire view content .safeAreaInset(edge: .bottom) { Spacer().frame(height: keyboardObserver.isKeyboardVisible ? 0 : Spacing.M) } - } else { - content - .safeAreaInset(edge: .bottom) { - Spacer().frame(height: spacerHeight) - } } } } @@ -252,12 +247,10 @@ struct MiniPlayerModifier: ViewModifier { private func iOSBody(_ content: Content) -> some View { if #available(iOS 26.1, *) { defaultBody(content) - } else if #available(iOS 26.0, *) { + } else { content .tabBarMinimizeBehavior(.onScrollDown) .tabViewBottomAccessory(content: accessory) - } else { - defaultBody(content) } } @@ -335,21 +328,11 @@ extension View { extension View { /// Glass in an explicit rounded rect rather than the default capsule, for panels that span /// a width instead of floating as a pill. - @ViewBuilder func glassCard(cornerRadius: CGFloat = 16) -> some View { - if #available(iOS 26.0, *) { - glassEffect(in: .rect(cornerRadius: cornerRadius)) - } else { - background(.ultraThinMaterial, in: .rect(cornerRadius: cornerRadius)) - } + glassEffect(in: .rect(cornerRadius: cornerRadius)) } - @ViewBuilder func liquidGlassBackground() -> some View { - if #available(iOS 26.0, *) { - glassEffect() - } else { - background(.ultraThinMaterial) - } + glassEffect() } } diff --git a/BookPlayerIntents/PlayAndSleepActionHandler.swift b/BookPlayerIntents/PlayAndSleepActionHandler.swift index b1e5e44ee..8401f9b72 100644 --- a/BookPlayerIntents/PlayAndSleepActionHandler.swift +++ b/BookPlayerIntents/PlayAndSleepActionHandler.swift @@ -15,7 +15,6 @@ class PlayAndSleepActionHandler: NSObject, PlayAndSleepActionIntentHandling { completion(PlayAndSleepActionIntentResponse(code: .continueInApp, userActivity: nil)) } - @available(iOSApplicationExtension 13.0, *) func resolveSleepTimer(for intent: PlayAndSleepActionIntent, with completion: @escaping (TimerOptionResolutionResult) -> Void) { if intent.sleepTimer == .unknown { completion(TimerOptionResolutionResult.needsValue()) @@ -24,7 +23,6 @@ class PlayAndSleepActionHandler: NSObject, PlayAndSleepActionIntentHandling { } } - @available(iOSApplicationExtension 13.0, *) func resolveAutoplay(for intent: PlayAndSleepActionIntent, with completion: @escaping (INBooleanResolutionResult) -> Void) { completion(INBooleanResolutionResult.notRequired()) } diff --git a/BookPlayerIntents/SleepTimerHandler.swift b/BookPlayerIntents/SleepTimerHandler.swift index fdc47614c..7fa25cfc4 100644 --- a/BookPlayerIntents/SleepTimerHandler.swift +++ b/BookPlayerIntents/SleepTimerHandler.swift @@ -14,7 +14,6 @@ class SleepTimerHandler: NSObject, SleepTimerIntentHandling { completion(SleepTimerIntentResponse(code: .continueInApp, userActivity: nil)) } - @available(iOSApplicationExtension 13.0, *) func resolveOption(for intent: SleepTimerIntent, with completion: @escaping (TimerOptionResolutionResult) -> Void) { if intent.option == .unknown { completion(TimerOptionResolutionResult.needsValue()) @@ -23,7 +22,6 @@ class SleepTimerHandler: NSObject, SleepTimerIntentHandling { } } - @available(iOSApplicationExtension 13.0, *) func resolveSeconds(for intent: SleepTimerIntent, with completion: @escaping (SleepTimerSecondsResolutionResult) -> Void) { completion(SleepTimerSecondsResolutionResult.notRequired()) } diff --git a/BookPlayerWidgets/BookPlayerWidgets.swift b/BookPlayerWidgets/BookPlayerWidgets.swift index c56e22f7c..d64526ba2 100644 --- a/BookPlayerWidgets/BookPlayerWidgets.swift +++ b/BookPlayerWidgets/BookPlayerWidgets.swift @@ -19,11 +19,7 @@ import WidgetKit struct BookPlayerBundle { static func main() { #if os(iOS) - if #available(iOSApplicationExtension 18.0, *) { - IOSWidgetsBundle18.main() - } else { - IOSWidgetsBundle.main() - } + IOSWidgetsBundle.main() #elseif os(watchOS) WatchWidgetsBundle.main() #endif @@ -31,14 +27,6 @@ struct BookPlayerBundle { #if os(iOS) struct IOSWidgetsBundle: WidgetBundle { - var body: some Widget { - LastPlayedWidget() - TimeListenedWidget() - } - } - - @available(iOSApplicationExtension 18.0, *) - struct IOSWidgetsBundle18: WidgetBundle { var body: some Widget { LastPlayedWidget() TimeListenedWidget() diff --git a/BookPlayerWidgets/Phone/BookPlaybackToggleIntent.swift b/BookPlayerWidgets/Phone/BookPlaybackToggleIntent.swift index 260978f8d..9e89263c4 100644 --- a/BookPlayerWidgets/Phone/BookPlaybackToggleIntent.swift +++ b/BookPlayerWidgets/Phone/BookPlaybackToggleIntent.swift @@ -11,7 +11,7 @@ import AppIntents import BookPlayerKit import Foundation -@available(iOS 17.0, macOS 14.0, watchOS 10.0, *) +@available(macOS 14.0, watchOS 10.0, *) struct BookPlaybackToggleIntent: AudioPlaybackIntent { static var title: LocalizedStringResource = .init("Toggle playback of book") diff --git a/BookPlayerWidgets/Phone/LastPlayed/LastPlayedView.swift b/BookPlayerWidgets/Phone/LastPlayed/LastPlayedView.swift index 359419762..5707a4bfd 100644 --- a/BookPlayerWidgets/Phone/LastPlayed/LastPlayedView.swift +++ b/BookPlayerWidgets/Phone/LastPlayed/LastPlayedView.swift @@ -50,27 +50,23 @@ struct LastPlayedView: View { return VStack(alignment: .leading) { if let relativePath = model.relativePath { HStack { - if #available(iOSApplicationExtension 17.0, iOS 17.0, *) { - Button(intent: BookPlaybackToggleIntent(relativePath: relativePath)) { - ZStack { - getArtworkView(for: relativePath) - Circle() - .foregroundStyle(.white) - .frame(width: 30, height: 30) - .opacity(0.8) - Image(systemName: imageName) - .resizable() - .aspectRatio(contentMode: .fit) - .foregroundStyle(.black) - .frame(width: 11, height: 11) - .offset(x: model.isPlaying ? 0 : 1) - .widgetAccentable() - } + Button(intent: BookPlaybackToggleIntent(relativePath: relativePath)) { + ZStack { + getArtworkView(for: relativePath) + Circle() + .foregroundStyle(.white) + .frame(width: 30, height: 30) + .opacity(0.8) + Image(systemName: imageName) + .resizable() + .aspectRatio(contentMode: .fit) + .foregroundStyle(.black) + .frame(width: 11, height: 11) + .offset(x: model.isPlaying ? 0 : 1) + .widgetAccentable() } - .buttonStyle(.plain) - } else { - getArtworkView(for: relativePath) } + .buttonStyle(.plain) VStack { Image(appIconName) diff --git a/BookPlayerWidgets/Phone/PlayLastControlWidgetView.swift b/BookPlayerWidgets/Phone/PlayLastControlWidgetView.swift index 010dceb7b..45ed6ef4b 100644 --- a/BookPlayerWidgets/Phone/PlayLastControlWidgetView.swift +++ b/BookPlayerWidgets/Phone/PlayLastControlWidgetView.swift @@ -11,7 +11,6 @@ import Foundation import SwiftUI import WidgetKit -@available(iOSApplicationExtension 18.0, iOS 18.0, *) struct PlayLastControlWidgetView: ControlWidget { var body: some ControlWidgetConfiguration { StaticControlConfiguration( diff --git a/BookPlayerWidgets/Phone/RecentBooks/RecentBooksWidgetView.swift b/BookPlayerWidgets/Phone/RecentBooks/RecentBooksWidgetView.swift index 7e55f588d..69660952b 100644 --- a/BookPlayerWidgets/Phone/RecentBooks/RecentBooksWidgetView.swift +++ b/BookPlayerWidgets/Phone/RecentBooks/RecentBooksWidgetView.swift @@ -103,18 +103,7 @@ struct RecentBooksWidgetView: View { .widgetAccentable() HStack { ForEach(items, id: \.relativePath) { item in - if #available(iOSApplicationExtension 17.0, iOS 17.0, *) { - Button(intent: BookPlaybackToggleIntent(relativePath: item.relativePath)) { - BookView( - item: item, - titleColor: widgetColors.primaryColor, - theme: entry.theme, - isPlaying: item.relativePath == entry.currentlyPlaying - ) - .frame(minWidth: 0, maxWidth: .infinity) - } - .buttonStyle(.plain) - } else { + Button(intent: BookPlaybackToggleIntent(relativePath: item.relativePath)) { BookView( item: item, titleColor: widgetColors.primaryColor, @@ -123,6 +112,7 @@ struct RecentBooksWidgetView: View { ) .frame(minWidth: 0, maxWidth: .infinity) } + .buttonStyle(.plain) } } .padding([.leading, .trailing]) diff --git a/BookPlayerWidgets/Phone/WidgetUtils.swift b/BookPlayerWidgets/Phone/WidgetUtils.swift index 40c832a7f..60379ddef 100644 --- a/BookPlayerWidgets/Phone/WidgetUtils.swift +++ b/BookPlayerWidgets/Phone/WidgetUtils.swift @@ -215,23 +215,15 @@ class WidgetUtils { extension View { public func widgetBackground(backgroundView: some View) -> some View { - if #available(watchOS 10.0, iOSApplicationExtension 17.0, iOS 17.0, macOSApplicationExtension 14.0, *) { - return containerBackground(for: .widget) { - backgroundView - } - } else { - return background(backgroundView) + return containerBackground(for: .widget) { + backgroundView } } } extension WidgetConfiguration { public func contentMarginsDisabledIfAvailable() -> some WidgetConfiguration { - if #available(iOSApplicationExtension 17.0, *) { - return self.contentMarginsDisabled() - } else { - return self - } + return self.contentMarginsDisabled() } } diff --git a/BookPlayerWidgets/Shared/SharedIconWidget/SharedIconWidget.swift b/BookPlayerWidgets/Shared/SharedIconWidget/SharedIconWidget.swift index 89569e767..8a4976c6d 100644 --- a/BookPlayerWidgets/Shared/SharedIconWidget/SharedIconWidget.swift +++ b/BookPlayerWidgets/Shared/SharedIconWidget/SharedIconWidget.swift @@ -36,7 +36,6 @@ struct SharedIconWidgetTimelineProvider: TimelineProvider { typealias Entry = SharedIconWidgetEntry } -@available(iOSApplicationExtension 16.1, watchOS 9.0, *) struct SharedIconWidget: Widget { let kind: String = Constants.Widgets.sharedIconWidget.rawValue #if os(watchOS) diff --git a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/CircularView.swift b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/CircularView.swift index 669e1635a..b7a2848fb 100644 --- a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/CircularView.swift +++ b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/CircularView.swift @@ -14,7 +14,6 @@ import BookPlayerWatchKit import BookPlayerKit #endif -@available(iOSApplicationExtension 16.1, *) struct CircularView: View { let title: String let fillFraction: Double diff --git a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/CornerView.swift b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/CornerView.swift index 36bf579f0..b5af2c835 100644 --- a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/CornerView.swift +++ b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/CornerView.swift @@ -9,7 +9,6 @@ import SwiftUI import WidgetKit -@available(iOSApplicationExtension 16.1, *) struct CornerView: View { let title: String let fillFraction: Double @@ -22,12 +21,8 @@ struct CornerView: View { .widgetAccentable() } - if #available(iOSApplicationExtension 17.0, watchOS 10.0, *) { - return view - .widgetCurvesContent() - } else { - return view - } + return view + .widgetCurvesContent() } } diff --git a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/RectangularView.swift b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/RectangularView.swift index 5035cb4c4..358be3b59 100644 --- a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/RectangularView.swift +++ b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/RectangularView.swift @@ -9,7 +9,6 @@ import SwiftUI import WidgetKit -@available(iOSApplicationExtension 16.1, *) struct RectangularView: View { let chapterTitle: String let bookTitle: String diff --git a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/SharedWidget.swift b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/SharedWidget.swift index 6718993f0..88a2307ac 100644 --- a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/SharedWidget.swift +++ b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/SharedWidget.swift @@ -150,7 +150,6 @@ struct SharedWidgetTimelineProvider: TimelineProvider { } } -@available(iOSApplicationExtension 16.1, *) struct SharedWidget: Widget { let kind: String = Constants.Widgets.sharedNowPlayingWidget.rawValue diff --git a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/SharedWidgetContainerView.swift b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/SharedWidgetContainerView.swift index aaacfbc55..ba60d5e56 100644 --- a/BookPlayerWidgets/Shared/SharedNowPlayingWidget/SharedWidgetContainerView.swift +++ b/BookPlayerWidgets/Shared/SharedNowPlayingWidget/SharedWidgetContainerView.swift @@ -8,7 +8,6 @@ import SwiftUI -@available(iOSApplicationExtension 16.1, *) struct SharedWidgetContainerView: View { let entry: SharedWidgetEntry From 63463578bee5476b9ddcf18bcfc5910f4e515125 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 24 Sep 2026 19:42:10 -0500 Subject: [PATCH 155/172] ci: build with Xcode 27 The upload work calls iOS 27 SDK APIs (BGTaskScheduler.submitTaskRequest) behind #available, which Xcode 26.x can't compile. Move to the xcode-27 runner (preview) and its /Applications/Xcode_27.0.app; macos-26 ships no Xcode 27. --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 825f42a8f..61709917c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,14 +9,14 @@ on: jobs: build: # https://github.com/actions/runner-images/tree/main/images/macos - runs-on: macos-26 + runs-on: xcode-27 timeout-minutes: 30 steps: - uses: actions/checkout@v4 - - name: Select Xcode 26.0 + - name: Select Xcode 27.0 run: | - ls -1 /Applications | grep -E '^Xcode_26\.' || true - sudo xcode-select -s "/Applications/Xcode_26.4.app" + ls -1 /Applications | grep -E '^Xcode_27' || true + sudo xcode-select -s "/Applications/Xcode_27.0.app" xcodebuild -version xcrun simctl list runtimes @@ -29,7 +29,7 @@ jobs: - name: Reset Simulator run: | set -x - export DEVELOPER_DIR="/Applications/Xcode_26.4.app" + export DEVELOPER_DIR="/Applications/Xcode_27.0.app" xcrun simctl shutdown all || true xcrun simctl erase all || true launchctl kickstart -k gui/$UID/com.apple.CoreSimulator.CoreSimulatorService || true From 99915ae93ad1f6a197d602f3b8f148e86448e759 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 24 Sep 2026 19:54:42 -0500 Subject: [PATCH 156/172] chore: drop the contentMarginsDisabledIfAvailable wrapper With iOS 26 as the minimum it always called through; the widgets use the native contentMarginsDisabled() directly. CLAUDE.md: the search tab is iPhone-only, not iOS 26-only. --- .../Phone/LastPlayed/LastPlayedWidgetView.swift | 2 +- .../Phone/RecentBooks/RecentBooksWidgetView.swift | 2 +- .../Phone/TimeListened/TimeListenedWidgetView.swift | 2 +- BookPlayerWidgets/Phone/WidgetUtils.swift | 6 ------ CLAUDE.md | 2 +- 5 files changed, 4 insertions(+), 10 deletions(-) diff --git a/BookPlayerWidgets/Phone/LastPlayed/LastPlayedWidgetView.swift b/BookPlayerWidgets/Phone/LastPlayed/LastPlayedWidgetView.swift index 3f7a0ca0f..b2ccc7b3a 100644 --- a/BookPlayerWidgets/Phone/LastPlayed/LastPlayedWidgetView.swift +++ b/BookPlayerWidgets/Phone/LastPlayed/LastPlayedWidgetView.swift @@ -45,6 +45,6 @@ struct LastPlayedWidget: Widget { .configurationDisplayName("Last Played Books") .description("See and play your last played books") .supportedFamilies([.systemSmall, .systemMedium]) - .contentMarginsDisabledIfAvailable() + .contentMarginsDisabled() } } diff --git a/BookPlayerWidgets/Phone/RecentBooks/RecentBooksWidgetView.swift b/BookPlayerWidgets/Phone/RecentBooks/RecentBooksWidgetView.swift index 69660952b..17ec87794 100644 --- a/BookPlayerWidgets/Phone/RecentBooks/RecentBooksWidgetView.swift +++ b/BookPlayerWidgets/Phone/RecentBooks/RecentBooksWidgetView.swift @@ -138,7 +138,7 @@ struct RecentBooksWidget: Widget { .configurationDisplayName("Recent Books") .description("See the recent played books") .supportedFamilies([.systemMedium]) - .contentMarginsDisabledIfAvailable() + .contentMarginsDisabled() } } diff --git a/BookPlayerWidgets/Phone/TimeListened/TimeListenedWidgetView.swift b/BookPlayerWidgets/Phone/TimeListened/TimeListenedWidgetView.swift index c997102e8..a4a009188 100644 --- a/BookPlayerWidgets/Phone/TimeListened/TimeListenedWidgetView.swift +++ b/BookPlayerWidgets/Phone/TimeListened/TimeListenedWidgetView.swift @@ -184,6 +184,6 @@ struct TimeListenedWidget: Widget { .configurationDisplayName("Time Listened") .description("See how much time you have spent listening to audiobooks in the last few days") .supportedFamilies([.systemSmall, .systemMedium]) - .contentMarginsDisabledIfAvailable() + .contentMarginsDisabled() } } diff --git a/BookPlayerWidgets/Phone/WidgetUtils.swift b/BookPlayerWidgets/Phone/WidgetUtils.swift index 60379ddef..fed6b3e9e 100644 --- a/BookPlayerWidgets/Phone/WidgetUtils.swift +++ b/BookPlayerWidgets/Phone/WidgetUtils.swift @@ -221,12 +221,6 @@ extension View { } } -extension WidgetConfiguration { - public func contentMarginsDisabledIfAvailable() -> some WidgetConfiguration { - return self.contentMarginsDisabled() - } -} - #if os(iOS) extension WidgetUtils { class func isValidSize(image: UIImage) -> Bool { diff --git a/CLAUDE.md b/CLAUDE.md index f9d7de702..61ebec160 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -109,7 +109,7 @@ a build phase) and its output is committed. `MainCoordinator`, retains it, and calls `start()`. 5. `MainCoordinator.start()` hosts SwiftUI `MainView` inside `AppHostingViewController` (a `UIHostingController` subclass that only overrides orientation) and **modally presents it full-screen** over the loading nav - controller. `MainView` is a `TabView` (Library / Profile / Settings [+ iOS 26 Search]) with a mini-player + controller. `MainView` is a `TabView` (Library / Profile / Settings [+ Search on iPhone]) with a mini-player overlay and a `.fullScreenCover` for the player. **Invariant:** the strong chain `SceneDelegate → LoadingCoordinator.mainCoordinator → MainCoordinator` is the From 66675e27bd5c66ca924ed29eef49204f099cf787 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sat, 26 Sep 2026 22:57:25 -0500 Subject: [PATCH 157/172] fix(sync): clean up upload temp links and cap matchUuid batches at 1,000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upload hard links in tmp leaked whenever the file upload never ran: the server said the file was already stored (url == nil), the item is provider-backed, or the access policy denied the uploadFile task. All three now remove the link through one helper that only ever deletes a regular file strictly inside the temp directory — never a folder item's mirrored tree (its children's queued uploads still read those links) and never the temp directory itself. matchUuid requests are split into server-sized (MAX_RECORDS_LIMIT = 1000) tasks, and coalescing refuses a merge that would exceed that limit, so a large library no longer wedges the sync lane on a request the server always rejects. --- BookPlayerTests/Services/SyncQueueTests.swift | 15 +++++ .../Services/SyncTasksStorageTests.swift | 58 +++++++++++++++++++ .../Sync/LibraryItemSyncOperation.swift | 10 +++- Shared/Services/Sync/SyncJobScheduler.swift | 47 ++++++++++++--- .../SyncQueue/SyncQueueRepository.swift | 5 ++ .../Services/SyncQueue/SyncQueueService.swift | 11 ++-- 6 files changed, 128 insertions(+), 18 deletions(-) diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index 311c6ca7f..6ddf1391a 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -180,6 +180,21 @@ final class SyncQueueTests: XCTestCase { XCTAssertEqual(stored?.parameters["hostId"] as? String, "guid-1") } + /// A denied upload never reads the temp hard link scheduled for it, so it's removed. + func testScheduleFileUpload_denied_removesTheTempHardLink() async throws { + let service = SyncQueueService(maxConcurrentTasks: 1) + service.taskContainer = repository + service.accessPolicy = [.uploadFile: false] + let link = FileManager.default.temporaryDirectory.appendingPathComponent("denied-\(UUID().uuidString).mp3") + try Data("x".utf8).write(to: link) + + service.scheduleFileUpload(params: ["filePath": link.absoluteString, "remotePath": "https://s3/a", "uuid": "u1"]) + + XCTAssertFalse(FileManager.default.fileExists(atPath: link.path)) + let tasks = await repository.getAllTasks() + XCTAssertTrue(tasks.isEmpty) + } + func testScheduleFileUpload_gatedByPolicy() async throws { let service = SyncQueueService(maxConcurrentTasks: 1) service.taskContainer = repository diff --git a/BookPlayerTests/Services/SyncTasksStorageTests.swift b/BookPlayerTests/Services/SyncTasksStorageTests.swift index de64e88f9..2ae4fb1a4 100644 --- a/BookPlayerTests/Services/SyncTasksStorageTests.swift +++ b/BookPlayerTests/Services/SyncTasksStorageTests.swift @@ -140,6 +140,64 @@ final class SyncTasksRepositoryTests: XCTestCase { XCTAssertEqual(mergedUuids.count, 3) } + /// The server rejects a /uuids request over its per-request limit forever, so the + /// scheduler splits a large listing into limit-sized tasks. + func testScheduleMatchUuids_overTheLimit_splitsIntoServerSizedTasks() async throws { + let scheduler = SyncJobScheduler(tasksRepository: repository) + let limit = SyncJobScheduler.matchUuidsBatchLimit + let uuids = Dictionary(uniqueKeysWithValues: (0..<(limit * 2 + limit / 2)).map { ("folder/\($0).mp3", "uuid-\($0)") }) + + await scheduler.scheduleMatchUuidsJob(uuidsDict: uuids) + + let tasks = await repository.getAllTasksWithParams(in: TaskQueueKey.sync) + .filter { $0.jobType == .matchUuid } + let sizes = tasks.compactMap { ($0.parameters["uuids"] as? [String: String])?.count } + XCTAssertEqual(sizes, [limit, limit, limit / 2]) + let all = tasks.compactMap { $0.parameters["uuids"] as? [String: String] } + .reduce(into: [String: String]()) { $0.merge($1) { first, _ in first } } + XCTAssertEqual(all, uuids) + } + + /// Merging into a queued matchUuid task must not grow it past the server's limit. + func testAppendMatchUuidTask_mergeWouldExceedTheLimit_queuesASeparateTask() async throws { + let limit = SyncJobScheduler.matchUuidsBatchLimit + try await appendUploadTask(uuid: "upload-uuid", relativePath: "folder/Head.mp3") + try await appendMatchUuidTask(uuids: Dictionary(uniqueKeysWithValues: (0..<(limit - 10)).map { ("a/\($0).mp3", "a-\($0)") })) + try await appendMatchUuidTask(uuids: Dictionary(uniqueKeysWithValues: (0..<20).map { ("b/\($0).mp3", "b-\($0)") })) + + let tasks = await repository.getAllTasksWithParams(in: TaskQueueKey.sync) + .filter { $0.jobType == .matchUuid } + XCTAssertEqual(tasks.compactMap { ($0.parameters["uuids"] as? [String: String])?.count }, [limit - 10, 20]) + } + + /// Only temp-directory files are ever removed as upload hard links. + func testRemoveHardLink_deletesOnlyInsideTheTempDirectory() throws { + let tempFile = FileManager.default.temporaryDirectory.appendingPathComponent("link-\(UUID().uuidString).mp3") + let outside = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)[0] + .appendingPathComponent("real-\(UUID().uuidString).mp3") + try Data("x".utf8).write(to: tempFile) + try Data("x".utf8).write(to: outside) + defer { try? FileManager.default.removeItem(at: outside) } + + // A folder item's link mirrors its tree; its children's uploads still read inside it. + let tempFolder = FileManager.default.temporaryDirectory.appendingPathComponent("folder-\(UUID().uuidString)") + try FileManager.default.createDirectory(at: tempFolder, withIntermediateDirectories: true) + let child = tempFolder.appendingPathComponent("Book.mp3") + try Data("x".utf8).write(to: child) + defer { try? FileManager.default.removeItem(at: tempFolder) } + + SyncJobScheduler.removeHardLink(at: tempFile) + SyncJobScheduler.removeHardLink(at: outside) + SyncJobScheduler.removeHardLink(at: nil) + SyncJobScheduler.removeHardLink(at: tempFolder) + SyncJobScheduler.removeHardLink(at: FileManager.default.temporaryDirectory) + + XCTAssertFalse(FileManager.default.fileExists(atPath: tempFile.path)) + XCTAssertTrue(FileManager.default.fileExists(atPath: outside.path)) + XCTAssertTrue(FileManager.default.fileExists(atPath: child.path)) + XCTAssertTrue(FileManager.default.fileExists(atPath: FileManager.default.temporaryDirectory.path)) + } + /// With no prior matchUuid task, the first call should create one normally. func testAppendMatchUuidTask_noExisting_createsNewTask() async throws { try await appendMatchUuidTask(uuids: ["folder/A.mp3": "uuid-A"]) diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index 6f3bd5434..e0be01359 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -193,7 +193,11 @@ extension LibraryItemSyncOperation { let uploadParams = parameters.filter { $0.key != "provider" } let response: UploadItemResponse = try await provider.request(.upload(params: uploadParams)) guard let remoteURL = response.content.url else { - /// The file is already present in the storage + /// The file is already present in the storage (or the tier doesn't store files): the + /// book's hard link scheduled for the upload will never be read + if type == .book { + SyncJobScheduler.removeHardLink(at: SyncJobScheduler.hardLinkURL(for: self.relativePath)) + } try await markUploadAsSynced(uuid: self.uuid) finish() return @@ -211,7 +215,7 @@ extension LibraryItemSyncOperation { return } - let hardLinkURL = FileManager.default.temporaryDirectory.appendingPathComponent(self.relativePath) + let hardLinkURL = SyncJobScheduler.hardLinkURL(for: self.relativePath) /// Prefer the hard link URL and fallback to recorded item path /// Note: the recorded item path may not have the item if the user moved it @@ -312,7 +316,7 @@ extension LibraryItemSyncOperation { .externalResourceToDownload(uuid: uuid, uploaded: false) ) - let hardLinkURL = FileManager.default.temporaryDirectory.appendingPathComponent(self.relativePath) + let hardLinkURL = SyncJobScheduler.hardLinkURL(for: self.relativePath) let fileURL = FileManager.default.fileExists(atPath: hardLinkURL.path) ? hardLinkURL : DataManager.getProcessedFolderURL().appendingPathComponent(self.relativePath) diff --git a/Shared/Services/Sync/SyncJobScheduler.swift b/Shared/Services/Sync/SyncJobScheduler.swift index 0e08cb511..c967072cc 100644 --- a/Shared/Services/Sync/SyncJobScheduler.swift +++ b/Shared/Services/Sync/SyncJobScheduler.swift @@ -58,8 +58,32 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { self.tasksRepository = tasksRepository } + /// `POST /v1/library/uuids` rejects more items than this in one request (the server's + /// MAX_RECORDS_LIMIT), with an error the queue would retry forever. + public static let matchUuidsBatchLimit = 1000 + + /// Where `scheduleLibraryItemUploadJob` hard-links a book so the upload survives the + /// user moving it in the library. + static func hardLinkURL(for relativePath: String) -> URL { + FileManager.default.temporaryDirectory.appendingPathComponent(relativePath) + } + + /// Removes an upload's temp hard link once nothing will read it. Only ever deletes a regular + /// file inside the temp directory: never a real Processed-folder file, never the temp + /// directory itself, and never a directory (a folder item's `linkItem` mirrors its whole + /// tree, and its children's queued uploads still read those links). + static func removeHardLink(at url: URL?) { + let tempPath = FileManager.default.temporaryDirectory.path + guard + let url, + url.path.hasPrefix(tempPath.hasSuffix("/") ? tempPath : tempPath + "/"), + (try? url.resourceValues(forKeys: [.isRegularFileKey]))?.isRegularFile == true + else { return } + try? FileManager.default.removeItem(at: url) + } + private func createHardLink(for item: SyncableItem) { - let hardLinkURL = FileManager.default.temporaryDirectory.appendingPathComponent(item.relativePath) + let hardLinkURL = Self.hardLinkURL(for: item.relativePath) let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(item.relativePath) @@ -170,14 +194,19 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { public func scheduleMatchUuidsJob(uuidsDict: [String: String]) async { guard !uuidsDict.isEmpty else { return } - let parameters: [String: Any] = [ - "jobType": SyncJobType.matchUuid.rawValue, - "id": UUID().uuidString, - "relativePath": "", - "uuid": "", - "uuids": uuidsDict - ] - await persistTask(parameters: parameters) + /// One task per server-sized batch: a larger request can never succeed + let paths = uuidsDict.keys.sorted() + for start in stride(from: 0, to: paths.count, by: Self.matchUuidsBatchLimit) { + let batch = paths[start.. Date: Sat, 26 Sep 2026 23:18:37 -0500 Subject: [PATCH 158/172] fix(sync): hold the server lanes while sync is off MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every launch woke every persisted task, whatever SyncService.isActive said. Accounts whose RevenueCat cache already read inactive never went through an active→inactive transition, so cancelAllJobs never ran and their tasks hit the server (and got rejected) every 5 seconds forever — the lapsed-subscriber retry storm. SyncQueueService now gates the BookPlayer-server lanes (sync, uploadFile) on serverLanesEnabled, off by default and written only by SyncService alongside isActive. Workers check it before every pop, so a lapse stops a running lane after its current task. Gated tasks are held, never cleared: RevenueCat's cached info is nil before the first fetch, so a paying subscriber can briefly read inactive at launch. Provider pushes ignore the gate, and background refresh completes at once while it's closed. --- BookPlayer/AppDelegate.swift | 7 + BookPlayerTests/Services/SyncQueueTests.swift | 188 ++++++++++++++++++ CLAUDE.md | 8 + Shared/Services/Sync/SyncService.swift | 12 +- .../Services/SyncQueue/SyncQueueService.swift | 45 +++++ 5 files changed, 259 insertions(+), 1 deletion(-) diff --git a/BookPlayer/AppDelegate.swift b/BookPlayer/AppDelegate.swift index e4191256e..07cab47d7 100644 --- a/BookPlayer/AppDelegate.swift +++ b/BookPlayer/AppDelegate.swift @@ -470,6 +470,13 @@ extension AppDelegate { func handleAppRefresh(task: BGAppRefreshTask) { guard let syncQueueService = AppServices.shared.coreServices?.syncQueueService else { return } + // A gated sync lane (sync off) never drains, so waiting on it would only hold the + // window open until expiration + guard syncQueueService.serverLanesEnabled else { + task.setTaskCompleted(success: true) + return + } + // Sync lane only: metadata pushes are what the refresh window is for. Provider pushes // retry forever against an unreachable home server, and S3 uploads already run on a // background URLSession — neither should keep the process awake until expiration. diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index 6ddf1391a..05c1001a7 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -422,3 +422,191 @@ extension SyncQueueTests { XCTAssertEqual(seen, [false, true, true]) } } + +// MARK: - Server-lane gate (sync off holds the BookPlayer-server lanes) + +extension SyncQueueTests { + /// Engine wired to the in-memory repository. The upload's source file doesn't exist, so + /// once it runs the operation consumes it without any network: the pop is the signal. + private func makeGatedEngine() -> SyncQueueService { + let service = SyncQueueService(maxConcurrentTasks: 1) + service.taskContainer = repository + service.tasksDataManager = tasksDataManager + service.accessPolicy = [.uploadFile: true, .externalUpdate: true] + return service + } + + private func waitForEmptyQueue(timeout: TimeInterval = 3) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline { + if await repository.getAllTasks().isEmpty { return } + try await Task.sleep(for: .milliseconds(50)) + } + XCTFail("timed out waiting for the queue to drain") + } + + /// The lapsed-subscriber retry storm: a persisted server-lane task must not run while + /// sync is off, must survive (not be cleared), and must run once sync turns on. + func testServerLanes_holdTasksWhileGated_andRunThemOnEnable() async throws { + let service = makeGatedEngine() + var params = uploadFileParams(id: "gated-1") + params["filePath"] = URL(fileURLWithPath: "/nonexistent/\(UUID().uuidString).m4b").absoluteString + try await repository.storeTask(parameters: params) + + XCTAssertFalse(service.serverLanesEnabled) + service.wakeUpWorkers() + try await Task.sleep(for: .milliseconds(400)) + let held = await repository.getAllTasks() + XCTAssertEqual(held.count, 1, "a gated lane must neither run nor drop its tasks") + + service.setServerLanesEnabled(true) + try await waitForEmptyQueue() + } + + /// A lapse while a worker is mid-lane: the running task finishes, the next one is held + /// (not popped, not run), and it runs once sync is back on. + func testServerLanes_runningWorkerStopsAfterItsCurrentTask_whenGatedMidLane() async throws { + let service = makeGatedEngine() + let client = BlockingNetworkClient() + service.networkClient = client + for (id, path) in [("del-1", "a.mp3"), ("del-2", "b.mp3")] { + try await repository.storeTask(parameters: [ + "id": id, + "uuid": UUID().uuidString, + "jobType": SyncJobType.delete.rawValue, + "queueKey": TaskQueueKey.sync, + "relativePath": path, + ]) + } + + service.setServerLanesEnabled(true) + try await client.waitForRequests(1) + service.setServerLanesEnabled(false) + client.release() + + try await waitForTaskCount(exactly: 1) + try await Task.sleep(for: .milliseconds(300)) + let held = await repository.getAllTasks() + XCTAssertEqual(held.map(\.id), ["del-2"]) + XCTAssertEqual(client.requestCount, 1, "the held task must not reach the server") + + service.setServerLanesEnabled(true) + try await waitForEmptyQueue() + XCTAssertEqual(client.requestCount, 2) + } + + private func waitForTaskCount(exactly count: Int, timeout: TimeInterval = 3) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline { + if await repository.getAllTasks().count == count { return } + try await Task.sleep(for: .milliseconds(50)) + } + XCTFail("timed out waiting for exactly \(count) task(s)") + } + + /// Provider pushes go to the user's own media server, on every tier: the gate leaves them alone. + func testProviderLanes_runWhileServerLanesAreGated() async throws { + let service = makeGatedEngine() + // Non-finite position: the engine discards (pops) it without any network call + var params = externalUpdateParams(id: "push-1") + params["currentTime"] = Double.infinity + try await repository.storeTask(parameters: params) + + service.wakeUpWorkers() + try await waitForEmptyQueue() + XCTAssertFalse(service.serverLanesEnabled) + } + + /// SyncService is the one writer: setup seeds the gate from `isActive`, and every + /// enable/disable and logout moves it with the flag. + @MainActor + func testSyncService_drivesTheServerLaneGate() async throws { + let queue = makeGatedEngine() + let sync = SyncService() + sync.setup( + isActive: false, + libraryService: LibraryService(), + accountService: AccountServiceMock(account: nil), + syncQueueService: queue, + client: NetworkClientMock(mockedResponse: Empty()) + ) + XCTAssertFalse(queue.serverLanesEnabled) + + sync.updateSyncEnabled(true) + try await waitUntil { queue.serverLanesEnabled } + XCTAssertTrue(sync.isActive) + + sync.updateSyncEnabled(false) + try await waitUntil { !queue.serverLanesEnabled } + + sync.updateSyncEnabled(true) + try await waitUntil { queue.serverLanesEnabled } + await sync.logout() + XCTAssertFalse(queue.serverLanesEnabled) + XCTAssertFalse(sync.isActive) + } + + @MainActor + private func waitUntil(timeout: TimeInterval = 2, _ condition: () -> Bool) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline { + if condition() { return } + try await Task.sleep(for: .milliseconds(20)) + } + XCTFail("timed out waiting for the condition") + } +} + +/// Answers `Empty` like `NetworkClientMock`, but holds the FIRST request until `release()`, +/// so a test can act while an operation is in flight. +private final class BlockingNetworkClient: NetworkClientMock, @unchecked Sendable { + private let lock = NSLock() + private var _requestCount = 0 + private var gate: CheckedContinuation? + private var released = false + + var requestCount: Int { lock.withLock { _requestCount } } + + init() { super.init(mockedResponse: Empty()) } + + override func request( + path: String, + method: HTTPMethod, + parameters: [String: Any]? + ) async throws -> T { + let isFirst = lock.withLock { + _requestCount += 1 + return _requestCount == 1 && !released + } + if isFirst { + await withCheckedContinuation { continuation in + let resumeNow = lock.withLock { + if released { return true } + gate = continuation + return false + } + if resumeNow { continuation.resume() } + } + } + // swiftlint:disable:next force_cast + return Empty() as! T + } + + func release() { + let continuation = lock.withLock { + released = true + defer { gate = nil } + return gate + } + continuation?.resume() + } + + func waitForRequests(_ count: Int, timeout: TimeInterval = 3) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline { + if requestCount >= count { return } + try await Task.sleep(for: .milliseconds(20)) + } + XCTFail("timed out waiting for \(count) request(s)") + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 61ebec160..de2de5c41 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -265,6 +265,14 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi `SyncService.canSyncListContents` gates list refresh on the `sync` lane only (repository `getTasksCount(in:)`), and `AppDelegate.handleAppRefresh` waits on `laneDrained(TaskQueueKey.sync)` — S3 uploads and provider pushes never block a refresh or hold a background window open (pushes retry forever against an unreachable server). + **Server-lane gate:** the BookPlayer-server lanes (`sync`, `uploadFile`) run only while + `SyncQueueService.serverLanesEnabled` is on. It starts off (workers wake in `setup`, before `SyncService` is + set up) and mirrors `SyncService.isActive` — `SyncService` is the ONLY writer: `setup` in the same synchronous + call as `isActive`, `updateSyncEnabled` and `logout` inside the main-actor block that writes `isActive` (so a + fast re-login can't be overwritten by a late logout write). Workers check it before every pop, so a lapse stops + a running lane after its current task. Gated tasks are **held, never cleared**: RevenueCat's cached info is nil + before the first fetch, so a paying subscriber can read inactive at launch. Provider lanes ignore the gate, and + `handleAppRefresh` completes immediately while it's off (a gated lane never drains). - **Realm is gone** (Realm → SwiftData migration is complete). Only inert remnants remain (`DataManager.getSyncTasksRealmURL()` is dead; a stale comment in `LibraryService`). Don't reintroduce it. diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 88d847780..760923363 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -178,6 +178,10 @@ public final class SyncService: SyncServiceProtocol, BPLogger { self.accountService = accountService self.syncQueueService = syncQueueService self.jobManager = SyncJobScheduler(tasksRepository: syncQueueService.taskContainer) + // The queue holds the server lanes until told otherwise: a lapsed account's persisted + // tasks stay put (a fresh install's first RevenueCat fetch may still flip it on) but + // never hit the server, which would reject them forever + syncQueueService.setServerLanesEnabled(isActive) self.client = client self.provider = NetworkProvider(client: client) @@ -625,6 +629,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { Task { @MainActor in guard self.isActive != enabled else { return } self.isActive = enabled + self.syncQueueService.setServerLanesEnabled(enabled) if !enabled { self.cancelAllJobs() // Clearing the persisted rows isn't enough (develop parity): an operation @@ -639,7 +644,12 @@ public final class SyncService: SyncServiceProtocol, BPLogger { /// clears the persisted task queue, and resets the "scheduled library contents" flag /// so the next login runs a fresh initial sync from an empty queue. Idempotent. public func logout() async { - await MainActor.run { self.isActive = false } + // Same main-actor hop as the flag: a fast re-login's updateSyncEnabled(true) runs on + // main, so a gate write outside this block could land after it and hold the lanes + await MainActor.run { + self.isActive = false + self.syncQueueService.setServerLanesEnabled(false) + } UserDefaults.standard.set( false, forKey: Constants.UserDefaults.hasScheduledLibraryContents diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index 18d88380a..fddfbf041 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -46,6 +46,15 @@ public protocol SyncQueueServiceProtocol { /// subscription lapse, leaving the tier-independent externalUpdate operations running. /// Logout cancels everything via the `.logout` observer instead. func cancelServerQueueOperations() + + /// Whether the BookPlayer-server lanes (`sync`, `uploadFile`) may run. Mirrors + /// `SyncService.isActive`; starts off. + var serverLanesEnabled: Bool { get } + + /// Gates the BookPlayer-server lanes without touching their persisted tasks. Off holds + /// them (a lapsed account's tasks would otherwise be rejected by the server forever); + /// on wakes them. + func setServerLanesEnabled(_ enabled: Bool) } public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { @@ -70,6 +79,10 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } // Tracks which queueKeys currently have an active worker looping private var activeQueueKeys = Set() + /// Off until SyncService reports the account's sync state: workers wake in `setup`, + /// before SyncService is set up, and a lapsed account's persisted tasks must never + /// reach the server. Guarded by `stateLock`, together with `activeQueueKeys`. + private var _serverLanesEnabled = false private let stateLock = NSLock() private let policyLock = NSLock() private var disposeBag = Set() @@ -215,7 +228,39 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { return tasksDataManager.observeQueueCounts() } + private static func isServerLane(_ queueKey: String) -> Bool { + queueKey == TaskQueueKey.sync || queueKey == TaskQueueKey.uploadFile + } + + public var serverLanesEnabled: Bool { + stateLock.withLock { _serverLanesEnabled } + } + + public func setServerLanesEnabled(_ enabled: Bool) { + let changed = stateLock.withLock { + defer { _serverLanesEnabled = enabled } + return _serverLanesEnabled != enabled + } + // Turning off needs no action here: each worker retires at its next pop + if changed, enabled { + wakeUpWorkers() + } + } + private func enqueueNextTask(for queueKey: String) async { + // Checked before every pop, not just at wake-up, so a worker already looping when + // sync turns off stops after its current task instead of draining the lane + if Self.isServerLane(queueKey) { + let retired = stateLock.withLock { + guard !_serverLanesEnabled else { return false } + activeQueueKeys.remove(queueKey) + return true + } + // Checking the flag and retiring under one lock means an enable either happened + // before (we keep going) or will see this key inactive and wake a fresh worker + if retired { return } + } + // 1. AWAIT the actor to safely fetch the next task guard let nextTask = await taskContainer.getNextTask(for: queueKey) else { // The queue is empty! Use scoped locking to remove the key. From ffbbcf6fbbf1b3f87b6c373bd99f8fecc03831b2 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 27 Sep 2026 00:14:34 -0500 Subject: [PATCH 159/172] feat(sync): park tasks the server can never accept A failed task used to retry every 5 seconds forever, whatever the server said, with no record of why. Now a coded 4xx (the server's `error` key, carried with its HTTP status on networkErrorWithCode) parks the task instead; anything uncoded keeps retrying as before. SyncFailurePolicy decides the scope: leaf tasks (update, uploadArtwork, uploadFile) park alone and their lane keeps running; structural sync-lane tasks stop the lane behind them, since later tasks build on the change the server never got. not_subscribed / tier_required park at account scope, holding every BookPlayer-server lane, and trigger a fresh RevenueCat read: inactive runs the normal lapse path, active or failed keeps the tasks held and reports. The watch, which has no screen to show them, drops task-level failures instead. The pause (scope, code, message, status, time, Sentry event id) lives on the task reference in the unshipped SchemaV3. The repository skips and stops at parked rows, never coalesces into a parked task or the running one (now tracked by id, since a Retry can reorder the lane), and queue counts report paused tasks and blocked lanes; background refresh treats a lane with nothing runnable as drained. Parked tasks get one automatic retry at launch plus retryPausedTask(id:); a first park posts .syncTaskPaused for the reporting added next. --- BookPlayer.xcodeproj/project.pbxproj | 6 + .../Library/ItemList/Views/BookView.swift | 1 + .../Passkey/Service/PasskeyService.swift | 2 +- .../Profile/ProfileSyncTasksSectionView.swift | 1 + .../Profile/Views/QueuedTasksView.swift | 1 + BookPlayer/Utils/AppServices.swift | 3 + BookPlayerTests/Services/SyncQueueTests.swift | 379 ++++++++++++++++++ BookPlayerWatch/ExtensionDelegate.swift | 3 + CLAUDE.md | 19 +- Shared/BookPlayerError.swift | 5 +- .../Notification+BookPlayerKit.swift | 3 + Shared/Network/NetworkClient.swift | 6 +- Shared/Services/Account/AccountService.swift | 16 + Shared/Services/SyncQueue/QueueCounts.swift | 34 +- .../Services/SyncQueue/QueuedSyncTask.swift | 6 +- .../SyncQueue/SyncQueueRepository.swift | 182 ++++++++- .../Services/SyncQueue/SyncQueueService.swift | 134 ++++++- Shared/Services/SyncQueue/TaskPause.swift | 101 +++++ .../Models/SchemaV3SyncTasksModels.swift | 10 + Shared/SwiftData/Models/SyncJobType.swift | 6 + Shared/SwiftData/TasksDataManager.swift | 27 +- 21 files changed, 906 insertions(+), 39 deletions(-) create mode 100644 Shared/Services/SyncQueue/TaskPause.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 1d1b1639c..214badd38 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -699,7 +699,9 @@ 9911FBB52F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */; }; 9911FBB62F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */; }; 9911FBB82F72F46900DC9A2B /* QueuedSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* QueuedSyncTask.swift */; }; + A6E159ACC6815095CB182A05 /* TaskPause.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099268746F86BD2193897F88 /* TaskPause.swift */; }; 9911FBB92F72F46900DC9A2B /* QueuedSyncTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBB72F72F46200DC9A2B /* QueuedSyncTask.swift */; }; + 693CFE4C25CFFA22F7151780 /* TaskPause.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099268746F86BD2193897F88 /* TaskPause.swift */; }; 9911FBBE2F74527800DC9A2B /* SyncQueueProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */; }; F99B9D63217ABDAFED95696A /* QueueCounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */; }; 9911FBBF2F74527800DC9A2B /* SyncQueueProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */; }; @@ -1783,6 +1785,7 @@ 9911FBB12F71E54600DC9A2B /* SyncQueueRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueRepository.swift; sourceTree = ""; }; 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalUpdateProgressOperation.swift; sourceTree = ""; }; 9911FBB72F72F46200DC9A2B /* QueuedSyncTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedSyncTask.swift; sourceTree = ""; }; + 099268746F86BD2193897F88 /* TaskPause.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TaskPause.swift; sourceTree = ""; }; 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueProgressMonitor.swift; sourceTree = ""; }; 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueueCounts.swift; sourceTree = ""; }; 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUploadOperation.swift; sourceTree = ""; }; @@ -3444,6 +3447,7 @@ 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */, 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */, 9911FBB72F72F46200DC9A2B /* QueuedSyncTask.swift */, + 099268746F86BD2193897F88 /* TaskPause.swift */, 9911FBB12F71E54600DC9A2B /* SyncQueueRepository.swift */, 9911FBAE2F71D03100DC9A2B /* SyncQueueService.swift */, 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */, @@ -4757,6 +4761,7 @@ 638352D02E67F327009EE79E /* SyncTasksModels.swift in Sources */, 638352D12E67F327009EE79E /* SwiftDataModels+Extensions.swift in Sources */, 9911FBB82F72F46900DC9A2B /* QueuedSyncTask.swift in Sources */, + A6E159ACC6815095CB182A05 /* TaskPause.swift in Sources */, 4140EA74227289AE0009F794 /* Theme+CoreDataClass.swift in Sources */, 4140EA6E227289960009F794 /* DeleteMode.swift in Sources */, 9F6BC86727E6D03E002CF2A6 /* WatchApplicationContext.swift in Sources */, @@ -5307,6 +5312,7 @@ 9FC1E46C2815A8CA00522FA8 /* LibraryAPI.swift in Sources */, 9FAFC9F42995BB5C00FD531E /* RemoteFileURLResponse.swift in Sources */, 9911FBB92F72F46900DC9A2B /* QueuedSyncTask.swift in Sources */, + 693CFE4C25CFFA22F7151780 /* TaskPause.swift in Sources */, 992D6E172FA98C5C0091849F /* AudiobookShelfLibraryItem.swift in Sources */, 4124AB2125DFE1A60007C839 /* CoreDataStack.swift in Sources */, 41A1B11F226F88C500EA0400 /* Chapter+CoreDataClass.swift in Sources */, diff --git a/BookPlayer/Library/ItemList/Views/BookView.swift b/BookPlayer/Library/ItemList/Views/BookView.swift index d885b6523..4ef4756e0 100644 --- a/BookPlayer/Library/ItemList/Views/BookView.swift +++ b/BookPlayer/Library/ItemList/Views/BookView.swift @@ -93,6 +93,7 @@ struct BookView: View { syncQueueService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, + verifySyncEntitlement: { nil }, tasksDataManager: tasksDataManager, networkClient: NetworkClient(), dataManager: dataManager diff --git a/BookPlayer/Profile/Passkey/Service/PasskeyService.swift b/BookPlayer/Profile/Passkey/Service/PasskeyService.swift index 9ef3c9818..7180822d1 100644 --- a/BookPlayer/Profile/Passkey/Service/PasskeyService.swift +++ b/BookPlayer/Profile/Passkey/Service/PasskeyService.swift @@ -62,7 +62,7 @@ public final class PasskeyService: NSObject, PasskeyServiceProtocol, @unchecked return response } catch let error as BookPlayerError { - if case .networkErrorWithCode(_, let code) = error, + if case .networkErrorWithCode(_, let code, _) = error, code == "EMAIL_ALREADY_REGISTERED" { throw PasskeyError.emailAlreadyRegistered } diff --git a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift index 1f9112ec5..2d370d9c0 100644 --- a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift @@ -105,6 +105,7 @@ struct ProfileSyncTasksSectionView: View { syncQueueService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, + verifySyncEntitlement: { nil }, tasksDataManager: TasksDataManager(), networkClient: NetworkClient(), dataManager: dataManager diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index d1131d60a..2befa594c 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -181,6 +181,7 @@ struct QueuedTasksView: View { syncQueueService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, + verifySyncEntitlement: { nil }, tasksDataManager: TasksDataManager(), networkClient: NetworkClient(), dataManager: dataManager diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index 033ce60c1..e56ab194d 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -88,6 +88,7 @@ final class AppServices: BPLogger { let syncQueueService = makeSyncQueueService( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, + verifySyncEntitlement: { await accountService.refreshSyncEntitlement() }, tasksDataManager: tasksDataManager, dataManager: dataManager ) @@ -263,6 +264,7 @@ final class AppServices: BPLogger { private func makeSyncQueueService( libraryService: LibraryService, getAccessLevel: @escaping () -> AccessLevel, + verifySyncEntitlement: @escaping () async -> Bool?, tasksDataManager: TasksDataManager, dataManager: DataManager ) -> SyncQueueService { @@ -270,6 +272,7 @@ final class AppServices: BPLogger { service.setup( libraryService: libraryService, getAccessLevel: getAccessLevel, + verifySyncEntitlement: verifySyncEntitlement, tasksDataManager: tasksDataManager, networkClient: NetworkClient(), dataManager: dataManager diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index 05c1001a7..451fd22a2 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -610,3 +610,382 @@ private final class BlockingNetworkClient: NetworkClientMock, @unchecked Sendabl XCTFail("timed out waiting for \(count) request(s)") } } + +// MARK: - Parking (coded server errors) + +extension SyncQueueTests { + private func coded(_ code: String, status: Int = 404) -> BookPlayerError { + .networkErrorWithCode(message: "Item not found: \"a.mp3\"", code: code, status: status) + } + + private func syncTaskParams(id: String, jobType: SyncJobType, path: String) -> [String: Any] { + [ + "id": id, + "uuid": UUID().uuidString, + "jobType": jobType.rawValue, + "queueKey": TaskQueueKey.sync, + "relativePath": path, + ] + } + + private func pause(_ scope: TaskPauseScope, code: String = "item_not_found") -> TaskPause { + TaskPause(scope: scope, errorCode: code, message: "msg", httpStatus: 404, pausedAt: Date()) + } + + func testFailurePolicy_parksOnlyCodedErrors_scopedByJobType() { + typealias Policy = SyncFailurePolicy + XCTAssertEqual(Policy.action(for: nil, jobType: .move, parkingEnabled: true), .retry) + XCTAssertEqual(Policy.action(for: BookPlayerError.networkError("x"), jobType: .move, parkingEnabled: true), .retry) + XCTAssertEqual(Policy.action(for: URLError(.timedOut), jobType: .move, parkingEnabled: true), .retry) + + XCTAssertEqual(Policy.action(for: coded("item_not_found"), jobType: .move, parkingEnabled: true), .park(.lane)) + XCTAssertEqual(Policy.action(for: coded("uuid_conflict", status: 409), jobType: .upload, parkingEnabled: true), .park(.lane)) + XCTAssertEqual(Policy.action(for: coded("item_not_found"), jobType: .matchUuid, parkingEnabled: true), .park(.lane)) + XCTAssertEqual(Policy.action(for: coded("item_not_found"), jobType: .setBookmark, parkingEnabled: true), .park(.lane)) + XCTAssertEqual(Policy.action(for: coded("invalid_request", status: 400), jobType: .update, parkingEnabled: true), .park(.task)) + XCTAssertEqual(Policy.action(for: coded("item_not_found"), jobType: .uploadArtwork, parkingEnabled: true), .park(.task)) + + XCTAssertEqual(Policy.action(for: coded("not_subscribed", status: 400), jobType: .move, parkingEnabled: true), .verifyAccount) + XCTAssertEqual(Policy.action(for: coded("tier_required", status: 403), jobType: .uploadFile, parkingEnabled: true), .verifyAccount) + + // Watch: task-level failures drop, account-level handling is the same + XCTAssertEqual(Policy.action(for: coded("item_not_found"), jobType: .move, parkingEnabled: false), .drop) + XCTAssertEqual(Policy.action(for: coded("not_subscribed", status: 400), jobType: .move, parkingEnabled: false), .verifyAccount) + + // Media-server pushes keep their own handling, account codes included + XCTAssertEqual(Policy.action(for: coded("item_not_found"), jobType: .externalUpdate, parkingEnabled: true), .retry) + XCTAssertEqual(Policy.action(for: coded("not_subscribed", status: 400), jobType: .externalUpdate, parkingEnabled: true), .retry) + + // A logout/lapse cancellation is not the server's answer + XCTAssertEqual(Policy.action(for: BookPlayerError.cancelledTask, jobType: .move, parkingEnabled: true), .retry) + } + + func testGetNextTask_skipsTaskPausedRows_andStopsAtALanePause() async throws { + try await repository.storeTask(parameters: syncTaskParams(id: "t1", jobType: .update, path: "a.mp3")) + try await repository.storeTask(parameters: syncTaskParams(id: "t2", jobType: .shallowDelete, path: "b.mp3")) + try await repository.storeTask(parameters: syncTaskParams(id: "t3", jobType: .delete, path: "c.mp3")) + + await repository.park(taskId: "t1", pause: pause(.task)) + var next = await repository.getNextTask(for: TaskQueueKey.sync) + XCTAssertEqual(next?.id, "t2", "a task-level pause lets the rest of the lane run") + + await repository.park(taskId: "t2", pause: pause(.lane)) + next = await repository.getNextTask(for: TaskQueueKey.sync) + XCTAssertNil(next, "a lane-level pause holds every later task") + + await repository.resume(taskId: "t2") + next = await repository.getNextTask(for: TaskQueueKey.sync) + XCTAssertEqual(next?.id, "t2") + } + + func testAccountPause_holdsEveryServerLane_butNotProviderLanes() async throws { + try await repository.storeTask(parameters: syncTaskParams(id: "s1", jobType: .shallowDelete, path: "a.mp3")) + try await repository.storeTask(parameters: syncTaskParams(id: "s2", jobType: .delete, path: "b.mp3")) + try await repository.storeTask(parameters: uploadFileParams(id: "u1")) + try await repository.storeTask(parameters: externalUpdateParams(id: "j1")) + + await repository.park(taskId: "s1", pause: pause(.account, code: "not_subscribed")) + await repository.park(taskId: "s2", pause: pause(.account, code: "not_subscribed")) + + let sync = await repository.getNextTask(for: TaskQueueKey.sync) + let upload = await repository.getNextTask(for: TaskQueueKey.uploadFile) + let push = await repository.getNextTask(for: "jellyfin") + XCTAssertNil(sync) + XCTAssertNil(upload) + XCTAssertEqual(push?.id, "j1") + + // One cause: resuming one account pause resumes them all + await repository.resume(taskId: "s1") + let resumedUpload = await repository.getNextTask(for: TaskQueueKey.uploadFile) + let resumedSync = await repository.getNextTask(for: TaskQueueKey.sync) + XCTAssertEqual(resumedUpload?.id, "u1") + XCTAssertEqual(resumedSync?.id, "s1") + XCTAssertNil(resumedSync?.pause) + } + + func testResumeAllPaused_keepsTheSentryEventId() async throws { + try await repository.storeTask(parameters: syncTaskParams(id: "t1", jobType: .shallowDelete, path: "a.mp3")) + await repository.park(taskId: "t1", pause: pause(.lane)) + await repository.setSentryEventId("evt-1", forTask: "t1") + + var stored = await repository.getAllTasks().first + XCTAssertEqual(stored?.pause?.errorCode, "item_not_found") + XCTAssertEqual(stored?.pause?.message, "msg") + XCTAssertEqual(stored?.pause?.httpStatus, 404) + XCTAssertEqual(stored?.pause?.sentryEventId, "evt-1") + + await repository.resumeAllPaused() + stored = await repository.getAllTasks().first + XCTAssertNil(stored?.pause) + + let reparked = await repository.park(taskId: "t1", pause: pause(.lane)) + XCTAssertEqual(reparked?.sentryEventId, "evt-1", "a re-park must not be reported again") + + let gone = await repository.park(taskId: "missing", pause: pause(.lane)) + XCTAssertNil(gone) + } + + /// New work never merges into a parked task (it would wait behind the failure); it lands + /// in a task of its own, which later updates may merge into as usual + func testCoalescing_skipsParkedTasks() async throws { + var first = syncTaskParams(id: "u1", jobType: .update, path: "a.mp3") + first["uuid"] = "book-1" + try await repository.storeTask(parameters: first) + await repository.park(taskId: "u1", pause: pause(.task)) + + var second = syncTaskParams(id: "u2", jobType: .update, path: "a.mp3") + second["uuid"] = "book-1" + try await repository.storeTask(parameters: second) + var third = syncTaskParams(id: "u3", jobType: .update, path: "a.mp3") + third["uuid"] = "book-1" + try await repository.storeTask(parameters: third) + + let ids = await repository.getAllTasks().map(\.id) + XCTAssertEqual(ids, ["u1", "u2"], "u2 stands apart from the parked u1; u3 merges into u2") + } + + /// A parked task behind the runnable head is still never a merge target + func testCoalescing_skipsAParkedTaskBehindTheHead() async throws { + var head = syncTaskParams(id: "h1", jobType: .update, path: "h.mp3") + head["uuid"] = "book-head" + try await repository.storeTask(parameters: head) + var parked = syncTaskParams(id: "p1", jobType: .update, path: "a.mp3") + parked["uuid"] = "book-1" + try await repository.storeTask(parameters: parked) + await repository.park(taskId: "p1", pause: pause(.task)) + + var newer = syncTaskParams(id: "p2", jobType: .update, path: "a.mp3") + newer["uuid"] = "book-1" + try await repository.storeTask(parameters: newer) + + let ids = await repository.getAllTasks().map(\.id) + XCTAssertEqual(ids, ["h1", "p1", "p2"]) + } + + /// A Retry puts the resumed task ahead of the one running: the running task's parameters + /// were already read, so merging into it would lose the new update + func testCoalescing_neverMergesIntoTheRunningTask_afterARetryReordersTheLane() async throws { + var parked = syncTaskParams(id: "r1", jobType: .update, path: "a.mp3") + parked["uuid"] = "book-1" + try await repository.storeTask(parameters: parked) + await repository.park(taskId: "r1", pause: pause(.task)) + var running = syncTaskParams(id: "r2", jobType: .update, path: "b.mp3") + running["uuid"] = "book-2" + try await repository.storeTask(parameters: running) + + let picked = await repository.getNextTask(for: TaskQueueKey.sync) + XCTAssertEqual(picked?.id, "r2") + await repository.resume(taskId: "r1") + + var newer = syncTaskParams(id: "r3", jobType: .update, path: "b.mp3") + newer["uuid"] = "book-2" + try await repository.storeTask(parameters: newer) + + let ids = await repository.getAllTasks().map(\.id) + XCTAssertEqual(ids, ["r1", "r2", "r3"]) + } + + func testQueueCounts_reportPausedAndBlockedLanes() async throws { + try await repository.storeTask(parameters: syncTaskParams(id: "t1", jobType: .update, path: "a.mp3")) + try await repository.storeTask(parameters: uploadFileParams(id: "u1")) + await repository.park(taskId: "t1", pause: pause(.task)) + + var counts = try await awaitCounts(from: tasksDataManager.observeQueueCounts()) { $0.totalPaused == 1 } + XCTAssertEqual(counts.pausedCount(in: TaskQueueKey.sync), 1) + XCTAssertFalse(counts.isBlocked(TaskQueueKey.sync)) + XCTAssertTrue(counts.isIdle(TaskQueueKey.sync), "only parked tasks left: nothing to wait for") + XCTAssertFalse(counts.isIdle(TaskQueueKey.uploadFile)) + + try await repository.storeTask(parameters: syncTaskParams(id: "t2", jobType: .shallowDelete, path: "b.mp3")) + await repository.park(taskId: "t2", pause: pause(.account, code: "not_subscribed")) + counts = try await awaitCounts(from: tasksDataManager.observeQueueCounts()) { $0.totalPaused == 2 } + XCTAssertTrue(counts.isBlocked(TaskQueueKey.sync)) + XCTAssertTrue(counts.isBlocked(TaskQueueKey.uploadFile)) + XCTAssertEqual(counts.count(in: TaskQueueKey.sync), 2) + } + + func testLaneDrained_treatsABlockedLaneAsDrained() { + let subject = CurrentValueSubject( + QueueCounts(byQueueKey: [TaskQueueKey.sync: 2]) + ) + var seen = [Bool]() + let subscription = subject.laneDrained(TaskQueueKey.sync).sink { seen.append($0) } + defer { subscription.cancel() } + + subject.send(QueueCounts(byQueueKey: [TaskQueueKey.sync: 2], pausedByQueueKey: [TaskQueueKey.sync: 1])) + subject.send(QueueCounts( + byQueueKey: [TaskQueueKey.sync: 2], + pausedByQueueKey: [TaskQueueKey.sync: 1], + blockedQueueKeys: [TaskQueueKey.sync] + )) + + XCTAssertEqual(seen, [false, false, true]) + } + + // MARK: Engine + + private func makeParkingEngine( + client: NetworkClientProtocol, + verify: @escaping () async -> Bool? = { true } + ) -> SyncQueueService { + let service = makeGatedEngine() + service.networkClient = client + service.verifySyncEntitlement = verify + return service + } + + private func waitForPause(of taskId: String, timeout: TimeInterval = 3) async throws -> TaskPause? { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline { + if let pause = await repository.getAllTasks().first(where: { $0.id == taskId })?.pause { return pause } + try await Task.sleep(for: .milliseconds(20)) + } + XCTFail("timed out waiting for \(taskId) to park") + return nil + } + + /// A structural task that can never succeed stops its lane at once (no 5 s retry loop), + /// is reported once, and Retry runs it again + func testCodedFailure_parksAStructuralTask_holdsTheLane_andRetryRunsIt() async throws { + let client = FailingNetworkClient(errors: [coded("item_not_found")]) + let service = makeParkingEngine(client: client) + try await repository.storeTask(parameters: syncTaskParams(id: "e3m1", jobType: .delete, path: "a.mp3")) + try await repository.storeTask(parameters: syncTaskParams(id: "e3m2", jobType: .delete, path: "b.mp3")) + + let reported = expectation(forNotification: .syncTaskPaused, object: nil) { note in + (note.object as? QueuedSyncTask)?.id == "e3m1" + } + service.setServerLanesEnabled(true) + + let pause = try await waitForPause(of: "e3m1") + XCTAssertEqual(pause?.scope, .lane) + XCTAssertEqual(pause?.errorCode, "item_not_found") + XCTAssertEqual(pause?.httpStatus, 404) + await fulfillment(of: [reported], timeout: 2) + + try await Task.sleep(for: .milliseconds(300)) + XCTAssertEqual(client.requestCount, 1, "the lane waits behind the parked task") + + service.retryPausedTask(id: "e3m1") + try await waitForEmptyQueue() + XCTAssertEqual(client.requestCount, 3) + } + + func testCodedFailure_onALeafTask_parksItAlone() async throws { + let client = FailingNetworkClient(errors: [coded("invalid_request", status: 400)]) + let service = makeParkingEngine(client: client) + try await repository.storeTask(parameters: syncTaskParams(id: "e4a1", jobType: .update, path: "a.mp3")) + try await repository.storeTask(parameters: syncTaskParams(id: "e4d1", jobType: .delete, path: "b.mp3")) + + service.setServerLanesEnabled(true) + try await waitForTaskCount(exactly: 1) + let left = await repository.getAllTasks() + XCTAssertEqual(left.map(\.id), ["e4a1"]) + XCTAssertEqual(left.first?.pause?.scope, .task) + } + + func testCodedFailure_withParkingDisabled_dropsTheTask() async throws { + let client = FailingNetworkClient(errors: [coded("item_not_found")]) + let service = makeParkingEngine(client: client) + service.parkingEnabled = false + try await repository.storeTask(parameters: syncTaskParams(id: "e5m1", jobType: .delete, path: "a.mp3")) + try await repository.storeTask(parameters: syncTaskParams(id: "e5m2", jobType: .delete, path: "b.mp3")) + + service.setServerLanesEnabled(true) + try await waitForEmptyQueue() + XCTAssertEqual(client.requestCount, 2) + } + + /// RevenueCat still says active: every server lane holds and the pause is reported + func testAccountRejection_whileRevenueCatSaysActive_holdsTheServerLanes_andReports() async throws { + let client = FailingNetworkClient(errors: [coded("not_subscribed", status: 400)]) + let service = makeParkingEngine(client: client, verify: { true }) + try await repository.storeTask(parameters: syncTaskParams(id: "e7m1", jobType: .delete, path: "a.mp3")) + + let reported = expectation(forNotification: .syncTaskPaused, object: nil) { note in + (note.object as? QueuedSyncTask)?.pause?.scope == .account + } + service.setServerLanesEnabled(true) + + let pause = try await waitForPause(of: "e7m1") + XCTAssertEqual(pause?.scope, .account) + await fulfillment(of: [reported], timeout: 2) + + // An upload that would otherwise run (its missing file is consumed without network) + var upload = uploadFileParams(id: "e7u1") + upload["filePath"] = URL(fileURLWithPath: "/nonexistent/\(UUID().uuidString).m4b").absoluteString + try await repository.storeTask(parameters: upload) + service.wakeUpWorkers() + try await Task.sleep(for: .milliseconds(300)) + let held = await repository.getAllTasks() + XCTAssertEqual(Set(held.map(\.id)), ["e7m1", "e7u1"], "the upload lane holds too") + let counts = try await awaitCounts(from: tasksDataManager.observeQueueCounts()) { + $0.count(in: TaskQueueKey.uploadFile) == 1 + } + XCTAssertTrue(counts.isBlocked(TaskQueueKey.uploadFile)) + } + + /// RevenueCat confirms the lapse: nothing is reported (the lapse path clears the lanes) + func testAccountRejection_confirmedInactive_isNotReported() async throws { + let client = FailingNetworkClient(errors: [coded("not_subscribed", status: 400)]) + let verified = expectation(description: "entitlement checked") + let service = makeParkingEngine(client: client, verify: { + verified.fulfill() + return false + }) + try await repository.storeTask(parameters: syncTaskParams(id: "e9m1", jobType: .delete, path: "a.mp3")) + + // Filtered on this test's task: the notification is global, and an earlier test's + // engine may still post late + let reported = expectation(forNotification: .syncTaskPaused, object: nil) { note in + (note.object as? QueuedSyncTask)?.id == "e9m1" + } + reported.isInverted = true + service.setServerLanesEnabled(true) + + await fulfillment(of: [verified], timeout: 2) + await fulfillment(of: [reported], timeout: 0.5) + } + + /// The one automatic retry: a launch resumes parked tasks before waking the lanes + func testLaunchWake_resumesParkedTasks() async throws { + let service = makeParkingEngine(client: FailingNetworkClient(errors: [])) + try await repository.storeTask(parameters: syncTaskParams(id: "e11m1", jobType: .delete, path: "a.mp3")) + await repository.park(taskId: "e11m1", pause: pause(.lane)) + service.setServerLanesEnabled(true) + try await Task.sleep(for: .milliseconds(300)) + let stillParked = await repository.getAllTasks() + XCTAssertEqual(stillParked.count, 1, "an ordinary wake leaves parked tasks alone") + + service.wakeUpWorkers(resumingPausedTasks: true) + try await waitForEmptyQueue() + } +} + +/// Throws the queued errors for the first requests, then answers `Empty` +private final class FailingNetworkClient: NetworkClientMock, @unchecked Sendable { + private let lock = NSLock() + private var errors: [Error] + private var _requestCount = 0 + + var requestCount: Int { lock.withLock { _requestCount } } + + init(errors: [Error]) { + self.errors = errors + super.init(mockedResponse: Empty()) + } + + override func request( + path: String, + method: HTTPMethod, + parameters: [String: Any]? + ) async throws -> T { + let error: Error? = lock.withLock { + _requestCount += 1 + return errors.isEmpty ? nil : errors.removeFirst() + } + if let error { throw error } + // swiftlint:disable:next force_cast + return Empty() as! T + } +} diff --git a/BookPlayerWatch/ExtensionDelegate.swift b/BookPlayerWatch/ExtensionDelegate.swift index 01ac264e5..8e79800f6 100644 --- a/BookPlayerWatch/ExtensionDelegate.swift +++ b/BookPlayerWatch/ExtensionDelegate.swift @@ -73,9 +73,12 @@ class ExtensionDelegate: NSObject, WKApplicationDelegate, ObservableObject { libraryService.setup(dataManager: dataManager, audioMetadataService: audioMetadataService) let tasksDataManager = TasksDataManager() let syncQueueService = SyncQueueService() + // No Queued Tasks screen here to show or retry a parked task: coded failures drop + syncQueueService.parkingEnabled = false syncQueueService.setup( libraryService: libraryService, getAccessLevel: { accountService.getAccessLevel() }, + verifySyncEntitlement: { await accountService.refreshSyncEntitlement() }, tasksDataManager: tasksDataManager, networkClient: NetworkClient(), dataManager: dataManager diff --git a/CLAUDE.md b/CLAUDE.md index de2de5c41..6ab7a7f9d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -194,7 +194,7 @@ Custom `Notification.Name`s (namespaced with the bundle id at runtime) are the a CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swift` (framework-wide): `.chapterChange`, `.bookReady`, `.bookPlayed`, `.bookPaused`, `.bookEnd`, `.bookPlaying`, `.accountUpdate`, `.logout`, `.messageReceived`, `.folderProgressUpdated`, `.uploadProgressUpdated`, `.uploadCompleted`, -`.listeningProgressChanged`; and app-internal ones in `BookPlayer/Utils/Extensions/Notification+BookPlayer.swift`. +`.listeningProgressChanged`, `.syncTaskPaused`; and app-internal ones in `BookPlayer/Utils/Extensions/Notification+BookPlayer.swift`. - **`PlayerManager` is the dominant publisher** of playback events; `PhoneWatchConnectivityService` and `CarPlayManager` are the dominant cross-target subscribers; `AccountService` is the auth/account hub. @@ -273,6 +273,23 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi a running lane after its current task. Gated tasks are **held, never cleared**: RevenueCat's cached info is nil before the first fetch, so a paying subscriber can read inactive at launch. Provider lanes ignore the gate, and `handleAppRefresh` completes immediately while it's off (a gated lane never drains). + **Parking:** a failed task parks ONLY on a coded 4xx (`BookPlayerError.networkErrorWithCode`, the server's + `error` key); anything uncoded keeps the 5 s retry. Today only `LibraryItemSyncOperation` (sync lane) errors + reach it — `FileUploadOperation` still consumes a 4xx — so `uploadFile` parks once the multipart engine reports + coded errors. `SyncFailurePolicy` owns the rules: leaf tasks (`update`, + `uploadArtwork`, `uploadFile`) park alone (`TaskPauseScope.task`, the lane keeps running); every other + sync-lane task is structural and stops its lane (`.lane`); `not_subscribed`/`tier_required` park `.account` + (holds every server lane) and trigger a fresh RevenueCat read — inactive runs the normal lapse path, active or + failed keeps the tasks held and reports; `externalUpdate` keeps its own handling. The watch sets + `parkingEnabled = false` (no UI there), so task-level coded failures drop. The pause lives on + `QueuedTaskReferenceModel` (`pauseScope`, code, message, status, `pausedAt`, `sentryEventId`); + `SyncQueueRepository.getNextTask` skips `.task` rows and stops at a `.lane`/`.account` head, and + `TasksDataManager.queueCounts` mirrors those rules (paused counts, blocked lanes; `laneDrained` counts a lane + with nothing runnable as drained). Parked tasks and the running task (tracked by id in the repository — a Retry + can put a resumed task ahead of it) are never coalescing targets. Retry = one automatic resume at + launch (`setup`) plus `retryPausedTask(id:)`; there is deliberately no Skip. A first park posts + `.syncTaskPaused`, skipped when the row already carries a `sentryEventId` (recorded via `recordPauseReport`; + it survives resumes). - **Realm is gone** (Realm → SwiftData migration is complete). Only inert remnants remain (`DataManager.getSyncTasksRealmURL()` is dead; a stale comment in `LibraryService`). Don't reintroduce it. diff --git a/Shared/BookPlayerError.swift b/Shared/BookPlayerError.swift index dd2f43c5f..72e2cf117 100644 --- a/Shared/BookPlayerError.swift +++ b/Shared/BookPlayerError.swift @@ -11,7 +11,8 @@ import Foundation public enum BookPlayerError: Error { case runtimeError(String) case networkError(String) - case networkErrorWithCode(message: String, code: String) + /// A 4xx carrying a machine-readable `error` code: the request can never succeed as sent + case networkErrorWithCode(message: String, code: String, status: Int) case cancelledTask case emptyResponse } @@ -25,7 +26,7 @@ extension BookPlayerError: LocalizedError { return "Empty network response" case .networkError(let message): return message - case .networkErrorWithCode(let message, _): + case .networkErrorWithCode(let message, _, _): return message case .cancelledTask: return "Concurrent task was cancelled" diff --git a/Shared/Extensions/Notification+BookPlayerKit.swift b/Shared/Extensions/Notification+BookPlayerKit.swift index 99cdf7c81..3c2be3b3a 100644 --- a/Shared/Extensions/Notification+BookPlayerKit.swift +++ b/Shared/Extensions/Notification+BookPlayerKit.swift @@ -23,4 +23,7 @@ extension Notification.Name { public static let uploadCompleted = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).upload.completed") public static let listeningProgressChanged = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).listening.progress.changed") public static let newTaskInQueue = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).concurrent.task.queue") + /// A queued task was parked on a coded server error and hasn't been reported yet. + /// `object` is the `QueuedSyncTask` (with its `pause`). + public static let syncTaskPaused = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).sync.task.paused") } diff --git a/Shared/Network/NetworkClient.swift b/Shared/Network/NetworkClient.swift index f4aa0430e..a79660fac 100644 --- a/Shared/Network/NetworkClient.swift +++ b/Shared/Network/NetworkClient.swift @@ -203,7 +203,11 @@ public class NetworkClient: NetworkClientProtocol, BPLogger { case 400...499: let error = try self.decoder.decode(ErrorResponse.self, from: data) if let code = error.error { - throw BookPlayerError.networkErrorWithCode(message: error.message, code: code) + throw BookPlayerError.networkErrorWithCode( + message: error.message, + code: code, + status: httpURLResponse.statusCode + ) } else { throw BookPlayerError.networkError(error.message) } diff --git a/Shared/Services/Account/AccountService.swift b/Shared/Services/Account/AccountService.swift index bc65599dc..090705563 100644 --- a/Shared/Services/Account/AccountService.swift +++ b/Shared/Services/Account/AccountService.swift @@ -183,6 +183,22 @@ public final class AccountService: AccountServiceProtocol { return Purchases.shared.cachedCustomerInfo?.entitlements.all["pro"]?.isActive == true || Purchases.shared.cachedCustomerInfo?.entitlements.all["lite"]?.isActive == true } + /// A fresh (network) RevenueCat read of the sync entitlement, for when the server rejects + /// the account while the cached info says otherwise. The account update it triggers + /// posts `.accountUpdate`, so an inactive result runs the usual lapse path. nil = the + /// fetch failed. + public func refreshSyncEntitlement() async -> Bool? { + do { + let customerInfo = try await Purchases.shared.customerInfo(fetchPolicy: .fetchCurrent) + // updateAccount works on the view context: main only, like every other caller + await MainActor.run { self.updateAccount(from: customerInfo) } + let entitlements = customerInfo.entitlements.all + return entitlements["pro"]?.isActive == true || entitlements["lite"]?.isActive == true + } catch { + return nil + } + } + public func hasLiteEnabled() -> Bool { return Purchases.shared.cachedCustomerInfo?.entitlements.all["lite"]?.isActive == true } diff --git a/Shared/Services/SyncQueue/QueueCounts.swift b/Shared/Services/SyncQueue/QueueCounts.swift index 371121356..41fb60aff 100644 --- a/Shared/Services/SyncQueue/QueueCounts.swift +++ b/Shared/Services/SyncQueue/QueueCounts.swift @@ -11,22 +11,48 @@ import Foundation /// Pending-task count per queue key, published by the engine that owns every lane. /// A drained lane is simply absent from the snapshot; `count(in:)` reads it as zero. public struct QueueCounts: Equatable { + /// Every queued task per lane, parked ones included public let byQueueKey: [String: Int] + /// Parked tasks per lane (a subset of `byQueueKey`) + public let pausedByQueueKey: [String: Int] + /// Lanes that can't make progress until a parked task is resumed: a lane-level pause + /// at their head, or an account-level pause holding every server lane + public let blockedQueueKeys: Set - public init(byQueueKey: [String: Int] = [:]) { + public init( + byQueueKey: [String: Int] = [:], + pausedByQueueKey: [String: Int] = [:], + blockedQueueKeys: Set = [] + ) { self.byQueueKey = byQueueKey + self.pausedByQueueKey = pausedByQueueKey + self.blockedQueueKeys = blockedQueueKeys } /// Every queued task across all lanes public var total: Int { byQueueKey.values.reduce(0, +) } + /// Every parked task across all lanes + public var totalPaused: Int { pausedByQueueKey.values.reduce(0, +) } + public func count(in queueKey: String) -> Int { byQueueKey[queueKey] ?? 0 } + + public func pausedCount(in queueKey: String) -> Int { pausedByQueueKey[queueKey] ?? 0 } + + public func isBlocked(_ queueKey: String) -> Bool { blockedQueueKeys.contains(queueKey) } + + /// Nothing in the lane can run: it's empty, holds only parked tasks, or is blocked + public func isIdle(_ queueKey: String) -> Bool { + isBlocked(queueKey) || count(in: queueKey) == pausedCount(in: queueKey) + } } extension Publisher where Output == QueueCounts, Failure == Never { - /// `true` whenever the given lane has nothing queued. Background refresh waits on the - /// `sync` lane through this, so the policy reads the same at the call site and in tests. + /// `true` whenever the given lane has nothing left it can run (`isIdle`): a parked task + /// never finishes on its own, so waiting on it would only hold the window open. + /// Background refresh waits on the `sync` lane through this, so the policy reads the + /// same at the call site and in tests. public func laneDrained(_ queueKey: String) -> AnyPublisher { - map { $0.count(in: queueKey) == 0 }.eraseToAnyPublisher() + map { $0.isIdle(queueKey) }.eraseToAnyPublisher() } } diff --git a/Shared/Services/SyncQueue/QueuedSyncTask.swift b/Shared/Services/SyncQueue/QueuedSyncTask.swift index 198aacd91..9fab7132f 100644 --- a/Shared/Services/SyncQueue/QueuedSyncTask.swift +++ b/Shared/Services/SyncQueue/QueuedSyncTask.swift @@ -13,6 +13,8 @@ public struct QueuedSyncTask: Identifiable { public let uuid: String public let relativePath: String public let parameters: [String: Any] + /// Set while the task is parked on a coded server error + public let pause: TaskPause? public init( id: String, @@ -20,7 +22,8 @@ public struct QueuedSyncTask: Identifiable { jobType: SyncJobType, parameters: [String: Any], uuid: String = "", - relativePath: String = "" + relativePath: String = "", + pause: TaskPause? = nil ) { self.id = id self.queueKey = queueKey @@ -28,6 +31,7 @@ public struct QueuedSyncTask: Identifiable { self.parameters = parameters self.uuid = uuid self.relativePath = relativePath + self.pause = pause } /// The key `.uploadProgressUpdated` carries for this item — what a row matches on diff --git a/Shared/Services/SyncQueue/SyncQueueRepository.swift b/Shared/Services/SyncQueue/SyncQueueRepository.swift index 316775fc4..ce89dba2c 100644 --- a/Shared/Services/SyncQueue/SyncQueueRepository.swift +++ b/Shared/Services/SyncQueue/SyncQueueRepository.swift @@ -13,8 +13,13 @@ import SwiftData public protocol SyncQueueRepositoryProtocol: ModelActor { init(tasksDataManager: TasksDataManager) + /// The next task the lane's worker should run, marked in flight (never a coalescing + /// target until popped or parked). Worker-only: use `hasRunnableTask(for:)` to peek. func getNextTask(for queueKey: String) -> QueuedSyncTask? + /// Whether the lane has a task its worker could run, without marking anything in flight + func hasRunnableTask(for queueKey: String) -> Bool + func pop(_ task: QueuedSyncTask) func getAllQueueKeys() -> [String] @@ -40,6 +45,21 @@ public protocol SyncQueueRepositoryProtocol: ModelActor { func clearAll(in queueKey: String) throws func clearAll() throws + + /// Parks the task. Returns the stored pause (carrying any earlier `sentryEventId`), or + /// nil when the task is gone (popped or cleared meanwhile). + @discardableResult + func park(taskId: String, pause: TaskPause) -> TaskPause? + + /// Returns a parked task to pending. Resuming one account-level pause resumes them all: + /// they share one cause. + func resume(taskId: String) + + /// Returns every parked task to pending (the one automatic retry, at launch) + func resumeAllPaused() + + /// Remembers the Sentry event that reported this task's pause + func setSentryEventId(_ eventId: String, forTask taskId: String) } public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { @@ -47,6 +67,11 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { nonisolated public let modelExecutor: any ModelExecutor private let tasksDataManager: TasksDataManager + /// The task each lane's worker is running: handed out by `getNextTask`, dropped on pop + /// or park. Its parameters were already read, so it must never be a coalescing target — + /// and once parking exists it isn't always the lane's first row (a Retry can put a + /// resumed task ahead of it). + private var inFlightTaskIDs: [String: String] = [:] public init(tasksDataManager: TasksDataManager) { self.modelContainer = tasksDataManager.container @@ -59,9 +84,46 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { } public func getNextTask(for queueKey: String) -> QueuedSyncTask? { + guard let (reference, storedObject) = nextRunnableTask(for: queueKey) else { return nil } + + inFlightTaskIDs[queueKey] = reference.taskID + return QueuedSyncTask( + id: reference.taskID, + queueKey: reference.queueKey, + jobType: reference.jobType, + parameters: storedObject.toDictionaryPayload(), + uuid: reference.uuid, + relativePath: reference.relativePath, + pause: reference.pause + ) + } + + public func hasRunnableTask(for queueKey: String) -> Bool { + nextRunnableTask(for: queueKey) != nil + } + + /// The pause rules: `.task` rows are skipped, a `.lane`/`.account` head stops the lane, + /// and any `.account` pause holds every server lane + private func nextRunnableTask( + for queueKey: String + ) -> (QueuedTaskReferenceModel, any DictionaryConvertible)? { guard let tasksContainer = fetchGlobalQueueModel() else { return nil } + if TaskQueueKey.isServerLane(queueKey), + tasksContainer.tasks.contains(where: { $0.pauseScopeValue == .account }) { + return nil + } + for reference in tasksContainer.orderedTasks(for: queueKey) { + switch reference.pauseScopeValue { + case .task: + continue + case .lane, .account: + return nil + case nil: + break + } + guard let storedObject = tasksDataManager.getTaskModel( with: reference.taskID, @@ -83,20 +145,75 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { continue } - return QueuedSyncTask( - id: reference.taskID, - queueKey: reference.queueKey, - jobType: reference.jobType, - parameters: storedObject.toDictionaryPayload(), - uuid: reference.uuid, - relativePath: reference.relativePath - ) + return (reference, storedObject) } return nil } + @discardableResult + public func park(taskId: String, pause: TaskPause) -> TaskPause? { + clearInFlight(taskId) + guard + let reference = fetchGlobalQueueModel()?.tasks.first(where: { $0.taskID == taskId }) + else { return nil } + + reference.pauseScope = pause.scope.rawValue + reference.errorCode = pause.errorCode + reference.errorMessage = pause.message + reference.httpStatus = pause.httpStatus + reference.pausedAt = pause.pausedAt + saveAndNotify("park \(taskId)") + return reference.pause + } + + public func resume(taskId: String) { + guard + let tasks = fetchGlobalQueueModel()?.tasks, + let reference = tasks.first(where: { $0.taskID == taskId }), + let scope = reference.pauseScopeValue + else { return } + + if scope == .account { + tasks.filter { $0.pauseScopeValue == .account }.forEach { $0.clearPause() } + } else { + reference.clearPause() + } + saveAndNotify("resume \(taskId)") + } + + public func resumeAllPaused() { + let paused = fetchGlobalQueueModel()?.tasks.filter { $0.pauseScope != nil } ?? [] + guard !paused.isEmpty else { return } + + paused.forEach { $0.clearPause() } + saveAndNotify("resume all paused tasks") + } + + public func setSentryEventId(_ eventId: String, forTask taskId: String) { + guard + let reference = fetchGlobalQueueModel()?.tasks.first(where: { $0.taskID == taskId }) + else { return } + + reference.sentryEventId = eventId + saveAndNotify("record the report of \(taskId)") + } + + private func clearInFlight(_ taskId: String) { + inFlightTaskIDs = inFlightTaskIDs.filter { $0.value != taskId } + } + + private func saveAndNotify(_ action: String) { + do { + try modelContext.save() + } catch { + Self.logger.error("Failed to persist \(action): \(error)") + } + tasksDataManager.notifyTasksChanged(context: modelContext) + } + public func pop(_ task: QueuedSyncTask) { + clearInFlight(task.id) guard let tasksContainer = fetchGlobalQueueModel() else { return } let context = modelContext @@ -112,7 +229,7 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { context.delete(reference) } - // Removal happens ONLY here (getNextTask is a peek): a silently-failed save leaves the + // Removal happens ONLY here (getNextTask never removes): a silently-failed save leaves the // reference behind and the worker re-runs the same task forever. Retry once after a // rollback, then surface loudly. do { @@ -218,18 +335,21 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { } /// Merge the new task into an equivalent queued one when possible, so the queue - /// doesn't accumulate redundant work. The head of the queue is never a merge target: - /// its parameter snapshot may already have been read by `getNextTask`, so mutations - /// would be silently dropped when the running task finishes and gets deleted. + /// doesn't accumulate redundant work. The running task is never a merge target: its + /// parameter snapshot was already read by `getNextTask`, so mutations would be silently + /// dropped when it finishes and gets deleted. private func coalesceTaskIfPossible( jobType: SyncJobType, queueKey: String, parameters: [String: Any], tasksContainer: SyncQueueContainer ) -> Bool { - let queuedReferences = tasksContainer.orderedTasks(for: queueKey) - /// Skip the head of the queue when looking for a merge target - let mergeableReferences = queuedReferences.dropFirst() + /// Parked tasks are never merge targets (new work would wait behind their failure), + /// nor is the running one: its parameters were already read. It used to be the lane's + /// first row, but a Retry can now put a resumed task ahead of it, so it's excluded by id. + let mergeableReferences = tasksContainer.orderedTasks(for: queueKey).filter { + $0.pauseScope == nil && $0.taskID != inFlightTaskIDs[queueKey] + } switch jobType { case .matchUuid: @@ -313,7 +433,8 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { jobType: task.jobType, parameters: [:], uuid: task.uuid, - relativePath: task.relativePath + relativePath: task.relativePath, + pause: task.pause ) } } @@ -452,6 +573,7 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { } public func clearAll(in queueKey: String) throws { + inFlightTaskIDs[queueKey] = nil guard let tasksContainer = fetchGlobalQueueModel() else { return } let context = modelContext @@ -472,6 +594,34 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { } public func clearAll() throws { + inFlightTaskIDs.removeAll() try tasksDataManager.deleteAllTasks(with: modelContext) } } + +extension QueuedTaskReferenceModel { + var pauseScopeValue: TaskPauseScope? { + pauseScope.flatMap(TaskPauseScope.init(rawValue:)) + } + + var pause: TaskPause? { + guard let scope = pauseScopeValue else { return nil } + return TaskPause( + scope: scope, + errorCode: errorCode ?? "", + message: errorMessage ?? "", + httpStatus: httpStatus, + pausedAt: pausedAt ?? Date(), + sentryEventId: sentryEventId + ) + } + + /// Back to pending. `sentryEventId` stays, so a re-park isn't reported twice. + func clearPause() { + pauseScope = nil + errorCode = nil + errorMessage = nil + httpStatus = nil + pausedAt = nil + } +} diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index fddfbf041..cb0631123 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -24,6 +24,7 @@ public protocol SyncQueueServiceProtocol { func setup( libraryService: LibrarySyncProtocol, getAccessLevel: @escaping () -> AccessLevel, + verifySyncEntitlement: @escaping () async -> Bool?, tasksDataManager: TasksDataManager, networkClient: NetworkClientProtocol, dataManager: DataManager @@ -55,6 +56,12 @@ public protocol SyncQueueServiceProtocol { /// them (a lapsed account's tasks would otherwise be rejected by the server forever); /// on wakes them. func setServerLanesEnabled(_ enabled: Bool) + + /// The user's Retry on a parked task: back to pending, and its lane wakes + func retryPausedTask(id: String) + + /// Remembers the Sentry event that reported a pause, so it's never reported twice + func recordPauseReport(eventId: String, forTask taskId: String) } public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { @@ -83,6 +90,12 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { /// before SyncService is set up, and a lapsed account's persisted tasks must never /// reach the server. Guarded by `stateLock`, together with `activeQueueKeys`. private var _serverLanesEnabled = false + /// Whether coded failures park (kept, visible, retryable) or are dropped. Off on the + /// watch, which has no Queued Tasks screen to show or retry them from. Set before `setup`. + public var parkingEnabled = true + /// Fresh RevenueCat read of the sync entitlement (nil = the check failed), for an + /// account-level rejection. Its update also drives the lapse path when inactive. + var verifySyncEntitlement: (() async -> Bool?)! private let stateLock = NSLock() private let policyLock = NSLock() private var disposeBag = Set() @@ -120,12 +133,14 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { public func setup( libraryService: LibrarySyncProtocol, getAccessLevel: @escaping () -> AccessLevel, + verifySyncEntitlement: @escaping () async -> Bool?, tasksDataManager: TasksDataManager, networkClient: NetworkClientProtocol, dataManager: DataManager ) { self.libraryService = libraryService self.getAccessLevel = getAccessLevel + self.verifySyncEntitlement = verifySyncEntitlement self.networkClient = networkClient self.dataManager = dataManager self.taskContainer = SyncQueueRepository(tasksDataManager: tasksDataManager) @@ -137,7 +152,9 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { // persisted upload may run — waking workers first only worked because wakeUpWorkers // happens to suspend on the repository actor before any pop updateAccessPolicy(getAccessLevel()) - wakeUpWorkers() + // The one automatic retry of parked tasks: a server-side fix (or a fixed app build) + // gets its chance on the next launch, without retrying anything in between + wakeUpWorkers(resumingPausedTasks: true) } /// Ownership norm (same as SyncService): the service re-derives its own per-job @@ -193,9 +210,12 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } /// Call this when the app wakes up, or when a new task is added to the database - func wakeUpWorkers() { + func wakeUpWorkers(resumingPausedTasks: Bool = false) { // Get all unique queue keys that currently have pending tasks Task { + if resumingPausedTasks { + await taskContainer.resumeAllPaused() + } // Now you can safely await the actor! let pendingKeys = await taskContainer.getAllQueueKeys() @@ -228,10 +248,6 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { return tasksDataManager.observeQueueCounts() } - private static func isServerLane(_ queueKey: String) -> Bool { - queueKey == TaskQueueKey.sync || queueKey == TaskQueueKey.uploadFile - } - public var serverLanesEnabled: Bool { stateLock.withLock { _serverLanesEnabled } } @@ -250,7 +266,7 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { private func enqueueNextTask(for queueKey: String) async { // Checked before every pop, not just at wake-up, so a worker already looping when // sync turns off stops after its current task instead of draining the lane - if Self.isServerLane(queueKey) { + if TaskQueueKey.isServerLane(queueKey) { let retired = stateLock.withLock { guard !_serverLanesEnabled else { return false } activeQueueKeys.remove(queueKey) @@ -269,7 +285,9 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } // Re-check after retiring: a task stored between the empty fetch and the // removal above would have seen an "active" worker and skipped waking one. - if await taskContainer.getNextTask(for: queueKey) != nil { + // A peek: getNextTask would mark a task in flight while another worker may be + // running a different one + if await taskContainer.hasRunnableTask(for: queueKey) { await startWorkerLoop(for: queueKey) } return @@ -315,8 +333,8 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { await self.handleFinishedOperation(operation, task: nextTask) await self.taskContainer.pop(nextTask) } else { - if let syncOperation = operation as? LibraryItemSyncOperation, - let error = syncOperation.error { + let error = (operation as? LibraryItemSyncOperation)?.error + if let error { Self.logger.error("Sync task failed: \(error.localizedDescription)") await MainActor.run { self.lastSyncError = SyncErrorInfo( @@ -327,7 +345,7 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { ) } } - try? await Task.sleep(for: .seconds(5)) + await self.handleFailedOperation(error: error, task: nextTask) } // 3. AWAIT the recursive call @@ -345,6 +363,100 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { operationQueue.addOperation(operation) } + /// Retry (the usual 5 s), park, drop, or confirm the account, per `SyncFailurePolicy`. + /// Returns once the next pop may happen. + private func handleFailedOperation(error: Error?, task: QueuedSyncTask) async { + let action = SyncFailurePolicy.action( + for: error, + jobType: task.jobType, + parkingEnabled: parkingEnabled + ) + guard + action != .retry, + let error = error as? BookPlayerError, + case .networkErrorWithCode(let message, let code, let status) = error + else { + try? await Task.sleep(for: .seconds(5)) + return + } + + switch action { + case .retry: + break + case .drop: + Self.logger.error("Dropping \(task.jobType.rawValue) task \(task.id): the server answered \(code)") + await taskContainer.pop(task) + case .park(let scope): + await park(task, scope: scope, code: code, message: message, status: status) + case .verifyAccount: + // Every server lane holds from here: the rejection is about the account, so the + // next task would get the same answer + guard + let pause = await park(task, scope: .account, code: code, message: message, status: status, report: false) + else { return } + // Off the worker: the lanes already wait on the pause + Task { + // Inactive: the fetch's account update runs the lapse path, which clears these + // lanes. Active, or the check failed: the server disagrees with RevenueCat, so the + // tasks stay held (launch retry, Retry) and it's reported. + guard await self.verifySyncEntitlement() != false else { return } + self.reportPause(of: task, pause: pause) + } + } + } + + @discardableResult + private func park( + _ task: QueuedSyncTask, + scope: TaskPauseScope, + code: String, + message: String, + status: Int, + report: Bool = true + ) async -> TaskPause? { + Self.logger.error("Pausing \(task.jobType.rawValue) task \(task.id) (\(scope.rawValue)): the server answered \(code)") + guard + let pause = await taskContainer.park( + taskId: task.id, + pause: TaskPause(scope: scope, errorCode: code, message: message, httpStatus: status, pausedAt: Date()) + ) + else { return nil } + if report { + reportPause(of: task, pause: pause) + } + return pause + } + + /// Once per task: a re-park after a launch retry or Retry was already reported + private func reportPause(of task: QueuedSyncTask, pause: TaskPause) { + guard pause.sentryEventId == nil else { return } + let parked = QueuedSyncTask( + id: task.id, + queueKey: task.queueKey, + jobType: task.jobType, + parameters: [:], + uuid: task.uuid, + relativePath: task.relativePath, + pause: pause + ) + Task { @MainActor in + NotificationCenter.default.post(name: .syncTaskPaused, object: parked) + } + } + + public func retryPausedTask(id: String) { + Task { + await taskContainer.resume(taskId: id) + wakeUpWorkers() + } + } + + public func recordPauseReport(eventId: String, forTask taskId: String) { + Task { + await taskContainer.setSentryEventId(eventId, forTask: taskId) + } + } + public func getOrderedQueuedJobs(activeTaskIDs: Set) async -> [QueuedSyncTask] { return await taskContainer.getOrderedTasks(activeTaskIDs: activeTaskIDs) } diff --git a/Shared/Services/SyncQueue/TaskPause.swift b/Shared/Services/SyncQueue/TaskPause.swift new file mode 100644 index 000000000..65a51d0fe --- /dev/null +++ b/Shared/Services/SyncQueue/TaskPause.swift @@ -0,0 +1,101 @@ +// +// TaskPause.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +/// How much of the queue a parked task holds back +public enum TaskPauseScope: String { + /// Only this task waits; the rest of its lane keeps running (leaf tasks nothing + /// later depends on) + case task + /// The whole lane waits behind it: running later tasks would build on a change the + /// server never got (structural sync-lane tasks) + case lane + /// Every BookPlayer-server lane waits: the server rejected the account itself + case account +} + +/// Why a task stopped: the server's coded answer, kept for the Queued Tasks row and Report +public struct TaskPause: Equatable { + public let scope: TaskPauseScope + public let errorCode: String + /// The server's message. Shown to the user and attached to Report, never sent to Sentry + /// (it embeds file names) + public let message: String + public let httpStatus: Int? + public let pausedAt: Date + public let sentryEventId: String? + + public init( + scope: TaskPauseScope, + errorCode: String, + message: String, + httpStatus: Int?, + pausedAt: Date, + sentryEventId: String? = nil + ) { + self.scope = scope + self.errorCode = errorCode + self.message = message + self.httpStatus = httpStatus + self.pausedAt = pausedAt + self.sentryEventId = sentryEventId + } +} + +/// What the queue does with a failed task +public enum SyncFailureAction: Equatable { + /// Uncoded or transient: retry after the usual delay, as always + case retry + /// Stop the task with this scope until a launch retry or the user's Retry + case park(TaskPauseScope) + /// Coded failure where nobody can see a paused task (watch): log and drop it + case drop + /// The server rejected the account: confirm against RevenueCat, holding every + /// server lane meanwhile + case verifyAccount +} + +public enum SyncFailurePolicy { + /// Codes about the account, not the task + static let accountCodes: Set = ["not_subscribed", "tier_required"] + + /// Only a coded 4xx parks: a code means the request can never succeed as sent. Anything + /// uncoded keeps retrying, so a new server failure mode never strands tasks. + public static func action( + for error: Error?, + jobType: SyncJobType, + parkingEnabled: Bool + ) -> SyncFailureAction { + guard + let error = error as? BookPlayerError, + case .networkErrorWithCode(_, let code, _) = error + else { return .retry } + + // Media-server pushes never hit the BookPlayer server; their own failure handling + // stands, and an account pause must never land on a provider lane + if jobType == .externalUpdate { return .retry } + + if accountCodes.contains(code) { return .verifyAccount } + + guard parkingEnabled else { return .drop } + return .park(scope(for: jobType)) + } + + /// Leaf tasks park alone: nothing later in the queue depends on them. Every other + /// sync-lane task changes structure (what exists, where, under which uuid) that later + /// tasks build on, so the lane stops behind it. + public static func scope(for jobType: SyncJobType) -> TaskPauseScope { + switch jobType { + case .update, .uploadArtwork, .uploadFile, .externalUpdate: + return .task + case .upload, .move, .renameFolder, .delete, .shallowDelete, .setBookmark, .deleteBookmark, + .matchUuid, .externalResource, .externalResourceToDownload, .deleteExternalResource: + return .lane + } + } +} diff --git a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift index eb21405b0..e71cfc73c 100644 --- a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift +++ b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift @@ -312,6 +312,16 @@ public enum SchemaV3: VersionedSchema { public var uuid: String = "" public var relativePath: String = "" public var container: SyncQueueContainer? + /// Parking: set when the server answered with a coded error the task can never get + /// past as sent (`TaskPauseScope` raw value); nil = pending. The rest describes it. + public var pauseScope: String? + public var errorCode: String? + public var errorMessage: String? + public var httpStatus: Int? + public var pausedAt: Date? + /// The Sentry event reporting this pause, so a re-park (launch retry, Retry) doesn't + /// report it again; kept across resumes + public var sentryEventId: String? public init( id: String = UUID().uuidString, diff --git a/Shared/SwiftData/Models/SyncJobType.swift b/Shared/SwiftData/Models/SyncJobType.swift index 0f15b5358..60d9cd782 100644 --- a/Shared/SwiftData/Models/SyncJobType.swift +++ b/Shared/SwiftData/Models/SyncJobType.swift @@ -34,4 +34,10 @@ public enum SyncJobType: String, CaseIterable, Codable { public enum TaskQueueKey { public static let sync = "sync" public static let uploadFile = "uploadFile" + + /// The lanes that talk to the BookPlayer server: gated on the sync entitlement, and held + /// by an account-level pause + public static func isServerLane(_ queueKey: String) -> Bool { + queueKey == sync || queueKey == uploadFile + } } diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index f1bd0f1dd..cb860c1b9 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -98,13 +98,36 @@ public final class TasksDataManager: BPLogger { do { let tasks = try context.fetch(descriptor).first?.tasks ?? [] - let counts = Dictionary(grouping: tasks, by: { $0.queueKey }).mapValues(\.count) - queueCountsSubject.send(QueueCounts(byQueueKey: counts)) + queueCountsSubject.send(Self.queueCounts(for: tasks)) } catch { queueCountsSubject.send(QueueCounts()) } } + /// Same blocking rules as `SyncQueueRepository.getNextTask` + static func queueCounts(for tasks: [QueuedTaskReferenceModel]) -> QueueCounts { + let lanes = Dictionary(grouping: tasks, by: { $0.queueKey }) + let accountPaused = tasks.contains { $0.pauseScopeValue == .account } + var blocked = Set() + for (queueKey, laneTasks) in lanes { + let head = laneTasks + .sorted { $0.position < $1.position } + .first { $0.pauseScopeValue != .task } + if (accountPaused && TaskQueueKey.isServerLane(queueKey)) + || head?.pauseScopeValue == .lane + || head?.pauseScopeValue == .account { + blocked.insert(queueKey) + } + } + return QueueCounts( + byQueueKey: lanes.mapValues(\.count), + pausedByQueueKey: lanes + .mapValues { $0.filter { $0.pauseScope != nil }.count } + .filter { $0.value > 0 }, + blockedQueueKeys: blocked + ) + } + public func deleteAllTasks(with context: ModelContext) throws { // Task payload models are standalone (no relationships), so a store-level // batch delete is safe and fast. From 1028e1003300418e1359bc058a0ba262d282db0b Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 27 Sep 2026 00:41:52 -0500 Subject: [PATCH 160/172] feat(sync): show, retry and report parked tasks A parked task was invisible: the queue just stopped. Now: - Queued Tasks: a parked row shows the server's message with Retry and Report; a blocked lane's header turns red. Profile reads "Sync paused: N need attention", and a pull-to-refresh blocked by a parked task says sync is paused. - Report mails support (or, without Mail, shares) a text file with the paused task, every queued task and its state, and the local library tree with uuids, so support can compare what the device has against the server's records. - SyncPauseReporter sends one Sentry warning per parked task, grouped by job type and error code, carrying only job type, code, status, lane, scope and the item uuid. Never the server message, a path, or breadcrumbs: our API's request breadcrumbs keep query strings that carry relativePath. Nothing is recorded as reported when crash reports are off, and the reporter doesn't run in the unit-test host. The debug file's library tree moves into LibraryTreeRepresentation, shared with the report; its output is unchanged. --- BookPlayer.xcodeproj/project.pbxproj | 12 + BookPlayer/Base.lproj/Localizable.strings | 6 + .../ItemList/ItemListView+Alerts.swift | 6 +- .../Library/ItemList/ItemListView.swift | 9 +- .../ItemList/Models/ItemListAlert.swift | 4 +- .../Profile/ProfileSyncTasksSectionView.swift | 23 +- .../Profile/QueuedSyncTaskRowView.swift | 75 ++++-- .../Profile/Views/QueuedTasksView.swift | 85 +++++- .../Profile/Views/SyncPauseReport.swift | 128 +++++++++ BookPlayer/Services/SyncPauseReporter.swift | 83 ++++++ .../Sections/DebugFileTransferable.swift | 121 +++++---- BookPlayer/Utils/AppServices.swift | 7 + BookPlayer/en.lproj/Localizable.strings | 6 + BookPlayer/en.lproj/Localizable.stringsdict | 16 ++ .../Services/SyncPauseReportingTests.swift | 246 ++++++++++++++++++ CLAUDE.md | 8 +- Shared/Services/LibraryService.swift | 18 ++ 17 files changed, 767 insertions(+), 86 deletions(-) create mode 100644 BookPlayer/Profile/Profile/Views/SyncPauseReport.swift create mode 100644 BookPlayer/Services/SyncPauseReporter.swift create mode 100644 BookPlayerTests/Services/SyncPauseReportingTests.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 214badd38..ecacf2076 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -563,6 +563,7 @@ 63B4A3C42E93749300784A22 /* DynamicAccessibilityLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B4A3C32E93749300784A22 /* DynamicAccessibilityLabel.swift */; }; 63B4A3C62E93858C00784A22 /* PlayerControlsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */; }; 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */; }; + F015116186D7F12201CDB4C0 /* SyncPauseReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 185FB83C0CF083AC102D8753 /* SyncPauseReporter.swift */; }; D071ABD44684949C58C7D8D0 /* PromptSurfaceArbiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */; }; 9AB6B44F84D195FCCF7A4F9F /* PromptSurfaceArbiterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D4833D717C7B97F7B5DFDC5 /* PromptSurfaceArbiterTests.swift */; }; C0C40794A90EEED394B4C957 /* PlaybackAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3B31C1E62A380C33C60FF9B /* PlaybackAlerts.swift */; }; @@ -712,6 +713,7 @@ 9911FBC82F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */; }; 9911FBD72F7CACEC00DC9A2B /* QueuedTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */; }; 32F59104BFC8DDAA7DBEC934 /* QueuedTaskDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */; }; + 02C5C304687E934E42ABF54C /* SyncPauseReport.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCC4219B7DA1CD232AE12888 /* SyncPauseReport.swift */; }; 992D6E132FA98B4D0091849F /* AudiobookShelfConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */; }; 992D6E142FA98B4D0091849F /* AudiobookShelfConnectionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879C2EC7722400DF442B /* AudiobookShelfConnectionData.swift */; }; 992D6E152FA98B4D0091849F /* AudiobookShelfConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6384879D2EC7722400DF442B /* AudiobookShelfConnectionService.swift */; }; @@ -967,6 +969,7 @@ C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */; }; CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */; }; + 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */; }; 786041B335FF61901E55666C /* TasksDataManagerStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */; }; CCC7E1CC127610C3687B8A50 /* SortPreferencesResolving.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */; }; D080B0A77D9844C3A0737170 /* IntegrationConnectionFormViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FB91B577BC77F45EDB2AAAA /* IntegrationConnectionFormViewModel.swift */; }; @@ -1674,6 +1677,7 @@ 63B4A3C32E93749300784A22 /* DynamicAccessibilityLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicAccessibilityLabel.swift; sourceTree = ""; }; 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerControlsView.swift; sourceTree = ""; }; 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListSyncRefreshService.swift; sourceTree = ""; }; + 185FB83C0CF083AC102D8753 /* SyncPauseReporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncPauseReporter.swift; sourceTree = ""; }; 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptSurfaceArbiter.swift; sourceTree = ""; }; 3D4833D717C7B97F7B5DFDC5 /* PromptSurfaceArbiterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptSurfaceArbiterTests.swift; sourceTree = ""; }; F3B31C1E62A380C33C60FF9B /* PlaybackAlerts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaybackAlerts.swift; sourceTree = ""; }; @@ -1792,6 +1796,7 @@ 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncableExternalResource.swift; sourceTree = ""; }; 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTasksView.swift; sourceTree = ""; }; 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTaskDisplay.swift; sourceTree = ""; }; + FCC4219B7DA1CD232AE12888 /* SyncPauseReport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncPauseReport.swift; sourceTree = ""; }; 99329DB62F3AA8F6003F8E73 /* PlayControlsRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayControlsRowView.swift; sourceTree = ""; }; 99329DBA2F3AAA61003F8E73 /* ListeningProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListeningProgressView.swift; sourceTree = ""; }; 99329DBC2F3AAAB4003F8E73 /* NavigationRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationRowView.swift; sourceTree = ""; }; @@ -1993,6 +1998,7 @@ FEEDBABE0000000000000001 /* SharedWidgetStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStore.swift; sourceTree = ""; }; FEEDBABE0000000000000004 /* SharedWidgetStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStoreTests.swift; sourceTree = ""; }; FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncQueueTests.swift; sourceTree = ""; }; + C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncPauseReportingTests.swift; sourceTree = ""; }; B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TasksDataManagerStoreTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -3355,6 +3361,7 @@ 4193E201243A91AE004D6A82 /* ActionParserService.swift */, 9F82DF9B27DFE46B001B0EA8 /* PhoneWatchConnectivityService.swift */, 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */, + 185FB83C0CF083AC102D8753 /* SyncPauseReporter.swift */, 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */, F05D3B1199FC741AB2FDED67 /* PlaybackFailure.swift */, 8A9D0D2F2CD0E06F007A924D /* SingleFileDownloadService.swift */, @@ -3380,6 +3387,7 @@ A11C418B028982CF431C589F /* LibraryServiceReloadChaptersTests.swift */, 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */, FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */, + C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */, B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */, ); path = Services; @@ -3723,6 +3731,7 @@ children = ( 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */, 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */, + FCC4219B7DA1CD232AE12888 /* SyncPauseReport.swift */, 9F5F13452977A06300F061A0 /* ProfileCardView.swift */, ); path = Views; @@ -5025,6 +5034,7 @@ 4160A0A123F304530039166B /* LocalizableLabel.swift in Sources */, 9911FBD72F7CACEC00DC9A2B /* QueuedTasksView.swift in Sources */, 32F59104BFC8DDAA7DBEC934 /* QueuedTaskDisplay.swift in Sources */, + 02C5C304687E934E42ABF54C /* SyncPauseReport.swift in Sources */, 4137BBCC272DAF2E009ED9FE /* MVVMControllerProtocol.swift in Sources */, 631B360C2ABE8ACC001F4C1C /* BPModalOnlyPresentationFlow.swift in Sources */, 99B367FC2F5108BF00C38F7F /* MediaActionRow.swift in Sources */, @@ -5190,6 +5200,7 @@ 99329DB72F3AA8F6003F8E73 /* PlayControlsRowView.swift in Sources */, 416AAC3323F51031005AD04F /* LocalizableButton.swift in Sources */, 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */, + F015116186D7F12201CDB4C0 /* SyncPauseReporter.swift in Sources */, D071ABD44684949C58C7D8D0 /* PromptSurfaceArbiter.swift in Sources */, 5823F9DE917AE83D3C4DC04E /* PlaybackFailure.swift in Sources */, 416A297D2568671F00605395 /* AVPlayer+BookPlayer.swift in Sources */, @@ -5298,6 +5309,7 @@ 5A9506FC8DAB858289E0EF89 /* IntegrationServerAddressTests.swift in Sources */, 3F058A74415A3AF6C17DA8F4 /* IntegrationHostResolverTests.swift in Sources */, CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */, + 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */, 786041B335FF61901E55666C /* TasksDataManagerStoreTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 7236ce81d..919b02f46 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -559,3 +559,9 @@ We're working hard on providing a seamless experience, if possible, please conta "integration_error_missing_connection" = "This book streams from your media server. Connect it in Settings to download or play it."; "carplay_playback_failed_message" = "Can't play this book. Open BookPlayer on your phone for details."; "carplay_missing_connection_message" = "This book streams from a media server that isn't set up on this device. Open BookPlayer on your phone to connect it."; +"sync_paused_lane_title" = "Paused: a task needs your attention"; +"sync_task_retry_button" = "Retry"; +"sync_task_report_button" = "Report"; +"sync_task_paused_voiceover" = "Paused: %@"; +"sync_paused_caption" = "Sync paused: %d need attention"; +"sync_paused_alert_title" = "Sync is paused until a queued task is resolved"; diff --git a/BookPlayer/Library/ItemList/ItemListView+Alerts.swift b/BookPlayer/Library/ItemList/ItemListView+Alerts.swift index 18a3add9a..3b186cc72 100644 --- a/BookPlayer/Library/ItemList/ItemListView+Alerts.swift +++ b/BookPlayer/Library/ItemList/ItemListView+Alerts.swift @@ -217,8 +217,10 @@ extension ItemListView { func alertTitle(for alert: ItemListAlert) -> String { switch alert { - case .queuedTasks: - return "sync_tasks_inprogress_alert_title".localized + case .queuedTasks(let paused): + return paused + ? "sync_paused_alert_title".localized + : "sync_tasks_inprogress_alert_title".localized case .importCompletion(let parameters): let filesCount = parameters.itemIdentifiers.count return String.localizedStringWithFormat("import_alert_title".localized, filesCount) diff --git a/BookPlayer/Library/ItemList/ItemListView.swift b/BookPlayer/Library/ItemList/ItemListView.swift index 20a2965fe..54be4fe92 100644 --- a/BookPlayer/Library/ItemList/ItemListView.swift +++ b/BookPlayer/Library/ItemList/ItemListView.swift @@ -30,6 +30,7 @@ struct ItemListView: View { @Environment(\.libraryService) var libraryService @Environment(\.accountService) private var accountService @Environment(\.syncService) var syncService + @Environment(\.syncQueueService) private var syncQueueService @Environment(\.hardcoverService) var hardcoverService @Environment(\.playerLoaderService) private var playerLoaderService @Environment(\.preferencesService) var preferencesService @@ -41,6 +42,9 @@ struct ItemListView: View { @EnvironmentObject private var importManager: ImportManager @EnvironmentObject private var theme: ThemeViewModel + /// A parked task in the sync lane: the blocked-refresh alert says sync is paused + @State private var syncLanePaused = false + init(initModel: @escaping () -> ItemListViewModel) { self._model = .init(wrappedValue: initModel()) } @@ -191,7 +195,7 @@ struct ItemListView: View { do { try await model.refreshListState() } catch { - self.activeAlert = .queuedTasks + self.activeAlert = .queuedTasks(paused: syncLanePaused) } } .environment(\.playingItemParentPath, playingItemParentPath) @@ -199,6 +203,9 @@ struct ItemListView: View { } } } + .onReceive(syncQueueService.observeQueueCounts()) { counts in + syncLanePaused = counts.pausedCount(in: TaskQueueKey.sync) > 0 + } .onReceive( model.singleFileDownloadService.eventsPublisher .throttle(for: .seconds(1), scheduler: DispatchQueue.main, latest: true) diff --git a/BookPlayer/Library/ItemList/Models/ItemListAlert.swift b/BookPlayer/Library/ItemList/Models/ItemListAlert.swift index 2272f2f05..acdf9448f 100644 --- a/BookPlayer/Library/ItemList/Models/ItemListAlert.swift +++ b/BookPlayer/Library/ItemList/Models/ItemListAlert.swift @@ -11,7 +11,9 @@ import Foundation /// Represents all possible alert types in ItemListView enum ItemListAlert: Identifiable, Equatable { - case queuedTasks + /// A refresh is blocked by queued sync tasks; `paused` when one of them is parked and + /// needs the user (Retry or Report) rather than just time + case queuedTasks(paused: Bool) case importCompletion(ImportOperationState.AlertParameters) case moveOptions case createFolder(type: SimpleItemType, placeholder: String) diff --git a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift index 2d370d9c0..bae671700 100644 --- a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift @@ -14,6 +14,8 @@ struct ProfileSyncTasksSectionView: View { @State private var statusMessage: String = "" /// Every lane, summed by the engine that owns them all @State private var queuedCount = 0 + /// Parked tasks across every lane: they need the user, so they replace the sync status + @State private var pausedCount = 0 private var buttonText: String { String(format: "queued_sync_tasks_title".localized, queuedCount) @@ -28,15 +30,24 @@ struct ProfileSyncTasksSectionView: View { Text(buttonText) .bpFont(.body) .foregroundStyle(theme.linkColor) - Text(statusMessage) - .bpFont(.caption) - .foregroundStyle(theme.secondaryColor) + if pausedCount > 0 { + Text(String.localizedStringWithFormat("sync_paused_caption".localized, pausedCount)) + .bpFont(.caption) + .foregroundStyle(.red) + } else { + Text(statusMessage) + .bpFont(.caption) + .foregroundStyle(theme.secondaryColor) + } } } .onReceive(syncQueueService.observeQueueCounts()) { counts in - guard queuedCount != counts.total else { return } - - queuedCount = counts.total + if queuedCount != counts.total { + queuedCount = counts.total + } + if pausedCount != counts.totalPaused { + pausedCount = counts.totalPaused + } } .onReceive( NotificationCenter.default.publisher(for: .uploadProgressUpdated) diff --git a/BookPlayer/Profile/Profile/QueuedSyncTaskRowView.swift b/BookPlayer/Profile/Profile/QueuedSyncTaskRowView.swift index 66380c7c1..b5ab81f26 100644 --- a/BookPlayer/Profile/Profile/QueuedSyncTaskRowView.swift +++ b/BookPlayer/Profile/Profile/QueuedSyncTaskRowView.swift @@ -17,25 +17,38 @@ struct QueuedSyncTaskRowView: View { let progressKey: String var initialProgress: Double var isUpload: Bool + /// Set while the task is parked: the row shows why, with Retry and Report + var pause: TaskPause? = nil + var onRetry: () -> Void = {} + var onReport: () -> Void = {} @EnvironmentObject var themeViewModel: ThemeViewModel var body: some View { - HStack { - Image(systemName: imageName) - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 20, height: 20) - .foregroundStyle(themeViewModel.secondaryColor) - .padding([.trailing], 5) - Text(title) - .bpFont(.body) - .foregroundStyle(themeViewModel.primaryColor) - .frame(maxWidth: .infinity, alignment: .leading) - CircularProgressView( - progress: progress, - isHighlighted: true - ) + VStack(alignment: .leading, spacing: Spacing.S2) { + HStack { + Image(systemName: pause == nil ? imageName : "exclamationmark.triangle.fill") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 20, height: 20) + .foregroundStyle(pause == nil ? themeViewModel.secondaryColor : .red) + .padding([.trailing], 5) + .accessibilityHidden(true) + Text(title) + .bpFont(.body) + .foregroundStyle(themeViewModel.primaryColor) + .frame(maxWidth: .infinity, alignment: .leading) + if pause == nil { + CircularProgressView( + progress: progress, + isHighlighted: true + ) + } + } + + if let pause { + pausedDetails(pause) + } } .padding([.vertical], 3) .onAppear { @@ -57,6 +70,38 @@ struct QueuedSyncTaskRowView: View { } } +extension QueuedSyncTaskRowView { + @ViewBuilder + private func pausedDetails(_ pause: TaskPause) -> some View { + Text(pause.message) + .bpFont(.caption) + .foregroundStyle(.red) + .accessibilityLabel(String(format: "sync_task_paused_voiceover".localized, pause.message)) + + HStack(spacing: Spacing.S) { + pausedAction("sync_task_retry_button", action: onRetry) + pausedAction("sync_task_report_button", action: onReport) + } + .bpFont(.subheadline) + .foregroundStyle(themeViewModel.linkColor) + } +} + +extension QueuedSyncTaskRowView { + /// Borderless: plain buttons inside a List row would make the whole row one tap target. + /// The label is framed to the 44×44 pt minimum, and the hint names the item for VoiceOver + /// when several rows are parked. + private func pausedAction(_ titleKey: LocalizedStringKey, action: @escaping () -> Void) -> some View { + Button(action: action) { + Text(titleKey) + .frame(minWidth: 44, minHeight: 44) + .contentShape(Rectangle()) + } + .buttonStyle(.borderless) + .accessibilityHint(title) + } +} + struct QueuedSyncTaskRowView_Previews: PreviewProvider { static var previews: some View { QueuedSyncTaskRowView( diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index 2befa594c..81ae86c45 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -7,12 +7,13 @@ // import BookPlayerKit +import MessageUI import SwiftUI /// Every queued task on one screen: a collapsible section per lane (sync first, then the /// rest alphabetically), fed by the engine that owns all of them. Pushed from Profile and /// presented as a sheet from the library list when a refresh is blocked by queued jobs. -struct QueuedTasksView: View { +struct QueuedTasksView: View, BPLogger { @AppStorage(Constants.UserDefaults.allowCellularData) private var allowsCellularData: Bool = false @State private var tasks = [QueuedSyncTask]() @@ -21,9 +22,16 @@ struct QueuedTasksView: View { @State private var collapsedLanes = Set() @State private var showInfoAlert = false @State private var networkMonitor = NetworkMonitor() + /// Report's destination: Mail when it's set up, the share sheet otherwise + @State private var reportMail: SyncPauseReportMail? + @State private var reportShare: SyncPauseReportShare? + /// A second tap while the report builds (or its sheet is up) is ignored + @State private var isBuildingReport = false var monitor = SyncQueueProgressMonitor.shared @Environment(\.syncQueueService) private var syncQueueService + @Environment(\.libraryService) private var libraryService + @Environment(\.accountService) private var accountService @EnvironmentObject private var theme: ThemeViewModel private var sections: [QueuedTaskSection] { tasks.groupedByLane() } @@ -52,7 +60,10 @@ struct QueuedTasksView: View { title: .constant(task.displayTitle), progressKey: task.progressKey, initialProgress: monitor.getTaskProgress(taskID: task.id), - isUpload: task.tracksByteProgress + isUpload: task.tracksByteProgress, + pause: task.pause, + onRetry: { syncQueueService.retryPausedTask(id: task.id) }, + onReport: { report(task) } ) } } label: { @@ -85,6 +96,23 @@ struct QueuedTasksView: View { .foregroundStyle(theme.linkColor) } } + .sheet(item: $reportMail) { mail in + SettingsMailView( + recipients: [SyncPauseReport.supportEmail], + subject: mail.report.subject, + messageBody: mail.report.body, + isHTML: true, + attachmentData: AttachmentData( + data: Data(mail.report.text.utf8), + mimeType: "text/plain", + fileName: SyncPauseReport.fileName + ) + ) + } + .sheet(item: $reportShare) { share in + ActivityView(activityItems: [share.fileURL]) + .presentationDetents([.medium, .large]) + } // Replays the current snapshot on subscribe, so this is the initial load as well. .onReceive(syncQueueService.observeQueueCounts()) { snapshot in counts = snapshot @@ -93,13 +121,21 @@ struct QueuedTasksView: View { } private func laneHeader(_ queueKey: String) -> some View { - HStack(spacing: Spacing.S1) { - Image(systemName: QueueDisplay.imageName(for: queueKey)) + let isBlocked = counts.isBlocked(queueKey) + return HStack(spacing: Spacing.S1) { + Image(systemName: isBlocked ? "exclamationmark.triangle.fill" : QueueDisplay.imageName(for: queueKey)) .frame(width: 24) - .foregroundStyle(theme.linkColor) - Text(QueueDisplay.name(for: queueKey)) - .bpFont(.headline) - .foregroundStyle(theme.primaryColor) + .foregroundStyle(isBlocked ? .red : theme.linkColor) + VStack(alignment: .leading, spacing: 0) { + Text(QueueDisplay.name(for: queueKey)) + .bpFont(.headline) + .foregroundStyle(theme.primaryColor) + if isBlocked { + Text("sync_paused_lane_title") + .bpFont(.caption) + .foregroundStyle(.red) + } + } Spacer() Text("\(counts.count(in: queueKey))") .bpFont(.subheadline) @@ -158,6 +194,29 @@ struct QueuedTasksView: View { ) } + private func report(_ task: QueuedSyncTask) { + guard !isBuildingReport, reportMail == nil, reportShare == nil else { return } + isBuildingReport = true + Task { @MainActor in + defer { isBuildingReport = false } + let report = await SyncPauseReport.make( + for: task, + syncQueueService: syncQueueService, + libraryService: libraryService, + accessLevel: accountService.accessLevel + ) + if MFMailComposeViewController.canSendMail() { + reportMail = SyncPauseReportMail(report: report) + } else { + do { + reportShare = SyncPauseReportShare(fileURL: try report.writeToTemporaryFile()) + } catch { + Self.logger.error("Couldn't write the sync report: \(error.localizedDescription)") + } + } + } + } + func reloadTasks() { Task { @MainActor in tasks = await syncQueueService.getOrderedQueuedJobs(activeTaskIDs: Set(monitor.activeTasks.keys)) @@ -165,6 +224,16 @@ struct QueuedTasksView: View { } } +private struct SyncPauseReportMail: Identifiable { + let id = UUID() + let report: SyncPauseReport +} + +private struct SyncPauseReportShare: Identifiable { + let id = UUID() + let fileURL: URL +} + // MARK: - Preview // Environment defaults are un-setup() placeholders whose count methods trap (see // CLAUDE.md's DI section) — previews must construct + setup() + inject, same as diff --git a/BookPlayer/Profile/Profile/Views/SyncPauseReport.swift b/BookPlayer/Profile/Profile/Views/SyncPauseReport.swift new file mode 100644 index 000000000..ec4c3a682 --- /dev/null +++ b/BookPlayer/Profile/Profile/Views/SyncPauseReport.swift @@ -0,0 +1,128 @@ +// +// SyncPauseReport.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import DeviceKit +import SwiftUI +import UIKit + +/// What Report sends for a parked task: the task and why it stopped, every queued task +/// with its state, and the local library (paths with uuids), so support can see what the +/// device has and what it's still trying to tell the server. The server side is looked up +/// from its own records, so nothing is fetched here. +struct SyncPauseReport { + static let supportEmail = "support@bookplayer.app" + static let fileName = "bookplayer_sync_report.txt" + + let pausedTask: QueuedSyncTask + let queuedTasks: [QueuedSyncTask] + let library: [(relativePath: String, uuid: String)] + let appVersion: String + let systemVersion: String + let deviceName: String + + var subject: String { + "Sync paused (\(pausedTask.pause?.errorCode ?? "unknown")) - BookPlayer \(appVersion)" + } + + var body: String { + "

Hello,
A sync task in BookPlayer is paused and needs help.


" + } + + var text: String { + var report = "BookPlayer sync report\n" + report += "App: \(appVersion)\n" + report += "Device: \(deviceName) \(systemVersion)\n" + + report += "\n-- Paused task --\n" + report += describe(pausedTask) + if let pause = pausedTask.pause { + report += " Message: \(pause.message)\n" + report += " Paused at: \(pause.pausedAt.ISO8601Format())\n" + report += " Sentry event: \(pause.sentryEventId ?? "none")\n" + } + + report += "\n-- Queued tasks (\(queuedTasks.count)) --\n" + for (index, task) in queuedTasks.enumerated() { + report += "\n[\(index + 1)] " + describe(task) + } + + report += "\n-- Local library (\(library.count)) --\n" + report += LibraryTreeRepresentation.render( + entries: library.map { ($0.relativePath, $0.uuid) }, + remoteIdentifiers: nil + ) + return report + } + + private func describe(_ task: QueuedSyncTask) -> String { + var line = "\(task.jobType.rawValue) · lane \(task.queueKey)\n" + if let pause = task.pause { + let status = pause.httpStatus.map { " \($0)" } ?? "" + line += " Status: paused (\(pause.scope.rawValue)) · \(pause.errorCode)\(status)\n" + } else { + line += " Status: pending\n" + } + line += " Task ID: \(task.id)\n" + line += " Uuid: \(task.uuid)\n" + line += " Path: \(task.relativePath)\n" + return line + } + + /// The report as a named file, for the mail attachment and the share-sheet fallback + func writeToTemporaryFile() throws -> URL { + let url = FileManager.default.temporaryDirectory.appendingPathComponent(Self.fileName) + try Data(text.utf8).write(to: url, options: .atomic) + return url + } + + /// Same version string the support email uses: version-build plus the tier suffix + static func appVersion(accessLevel: AccessLevel) -> String { + let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "0.0.0" + let build = Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "0" + let suffix: String + switch accessLevel { + case .free: + suffix = "" + case .plus: + suffix = "p" + case .pro: + suffix = "c" + case .lite: + suffix = "l" + } + return "\(version)-\(build)\(suffix)" + } + + @MainActor + static func make( + for task: QueuedSyncTask, + syncQueueService: SyncQueueServiceProtocol, + libraryService: LibraryService, + accessLevel: AccessLevel + ) async -> SyncPauseReport { + SyncPauseReport( + pausedTask: task, + queuedTasks: await syncQueueService.getOrderedQueuedJobs(activeTaskIDs: []), + library: libraryService.fetchIdentifiersWithUuids(), + appVersion: appVersion(accessLevel: accessLevel), + systemVersion: "\(UIDevice.current.systemName) \(UIDevice.current.systemVersion)", + deviceName: "\(Device.current)" + ) + } +} + +/// The system share sheet, for sending a report when Mail isn't set up +struct ActivityView: UIViewControllerRepresentable { + let activityItems: [Any] + + func makeUIViewController(context: Context) -> UIActivityViewController { + UIActivityViewController(activityItems: activityItems, applicationActivities: nil) + } + + func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) {} +} diff --git a/BookPlayer/Services/SyncPauseReporter.swift b/BookPlayer/Services/SyncPauseReporter.swift new file mode 100644 index 000000000..577cbc810 --- /dev/null +++ b/BookPlayer/Services/SyncPauseReporter.swift @@ -0,0 +1,83 @@ +// +// SyncPauseReporter.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import Foundation +import Sentry + +/// Reports each parked sync task to Sentry once, so a new failure kind surfaces without +/// waiting for a support email. The event carries only what identifies the failure — job +/// type, error code, HTTP status, lane, pause scope and the item's uuid (to look it up in +/// the server's sync log). Never the server's message or the item's path: both embed file +/// names — and no breadcrumbs, since our own API's request breadcrumbs keep their query +/// strings, which carry `relativePath`. The fingerprint groups one issue per job type and +/// error code. +final class SyncPauseReporter: BPLogger { + private let syncQueueService: SyncQueueServiceProtocol + private let capture: (Event) -> SentryId + /// This session's reports: the event id is written back to the task asynchronously, so a + /// quick re-park (Retry that fails the same way) could otherwise arrive before it lands + private var reportedTaskIds = Set() + private var observer: NSObjectProtocol? + + init( + syncQueueService: SyncQueueServiceProtocol, + capture: @escaping (Event) -> SentryId = { event in + SentrySDK.capture(event: event) { scope in scope.clearBreadcrumbs() } + } + ) { + self.syncQueueService = syncQueueService + self.capture = capture + // The queue posts on main + observer = NotificationCenter.default.addObserver( + forName: .syncTaskPaused, + object: nil, + queue: .main + ) { [weak self] notification in + guard let task = notification.object as? QueuedSyncTask else { return } + self?.report(task) + } + } + + deinit { + if let observer { + NotificationCenter.default.removeObserver(observer) + } + } + + func report(_ task: QueuedSyncTask) { + guard + let pause = task.pause, + pause.sentryEventId == nil, + reportedTaskIds.insert(task.id).inserted + else { return } + + let event = Event(level: .warning) + event.message = SentryMessage(formatted: "Sync task paused: \(task.jobType.rawValue) \(pause.errorCode)") + event.fingerprint = ["sync-paused", task.jobType.rawValue, pause.errorCode] + var tags = [ + "sync.job_type": task.jobType.rawValue, + "sync.error_code": pause.errorCode, + "sync.lane": task.queueKey, + "sync.pause_scope": pause.scope.rawValue, + ] + if let status = pause.httpStatus { + tags["sync.http_status"] = String(status) + } + event.tags = tags + event.extra = ["item_uuid": task.uuid] + + let eventId = capture(event) + // Crash reports off: nothing was sent, so the task stays unreported (here too) for when + // they're turned back on + guard eventId != SentryId.empty else { + reportedTaskIds.remove(task.id) + return + } + syncQueueService.recordPauseReport(eventId: eventId.sentryIdString, forTask: task.id) + } +} diff --git a/BookPlayer/Settings/Sections/DebugFileTransferable.swift b/BookPlayer/Settings/Sections/DebugFileTransferable.swift index b74ef8455..7fd16a10a 100644 --- a/BookPlayer/Settings/Sections/DebugFileTransferable.swift +++ b/BookPlayer/Settings/Sections/DebugFileTransferable.swift @@ -90,58 +90,10 @@ struct DebugFileTransferable: Transferable { localidentifiers: [String], remoteIdentifiers: [String]? ) -> String { - let identifiers = libraryService.fetchIdentifiers() - - var libraryRepresentation = "Library\n.\n" - let processedFolderURL = DataManager.getProcessedFolderURL() - - let baseSeparator = "| " - var nestedLevel = 0 - - for (index, identifier) in identifiers.enumerated() { - let fileURL = processedFolderURL.appendingPathComponent(identifier) - let fileExistsRepresentation = getFileExistsRepresentation( - identifier: identifier, - fileURL: fileURL, - remoteIdentifiers: remoteIdentifiers - ) - let isLast = index == (identifiers.endIndex - 1) - let newNestedLevel = identifier.components(separatedBy: "/").count - 1 - var horizontalSeparator = String(repeating: baseSeparator, count: newNestedLevel) - - if nestedLevel != newNestedLevel || isLast || fileURL.isDirectoryFolder { - horizontalSeparator += horizontalSeparator + "`-- " - } else { - horizontalSeparator += horizontalSeparator + "|-- " - } - - libraryRepresentation += "\(horizontalSeparator)\(fileExistsRepresentation) \(fileURL.lastPathComponent)\n" - - nestedLevel = newNestedLevel - } - - return libraryRepresentation - } - - func getFileExistsRepresentation( - identifier: String, - fileURL: URL, - remoteIdentifiers: [String]? - ) -> String { - let localRepresentation = - FileManager.default.fileExists(atPath: fileURL.path) - ? "[✓]" - : "[𐄂]" - - guard let remoteIdentifiers else { - return localRepresentation - } - - if remoteIdentifiers.contains(identifier) { - return localRepresentation + "[☑]" - } else { - return localRepresentation + "[☐]" - } + LibraryTreeRepresentation.render( + entries: libraryService.fetchIdentifiers().map { ($0, nil) }, + remoteIdentifiers: remoteIdentifiers + ) } func getRemoteOnlyInformation( @@ -404,3 +356,68 @@ struct DebugFileTransferable: Transferable { return info } } + +/// The library as a `tree`-style listing, shared by the debug file and the sync report +enum LibraryTreeRepresentation { + /// - Parameter entries: every item's path, in library order, with its uuid when the + /// listing should show it + /// Note: For the first status, '✓' means the backing file exists, and '𐄂' that it's missing locally, + /// and for the second status, ☐ means the file is not uploaded yet, and ☑ that it's already synced + static func render( + entries: [(relativePath: String, uuid: String?)], + remoteIdentifiers: [String]? + ) -> String { + var libraryRepresentation = "Library\n.\n" + let processedFolderURL = DataManager.getProcessedFolderURL() + + let baseSeparator = "| " + var nestedLevel = 0 + + for (index, entry) in entries.enumerated() { + let identifier = entry.relativePath + let fileURL = processedFolderURL.appendingPathComponent(identifier) + let fileExistsRepresentation = getFileExistsRepresentation( + identifier: identifier, + fileURL: fileURL, + remoteIdentifiers: remoteIdentifiers + ) + let isLast = index == (entries.endIndex - 1) + let newNestedLevel = identifier.components(separatedBy: "/").count - 1 + var horizontalSeparator = String(repeating: baseSeparator, count: newNestedLevel) + + if nestedLevel != newNestedLevel || isLast || fileURL.isDirectoryFolder { + horizontalSeparator += horizontalSeparator + "`-- " + } else { + horizontalSeparator += horizontalSeparator + "|-- " + } + + let uuidSuffix = entry.uuid.map { " (\($0))" } ?? "" + libraryRepresentation += "\(horizontalSeparator)\(fileExistsRepresentation) \(fileURL.lastPathComponent)\(uuidSuffix)\n" + + nestedLevel = newNestedLevel + } + + return libraryRepresentation + } + + static func getFileExistsRepresentation( + identifier: String, + fileURL: URL, + remoteIdentifiers: [String]? + ) -> String { + let localRepresentation = + FileManager.default.fileExists(atPath: fileURL.path) + ? "[✓]" + : "[𐄂]" + + guard let remoteIdentifiers else { + return localRepresentation + } + + if remoteIdentifiers.contains(identifier) { + return localRepresentation + "[☑]" + } else { + return localRepresentation + "[☐]" + } + } +} diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index e56ab194d..fd1161715 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -32,6 +32,8 @@ final class AppServices: BPLogger { let promptSurfaceArbiter: PromptSurfaceArbiter let reviewPromptService = ReviewPromptService() + /// Reports parked sync tasks to Sentry; lives as long as the services it observes + private var syncPauseReporter: SyncPauseReporter? private init() { let playerState = PlayerState() @@ -92,6 +94,11 @@ final class AppServices: BPLogger { tasksDataManager: tasksDataManager, dataManager: dataManager ) + // Not in the unit-test host: tests post `.syncTaskPaused` themselves, and those must + // never reach the real Sentry project + if ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"] == nil { + syncPauseReporter = SyncPauseReporter(syncQueueService: syncQueueService) + } let syncService = makeSyncService( accountService: accountService, libraryService: libraryService, diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 4cbf16a6c..21bd56b42 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -558,3 +558,9 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "integration_error_missing_connection" = "This book streams from your media server. Connect it in Settings to download or play it."; "carplay_playback_failed_message" = "Can't play this book. Open BookPlayer on your phone for details."; "carplay_missing_connection_message" = "This book streams from a media server that isn't set up on this device. Open BookPlayer on your phone to connect it."; +"sync_paused_lane_title" = "Paused: a task needs your attention"; +"sync_task_retry_button" = "Retry"; +"sync_task_report_button" = "Report"; +"sync_task_paused_voiceover" = "Paused: %@"; +"sync_paused_caption" = "Sync paused: %d need attention"; +"sync_paused_alert_title" = "Sync is paused until a queued task is resolved"; diff --git a/BookPlayer/en.lproj/Localizable.stringsdict b/BookPlayer/en.lproj/Localizable.stringsdict index 28f772e7f..33e1e0bc9 100644 --- a/BookPlayer/en.lproj/Localizable.stringsdict +++ b/BookPlayer/en.lproj/Localizable.stringsdict @@ -82,5 +82,21 @@ Downloading %d files + sync_paused_caption + + NSStringLocalizedFormatKey + %#@format@ + format + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Sync paused: %d needs attention + other + Sync paused: %d need attention + + diff --git a/BookPlayerTests/Services/SyncPauseReportingTests.swift b/BookPlayerTests/Services/SyncPauseReportingTests.swift new file mode 100644 index 000000000..9b6f7e929 --- /dev/null +++ b/BookPlayerTests/Services/SyncPauseReportingTests.swift @@ -0,0 +1,246 @@ +// +// SyncPauseReportingTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation +import Sentry +import SwiftData +import XCTest + +@testable import BookPlayer +@testable import BookPlayerKit + +/// Sentry reporting and the Report attachment for parked sync tasks +final class SyncPauseReportingTests: XCTestCase { + private var tasksDataManager: TasksDataManager! + private var repository: SyncQueueRepository! + private var service: SyncQueueService! + + override func setUpWithError() throws { + let schema = Schema(versionedSchema: SchemaV3.self) + let config = ModelConfiguration(isStoredInMemoryOnly: true, cloudKitDatabase: .none) + let container = try ModelContainer(for: schema, configurations: config) + tasksDataManager = TasksDataManager(container: container) + repository = SyncQueueRepository(tasksDataManager: tasksDataManager) + service = SyncQueueService(maxConcurrentTasks: 1) + service.taskContainer = repository + service.tasksDataManager = tasksDataManager + } + + override func tearDown() { + service = nil + repository = nil + tasksDataManager = nil + super.tearDown() + } + + private func pausedTask( + id: String = "task-1", + sentryEventId: String? = nil + ) -> QueuedSyncTask { + QueuedSyncTask( + id: id, + queueKey: TaskQueueKey.sync, + jobType: .shallowDelete, + parameters: [:], + uuid: "item-uuid", + relativePath: "Private Folder/Secret Book.mp3", + pause: TaskPause( + scope: .lane, + errorCode: "item_not_found", + message: "Item not found: \"Private Folder/Secret Book.mp3\"", + httpStatus: 404, + pausedAt: Date(timeIntervalSince1970: 0), + sentryEventId: sentryEventId + ) + ) + } + + // MARK: - Sentry + + /// Minimal payload: the failure's identity only — never the server message or the path, + /// which embed file names + @MainActor + func testReporter_sendsTheMinimalEvent_andRecordsItsId() async throws { + try await repository.storeTask(parameters: [ + "id": "task-1", + "uuid": "item-uuid", + "jobType": SyncJobType.shallowDelete.rawValue, + "queueKey": TaskQueueKey.sync, + "relativePath": "Private Folder/Secret Book.mp3", + ]) + await repository.park( + taskId: "task-1", + pause: TaskPause(scope: .lane, errorCode: "item_not_found", message: "m", httpStatus: 404, pausedAt: Date()) + ) + + var captured = [Event]() + let eventId = SentryId() + let reporter = SyncPauseReporter(syncQueueService: service) { event in + captured.append(event) + return eventId + } + + reporter.report(pausedTask()) + + XCTAssertEqual(captured.count, 1) + let event = try XCTUnwrap(captured.first) + XCTAssertEqual(event.level, .warning) + XCTAssertEqual(event.fingerprint, ["sync-paused", "shallowDelete", "item_not_found"]) + XCTAssertEqual(event.tags?["sync.job_type"], "shallowDelete") + XCTAssertEqual(event.tags?["sync.error_code"], "item_not_found") + XCTAssertEqual(event.tags?["sync.http_status"], "404") + XCTAssertEqual(event.tags?["sync.lane"], TaskQueueKey.sync) + XCTAssertEqual(event.tags?["sync.pause_scope"], "lane") + XCTAssertEqual(event.extra?["item_uuid"] as? String, "item-uuid") + + let payload = [ + event.message?.formatted ?? "", + "\(event.tags ?? [:])", + "\(event.extra ?? [:])", + ].joined() + XCTAssertFalse(payload.contains("Secret Book"), "file names must never reach Sentry") + + let deadline = Date().addingTimeInterval(2) + var stored: String? + while Date() < deadline { + stored = await repository.getAllTasks().first?.pause?.sentryEventId + if stored != nil { break } + try await Task.sleep(for: .milliseconds(20)) + } + XCTAssertEqual(stored, eventId.sentryIdString) + } + + /// Once per task: already reported (stored id), or reported earlier this session before + /// the id was written back + @MainActor + func testReporter_reportsEachTaskOnce() { + var captures = 0 + let reporter = SyncPauseReporter(syncQueueService: service) { _ in + captures += 1 + return SentryId() + } + + reporter.report(pausedTask(id: "reported", sentryEventId: "evt-1")) + XCTAssertEqual(captures, 0) + + reporter.report(pausedTask(id: "new")) + reporter.report(pausedTask(id: "new")) + XCTAssertEqual(captures, 1) + } + + /// Crash reports off: nothing was sent, so the task must stay unreported + @MainActor + func testReporter_withSentryDisabled_leavesTheTaskUnreported() async throws { + try await repository.storeTask(parameters: [ + "id": "task-1", + "uuid": "item-uuid", + "jobType": SyncJobType.shallowDelete.rawValue, + "queueKey": TaskQueueKey.sync, + "relativePath": "a.mp3", + ]) + await repository.park( + taskId: "task-1", + pause: TaskPause(scope: .lane, errorCode: "item_not_found", message: "m", httpStatus: 404, pausedAt: Date()) + ) + let reporter = SyncPauseReporter(syncQueueService: service) { _ in SentryId.empty } + + reporter.report(pausedTask()) + try await Task.sleep(for: .milliseconds(300)) + + let stored = await repository.getAllTasks().first?.pause + XCTAssertNotNil(stored) + XCTAssertNil(stored?.sentryEventId) + } + + /// Turning crash reports back on mid-session: the next park of the same task reports + @MainActor + func testReporter_retriesATaskWhoseReportWasNotSent() { + var sentryEnabled = false + var captures = 0 + let reporter = SyncPauseReporter(syncQueueService: service) { _ in + captures += 1 + return sentryEnabled ? SentryId() : SentryId.empty + } + + reporter.report(pausedTask(id: "later")) + sentryEnabled = true + reporter.report(pausedTask(id: "later")) + reporter.report(pausedTask(id: "later")) + + XCTAssertEqual(captures, 2, "unsent once, then sent once") + } + + @MainActor + func testReporter_observesThePausedNotification() { + var captures = 0 + let reporter = SyncPauseReporter(syncQueueService: service) { _ in + captures += 1 + return SentryId() + } + + NotificationCenter.default.post(name: .syncTaskPaused, object: pausedTask(id: "notified")) + + XCTAssertEqual(captures, 1) + withExtendedLifetime(reporter) {} + } + + // MARK: - Report attachment + + func testReport_listsThePausedTask_theQueue_andTheLocalLibraryWithUuids() { + let pending = QueuedSyncTask( + id: "task-2", + queueKey: TaskQueueKey.uploadFile, + jobType: .uploadFile, + parameters: [:], + uuid: "upload-uuid", + relativePath: "Book 2.mp3" + ) + let report = SyncPauseReport( + pausedTask: pausedTask(sentryEventId: "evt-9"), + queuedTasks: [pausedTask(sentryEventId: "evt-9"), pending], + library: [("Private Folder", "folder-uuid"), ("Private Folder/Secret Book.mp3", "item-uuid")], + appVersion: "6.0.0-100c", + systemVersion: "iOS 26.0", + deviceName: "iPhone" + ) + + let text = report.text + XCTAssertTrue(text.contains("App: 6.0.0-100c")) + XCTAssertTrue(text.contains("Status: paused (lane) · item_not_found 404")) + XCTAssertTrue(text.contains("Message: Item not found")) + XCTAssertTrue(text.contains("Sentry event: evt-9")) + XCTAssertTrue(text.contains("-- Queued tasks (2) --")) + XCTAssertTrue(text.contains("uploadFile · lane uploadFile\n Status: pending")) + XCTAssertTrue(text.contains("Secret Book.mp3 (item-uuid)")) + XCTAssertTrue(text.contains("Private Folder (folder-uuid)")) + XCTAssertTrue(report.subject.contains("item_not_found")) + } + + /// The debug file keeps its listing unchanged: no uuid column + func testLibraryTree_withoutUuids_matchesTheDebugFileFormat() { + let tree = LibraryTreeRepresentation.render( + entries: [("Book.mp3", nil)], + remoteIdentifiers: ["Book.mp3"] + ) + XCTAssertEqual(tree, "Library\n.\n`-- [𐄂][☑] Book.mp3\n") + } + + func testReport_writesANamedFile() throws { + let report = SyncPauseReport( + pausedTask: pausedTask(), + queuedTasks: [], + library: [], + appVersion: "1", + systemVersion: "iOS", + deviceName: "iPhone" + ) + let url = try report.writeToTemporaryFile() + defer { try? FileManager.default.removeItem(at: url) } + XCTAssertEqual(url.lastPathComponent, SyncPauseReport.fileName) + XCTAssertEqual(try String(contentsOf: url, encoding: .utf8), report.text) + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 6ab7a7f9d..63b9802ed 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -289,7 +289,13 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi can put a resumed task ahead of it) are never coalescing targets. Retry = one automatic resume at launch (`setup`) plus `retryPausedTask(id:)`; there is deliberately no Skip. A first park posts `.syncTaskPaused`, skipped when the row already carries a `sentryEventId` (recorded via `recordPauseReport`; - it survives resumes). + it survives resumes). The app-target `SyncPauseReporter` (owned by `AppServices`) turns it into ONE Sentry + warning per task, fingerprint `["sync-paused", jobType, errorCode]`, with a minimal payload (job type, code, + status, lane, scope, item uuid) — **never the server message or a path: both embed file names**. The Queued + Tasks row of a parked task shows the server's message with Retry and Report; Report mails (or, without Mail, + shares) `SyncPauseReport`: the paused task, every queued task with its state, and the local library tree with + uuids. A blocked lane's header turns red, Profile shows "Sync paused: N need attention", and a blocked + pull-to-refresh says sync is paused. - **Realm is gone** (Realm → SwiftData migration is complete). Only inert remnants remain (`DataManager.getSyncTasksRealmURL()` is dead; a stale comment in `LibraryService`). Don't reintroduce it. diff --git a/Shared/Services/LibraryService.swift b/Shared/Services/LibraryService.swift index 345aa596a..7870b01fb 100644 --- a/Shared/Services/LibraryService.swift +++ b/Shared/Services/LibraryService.swift @@ -1409,6 +1409,24 @@ extension LibraryService { return results.map { $0.relativePath } } + /// Every item's path with its uuid, in `fetchIdentifiers` order (a sync report pairs the + /// local tree with the server's records by uuid). View context: call on main. + public func fetchIdentifiersWithUuids() -> [(relativePath: String, uuid: String)] { + let fetchRequest: NSFetchRequest = LibraryItem.fetchRequest() + fetchRequest.propertiesToFetch = [#keyPath(LibraryItem.relativePath), #keyPath(LibraryItem.uuid)] + fetchRequest.sortDescriptors = [ + NSSortDescriptor( + key: #keyPath(LibraryItem.relativePath), + ascending: true, + selector: #selector(NSString.localizedStandardCompare(_:)) + ) + ] + + let results = (try? self.dataManager.getContext().fetch(fetchRequest)) ?? [] + + return results.map { ($0.relativePath, $0.uuid) } + } + public func fetchContents(at relativePath: String?, limit: Int?, offset: Int?) -> [SimpleLibraryItem]? { let context = dataManager.getContext() From 90922344404d70f23d8ec5aa9df8cddad6bc6856 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 27 Sep 2026 13:26:08 -0500 Subject: [PATCH 161/172] feat(upload): multipart upload routes and resumable task state The client side of bookplayer-api's /v1/library/upload/* routes (start, part URLs, uploaded parts, complete, abort) with their response types, and the state an uploadFile task must keep across launches to resume the same S3 upload instead of starting over: uploadId, partSize, fileSize and the restart count. They live in place in the unshipped SchemaV3; SyncQueueRepository.saveUploadState persists them and reports when the task is gone. The engine that drives them comes next. GET query strings now send `+` as %2B. Express decodes a literal `+` as a space, so a book named "A+B.mp3" reached the server as "A B.mp3", and an S3 upload id carrying `+` would be reported as not found. --- BookPlayer.xcodeproj/project.pbxproj | 6 ++ .../NetworkClientQueryEncodingTests.swift | 19 +++++ BookPlayerTests/Services/SyncQueueTests.swift | 82 +++++++++++++++++++ Shared/Network/NetworkClient.swift | 5 ++ Shared/Services/Sync/LibraryAPI.swift | 34 ++++++++ .../Sync/Model/MultipartUploadResponse.swift | 55 +++++++++++++ .../SyncQueue/SyncQueueRepository.swift | 56 +++++++++++++ .../Models/SchemaV3SyncTasksModels.swift | 22 ++++- .../SwiftDataModels+Extensions.swift | 13 ++- 9 files changed, 287 insertions(+), 5 deletions(-) create mode 100644 Shared/Services/Sync/Model/MultipartUploadResponse.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index ecacf2076..e067e9dde 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -900,7 +900,9 @@ 9FBDBC7D287940D900D315A2 /* ContentsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBDBC7C287940D900D315A2 /* ContentsResponse.swift */; }; 9FBDBC7E287940D900D315A2 /* ContentsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBDBC7C287940D900D315A2 /* ContentsResponse.swift */; }; 9FBDBC802879C6C900D315A2 /* UploadItemResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBDBC7F2879C6C900D315A2 /* UploadItemResponse.swift */; }; + BEC7B87D99BB26DE10DEEBC7 /* MultipartUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1713BB63A647FA8447545EFD /* MultipartUploadResponse.swift */; }; 9FBDBC812879C6C900D315A2 /* UploadItemResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBDBC7F2879C6C900D315A2 /* UploadItemResponse.swift */; }; + 04376D0C9384C1655823B498 /* MultipartUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1713BB63A647FA8447545EFD /* MultipartUploadResponse.swift */; }; 9FBF33EC29F6293C00501639 /* SimpleBookmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBF33EB29F6293C00501639 /* SimpleBookmark.swift */; }; 9FBF33ED29F6293C00501639 /* SimpleBookmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBF33EB29F6293C00501639 /* SimpleBookmark.swift */; }; 9FC1E44A2814C4DE00522FA8 /* NetworkClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC1E4492814C4DE00522FA8 /* NetworkClient.swift */; }; @@ -1926,6 +1928,7 @@ 9FBDBC782879409600D315A2 /* SyncableItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncableItem.swift; sourceTree = ""; }; 9FBDBC7C287940D900D315A2 /* ContentsResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentsResponse.swift; sourceTree = ""; }; 9FBDBC7F2879C6C900D315A2 /* UploadItemResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UploadItemResponse.swift; sourceTree = ""; }; + 1713BB63A647FA8447545EFD /* MultipartUploadResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipartUploadResponse.swift; sourceTree = ""; }; 9FBF33EB29F6293C00501639 /* SimpleBookmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleBookmark.swift; sourceTree = ""; }; 9FC1E4492814C4DE00522FA8 /* NetworkClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkClient.swift; sourceTree = ""; }; 9FC1E4582814E0B000522FA8 /* NetworkUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkUtils.swift; sourceTree = ""; }; @@ -3800,6 +3803,7 @@ 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */, 9F9C7B5229F9672700E257B0 /* SyncableBookmark.swift */, 9FBDBC7F2879C6C900D315A2 /* UploadItemResponse.swift */, + 1713BB63A647FA8447545EFD /* MultipartUploadResponse.swift */, 9FBDBC7C287940D900D315A2 /* ContentsResponse.swift */, 9F2E00912A568F800001FE20 /* IdentifiersResponse.swift */, 9F9C7B4F29F9670100E257B0 /* BookmarksResponse.swift */, @@ -4806,6 +4810,7 @@ 4140EA75227289B20009F794 /* Theme+CoreDataProperties.swift in Sources */, 99F3C1FF2F5FC2F200AC91A2 /* SchemaV1SyncTasksModels.swift in Sources */, 9FBDBC812879C6C900D315A2 /* UploadItemResponse.swift in Sources */, + 04376D0C9384C1655823B498 /* MultipartUploadResponse.swift in Sources */, 41A90C4627563F5A00C30394 /* ItemType.swift in Sources */, 9F2E00932A568F800001FE20 /* IdentifiersResponse.swift in Sources */, 4140EA7E227289CE0009F794 /* Library+CoreDataClass.swift in Sources */, @@ -5441,6 +5446,7 @@ 99F3C20A2F62285800AC91A2 /* ApiResponse.swift in Sources */, 99D995872F719E7600BAF216 /* JellyfinConnectionService.swift in Sources */, 9FBDBC802879C6C900D315A2 /* UploadItemResponse.swift in Sources */, + BEC7B87D99BB26DE10DEEBC7 /* MultipartUploadResponse.swift in Sources */, 41A1B11D226F88C500EA0400 /* Theme+CoreDataClass.swift in Sources */, 41A894202652A5DE0032E972 /* Configuration.swift in Sources */, 99F3C20F2F650F0900AC91A2 /* ExternalResource+CoreDataClass.swift in Sources */, diff --git a/BookPlayerTests/NetworkClientQueryEncodingTests.swift b/BookPlayerTests/NetworkClientQueryEncodingTests.swift index b277c01fc..e1defd7f8 100644 --- a/BookPlayerTests/NetworkClientQueryEncodingTests.swift +++ b/BookPlayerTests/NetworkClientQueryEncodingTests.swift @@ -41,4 +41,23 @@ final class NetworkClientQueryEncodingTests: XCTestCase { XCTAssertFalse(url.absoluteString.contains("Optional")) XCTAssertFalse(url.absoluteString.contains("nil")) } + + /// The API decodes a literal `+` in a query value as a space, so it must travel as %2B: + /// file names ("A+B.mp3") and S3 upload ids can both carry one + func testPlusSignsAreEncodedSoTheServerDoesNotReadThemAsSpaces() throws { + let client = NetworkClient() + + let request = try client.buildURLRequest( + path: "/v1/library/upload/parts", + method: .get, + parameters: ["uploadId": "a+b/c=d", "relativePath": "A+B.mp3"] + ) + + let url = try XCTUnwrap(request.url) + XCTAssertFalse(url.absoluteString.contains("+")) + let items = try XCTUnwrap(URLComponents(url: url, resolvingAgainstBaseURL: false)?.queryItems) + let byName = Dictionary(uniqueKeysWithValues: items.map { ($0.name, $0.value ?? "") }) + XCTAssertEqual(byName["uploadId"], "a+b/c=d") + XCTAssertEqual(byName["relativePath"], "A+B.mp3") + } } diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index 451fd22a2..1efe05840 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -989,3 +989,85 @@ private final class FailingNetworkClient: NetworkClientMock, @unchecked Sendable return Empty() as! T } } + +// MARK: - Multipart upload state and API + +extension SyncQueueTests { + /// A relaunch must resume the same S3 upload: what's saved comes back with the task + func testUploadState_roundTripsThroughTheTask() async throws { + try await repository.storeTask(parameters: uploadFileParams(id: "mp1")) + var loaded = await repository.getNextTask(for: TaskQueueKey.uploadFile) + XCTAssertEqual( + MultipartUploadState(parameters: loaded?.parameters ?? [:]), + MultipartUploadState(uploadId: nil, partSize: 0, fileSize: 0, restartCount: 0) + ) + + let state = MultipartUploadState( + uploadId: "upload-1", + partSize: 64 * 1024 * 1024, + fileSize: 6_000_000_000, + restartCount: 2 + ) + await repository.saveUploadState(state, forTask: "mp1") + loaded = await repository.getNextTask(for: TaskQueueKey.uploadFile) + XCTAssertEqual(MultipartUploadState(parameters: loaded?.parameters ?? [:]), state) + + // Forgetting the upload (before a fresh start) keeps the rest + var forgotten = state + forgotten.uploadId = nil + await repository.saveUploadState(forgotten, forTask: "mp1") + loaded = await repository.getNextTask(for: TaskQueueKey.uploadFile) + XCTAssertEqual(MultipartUploadState(parameters: loaded?.parameters ?? [:]), forgotten) + } + + func testMultipartRoutes_matchTheServerContract() { + let start = LibraryAPI.startUpload(uuid: "u", fileSize: 6_000_000_000, partSize: 67_108_864) + XCTAssertEqual(start.path, "/v1/library/upload/start") + XCTAssertEqual(start.method, .post) + XCTAssertEqual(start.parameters?["fileSize"] as? Int64, 6_000_000_000) + XCTAssertEqual(start.parameters?["partSize"] as? Int, 67_108_864) + + let urls = LibraryAPI.uploadPartURLs(uuid: "u", uploadId: "x", partNumbers: [1, 2]) + XCTAssertEqual(urls.path, "/v1/library/upload/parts") + XCTAssertEqual(urls.method, .post) + XCTAssertEqual(urls.parameters?["partNumbers"] as? [Int], [1, 2]) + + let parts = LibraryAPI.uploadedParts(uuid: "u", uploadId: "x") + XCTAssertEqual(parts.path, "/v1/library/upload/parts") + XCTAssertEqual(parts.method, .get) + + let complete = LibraryAPI.completeUpload(uuid: "u", uploadId: "x", partCount: 90, fileSize: 6_000_000_000) + XCTAssertEqual(complete.path, "/v1/library/upload/complete") + XCTAssertEqual(complete.parameters?["partCount"] as? Int, 90) + + let abort = LibraryAPI.abortUpload(uuid: "u", uploadId: "x") + XCTAssertEqual(abort.path, "/v1/library/upload/abort") + XCTAssertEqual(abort.method, .post) + } + + func testMultipartResponses_decode() throws { + let decoder = JSONDecoder() + let started = try decoder.decode( + StartUploadResponse.self, + from: Data(#"{"status":"started","uploadId":"x","partSize":67108864,"partCount":90}"#.utf8) + ) + XCTAssertEqual(started.status, .started) + XCTAssertEqual(started.partCount, 90) + + let exists = try decoder.decode(StartUploadResponse.self, from: Data(#"{"status":"exists"}"#.utf8)) + XCTAssertEqual(exists.status, .exists) + XCTAssertNil(exists.uploadId) + + let urls = try decoder.decode( + UploadPartURLsResponse.self, + from: Data(#"{"parts":[{"partNumber":3,"url":"https://s3/p3","expiresAt":1790000000}]}"#.utf8) + ) + XCTAssertEqual(urls.parts.first?.partNumber, 3) + + let uploaded = try decoder.decode( + UploadedPartsResponse.self, + from: Data(#"{"parts":[{"partNumber":1,"size":67108864}]}"#.utf8) + ) + XCTAssertEqual(uploaded.parts.first?.size, 67_108_864) + } +} diff --git a/Shared/Network/NetworkClient.swift b/Shared/Network/NetworkClient.swift index a79660fac..b833110b2 100644 --- a/Shared/Network/NetworkClient.swift +++ b/Shared/Network/NetworkClient.swift @@ -287,6 +287,11 @@ public class NetworkClient: NetworkClientProtocol, BPLogger { guard let unwrapped = Self.unwrapOptional(value) else { return nil } return URLQueryItem(name: key, value: "\(unwrapped)") } + // URLComponents leaves `+` as is, and the API (Express/qs) decodes a literal `+` in + // a query value as a space: "A+B.mp3" arrived as "A B.mp3", and an S3 upload id + // carrying `+` would be reported as not found + components.percentEncodedQuery = components.percentEncodedQuery? + .replacingOccurrences(of: "+", with: "%2B") } guard let url = components.url else { diff --git a/Shared/Services/Sync/LibraryAPI.swift b/Shared/Services/Sync/LibraryAPI.swift index 856f79e21..7dfa110a2 100644 --- a/Shared/Services/Sync/LibraryAPI.swift +++ b/Shared/Services/Sync/LibraryAPI.swift @@ -26,6 +26,18 @@ public enum LibraryAPI { case matchUuids(uuidsDictionary: [String: String]) case externalResourceToDownload(uuid: String, uploaded: Bool) case deleteExternalResource(uuid: String, providerName: String, providerId: String) + /// Multipart upload of a book's file (bookplayer-api docs/multipart-uploads.md). Every + /// call names the book by uuid; the server derives the S3 key. Call `startUpload` only + /// without an `uploadId` — it aborts any upload still open for the book. + case startUpload(uuid: String, fileSize: Int64, partSize: Int) + /// Presigned URLs for up to 32 parts + case uploadPartURLs(uuid: String, uploadId: String, partNumbers: [Int]) + /// The parts S3 already holds — the source of truth for resuming + case uploadedParts(uuid: String, uploadId: String) + /// Assembles the file; the server sets `synced` (and marks media-server resources + /// downloaded). Safe to repeat. + case completeUpload(uuid: String, uploadId: String, partCount: Int, fileSize: Int64) + case abortUpload(uuid: String, uploadId: String) } extension LibraryAPI: Endpoint { @@ -65,6 +77,14 @@ extension LibraryAPI: Endpoint { return "/v1/library/external_set" case .deleteExternalResource: return "/v1/library/external" + case .startUpload: + return "/v1/library/upload/start" + case .uploadPartURLs, .uploadedParts: + return "/v1/library/upload/parts" + case .completeUpload: + return "/v1/library/upload/complete" + case .abortUpload: + return "/v1/library/upload/abort" } } @@ -104,6 +124,10 @@ extension LibraryAPI: Endpoint { return .post case .deleteExternalResource: return .delete + case .startUpload, .uploadPartURLs, .completeUpload, .abortUpload: + return .post + case .uploadedParts: + return .get } } @@ -198,6 +222,16 @@ extension LibraryAPI: Endpoint { "providerName": providerName, "providerId": providerId ] + case .startUpload(let uuid, let fileSize, let partSize): + return ["uuid": uuid, "fileSize": fileSize, "partSize": partSize] + case .uploadPartURLs(let uuid, let uploadId, let partNumbers): + return ["uuid": uuid, "uploadId": uploadId, "partNumbers": partNumbers] + case .uploadedParts(let uuid, let uploadId): + return ["uuid": uuid, "uploadId": uploadId] + case .completeUpload(let uuid, let uploadId, let partCount, let fileSize): + return ["uuid": uuid, "uploadId": uploadId, "partCount": partCount, "fileSize": fileSize] + case .abortUpload(let uuid, let uploadId): + return ["uuid": uuid, "uploadId": uploadId] } } } diff --git a/Shared/Services/Sync/Model/MultipartUploadResponse.swift b/Shared/Services/Sync/Model/MultipartUploadResponse.swift new file mode 100644 index 000000000..855fd264a --- /dev/null +++ b/Shared/Services/Sync/Model/MultipartUploadResponse.swift @@ -0,0 +1,55 @@ +// +// MultipartUploadResponse.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation + +/// `POST /v1/library/upload/start` +struct StartUploadResponse: Decodable { + enum Status: String, Decodable { + /// A new upload is open: send its parts + case started + /// S3 already has the file; the server marked the row synced. Nothing to send. + case exists + } + + let status: Status + let uploadId: String? + let partSize: Int? + let partCount: Int? +} + +/// `POST /v1/library/upload/parts` +struct UploadPartURLsResponse: Decodable { + struct Part: Decodable { + let partNumber: Int + let url: URL + /// Unix seconds. An upper bound only: the signing credentials can end the URL sooner. + let expiresAt: TimeInterval + } + + let parts: [Part] +} + +/// `GET /v1/library/upload/parts` +struct UploadedPartsResponse: Decodable { + struct Part: Decodable { + let partNumber: Int + let size: Int64 + } + + let parts: [Part] +} + +/// `POST /v1/library/upload/complete` +struct CompleteUploadResponse: Decodable { + let synced: Bool +} + +/// `POST /v1/library/upload/abort` +struct AbortUploadResponse: Decodable { + let aborted: Bool +} diff --git a/Shared/Services/SyncQueue/SyncQueueRepository.swift b/Shared/Services/SyncQueue/SyncQueueRepository.swift index ce89dba2c..2268501da 100644 --- a/Shared/Services/SyncQueue/SyncQueueRepository.swift +++ b/Shared/Services/SyncQueue/SyncQueueRepository.swift @@ -60,6 +60,39 @@ public protocol SyncQueueRepositoryProtocol: ModelActor { /// Remembers the Sentry event that reported this task's pause func setSentryEventId(_ eventId: String, forTask taskId: String) + + /// Persists a multipart upload's progress-independent state, so a relaunch resumes the + /// same S3 upload instead of starting over. A nil `uploadId` forgets the open upload. + /// `false` when the task is gone (cleared by a logout or lapse mid-upload): stop uploading. + @discardableResult + func saveUploadState(_ state: MultipartUploadState, forTask taskId: String) -> Bool +} + +/// What a multipart upload must remember across launches (the parts themselves are read +/// back from S3). `uploadId` alone decides resume vs start: the sizes only count while it's +/// set (0 means unset, and the server rejects 0). +public struct MultipartUploadState: Equatable, Sendable { + public var uploadId: String? + public var partSize: Int + public var fileSize: Int64 + public var restartCount: Int + + public init(uploadId: String?, partSize: Int, fileSize: Int64, restartCount: Int) { + self.uploadId = uploadId + self.partSize = partSize + self.fileSize = fileSize + self.restartCount = restartCount + } + + /// Read back from an `uploadFile` task's parameters (`UploadFileTaskModel.toDictionaryPayload`) + public init(parameters: [String: Any]) { + self.init( + uploadId: parameters["uploadId"] as? String, + partSize: parameters["partSize"] as? Int ?? 0, + fileSize: parameters["fileSize"] as? Int64 ?? 0, + restartCount: parameters["restartCount"] as? Int ?? 0 + ) + } } public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { @@ -199,6 +232,29 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { saveAndNotify("record the report of \(taskId)") } + @discardableResult + public func saveUploadState(_ state: MultipartUploadState, forTask taskId: String) -> Bool { + guard + let task = try? modelContext.fetch( + FetchDescriptor(predicate: #Predicate { $0.id == taskId }) + ).first + else { + Self.logger.info("Upload task \(taskId) is gone; its state wasn't saved") + return false + } + + task.uploadId = state.uploadId + task.partSize = state.partSize + task.fileSize = state.fileSize + task.restartCount = state.restartCount + do { + try modelContext.save() + } catch { + Self.logger.error("Failed to persist the upload state of \(taskId): \(error)") + } + return true + } + private func clearInFlight(_ taskId: String) { inFlightTaskIDs = inFlightTaskIDs.filter { $0.value != taskId } } diff --git a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift index e71cfc73c..e8006561a 100644 --- a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift +++ b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift @@ -389,17 +389,35 @@ public enum SchemaV3: VersionedSchema { public var filePath: String public var remotePath: String? public var uuid: String - + /// The open multipart upload (nil until `start` answers). With it, the upload resumes + /// from S3's part list; `start` again would abort it. + public var uploadId: String? + /// Fixed for the life of `uploadId`: every part but the last is exactly this size + public var partSize: Int = 0 + /// The file's size when the upload started; `complete` must match it + public var fileSize: Int64 = 0 + /// Fresh starts after S3 lost or rejected the upload (`upload_not_found`, + /// `invalid_parts`); past the budget the task parks + public var restartCount: Int = 0 + public init( id: String, uuid: String, filePath: String, - remotePath: String? = nil + remotePath: String? = nil, + uploadId: String? = nil, + partSize: Int = 0, + fileSize: Int64 = 0, + restartCount: Int = 0 ) { self.id = id self.uuid = uuid self.filePath = filePath self.remotePath = remotePath + self.uploadId = uploadId + self.partSize = partSize + self.fileSize = fileSize + self.restartCount = restartCount } } diff --git a/Shared/SwiftData/SwiftDataModels+Extensions.swift b/Shared/SwiftData/SwiftDataModels+Extensions.swift index c7f274fc0..9d3188f93 100644 --- a/Shared/SwiftData/SwiftDataModels+Extensions.swift +++ b/Shared/SwiftData/SwiftDataModels+Extensions.swift @@ -272,13 +272,20 @@ extension UploadFileTaskModel: DictionaryConvertible { var dictionary: [String: Any] = [ "id": id, "uuid": uuid, - "filePath": filePath + "filePath": filePath, + "partSize": partSize, + "fileSize": fileSize, + "restartCount": restartCount, ] - + if let remotePath { dictionary["remotePath"] = remotePath } - + + if let uploadId { + dictionary["uploadId"] = uploadId + } + return dictionary } } From d6ef1c74ce111aa3b02da3851bee1e3c99ee4702 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 27 Sep 2026 14:45:29 -0500 Subject: [PATCH 162/172] feat(upload): upload book files as S3 multipart uploads A book's file went up as one presigned PUT: capped at 5 GiB, restarted from byte zero after any stall, with a URL frozen into the queue that died when the signing credentials rotated, and a client-sent synced:true that could lie when S3 rejected the bytes. FileUploadOperation now drives bookplayer-api's /upload/* routes. S3 is the source of truth: every run rebuilds from the uploaded part list and the background session's tasks for the current uploadId (described #@), so a relaunch or a lost event resumes without re-sending finished parts. 64 MiB parts are sliced to tmp/uploads//, 8 in flight (fewer on low disk), oldest first, with fresh URLs on every top-up. A 403 resends the part; a lost or rejected upload restarts, up to 3 times, then the task parks with the server's code (the dead upload forgotten, so a Retry starts fresh). A book over 10 GiB parks as file_too_large. A cellular-setting change moves the parts in flight to the session that now applies. The server sets synced at complete, so the client no longer confirms; the stored presigned remotePath is gone. When iOS purges the temp link, the book is found again by uuid in the Processed folder (LibrarySyncProtocol.fetchRelativePath(forUuid:)), and that file is never deleted. SyncFailurePolicy.codedFailure covers the local refusal next to the server's codes. --- BookPlayer.xcodeproj/project.pbxproj | 10 + BookPlayer/Base.lproj/Localizable.strings | 1 + BookPlayer/en.lproj/Localizable.strings | 1 + .../Services/MultipartUploadEngineTests.swift | 532 ++++++++++++ BookPlayerTests/Services/SyncQueueTests.swift | 63 +- CLAUDE.md | 33 +- Shared/Network/BPTaskUploadDelegate.swift | 8 +- Shared/Network/BPURLSession.swift | 11 +- Shared/Services/LibraryService+Sync.swift | 26 + Shared/Services/Sync/ApiResponse.swift | 5 +- .../Sync/LibraryItemSyncOperation.swift | 8 +- .../SyncQueue/FileUploadOperation.swift | 822 +++++++++++++----- .../SyncQueue/PartUploadTransport.swift | 118 +++ .../Services/SyncQueue/SyncQueueService.swift | 76 +- Shared/Services/SyncQueue/TaskPause.swift | 29 +- .../Models/SchemaV3SyncTasksModels.swift | 3 - .../SwiftDataModels+Extensions.swift | 4 - Shared/SwiftData/TasksDataManager.swift | 3 +- 18 files changed, 1414 insertions(+), 339 deletions(-) create mode 100644 BookPlayerTests/Services/MultipartUploadEngineTests.swift create mode 100644 Shared/Services/SyncQueue/PartUploadTransport.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index e067e9dde..dcad9c092 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -708,7 +708,9 @@ 9911FBBF2F74527800DC9A2B /* SyncQueueProgressMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */; }; 7AA06DC64EDBA7F10753CF4C /* QueueCounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */; }; 9911FBC42F76122400DC9A2B /* FileUploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */; }; + 21B642BBCC9CEC43E00412CD /* PartUploadTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CF4215FDCB8C2EA0F4A975D /* PartUploadTransport.swift */; }; 9911FBC52F76122400DC9A2B /* FileUploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */; }; + CC6BB739AD7C3CAE40BB940C /* PartUploadTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CF4215FDCB8C2EA0F4A975D /* PartUploadTransport.swift */; }; 9911FBC72F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */; }; 9911FBC82F7738CC00DC9A2B /* SyncableExternalResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */; }; 9911FBD72F7CACEC00DC9A2B /* QueuedTasksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */; }; @@ -971,6 +973,7 @@ C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */; }; CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */; }; + B2B1B1BF822F47AA40EE1B71 /* MultipartUploadEngineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */; }; 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */; }; 786041B335FF61901E55666C /* TasksDataManagerStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */; }; CCC7E1CC127610C3687B8A50 /* SortPreferencesResolving.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6BC9E7E76B9BAB7A0D88D2 /* SortPreferencesResolving.swift */; }; @@ -1795,6 +1798,7 @@ 9911FBBD2F74526F00DC9A2B /* SyncQueueProgressMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncQueueProgressMonitor.swift; sourceTree = ""; }; 25C877CDD6114F67F0CD2AFC /* QueueCounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueueCounts.swift; sourceTree = ""; }; 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUploadOperation.swift; sourceTree = ""; }; + 7CF4215FDCB8C2EA0F4A975D /* PartUploadTransport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PartUploadTransport.swift; sourceTree = ""; }; 9911FBC62F7738C100DC9A2B /* SyncableExternalResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncableExternalResource.swift; sourceTree = ""; }; 9911FBD62F7CACE200DC9A2B /* QueuedTasksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTasksView.swift; sourceTree = ""; }; 4F26B24460975E0B0B15ABDA /* QueuedTaskDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueuedTaskDisplay.swift; sourceTree = ""; }; @@ -2001,6 +2005,7 @@ FEEDBABE0000000000000001 /* SharedWidgetStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStore.swift; sourceTree = ""; }; FEEDBABE0000000000000004 /* SharedWidgetStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStoreTests.swift; sourceTree = ""; }; FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncQueueTests.swift; sourceTree = ""; }; + 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MultipartUploadEngineTests.swift; sourceTree = ""; }; C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncPauseReportingTests.swift; sourceTree = ""; }; B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TasksDataManagerStoreTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -3390,6 +3395,7 @@ A11C418B028982CF431C589F /* LibraryServiceReloadChaptersTests.swift */, 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */, FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */, + 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */, C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */, B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */, ); @@ -3464,6 +3470,7 @@ 9911FBAB2F71CD5F00DC9A2B /* AsyncOperation.swift */, 9911FBB42F72486400DC9A2B /* ExternalUpdateProgressOperation.swift */, 9911FBC32F76121C00DC9A2B /* FileUploadOperation.swift */, + 7CF4215FDCB8C2EA0F4A975D /* PartUploadTransport.swift */, ); path = SyncQueue; sourceTree = ""; @@ -4703,6 +4710,7 @@ 9911FBAC2F71CD6300DC9A2B /* AsyncOperation.swift in Sources */, 9FFCC090289418CA00F4952E /* SimpleChapter.swift in Sources */, 9911FBC52F76122400DC9A2B /* FileUploadOperation.swift in Sources */, + CC6BB739AD7C3CAE40BB940C /* PartUploadTransport.swift in Sources */, 6399EA392F12BB690077BB13 /* PasskeyModels.swift in Sources */, 419BD5992443FD04001E50A0 /* Intents.intentdefinition in Sources */, 62AAE22D274AA6DE001EB9FF /* LibraryService.swift in Sources */, @@ -5314,6 +5322,7 @@ 5A9506FC8DAB858289E0EF89 /* IntegrationServerAddressTests.swift in Sources */, 3F058A74415A3AF6C17DA8F4 /* IntegrationHostResolverTests.swift in Sources */, CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */, + B2B1B1BF822F47AA40EE1B71 /* MultipartUploadEngineTests.swift in Sources */, 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */, 786041B335FF61901E55666C /* TasksDataManagerStoreTests.swift in Sources */, ); @@ -5341,6 +5350,7 @@ 639AC98C2AD9F2840053AFC6 /* BPTaskDownloadDelegate.swift in Sources */, 9FFCC08F289418CA00F4952E /* SimpleChapter.swift in Sources */, 9911FBC42F76122400DC9A2B /* FileUploadOperation.swift in Sources */, + 21B642BBCC9CEC43E00412CD /* PartUploadTransport.swift in Sources */, 6399EA3A2F12BB690077BB13 /* PasskeyModels.swift in Sources */, 416AAC3423F515AF005AD04F /* String+BookPlayer.swift in Sources */, 9FBDBC792879409600D315A2 /* SyncableItem.swift in Sources */, diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 919b02f46..0d4b9a132 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -565,3 +565,4 @@ We're working hard on providing a seamless experience, if possible, please conta "sync_task_paused_voiceover" = "Paused: %@"; "sync_paused_caption" = "Sync paused: %d need attention"; "sync_paused_alert_title" = "Sync is paused until a queued task is resolved"; +"upload_file_too_large_message" = "Larger than 10 GB, so it stays on this device and isn't backed up."; diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 21bd56b42..bb6dba535 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -564,3 +564,4 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "sync_task_paused_voiceover" = "Paused: %@"; "sync_paused_caption" = "Sync paused: %d need attention"; "sync_paused_alert_title" = "Sync is paused until a queued task is resolved"; +"upload_file_too_large_message" = "Larger than 10 GB, so it stays on this device and isn't backed up."; diff --git a/BookPlayerTests/Services/MultipartUploadEngineTests.swift b/BookPlayerTests/Services/MultipartUploadEngineTests.swift new file mode 100644 index 000000000..7e1fa6fea --- /dev/null +++ b/BookPlayerTests/Services/MultipartUploadEngineTests.swift @@ -0,0 +1,532 @@ +// +// MultipartUploadEngineTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Combine +import Foundation +import SwiftData +import XCTest + +@testable import BookPlayer +@testable import BookPlayerKit + +/// The multipart upload engine against a scripted server and a fake part transport: +/// 4-byte parts over a 10-byte file (3 parts) +final class MultipartUploadEngineTests: XCTestCase { + private var repository: SyncQueueRepository! + private var server: ScriptedUploadServer! + private var transport: FakePartTransport! + private var fileURL: URL! + private let taskId = "upload-task" + private let uuid = "book-uuid" + + override func setUpWithError() throws { + let schema = Schema(versionedSchema: SchemaV3.self) + let config = ModelConfiguration(isStoredInMemoryOnly: true, cloudKitDatabase: .none) + let container = try ModelContainer(for: schema, configurations: config) + repository = SyncQueueRepository(tasksDataManager: TasksDataManager(container: container)) + server = ScriptedUploadServer() + transport = FakePartTransport() + transport.server = server + fileURL = FileManager.default.temporaryDirectory.appendingPathComponent("engine-\(UUID().uuidString).m4b") + try Data("0123456789".utf8).write(to: fileURL) + } + + override func tearDown() { + try? FileManager.default.removeItem(at: fileURL) + try? FileManager.default.removeItem(at: FileUploadOperation.partsDirectory(for: uuid)) + repository = nil + server = nil + transport = nil + super.tearDown() + } + + private func storeTask() async throws { + try await repository.storeTask(parameters: [ + "id": taskId, + "uuid": uuid, + "jobType": SyncJobType.uploadFile.rawValue, + "queueKey": TaskQueueKey.uploadFile, + "filePath": fileURL.absoluteString, + ]) + } + + private func makeOperation( + state: MultipartUploadState = .init(uploadId: nil, partSize: 0, fileSize: 0, restartCount: 0), + libraryFileURL: @escaping (String) async -> URL? = { _ in nil } + ) -> FileUploadOperation { + FileUploadOperation( + taskId: taskId, + uuid: uuid, + fileURL: fileURL, + state: state, + client: server, + repository: repository, + transport: transport, + partSize: 4, + // Never the machine's real free space: a full CI disk mustn't fail these + freeDiskSpace: { Int64.max / 2 }, + libraryFileURL: libraryFileURL + ) + } + + private func run(_ operation: FileUploadOperation, timeout: TimeInterval = 5) async { + let done = expectation(description: "operation finished") + let observer = operation.observe(\.isFinished, options: [.initial, .new]) { op, _ in + if op.isFinished { done.fulfill() } + } + operation.start() + await fulfillment(of: [done], timeout: timeout) + observer.invalidate() + } + + private func savedState() async -> MultipartUploadState? { + let task = await repository.getNextTask(for: TaskQueueKey.uploadFile) + return task.map { MultipartUploadState(parameters: $0.parameters) } + } + + // MARK: - Plan + + func testPlan_splitsTheFileIntoFixedSizeParts() { + let plan = MultipartUploadPlan(fileSize: 10, partSize: 4) + XCTAssertEqual(plan.partCount, 3) + XCTAssertEqual(plan.range(of: 1), 0..<4) + XCTAssertEqual(plan.range(of: 3), 8..<10) + XCTAssertEqual(plan.size(of: 3), 2) + XCTAssertEqual(plan.pendingParts(done: [1], active: [2]), [3]) + + let big = MultipartUploadPlan(fileSize: 6_000_000_000, partSize: FileUploadOperation.partSize) + XCTAssertEqual(big.partCount, 90) + XCTAssertEqual( + big.openSlots(window: 8, active: 3, freeBytes: Int64(10) * 1024 * 1024 * 1024, reserve: 0), + 5 + ) + // Room for two parts beyond the reserve + XCTAssertEqual( + big.openSlots(window: 8, active: 0, freeBytes: Int64(FileUploadOperation.partSize) * 2 + 100, reserve: 100), + 2 + ) + XCTAssertEqual(big.openSlots(window: 8, active: 8, freeBytes: .max / 2, reserve: 0), 0) + } + + func testPartOutcome_followsS3sAnswers() { + XCTAssertEqual(FileUploadOperation.outcome(statusCode: 200, error: nil), .uploaded) + XCTAssertEqual(FileUploadOperation.outcome(statusCode: 403, error: nil), .resend) + XCTAssertEqual(FileUploadOperation.outcome(statusCode: 404, error: nil), .uploadGone) + XCTAssertEqual(FileUploadOperation.outcome(statusCode: 500, error: nil), .failed) + XCTAssertEqual(FileUploadOperation.outcome(statusCode: 400, error: nil), .failed) + XCTAssertEqual(FileUploadOperation.outcome(statusCode: nil, error: URLError(.timedOut)), .failed) + XCTAssertEqual(FileUploadOperation.outcome(statusCode: nil, error: URLError(.cancelled)), .resend) + } + + // MARK: - Engine + + func testFreshUpload_startsSendsEveryPartInOrder_andCompletes() async throws { + try await storeTask() + let operation = makeOperation() + + await run(operation) + + XCTAssertTrue(operation.didSucceed) + XCTAssertTrue(operation.uploadCompleted) + XCTAssertEqual(server.calls(to: "/v1/library/upload/start"), 1) + XCTAssertEqual(server.calls(to: "/v1/library/upload/complete"), 1) + XCTAssertEqual(transport.startedParts, [1, 2, 3]) + XCTAssertEqual(transport.sentBytes, [1: "0123", 2: "4567", 3: "89"]) + XCTAssertEqual(server.lastComplete?["partCount"] as? Int, 3) + XCTAssertEqual(server.lastComplete?["fileSize"] as? Int64, 10) + let state = await savedState() + XCTAssertEqual(state?.uploadId, "upload-1") + XCTAssertEqual(state?.fileSize, 10) + // Parts and the temp hard link are cleaned up + XCTAssertFalse(FileManager.default.fileExists(atPath: FileUploadOperation.partsDirectory(for: uuid).path)) + XCTAssertFalse(FileManager.default.fileExists(atPath: fileURL.path)) + } + + /// A relaunch resumes the same upload: nothing S3 has or the session is still sending + /// is sent again + func testResume_skipsPartsS3HasAndPartsStillInFlight() async throws { + try await storeTask() + server.uploadedParts = [1] + transport.inFlightAtLaunch = [2] + let operation = makeOperation(state: .init(uploadId: "upload-1", partSize: 4, fileSize: 10, restartCount: 0)) + + await run(operation) + + XCTAssertTrue(operation.uploadCompleted) + XCTAssertEqual(server.calls(to: "/v1/library/upload/start"), 0) + XCTAssertEqual(transport.startedParts, [3]) + } + + func testExpiredPartURL_isResentWithAFreshURL_notRestarted() async throws { + try await storeTask() + transport.statusByAttempt = [2: [403, 200]] + let operation = makeOperation() + + await run(operation) + + XCTAssertTrue(operation.uploadCompleted) + XCTAssertEqual(transport.startedParts, [1, 2, 3, 2]) + XCTAssertEqual(server.calls(to: "/v1/library/upload/start"), 1) + } + + func testMissingPartsAtComplete_areResent_thenCompleted() async throws { + try await storeTask() + server.completeErrors = [coded("parts_missing", status: 409)] + server.uploadedPartsAfterMissing = [1, 3] + let operation = makeOperation() + + await run(operation) + + XCTAssertTrue(operation.uploadCompleted) + XCTAssertEqual(server.calls(to: "/v1/library/upload/complete"), 2) + XCTAssertEqual(transport.startedParts, [1, 2, 3, 2]) + XCTAssertEqual(server.calls(to: "/v1/library/upload/start"), 1) + } + + func testLostUpload_startsAgain_countingTheRestart() async throws { + try await storeTask() + server.listErrors = [coded("upload_not_found", status: 409)] + let operation = makeOperation(state: .init(uploadId: "stale", partSize: 4, fileSize: 10, restartCount: 0)) + + await run(operation) + + XCTAssertTrue(operation.uploadCompleted) + XCTAssertEqual(server.calls(to: "/v1/library/upload/start"), 1) + let state = await savedState() + XCTAssertEqual(state?.restartCount, 1) + XCTAssertEqual(state?.uploadId, "upload-1") + } + + /// Past the budget the server's answer is the failure, so the queue parks the task + func testRestartBudget_whenExhausted_failsWithTheServersCode() async throws { + try await storeTask() + server.completeErrors = Array(repeating: coded("invalid_parts", status: 422), count: 10) + let operation = makeOperation() + + await run(operation) + + XCTAssertFalse(operation.didSucceed) + XCTAssertEqual(SyncFailurePolicy.codedFailure(operation.error)?.code, "invalid_parts") + XCTAssertEqual(server.calls(to: "/v1/library/upload/start"), FileUploadOperation.restartBudget + 1) + XCTAssertEqual( + SyncFailurePolicy.action(for: operation.error, jobType: .uploadFile, parkingEnabled: true), + .park(.task) + ) + // A Retry starts over: the dead upload is forgotten and the budget reset + let state = await savedState() + XCTAssertNil(state?.uploadId) + XCTAssertEqual(state?.restartCount, 0) + } + + func testAlreadyInS3_finishesWithoutSendingParts() async throws { + try await storeTask() + server.startStatus = "exists" + let operation = makeOperation() + + await run(operation) + + XCTAssertTrue(operation.uploadCompleted) + XCTAssertTrue(transport.startedParts.isEmpty) + XCTAssertEqual(server.calls(to: "/v1/library/upload/complete"), 0) + } + + func testOverTheSizeLimit_isRefusedBeforeTheServer_andParks() async throws { + try await storeTask() + let handle = try FileHandle(forWritingTo: fileURL) + try handle.truncate(atOffset: UInt64(FileUploadOperation.maxFileSize) + 1) + try handle.close() + let operation = makeOperation() + + await run(operation) + + XCTAssertFalse(operation.didSucceed) + XCTAssertEqual(operation.error as? UploadFileError, .fileTooLarge) + XCTAssertEqual(server.totalCalls, 0) + let failure = SyncFailurePolicy.codedFailure(operation.error) + XCTAssertEqual(failure?.code, "file_too_large") + XCTAssertNil(failure?.httpStatus) + XCTAssertEqual( + SyncFailurePolicy.action(for: operation.error, jobType: .uploadFile, parkingEnabled: true), + .park(.task) + ) + } + + /// Nothing to upload: the task is consumed, not retried forever + func testMissingSourceFile_isConsumed() async throws { + try await storeTask() + try FileManager.default.removeItem(at: fileURL) + let operation = makeOperation() + + await run(operation) + + XCTAssertTrue(operation.didSucceed) + XCTAssertFalse(operation.uploadCompleted) + XCTAssertEqual(server.totalCalls, 0) + } + + func testTaskClearedMidUpload_stopsTheUpload() async throws { + // Never stored: saving the state after `start` finds no task (a logout cleared it) + let operation = makeOperation() + + await run(operation) + + XCTAssertFalse(operation.didSucceed) + // Stopped by the failed save after `start`, not by an earlier failure + XCTAssertEqual(server.calls(to: "/v1/library/upload/start"), 1) + guard case .cancelledTask = operation.error as? BookPlayerError else { + return XCTFail("expected the cleared task to cancel the upload, got \(String(describing: operation.error))") + } + XCTAssertTrue(transport.startedParts.isEmpty) + } + + /// iOS purged the temp link, or the user moved the book: found again by uuid, uploaded, + /// and the real library file is never deleted + func testPurgedTempLink_uploadsTheLibraryFileFoundByUuid() async throws { + try await storeTask() + let libraryFile = FileManager.default.temporaryDirectory + .appendingPathComponent("library-\(UUID().uuidString)", isDirectory: true) + try FileManager.default.createDirectory(at: libraryFile, withIntermediateDirectories: true) + let bookURL = libraryFile.appendingPathComponent("Book.m4b") + try Data("abcdefghij".utf8).write(to: bookURL) + defer { try? FileManager.default.removeItem(at: libraryFile) } + try FileManager.default.removeItem(at: fileURL) + let operation = makeOperation(libraryFileURL: { uuid in uuid == "book-uuid" ? bookURL : nil }) + + await run(operation) + + XCTAssertTrue(operation.uploadCompleted) + XCTAssertEqual(transport.sentBytes, [1: "abcd", 2: "efgh", 3: "ij"]) + XCTAssertTrue(FileManager.default.fileExists(atPath: bookURL.path), "the user's file must survive") + } + + /// Turning cellular on or off moves the parts in flight to the session that now applies + func testCellularSettingChange_resendsThePartsInFlight() async throws { + try await storeTask() + let key = Constants.UserDefaults.allowCellularData + let original = UserDefaults.standard.bool(forKey: key) + defer { UserDefaults.standard.set(original, forKey: key) } + transport.holdParts = true + let operation = makeOperation() + let done = expectation(description: "operation finished") + let observer = operation.observe(\.isFinished, options: [.initial, .new]) { op, _ in + if op.isFinished { done.fulfill() } + } + operation.start() + try await transport.waitForStartedParts(3) + + transport.holdParts = false + UserDefaults.standard.set(!original, forKey: key) + + await fulfillment(of: [done], timeout: 5) + observer.invalidate() + XCTAssertTrue(operation.uploadCompleted) + XCTAssertEqual(transport.startedParts.sorted(), [1, 1, 2, 2, 3, 3]) + } + + func testCancel_cancelsTheParts() async throws { + try await storeTask() + transport.holdParts = true + let operation = makeOperation() + operation.start() + try await transport.waitForStartedParts(3) + + operation.cancel() + + try await transport.waitForCancel() + XCTAssertFalse(operation.didSucceed) + XCTAssertTrue(operation.isFinished) + // The run removes the parts and the link once its loop has stopped + let deadline = Date().addingTimeInterval(2) + while Date() < deadline, + FileManager.default.fileExists(atPath: FileUploadOperation.partsDirectory(for: uuid).path) { + try await Task.sleep(for: .milliseconds(20)) + } + XCTAssertFalse(FileManager.default.fileExists(atPath: FileUploadOperation.partsDirectory(for: uuid).path)) + XCTAssertFalse(FileManager.default.fileExists(atPath: fileURL.path)) + } + + private func coded(_ code: String, status: Int) -> BookPlayerError { + .networkErrorWithCode(message: code, code: code, status: status) + } +} + +// MARK: - Fakes + +/// Answers the /upload/* routes like the server would, with scripted failures +private final class ScriptedUploadServer: NetworkClientMock, @unchecked Sendable { + private let lock = NSLock() + private var callsByPath = [String: Int]() + var startStatus = "started" + var uploadedParts = [Int]() + /// What GET /parts answers after a parts_missing (S3's real list at that point) + var uploadedPartsAfterMissing: [Int]? + var listErrors = [Error]() + var completeErrors = [Error]() + private(set) var lastComplete: [String: Any]? + private var uploadCount = 0 + + init() { super.init(mockedResponse: Empty()) } + + var totalCalls: Int { lock.withLock { callsByPath.values.reduce(0, +) } } + + func calls(to path: String) -> Int { lock.withLock { callsByPath[path, default: 0] } } + + override func request( + path: String, + method: HTTPMethod, + parameters: [String: Any]? + ) async throws -> T { + let json: String = try lock.withLock { + callsByPath[path, default: 0] += 1 + switch (path, method) { + case ("/v1/library/upload/start", _): + uploadCount += 1 + uploadedParts = [] + return startStatus == "exists" + ? #"{"status":"exists"}"# + : #"{"status":"started","uploadId":"upload-\#(uploadCount)","partSize":4,"partCount":3}"# + case ("/v1/library/upload/parts", .get): + if !listErrors.isEmpty { throw listErrors.removeFirst() } + let parts = uploadedParts.map { #"{"partNumber":\#($0),"size":4}"# }.joined(separator: ",") + return #"{"parts":[\#(parts)]}"# + case ("/v1/library/upload/parts", .post): + let numbers = parameters?["partNumbers"] as? [Int] ?? [] + let parts = numbers + .map { #"{"partNumber":\#($0),"url":"https://s3.test/p\#($0)","expiresAt":1790000000}"# } + .joined(separator: ",") + return #"{"parts":[\#(parts)]}"# + case ("/v1/library/upload/complete", _): + lastComplete = parameters + if !completeErrors.isEmpty { + let error = completeErrors.removeFirst() + if let missingList = uploadedPartsAfterMissing { + uploadedParts = missingList + } + throw error + } + return #"{"synced":true}"# + default: + return "{}" + } + } + return try JSONDecoder().decode(T.self, from: Data(json.utf8)) + } + + /// A part the transport finished with 2xx is now in S3 + func recordUploaded(_ partNumber: Int) { + lock.withLock { + if !uploadedParts.contains(partNumber) { uploadedParts.append(partNumber) } + } + } +} + +/// Finishes each started part on its own, per a scripted status sequence +private final class FakePartTransport: PartUploadTransport, @unchecked Sendable { + private let lock = NSLock() + private var handler: ((PartUploadEvent) -> Void)? + private var _startedParts = [Int]() + private var _sentBytes = [Int: String]() + private var attempts = [Int: Int]() + private var cancelled = false + private var held = Set() + /// Parts the session is still sending when the operation starts; they finish shortly after + var inFlightAtLaunch = Set() + /// Per part: S3's answer on each attempt (default 200) + var statusByAttempt = [Int: [Int]]() + /// Parts never finish on their own (to test cancel) + private var _holdParts = false + var holdParts: Bool { + get { lock.withLock { _holdParts } } + set { lock.withLock { _holdParts = newValue } } + } + + var startedParts: [Int] { lock.withLock { _startedParts } } + var sentBytes: [Int: String] { lock.withLock { _sentBytes } } + + func activePartNumbers(for uuid: String, uploadId: String) async -> Set { + let pending = lock.withLock { () -> Set in + let parts = inFlightAtLaunch + inFlightAtLaunch = [] + return parts + } + for part in pending { + finish(part, status: 200, after: 0.05) + } + return pending + } + + func startPart(uuid: String, uploadId: String, partNumber: Int, file: URL, url: URL) { + let status: Int = lock.withLock { + _startedParts.append(partNumber) + _sentBytes[partNumber] = (try? String(contentsOf: file, encoding: .utf8)) ?? "" + let attempt = attempts[partNumber, default: 0] + attempts[partNumber] = attempt + 1 + let script = statusByAttempt[partNumber] ?? [] + return attempt < script.count ? script[attempt] : 200 + } + guard !holdParts else { + lock.withLock { held.insert(partNumber) } + return + } + finish(partNumber, status: status, after: 0.01) + } + + /// Held parts come back cancelled, like a session's tasks do + func cancelParts(for uuid: String) async { + let parts = lock.withLock { () -> Set in + cancelled = true + let parts = held + held = [] + return parts + } + for part in parts { + DispatchQueue.global().asyncAfter(deadline: .now() + 0.01) { [weak self] in + let handler = self?.lock.withLock { self?.handler } + handler?(.finished(partNumber: part, statusCode: nil, error: URLError(.cancelled))) + } + } + } + + func subscribe(uuid: String, uploadId: String, handler: @escaping (PartUploadEvent) -> Void) -> AnyCancellable { + lock.withLock { self.handler = handler } + return AnyCancellable { [weak self] in + self?.lock.withLock { self?.handler = nil } + } + } + + /// Set by the test so a 2xx lands in the scripted server's part list + weak var server: AnyObject? + + private func finish(_ partNumber: Int, status: Int, after delay: TimeInterval) { + DispatchQueue.global().asyncAfter(deadline: .now() + delay) { [weak self] in + guard let self else { return } + if (200...299).contains(status) { + (self.server as? ScriptedUploadServer)?.recordUploaded(partNumber) + } + let handler = self.lock.withLock { self.handler } + handler?(.finished(partNumber: partNumber, statusCode: status, error: nil)) + } + } + + func waitForStartedParts(_ count: Int, timeout: TimeInterval = 3) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline { + if startedParts.count >= count { return } + try await Task.sleep(for: .milliseconds(10)) + } + XCTFail("timed out waiting for \(count) started parts") + } + + func waitForCancel(timeout: TimeInterval = 3) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline { + if lock.withLock({ cancelled }) { return } + try await Task.sleep(for: .milliseconds(10)) + } + XCTFail("timed out waiting for the parts to be cancelled") + } +} diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index 1efe05840..c7d0932d1 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -188,7 +188,7 @@ final class SyncQueueTests: XCTestCase { let link = FileManager.default.temporaryDirectory.appendingPathComponent("denied-\(UUID().uuidString).mp3") try Data("x".utf8).write(to: link) - service.scheduleFileUpload(params: ["filePath": link.absoluteString, "remotePath": "https://s3/a", "uuid": "u1"]) + service.scheduleFileUpload(params: ["filePath": link.absoluteString, "uuid": "u1"]) XCTAssertFalse(FileManager.default.fileExists(atPath: link.path)) let tasks = await repository.getAllTasks() @@ -200,13 +200,13 @@ final class SyncQueueTests: XCTestCase { service.taskContainer = repository service.accessPolicy = [.uploadFile: false] - service.scheduleFileUpload(params: ["filePath": "/tmp/a", "remotePath": "https://s3/a", "uuid": "u1"]) + service.scheduleFileUpload(params: ["filePath": "/tmp/a", "uuid": "u1"]) try await Task.sleep(for: .milliseconds(300)) let denied = await repository.getAllTasks() XCTAssertTrue(denied.isEmpty) service.accessPolicy = [.uploadFile: true] - service.scheduleFileUpload(params: ["filePath": "/tmp/a", "remotePath": "https://s3/a", "uuid": "u1"]) + service.scheduleFileUpload(params: ["filePath": "/tmp/a", "uuid": "u1"]) try await waitForTaskCount(1) let allowed = await repository.getNextTask(for: TaskQueueKey.uploadFile) XCTAssertEqual(allowed?.jobType, .uploadFile) @@ -240,28 +240,6 @@ final class SyncQueueTests: XCTestCase { XCTAssertTrue(operation.isFinished) } - /// A permanently-missing source file must CONSUME the upload (didSucceed) instead of failing: - /// the queue retries failures forever on one serial key, so a poison task would hot-loop and - /// block every other upload behind it. - func testFileUploadOperation_missingSourceFile_isConsumedNotRetried() { - let operation = FileUploadOperation( - fileURL: URL(fileURLWithPath: "/nonexistent/\(UUID().uuidString).m4b"), - remoteURL: URL(string: "https://example.com/upload")!, - uuid: "task-uuid" - ) - - operation.start() - - let done = expectation(description: "operation finished") - let observer = operation.observe(\.isFinished, options: [.initial, .new]) { op, _ in - if op.isFinished { done.fulfill() } - } - wait(for: [done], timeout: 5) - observer.invalidate() - - XCTAssertTrue(operation.didSucceed, "a missing source file is permanent — the task must be consumed") - } - // MARK: - Helpers private func waitForTaskCount(_ count: Int, timeout: TimeInterval = 3) async throws { @@ -324,7 +302,6 @@ extension SyncQueueTests { "jobType": SyncJobType.uploadFile.rawValue, "queueKey": TaskQueueKey.uploadFile, "filePath": "/tmp/\(id).m4b", - "remotePath": "https://s3/\(id)", "uuid": id, ] } @@ -433,6 +410,7 @@ extension SyncQueueTests { service.taskContainer = repository service.tasksDataManager = tasksDataManager service.accessPolicy = [.uploadFile: true, .externalUpdate: true] + service.networkClient = NetworkClientMock(mockedResponse: Empty()) return service } @@ -1071,3 +1049,36 @@ extension SyncQueueTests { XCTAssertEqual(uploaded.parts.first?.size, 67_108_864) } } + +// MARK: - Upload lane wiring + +extension SyncQueueTests { + /// End to end through the engine: the upload task's operation runs, its local refusal + /// reaches the parking policy, and the task parks alone with the app's own reason + func testTooLargeUpload_parksTheTaskWithItsLocalReason() async throws { + let service = makeGatedEngine() + let link = FileManager.default.temporaryDirectory.appendingPathComponent("huge-\(UUID().uuidString).m4b") + FileManager.default.createFile(atPath: link.path, contents: nil) + let handle = try FileHandle(forWritingTo: link) + try handle.truncate(atOffset: UInt64(FileUploadOperation.maxFileSize) + 1) + try handle.close() + defer { try? FileManager.default.removeItem(at: link) } + var params = uploadFileParams(id: "huge") + params["filePath"] = link.absoluteString + try await repository.storeTask(parameters: params) + + service.setServerLanesEnabled(true) + + let deadline = Date().addingTimeInterval(3) + var pause: TaskPause? + while Date() < deadline { + pause = await repository.getAllTasks().first?.pause + if pause != nil { break } + try await Task.sleep(for: .milliseconds(20)) + } + XCTAssertEqual(pause?.scope, .task) + XCTAssertEqual(pause?.errorCode, "file_too_large") + XCTAssertNil(pause?.httpStatus) + XCTAssertTrue(FileManager.default.fileExists(atPath: link.path), "the link stays for a Retry") + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 63b9802ed..5c30a0b2a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -273,10 +273,11 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi a running lane after its current task. Gated tasks are **held, never cleared**: RevenueCat's cached info is nil before the first fetch, so a paying subscriber can read inactive at launch. Provider lanes ignore the gate, and `handleAppRefresh` completes immediately while it's off (a gated lane never drains). - **Parking:** a failed task parks ONLY on a coded 4xx (`BookPlayerError.networkErrorWithCode`, the server's - `error` key); anything uncoded keeps the 5 s retry. Today only `LibraryItemSyncOperation` (sync lane) errors - reach it — `FileUploadOperation` still consumes a 4xx — so `uploadFile` parks once the multipart engine reports - coded errors. `SyncFailurePolicy` owns the rules: leaf tasks (`update`, + **Parking:** a failed task parks ONLY on a coded failure — `SyncFailurePolicy.codedFailure` returns a + `CodedFailure` for the server's coded 4xx (`BookPlayerError.networkErrorWithCode`, its `error` key) and for the + app's own `UploadFileError.fileTooLarge` (`file_too_large`, no HTTP status); anything uncoded (network, 5xx, + the engine's retry-later) keeps the 5 s retry. Errors from both `LibraryItemSyncOperation` and + `FileUploadOperation` reach it. `SyncFailurePolicy` owns the rules: leaf tasks (`update`, `uploadArtwork`, `uploadFile`) park alone (`TaskPauseScope.task`, the lane keeps running); every other sync-lane task is structural and stops its lane (`.lane`); `not_subscribed`/`tier_required` park `.account` (holds every server lane) and trigger a fresh RevenueCat read — inactive runs the normal lapse path, active or @@ -349,11 +350,28 @@ lines). It is the highest-risk file in the app. to `BookPlayerError` (`4xx` decode `ErrorResponse` → `.networkError`/`.networkErrorWithCode`, `5xx` → `.networkError`). Decoder is `.iso8601`. - **The bearer token must never be attached to S3/presigned or third-party (Jellyfin/ABS/Hardcover) URLs.** - Uploads to S3 presigned PUTs use `useKeychain: false` (the URL carries its own auth); media-server calls use + S3 presigned PUTs through `NetworkClient` (folders and bound books in `handleUploadJob`, artwork) use + `useKeychain: false` (the URL carries its own auth); book files never go through `NetworkClient` — their parts + are header-less background upload tasks (below). Media-server calls use their own connection tokens. Any new `request(url:...)` must set `useKeychain` deliberately — the default `true` attaches the JWT to whatever host is passed. - **Background `URLSession`s** (`Shared/Network/BPURLSession.swift`): two sessions (`.background` and `.background.cellular`) chosen by the `allowCellularData` default; downloads via `BPDownloadURLSession`. + They carry multipart upload PARTS, one upload task each, described `#@` + (`BackgroundPartUploadTransport`); `progressPublisher` emits `(task, bytesSent)`. +- **Book uploads are S3 multipart** (`FileUploadOperation`, the `uploadFile` lane; contract in + bookplayer-api `docs/multipart-uploads.md`). A non-nil `url` from `PUT /v1/library` only means "the server + needs the bytes" — the client never PUTs to it. **The server sets `synced` at `/upload/complete`; the client + never confirms a book's file.** S3 is the source of truth: every run rebuilds from `GET /upload/parts` plus + the session's tasks for the current `uploadId`, so a relaunch or a lost event resumes without re-sending. The + resumable state (`uploadId`, `partSize`, `fileSize`, `restartCount`) lives on `UploadFileTaskModel`; parts are + sliced to `tmp/uploads//`; 64 MiB parts, 8 in flight (fewer on low disk), fresh part URLs every top-up + (403 = expired), up to 3 restarts (`upload_not_found`/`invalid_parts`/NoSuchUpload, or `complete` answering + `parts_missing` 5 rounds running while S3 lists every part) before the task parks with the server's code — the + dead upload is forgotten and the budget reset first, so a Retry starts fresh; books over 10 GiB park as + `file_too_large`. The source is the temp hard link, else the book's + current Processed file found by uuid (`LibrarySyncProtocol.fetchRelativePath(forUuid:)`) — never deleted. A + cellular-setting change cancels the parts in flight so they resend through the session that now applies. - `SyncService.swift` is `@Observable`. **`isActive` is `public private(set)` and must be mutated only via `updateSyncEnabled(_:)` / `logout()`** (both hop to `@MainActor`). It is driven by `.logout` (→ teardown, clears scheduled-contents flag, resets jobs) and `.accountUpdate` (→ `updateSyncEnabled(hasSyncEnabled())`) @@ -367,8 +385,9 @@ lines). It is the highest-risk file in the app. gates both the on-play resume prompt and the list refresh on `accountService.hasSyncEnabled()` (lite/pro), read live on every pull, and cancels an in-flight pull on an `.accountUpdate` that drops the entitlement — free/plus users push to their own server but never see other devices' positions. Android must mirror this. - Job types (`SyncJobType`): `upload, update, move, - renameFolder, delete, shallowDelete, setBookmark, deleteBookmark, uploadArtwork, matchUuid`. + Job types (`SyncJobType`): `upload, update, move, renameFolder, delete, shallowDelete, setBookmark, + deleteBookmark, uploadArtwork, matchUuid, externalResource, externalResourceToDownload, deleteExternalResource` + (sync lane), `uploadFile` (upload lane), `externalUpdate` (provider lanes). - **Download verification:** `verifyDownloadedFile` rejects truncated files by comparing `AVURLAsset` duration to the stored duration (tolerance `max(2, expected*0.02)`); completion is broadcast only after verification. Don't skip it — it prevents promoting a truncated book. diff --git a/Shared/Network/BPTaskUploadDelegate.swift b/Shared/Network/BPTaskUploadDelegate.swift index 728d97a7e..1eb3af9fa 100644 --- a/Shared/Network/BPTaskUploadDelegate.swift +++ b/Shared/Network/BPTaskUploadDelegate.swift @@ -9,8 +9,9 @@ import Foundation class BPTaskUploadDelegate: NSObject, URLSessionTaskDelegate { - /// Callback triggered when there's an update on the upload progress - var uploadProgressUpdated: ((URLSessionTask, Double) -> Void)? + /// Callback triggered when there's an update on the upload progress, with the task's + /// bytes sent so far (a multipart upload sums them across its parts) + var uploadProgressUpdated: ((URLSessionTask, Int64) -> Void)? /// Callback triggered when the download task is finished var didFinishTask: ((URLSessionTask, Error?) -> Void)? @@ -21,8 +22,7 @@ class BPTaskUploadDelegate: NSObject, URLSessionTaskDelegate { totalBytesSent: Int64, totalBytesExpectedToSend: Int64 ) { - let uploadProgress = Float(totalBytesSent) / Float(totalBytesExpectedToSend) - uploadProgressUpdated?(task, Double(uploadProgress)) + uploadProgressUpdated?(task, totalBytesSent) } func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { diff --git a/Shared/Network/BPURLSession.swift b/Shared/Network/BPURLSession.swift index eef43a95f..3166f69f4 100644 --- a/Shared/Network/BPURLSession.swift +++ b/Shared/Network/BPURLSession.swift @@ -15,20 +15,19 @@ class BPURLSession { public let backgroundSession: URLSession public let backgroundCellularSession: URLSession - public let progressPublisher: PassthroughSubject<(String, Double), Never> + /// The emitting task and its bytes sent so far + public let progressPublisher: PassthroughSubject<(URLSessionTask, Int64), Never> public let completionPublisher: PassthroughSubject<(URLSessionTask, Error?), Never> private var cellularDataObserver: NSKeyValueObservation? private init() { - let progressPublisher = PassthroughSubject<(String, Double), Never>() + let progressPublisher = PassthroughSubject<(URLSessionTask, Int64), Never>() let completionPublisher = PassthroughSubject<(URLSessionTask, Error?), Never>() let bundleIdentifier: String = Bundle.main.configurationValue(for: .bundleIdentifier) let delegate = BPTaskUploadDelegate() - delegate.uploadProgressUpdated = { [progressPublisher] task, uploadProgress in - guard let relativePath = task.taskDescription else { return } - - progressPublisher.send((relativePath, uploadProgress)) + delegate.uploadProgressUpdated = { [progressPublisher] task, bytesSent in + progressPublisher.send((task, bytesSent)) } delegate.didFinishTask = { [completionPublisher] task, error in completionPublisher.send((task, error)) diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index 38aa0503a..ba20f0c97 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -53,6 +53,10 @@ public protocol LibrarySyncProtocol { func getItemResourcesSnapshot(for relativePath: String) -> (uuid: String, resources: [SyncableExternalResource])? func updateExternalResource(for item: SyncableExternalResource) async + + /// The item's current path, read on a background context (an upload in the background + /// finds its book's file by uuid after the user moved it) + func fetchRelativePath(forUuid uuid: String) async -> String? } extension LibraryService: LibrarySyncProtocol { @@ -87,6 +91,28 @@ extension LibraryService: LibrarySyncProtocol { } } + public func fetchRelativePath(forUuid uuid: String) async -> String? { + guard Constants.isRealUuid(uuid) else { return nil } + return await withCheckedContinuation { continuation in + let context = dataManager.getBackgroundContext() + context.perform { [context] in + let fetchRequest = NSFetchRequest(entityName: "LibraryItem") + fetchRequest.predicate = NSPredicate(format: "%K == %@", #keyPath(LibraryItem.uuid), uuid) + fetchRequest.propertiesToFetch = [#keyPath(LibraryItem.relativePath)] + fetchRequest.resultType = .dictionaryResultType + fetchRequest.fetchLimit = 1 + + do { + let relativePath = try context.fetch(fetchRequest).first?[#keyPath(LibraryItem.relativePath)] as? String + continuation.resume(returning: relativePath) + } catch { + Self.logger.error("Failed to look up the item \(uuid): \(error)") + continuation.resume(returning: nil) + } + } + } + } + public func getItemDuration(at relativePath: String) async -> Double? { return await withCheckedContinuation { continuation in let context = dataManager.getBackgroundContext() diff --git a/Shared/Services/Sync/ApiResponse.swift b/Shared/Services/Sync/ApiResponse.swift index d26077743..3abb33eb1 100644 --- a/Shared/Services/Sync/ApiResponse.swift +++ b/Shared/Services/Sync/ApiResponse.swift @@ -38,8 +38,7 @@ public struct ItemConflict: Decodable { public struct UploadResponse: Decodable { let uuid: String let filePath: String - let remotePath: String? - /// The library key of the item being uploaded — the synced:true confirmation after the - /// file PUT needs it, and it can't be derived from the (absolute, possibly temp) filePath. + /// The library key of the item being uploaded: it names the upload's Queued Tasks row, + /// and can't be derived from the (absolute, possibly temp) filePath var relativePath: String? } diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index e0be01359..aa22a1f65 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -231,11 +231,9 @@ extension LibraryItemSyncOperation { return } - results = .uploadMetadata(UploadResponse(uuid: self.uuid, filePath: fileURL.absoluteString, remotePath: remoteURL.absoluteString, relativePath: self.relativePath)) - // Deliberately NOT handleUploadFinished() here: a backing file still has to be PUT by the - // FileUploadOperation this result schedules — confirming synced:true now lies to the server - // if that upload later fails permanently. The metadata-only branch above confirms - // immediately; this branch confirms from the file upload's completion. + // The URL only says the server needs the bytes: the upload lane sends them as a + // multipart upload, and the server marks the row synced when it assembles the file + results = .uploadMetadata(UploadResponse(uuid: self.uuid, filePath: fileURL.absoluteString, relativePath: self.relativePath)) finish() } diff --git a/Shared/Services/SyncQueue/FileUploadOperation.swift b/Shared/Services/SyncQueue/FileUploadOperation.swift index b0c107981..d1b95de65 100644 --- a/Shared/Services/SyncQueue/FileUploadOperation.swift +++ b/Shared/Services/SyncQueue/FileUploadOperation.swift @@ -6,258 +6,630 @@ // Copyright © 2026 BookPlayer LLC. All rights reserved. // -import Foundation import Combine +import Foundation -class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { - /// True ONLY when the bytes actually reached the server (2xx). `didSucceed` also goes true - /// for CONSUMED permanent failures (missing file, 4xx) so the queue stops retrying them — - /// but those must never trigger the synced:true confirmation. - /// Written on the URLSession delegate thread, read on the queue thread — lock-guarded. - private var _uploadCompleted = false - private(set) var uploadCompleted: Bool { - get { - uploadStateLock.lock(); defer { uploadStateLock.unlock() } - return _uploadCompleted +/// A book the upload lane refuses before talking to the server +public enum UploadFileError: Error, Equatable { + /// Over the server's 10 GiB book ceiling: the file stays on this device + case fileTooLarge + + public var code: String { + switch self { + case .fileTooLarge: + return "file_too_large" } - set { - uploadStateLock.lock(); defer { uploadStateLock.unlock() } - _uploadCompleted = newValue + } + + public var message: String { + switch self { + case .fileTooLarge: + return "upload_file_too_large_message".localized } } - - // MARK: - Properties - let fileURL: URL - let remoteURL: URL +} + +/// Part math for one upload: every part but the last is exactly `partSize` +struct MultipartUploadPlan: Equatable { + let fileSize: Int64 + let partSize: Int + + var partCount: Int { + guard fileSize > 0 else { return 1 } + return Int((fileSize + Int64(partSize) - 1) / Int64(partSize)) + } + + /// Byte range of a 1-based part + func range(of partNumber: Int) -> Range { + let start = Int64(partNumber - 1) * Int64(partSize) + return start.. Int64 { + let range = range(of: partNumber) + return range.upperBound - range.lowerBound + } + + /// Parts still to send, oldest first: the session favours the newest tasks, so the + /// engine hands them over in order to keep the oldest from waiting longest + func pendingParts(done: Set, active: Set) -> [Int] { + (1...partCount).filter { !done.contains($0) && !active.contains($0) } + } + + /// How many more parts to slice now: the window, less what's in flight, and never more + /// than the free disk space (beyond `reserve`) holds + func openSlots(window: Int, active: Int, freeBytes: Int64, reserve: Int64) -> Int { + let byDisk = max(0, (freeBytes - reserve) / Int64(partSize)) + return max(0, min(window - active, Int(min(byDisk, Int64(window))))) + } +} + +/// Uploads one book to S3 as a multipart upload (bookplayer-api docs/multipart-uploads.md). +/// +/// S3 is the source of truth: every start of the operation rebuilds from S3's part list and +/// the parts the background session is still sending, so a relaunch, a missed event or an +/// app that iOS terminated mid-upload all resume without re-sending finished parts. The +/// server sets `synced` at `complete`; this operation never confirms it. +class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { + static let partSize = 64 * 1024 * 1024 + /// About the per-host connection limit: more parts in flight only age their URLs (P2b) + static let window = 8 + static let maxFileSize: Int64 = 10 * 1024 * 1024 * 1024 + /// Fresh starts after S3 lost or rejected the upload, before the task parks + static let restartBudget = 3 + /// Consecutive failures of one part before the whole operation is retried + static let maxPartAttempts = 5 + /// Free space kept beyond the parts being sliced + static let diskReserve: Int64 = 256 * 1024 * 1024 + /// With no event for this long, re-read S3 and the session: an event can be lost (e.g. + /// delivered before this operation subscribed, after a relaunch) + static let reconcileInterval: Duration = .seconds(30) + + let taskId: String let uuid: String - - // Inject whatever type 'self.client' is in your original code - let client: NetworkClientProtocol - - // State management for the background task - /// Guards the publish of `currentUploadTask` against a concurrent `cancel()`: without it, - /// a logout-driven cancel can run between task creation and assignment, see nil, and the - /// live upload survives logout. Either `cancel()` sees the published task and cancels it, - /// or `startUploadTask` sees `isCancelled` and never resumes (resume on a cancelled - /// URLSessionTask is a no-op, so the post-unlock resume can't revive it). - /// Deliberately its OWN lock (the base class's stateLock is private and guards - /// state/didSucceed independently) — renamed so nothing reads as shared - private let uploadStateLock = NSLock() - private var currentUploadTask: URLSessionTask? - private var progressSubscriber: AnyCancellable? - private var completionSubscriber: AnyCancellable? - private var cellularDataObserver: NSKeyValueObservation? - - // MARK: - Init - init(fileURL: URL, remoteURL: URL, uuid: String, client: NetworkClientProtocol = NetworkClient()) { - self.fileURL = fileURL - self.remoteURL = remoteURL + /// The schedule-time temp hard link (or the Processed-folder file it fell back to) + let fileURL: URL + private let provider: NetworkProvider + private let repository: SyncQueueRepositoryProtocol + private let transport: PartUploadTransport + /// The book's current file in the Processed folder, looked up by uuid: iOS may purge the + /// temp link, and the user may have moved the book since + private let libraryFileURL: (String) async -> URL? + /// Asked of the server at `start` (it answers the size it keeps); injectable for tests + private let requestedPartSize: Int + /// Free space on the volume parts are sliced to; injectable for tests + private let freeDiskSpace: () -> Int64 + private var uploadState: MultipartUploadState + + private let lock = NSLock() + private var _error: Error? + /// Why the upload stopped; nil after a success or a consumed (dropped) task + var error: Error? { + get { lock.withLock { _error } } + set { lock.withLock { _error = newValue } } + } + private var _uploadCompleted = false + /// True only when S3 assembled the file (or already had it) + private(set) var uploadCompleted: Bool { + get { lock.withLock { _uploadCompleted } } + set { lock.withLock { _uploadCompleted = newValue } } + } + private var runTask: Task? + + init( + taskId: String, + uuid: String, + fileURL: URL, + state: MultipartUploadState, + client: NetworkClientProtocol, + repository: SyncQueueRepositoryProtocol, + transport: PartUploadTransport = BackgroundPartUploadTransport.shared, + partSize: Int = FileUploadOperation.partSize, + freeDiskSpace: @escaping () -> Int64 = FileUploadOperation.availableDiskSpace, + libraryFileURL: @escaping (String) async -> URL? + ) { + self.requestedPartSize = partSize + self.freeDiskSpace = freeDiskSpace + self.taskId = taskId self.uuid = uuid - self.client = client + self.fileURL = fileURL + self.uploadState = state + self.provider = NetworkProvider(client: client) + self.repository = repository + self.transport = transport + self.libraryFileURL = libraryFileURL super.init() } - + + /// Parts are sliced here while they upload: `tmp/uploads//.part` (background + /// sessions only upload from files) + static func partsDirectory(for uuid: String) -> URL { + FileManager.default.temporaryDirectory + .appendingPathComponent("uploads", isDirectory: true) + .appendingPathComponent(uuid, isDirectory: true) + } + // MARK: - Execution + override func main() { guard !isCancelled else { - self.finish() + finish() return } - - // Spin up the async context - Task { [weak self] in - await self?.startUploadTask() + + let task = Task { [weak self] in + guard let self else { return } + await self.run() } + lock.withLock { runTask = task } + // super.cancel() flags isCancelled before cancel() reads runTask: one of the two sees + // the other, so a cancel racing the start still stops the run + if isCancelled { task.cancel() } } - - // MARK: - Upload Logic - /// uploadStateLock-guarded: each (re)start claims a new generation, and only the - /// LATEST one may publish + resume — a rapid double-toggle of allowCellularData fires - /// two KVO restarts, and without this both passed `!isCancelled` (the operation isn't - /// cancelled, only the internal task was) and resumed two concurrent PUTs, the first - /// unreachable by cancel() after the second overwrote currentUploadTask. - private var restartGeneration = 0 - - private func startUploadTask() async { - uploadStateLock.lock() - restartGeneration += 1 - let generation = restartGeneration - uploadStateLock.unlock() - - // A missing local file is permanent — retrying can never succeed, and a failed task - // blocks the serial upload queue forever. Consume it instead. - guard FileManager.default.fileExists(atPath: fileURL.path) else { - Self.logger.error("Upload source missing for \(self.uuid), dropping task: \(self.fileURL.path)") - self.didSucceed = true - self.finish() - return + + /// Logout, lapse or a downgrade to a tier without S3. The S3 upload is left for the + /// bucket's 7-day rule; the run stops its parts and removes its files once its loop has + /// actually stopped (cleaning up here could race a part it's about to start). + override func cancel() { + super.cancel() + let task = lock.withLock { runTask } + task?.cancel() + if error == nil { + error = BookPlayerError.cancelledTask + } + if task == nil { + // Never started: no parts, only the link + removeLocalFiles() + } + if isExecuting { finish() } + } + + private func run() async { + do { + try await upload() + uploadCompleted = true + removeLocalFiles() + } catch UploadStop.dropped { + removeLocalFiles() + } catch is CancellationError { + // The task was cleared under the upload (logout, lapse), or the operation cancelled + if error == nil { error = BookPlayerError.cancelledTask } + } catch { + if !isCancelled { + self.error = error + if SyncFailurePolicy.codedFailure(error) != nil { + // Parked: nothing reads the parts until a Retry, which starts from S3's list. + // The link stays, so the Retry still finds the file. + await removeParts() + } + } + } + if isCancelled { + if error == nil { error = BookPlayerError.cancelledTask } + await removeParts() + removeLocalFiles() + } + didSucceed = error == nil + finish() + } + + private func removeParts() async { + await transport.cancelParts(for: uuid) + try? FileManager.default.removeItem(at: Self.partsDirectory(for: uuid)) + } + + private enum UploadStop: LocalizedError { + /// Nothing to upload (the file is gone): consume the task + case dropped + /// S3 lost or rejected the upload: forget it and start again. `cause` is the server's + /// answer, used as the pause reason once the restart budget runs out. + case restart(cause: Error) + /// A part keeps failing, or the disk has no room for one: fail the operation so the + /// queue retries it later, from S3's part list + case retryLater(String) + + /// What `lastSyncError` shows + var errorDescription: String? { + switch self { + case .dropped: + return "The file to upload is gone" + case .restart(let cause): + return "Restarting the upload: \(cause.localizedDescription)" + case .retryLater(let reason): + return "Upload paused, retrying later: \(reason)" + } + } + } + + // MARK: - Upload + + private func upload() async throws { + guard let sourceURL = await resolveSourceFile() else { + Self.logger.error("Upload source missing for \(self.uuid), dropping the task") + throw UploadStop.dropped + } + let fileSize = try Self.fileSize(of: sourceURL) + guard fileSize <= Self.maxFileSize else { + throw UploadFileError.fileTooLarge } - // 1. Determine Session - let allowCellular = UserDefaults.standard.bool(forKey: Constants.UserDefaults.allowCellularData) - let session = allowCellular ? BPURLSession.shared.backgroundCellularSession : BPURLSession.shared.backgroundSession - // 2. Create the Task - let uploadTask = await self.client.uploadTask( - fileURL, - remoteURL: remoteURL, - taskDescription: uuid, - session: session + // The file changed since the upload started (replaced on disk), or the saved state is + // unusable: the open upload's parts no longer fit + if uploadState.uploadId != nil, uploadState.fileSize != fileSize || uploadState.partSize <= 0 { + try await forgetUpload(countingRestart: false) + } + + var partsMissingAnswers = 0 + while true { + try Task.checkCancellation() + do { + if uploadState.uploadId == nil { + guard try await start(fileSize: fileSize) else { return } + partsMissingAnswers = 0 + } + try await sendAllParts(from: sourceURL) + if try await complete() { return } + // S3's list says every part is there, yet complete says some aren't: past a few + // rounds, the upload itself is broken + partsMissingAnswers += 1 + if partsMissingAnswers >= Self.maxPartAttempts { + throw UploadStop.restart(cause: Self.partsMissingError) + } + } catch UploadStop.restart(let cause) { + guard uploadState.restartCount < Self.restartBudget else { + // Parks. The dead upload is forgotten and the budget reset, so a Retry (or the + // launch retry) starts a fresh upload instead of re-parking on the same one. + try await forgetUpload(countingRestart: false) + uploadState.restartCount = 0 + try await saveState() + throw cause + } + try await forgetUpload(countingRestart: true) + } + } + } + + /// `false` when S3 already has the file (nothing to send) + private func start(fileSize: Int64) async throws -> Bool { + let response: StartUploadResponse = try await provider.request( + .startUpload(uuid: uuid, fileSize: fileSize, partSize: requestedPartSize) ) - uploadStateLock.lock() - guard !isCancelled, generation == restartGeneration else { - // cancel() already ran (and finished the operation), or a newer restart claimed - // the upload — don't resume or rebind; a stale resume would race the newer task - uploadStateLock.unlock() - return + switch response.status { + case .exists: + return false + case .started: + let partSize = response.partSize ?? requestedPartSize + guard let uploadId = response.uploadId, partSize > 0 else { + throw BookPlayerError.runtimeError("Upload started without an uploadId or a usable part size") + } + uploadState.uploadId = uploadId + uploadState.partSize = partSize + uploadState.fileSize = fileSize + try await saveState() + return true } - self.currentUploadTask = uploadTask - uploadStateLock.unlock() - - // 3. Bind everything before resuming - bindUploadObservers() - bindCellularObserver() - // 4. Fire! - uploadTask.resume() - } - - /// The subscriber/observer refs are bound from the operation's Task thread, torn down - /// by `cancel()` from whichever thread cancels (main via logout/lapse), and invalidated - /// by the completion sink on the URLSession delegate thread — every touch goes through - /// `uploadStateLock`, same as `currentUploadTask`. - private func invalidateCellularObserver() { - uploadStateLock.lock() - cellularDataObserver?.invalidate() - cellularDataObserver = nil - uploadStateLock.unlock() - } - - private func bindCellularObserver() { - // Built outside the lock (observe() can fire callbacks), published under it - let observer = UserDefaults.standard.observe( - \.userSettingsAllowCellularData, - options: [.new] - ) { [weak self] _, change in - - guard let self = self, change.newValue != nil else { return } - - // If the user toggles cellular data mid-flight, we cancel the current internal task. - // (This triggers NSURLErrorCancelled in the completion subscriber). - self.uploadStateLock.lock() - self.currentUploadTask?.cancel() - self.uploadStateLock.unlock() - - // Recursively restart the upload using the new session! - Task { - await self.startUploadTask() + } + + /// Keeps up to `window` parts with the session until S3 holds every part + private func sendAllParts(from sourceURL: URL) async throws { + guard let uploadId = uploadState.uploadId else { return } + let plan = MultipartUploadPlan(fileSize: uploadState.fileSize, partSize: uploadState.partSize) + + let (events, continuation) = AsyncStream.makeStream() + // Subscribed before reading the session, so no event falls between the two + let subscription = transport.subscribe(uuid: uuid, uploadId: uploadId) { continuation.yield(.part($0)) } + let ticker = Task { + while !Task.isCancelled { + try? await Task.sleep(for: Self.reconcileInterval) + continuation.yield(.tick) } } - uploadStateLock.lock() - cellularDataObserver?.invalidate() - cellularDataObserver = observer - uploadStateLock.unlock() - } - - private func bindUploadObservers() { - let progress = BPURLSession.shared.progressPublisher - .sink { [weak self] (path, progress) in - guard let self = self else { return } - // CRITICAL: Only report progress if this event belongs to THIS operation — the - // publisher is shared by ALL concurrent uploads; `path` is the emitting task's uuid. - if path == self.uuid { - self.onProgress?(progress) + // Parts already handed to the Wi-Fi-only (or the cellular) session stay there: on a + // change, cancel them so the next top-up resends them through the session that now applies + let cellularObserver = UserDefaults.standard.observe(\.userSettingsAllowCellularData, options: [.new]) { _, _ in + continuation.yield(.cellularSettingChanged) + } + defer { + subscription.cancel() + ticker.cancel() + cellularObserver.invalidate() + continuation.finish() + } + // One consumer for the whole pass + var iterator = events.makeAsyncIterator() + + var done = try await uploadedParts(uploadId: uploadId) + var active = await transport.activePartNumbers(for: uuid, uploadId: uploadId).subtracting(done) + var bytesInFlight = [Int: Int64]() + var failures = [Int: Int]() + var expiredURLs = [Int: Int]() + var sawEventSinceTick = false + var lastReportedPercent = -1 + + while done.count < plan.partCount { + try Task.checkCancellation() + + let slots = plan.openSlots( + window: Self.window, + active: active.count, + freeBytes: freeDiskSpace(), + reserve: Self.diskReserve + ) + let next = Array(plan.pendingParts(done: done, active: active).prefix(slots)) + if !next.isEmpty { + // Fresh URLs every time: an old one may have died with its signing credentials + for part in try await partURLs(uploadId: uploadId, partNumbers: next) { + // Checked per part: a cancel must not start what nothing will clean up + try Task.checkCancellation() + let partFile = try slice(part: part.partNumber, of: sourceURL, plan: plan) + transport.startPart(uuid: uuid, uploadId: uploadId, partNumber: part.partNumber, file: partFile, url: part.url) + active.insert(part.partNumber) } + } else if active.isEmpty { + throw UploadStop.retryLater("no disk space for the next part") } - uploadStateLock.lock() - progressSubscriber?.cancel() - progressSubscriber = progress - uploadStateLock.unlock() - - let completion = BPURLSession.shared.completionPublisher - .sink { [weak self] (task, error) in - guard let self = self else { return } - - // CRITICAL: Ensure this completion event belongs to this specific task - guard task.taskDescription == self.uuid else { return } - - if let nserror = error as? NSError, - nserror.domain == NSURLErrorDomain, - nserror.code == NSURLErrorCancelled { - // Deliberately NOT invalidating the cellular observer here: this cancelled - // completion belongs to the OLD task after a mid-flight cellular toggle — the - // replacement attempt just re-bound a fresh observer that must stay alive. - // Do nothing! The cellular KVO observer cancelled this task - // and is already spinning up a new one via startUploadTask(). - - } else if let error = error { - // Actual Failure — terminal for this operation, so the KVO can go. - self.invalidateCellularObserver() - Self.logger.error("Upload failed for \(self.uuid): \(error)") - self.didSucceed = false - self.finish() - - } else if let http = task.response as? HTTPURLResponse, - !(200...299).contains(http.statusCode) { - self.invalidateCellularObserver() - // error == nil is NOT success: the background delegate doesn't surface HTTP - // failures as errors, so a rejected PUT (expired presigned URL, 403) lands here. - // A 4xx is PERMANENT for this task — its presigned URL is frozen in the persisted - // parameters and will never work again. The queue retries failures forever on a - // single serial key, so keeping it failed hot-loops every 5s and blocks every - // other upload behind it. Consume it; the item stays unsynced and a fresh upload - // task (with a fresh URL) can be scheduled later. - Self.logger.error("Upload rejected for \(self.uuid): HTTP \(http.statusCode)") - self.didSucceed = (400...499).contains(http.statusCode) - // A consumed 4xx is never retried, so its temp hard link would leak forever - // without the same temp-dir-only cleanup the success branch does. (The - // retryable-failure branch above deliberately KEEPS the link — retries - // re-read the file.) - if self.didSucceed, self.fileURL.path.hasPrefix(FileManager.default.temporaryDirectory.path) { - try? FileManager.default.removeItem(at: self.fileURL) - } - self.finish() - } else { - self.invalidateCellularObserver() - // Success! Clean up the temp hard link — and ONLY the temp hard link: when the - // link was never created, fileURL falls back to the user's REAL audiobook in the - // Processed folder, and deleting that is data loss. - if self.fileURL.path.hasPrefix(FileManager.default.temporaryDirectory.path) { - Task { @MainActor in - do { - try FileManager.default.removeItem(at: self.fileURL) - } catch { - Self.logger.warning("Failed to delete hard link for \(self.uuid): \(error.localizedDescription)") - } + + guard let event = await iterator.next() else { throw CancellationError() } + switch event { + case .tick: + guard !sawEventSinceTick else { + sawEventSinceTick = false + continue + } + done = try await uploadedParts(uploadId: uploadId) + active = await transport.activePartNumbers(for: uuid, uploadId: uploadId).subtracting(done) + case .cellularSettingChanged: + // Their cancellations come back as `.resend` + await transport.cancelParts(for: uuid) + case .part(.progress(let partNumber, let bytesSent)): + sawEventSinceTick = true + // A late progress callback (the delegate queue is concurrent) for a finished part + guard active.contains(partNumber) else { continue } + bytesInFlight[partNumber] = bytesSent + case .part(.finished(let partNumber, let statusCode, let error)): + sawEventSinceTick = true + guard active.remove(partNumber) != nil else { continue } + bytesInFlight[partNumber] = nil + switch Self.outcome(statusCode: statusCode, error: error) { + case .uploaded: + done.insert(partNumber) + failures[partNumber] = nil + expiredURLs[partNumber] = nil + try? FileManager.default.removeItem(at: partFileURL(partNumber)) + case .resend: + // Sent again at the next top-up with a fresh URL. Only a 403 counts: a URL that + // keeps failing when fresh isn't expiring, the request itself is refused. + if statusCode == 403 { + expiredURLs[partNumber, default: 0] += 1 + if expiredURLs[partNumber, default: 0] >= Self.maxPartAttempts { + throw UploadStop.retryLater("part \(partNumber) keeps being refused") } } - self.uploadCompleted = true - self.didSucceed = true - self.finish() + case .uploadGone: + throw UploadStop.restart(cause: Self.uploadLostError) + case .failed: + failures[partNumber, default: 0] += 1 + if failures[partNumber, default: 0] >= Self.maxPartAttempts { + throw UploadStop.retryLater("part \(partNumber) keeps failing") + } } } - uploadStateLock.lock() - completionSubscriber?.cancel() - completionSubscriber = completion - uploadStateLock.unlock() - } - - // MARK: - Cleanup - // If the Orchestrator cancels the operation entirely, we must sever all ties. - override func cancel() { - super.cancel() - uploadStateLock.lock() - currentUploadTask?.cancel() - cellularDataObserver?.invalidate() - cellularDataObserver = nil - progressSubscriber?.cancel() - completionSubscriber?.cancel() - uploadStateLock.unlock() - // A cancelled mid-flight upload leaks its temp hard link (only the success branch - // cleans up) — same temp-dir guard so the user's real file is never touched. - if fileURL.path.hasPrefix(FileManager.default.temporaryDirectory.path) { - try? FileManager.default.removeItem(at: fileURL) + lastReportedPercent = reportProgress( + plan: plan, + done: done, + bytesInFlight: bytesInFlight, + lastReportedPercent: lastReportedPercent + ) } - // The completion subscriber (which would have called finish()) was just torn down — - // without this, an operation cancelled mid-flight stays .executing forever and its - // OperationQueue slot is never reclaimed. - if isExecuting { finish() } + } + + /// `true` once S3 assembled the file; `false` when parts turned out missing (send them) + private func complete() async throws -> Bool { + guard let uploadId = uploadState.uploadId else { return false } + let plan = MultipartUploadPlan(fileSize: uploadState.fileSize, partSize: uploadState.partSize) + do { + let _: CompleteUploadResponse = try await provider.request( + .completeUpload(uuid: uuid, uploadId: uploadId, partCount: plan.partCount, fileSize: uploadState.fileSize) + ) + return true + } catch let error as BookPlayerError { + switch Self.code(of: error) { + case "parts_missing": + return false + case "upload_not_found", "invalid_parts": + throw UploadStop.restart(cause: error) + default: + throw error + } + } + } + + private func uploadedParts(uploadId: String) async throws -> Set { + do { + let response: UploadedPartsResponse = try await provider.request( + .uploadedParts(uuid: uuid, uploadId: uploadId) + ) + return Set(response.parts.map(\.partNumber)) + } catch let error as BookPlayerError where Self.code(of: error) == "upload_not_found" { + throw UploadStop.restart(cause: error) + } + } + + private func partURLs(uploadId: String, partNumbers: [Int]) async throws -> [UploadPartURLsResponse.Part] { + do { + let response: UploadPartURLsResponse = try await provider.request( + .uploadPartURLs(uuid: uuid, uploadId: uploadId, partNumbers: partNumbers) + ) + return response.parts + } catch let error as BookPlayerError where Self.code(of: error) == "upload_not_found" { + throw UploadStop.restart(cause: error) + } + } + + /// Drops the open upload (the next pass starts a new one). Parts still in the session + /// belong to it, so they're cancelled with their files. + private func forgetUpload(countingRestart: Bool) async throws { + await transport.cancelParts(for: uuid) + try? FileManager.default.removeItem(at: Self.partsDirectory(for: uuid)) + uploadState.uploadId = nil + if countingRestart { + uploadState.restartCount += 1 + } + try await saveState() + } + + private func saveState() async throws { + guard await repository.saveUploadState(uploadState, forTask: taskId) else { + // Cleared by a logout or lapse while uploading + throw CancellationError() + } + } + + // MARK: - Events + + private enum EngineEvent { + case part(PartUploadEvent) + case tick + case cellularSettingChanged + } + + enum PartOutcome: Equatable { + case uploaded + /// Send the part again (new URL); not counted as a failure + case resend + /// S3 no longer has the upload (NoSuchUpload) + case uploadGone + /// Retry the part, counted toward `maxPartAttempts` + case failed + } + + /// S3's answer to a part PUT (bookplayer-api docs/multipart-uploads.md): 403 = the URL + /// expired, 404 = the upload is gone, anything else = retry the part + static func outcome(statusCode: Int?, error: Error?) -> PartOutcome { + if let error = error as? URLError, error.code == .cancelled { + return .resend + } + guard error == nil, let statusCode else { return .failed } + switch statusCode { + case 200...299: + return .uploaded + case 403: + return .resend + case 404: + return .uploadGone + default: + return .failed + } + } + + /// `complete` keeps finding gaps the part list doesn't show + static let partsMissingError = BookPlayerError.networkErrorWithCode( + message: "The upload keeps missing parts", + code: "parts_missing", + status: 409 + ) + + /// A part's 404: the upload is gone, same as the server's `upload_not_found` + static let uploadLostError = BookPlayerError.networkErrorWithCode( + message: "The upload is no longer open", + code: "upload_not_found", + status: 404 + ) + + static func code(of error: BookPlayerError) -> String? { + guard case .networkErrorWithCode(_, let code, _) = error else { return nil } + return code + } + + // MARK: - Files + + private func resolveSourceFile() async -> URL? { + if FileManager.default.fileExists(atPath: fileURL.path) { + return fileURL + } + guard let libraryURL = await libraryFileURL(uuid), + FileManager.default.fileExists(atPath: libraryURL.path) + else { return nil } + return libraryURL + } + + private func partFileURL(_ partNumber: Int) -> URL { + Self.partsDirectory(for: uuid).appendingPathComponent("\(partNumber).part") + } + + /// Copies one part's bytes into its own file; reuses a complete one from an earlier pass + private func slice(part partNumber: Int, of sourceURL: URL, plan: MultipartUploadPlan) throws -> URL { + let partURL = partFileURL(partNumber) + let size = plan.size(of: partNumber) + if let existing = try? Self.fileSize(of: partURL), existing == size { + return partURL + } + + try FileManager.default.createDirectory( + at: Self.partsDirectory(for: uuid), + withIntermediateDirectories: true + ) + FileManager.default.createFile(atPath: partURL.path, contents: nil) + let reader = try FileHandle(forReadingFrom: sourceURL) + let writer = try FileHandle(forWritingTo: partURL) + defer { + try? reader.close() + try? writer.close() + } + + try reader.seek(toOffset: UInt64(plan.range(of: partNumber).lowerBound)) + var remaining = size + let chunk: Int64 = 4 * 1024 * 1024 + while remaining > 0 { + // Drained per chunk: a part is 64 MiB, and several are sliced back to back + try autoreleasepool { + guard let data = try reader.read(upToCount: Int(min(chunk, remaining))), !data.isEmpty else { + throw BookPlayerError.runtimeError("The file ended before part \(partNumber)") + } + try writer.write(contentsOf: data) + remaining -= Int64(data.count) + } + } + return partURL + } + + /// Parts, then the temp hard link (only ever a regular file inside tmp) + private func removeLocalFiles() { + try? FileManager.default.removeItem(at: Self.partsDirectory(for: uuid)) + SyncJobScheduler.removeHardLink(at: fileURL) + } + + static func fileSize(of url: URL) throws -> Int64 { + let values = try url.resourceValues(forKeys: [.fileSizeKey]) + return Int64(values.fileSize ?? 0) + } + + static func availableDiskSpace() -> Int64 { + let url = FileManager.default.temporaryDirectory +#if os(watchOS) + let values = try? url.resourceValues(forKeys: [.volumeAvailableCapacityKey]) + return Int64(values?.volumeAvailableCapacity ?? 0) +#else + let values = try? url.resourceValues(forKeys: [.volumeAvailableCapacityForImportantUsageKey]) + return values?.volumeAvailableCapacityForImportantUsage ?? 0 +#endif + } + + // MARK: - Progress + + /// Reports only when the whole percentage changes: eight parts call back many times a + /// second, and every report posts to the main thread. Returns the percentage reported. + private func reportProgress( + plan: MultipartUploadPlan, + done: Set, + bytesInFlight: [Int: Int64], + lastReportedPercent: Int + ) -> Int { + guard plan.fileSize > 0 else { return lastReportedPercent } + let sent = done.reduce(Int64(0)) { $0 + plan.size(of: $1) } + bytesInFlight.values.reduce(0, +) + let progress = min(1, Double(sent) / Double(plan.fileSize)) + let percent = Int(progress * 100) + guard percent != lastReportedPercent else { return lastReportedPercent } + onProgress?(progress) + return percent } } diff --git a/Shared/Services/SyncQueue/PartUploadTransport.swift b/Shared/Services/SyncQueue/PartUploadTransport.swift new file mode 100644 index 000000000..3b19c33a0 --- /dev/null +++ b/Shared/Services/SyncQueue/PartUploadTransport.swift @@ -0,0 +1,118 @@ +// +// PartUploadTransport.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Combine +import Foundation + +/// What happened to one part of a multipart upload +enum PartUploadEvent { + case progress(partNumber: Int, bytesSent: Int64) + /// `statusCode` is S3's answer; nil when the request never got one (`error` says why) + case finished(partNumber: Int, statusCode: Int?, error: Error?) +} + +/// Sends a multipart upload's parts. The background implementation hands them to iOS, so +/// they keep going while the app is suspended; the engine only needs this seam. +protocol PartUploadTransport: AnyObject { + /// Parts of this S3 upload the system is still sending (or holding until it can) + func activePartNumbers(for uuid: String, uploadId: String) async -> Set + /// PUTs `file` to the part's presigned URL + func startPart(uuid: String, uploadId: String, partNumber: Int, file: URL, url: URL) + /// Every part of the book, whichever upload it belongs to + func cancelParts(for uuid: String) async + /// Delivers this S3 upload's part events until the returned subscription is cancelled. + /// Events of the book's earlier uploads (cancelled by a restart) never arrive here. + func subscribe(uuid: String, uploadId: String, handler: @escaping (PartUploadEvent) -> Void) -> AnyCancellable +} + +/// `BPURLSession`'s two background sessions. Each part is its own upload task, described +/// `#@` — the only link between a task and its upload, what +/// lets a relaunch find the parts still in flight, and what keeps a restarted upload from +/// reading its predecessor's late events. +final class BackgroundPartUploadTransport: PartUploadTransport { + static let shared = BackgroundPartUploadTransport() + + private var sessions: [URLSession] { + [BPURLSession.shared.backgroundSession, BPURLSession.shared.backgroundCellularSession] + } + + static func taskDescription(uuid: String, partNumber: Int, uploadId: String) -> String { + "\(uuid)#\(partNumber)@\(uploadId)" + } + + /// nil for anything that isn't a part (e.g. a single-PUT upload from an older build). + /// Split at the first `#` and the first `@` after it: uuids carry neither. + static func parse(_ description: String?) -> (uuid: String, partNumber: Int, uploadId: String)? { + guard + let description, + let hash = description.firstIndex(of: "#"), + let at = description[hash...].firstIndex(of: "@"), + let partNumber = Int(description[description.index(after: hash).. Set { + var parts = Set() + for session in sessions { + for task in await session.allTasks where task.state == .running || task.state == .suspended { + if let parsed = Self.parse(task.taskDescription), parsed.uuid == uuid, parsed.uploadId == uploadId { + parts.insert(parsed.partNumber) + } + } + } + return parts + } + + func startPart(uuid: String, uploadId: String, partNumber: Int, file: URL, url: URL) { + let allowCellular = UserDefaults.standard.bool(forKey: Constants.UserDefaults.allowCellularData) + let session = allowCellular + ? BPURLSession.shared.backgroundCellularSession + : BPURLSession.shared.backgroundSession + // No auth header and no extra headers: the presigned signature covers `host` only + var request = URLRequest(url: url) + request.httpMethod = "PUT" + request.cachePolicy = .reloadIgnoringLocalCacheData + let task = session.uploadTask(with: request, fromFile: file) + task.taskDescription = Self.taskDescription(uuid: uuid, partNumber: partNumber, uploadId: uploadId) + task.resume() + } + + func cancelParts(for uuid: String) async { + for session in sessions { + for task in await session.allTasks { + if let parsed = Self.parse(task.taskDescription), parsed.uuid == uuid { + task.cancel() + } + } + } + } + + func subscribe(uuid: String, uploadId: String, handler: @escaping (PartUploadEvent) -> Void) -> AnyCancellable { + let belongs: (URLSessionTask) -> Int? = { task in + guard let parsed = Self.parse(task.taskDescription), + parsed.uuid == uuid, + parsed.uploadId == uploadId + else { return nil } + return parsed.partNumber + } + let progress = BPURLSession.shared.progressPublisher + .compactMap { task, bytesSent -> PartUploadEvent? in + guard let partNumber = belongs(task) else { return nil } + return .progress(partNumber: partNumber, bytesSent: bytesSent) + } + let completion = BPURLSession.shared.completionPublisher + .compactMap { task, error -> PartUploadEvent? in + guard let partNumber = belongs(task) else { return nil } + // The background delegate doesn't surface HTTP failures as errors: S3's status + // comes from the response + let status = (task.response as? HTTPURLResponse)?.statusCode + return .finished(partNumber: partNumber, statusCode: status, error: error) + } + return progress.merge(with: completion).sink(receiveValue: handler) + } +} diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index cb0631123..ad6e0f3bf 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -334,6 +334,7 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { await self.taskContainer.pop(nextTask) } else { let error = (operation as? LibraryItemSyncOperation)?.error + ?? (operation as? FileUploadOperation)?.error if let error { Self.logger.error("Sync task failed: \(error.localizedDescription)") await MainActor.run { @@ -371,14 +372,13 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { jobType: task.jobType, parkingEnabled: parkingEnabled ) - guard - action != .retry, - let error = error as? BookPlayerError, - case .networkErrorWithCode(let message, let code, let status) = error - else { + guard action != .retry, let failure = SyncFailurePolicy.codedFailure(error) else { try? await Task.sleep(for: .seconds(5)) return } + let code = failure.code + let message = failure.message + let status = failure.httpStatus switch action { case .retry: @@ -411,10 +411,10 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { scope: TaskPauseScope, code: String, message: String, - status: Int, + status: Int?, report: Bool = true ) async -> TaskPause? { - Self.logger.error("Pausing \(task.jobType.rawValue) task \(task.id) (\(scope.rawValue)): the server answered \(code)") + Self.logger.error("Pausing \(task.jobType.rawValue) task \(task.id) (\(scope.rawValue)): failed with \(code)") guard let pause = await taskContainer.park( taskId: task.id, @@ -500,15 +500,25 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { return nil } guard let filePath = task.parameters["filePath"] as? String, - let remotePath = task.parameters["remotePath"] as? String, let fileURL = URL(string: filePath), - let remoteURL = URL(string: remotePath), let uuid = task.parameters["uuid"] as? String else { Self.logger.error("Discarding uploadFile task \(task.id): missing or malformed parameters") cleanUpDroppedUploadTempLink(task) return nil } - return FileUploadOperation(fileURL: fileURL, remoteURL: remoteURL, uuid: uuid) + let libraryService = libraryService + return FileUploadOperation( + taskId: task.id, + uuid: uuid, + fileURL: fileURL, + state: MultipartUploadState(parameters: task.parameters), + client: networkClient, + repository: taskContainer, + libraryFileURL: { uuid in + guard let relativePath = await libraryService?.fetchRelativePath(forUuid: uuid) else { return nil } + return DataManager.getProcessedFolderURL().appendingPathComponent(relativePath) + } + ) default: /// Serial BookPlayer-server queue return LibraryItemSyncOperation( @@ -526,39 +536,12 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { /// Post-completion side effects for finished sync tasks private func handleFinishedOperation(_ operation: AsyncOperation, task: QueuedSyncTask) async { - // The synced:true confirmation for file-backed books happens HERE, after the bytes are - // actually on S3 — LibraryItemSyncOperation deliberately no longer confirms when it - // schedules a file upload (confirming before the PUT lies to the server if the upload - // later fails permanently). - // uploadCompleted (a real 2xx), NOT didSucceed: consumed permanent failures (missing - // file, 4xx) also report didSucceed so the queue stops retrying, but no bytes reached - // the server — confirming synced:true for those lies to the backend. - if let uploadOperation = operation as? FileUploadOperation, uploadOperation.uploadCompleted { - let provider = NetworkProvider(client: networkClient) - // The task is popped unconditionally after this, so a transient confirmation failure - // would strand the item as synced:false with its bytes already on S3 — retry a few - // times before surfacing it in lastSyncError (a later re-upload of the same item heals). - for attempt in 1...3 { - do { - let _: UploadItemResponse = try await provider.request(.update(params: [ - "uuid": uploadOperation.uuid, - "relativePath": task.relativePath, - "synced": true - ])) - NotificationCenter.default.post(name: .uploadCompleted, object: nil) - return - } catch { - Self.logger.error("Upload confirmation attempt \(attempt) failed for \(uploadOperation.uuid): \(error.localizedDescription)") - if attempt < 3 { try? await Task.sleep(for: .seconds(2)) } - else { - await MainActor.run { - self.lastSyncError = SyncErrorInfo( - taskId: task.id, uuid: uploadOperation.uuid, - jobType: .uploadFile, error: error.localizedDescription - ) - } - } - } + // The server sets synced:true itself when it assembles a multipart upload; there is + // nothing to confirm. uploadCompleted (S3 has the file), NOT didSucceed: a consumed + // task (its file gone) also reports didSucceed. + if let uploadOperation = operation as? FileUploadOperation { + if uploadOperation.uploadCompleted { + NotificationCenter.default.post(name: .uploadCompleted, object: nil) } return } @@ -623,16 +606,13 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } } + /// The server answered the metadata upload with a URL: it needs the file's bytes private func handleUploadResult(_ result: UploadResponse) { - guard let remotePath = result.remotePath else { return } - var params: [String: Any] = [ "filePath": result.filePath, - "remotePath": remotePath, "uuid": result.uuid, ] - // Persisted onto the task reference — the post-PUT synced:true confirmation posts it, - // and an empty relativePath there mismatches the server's item key. + // Persisted onto the task reference, which names the row in Queued Tasks if let relativePath = result.relativePath { params["relativePath"] = relativePath } diff --git a/Shared/Services/SyncQueue/TaskPause.swift b/Shared/Services/SyncQueue/TaskPause.swift index 65a51d0fe..ee8d8e7d0 100644 --- a/Shared/Services/SyncQueue/TaskPause.swift +++ b/Shared/Services/SyncQueue/TaskPause.swift @@ -60,21 +60,38 @@ public enum SyncFailureAction: Equatable { case verifyAccount } +/// A failure that says it can never succeed as it is: the server's coded 4xx, or a book +/// the app itself refuses to upload +public struct CodedFailure: Equatable { + public let code: String + public let message: String + public let httpStatus: Int? +} + public enum SyncFailurePolicy { /// Codes about the account, not the task static let accountCodes: Set = ["not_subscribed", "tier_required"] - /// Only a coded 4xx parks: a code means the request can never succeed as sent. Anything - /// uncoded keeps retrying, so a new server failure mode never strands tasks. + /// nil for anything uncoded (network, 5xx, cancellation): those keep retrying + public static func codedFailure(_ error: Error?) -> CodedFailure? { + if let error = error as? UploadFileError { + return CodedFailure(code: error.code, message: error.message, httpStatus: nil) + } + guard + let error = error as? BookPlayerError, + case .networkErrorWithCode(let message, let code, let status) = error + else { return nil } + return CodedFailure(code: code, message: message, httpStatus: status) + } + + /// Only a coded failure parks: a code means the request can never succeed as sent. + /// Anything uncoded keeps retrying, so a new server failure mode never strands tasks. public static func action( for error: Error?, jobType: SyncJobType, parkingEnabled: Bool ) -> SyncFailureAction { - guard - let error = error as? BookPlayerError, - case .networkErrorWithCode(_, let code, _) = error - else { return .retry } + guard let code = codedFailure(error)?.code else { return .retry } // Media-server pushes never hit the BookPlayer server; their own failure handling // stands, and an account pause must never land on a provider lane diff --git a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift index e8006561a..0d44ba668 100644 --- a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift +++ b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift @@ -387,7 +387,6 @@ public enum SchemaV3: VersionedSchema { public class UploadFileTaskModel { @Attribute(.unique) public var id: String public var filePath: String - public var remotePath: String? public var uuid: String /// The open multipart upload (nil until `start` answers). With it, the upload resumes /// from S3's part list; `start` again would abort it. @@ -404,7 +403,6 @@ public enum SchemaV3: VersionedSchema { id: String, uuid: String, filePath: String, - remotePath: String? = nil, uploadId: String? = nil, partSize: Int = 0, fileSize: Int64 = 0, @@ -413,7 +411,6 @@ public enum SchemaV3: VersionedSchema { self.id = id self.uuid = uuid self.filePath = filePath - self.remotePath = remotePath self.uploadId = uploadId self.partSize = partSize self.fileSize = fileSize diff --git a/Shared/SwiftData/SwiftDataModels+Extensions.swift b/Shared/SwiftData/SwiftDataModels+Extensions.swift index 9d3188f93..e630f5f9e 100644 --- a/Shared/SwiftData/SwiftDataModels+Extensions.swift +++ b/Shared/SwiftData/SwiftDataModels+Extensions.swift @@ -278,10 +278,6 @@ extension UploadFileTaskModel: DictionaryConvertible { "restartCount": restartCount, ] - if let remotePath { - dictionary["remotePath"] = remotePath - } - if let uploadId { dictionary["uploadId"] = uploadId } diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index cb860c1b9..240294fd4 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -388,8 +388,7 @@ public final class TasksDataManager: BPLogger { let task = UploadFileTaskModel( id: parameters["id"] as! String, uuid: parameters["uuid"] as! String, - filePath: parameters["filePath"] as! String, - remotePath: parameters["remotePath"] as? String + filePath: parameters["filePath"] as! String ) context.insert(task) } From 19cd4b3284140c11ebc0646897c87d3918b03313 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 27 Sep 2026 15:57:22 -0500 Subject: [PATCH 163/172] feat(upload): media-server files and lost books go through the upload lane The stream-to-cloud pipe PUT a downloaded media-server book's whole file from inside the serial sync lane through the removed external_set route: a book over 5 GiB would fail every retry and block all sync behind it. Its job now just queues the file for the upload lane (still in sync-lane order, after the item's own tasks); the server marks the book's media-server resources downloaded at complete. An upload the server answers with item_not_found is handed back instead of parked: the book is re-registered through the sync lane from its current state (item, external resources, bookmarks, then the pipe job for a media-server book), or dropped when it's gone locally too. The replacement is stored before the task is popped. A second item_not_found for the same book in a session parks it, since re-registering didn't help (e.g. another uuid holds its key on the server). Only a media-server link now marks an upload as provider-backed. Any first external resource used to, including a Hardcover link, and that flag keeps the upload's answer from scheduling the file: a local book with a Hardcover link never had its file uploaded. --- BookPlayerTests/Services/SyncQueueTests.swift | 156 ++++++++++++++++++ CLAUDE.md | 9 + Shared/Services/LibraryService+Sync.swift | 22 +++ Shared/Services/Sync/LibraryAPI.swift | 10 -- .../Sync/LibraryItemSyncOperation.swift | 64 +------ Shared/Services/Sync/Model/SyncableItem.swift | 10 ++ Shared/Services/Sync/SyncJobScheduler.swift | 10 +- Shared/Services/Sync/SyncService.swift | 2 +- .../Services/SyncQueue/SyncQueueService.swift | 65 +++++++- .../Models/SchemaV3SyncTasksModels.swift | 5 +- .../SwiftDataModels+Extensions.swift | 1 - Shared/SwiftData/TasksDataManager.swift | 3 +- 12 files changed, 278 insertions(+), 79 deletions(-) diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index c7d0932d1..e9255b371 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -1082,3 +1082,159 @@ extension SyncQueueTests { XCTAssertTrue(FileManager.default.fileExists(atPath: link.path), "the link stays for a Retry") } } + +// MARK: - Sync-lane hand-offs to the upload lane + +extension SyncQueueTests { + private func syncableItem(uuid: String, mediaServer: Bool) throws -> SyncableItem { + let resources = mediaServer + ? #","externalResources":[{"providerName":"jellyfin","providerId":"jf-1","syncStatus":"stream"}]"# + : "" + let json = #"{"relativePath":"Book.m4b","originalFileName":"Book.m4b","title":"Book","isFinished":false,"type":2,"uuid":"\#(uuid)"\#(resources)}"# + return try JSONDecoder().decode(SyncableItem.self, from: Data(json.utf8)) + } + + /// The upload lane hit `item_not_found`: the book is registered again through the sync + /// lane (from its current state), and this upload task is gone + private func runHandBack(item: SyncableItem?) async throws -> [QueuedSyncTask] { + let service = makeGatedEngine() + // `start` answers item_not_found; everything after (the re-registration) just fails, + // so the new sync task stays queued for the assertions + service.networkClient = FailingNetworkClient( + errors: [BookPlayerError.networkErrorWithCode(message: "gone", code: "item_not_found", status: 404)] + + Array(repeating: URLError(.timedOut), count: 50) + ) + service.findSyncableItem = { _ in item } + let link = FileManager.default.temporaryDirectory.appendingPathComponent("handback-\(UUID().uuidString).m4b") + try Data("0123456789".utf8).write(to: link) + defer { try? FileManager.default.removeItem(at: link) } + var params = uploadFileParams(id: "lost") + params["filePath"] = link.absoluteString + params["uuid"] = item?.uuid ?? UUID().uuidString + try await repository.storeTask(parameters: params) + + service.setServerLanesEnabled(true) + + let deadline = Date().addingTimeInterval(3) + var tasks = [QueuedSyncTask]() + while Date() < deadline { + tasks = await repository.getAllTasks() + if !tasks.contains(where: { $0.id == "lost" }) { break } + try await Task.sleep(for: .milliseconds(20)) + } + service.setServerLanesEnabled(false) + return tasks + } + + func testUploadOfABookTheServerLost_registersItAgain() async throws { + let uuid = UUID().uuidString + let tasks = try await runHandBack(item: try syncableItem(uuid: uuid, mediaServer: false)) + + XCTAssertFalse(tasks.contains { $0.id == "lost" }) + XCTAssertEqual(tasks.map(\.jobType), [.upload]) + XCTAssertEqual(tasks.first?.uuid, uuid) + XCTAssertNil(tasks.first?.pause) + } + + /// A media-server book's re-registration carries `provider`, which never schedules the + /// file: the pipe job follows it so the file still goes up + func testUploadOfAMediaServerBookTheServerLost_alsoQueuesItsFile() async throws { + let tasks = try await runHandBack(item: try syncableItem(uuid: UUID().uuidString, mediaServer: true)) + + // The item, its media-server link (so `complete` has a resource to mark downloaded), + // then its file + XCTAssertEqual(tasks.map(\.jobType), [.upload, .externalResource, .externalResourceToDownload]) + } + + /// Re-registering didn't help (e.g. another uuid holds the key on the server): the second + /// item_not_found for the same book parks it instead of cycling PUT + start forever + func testSecondItemNotFound_forTheSameBook_parksInsteadOfCycling() async throws { + let service = makeGatedEngine() + let lost = BookPlayerError.networkErrorWithCode(message: "gone", code: "item_not_found", status: 404) + service.networkClient = FailingNetworkClient(errors: [lost, lost] + Array(repeating: URLError(.timedOut), count: 50)) + let uuid = UUID().uuidString + service.findSyncableItem = { _ in nil } + for id in ["first", "second"] { + let link = FileManager.default.temporaryDirectory.appendingPathComponent("cycle-\(id)-\(UUID().uuidString).m4b") + try Data("0123456789".utf8).write(to: link) + var params = uploadFileParams(id: id) + params["filePath"] = link.absoluteString + params["uuid"] = uuid + try await repository.storeTask(parameters: params) + } + + service.setServerLanesEnabled(true) + + let deadline = Date().addingTimeInterval(10) + var tasks = [QueuedSyncTask]() + while Date() < deadline { + tasks = await repository.getAllTasks() + if tasks.map(\.id) == ["second"], tasks.first?.pause != nil { break } + try await Task.sleep(for: .milliseconds(50)) + } + service.setServerLanesEnabled(false) + XCTAssertEqual(tasks.map(\.id), ["second"], "the first was handed back (dropped: gone locally), the second parks") + XCTAssertEqual(tasks.first?.pause?.errorCode, "item_not_found") + XCTAssertEqual(tasks.first?.pause?.scope, .task) + } + + /// Only a media-server link marks a book as streamed: a Hardcover link has no file and + /// must not stop the book's own file from uploading + func testUploadJob_flagsOnlyMediaServerBooksAsProviderBacked() async throws { + let scheduler = SyncJobScheduler(tasksRepository: repository) + let hardcover = try JSONDecoder().decode(SyncableItem.self, from: Data( + #"{"relativePath":"Local.m4b","originalFileName":"Local.m4b","title":"Local","isFinished":false,"type":2,"uuid":"\#(UUID().uuidString)","externalResources":[{"providerName":"hardcover","providerId":"hc-1","syncStatus":"not_synced"}]}"#.utf8 + )) + let streamed = try syncableItem(uuid: UUID().uuidString, mediaServer: true) + + await scheduler.scheduleLibraryItemUploadJob(for: hardcover) + await scheduler.scheduleLibraryItemUploadJob(for: streamed) + + let jobs = await repository.getAllTasksWithParams(in: TaskQueueKey.sync) + XCTAssertEqual(jobs.count, 2) + XCTAssertNil(jobs.first { $0.relativePath == "Local.m4b" }?.parameters["provider"]) + XCTAssertEqual(jobs.first { $0.relativePath == "Book.m4b" }?.parameters["provider"] as? String, "jellyfin") + } + + func testUploadOfABookGoneEverywhere_isDropped() async throws { + let tasks = try await runHandBack(item: nil) + + XCTAssertTrue(tasks.isEmpty) + } + + /// A downloaded media-server book's file goes to S3 through the upload lane: the job's + /// result schedules the upload of the local file (no server call of its own) + func testMediaServerDownload_queuesTheUploadOfItsFile() async throws { + let name = "pipe-\(UUID().uuidString).m4b" + let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(name) + try FileManager.default.createDirectory(at: DataManager.getProcessedFolderURL(), withIntermediateDirectories: true) + try Data("0123456789".utf8).write(to: fileURL) + defer { try? FileManager.default.removeItem(at: fileURL) } + let uuid = UUID().uuidString + let operation = LibraryItemSyncOperation( + client: FailingNetworkClient(errors: []), + task: SyncTask( + id: "pipe", + uuid: uuid, + relativePath: name, + jobType: .externalResourceToDownload, + parameters: ["id": "pipe", "uuid": uuid, "relativePath": name] + ) + ) + + let done = expectation(description: "finished") + let observer = operation.observe(\.isFinished, options: [.initial, .new]) { op, _ in + if op.isFinished { done.fulfill() } + } + operation.start() + await fulfillment(of: [done], timeout: 3) + observer.invalidate() + + XCTAssertTrue(operation.didSucceed) + guard case .uploadMetadata(let result) = operation.results else { + return XCTFail("expected the file to be handed to the upload lane") + } + XCTAssertEqual(result.uuid, uuid) + XCTAssertEqual(URL(string: result.filePath)?.path, fileURL.path) + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 5c30a0b2a..2435d910c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -372,6 +372,15 @@ lines). It is the highest-risk file in the app. `file_too_large`. The source is the temp hard link, else the book's current Processed file found by uuid (`LibrarySyncProtocol.fetchRelativePath(forUuid:)`) — never deleted. A cellular-setting change cancels the parts in flight so they resend through the session that now applies. + `item_not_found` from the upload routes is not parked the first time: the book is re-registered through the sync + lane from its CURRENT state (`LibrarySyncProtocol.fetchSyncableItem(forUuid:)`) — item, external resources, + bookmarks, like `SyncService.handleItemsToUpload` — before the task is popped, or dropped when it's gone locally + too. Always re-register (decided): a book deleted on another device mid-upload can come back. A SECOND + `item_not_found` for the same uuid in a session parks it (re-registering didn't help: e.g. another uuid holds + its key on the server). Only a MEDIA-SERVER link (`SyncableItem.mediaServerProviderName`, never Hardcover) marks an + `.upload` as provider-backed (its answer then schedules no file); such a book's file goes up once downloaded + through the sync-lane `externalResourceToDownload` job, which just schedules the upload (the old `external_set` + route is gone; `complete` marks the resources downloaded). - `SyncService.swift` is `@Observable`. **`isActive` is `public private(set)` and must be mutated only via `updateSyncEnabled(_:)` / `logout()`** (both hop to `@MainActor`). It is driven by `.logout` (→ teardown, clears scheduled-contents flag, resets jobs) and `.accountUpdate` (→ `updateSyncEnabled(hasSyncEnabled())`) diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index ba20f0c97..c46bdc85e 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -57,6 +57,11 @@ public protocol LibrarySyncProtocol { /// The item's current path, read on a background context (an upload in the background /// finds its book's file by uuid after the user moved it) func fetchRelativePath(forUuid uuid: String) async -> String? + + /// The item as the server would register it, found by uuid on a background context: an + /// upload the server no longer recognizes is re-registered from the book's CURRENT state + /// (a stale path would make the server move another item into place) + func fetchSyncableItem(forUuid uuid: String) async -> SyncableItem? } extension LibraryService: LibrarySyncProtocol { @@ -113,6 +118,23 @@ extension LibraryService: LibrarySyncProtocol { } } + public func fetchSyncableItem(forUuid uuid: String) async -> SyncableItem? { + guard Constants.isRealUuid(uuid) else { return nil } + return await withCheckedContinuation { continuation in + let context = dataManager.getBackgroundContext() + context.perform { [unowned self, context] in + let fetchRequest = NSFetchRequest(entityName: "LibraryItem") + fetchRequest.propertiesToFetch = SyncableItem.fetchRequestProperties + fetchRequest.resultType = .dictionaryResultType + fetchRequest.predicate = NSPredicate(format: "%K == %@", #keyPath(LibraryItem.uuid), uuid) + fetchRequest.fetchLimit = 1 + + let results = try? context.fetch(fetchRequest) as? [[String: Any]] + continuation.resume(returning: parseSyncableItems(from: results, context: context)?.first) + } + } + } + public func getItemDuration(at relativePath: String) async -> Double? { return await withCheckedContinuation { continuation in let context = dataManager.getBackgroundContext() diff --git a/Shared/Services/Sync/LibraryAPI.swift b/Shared/Services/Sync/LibraryAPI.swift index 7dfa110a2..466a951ec 100644 --- a/Shared/Services/Sync/LibraryAPI.swift +++ b/Shared/Services/Sync/LibraryAPI.swift @@ -24,7 +24,6 @@ public enum LibraryAPI { case setBookmark(path: String, note: String?, time: Double, isActive: Bool, uuid: String) case uploadArtwork(path: String, filename: String, uploaded: Bool?, uuid: String) case matchUuids(uuidsDictionary: [String: String]) - case externalResourceToDownload(uuid: String, uploaded: Bool) case deleteExternalResource(uuid: String, providerName: String, providerId: String) /// Multipart upload of a book's file (bookplayer-api docs/multipart-uploads.md). Every /// call names the book by uuid; the server derives the S3 key. Call `startUpload` only @@ -73,8 +72,6 @@ extension LibraryAPI: Endpoint { return "/v1/library/uuids" case .externalResource: return "/v1/library/external" - case .externalResourceToDownload: - return "/v1/library/external_set" case .deleteExternalResource: return "/v1/library/external" case .startUpload: @@ -120,8 +117,6 @@ extension LibraryAPI: Endpoint { return .post case .externalResource: return .put - case .externalResourceToDownload: - return .post case .deleteExternalResource: return .delete case .startUpload, .uploadPartURLs, .completeUpload, .abortUpload: @@ -211,11 +206,6 @@ extension LibraryAPI: Endpoint { ] case .externalResource(let params): return params - case .externalResourceToDownload(let uuid, let uploaded): - return [ - "uuid": uuid, - "uploaded": uploaded - ] case .deleteExternalResource(let uuid, let providerName, let providerId): return [ "uuid": uuid, diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index aa22a1f65..f92b928b5 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -309,67 +309,21 @@ extension LibraryItemSyncOperation { } extension LibraryItemSyncOperation { + /// A media-server book finished downloading on a PRO account: its file goes to S3 like + /// any book's, through the upload lane. Run from the sync lane so it follows the task + /// that created the item's row; `complete` marks its media-server resources downloaded. func handleExternalResourceToDownload() async throws { - let response: UploadItemContent = try await self.provider.request( - .externalResourceToDownload(uuid: uuid, uploaded: false) - ) - let hardLinkURL = SyncJobScheduler.hardLinkURL(for: self.relativePath) let fileURL = FileManager.default.fileExists(atPath: hardLinkURL.path) ? hardLinkURL : DataManager.getProcessedFolderURL().appendingPathComponent(self.relativePath) - - guard FileManager.default.fileExists(atPath: fileURL.path), - let remoteUrl = response.url else { - // Consuming on nil url is the server CONTRACT, not an accident: external_set answers - // url == null when the account tier has no S3 (lite) or the object already exists — - // both permanent for this task. A missing local file likewise can't heal by retrying. - return - } - // Streamed straight from disk — audiobooks run into the GBs and must never be - // materialized as a single in-memory Data. A failed upload THROWS so the task is - // retried and the server is never told the file exists when it doesn't. - // Foreground session by design (for now): this pipe upload runs inside the retrying - // sync operation while the app is in use, matching the Android app's current behavior; - // surviving app termination is the planned background-transfer follow-up on both - // platforms, which needs the BPURLSession delegate machinery, not just a session swap. - try await client.upload(fileURL: fileURL, remoteURL: remoteUrl) - - // The bytes are on S3 now — failing the operation on a flaky confirmation would - // retry the uploaded:false branch and re-upload the entire (potentially multi-GB) - // file. Retry just the confirmation instead, mirroring the synced:true handling - // in SyncQueueService.handleFinishedOperation. - var confirmationError: Error? - for attempt in 1...3 { - do { - let _: Empty = try await self.provider.request( - .externalResourceToDownload(uuid: uuid, uploaded: true) - ) - return - } catch { - confirmationError = error - Self.logger.error("uploaded:true confirmation attempt \(attempt) failed for \(self.uuid): \(error.localizedDescription)") - // Space out the attempts (same 2s as the SyncQueueService sibling): a single - // transient blip would otherwise burn all three back-to-back in under a second - // and re-upload the file anyway - if attempt < 3 { - try? await Task.sleep(for: .seconds(2)) - } - } - } - // Exhausted: CONSUME rather than throw. A failed operation is retried from the - // top, which re-runs the uploaded:false branch and re-PUTs the whole file — the - // exact waste this loop exists to avoid. The bytes are safely on S3; the server - // still thinks the object isn't uploaded, so the next external_set round-trip - // heals cheaply (it answers url == null for an already-existing object, which the - // nil-url branch above consumes). Same bytes-are-on-S3 semantics as the - // FileUploadOperation confirmation in SyncQueueService.handleFinishedOperation. - if let confirmationError { - Self.logger.error( - "uploaded:true confirmation exhausted for \(self.uuid), consuming (bytes on S3): \(confirmationError.localizedDescription)" - ) - } + // No file (or no uuid to name the book by): nothing to upload, and retrying can't heal it + guard !uuid.isEmpty, FileManager.default.fileExists(atPath: fileURL.path) else { return } + + results = .uploadMetadata( + UploadResponse(uuid: uuid, filePath: fileURL.absoluteString, relativePath: relativePath) + ) } } diff --git a/Shared/Services/Sync/Model/SyncableItem.swift b/Shared/Services/Sync/Model/SyncableItem.swift index b864bea32..326bf59c4 100644 --- a/Shared/Services/Sync/Model/SyncableItem.swift +++ b/Shared/Services/Sync/Model/SyncableItem.swift @@ -163,3 +163,13 @@ extension SyncableItem { ) } } + +extension SyncableItem { + /// The media server this book streams from, if any. A Hardcover link is not one: it has + /// no file, so it must never keep the book's own file from uploading. + public var mediaServerProviderName: String? { + externalResources? + .first { ExternalResource.ProviderName(rawValue: $0.providerName)?.mediaServer != nil }? + .providerName + } +} diff --git a/Shared/Services/Sync/SyncJobScheduler.swift b/Shared/Services/Sync/SyncJobScheduler.swift index c967072cc..2461be7a5 100644 --- a/Shared/Services/Sync/SyncJobScheduler.swift +++ b/Shared/Services/Sync/SyncJobScheduler.swift @@ -46,7 +46,8 @@ public protocol JobSchedulerProtocol { /// Delete an external resource on the server func scheduleDeleteExternalResource(providerName: String, providerId: String, itemOrigin: LibraryItemRef) async - func scheduleResourceToDownload(with relativePath: String, for uuid: String?, uploaded: Bool) async + /// Upload a downloaded media-server book's file (queued behind the item's own sync tasks) + func scheduleResourceToDownload(with relativePath: String, for uuid: String?) async } /// Scheduling facade for the serial BookPlayer-server queue: builds task parameters @@ -126,7 +127,9 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { parameters["speed"] = speed } - if let provider = item.externalResources?.first?.providerName { + // Media-server books upload their file once downloaded (the pipe job), not from this + // job's answer + if let provider = item.mediaServerProviderName { parameters["provider"] = provider } @@ -285,12 +288,11 @@ public class SyncJobScheduler: JobSchedulerProtocol, BPLogger { await persistTask(parameters: params) } - public func scheduleResourceToDownload(with relativePath: String, for uuid: String?, uploaded: Bool) async { + public func scheduleResourceToDownload(with relativePath: String, for uuid: String?) async { var params: [String: Any] = [ "id": UUID().uuidString, "relativePath": relativePath, "jobType": SyncJobType.externalResourceToDownload.rawValue, - "uploaded": uploaded ] if let uuid = uuid { diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 760923363..60f811d95 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -921,7 +921,7 @@ extension SyncService { // Deliberately NOT gated on `isActive`: external-resource sync is tier-independent by // design (the reference lives in the DB for every tier and the server validates // entitlements) — matching getDownloadState, which permits these downloads when !isActive. - await jobManager.scheduleResourceToDownload(with: relativePath, for: snapshot.uuid, uploaded: false) + await jobManager.scheduleResourceToDownload(with: relativePath, for: snapshot.uuid) } /// Backstop against truncated/botched downloads that finish without surfacing a diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index ad6e0f3bf..5fda737ee 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -96,6 +96,15 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { /// Fresh RevenueCat read of the sync entitlement (nil = the check failed), for an /// account-level rejection. Its update also drives the lapse path when inactive. var verifySyncEntitlement: (() async -> Bool?)! + /// The book as it stands now, by uuid — for handing an upload the server doesn't + /// recognize back to the sync lane. Internal for @testable injection. + lazy var findSyncableItem: (String) async -> SyncableItem? = { [weak self] uuid in + await self?.libraryService?.fetchSyncableItem(forUuid: uuid) + } + /// Books handed back to the sync lane this session. A second `item_not_found` for one + /// means re-registering doesn't help (e.g. another uuid holds its key on the server): + /// it parks instead of cycling. Guarded by `stateLock`. + private var handedBackUuids = Set() private let stateLock = NSLock() private let policyLock = NSLock() private var disposeBag = Set() @@ -367,6 +376,16 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { /// Retry (the usual 5 s), park, drop, or confirm the account, per `SyncFailurePolicy`. /// Returns once the next pop may happen. private func handleFailedOperation(error: Error?, task: QueuedSyncTask) async { + // The server has no such book for this upload: register it again (bookplayer-api + // docs/multipart-uploads.md) rather than park a task the user can't fix + if task.jobType == .uploadFile, + SyncFailurePolicy.codedFailure(error)?.code == "item_not_found", + stateLock.withLock({ handedBackUuids.insert(task.uuid).inserted }) { + await handBackUpload(task) + try? await Task.sleep(for: .seconds(5)) + return + } + let action = SyncFailurePolicy.action( for: error, jobType: task.jobType, @@ -405,6 +424,47 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } } + /// Re-registers the book through the sync lane like a fresh upload — the item, its + /// external resources and bookmarks (`SyncService.handleItemsToUpload`); the `.upload`'s + /// answer schedules a new upload task — or drops the upload when the book is gone + /// locally too. The replacement is stored before this task is popped, so a kill in + /// between can't lose the upload. + private func handBackUpload(_ task: QueuedSyncTask) async { + // Before the new job links the file again at the same path + cleanUpDroppedUploadTempLink(task) + guard let item = await findSyncableItem(task.uuid) else { + Self.logger.info("Dropping upload \(task.id): the book is gone on the server and on this device") + await taskContainer.pop(task) + return + } + Self.logger.info("Upload \(task.id): the server lost the book, registering it again") + let scheduler = SyncJobScheduler(tasksRepository: taskContainer) + await scheduler.scheduleLibraryItemUploadJob(for: item) + let itemOrigin = LibraryItemRef(relativePath: item.relativePath, uuid: item.uuid) + for resource in item.externalResources ?? [] { + await scheduler.scheduleExternalResourceUpload(for: resource, itemOrigin: itemOrigin) + } + // Bookmarks are read on the view context + let libraryService = libraryService + let bookmarks = await MainActor.run { + libraryService?.getBookmarks(of: .user, relativePath: item.relativePath) ?? [] + } + for bookmark in bookmarks { + await scheduler.scheduleSetBookmarkJob( + with: bookmark.relativePath, + time: floor(bookmark.time), + note: bookmark.note, + for: item.uuid + ) + } + // A media-server book's metadata upload never schedules its file (streamed books have + // none yet): queue the file last, the way a finished download does + if item.mediaServerProviderName != nil { + await scheduler.scheduleResourceToDownload(with: item.relativePath, for: item.uuid) + } + await taskContainer.pop(task) + } + @discardableResult private func park( _ task: QueuedSyncTask, @@ -554,8 +614,9 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { case .matchUuid(let response): await handleMatchUuidsResponse(response) case .uploadMetadata(let result): - /// Provider-backed items don't upload the local file; the server pulls it - /// from the provider via `externalResourceToDownload` + /// Provider-backed items don't upload their file from the metadata upload: it goes + /// up once downloaded, through the `externalResourceToDownload` job (which carries no + /// `provider`, so its result schedules the upload here) if task.parameters["provider"] as? String == nil { handleUploadResult(result) } else { diff --git a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift index 0d44ba668..8f6384665 100644 --- a/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift +++ b/Shared/SwiftData/Models/SchemaV3SyncTasksModels.swift @@ -422,16 +422,13 @@ public enum SchemaV3: VersionedSchema { public class ExternalResourceToDownloadTaskModel { @Attribute(.unique) public var id: String public var uuid: String - public var uploaded: Bool public init( id: String, - uuid: String, - uploaded: Bool + uuid: String ) { self.id = id self.uuid = uuid - self.uploaded = uploaded } } diff --git a/Shared/SwiftData/SwiftDataModels+Extensions.swift b/Shared/SwiftData/SwiftDataModels+Extensions.swift index e630f5f9e..014812c0e 100644 --- a/Shared/SwiftData/SwiftDataModels+Extensions.swift +++ b/Shared/SwiftData/SwiftDataModels+Extensions.swift @@ -210,7 +210,6 @@ extension ExternalResourceToDownloadTaskModel: DictionaryConvertible { return [ "id": id, "uuid": uuid, - "uploaded": uploaded ] } } diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index 240294fd4..df8080153 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -376,8 +376,7 @@ public final class TasksDataManager: BPLogger { id: parameters["id"] as! String, // The producer types uuid as String? and only inserts it `if let` — match // storeTask's defensive read instead of trapping on a persisted absence - uuid: parameters["uuid"] as? String ?? "", - uploaded: parameters["uploaded"] as? Bool ?? false + uuid: parameters["uuid"] as? String ?? "" ) context.insert(task) case .deleteExternalResource: From 53487acd4b37af5b13a9e85cf2b248ee285d64bd Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 27 Sep 2026 16:14:46 -0500 Subject: [PATCH 164/172] feat(sync): dismiss too-large uploads; flag parked tasks on Profile's title A book over the 10 GiB upload ceiling parks with a reason Retry can never fix. Its Queued Tasks row now shows the app's own message (in the current language) and a single Dismiss, which removes the upload and its temp link; the book stays on this device only. It's the only dismissible pause: the service refuses anything else, so a task the server refused still only gets Retry or Report. Profile no longer replaces the sync status with "Sync paused: N need attention". While anything is parked, the "Queued sync tasks" title turns red with a warning icon (and reads "Needs attention" to VoiceOver), and the caption keeps showing the last sync or upload progress. --- BookPlayer/Base.lproj/Localizable.strings | 3 +- .../Profile/ProfileSyncTasksSectionView.swift | 27 +++++---- .../Profile/QueuedSyncTaskRowView.swift | 22 ++++++-- .../Profile/Views/QueuedTasksView.swift | 3 +- BookPlayer/en.lproj/Localizable.strings | 3 +- BookPlayer/en.lproj/Localizable.stringsdict | 16 ------ BookPlayerTests/Services/SyncQueueTests.swift | 56 +++++++++++++++++++ CLAUDE.md | 7 ++- .../Services/SyncQueue/SyncQueueService.swift | 18 ++++++ 9 files changed, 117 insertions(+), 38 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 0d4b9a132..ae51adfc3 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -563,6 +563,7 @@ We're working hard on providing a seamless experience, if possible, please conta "sync_task_retry_button" = "Retry"; "sync_task_report_button" = "Report"; "sync_task_paused_voiceover" = "Paused: %@"; -"sync_paused_caption" = "Sync paused: %d need attention"; "sync_paused_alert_title" = "Sync is paused until a queued task is resolved"; "upload_file_too_large_message" = "Larger than 10 GB, so it stays on this device and isn't backed up."; +"sync_task_dismiss_button" = "Dismiss"; +"sync_tasks_need_attention_voiceover" = "Needs attention"; diff --git a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift index bae671700..dd6958f40 100644 --- a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift @@ -14,7 +14,7 @@ struct ProfileSyncTasksSectionView: View { @State private var statusMessage: String = "" /// Every lane, summed by the engine that owns them all @State private var queuedCount = 0 - /// Parked tasks across every lane: they need the user, so they replace the sync status + /// Parked tasks across every lane: the title turns into a warning while any need the user @State private var pausedCount = 0 private var buttonText: String { @@ -27,19 +27,22 @@ struct ProfileSyncTasksSectionView: View { var body: some View { NavigationLink(value: ProfileScreen.queueTasks) { VStack { - Text(buttonText) - .bpFont(.body) - .foregroundStyle(theme.linkColor) - if pausedCount > 0 { - Text(String.localizedStringWithFormat("sync_paused_caption".localized, pausedCount)) - .bpFont(.caption) - .foregroundStyle(.red) - } else { - Text(statusMessage) - .bpFont(.caption) - .foregroundStyle(theme.secondaryColor) + HStack(spacing: Spacing.S4) { + if pausedCount > 0 { + Image(systemName: "exclamationmark.triangle.fill") + .accessibilityHidden(true) + } + Text(buttonText) } + .bpFont(.body) + .foregroundStyle(pausedCount > 0 ? .red : theme.linkColor) + Text(statusMessage) + .bpFont(.caption) + .foregroundStyle(theme.secondaryColor) } + // Not by colour alone: VoiceOver hears it too + .accessibilityElement(children: .combine) + .accessibilityValue(pausedCount > 0 ? "sync_tasks_need_attention_voiceover".localized : "") } .onReceive(syncQueueService.observeQueueCounts()) { counts in if queuedCount != counts.total { diff --git a/BookPlayer/Profile/Profile/QueuedSyncTaskRowView.swift b/BookPlayer/Profile/Profile/QueuedSyncTaskRowView.swift index b5ab81f26..d384ed864 100644 --- a/BookPlayer/Profile/Profile/QueuedSyncTaskRowView.swift +++ b/BookPlayer/Profile/Profile/QueuedSyncTaskRowView.swift @@ -17,10 +17,12 @@ struct QueuedSyncTaskRowView: View { let progressKey: String var initialProgress: Double var isUpload: Bool - /// Set while the task is parked: the row shows why, with Retry and Report + /// Set while the task is parked: the row shows why, with Retry and Report — or, for a + /// book the app won't upload (too large), its own message and Dismiss var pause: TaskPause? = nil var onRetry: () -> Void = {} var onReport: () -> Void = {} + var onDismiss: () -> Void = {} @EnvironmentObject var themeViewModel: ThemeViewModel @@ -73,14 +75,24 @@ struct QueuedSyncTaskRowView: View { extension QueuedSyncTaskRowView { @ViewBuilder private func pausedDetails(_ pause: TaskPause) -> some View { - Text(pause.message) + // The app's own refusal is worded by the app (in the current language); a server + // pause shows the server's message + let isTooLarge = pause.errorCode == UploadFileError.fileTooLarge.code + let message = isTooLarge ? UploadFileError.fileTooLarge.message : pause.message + + Text(message) .bpFont(.caption) .foregroundStyle(.red) - .accessibilityLabel(String(format: "sync_task_paused_voiceover".localized, pause.message)) + .accessibilityLabel(String(format: "sync_task_paused_voiceover".localized, message)) HStack(spacing: Spacing.S) { - pausedAction("sync_task_retry_button", action: onRetry) - pausedAction("sync_task_report_button", action: onReport) + if isTooLarge { + // Retrying can't make the file smaller, and there's nothing to report + pausedAction("sync_task_dismiss_button", action: onDismiss) + } else { + pausedAction("sync_task_retry_button", action: onRetry) + pausedAction("sync_task_report_button", action: onReport) + } } .bpFont(.subheadline) .foregroundStyle(themeViewModel.linkColor) diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index 81ae86c45..7132a057a 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -63,7 +63,8 @@ struct QueuedTasksView: View, BPLogger { isUpload: task.tracksByteProgress, pause: task.pause, onRetry: { syncQueueService.retryPausedTask(id: task.id) }, - onReport: { report(task) } + onReport: { report(task) }, + onDismiss: { syncQueueService.dismissPausedTask(id: task.id) } ) } } label: { diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index bb6dba535..b1ee44df3 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -562,6 +562,7 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "sync_task_retry_button" = "Retry"; "sync_task_report_button" = "Report"; "sync_task_paused_voiceover" = "Paused: %@"; -"sync_paused_caption" = "Sync paused: %d need attention"; "sync_paused_alert_title" = "Sync is paused until a queued task is resolved"; "upload_file_too_large_message" = "Larger than 10 GB, so it stays on this device and isn't backed up."; +"sync_task_dismiss_button" = "Dismiss"; +"sync_tasks_need_attention_voiceover" = "Needs attention"; diff --git a/BookPlayer/en.lproj/Localizable.stringsdict b/BookPlayer/en.lproj/Localizable.stringsdict index 33e1e0bc9..28f772e7f 100644 --- a/BookPlayer/en.lproj/Localizable.stringsdict +++ b/BookPlayer/en.lproj/Localizable.stringsdict @@ -82,21 +82,5 @@ Downloading %d files - sync_paused_caption - - NSStringLocalizedFormatKey - %#@format@ - format - - NSStringFormatSpecTypeKey - NSStringPluralRuleType - NSStringFormatValueTypeKey - d - one - Sync paused: %d needs attention - other - Sync paused: %d need attention - - diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index e9255b371..9e6794635 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -1238,3 +1238,59 @@ extension SyncQueueTests { XCTAssertEqual(URL(string: result.filePath)?.path, fileURL.path) } } + +// MARK: - Dismiss (too-large uploads only) + +extension SyncQueueTests { + func testDismiss_removesATooLargeUploadAndItsLink() async throws { + let service = makeGatedEngine() + let link = FileManager.default.temporaryDirectory.appendingPathComponent("dismiss-\(UUID().uuidString).m4b") + try Data("x".utf8).write(to: link) + defer { try? FileManager.default.removeItem(at: link) } + var params = uploadFileParams(id: "big") + params["filePath"] = link.absoluteString + try await repository.storeTask(parameters: params) + await repository.park( + taskId: "big", + pause: TaskPause(scope: .task, errorCode: "file_too_large", message: "m", httpStatus: nil, pausedAt: Date()) + ) + + service.dismissPausedTask(id: "big") + + try await waitForEmptyQueue() + // The link goes right after the pop, off the actor + let deadline = Date().addingTimeInterval(2) + while Date() < deadline, FileManager.default.fileExists(atPath: link.path) { + try await Task.sleep(for: .milliseconds(20)) + } + XCTAssertFalse(FileManager.default.fileExists(atPath: link.path)) + } + + func testDismiss_ignoresATaskThatIsNotParked() async throws { + let service = makeGatedEngine() + try await repository.storeTask(parameters: uploadFileParams(id: "pending")) + + service.dismissPausedTask(id: "pending") + service.dismissPausedTask(id: "unknown") + try await Task.sleep(for: .milliseconds(300)) + + let tasks = await repository.getAllTasks() + XCTAssertEqual(tasks.map(\.id), ["pending"]) + } + + /// Server-refused tasks never get a Skip: Dismiss refuses them + func testDismiss_refusesAnyOtherPause() async throws { + let service = makeGatedEngine() + try await repository.storeTask(parameters: uploadFileParams(id: "refused")) + await repository.park( + taskId: "refused", + pause: TaskPause(scope: .task, errorCode: "invalid_parts", message: "m", httpStatus: 422, pausedAt: Date()) + ) + + service.dismissPausedTask(id: "refused") + try await Task.sleep(for: .milliseconds(300)) + + let tasks = await repository.getAllTasks() + XCTAssertEqual(tasks.map(\.id), ["refused"]) + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 2435d910c..724f5674d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -295,8 +295,11 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi status, lane, scope, item uuid) — **never the server message or a path: both embed file names**. The Queued Tasks row of a parked task shows the server's message with Retry and Report; Report mails (or, without Mail, shares) `SyncPauseReport`: the paused task, every queued task with its state, and the local library tree with - uuids. A blocked lane's header turns red, Profile shows "Sync paused: N need attention", and a blocked - pull-to-refresh says sync is paused. + uuids. A too-large book (`file_too_large`) instead shows the app's own message and a **Dismiss** action — the + only dismissible pause (`dismissPausedTask(id:)` refuses anything else; server-refused tasks never get a Skip). + A blocked lane's header turns red, Profile's "Queued sync tasks" title turns red with a warning icon while + anything is parked (its caption keeps showing last sync / progress), and a blocked pull-to-refresh says sync + is paused. - **Realm is gone** (Realm → SwiftData migration is complete). Only inert remnants remain (`DataManager.getSyncTasksRealmURL()` is dead; a stale comment in `LibraryService`). Don't reintroduce it. diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index 5fda737ee..fa91d332e 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -62,6 +62,10 @@ public protocol SyncQueueServiceProtocol { /// Remembers the Sentry event that reported a pause, so it's never reported twice func recordPauseReport(eventId: String, forTask taskId: String) + + /// Removes an upload the app refuses (a book over the size limit): the book stays on this + /// device only. The one dismissible pause — server-refused tasks only Retry or Report. + func dismissPausedTask(id: String) } public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { @@ -511,6 +515,20 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } } + public func dismissPausedTask(id: String) { + Task { + guard + let task = await taskContainer.getAllTasks().first(where: { $0.id == id }), + task.pause?.errorCode == UploadFileError.fileTooLarge.code + else { return } + // The upload's own parameters name its temp link + let filePath = await taskContainer.getAllTasksWithParams(in: TaskQueueKey.uploadFile) + .first { $0.id == id }?.parameters["filePath"] as? String + await taskContainer.pop(task) + SyncJobScheduler.removeHardLink(at: filePath.flatMap(URL.init(string:))) + } + } + public func recordPauseReport(eventId: String, forTask taskId: String) { Task { await taskContainer.setSentryEventId(eventId, forTask: taskId) From b0cbf32a7c12cc34ca8d8c2683e1f8dbf9e563a2 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 27 Sep 2026 20:17:47 -0500 Subject: [PATCH 165/172] feat(upload): answer iOS's background session wakes after the work settles Nothing handled application(_:handleEventsForBackgroundURLSession:), for the upload sessions or the downloads one. When a background session empties, iOS relaunches or wakes the app for its events and suspends it as soon as the completion handler is called: in the device spike, calling it right away froze the next parts' requests until the following wake. BackgroundSessionWakeCoordinator (created in didFinishLaunching) keeps iOS's handler per session and answers once the work settles, under a background task and a 25 s cap. For the upload sessions that's SyncQueueService.settleUploads(): the running upload handles every part event delivered so far and hands the session its next parts (FileUploadOperation.settle(), queued behind those events), or the lane's next upload does, or nothing will run. For the downloads session it's SyncService.settleDownloads(): each finished download's follow-up (chapters, verification, media-server scheduling, Core Data in the App Group container). Other sessions are answered at once. Either order of handler and "finished events" works, a superseded wake is answered, and a stale "finished events" record expires. The sessions' delegate queues are now serial, so "finished events" always follows the last completion. The two upload session names were wrongly listed as BGTaskSchedulerPermittedIdentifiers; they're gone. --- BookPlayer.xcodeproj/project.pbxproj | 8 + BookPlayer/AppDelegate.swift | 15 ++ .../Generated/AutoMockable.generated.swift | 11 ++ BookPlayer/Info.plist | 2 - .../BackgroundSessionWakeCoordinator.swift | 171 +++++++++++++++++ .../Services/BackgroundSessionWakeTests.swift | 175 ++++++++++++++++++ .../Services/MultipartUploadEngineTests.swift | 62 +++++++ BookPlayerTests/Services/SyncQueueTests.swift | 19 ++ CLAUDE.md | 10 + .../Notification+BookPlayerKit.swift | 3 + Shared/Network/BPDownloadURLSession.swift | 7 +- Shared/Network/BPTaskDownloadDelegate.swift | 7 + Shared/Network/BPTaskUploadDelegate.swift | 7 + Shared/Network/BPURLSession.swift | 37 +++- Shared/Services/Sync/SyncService.swift | 32 +++- .../SyncQueue/FileUploadOperation.swift | 72 ++++++- .../Services/SyncQueue/SyncQueueService.swift | 24 +++ 17 files changed, 642 insertions(+), 20 deletions(-) create mode 100644 BookPlayer/Services/BackgroundSessionWakeCoordinator.swift create mode 100644 BookPlayerTests/Services/BackgroundSessionWakeTests.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index dcad9c092..21279b43f 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -564,6 +564,7 @@ 63B4A3C62E93858C00784A22 /* PlayerControlsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */; }; 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */; }; F015116186D7F12201CDB4C0 /* SyncPauseReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 185FB83C0CF083AC102D8753 /* SyncPauseReporter.swift */; }; + AD7114A34343C516BD1890E2 /* BackgroundSessionWakeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EEA5B438944574494C5385F /* BackgroundSessionWakeCoordinator.swift */; }; D071ABD44684949C58C7D8D0 /* PromptSurfaceArbiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */; }; 9AB6B44F84D195FCCF7A4F9F /* PromptSurfaceArbiterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D4833D717C7B97F7B5DFDC5 /* PromptSurfaceArbiterTests.swift */; }; C0C40794A90EEED394B4C957 /* PlaybackAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3B31C1E62A380C33C60FF9B /* PlaybackAlerts.swift */; }; @@ -973,6 +974,7 @@ C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */; }; CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */; }; + 50EEEAE96509B6867FC9180B /* BackgroundSessionWakeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83C482DCC8DC2DF811A3C7BC /* BackgroundSessionWakeTests.swift */; }; B2B1B1BF822F47AA40EE1B71 /* MultipartUploadEngineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */; }; 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */; }; 786041B335FF61901E55666C /* TasksDataManagerStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */; }; @@ -1683,6 +1685,7 @@ 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerControlsView.swift; sourceTree = ""; }; 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListSyncRefreshService.swift; sourceTree = ""; }; 185FB83C0CF083AC102D8753 /* SyncPauseReporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncPauseReporter.swift; sourceTree = ""; }; + 5EEA5B438944574494C5385F /* BackgroundSessionWakeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundSessionWakeCoordinator.swift; sourceTree = ""; }; 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptSurfaceArbiter.swift; sourceTree = ""; }; 3D4833D717C7B97F7B5DFDC5 /* PromptSurfaceArbiterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptSurfaceArbiterTests.swift; sourceTree = ""; }; F3B31C1E62A380C33C60FF9B /* PlaybackAlerts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaybackAlerts.swift; sourceTree = ""; }; @@ -2005,6 +2008,7 @@ FEEDBABE0000000000000001 /* SharedWidgetStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStore.swift; sourceTree = ""; }; FEEDBABE0000000000000004 /* SharedWidgetStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStoreTests.swift; sourceTree = ""; }; FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncQueueTests.swift; sourceTree = ""; }; + 83C482DCC8DC2DF811A3C7BC /* BackgroundSessionWakeTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BackgroundSessionWakeTests.swift; sourceTree = ""; }; 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MultipartUploadEngineTests.swift; sourceTree = ""; }; C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncPauseReportingTests.swift; sourceTree = ""; }; B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TasksDataManagerStoreTests.swift; sourceTree = ""; }; @@ -3370,6 +3374,7 @@ 9F82DF9B27DFE46B001B0EA8 /* PhoneWatchConnectivityService.swift */, 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */, 185FB83C0CF083AC102D8753 /* SyncPauseReporter.swift */, + 5EEA5B438944574494C5385F /* BackgroundSessionWakeCoordinator.swift */, 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */, F05D3B1199FC741AB2FDED67 /* PlaybackFailure.swift */, 8A9D0D2F2CD0E06F007A924D /* SingleFileDownloadService.swift */, @@ -3395,6 +3400,7 @@ A11C418B028982CF431C589F /* LibraryServiceReloadChaptersTests.swift */, 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */, FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */, + 83C482DCC8DC2DF811A3C7BC /* BackgroundSessionWakeTests.swift */, 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */, C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */, B2339A98D9659EA78CB738CF /* TasksDataManagerStoreTests.swift */, @@ -5214,6 +5220,7 @@ 416AAC3323F51031005AD04F /* LocalizableButton.swift in Sources */, 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */, F015116186D7F12201CDB4C0 /* SyncPauseReporter.swift in Sources */, + AD7114A34343C516BD1890E2 /* BackgroundSessionWakeCoordinator.swift in Sources */, D071ABD44684949C58C7D8D0 /* PromptSurfaceArbiter.swift in Sources */, 5823F9DE917AE83D3C4DC04E /* PlaybackFailure.swift in Sources */, 416A297D2568671F00605395 /* AVPlayer+BookPlayer.swift in Sources */, @@ -5322,6 +5329,7 @@ 5A9506FC8DAB858289E0EF89 /* IntegrationServerAddressTests.swift in Sources */, 3F058A74415A3AF6C17DA8F4 /* IntegrationHostResolverTests.swift in Sources */, CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */, + 50EEEAE96509B6867FC9180B /* BackgroundSessionWakeTests.swift in Sources */, B2B1B1BF822F47AA40EE1B71 /* MultipartUploadEngineTests.swift in Sources */, 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */, 786041B335FF61901E55666C /* TasksDataManagerStoreTests.swift in Sources */, diff --git a/BookPlayer/AppDelegate.swift b/BookPlayer/AppDelegate.swift index 07cab47d7..bfa0d5125 100644 --- a/BookPlayer/AppDelegate.swift +++ b/BookPlayer/AppDelegate.swift @@ -48,6 +48,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, BPLogger { /// Database backup task identifier private lazy var databaseBackupTaskIdentifier = "\(Bundle.main.configurationString(for: .bundleIdentifier)).background.database.backup" + /// Answers iOS's relaunches and wakes for the background transfer sessions + private lazy var backgroundSessionWakes = BackgroundSessionWakeCoordinator() func application( _ application: UIApplication, @@ -78,6 +80,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate, BPLogger { object: nil ) + // Before anything can wake a session: a session's "finished events" may arrive before + // iOS hands over its handler, and must not find no one listening + _ = backgroundSessionWakes // register background refresh tasks self.setupBackgroundRefreshTasks() // register for remote events @@ -102,6 +107,16 @@ class AppDelegate: UIResponder, UIApplicationDelegate, BPLogger { return true } + /// Stays on the app delegate with scenes (TN3187). The handler is called once the + /// session's events are handled — for uploads, once the next parts are queued. + func application( + _ application: UIApplication, + handleEventsForBackgroundURLSession identifier: String, + completionHandler: @escaping () -> Void + ) { + backgroundSessionWakes.handleEvents(forSession: identifier, completionHandler: completionHandler) + } + func application( _ application: UIApplication, handle intent: INIntent, diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index 39a3a63b0..f8468a114 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -2237,6 +2237,17 @@ class SyncServiceProtocolMock: SyncServiceProtocol { cancelAllJobsCallsCount += 1 cancelAllJobsClosure?() } + //MARK: - settleDownloads + + var settleDownloadsCallsCount = 0 + var settleDownloadsCalled: Bool { + return settleDownloadsCallsCount > 0 + } + var settleDownloadsClosure: (() async -> Void)? + func settleDownloads() async { + settleDownloadsCallsCount += 1 + await settleDownloadsClosure?() + } //MARK: - resetAllJobs var resetAllJobsCallsCount = 0 diff --git a/BookPlayer/Info.plist b/BookPlayer/Info.plist index 4698569eb..3b183a779 100644 --- a/BookPlayer/Info.plist +++ b/BookPlayer/Info.plist @@ -26,8 +26,6 @@ BGTaskSchedulerPermittedIdentifiers - $(BP_BUNDLE_IDENTIFIER).background - $(BP_BUNDLE_IDENTIFIER).background.cellular $(BP_BUNDLE_IDENTIFIER).background.refresh $(BP_BUNDLE_IDENTIFIER).background.database.backup diff --git a/BookPlayer/Services/BackgroundSessionWakeCoordinator.swift b/BookPlayer/Services/BackgroundSessionWakeCoordinator.swift new file mode 100644 index 000000000..b7a07bafa --- /dev/null +++ b/BookPlayer/Services/BackgroundSessionWakeCoordinator.swift @@ -0,0 +1,171 @@ +// +// BackgroundSessionWakeCoordinator.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BookPlayerKit +import Foundation +import UIKit + +/// Answers iOS when it relaunches or wakes the app for a background session's events +/// (`application(_:handleEventsForBackgroundURLSession:completionHandler:)`). Calling iOS's +/// completion handler lets it suspend the app, so for the upload sessions it waits until the +/// upload has handled the finished parts and handed the session the next ones — calling it +/// earlier froze those requests until the next wake (P2b). Either order of the handler and +/// the session's "finished events" callback works: the spike saw both. +@MainActor +final class BackgroundSessionWakeCoordinator: BPLogger { + struct Dependencies { + /// Recreates the session(s) behind an identifier, so iOS delivers their events + var activateSessions: (String) -> Void + /// The upload queue's `settleUploads()` + var settleUploads: () async -> Void + /// `SyncService.settleDownloads()`: the finished downloads' follow-up work + var settleDownloads: () async -> Void + var beginBackgroundTask: (@escaping () -> Void) -> UIBackgroundTaskIdentifier + var endBackgroundTask: (UIBackgroundTaskIdentifier) -> Void + /// Longest wait before answering iOS anyway + var timeout: Duration + /// A "finished events" older than this belongs to an earlier wake, not the next one + var staleEventsAfter: TimeInterval = 60 + + static var live: Dependencies { + Dependencies( + activateSessions: { identifier in + if BackgroundTransferSessions.uploadIdentifiers.contains(identifier) { + BackgroundTransferSessions.activateUploadSessions() + } + }, + settleUploads: { + guard let queue = try? await AppServices.shared.awaitCoreServices().syncQueueService else { return } + await queue.settleUploads() + }, + settleDownloads: { + guard let sync = try? await AppServices.shared.awaitCoreServices().syncService else { return } + await sync.settleDownloads() + }, + beginBackgroundTask: { expiration in + UIApplication.shared.beginBackgroundTask(withName: "background-session-wake", expirationHandler: expiration) + }, + endBackgroundTask: { UIApplication.shared.endBackgroundTask($0) }, + timeout: .seconds(25) + ) + } + } + + private let dependencies: Dependencies + /// Per session, this wake's handler; the token keeps a timer from an earlier wake from + /// answering a later one + private var handlers = [String: (token: UUID, handler: () -> Void)]() + /// Sessions whose events finished before iOS handed over their handler, and when + private var finishedWithoutHandler = [String: Date]() + private var observer: NSObjectProtocol? + + init(dependencies: Dependencies = .live) { + self.dependencies = dependencies + observer = NotificationCenter.default.addObserver( + forName: .backgroundSessionFinishedEvents, + object: nil, + queue: .main + ) { [weak self] notification in + guard let identifier = notification.object as? String else { return } + MainActor.assumeIsolated { + self?.sessionFinishedEvents(identifier) + } + } + } + + deinit { + if let observer { + NotificationCenter.default.removeObserver(observer) + } + } + + func handleEvents(forSession identifier: String, completionHandler: @escaping () -> Void) { + Self.logger.info("Woken for background session \(identifier)") + // Anything else (e.g. the single-file media-server downloads, whose queue lives only in + // memory) has nothing to resume in the background + guard isOwned(identifier) else { + completionHandler() + return + } + + // A new wake for the same session: the earlier one's handler is still owed an answer + if let previous = handlers[identifier] { + Self.logger.info("Background session \(identifier): superseded by a new wake") + previous.handler() + } + let token = UUID() + handlers[identifier] = (token, completionHandler) + dependencies.activateSessions(identifier) + + if let finishedAt = finishedWithoutHandler.removeValue(forKey: identifier), + Date().timeIntervalSince(finishedAt) < dependencies.staleEventsAfter { + answer(identifier, token: token) + } else { + // The session may never report back (e.g. it isn't created in this launch) + scheduleFallback(for: identifier, token: token) + } + } + + private func sessionFinishedEvents(_ identifier: String) { + guard isOwned(identifier) else { return } + guard let token = handlers[identifier]?.token else { + finishedWithoutHandler[identifier] = Date() + return + } + answer(identifier, token: token) + } + + private func isOwned(_ identifier: String) -> Bool { + BackgroundTransferSessions.uploadIdentifiers.contains(identifier) + || identifier == BackgroundTransferSessions.downloadIdentifier + } + + /// The session's work settles first, under a background task so it isn't frozen + /// mid-request or mid-write: uploads queue their next parts; downloads finish their + /// follow-up (chapters, verification, scheduling — Core Data in the App Group container) + private func answer(_ identifier: String, token: UUID) { + let settle = BackgroundTransferSessions.uploadIdentifiers.contains(identifier) + ? dependencies.settleUploads + : dependencies.settleDownloads + + var backgroundTask = UIBackgroundTaskIdentifier.invalid + let finish: (String) -> Void = { [weak self] reason in + self?.callHandler(for: identifier, token: token, reason: reason) + if backgroundTask != .invalid { + self?.dependencies.endBackgroundTask(backgroundTask) + backgroundTask = .invalid + } + } + // iOS calls the expiration handler on the main thread and expects the task ended there + backgroundTask = dependencies.beginBackgroundTask { + MainActor.assumeIsolated { finish("background time expired") } + } + Task { + await settle() + finish("settled") + } + Task { + try? await Task.sleep(for: dependencies.timeout) + finish("timed out") + } + } + + private func scheduleFallback(for identifier: String, token: UUID) { + Task { + try? await Task.sleep(for: dependencies.timeout) + callHandler(for: identifier, token: token, reason: "no events reported") + } + } + + /// Once per wake: the first of settle, timeout or expiration wins + private func callHandler(for identifier: String, token: UUID, reason: String) { + guard let entry = handlers[identifier], entry.token == token else { return } + handlers[identifier] = nil + Self.logger.info("Background session \(identifier) done (\(reason))") + entry.handler() + } +} diff --git a/BookPlayerTests/Services/BackgroundSessionWakeTests.swift b/BookPlayerTests/Services/BackgroundSessionWakeTests.swift new file mode 100644 index 000000000..182d53890 --- /dev/null +++ b/BookPlayerTests/Services/BackgroundSessionWakeTests.swift @@ -0,0 +1,175 @@ +// +// BackgroundSessionWakeTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation +import UIKit +import XCTest + +@testable import BookPlayer +@testable import BookPlayerKit + +/// iOS's handler for a background session is called once, and for uploads only after they +/// settle (calling it earlier suspends the app mid-request) +@MainActor +final class BackgroundSessionWakeTests: XCTestCase { + private var settleCalls = 0 + private var downloadSettleCalls = 0 + private var settleRelease: CheckedContinuation? + private var began = 0 + private var ended = 0 + private var coordinator: BackgroundSessionWakeCoordinator! + + private func makeCoordinator( + settles: Bool = true, + timeout: Duration = .seconds(5), + staleEventsAfter: TimeInterval = 60 + ) { + coordinator = BackgroundSessionWakeCoordinator(dependencies: .init( + activateSessions: { _ in }, + settleUploads: { [unowned self] in + self.settleCalls += 1 + guard !settles else { return } + await withCheckedContinuation { self.settleRelease = $0 } + }, + settleDownloads: { [unowned self] in self.downloadSettleCalls += 1 }, + beginBackgroundTask: { [unowned self] _ in + self.began += 1 + return UIBackgroundTaskIdentifier(rawValue: 42) + }, + endBackgroundTask: { [unowned self] _ in self.ended += 1 }, + timeout: timeout, + staleEventsAfter: staleEventsAfter + )) + } + + private func finishEvents(_ identifier: String) { + NotificationCenter.default.post(name: .backgroundSessionFinishedEvents, object: identifier) + } + + private func waitUntil(_ timeout: TimeInterval = 2, _ condition: () -> Bool) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline, !condition() { + try await Task.sleep(for: .milliseconds(10)) + } + } + + override func tearDown() { + settleRelease?.resume() + settleRelease = nil + coordinator = nil + super.tearDown() + } + + func testUploadWake_answersAfterTheUploadsSettle() async throws { + makeCoordinator() + var calls = 0 + coordinator.handleEvents(forSession: BackgroundTransferSessions.uploadIdentifier) { calls += 1 } + XCTAssertEqual(calls, 0, "not before the session's events are in") + + finishEvents(BackgroundTransferSessions.uploadIdentifier) + + try await waitUntil { calls == 1 } + XCTAssertEqual(calls, 1) + XCTAssertEqual(settleCalls, 1) + XCTAssertEqual(began, 1) + XCTAssertEqual(ended, 1, "the background task ends with the wake") + } + + /// The spike saw iOS hand the handler over after the events were already delivered + func testUploadWake_eventsFinishedBeforeTheHandler() async throws { + makeCoordinator() + finishEvents(BackgroundTransferSessions.cellularUploadIdentifier) + var calls = 0 + + coordinator.handleEvents(forSession: BackgroundTransferSessions.cellularUploadIdentifier) { calls += 1 } + + try await waitUntil { calls == 1 } + XCTAssertEqual(calls, 1) + XCTAssertEqual(settleCalls, 1) + } + + /// A stuck upload mustn't keep iOS waiting: the timeout answers, once + func testUploadWake_timesOutWhenTheUploadsNeverSettle() async throws { + makeCoordinator(settles: false, timeout: .milliseconds(100)) + var calls = 0 + coordinator.handleEvents(forSession: BackgroundTransferSessions.uploadIdentifier) { calls += 1 } + finishEvents(BackgroundTransferSessions.uploadIdentifier) + + try await waitUntil { calls == 1 } + settleRelease?.resume() + settleRelease = nil + try await Task.sleep(for: .milliseconds(200)) + + XCTAssertEqual(calls, 1, "settling late doesn't call the handler again") + XCTAssertEqual(ended, 1) + } + + /// The finished downloads' follow-up (chapters, verification, scheduling) runs after their + /// delegate callbacks: the wake waits for it too + func testDownloadWake_answersOnceTheDownloadsSettle() async throws { + makeCoordinator() + var calls = 0 + coordinator.handleEvents(forSession: BackgroundTransferSessions.downloadIdentifier) { calls += 1 } + XCTAssertEqual(calls, 0) + + finishEvents(BackgroundTransferSessions.downloadIdentifier) + + try await waitUntil { calls == 1 } + XCTAssertEqual(calls, 1) + XCTAssertEqual(downloadSettleCalls, 1) + XCTAssertEqual(settleCalls, 0, "downloads have no parts to top up") + XCTAssertEqual(ended, 1) + } + + /// A new wake for the same session answers the one it replaces instead of dropping it + func testSecondWake_forTheSameSession_answersTheFirst() { + makeCoordinator() + var first = 0 + var second = 0 + coordinator.handleEvents(forSession: BackgroundTransferSessions.uploadIdentifier) { first += 1 } + + coordinator.handleEvents(forSession: BackgroundTransferSessions.uploadIdentifier) { second += 1 } + + XCTAssertEqual(first, 1) + XCTAssertEqual(second, 0) + } + + /// Events that finished long before belong to an earlier wake: the new one still waits + func testStaleFinishedEvents_doNotAnswerALaterWake() async throws { + makeCoordinator(timeout: .milliseconds(300), staleEventsAfter: 0.05) + finishEvents(BackgroundTransferSessions.downloadIdentifier) + try await Task.sleep(for: .milliseconds(100)) + var calls = 0 + + coordinator.handleEvents(forSession: BackgroundTransferSessions.downloadIdentifier) { calls += 1 } + + XCTAssertEqual(downloadSettleCalls, 0, "not answered from the stale record") + try await waitUntil { calls == 1 } + XCTAssertEqual(calls, 1, "the fallback still answers") + } + + /// A session nothing resumes in the background (e.g. the single-file downloads) + func testUnknownSession_isAnsweredRightAway() { + makeCoordinator() + var calls = 0 + + coordinator.handleEvents(forSession: "SingleFileDownloadService") { calls += 1 } + + XCTAssertEqual(calls, 1) + } + + /// The session never reports back in this launch: iOS is still answered + func testWake_withoutEvents_isAnsweredByTheFallback() async throws { + makeCoordinator(timeout: .milliseconds(100)) + var calls = 0 + + coordinator.handleEvents(forSession: BackgroundTransferSessions.downloadIdentifier) { calls += 1 } + + try await waitUntil { calls == 1 } + XCTAssertEqual(calls, 1) + } +} diff --git a/BookPlayerTests/Services/MultipartUploadEngineTests.swift b/BookPlayerTests/Services/MultipartUploadEngineTests.swift index 7e1fa6fea..a6b6ab42d 100644 --- a/BookPlayerTests/Services/MultipartUploadEngineTests.swift +++ b/BookPlayerTests/Services/MultipartUploadEngineTests.swift @@ -349,6 +349,68 @@ final class MultipartUploadEngineTests: XCTestCase { XCTAssertFalse(FileManager.default.fileExists(atPath: fileURL.path)) } + // MARK: - Settle (background wakes) + + /// Settles once the parts delivered so far are handled and the window refilled + func testSettle_returnsAfterTheTopUp() async throws { + try await storeTask() + transport.holdParts = true + let operation = makeOperation() + operation.start() + try await transport.waitForStartedParts(3) + + let stillRunning = await operation.settle() + + XCTAssertTrue(stillRunning) + XCTAssertEqual(transport.startedParts, [1, 2, 3]) + XCTAssertFalse(operation.isFinished) + operation.cancel() + } + + /// Asked before the engine's loop exists (it's still starting the upload): it settles + /// after the first top-up + func testSettle_beforeTheLoopStarts_waitsForTheFirstTopUp() async throws { + try await storeTask() + transport.holdParts = true + let operation = makeOperation() + let settled = Task { await operation.settle() } + try await Task.sleep(for: .milliseconds(50)) + + operation.start() + let stillRunning = await settled.value + + XCTAssertTrue(stillRunning) + XCTAssertEqual(transport.startedParts, [1, 2, 3]) + operation.cancel() + } + + /// The upload ends while a wake waits: it reports done (so the queue waits for the lane's + /// next upload), and the operation already reads as finished + func testSettle_whenTheUploadEndsFirst_reportsItDone() async throws { + try await storeTask() + server.startStatus = "exists" + let operation = makeOperation() + let settled = Task { await operation.settle() } + try await Task.sleep(for: .milliseconds(50)) + + operation.start() + let stillRunning = await settled.value + + XCTAssertFalse(stillRunning) + XCTAssertTrue(operation.isFinished) + } + + func testSettle_afterTheUploadFinished_returnsRightAway() async throws { + try await storeTask() + let operation = makeOperation() + await run(operation) + + let stillRunning = await operation.settle() + + XCTAssertFalse(stillRunning) + XCTAssertTrue(operation.uploadCompleted) + } + private func coded(_ code: String, status: Int) -> BookPlayerError { .networkErrorWithCode(message: code, code: code, status: status) } diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index 9e6794635..e4a3c9fb0 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -1294,3 +1294,22 @@ extension SyncQueueTests { XCTAssertEqual(tasks.map(\.id), ["refused"]) } } + +// MARK: - Settling uploads for a background wake + +extension SyncQueueTests { + /// Nothing will upload: the wake is answered right away + func testSettleUploads_returnsAtOnceWhenNothingWillRun() async throws { + let service = makeGatedEngine() + + let gatedStart = Date() + await service.settleUploads() + XCTAssertLessThan(Date().timeIntervalSince(gatedStart), 1, "sync off") + + service.setServerLanesEnabled(true) + let emptyStart = Date() + await service.settleUploads() + XCTAssertLessThan(Date().timeIntervalSince(emptyStart), 1, "nothing queued") + service.setServerLanesEnabled(false) + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 724f5674d..3bbc5148e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -362,6 +362,16 @@ lines). It is the highest-risk file in the app. `.background.cellular`) chosen by the `allowCellularData` default; downloads via `BPDownloadURLSession`. They carry multipart upload PARTS, one upload task each, described `#@` (`BackgroundPartUploadTransport`); `progressPublisher` emits `(task, bytesSent)`. + **Background wakes:** `AppDelegate.application(_:handleEventsForBackgroundURLSession:)` hands iOS's completion + handler to `BackgroundSessionWakeCoordinator` (names in `BackgroundTransferSessions`). For the upload sessions it + recreates them and answers only after `SyncQueueService.settleUploads()` — the running upload has handled the + delivered parts and queued the next ones (`FileUploadOperation.settle()`) — under `beginBackgroundTask`, with a + 25 s cap; calling the handler earlier suspends the app mid-request. The downloads session waits the same way + for `SyncService.settleDownloads()` (each finished download's follow-up: chapters, verification, scheduling — + Core Data in the App Group container); any other session (single-file media-server downloads) is answered right + away. Both delegates post `.backgroundSessionFinishedEvents` from SERIAL delegate queues (so it follows the last + completion); either order of handler and events works. The coordinator is created in `didFinishLaunching`, before + anything can wake a session. These session names are NOT `BGTaskSchedulerPermittedIdentifiers`. - **Book uploads are S3 multipart** (`FileUploadOperation`, the `uploadFile` lane; contract in bookplayer-api `docs/multipart-uploads.md`). A non-nil `url` from `PUT /v1/library` only means "the server needs the bytes" — the client never PUTs to it. **The server sets `synced` at `/upload/complete`; the client diff --git a/Shared/Extensions/Notification+BookPlayerKit.swift b/Shared/Extensions/Notification+BookPlayerKit.swift index 3c2be3b3a..01c987106 100644 --- a/Shared/Extensions/Notification+BookPlayerKit.swift +++ b/Shared/Extensions/Notification+BookPlayerKit.swift @@ -23,6 +23,9 @@ extension Notification.Name { public static let uploadCompleted = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).upload.completed") public static let listeningProgressChanged = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).listening.progress.changed") public static let newTaskInQueue = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).concurrent.task.queue") + /// A background URLSession delivered every event iOS held for it (after a relaunch or a + /// wake). `object` is the session's identifier. + public static let backgroundSessionFinishedEvents = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).background.session.finished.events") /// A queued task was parked on a coded server error and hasn't been reported yet. /// `object` is the `QueuedSyncTask` (with its `pause`). public static let syncTaskPaused = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).sync.task.paused") diff --git a/Shared/Network/BPDownloadURLSession.swift b/Shared/Network/BPDownloadURLSession.swift index bd3d5bf44..7e2ec16e6 100644 --- a/Shared/Network/BPDownloadURLSession.swift +++ b/Shared/Network/BPDownloadURLSession.swift @@ -21,8 +21,6 @@ public class BPDownloadURLSession { downloadProgressUpdated: @escaping ((URLSessionDownloadTask, Double) -> Void), didFinishDownloadingTask: @escaping ((URLSessionTask, URL?, Error?) -> Void) ) { - let bundleIdentifier: String = Bundle.main.configurationValue(for: .bundleIdentifier) - let delegate = BPTaskDownloadDelegate() delegate.downloadProgressUpdated = downloadProgressUpdated @@ -30,10 +28,11 @@ public class BPDownloadURLSession { self.backgroundSession = URLSession( configuration: URLSessionConfiguration.background( - withIdentifier: "\(bundleIdentifier).background.download" + withIdentifier: BackgroundTransferSessions.downloadIdentifier ), delegate: delegate, - delegateQueue: OperationQueue() + // Serial, so "finished events" follows the last download's callbacks + delegateQueue: BPURLSession.serialDelegateQueue() ) } } diff --git a/Shared/Network/BPTaskDownloadDelegate.swift b/Shared/Network/BPTaskDownloadDelegate.swift index 5e5978af9..af084d820 100644 --- a/Shared/Network/BPTaskDownloadDelegate.swift +++ b/Shared/Network/BPTaskDownloadDelegate.swift @@ -48,6 +48,13 @@ public class BPTaskDownloadDelegate: NSObject, URLSessionDownloadDelegate { ) } + public func urlSessionDidFinishEvents(forBackgroundURLSession session: URLSession) { + NotificationCenter.default.post( + name: .backgroundSessionFinishedEvents, + object: session.configuration.identifier + ) + } + /// Note: this gets called even if there's no error public func urlSession( _ session: URLSession, diff --git a/Shared/Network/BPTaskUploadDelegate.swift b/Shared/Network/BPTaskUploadDelegate.swift index 1eb3af9fa..f50041b59 100644 --- a/Shared/Network/BPTaskUploadDelegate.swift +++ b/Shared/Network/BPTaskUploadDelegate.swift @@ -28,4 +28,11 @@ class BPTaskUploadDelegate: NSObject, URLSessionTaskDelegate { func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { didFinishTask?(task, error) } + + func urlSessionDidFinishEvents(forBackgroundURLSession session: URLSession) { + NotificationCenter.default.post( + name: .backgroundSessionFinishedEvents, + object: session.configuration.identifier + ) + } } diff --git a/Shared/Network/BPURLSession.swift b/Shared/Network/BPURLSession.swift index 3166f69f4..29ab422b9 100644 --- a/Shared/Network/BPURLSession.swift +++ b/Shared/Network/BPURLSession.swift @@ -9,6 +9,25 @@ import Combine import Foundation +/// The app's background transfer sessions, as iOS names them when it relaunches or wakes +/// the app for their events +public enum BackgroundTransferSessions { + private static var bundleIdentifier: String { + Bundle.main.configurationValue(for: .bundleIdentifier) + } + + public static var uploadIdentifier: String { "\(bundleIdentifier).background" } + public static var cellularUploadIdentifier: String { "\(bundleIdentifier).background.cellular" } + public static var downloadIdentifier: String { "\(bundleIdentifier).background.download" } + + public static var uploadIdentifiers: Set { [uploadIdentifier, cellularUploadIdentifier] } + + /// Recreates the upload sessions, which is what lets iOS deliver the events it held for them + public static func activateUploadSessions() { + _ = BPURLSession.shared + } +} + /// URL session meant for upload tasks class BPURLSession { static let shared = BPURLSession() @@ -23,8 +42,6 @@ class BPURLSession { private init() { let progressPublisher = PassthroughSubject<(URLSessionTask, Int64), Never>() let completionPublisher = PassthroughSubject<(URLSessionTask, Error?), Never>() - let bundleIdentifier: String = Bundle.main.configurationValue(for: .bundleIdentifier) - let delegate = BPTaskUploadDelegate() delegate.uploadProgressUpdated = { [progressPublisher] task, bytesSent in progressPublisher.send((task, bytesSent)) @@ -37,25 +54,33 @@ class BPURLSession { self.completionPublisher = completionPublisher let configuration = URLSessionConfiguration.background( - withIdentifier: "\(bundleIdentifier).background" + withIdentifier: BackgroundTransferSessions.uploadIdentifier ) configuration.allowsCellularAccess = false self.backgroundSession = URLSession( configuration: configuration, delegate: delegate, - delegateQueue: OperationQueue() + delegateQueue: Self.serialDelegateQueue() ) let configurationForCellular = URLSessionConfiguration.background( - withIdentifier: "\(bundleIdentifier).background.cellular" + withIdentifier: BackgroundTransferSessions.cellularUploadIdentifier ) configurationForCellular.allowsCellularAccess = true self.backgroundCellularSession = URLSession( configuration: configurationForCellular, delegate: delegate, - delegateQueue: OperationQueue() + delegateQueue: Self.serialDelegateQueue() ) } + + /// Serial, so callbacks arrive in order: "finished events" follows the last completion, + /// and a part's progress never lands after its completion + static func serialDelegateQueue() -> OperationQueue { + let queue = OperationQueue() + queue.maxConcurrentOperationCount = 1 + return queue + } } diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 60f811d95..78862051a 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -94,6 +94,9 @@ public protocol SyncServiceProtocol { func getLastSyncError() -> SyncErrorInfo? /// Cancel all scheduled jobs func cancelAllJobs() + /// Returns once every finished download's follow-up (chapters, verification, media-server + /// upload scheduling) is done: a background wake awaits it before letting iOS suspend + func settleDownloads() async /// Cancel all scheduled jobs and wait for completion func resetAllJobs() async @@ -153,6 +156,9 @@ public final class SyncService: SyncServiceProtocol, BPLogger { public var downloadErrorPublisher = PassthroughSubject<(String, Error), Never>() /// Background URL session to handle downloading synced items private var downloadURLSession: BPDownloadURLSession! + /// Finished downloads still being finalized, so a background wake can wait for them + private let finalizeLock = NSLock() + private var finalizeTasks = [UUID: Task]() private var provider: NetworkProvider! @@ -858,13 +864,25 @@ extension SyncService { /// download that already finished: nothing to move, nothing to announce. guard let movedFileURL else { return } - Task { - await self.finalizeDownloadedFile( - relativePath: relativePath, - fileURL: movedFileURL, - startingItemPath: startingItemPath, - parentFolderPath: parentFolderPath - ) + let id = UUID() + // Stored under the lock it removes itself with, so an instant finish can't beat the insert + finalizeLock.withLock { + finalizeTasks[id] = Task { + await self.finalizeDownloadedFile( + relativePath: relativePath, + fileURL: movedFileURL, + startingItemPath: startingItemPath, + parentFolderPath: parentFolderPath + ) + _ = self.finalizeLock.withLock { self.finalizeTasks.removeValue(forKey: id) } + } + } + } + + public func settleDownloads() async { + let tasks = finalizeLock.withLock { Array(finalizeTasks.values) } + for task in tasks { + await task.value } } diff --git a/Shared/Services/SyncQueue/FileUploadOperation.swift b/Shared/Services/SyncQueue/FileUploadOperation.swift index d1b95de65..04ac5404c 100644 --- a/Shared/Services/SyncQueue/FileUploadOperation.swift +++ b/Shared/Services/SyncQueue/FileUploadOperation.swift @@ -115,6 +115,12 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { set { lock.withLock { _uploadCompleted = newValue } } } private var runTask: Task? + /// Callers of `settle()` waiting for the engine to finish its current top-up. Guarded by + /// `lock`, with the engine's event stream and whether the operation is done. + private var settleWaiters = [(sequence: Int, waiter: CheckedContinuation)]() + private var settleSequence = 0 + private var eventContinuation: AsyncStream.Continuation? + private var isDone = false init( taskId: String, @@ -213,6 +219,54 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { finish() } + override func finish() { + lock.withLock { isDone = true } + // Finished first: a waiter told "done" must see the operation as done, so the queue + // waits for the lane's next upload instead + super.finish() + resumeSettleWaiters(upTo: nil, stillRunning: false) + } + + /// Returns once the engine has handled every part event delivered so far and handed the + /// session the next parts — `true`, still uploading — or once the operation is done + /// (`false`). A background wake calls this before telling iOS the app is finished: iOS + /// suspends the app right after, and a top-up still in flight would freeze until the next + /// wake. + func settle() async -> Bool { + await withCheckedContinuation { (waiter: CheckedContinuation) in + let (done, stream, sequence) = lock.withLock { () -> (Bool, AsyncStream.Continuation?, Int) in + if isDone { return (true, nil, 0) } + settleSequence += 1 + settleWaiters.append((settleSequence, waiter)) + return (false, eventContinuation, settleSequence) + } + if done { + waiter.resume(returning: false) + return + } + // Queued behind every event already delivered: by the time the loop reaches it, those + // are handled and the window topped up. Outside the loop (a server call), the next + // pass picks it up once its first top-up is done. + stream?.yield(.settle(sequence)) + } + } + + /// Waiters up to `sequence` (all when nil): a later waiter's events may still be queued + private func resumeSettleWaiters(upTo sequence: Int?, stillRunning: Bool) { + let waiters = lock.withLock { () -> [CheckedContinuation] in + let (ready, waiting) = settleWaiters.reduce(into: ([CheckedContinuation](), [(sequence: Int, waiter: CheckedContinuation)]())) { result, entry in + if sequence.map({ entry.sequence <= $0 }) ?? true { + result.0.append(entry.waiter) + } else { + result.1.append(entry) + } + } + settleWaiters = waiting + return ready + } + waiters.forEach { $0.resume(returning: stillRunning) } + } + private func removeParts() async { await transport.cancelParts(for: uuid) try? FileManager.default.removeItem(at: Self.partsDirectory(for: uuid)) @@ -328,7 +382,15 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { let cellularObserver = UserDefaults.standard.observe(\.userSettingsAllowCellularData, options: [.new]) { _, _ in continuation.yield(.cellularSettingChanged) } + let pendingSettle = lock.withLock { () -> Int? in + eventContinuation = continuation + return settleWaiters.map(\.sequence).max() + } + if let pendingSettle { + continuation.yield(.settle(pendingSettle)) + } defer { + lock.withLock { eventContinuation = nil } subscription.cancel() ticker.cancel() cellularObserver.invalidate() @@ -380,9 +442,14 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { case .cellularSettingChanged: // Their cancellations come back as `.resend` await transport.cancelParts(for: uuid) + case .settle(let sequence): + // Every earlier event is handled and the window was topped up at the start of + // this pass + resumeSettleWaiters(upTo: sequence, stillRunning: true) case .part(.progress(let partNumber, let bytesSent)): sawEventSinceTick = true - // A late progress callback (the delegate queue is concurrent) for a finished part + // A part this pass's session read (at its start or a tick) no longer held: its + // task had already completed, with progress still queued guard active.contains(partNumber) else { continue } bytesInFlight[partNumber] = bytesSent case .part(.finished(let partNumber, let statusCode, let error)): @@ -490,6 +557,9 @@ class FileUploadOperation: AsyncOperation, BPLogger, @unchecked Sendable { case part(PartUploadEvent) case tick case cellularSettingChanged + /// A background wake waits for the current top-up (`settle()`); numbered so a wake + /// isn't released by an earlier one's marker + case settle(Int) } enum PartOutcome: Equatable { diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index fa91d332e..2efdc73b7 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -66,6 +66,11 @@ public protocol SyncQueueServiceProtocol { /// Removes an upload the app refuses (a book over the size limit): the book stays on this /// device only. The one dismissible pause — server-refused tasks only Retry or Report. func dismissPausedTask(id: String) + + /// Returns once the running upload has handled the part events delivered so far and + /// queued its next parts, or right away when no upload will run (sync off, nothing + /// runnable). A background wake awaits this before telling iOS it's finished. + func settleUploads() async } public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { @@ -515,6 +520,25 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } } + public func settleUploads() async { + // Bounded: the caller also times out, but a lane that never starts mustn't spin here + for _ in 0..<100 { + guard serverLanesEnabled else { return } + let running = operationQueue.operations.first { + $0 is FileUploadOperation && $0.isExecuting && !$0.isCancelled + } as? FileUploadOperation + if let running { + // Settled while still uploading; if the book finished instead, the lane's next + // upload starts and tops up in turn + if await running.settle() { return } + continue + } + guard await taskContainer.hasRunnableTask(for: TaskQueueKey.uploadFile) else { return } + // A worker is about to start one (the lane was just woken) + try? await Task.sleep(for: .milliseconds(200)) + } + } + public func dismissPausedTask(id: String) { Task { guard From 193561026b574fadcce109778ee9a4722c0dcfdd Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 27 Sep 2026 21:27:27 -0500 Subject: [PATCH 166/172] feat(upload): keep the upload queue at full speed in the background MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Outside a continued task, iOS holds background parts for minutes and answers them in batched wakes (P2b: a 1 GB upload took 507 s instead of 297 s). A BGContinuedProcessingTask keeps the app running with a Live Activity instead. UploadContinuationController (owned by AppServices, registered at launch as .uploads.continued) runs one continued task for the whole queue. It's submitted whenever books are queued for upload — an import, or the first sync after signing in or subscribing: SyncService posts .bookUploadsQueued — from the foreground, with S3 access, on a network the Wi-Fi-only setting allows, and when some waiting book can move. The Live Activity reads "Uploading files", "(x / n) ", with progress in bytes across every book seen waiting (n grows as more are queued). The waiting books come from SyncQueueService.pendingBookUploads(): one repository read of both lanes (the sync lane's book .uploads, except media-server ones that carry no file, and pipe jobs; then the upload lane), parked ones counted apart. The run ends when the queue stays empty for a moment; unsuccessfully if only parked uploads remain or nothing can move (no S3 access, every book behind a blocked lane). Expiry or a Live Activity cancel is answered in the handler, and the parts carry on in the background sessions. A task iOS launches before the services exist is held, and a request iOS dropped no longer blocks the next one. The upload task is now stored before the sync .upload that scheduled it is popped, so a book is never in neither lane (a kill there lost the upload). iOS 27's submitTaskRequest runs off the main thread, as its header asks. --- BookPlayer.xcodeproj/project.pbxproj | 8 + BookPlayer/AppDelegate.swift | 14 +- BookPlayer/Base.lproj/Localizable.strings | 2 + BookPlayer/Info.plist | 1 + .../UploadContinuationController.swift | 344 ++++++++++++++++++ BookPlayer/Utils/AppServices.swift | 37 ++ BookPlayer/en.lproj/Localizable.strings | 2 + BookPlayerTests/Services/SyncQueueTests.swift | 109 ++++++ .../Services/UploadContinuationTests.swift | 331 +++++++++++++++++ CLAUDE.md | 17 +- .../Notification+BookPlayerKit.swift | 3 + Shared/Services/Sync/SyncService.swift | 7 + .../SyncQueue/SyncQueueRepository.swift | 53 +++ .../Services/SyncQueue/SyncQueueService.swift | 104 +++++- 14 files changed, 1014 insertions(+), 18 deletions(-) create mode 100644 BookPlayer/Services/UploadContinuationController.swift create mode 100644 BookPlayerTests/Services/UploadContinuationTests.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index 21279b43f..bdf40e8a5 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -564,6 +564,7 @@ 63B4A3C62E93858C00784A22 /* PlayerControlsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */; }; 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */; }; F015116186D7F12201CDB4C0 /* SyncPauseReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 185FB83C0CF083AC102D8753 /* SyncPauseReporter.swift */; }; + 4907B9D7B059A2A93D35AAE0 /* UploadContinuationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DAECA780F8170162DAD1492 /* UploadContinuationController.swift */; }; AD7114A34343C516BD1890E2 /* BackgroundSessionWakeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EEA5B438944574494C5385F /* BackgroundSessionWakeCoordinator.swift */; }; D071ABD44684949C58C7D8D0 /* PromptSurfaceArbiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */; }; 9AB6B44F84D195FCCF7A4F9F /* PromptSurfaceArbiterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D4833D717C7B97F7B5DFDC5 /* PromptSurfaceArbiterTests.swift */; }; @@ -974,6 +975,7 @@ C972F5D6BD6375832F59BF7E /* IntegrationHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5265B16421BFC176BFFE4EA5 /* IntegrationHTTPClient.swift */; }; CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */; }; CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */; }; + 6C5741E68D44175ECF900294 /* UploadContinuationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04EDE7B20E949F916D8ECA2D /* UploadContinuationTests.swift */; }; 50EEEAE96509B6867FC9180B /* BackgroundSessionWakeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83C482DCC8DC2DF811A3C7BC /* BackgroundSessionWakeTests.swift */; }; B2B1B1BF822F47AA40EE1B71 /* MultipartUploadEngineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */; }; 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */; }; @@ -1685,6 +1687,7 @@ 63B4A3C52E93858C00784A22 /* PlayerControlsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerControlsView.swift; sourceTree = ""; }; 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListSyncRefreshService.swift; sourceTree = ""; }; 185FB83C0CF083AC102D8753 /* SyncPauseReporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncPauseReporter.swift; sourceTree = ""; }; + 7DAECA780F8170162DAD1492 /* UploadContinuationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UploadContinuationController.swift; sourceTree = ""; }; 5EEA5B438944574494C5385F /* BackgroundSessionWakeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundSessionWakeCoordinator.swift; sourceTree = ""; }; 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptSurfaceArbiter.swift; sourceTree = ""; }; 3D4833D717C7B97F7B5DFDC5 /* PromptSurfaceArbiterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromptSurfaceArbiterTests.swift; sourceTree = ""; }; @@ -2008,6 +2011,7 @@ FEEDBABE0000000000000001 /* SharedWidgetStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStore.swift; sourceTree = ""; }; FEEDBABE0000000000000004 /* SharedWidgetStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStoreTests.swift; sourceTree = ""; }; FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncQueueTests.swift; sourceTree = ""; }; + 04EDE7B20E949F916D8ECA2D /* UploadContinuationTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UploadContinuationTests.swift; sourceTree = ""; }; 83C482DCC8DC2DF811A3C7BC /* BackgroundSessionWakeTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BackgroundSessionWakeTests.swift; sourceTree = ""; }; 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MultipartUploadEngineTests.swift; sourceTree = ""; }; C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncPauseReportingTests.swift; sourceTree = ""; }; @@ -3374,6 +3378,7 @@ 9F82DF9B27DFE46B001B0EA8 /* PhoneWatchConnectivityService.swift */, 63B50F042B692E4200BCABBA /* ListSyncRefreshService.swift */, 185FB83C0CF083AC102D8753 /* SyncPauseReporter.swift */, + 7DAECA780F8170162DAD1492 /* UploadContinuationController.swift */, 5EEA5B438944574494C5385F /* BackgroundSessionWakeCoordinator.swift */, 42B6A047D0689D9E2E2D9749 /* PromptSurfaceArbiter.swift */, F05D3B1199FC741AB2FDED67 /* PlaybackFailure.swift */, @@ -3400,6 +3405,7 @@ A11C418B028982CF431C589F /* LibraryServiceReloadChaptersTests.swift */, 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */, FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */, + 04EDE7B20E949F916D8ECA2D /* UploadContinuationTests.swift */, 83C482DCC8DC2DF811A3C7BC /* BackgroundSessionWakeTests.swift */, 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */, C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */, @@ -5220,6 +5226,7 @@ 416AAC3323F51031005AD04F /* LocalizableButton.swift in Sources */, 63B50F052B692E4200BCABBA /* ListSyncRefreshService.swift in Sources */, F015116186D7F12201CDB4C0 /* SyncPauseReporter.swift in Sources */, + 4907B9D7B059A2A93D35AAE0 /* UploadContinuationController.swift in Sources */, AD7114A34343C516BD1890E2 /* BackgroundSessionWakeCoordinator.swift in Sources */, D071ABD44684949C58C7D8D0 /* PromptSurfaceArbiter.swift in Sources */, 5823F9DE917AE83D3C4DC04E /* PlaybackFailure.swift in Sources */, @@ -5329,6 +5336,7 @@ 5A9506FC8DAB858289E0EF89 /* IntegrationServerAddressTests.swift in Sources */, 3F058A74415A3AF6C17DA8F4 /* IntegrationHostResolverTests.swift in Sources */, CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */, + 6C5741E68D44175ECF900294 /* UploadContinuationTests.swift in Sources */, 50EEEAE96509B6867FC9180B /* BackgroundSessionWakeTests.swift in Sources */, B2B1B1BF822F47AA40EE1B71 /* MultipartUploadEngineTests.swift in Sources */, 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */, diff --git a/BookPlayer/AppDelegate.swift b/BookPlayer/AppDelegate.swift index bfa0d5125..7481c5a1f 100644 --- a/BookPlayer/AppDelegate.swift +++ b/BookPlayer/AppDelegate.swift @@ -445,6 +445,9 @@ extension AppDelegate { self.handleAppRefresh(task: refreshTask) } + // At launch, so a task iOS runs for an earlier submit finds its handler + UploadContinuationController.register { AppServices.shared.uploadContinuation } + BGTaskScheduler.shared.register( forTaskWithIdentifier: databaseBackupTaskIdentifier, using: nil @@ -462,16 +465,19 @@ extension AppDelegate { let request = BGAppRefreshTaskRequest(identifier: refreshTaskIdentifier) request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) - submitBackgroundTask(request) + Self.submitBackgroundTask(request) } /// `submit(_:)` is deprecated from iOS 27 in favor of `submitTaskRequest`. - func submitBackgroundTask( + static func submitBackgroundTask( _ request: BGTaskRequest, completion: @escaping @Sendable ((any Error)?) -> Void = { _ in } ) { if #available(iOS 27, *) { - BGTaskScheduler.shared.submitTaskRequest(request, completionHandler: completion) + // Its header: not from the main thread + DispatchQueue.global(qos: .utility).async { + BGTaskScheduler.shared.submitTaskRequest(request, completionHandler: completion) + } } else { do { try BGTaskScheduler.shared.submit(request) @@ -549,7 +555,7 @@ extension AppDelegate { } let scheduledFor = request.earliestBeginDate?.description ?? "unknown" - submitBackgroundTask(request) { error in + Self.submitBackgroundTask(request) { error in if let error { Self.logger.error("Failed to schedule database backup: \(error.localizedDescription)") } else { diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index ae51adfc3..72ff6e01f 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -567,3 +567,5 @@ We're working hard on providing a seamless experience, if possible, please conta "upload_file_too_large_message" = "Larger than 10 GB, so it stays on this device and isn't backed up."; "sync_task_dismiss_button" = "Dismiss"; "sync_tasks_need_attention_voiceover" = "Needs attention"; +"continued_upload_title" = "Uploading files"; +"continued_upload_subtitle" = "(%1$d / %2$d) %3$@"; diff --git a/BookPlayer/Info.plist b/BookPlayer/Info.plist index 3b183a779..5979512ce 100644 --- a/BookPlayer/Info.plist +++ b/BookPlayer/Info.plist @@ -28,6 +28,7 @@ $(BP_BUNDLE_IDENTIFIER).background.refresh $(BP_BUNDLE_IDENTIFIER).background.database.backup + $(BP_BUNDLE_IDENTIFIER).uploads.continued BP_API_DOMAIN $(BP_API_DOMAIN) diff --git a/BookPlayer/Services/UploadContinuationController.swift b/BookPlayer/Services/UploadContinuationController.swift new file mode 100644 index 000000000..7151f8526 --- /dev/null +++ b/BookPlayer/Services/UploadContinuationController.swift @@ -0,0 +1,344 @@ +// +// UploadContinuationController.swift +// BookPlayer +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BackgroundTasks +import BookPlayerKit +import Combine +import Foundation +import UIKit + +/// What the continued task needs of `BGContinuedProcessingTask` (a seam for tests) +protocol ContinuedUploadTask: AnyObject { + var progress: Progress { get } + var expirationHandler: (() -> Void)? { get set } + func updateTitle(_ title: String, subtitle: String) + func setTaskCompleted(success: Bool) +} + +extension BGContinuedProcessingTask: ContinuedUploadTask {} + +/// Progress across every book of one continued run: bytes for the progress bar, and +/// "(x / n) file name" for the Live Activity's subtitle. `n` is every book seen waiting +/// since the run began (it grows as more are queued); a book no longer waiting counts as +/// done, whether it uploaded or was dropped. +struct UploadContinuationProgress { + private(set) var order = [String]() + private var sizes = [String: Int64]() + private var names = [String: String]() + private(set) var waiting = [String]() + private var waitingSet = Set() + /// The book the upload lane is sending, and how far along it is + private(set) var current: (uuid: String, fraction: Double)? + + mutating func update(waiting pending: [PendingBookUpload]) { + for book in pending { + if sizes[book.uuid] == nil { + order.append(book.uuid) + } + // The largest size seen: a file read as 0 once mustn't shrink the total + sizes[book.uuid] = max(sizes[book.uuid] ?? 0, book.fileSize) + names[book.uuid] = book.fileName + } + waiting = pending.map(\.uuid) + waitingSet = Set(waiting) + if let current, !waitingSet.contains(current.uuid) { + self.current = nil + } + } + + mutating func updateProgress(uuid: String, fraction: Double) { + guard waitingSet.contains(uuid) else { return } + current = (uuid, min(max(fraction, 0), 1)) + } + + var isFinished: Bool { waiting.isEmpty } + + var totalBytes: Int64 { sizes.values.reduce(0, +) } + + var completedBytes: Int64 { + let done = sizes.reduce(Int64(0)) { $0 + (waitingSet.contains($1.key) ? 0 : $1.value) } + guard let current, let size = sizes[current.uuid] else { return done } + return done + Int64(Double(size) * current.fraction) + } + + /// 1-based position of the book being sent (or next up), and how many there are + var position: (index: Int, count: Int) { + let done = order.count - waiting.count + return (min(done + 1, max(order.count, 1)), order.count) + } + + /// The book being sent, else the next one waiting + var currentFileName: String? { + let uuid = current?.uuid ?? waiting.first + return uuid.flatMap { names[$0] } + } +} + +/// Keeps book uploads running at full speed while the app is in the background, through a +/// `BGContinuedProcessingTask` (its Live Activity: "Uploading files", "(x / n) name"). +/// Submitted whenever books are queued for upload (an import, the first sync after signing +/// in or subscribing); covers the whole queue, not one book, +/// and ends when nothing is waiting — or nothing can move (a blocked lane, no S3 access). +/// When it expires (or the user cancels it) the parts keep going in the background +/// sessions, only slower. +@MainActor +@Observable +final class UploadContinuationController: BPLogger { + enum State: Equatable { + case idle + /// Submitted; iOS hasn't launched it yet + case starting + case running + } + + struct Dependencies { + /// Whether this account's uploads reach S3 now (PRO, sync on) + var canUpload: () -> Bool + /// The transfer setting allows uploading on the current network + var networkAllowsUploads: () -> Bool + /// iOS only accepts a continued task from the foreground + var isForeground: () -> Bool + var pendingUploads: () async -> PendingBookUploads + var submit: (BGTaskRequest) async throws -> Void + /// Whether iOS still holds the submitted request (it may drop a queued one) + var hasPendingRequest: () async -> Bool + /// The queue's counts: a change can mean a book finished, was added or got blocked + var queueChanges: () -> AnyPublisher + /// A queue that's empty for this long is done (a book moving between lanes shows up + /// again within it) + var confirmEmptyAfter: Duration = .seconds(1) + } + + static let identifier = "\(Bundle.main.configurationString(for: .bundleIdentifier)).uploads.continued" + + private(set) var state = State.idle + + @ObservationIgnored private var dependencies: Dependencies? + @ObservationIgnored private var task: ContinuedUploadTask? + /// A task iOS launched before the services were up (a cold launch into it) + @ObservationIgnored private var heldTask: ContinuedUploadTask? + @ObservationIgnored private var progress = UploadContinuationProgress() + @ObservationIgnored private var counts = QueueCounts() + @ObservationIgnored private var subscriptions = Set() + @ObservationIgnored private var queueSubscription: AnyCancellable? + @ObservationIgnored private var lastSubtitle: String? + @ObservationIgnored private var queuedObserver: NSObjectProtocol? + @ObservationIgnored private var isRefreshing = false + @ObservationIgnored private var refreshAgain = false + + /// Wired once the core services exist + func setup(dependencies: Dependencies) { + self.dependencies = dependencies + // Always current, so a submit can tell a queue that can't move (a blocked lane); a + // running task re-reads on it. Throttled: every store and pop changes the counts. + queueSubscription = dependencies.queueChanges() + .throttle(for: .milliseconds(500), scheduler: DispatchQueue.main, latest: true) + .sink { [weak self] counts in + guard let self else { return } + self.counts = counts + if self.task != nil { + Task { await self.refresh() } + } + } + queuedObserver = NotificationCenter.default.addObserver( + forName: .bookUploadsQueued, + object: nil, + queue: .main + ) { [weak self] _ in + MainActor.assumeIsolated { + guard let self else { return } + Task { await self.submitIfNeeded() } + } + } + if let heldTask { + self.heldTask = nil + attach(heldTask) + } + } + + /// Registered at launch: iOS calls it with the task, on a queue of its own + static func register(controller: @escaping @MainActor () -> UploadContinuationController) { + BGTaskScheduler.shared.register(forTaskWithIdentifier: identifier, using: nil) { task in + guard let task = task as? BGContinuedProcessingTask else { + task.setTaskCompleted(success: false) + return + } + Task { @MainActor in controller().attach(task) } + } + } + + func submitIfNeeded() async { + guard let dependencies else { return } + // A request iOS accepted but dropped (or never ran) mustn't block every later one + if state == .starting, await !dependencies.hasPendingRequest(), state == .starting { + state = .idle + } + guard state == .idle else { return } + guard + dependencies.isForeground(), + dependencies.canUpload(), + dependencies.networkAllowsUploads() + else { return } + + let pending = await dependencies.pendingUploads() + // Nothing waiting, or nothing that can move (e.g. behind a paused lane): a Live + // Activity that fails at once helps no one + guard state == .idle, !pending.books.isEmpty, canMakeProgress(pending) else { return } + + var initial = UploadContinuationProgress() + initial.update(waiting: pending.books) + let request = BGContinuedProcessingTaskRequest( + identifier: Self.identifier, + title: Self.title, + subtitle: Self.subtitle(for: initial) + ) + state = .starting + do { + try await dependencies.submit(request) + Self.logger.info("Continued upload task submitted for \(pending.books.count) book(s)") + } catch { + Self.logger.error("Continued upload task not submitted: \(error.localizedDescription)") + state = .idle + } + } + + func attach(_ task: ContinuedUploadTask) { + // Answered first, whatever else happens: also what cancelling the Live Activity calls. + // Answered here, on iOS's queue, not after a hop to main; the parts carry on in the + // background sessions. + task.expirationHandler = { [weak self, weak task] in + task?.setTaskCompleted(success: false) + Task { @MainActor in + guard let self, let task else { return } + // Expired while held: never attach it later + if self.heldTask === task { + self.heldTask = nil + } + guard self.task === task else { return } + self.finish(success: false, reason: "expired", alreadyCompleted: true) + } + } + guard let dependencies else { + heldTask = task + return + } + // A second launch replaces the first run + if self.task != nil { + finish(success: false, reason: "replaced") + } + self.task = task + state = .running + progress = UploadContinuationProgress() + lastSubtitle = nil + + NotificationCenter.default.publisher(for: .uploadProgressUpdated) + .receive(on: DispatchQueue.main) + .sink { [weak self] notification in + guard + let self, + let uuid = notification.userInfo?["uuid"] as? String, + let fraction = notification.userInfo?["progress"] as? Double + else { return } + self.progress.updateProgress(uuid: uuid, fraction: fraction) + self.report() + } + .store(in: &subscriptions) + + Task { await refresh() } + } + + /// One at a time, the latest state winning: a queue change during a read re-reads after + /// it, so snapshots never apply out of order and a burst of changes costs two reads + private func refresh() async { + guard !isRefreshing else { + refreshAgain = true + return + } + isRefreshing = true + defer { isRefreshing = false } + repeat { + refreshAgain = false + await refreshOnce() + } while refreshAgain && task != nil + } + + private func refreshOnce() async { + guard let dependencies, let task else { return } + var pending = await dependencies.pendingUploads() + guard self.task === task else { return } + + if pending.books.isEmpty { + // A book moving between lanes (or handed back to the sync lane) can look absent + // for a moment: only a queue that stays empty is done + try? await Task.sleep(for: dependencies.confirmEmptyAfter) + pending = await dependencies.pendingUploads() + guard self.task === task else { return } + guard pending.books.isEmpty else { + progress.update(waiting: pending.books) + report() + return + } + progress.update(waiting: []) + // The bar ends full (also when no size could be read) + task.progress.totalUnitCount = max(progress.totalBytes, 1) + task.progress.completedUnitCount = task.progress.totalUnitCount + let parked = pending.parkedCount > 0 + finish(success: !parked, reason: parked ? "only parked uploads left" : "queue done") + return + } + + progress.update(waiting: pending.books) + guard canMakeProgress(pending) else { + finish(success: false, reason: "nothing can upload now") + return + } + report() + } + + /// Something waiting sits in a lane that can run: no S3 access, or every waiting book + /// behind a blocked lane (a lane-level or account-level pause), means waiting on the user + private func canMakeProgress(_ pending: PendingBookUploads) -> Bool { + guard let dependencies, dependencies.canUpload() else { return false } + return pending.books.contains { !counts.isBlocked($0.queueKey) } + } + + private func report() { + guard let task else { return } + task.progress.totalUnitCount = max(progress.totalBytes, 1) + task.progress.completedUnitCount = min(progress.completedBytes, task.progress.totalUnitCount) + // Nothing to name (the queue emptied): keep the last subtitle + guard progress.currentFileName != nil else { return } + let subtitle = Self.subtitle(for: progress) + if subtitle != lastSubtitle { + lastSubtitle = subtitle + task.updateTitle(Self.title, subtitle: subtitle) + } + } + + private func finish(success: Bool, reason: String, alreadyCompleted: Bool = false) { + guard let task else { return } + Self.logger.info("Continued upload task done (\(reason))") + self.task = nil + subscriptions.removeAll() + state = .idle + if !alreadyCompleted { + task.setTaskCompleted(success: success) + } + } + + static var title: String { "continued_upload_title".localized } + + static func subtitle(for progress: UploadContinuationProgress) -> String { + let position = progress.position + return String( + format: "continued_upload_subtitle".localized, + position.index, + position.count, + progress.currentFileName ?? "" + ) + } +} diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index fd1161715..e04f24474 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -7,6 +7,7 @@ // import AppIntents +import BackgroundTasks import BookPlayerKit import Combine import CoreData @@ -34,6 +35,10 @@ final class AppServices: BPLogger { let reviewPromptService = ReviewPromptService() /// Reports parked sync tasks to Sentry; lives as long as the services it observes private var syncPauseReporter: SyncPauseReporter? + /// Keeps book uploads going in the background (a continued processing task) + let uploadContinuation = UploadContinuationController() + /// The Wi-Fi-only transfer setting needs to know the current network + private let networkMonitor = NetworkMonitor() private init() { let playerState = PlayerState() @@ -159,6 +164,7 @@ final class AppServices: BPLogger { ) self.coreServices = coreServices + setupUploadContinuation(syncQueueService: syncQueueService) // Wire up accountService for Watch auth transfer watchService.setAccountService(accountService) @@ -167,6 +173,37 @@ final class AppServices: BPLogger { } } + private func setupUploadContinuation(syncQueueService: SyncQueueService) { + let networkMonitor = networkMonitor + uploadContinuation.setup(dependencies: .init( + canUpload: { syncQueueService.serverLanesEnabled && syncQueueService.accessPolicy[.uploadFile] == true }, + // Wi-Fi-only means "not over cellular", as the non-cellular session does (wired + // Ethernet counts) + networkAllowsUploads: { + UserDefaults.standard.bool(forKey: Constants.UserDefaults.allowCellularData) + || (networkMonitor.isConnected && !networkMonitor.isConnectedViaCellular) + }, + isForeground: { UIApplication.shared.applicationState == .active }, + pendingUploads: { await syncQueueService.pendingBookUploads() }, + submit: { request in + try await withCheckedThrowingContinuation { (continuation: CheckedContinuation) in + AppDelegate.submitBackgroundTask(request) { error in + if let error { + continuation.resume(throwing: error) + } else { + continuation.resume() + } + } + } + }, + hasPendingRequest: { + await BGTaskScheduler.shared.pendingTaskRequests() + .contains { $0.identifier == UploadContinuationController.identifier } + }, + queueChanges: { syncQueueService.observeQueueCounts() } + )) + } + // MARK: - Convenience Methods func playLastBook() { diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index b1ee44df3..501c60010 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -566,3 +566,5 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "upload_file_too_large_message" = "Larger than 10 GB, so it stays on this device and isn't backed up."; "sync_task_dismiss_button" = "Dismiss"; "sync_tasks_need_attention_voiceover" = "Needs attention"; +"continued_upload_title" = "Uploading files"; +"continued_upload_subtitle" = "(%1$d / %2$d) %3$@"; diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index e4a3c9fb0..3047d7419 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -1313,3 +1313,112 @@ extension SyncQueueTests { service.setServerLanesEnabled(false) } } + +// MARK: - Books waiting to upload (the continued task's view) + +extension SyncQueueTests { + func testPendingBookUploads_listsBothLanes_skippingFoldersAndParkedTasks() async throws { + let service = makeGatedEngine() + let link = FileManager.default.temporaryDirectory.appendingPathComponent("pending-\(UUID().uuidString).m4b") + try Data("0123456789".utf8).write(to: link) + defer { try? FileManager.default.removeItem(at: link) } + + var upload = uploadFileParams(id: "file") + upload["filePath"] = link.absoluteString + upload["uuid"] = "u-file" + upload["relativePath"] = "Uploading.m4b" + try await repository.storeTask(parameters: upload) + var parkedUpload = uploadFileParams(id: "parked") + parkedUpload["uuid"] = "u-parked" + try await repository.storeTask(parameters: parkedUpload) + await repository.park( + taskId: "parked", + pause: TaskPause(scope: .task, errorCode: "invalid_parts", message: "m", httpStatus: 422, pausedAt: Date()) + ) + let scheduler = SyncJobScheduler(tasksRepository: repository) + let book = try JSONDecoder().decode(SyncableItem.self, from: Data( + #"{"relativePath":"Next.m4b","originalFileName":"Next.m4b","title":"Next","isFinished":false,"type":2,"uuid":"u-book"}"#.utf8 + )) + let folder = try JSONDecoder().decode(SyncableItem.self, from: Data( + #"{"relativePath":"Folder","originalFileName":"Folder","title":"Folder","isFinished":false,"type":0,"uuid":"u-folder"}"#.utf8 + )) + // A media-server book: its metadata upload carries `provider` and no file follows + let streamed = try syncableItem(uuid: "u-streamed", mediaServer: true) + await scheduler.scheduleLibraryItemUploadJob(for: book) + await scheduler.scheduleLibraryItemUploadJob(for: folder) + await scheduler.scheduleLibraryItemUploadJob(for: streamed) + + let pending = await service.pendingBookUploads() + + // The sync lane first, then the upload lane + XCTAssertEqual(pending.books.map(\.uuid), ["u-book", "u-file"]) + XCTAssertEqual(pending.books.map(\.queueKey), [TaskQueueKey.sync, TaskQueueKey.uploadFile]) + XCTAssertEqual(pending.books.last?.fileSize, 10) + XCTAssertEqual(pending.books.last?.fileName, "Uploading.m4b") + XCTAssertEqual(pending.parkedCount, 1) + } +} + +// MARK: - The sync-to-upload hand-off + +/// Answers the metadata upload with a URL (the server needs the bytes) and fails everything +/// else, so the upload lane just retries +private final class NeedsBytesNetworkClient: NetworkClientMock, @unchecked Sendable { + init() { super.init(mockedResponse: Empty()) } + + override func request( + path: String, + method: HTTPMethod, + parameters: [String: Any]? + ) async throws -> T { + guard path == "/v1/library", method == .put else { throw URLError(.timedOut) } + let json = #"{"content":{"url":"https://s3.test/book"}}"# + return try JSONDecoder().decode(T.self, from: Data(json.utf8)) + } +} + +extension SyncQueueTests { + /// The upload task is stored before the sync `.upload` is popped: at no point is the book + /// in neither lane (a kill there would lose the upload; the continued task would count it + /// done) + func testMetadataUploadNeedingBytes_neverLeavesTheBookInNeitherLane() async throws { + let service = makeGatedEngine() + service.networkClient = NeedsBytesNetworkClient() + let name = "handoff-\(UUID().uuidString).m4b" + let bookURL = DataManager.getProcessedFolderURL().appendingPathComponent(name) + try FileManager.default.createDirectory(at: DataManager.getProcessedFolderURL(), withIntermediateDirectories: true) + try Data("0123456789".utf8).write(to: bookURL) + defer { + try? FileManager.default.removeItem(at: bookURL) + try? FileManager.default.removeItem(at: SyncJobScheduler.hardLinkURL(for: name)) + } + let book = try JSONDecoder().decode(SyncableItem.self, from: Data( + #"{"relativePath":"\#(name)","originalFileName":"\#(name)","title":"Book","isFinished":false,"type":2,"uuid":"\#(UUID().uuidString)"}"#.utf8 + )) + // Appended on main (the counts are delivered there), read there too + nonisolated(unsafe) var snapshots = [QueueCounts]() + let recording = tasksDataManager.observeQueueCounts().sink { snapshots.append($0) } + defer { recording.cancel() } + await SyncJobScheduler(tasksRepository: repository).scheduleLibraryItemUploadJob(for: book) + + service.setServerLanesEnabled(true) + + let deadline = Date().addingTimeInterval(3) + while Date() < deadline { + let tasks = await repository.getAllTasks() + if tasks.map(\.jobType) == [.uploadFile] { break } + try await Task.sleep(for: .milliseconds(20)) + } + service.setServerLanesEnabled(false) + try await Task.sleep(for: .milliseconds(50)) + let recorded = await MainActor.run { snapshots } + + XCTAssertEqual(recorded.last?.count(in: TaskQueueKey.uploadFile), 1) + XCTAssertEqual(recorded.last?.count(in: TaskQueueKey.sync), 0) + let firstQueued = recorded.firstIndex { $0.total > 0 } ?? 0 + XCTAssertFalse( + recorded[firstQueued...].contains { $0.total == 0 }, + "the book was briefly in neither lane" + ) + } +} diff --git a/BookPlayerTests/Services/UploadContinuationTests.swift b/BookPlayerTests/Services/UploadContinuationTests.swift new file mode 100644 index 000000000..5578a14a4 --- /dev/null +++ b/BookPlayerTests/Services/UploadContinuationTests.swift @@ -0,0 +1,331 @@ +// +// UploadContinuationTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import BackgroundTasks +import Combine +import Foundation +import XCTest + +@testable import BookPlayer +@testable import BookPlayerKit + +private final class FakeContinuedTask: ContinuedUploadTask { + let progress = Progress(totalUnitCount: 0) + var expirationHandler: (() -> Void)? + private(set) var titles = [(String, String)]() + private(set) var completions = [Bool]() + + func updateTitle(_ title: String, subtitle: String) { titles.append((title, subtitle)) } + func setTaskCompleted(success: Bool) { completions.append(success) } +} + +@MainActor +final class UploadContinuationTests: XCTestCase { + private func book(_ uuid: String, _ name: String, _ size: Int64) -> PendingBookUpload { + PendingBookUpload(uuid: uuid, relativePath: "Folder/\(name)", fileSize: size) + } + + // MARK: - Progress + + func testProgress_countsBytesPositionAndTheCurrentFile() { + var progress = UploadContinuationProgress() + progress.update(waiting: [book("a", "A.m4b", 100), book("b", "B.m4b", 300)]) + + XCTAssertEqual(progress.position.index, 1) + XCTAssertEqual(progress.position.count, 2) + XCTAssertEqual(progress.currentFileName, "A.m4b", "the next one waiting before any upload runs") + XCTAssertEqual(progress.totalBytes, 400) + XCTAssertEqual(progress.completedBytes, 0) + + progress.updateProgress(uuid: "a", fraction: 0.5) + XCTAssertEqual(progress.completedBytes, 50) + + // A finished; B is being sent + progress.update(waiting: [book("b", "B.m4b", 300)]) + progress.updateProgress(uuid: "b", fraction: 0.1) + XCTAssertEqual(progress.position.index, 2) + XCTAssertEqual(progress.currentFileName, "B.m4b") + XCTAssertEqual(progress.completedBytes, 130) + XCTAssertFalse(progress.isFinished) + + progress.update(waiting: []) + XCTAssertTrue(progress.isFinished) + XCTAssertEqual(progress.completedBytes, 400) + } + + /// Books queued mid-run join the count instead of starting a new one + func testProgress_growsWhenBooksAreQueuedMidRun() { + var progress = UploadContinuationProgress() + progress.update(waiting: [book("a", "A.m4b", 100)]) + progress.update(waiting: []) + progress.update(waiting: [book("c", "C.m4b", 50)]) + + XCTAssertEqual(progress.position.index, 2) + XCTAssertEqual(progress.position.count, 2) + XCTAssertEqual(progress.totalBytes, 150) + XCTAssertEqual(progress.currentFileName, "C.m4b") + } + + func testSubtitle_prefixesThePositionToTheFileName() { + var progress = UploadContinuationProgress() + progress.update(waiting: [book("a", "A.m4b", 1), book("b", "B.m4b", 1), book("c", "C.m4b", 1)]) + progress.update(waiting: [book("b", "B.m4b", 1), book("c", "C.m4b", 1)]) + + XCTAssertEqual(UploadContinuationController.subtitle(for: progress), "(2 / 3) B.m4b") + XCTAssertEqual(UploadContinuationController.title, "Uploading files") + } + + // MARK: - Controller + + private var pending = [PendingBookUpload]() + private var parkedCount = 0 + private var submitted = [BGTaskRequest]() + private var submitError: Error? + private var canUpload = true + private var networkAllows = true + private var foreground = true + private var requestPending = true + private let changes = PassthroughSubject() + + private func dependencies() -> UploadContinuationController.Dependencies { + .init( + canUpload: { [unowned self] in self.canUpload }, + networkAllowsUploads: { [unowned self] in self.networkAllows }, + isForeground: { [unowned self] in self.foreground }, + pendingUploads: { [unowned self] in PendingBookUploads(books: self.pending, parkedCount: self.parkedCount) }, + submit: { [unowned self] request in + if let submitError = self.submitError { throw submitError } + self.submitted.append(request) + }, + hasPendingRequest: { [unowned self] in self.requestPending }, + queueChanges: { [unowned self] in self.changes.eraseToAnyPublisher() }, + confirmEmptyAfter: .milliseconds(50) + ) + } + + private func makeController() -> UploadContinuationController { + let controller = UploadContinuationController() + controller.setup(dependencies: dependencies()) + return controller + } + + private func waitUntil(_ timeout: TimeInterval = 2, _ condition: () -> Bool) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline, !condition() { + try await Task.sleep(for: .milliseconds(10)) + } + } + + func testSubmit_whenBooksWait_submitsOneRequestAndStarts() async { + pending = [book("a", "A.m4b", 100)] + let controller = makeController() + + await controller.submitIfNeeded() + await controller.submitIfNeeded() + + XCTAssertEqual(submitted.count, 1, "one continued task covers the whole queue") + XCTAssertEqual(submitted.first?.identifier, UploadContinuationController.identifier) + XCTAssertEqual(controller.state, .starting) + } + + func testSubmit_isHeldBackWhenItCantHelp() async { + let controller = makeController() + + // Nothing waiting + await controller.submitIfNeeded() + pending = [book("a", "A.m4b", 100)] + // No S3 access / sync off + canUpload = false + await controller.submitIfNeeded() + canUpload = true + // Wi-Fi only, on cellular + networkAllows = false + await controller.submitIfNeeded() + networkAllows = true + // iOS only accepts it from the foreground + foreground = false + await controller.submitIfNeeded() + + XCTAssertTrue(submitted.isEmpty) + XCTAssertEqual(controller.state, .idle) + } + + func testSubmit_refused_returnsToIdle() async { + pending = [book("a", "A.m4b", 100)] + submitError = URLError(.unknown) + let controller = makeController() + + await controller.submitIfNeeded() + + XCTAssertEqual(controller.state, .idle) + } + + /// iOS accepted a request but dropped it: the next queued books submit again + func testSubmit_afterIOSDroppedTheRequest_submitsAgain() async { + pending = [book("a", "A.m4b", 100)] + let controller = makeController() + await controller.submitIfNeeded() + requestPending = false + + await controller.submitIfNeeded() + + XCTAssertEqual(submitted.count, 2) + XCTAssertEqual(controller.state, .starting) + } + + /// An import (or the first sync after signing in) queues books: that alone submits it + func testQueuedBooks_submitTheTask() async throws { + pending = [book("a", "A.m4b", 100)] + let controller = makeController() + + NotificationCenter.default.post(name: .bookUploadsQueued, object: nil) + + try await waitUntil { !submitted.isEmpty } + XCTAssertEqual(submitted.count, 1) + XCTAssertEqual(controller.state, .starting) + } + + func testRunningTask_reportsProgressAndEndsWhenTheQueueEmpties() async throws { + pending = [book("a", "A.m4b", 100), book("b", "B.m4b", 100)] + let controller = makeController() + let task = FakeContinuedTask() + + controller.attach(task) + try await waitUntil { !task.titles.isEmpty } + XCTAssertEqual(controller.state, .running) + XCTAssertEqual(task.titles.last?.1, "(1 / 2) A.m4b") + XCTAssertEqual(task.progress.totalUnitCount, 200) + + NotificationCenter.default.post( + name: .uploadProgressUpdated, + object: nil, + userInfo: ["uuid": "a", "relativePath": "Folder/A.m4b", "progress": 0.5] + ) + try await waitUntil { task.progress.completedUnitCount == 50 } + XCTAssertEqual(task.progress.completedUnitCount, 50) + + pending = [book("b", "B.m4b", 100)] + changes.send(QueueCounts(byQueueKey: [TaskQueueKey.uploadFile: 1])) + try await waitUntil { task.titles.last?.1 == "(2 / 2) B.m4b" } + XCTAssertEqual(task.titles.last?.1, "(2 / 2) B.m4b") + + pending = [] + changes.send(QueueCounts()) + try await waitUntil { !task.completions.isEmpty } + XCTAssertEqual(task.completions, [true]) + XCTAssertEqual(controller.state, .idle) + } + + /// A book moving between lanes looks absent for a moment: that's not the end + func testRunningTask_momentarilyEmptyQueue_keepsRunning() async throws { + pending = [book("a", "A.m4b", 100)] + let controller = makeController() + let task = FakeContinuedTask() + controller.attach(task) + try await waitUntil { !task.titles.isEmpty } + + pending = [] + changes.send(QueueCounts()) + try await Task.sleep(for: .milliseconds(20)) + pending = [book("a", "A.m4b", 100)] + try await Task.sleep(for: .milliseconds(150)) + + XCTAssertTrue(task.completions.isEmpty) + XCTAssertEqual(controller.state, .running) + } + + func testRunningTask_withOnlyParkedUploadsLeft_endsUnsuccessful() async throws { + pending = [] + parkedCount = 1 + let controller = makeController() + let task = FakeContinuedTask() + + controller.attach(task) + + try await waitUntil { !task.completions.isEmpty } + XCTAssertEqual(task.completions, [false]) + } + + /// Books stuck behind a blocked lane (or an account-level pause) wait on the user: the + /// run ends instead of holding the Live Activity until iOS expires it + func testRunningTask_behindABlockedLane_ends() async throws { + pending = [PendingBookUpload(uuid: "a", relativePath: "A.m4b", fileSize: 1, queueKey: TaskQueueKey.sync)] + let controller = makeController() + let task = FakeContinuedTask() + controller.attach(task) + try await waitUntil { !task.titles.isEmpty } + + changes.send(QueueCounts(byQueueKey: [TaskQueueKey.sync: 2], pausedByQueueKey: [TaskQueueKey.sync: 1], blockedQueueKeys: [TaskQueueKey.sync])) + + try await waitUntil { !task.completions.isEmpty } + XCTAssertEqual(task.completions, [false]) + } + + /// iOS launched it before the services were up (a cold launch into the task): it's held, + /// not failed, and runs once they are + func testTaskLaunchedBeforeSetup_isHeldUntilTheServicesExist() async throws { + pending = [book("a", "A.m4b", 100)] + let controller = UploadContinuationController() + let task = FakeContinuedTask() + + controller.attach(task) + XCTAssertTrue(task.completions.isEmpty) + XCTAssertNotNil(task.expirationHandler, "expiry is answered even while held") + + controller.setup(dependencies: dependencies()) + try await waitUntil { !task.titles.isEmpty } + XCTAssertEqual(controller.state, .running) + } + + /// Expired while held (the services never came up in time): not attached afterwards + func testTaskExpiredWhileHeld_isNotAttachedLater() async throws { + pending = [book("a", "A.m4b", 100)] + let controller = UploadContinuationController() + let task = FakeContinuedTask() + controller.attach(task) + + task.expirationHandler?() + try await Task.sleep(for: .milliseconds(50)) + controller.setup(dependencies: dependencies()) + try await Task.sleep(for: .milliseconds(100)) + + XCTAssertEqual(task.completions, [false]) + XCTAssertEqual(controller.state, .idle) + XCTAssertTrue(task.titles.isEmpty) + } + + /// Every waiting book sits behind a paused lane: no Live Activity that fails at once + func testSubmit_behindABlockedLane_isHeldBack() async throws { + pending = [PendingBookUpload(uuid: "a", relativePath: "A.m4b", fileSize: 1, queueKey: TaskQueueKey.sync)] + let controller = makeController() + changes.send(QueueCounts(byQueueKey: [TaskQueueKey.sync: 2], pausedByQueueKey: [TaskQueueKey.sync: 1], blockedQueueKeys: [TaskQueueKey.sync])) + try await Task.sleep(for: .milliseconds(50)) + + await controller.submitIfNeeded() + + XCTAssertTrue(submitted.isEmpty) + XCTAssertEqual(controller.state, .idle) + } + + /// Expiry (and a cancel from the Live Activity) is answered once, right in the handler + func testExpiration_completesTheTaskOnce() async throws { + pending = [book("a", "A.m4b", 100)] + let controller = makeController() + let task = FakeContinuedTask() + controller.attach(task) + try await waitUntil { !task.titles.isEmpty } + + task.expirationHandler?() + XCTAssertEqual(task.completions, [false]) + try await waitUntil { controller.state == .idle } + + pending = [] + changes.send(QueueCounts()) + try await Task.sleep(for: .milliseconds(150)) + XCTAssertEqual(task.completions, [false], "not completed a second time") + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 3bbc5148e..eaad8c3b2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -194,7 +194,7 @@ Custom `Notification.Name`s (namespaced with the bundle id at runtime) are the a CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swift` (framework-wide): `.chapterChange`, `.bookReady`, `.bookPlayed`, `.bookPaused`, `.bookEnd`, `.bookPlaying`, `.accountUpdate`, `.logout`, `.messageReceived`, `.folderProgressUpdated`, `.uploadProgressUpdated`, `.uploadCompleted`, -`.listeningProgressChanged`, `.syncTaskPaused`; and app-internal ones in `BookPlayer/Utils/Extensions/Notification+BookPlayer.swift`. +`.listeningProgressChanged`, `.syncTaskPaused`, `.backgroundSessionFinishedEvents`, `.bookUploadsQueued`; and app-internal ones in `BookPlayer/Utils/Extensions/Notification+BookPlayer.swift`. - **`PlayerManager` is the dominant publisher** of playback events; `PhoneWatchConnectivityService` and `CarPlayManager` are the dominant cross-target subscribers; `AccountService` is the auth/account hub. @@ -372,6 +372,21 @@ lines). It is the highest-risk file in the app. away. Both delegates post `.backgroundSessionFinishedEvents` from SERIAL delegate queues (so it follows the last completion); either order of handler and events works. The coordinator is created in `didFinishLaunching`, before anything can wake a session. These session names are NOT `BGTaskSchedulerPermittedIdentifiers`. + **Continued task:** `UploadContinuationController` (app target, owned by `AppServices`, registered at launch as + `.uploads.continued`) runs ONE `BGContinuedProcessingTask` for the whole upload queue, so uploads keep + full speed in the background (Live Activity "Uploading files", "(x / n) ", progress in bytes). It is + submitted whenever books are queued for upload — `SyncService.handleItemsToUpload` posts `.bookUploadsQueued` + (an import, or the first sync after signing in or subscribing; decided: always, no size threshold) — only from + the foreground, with S3 access, when the Wi-Fi-only setting allows the current network, and when some waiting + book sits in a lane that can run (not all behind a blocked lane). Its books come from + `SyncQueueService.pendingBookUploads()` (one repository read of both lanes: the sync lane's book `.upload`s — + not media-server ones, which carry no file — and pipe jobs, then the upload lane; parked ones counted apart); + refreshes are coalesced (one in flight). It ends when the queue stays empty for a moment (a book between + lanes can look absent; the upload task is stored BEFORE the sync `.upload` is popped), unsuccessfully if only + parked uploads remain or nothing can move (no S3 access, every waiting book behind a blocked lane). On expiry + or a Live Activity cancel it answers `setTaskCompleted(false)` in the handler and the parts carry on in the + background sessions. A task iOS launches before the services exist is held, not failed; a request iOS dropped + (`pendingTaskRequests`) no longer blocks the next submit. - **Book uploads are S3 multipart** (`FileUploadOperation`, the `uploadFile` lane; contract in bookplayer-api `docs/multipart-uploads.md`). A non-nil `url` from `PUT /v1/library` only means "the server needs the bytes" — the client never PUTs to it. **The server sets `synced` at `/upload/complete`; the client diff --git a/Shared/Extensions/Notification+BookPlayerKit.swift b/Shared/Extensions/Notification+BookPlayerKit.swift index 01c987106..4f79798fb 100644 --- a/Shared/Extensions/Notification+BookPlayerKit.swift +++ b/Shared/Extensions/Notification+BookPlayerKit.swift @@ -26,6 +26,9 @@ extension Notification.Name { /// A background URLSession delivered every event iOS held for it (after a relaunch or a /// wake). `object` is the session's identifier. public static let backgroundSessionFinishedEvents = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).background.session.finished.events") + /// Books were queued for upload (an import, or the first sync after signing in or + /// subscribing): the app may keep uploading in the background (a continued task) + public static let bookUploadsQueued = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).book.uploads.queued") /// A queued task was parked on a coded server error and hasn't been reported yet. /// `object` is the `QueuedSyncTask` (with its `pause`). public static let syncTaskPaused = Notification.Name("\(Bundle.main.configurationString(for: .bundleIdentifier)).sync.task.paused") diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index 78862051a..d70e834e3 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -724,6 +724,13 @@ extension SyncService { } } } + + // Media-server books have no file to upload from here (theirs goes up once downloaded) + if items.contains(where: { $0.type == .book && $0.mediaServerProviderName == nil }) { + await MainActor.run { + NotificationCenter.default.post(name: .bookUploadsQueued, object: nil) + } + } } /// Schedule upload tasks for recently imported books and folders diff --git a/Shared/Services/SyncQueue/SyncQueueRepository.swift b/Shared/Services/SyncQueue/SyncQueueRepository.swift index 2268501da..18d5b16c8 100644 --- a/Shared/Services/SyncQueue/SyncQueueRepository.swift +++ b/Shared/Services/SyncQueue/SyncQueueRepository.swift @@ -38,6 +38,11 @@ public protocol SyncQueueRepositoryProtocol: ModelActor { func getAllTasksWithParams(in queueKey: String) -> [SyncTask] + /// The tasks that can lead to a book file upload, read in one go (the sync lane's + /// `.upload`s and media-server file jobs first, then the upload lane): only their payloads + /// are fetched, not every bookmark or move job's + func getUploadCandidates() -> [UploadCandidate] + func hasUploadTask(for relativePath: String) -> Bool func applyMatchUuidConflicts(_ conflicts: [ItemConflict]) throws @@ -517,6 +522,47 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { return tasksContainer.tasks.filter { $0.queueKey == queueKey }.count } + public func getUploadCandidates() -> [UploadCandidate] { + guard let tasksContainer = fetchGlobalQueueModel() else { return [] } + + let syncCandidates = tasksContainer.orderedTasks(for: TaskQueueKey.sync).filter { + $0.jobType == .upload || $0.jobType == .externalResourceToDownload + } + let uploads = tasksContainer.orderedTasks(for: TaskQueueKey.uploadFile) + // One fetch per payload type, not per task: this runs on every queue change during a + // continued run, on the actor the workers need + var payloads = [String: any DictionaryConvertible]() + do { + for model in try modelContext.fetch(FetchDescriptor()) { + payloads[model.id] = model + } + for model in try modelContext.fetch(FetchDescriptor()) { + payloads[model.id] = model + } + for model in try modelContext.fetch(FetchDescriptor()) { + payloads[model.id] = model + } + } catch { + // Read as "nothing waiting", which can end a continued run early: make it traceable + Self.logger.error("Failed to read the upload candidates: \(error)") + } + return (syncCandidates + uploads).compactMap { taskRef in + guard let storedObject = payloads[taskRef.taskID] else { return nil } + + return UploadCandidate( + task: SyncTask( + id: taskRef.taskID, + uuid: taskRef.uuid, + relativePath: taskRef.relativePath, + jobType: taskRef.jobType, + parameters: storedObject.toDictionaryPayload() + ), + queueKey: taskRef.queueKey, + isParked: taskRef.pauseScope != nil + ) + } + } + public func getAllTasksWithParams(in queueKey: String) -> [SyncTask] { guard let tasksContainer = fetchGlobalQueueModel() else { return [] } @@ -681,3 +727,10 @@ extension QueuedTaskReferenceModel { pausedAt = nil } } + +/// A task that can lead to a book file upload +public struct UploadCandidate { + public let task: SyncTask + public let queueKey: String + public let isParked: Bool +} diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index 2efdc73b7..e0533ceba 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -71,6 +71,42 @@ public protocol SyncQueueServiceProtocol { /// queued its next parts, or right away when no upload will run (sync off, nothing /// runnable). A background wake awaits this before telling iOS it's finished. func settleUploads() async + + /// Books whose file still has to reach S3, in queue order — the sync lane's book + /// `.upload`s (not media-server ones: they carry no file) and media-server file jobs, then + /// the upload lane — with the parked ones counted apart (they wait for the user) + func pendingBookUploads() async -> PendingBookUploads +} + +/// A book still to upload, as the continued task counts it +public struct PendingBookUpload: Equatable { + public let uuid: String + public let relativePath: String + /// On disk now (0 when the file can't be read) + public let fileSize: Int64 + /// The lane it's waiting in: a blocked lane can't bring it any closer + public let queueKey: String + + public init(uuid: String, relativePath: String, fileSize: Int64, queueKey: String = TaskQueueKey.uploadFile) { + self.uuid = uuid + self.relativePath = relativePath + self.fileSize = fileSize + self.queueKey = queueKey + } + + public var fileName: String { (relativePath as NSString).lastPathComponent } +} + +public struct PendingBookUploads: Equatable { + /// Not parked, in queue order + public let books: [PendingBookUpload] + /// Parked book uploads (either lane) + public let parkedCount: Int + + public init(books: [PendingBookUpload], parkedCount: Int) { + self.books = books + self.parkedCount = parkedCount + } } public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { @@ -539,6 +575,39 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } } + public func pendingBookUploads() async -> PendingBookUploads { + // One actor call: both lanes read at the same instant + let candidates = await taskContainer.getUploadCandidates().filter { candidate in + switch candidate.task.jobType { + case .upload: + let type = (candidate.task.parameters["type"] as? Int16).flatMap(SimpleItemType.init(rawValue:)) + // A media-server book's metadata upload schedules no file + return type == .book && candidate.task.parameters["provider"] == nil + case .externalResourceToDownload, .uploadFile: + return true + default: + return false + } + } + + var seen = Set() + var parkedCount = 0 + let books = candidates.compactMap { candidate -> PendingBookUpload? in + let job = candidate.task + guard seen.insert(job.uuid).inserted else { return nil } + guard !candidate.isParked else { + parkedCount += 1 + return nil + } + let temporaryLink = (job.parameters["filePath"] as? String).flatMap(URL.init(string:)) + ?? SyncJobScheduler.hardLinkURL(for: job.relativePath) + let files = [temporaryLink, DataManager.getProcessedFolderURL().appendingPathComponent(job.relativePath)] + let size = files.lazy.compactMap { try? FileUploadOperation.fileSize(of: $0) }.first ?? 0 + return PendingBookUpload(uuid: job.uuid, relativePath: job.relativePath, fileSize: size, queueKey: candidate.queueKey) + } + return PendingBookUploads(books: books, parkedCount: parkedCount) + } + public func dismissPausedTask(id: String) { Task { guard @@ -660,7 +729,9 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { /// up once downloaded, through the `externalResourceToDownload` job (which carries no /// `provider`, so its result schedules the upload here) if task.parameters["provider"] as? String == nil { - handleUploadResult(result) + // Stored before the caller pops this task: the book is never in neither lane (a kill + // in between would lose the upload, and the continued task would count it done) + await handleUploadResult(result) } else { SyncJobScheduler.removeHardLink(at: URL(string: result.filePath)) } @@ -710,7 +781,7 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } /// The server answered the metadata upload with a URL: it needs the file's bytes - private func handleUploadResult(_ result: UploadResponse) { + private func handleUploadResult(_ result: UploadResponse) async { var params: [String: Any] = [ "filePath": result.filePath, "uuid": result.uuid, @@ -719,7 +790,7 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { if let relativePath = result.relativePath { params["relativePath"] = relativePath } - scheduleFileUpload(params: params) + await storeFileUpload(params: params) } public func cancelServerQueueOperations() { @@ -802,17 +873,24 @@ extension SyncQueueService { return } - Task { - var params = params - params["id"] = UUID().uuidString - params["jobType"] = SyncJobType.uploadFile.rawValue - params["queueKey"] = TaskQueueKey.uploadFile + Task { await storeFileUpload(params: params) } + } - do { - try await taskContainer.storeTask(parameters: params) - } catch { - Self.logger.error("Failed to schedule upload file task: \(error)") - } + /// `scheduleFileUpload`, awaited: returns once the task is stored + private func storeFileUpload(params: [String: Any]) async { + guard accessPolicy[.uploadFile] == true else { + SyncJobScheduler.removeHardLink(at: (params["filePath"] as? String).flatMap(URL.init(string:))) + return + } + var params = params + params["id"] = UUID().uuidString + params["jobType"] = SyncJobType.uploadFile.rawValue + params["queueKey"] = TaskQueueKey.uploadFile + + do { + try await taskContainer.storeTask(parameters: params) + } catch { + Self.logger.error("Failed to schedule upload file task: \(error)") } } } From 2dc5be8b25392164c258ea265946830641570ccf Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Sun, 27 Sep 2026 23:26:30 -0500 Subject: [PATCH 167/172] feat(upload): "Continue in background" buttons, and Retry resumes at full speed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The continued upload task only started on its own triggers (an import, the first sync after signing in or subscribing). Now the user can start it too: - Queued Tasks: the File Uploads header offers "Continue in background", shortening to "Continue" or the icon to fit (the whole row is measured, so the lane title never breaks to make room), and shows "Starting…" or "Uploading in background" under the title while a task is live. - Profile: a "Continue uploads in background" button under the Queued Tasks link; while a task runs the caption reads "Uploading in background · N%". Profile stays two lines. - Retry on a parked task also starts it when books wait and a lane can now run, reading the queue's current counts (not the throttled ones). Both show only when uploads wait in a runnable upload lane, the account has S3 access, the network setting allows uploading and nothing is starting or running. Targets are 44 pt. VoiceOver gets the action on the lane header (it may read the disclosure label as one element); Voice Control gets the labelled button. A request iOS dropped no longer leaves "Starting…" behind: both screens re-check on appear and on return to the foreground, without mistaking an in-flight submit (or a newer one) for a dropped request. --- BookPlayer/Base.lproj/Localizable.strings | 6 + BookPlayer/Coordinators/MainCoordinator.swift | 1 + .../Profile/ProfileSyncTasksSectionView.swift | 45 +++++- .../Profile/Views/QueuedTasksView.swift | 134 ++++++++++++++--- .../UploadContinuationController.swift | 63 +++++++- BookPlayer/Utils/AppServices.swift | 3 +- .../Extensions/Environment+BookPlayer.swift | 2 + BookPlayer/en.lproj/Localizable.strings | 6 + BookPlayerTests/Services/SyncQueueTests.swift | 2 +- .../Services/UploadContinuationTests.swift | 139 +++++++++++++++++- CLAUDE.md | 7 +- .../Services/SyncQueue/SyncQueueService.swift | 18 ++- Shared/SwiftData/TasksDataManager.swift | 3 + 13 files changed, 392 insertions(+), 37 deletions(-) diff --git a/BookPlayer/Base.lproj/Localizable.strings b/BookPlayer/Base.lproj/Localizable.strings index 72ff6e01f..3dda605d7 100644 --- a/BookPlayer/Base.lproj/Localizable.strings +++ b/BookPlayer/Base.lproj/Localizable.strings @@ -569,3 +569,9 @@ We're working hard on providing a seamless experience, if possible, please conta "sync_tasks_need_attention_voiceover" = "Needs attention"; "continued_upload_title" = "Uploading files"; "continued_upload_subtitle" = "(%1$d / %2$d) %3$@"; +"continue_in_background_button" = "Continue in background"; +"continue_uploads_background_button" = "Continue uploads in background"; +"uploads_starting_title" = "Starting…"; +"uploads_running_background_title" = "Uploading in background"; +"uploads_running_background_caption" = "Uploading in background · %d%%"; +"continue_uploads_short_button" = "Continue"; diff --git a/BookPlayer/Coordinators/MainCoordinator.swift b/BookPlayer/Coordinators/MainCoordinator.swift index 1c11da993..f202dcbbc 100644 --- a/BookPlayer/Coordinators/MainCoordinator.swift +++ b/BookPlayer/Coordinators/MainCoordinator.swift @@ -112,6 +112,7 @@ class MainCoordinator: NSObject { .environment(\.playbackService, playbackService) .environment(\.preferencesService, preferencesService) .environment(\.syncQueueService, syncQueueService) + .environment(\.uploadContinuation, AppServices.shared.uploadContinuation) ) vc.modalPresentationStyle = .fullScreen vc.modalTransitionStyle = .crossDissolve diff --git a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift index dd6958f40..24379b45c 100644 --- a/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift +++ b/BookPlayer/Profile/Profile/ProfileSyncTasksSectionView.swift @@ -22,9 +22,52 @@ struct ProfileSyncTasksSectionView: View { } @Environment(\.syncQueueService) private var syncQueueService + @Environment(\.uploadContinuation) private var uploadContinuation + @Environment(\.scenePhase) private var scenePhase + /// Read so the button follows the setting (the offer checks it, but can't observe it) + @AppStorage(Constants.UserDefaults.allowCellularData) private var allowsCellularData = false @EnvironmentObject private var theme: ThemeViewModel + /// The offer checks the cellular setting through a closure SwiftUI can't observe: reading + /// the setting here makes the button follow it + private var showsContinueButton: Bool { + _ = allowsCellularData + return uploadContinuation.isOfferAvailable + } + + /// While the continued task runs, its progress replaces the sync status + private var caption: String { + if uploadContinuation.state == .running, let percent = uploadContinuation.runningPercent { + return String(format: "uploads_running_background_caption".localized, percent) + } + return statusMessage + } + var body: some View { + VStack(spacing: Spacing.S2) { + queuedTasksLink + if showsContinueButton { + Button { + uploadContinuation.continueInBackground() + } label: { + Text("continue_uploads_background_button") + .frame(minHeight: 44) + .contentShape(Rectangle()) + } + .buttonStyle(.borderless) + .bpFont(.subheadline) + .foregroundStyle(theme.linkColor) + } + } + .task { await uploadContinuation.refreshState() } + // iOS may drop the request while the app is away + .onChange(of: scenePhase) { _, phase in + guard phase == .active else { return } + Task { await uploadContinuation.refreshState() } + } + } + + private var queuedTasksLink: some View { NavigationLink(value: ProfileScreen.queueTasks) { VStack { HStack(spacing: Spacing.S4) { @@ -36,7 +79,7 @@ struct ProfileSyncTasksSectionView: View { } .bpFont(.body) .foregroundStyle(pausedCount > 0 ? .red : theme.linkColor) - Text(statusMessage) + Text(caption) .bpFont(.caption) .foregroundStyle(theme.secondaryColor) } diff --git a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift index 7132a057a..ffde5f54c 100644 --- a/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift +++ b/BookPlayer/Profile/Profile/Views/QueuedTasksView.swift @@ -32,6 +32,9 @@ struct QueuedTasksView: View, BPLogger { @Environment(\.syncQueueService) private var syncQueueService @Environment(\.libraryService) private var libraryService @Environment(\.accountService) private var accountService + @Environment(\.uploadContinuation) private var uploadContinuation + @Environment(\.accessibilityVoiceOverEnabled) private var voiceOverEnabled + @Environment(\.scenePhase) private var scenePhase @EnvironmentObject private var theme: ThemeViewModel private var sections: [QueuedTaskSection] { tasks.groupedByLane() } @@ -62,7 +65,13 @@ struct QueuedTasksView: View, BPLogger { initialProgress: monitor.getTaskProgress(taskID: task.id), isUpload: task.tracksByteProgress, pause: task.pause, - onRetry: { syncQueueService.retryPausedTask(id: task.id) }, + onRetry: { + Task { + await syncQueueService.retryPausedTask(id: task.id) + // A user action: the unblocked uploads may now run at full speed + await uploadContinuation.submitIfNeeded() + } + }, onReport: { report(task) }, onDismiss: { syncQueueService.dismissPausedTask(id: task.id) } ) @@ -114,6 +123,12 @@ struct QueuedTasksView: View, BPLogger { ActivityView(activityItems: [share.fileURL]) .presentationDetents([.medium, .large]) } + .task { await uploadContinuation.refreshState() } + // iOS may drop the request while the app is away + .onChange(of: scenePhase) { _, phase in + guard phase == .active else { return } + Task { await uploadContinuation.refreshState() } + } // Replays the current snapshot on subscribe, so this is the initial load as well. .onReceive(syncQueueService.observeQueueCounts()) { snapshot in counts = snapshot @@ -121,29 +136,114 @@ struct QueuedTasksView: View, BPLogger { } } + /// The upload lane offers "Continue in background" when it can help; every other lane + /// (and the upload lane otherwise) is the plain header + @ViewBuilder private func laneHeader(_ queueKey: String) -> some View { + if queueKey == TaskQueueKey.uploadFile, uploadContinuation.isOfferAvailable { + // Each wording measured against the whole row, so the lane title never breaks + // mid-word to make room for a longer button + ViewThatFits(in: .horizontal) { + laneHeaderRow(queueKey, continueLabel: .full) + laneHeaderRow(queueKey, continueLabel: .short) + laneHeaderRow(queueKey, continueLabel: .icon) + } + } else { + laneHeaderRow(queueKey, continueLabel: nil) + } + } + + private enum ContinueLabel { + case full, short, icon + } + + private func laneHeaderRow(_ queueKey: String, continueLabel: ContinueLabel?) -> some View { let isBlocked = counts.isBlocked(queueKey) return HStack(spacing: Spacing.S1) { - Image(systemName: isBlocked ? "exclamationmark.triangle.fill" : QueueDisplay.imageName(for: queueKey)) - .frame(width: 24) - .foregroundStyle(isBlocked ? .red : theme.linkColor) - VStack(alignment: .leading, spacing: 0) { - Text(QueueDisplay.name(for: queueKey)) - .bpFont(.headline) - .foregroundStyle(theme.primaryColor) - if isBlocked { - Text("sync_paused_lane_title") - .bpFont(.caption) - .foregroundStyle(.red) + HStack(spacing: Spacing.S1) { + Image(systemName: isBlocked ? "exclamationmark.triangle.fill" : QueueDisplay.imageName(for: queueKey)) + .frame(width: 24) + .foregroundStyle(isBlocked ? .red : theme.linkColor) + VStack(alignment: .leading, spacing: 0) { + Text(QueueDisplay.name(for: queueKey)) + .bpFont(.headline) + .foregroundStyle(theme.primaryColor) + if isBlocked { + Text("sync_paused_lane_title") + .bpFont(.caption) + .foregroundStyle(.red) + } + if queueKey == TaskQueueKey.uploadFile { + backgroundUploadStatus + } } + Spacer() + Text("\(counts.count(in: queueKey))") + .bpFont(.subheadline) + .foregroundStyle(theme.secondaryColor) + } + .accessibilityElement(children: .combine) + // The button sits inside the lane's disclosure label, which VoiceOver may read as one + // element: for VoiceOver the action is offered on the header itself + .accessibilityActions { + if continueLabel != nil, voiceOverEnabled { + Button("continue_in_background_button") { + uploadContinuation.continueInBackground() + } + } + } + if let continueLabel { + continueButton(continueLabel) } - Spacer() - Text("\(counts.count(in: queueKey))") - .bpFont(.subheadline) - .foregroundStyle(theme.secondaryColor) } .padding(.vertical, Spacing.S3) - .accessibilityElement(children: .combine) + } + + /// What the continued task is doing, under the lane title + @ViewBuilder + private var backgroundUploadStatus: some View { + switch uploadContinuation.state { + case .starting: + Text("uploads_starting_title") + .bpFont(.caption) + .foregroundStyle(theme.secondaryColor) + case .running: + Text("uploads_running_background_title") + .bpFont(.caption) + .foregroundStyle(theme.secondaryColor) + case .idle: + EmptyView() + } + } + + private func continueButton(_ label: ContinueLabel) -> some View { + Button { + uploadContinuation.continueInBackground() + } label: { + Group { + switch label { + case .full: + Text("continue_in_background_button") + case .short: + Text("continue_uploads_short_button") + case .icon: + Image(systemName: "icloud.and.arrow.up") + } + } + .lineLimit(1) + .frame(minWidth: 44, minHeight: 44) + .contentShape(Rectangle()) + } + // Borderless: a plain button in the label would toggle the lane instead + .buttonStyle(.borderless) + .bpFont(.subheadline) + .foregroundStyle(theme.linkColor) + // The 44 pt target reaches into the row's padding instead of growing the header + .padding(.vertical, -Spacing.S3) + // Named for Voice Control in every variant (the icon's symbol name isn't usable); + // VoiceOver uses the header's action instead + .accessibilityLabel("continue_in_background_button") + .accessibilityHidden(voiceOverEnabled) } private var wifiRequiredBanner: some View { diff --git a/BookPlayer/Services/UploadContinuationController.swift b/BookPlayer/Services/UploadContinuationController.swift index 7151f8526..0839dbd11 100644 --- a/BookPlayer/Services/UploadContinuationController.swift +++ b/BookPlayer/Services/UploadContinuationController.swift @@ -81,7 +81,8 @@ struct UploadContinuationProgress { /// Keeps book uploads running at full speed while the app is in the background, through a /// `BGContinuedProcessingTask` (its Live Activity: "Uploading files", "(x / n) name"). /// Submitted whenever books are queued for upload (an import, the first sync after signing -/// in or subscribing); covers the whole queue, not one book, +/// in or subscribing), on a parked task's Retry, and from the "Continue in background" +/// buttons (Queued Tasks, Profile); covers the whole queue, not one book, /// and ends when nothing is waiting — or nothing can move (a blocked lane, no S3 access). /// When it expires (or the user cancels it) the parts keep going in the background /// sessions, only slower. @@ -108,6 +109,9 @@ final class UploadContinuationController: BPLogger { var hasPendingRequest: () async -> Bool /// The queue's counts: a change can mean a book finished, was added or got blocked var queueChanges: () -> AnyPublisher + /// The counts right now (the subscription above is throttled): a Retry that just + /// unblocked a lane must count as runnable at once + var currentCounts: () -> QueueCounts /// A queue that's empty for this long is done (a book moving between lanes shows up /// again within it) var confirmEmptyAfter: Duration = .seconds(1) @@ -116,20 +120,31 @@ final class UploadContinuationController: BPLogger { static let identifier = "\(Bundle.main.configurationString(for: .bundleIdentifier)).uploads.continued" private(set) var state = State.idle + /// Whole percent of the running task, for the "Uploading in background · 37%" caption + private(set) var runningPercent: Int? + /// The latest queue counts (throttled), for what the buttons offer + private(set) var counts = QueueCounts() @ObservationIgnored private var dependencies: Dependencies? @ObservationIgnored private var task: ContinuedUploadTask? /// A task iOS launched before the services were up (a cold launch into it) @ObservationIgnored private var heldTask: ContinuedUploadTask? @ObservationIgnored private var progress = UploadContinuationProgress() - @ObservationIgnored private var counts = QueueCounts() @ObservationIgnored private var subscriptions = Set() @ObservationIgnored private var queueSubscription: AnyCancellable? @ObservationIgnored private var lastSubtitle: String? @ObservationIgnored private var queuedObserver: NSObjectProtocol? @ObservationIgnored private var isRefreshing = false + /// Our own submit is on its way to iOS (on iOS 27 it's handed over asynchronously): not + /// a request iOS dropped + @ObservationIgnored private var isSubmitting = false + /// Bumped per submit: a "no pending request" answer from before a newer submit is stale + @ObservationIgnored private var submitGeneration = 0 @ObservationIgnored private var refreshAgain = false + /// `nonisolated` so an environment default (`@Entry`) can build the placeholder + nonisolated init() {} + /// Wired once the core services exist func setup(dependencies: Dependencies) { self.dependencies = dependencies @@ -174,9 +189,7 @@ final class UploadContinuationController: BPLogger { func submitIfNeeded() async { guard let dependencies else { return } // A request iOS accepted but dropped (or never ran) mustn't block every later one - if state == .starting, await !dependencies.hasPendingRequest(), state == .starting { - state = .idle - } + await refreshState() guard state == .idle else { return } guard dependencies.isForeground(), @@ -197,6 +210,9 @@ final class UploadContinuationController: BPLogger { subtitle: Self.subtitle(for: initial) ) state = .starting + submitGeneration += 1 + isSubmitting = true + defer { isSubmitting = false } do { try await dependencies.submit(request) Self.logger.info("Continued upload task submitted for \(pending.books.count) book(s)") @@ -303,13 +319,49 @@ final class UploadContinuationController: BPLogger { /// behind a blocked lane (a lane-level or account-level pause), means waiting on the user private func canMakeProgress(_ pending: PendingBookUploads) -> Bool { guard let dependencies, dependencies.canUpload() else { return false } + let counts = dependencies.currentCounts() return pending.books.contains { !counts.isBlocked($0.queueKey) } } + // MARK: - The "Continue in background" buttons + + /// Whether the buttons show: uploads waiting in a lane that can run, S3 access, a + /// network the setting allows, and no task starting or running + var isOfferAvailable: Bool { + guard let dependencies, state == .idle else { return false } + let uploadLane = TaskQueueKey.uploadFile + let waiting = counts.count(in: uploadLane) - counts.pausedCount(in: uploadLane) + return waiting > 0 + && !counts.isBlocked(uploadLane) + && dependencies.canUpload() + && dependencies.networkAllowsUploads() + } + + /// A button tap (a user action, as iOS requires for a continued task) + func continueInBackground() { + Task { await submitIfNeeded() } + } + + /// A request iOS dropped (or never ran) leaves `.starting`: re-checked when a screen + /// showing it appears + func refreshState() async { + guard let dependencies, state == .starting, !isSubmitting else { return } + let generation = submitGeneration + if await !dependencies.hasPendingRequest(), + state == .starting, !isSubmitting, generation == submitGeneration { + state = .idle + } + } + private func report() { guard let task else { return } task.progress.totalUnitCount = max(progress.totalBytes, 1) task.progress.completedUnitCount = min(progress.completedBytes, task.progress.totalUnitCount) + // Integer math: a floating-point product shows 29% as 28 + let percent = Int(task.progress.completedUnitCount * 100 / max(task.progress.totalUnitCount, 1)) + if percent != runningPercent { + runningPercent = percent + } // Nothing to name (the queue emptied): keep the last subtitle guard progress.currentFileName != nil else { return } let subtitle = Self.subtitle(for: progress) @@ -325,6 +377,7 @@ final class UploadContinuationController: BPLogger { self.task = nil subscriptions.removeAll() state = .idle + runningPercent = nil if !alreadyCompleted { task.setTaskCompleted(success: success) } diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index e04f24474..54f9f146f 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -200,7 +200,8 @@ final class AppServices: BPLogger { await BGTaskScheduler.shared.pendingTaskRequests() .contains { $0.identifier == UploadContinuationController.identifier } }, - queueChanges: { syncQueueService.observeQueueCounts() } + queueChanges: { syncQueueService.observeQueueCounts() }, + currentCounts: { syncQueueService.queueCounts } )) } diff --git a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift index bb06d802e..0a162f88c 100644 --- a/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift +++ b/BookPlayer/Utils/Extensions/Environment+BookPlayer.swift @@ -16,6 +16,8 @@ extension EnvironmentValues { @Entry var playerLoaderService: PlayerLoaderService = .init() @Entry var playbackService: PlaybackService = .init() @Entry var syncQueueService: SyncQueueService = .init() + /// The continued background upload task (placeholder: offers nothing until injected) + @Entry var uploadContinuation: UploadContinuationController = .init() @Entry var jellyfinService: JellyfinConnectionService = .init() @Entry var audiobookshelfService: AudiobookShelfConnectionService = .init() @Entry var hardcoverService: HardcoverService = .init() diff --git a/BookPlayer/en.lproj/Localizable.strings b/BookPlayer/en.lproj/Localizable.strings index 501c60010..395b163e6 100644 --- a/BookPlayer/en.lproj/Localizable.strings +++ b/BookPlayer/en.lproj/Localizable.strings @@ -568,3 +568,9 @@ Keep in mind that upload tasks can take some time, and the progress will be peri "sync_tasks_need_attention_voiceover" = "Needs attention"; "continued_upload_title" = "Uploading files"; "continued_upload_subtitle" = "(%1$d / %2$d) %3$@"; +"continue_in_background_button" = "Continue in background"; +"continue_uploads_background_button" = "Continue uploads in background"; +"uploads_starting_title" = "Starting…"; +"uploads_running_background_title" = "Uploading in background"; +"uploads_running_background_caption" = "Uploading in background · %d%%"; +"continue_uploads_short_button" = "Continue"; diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index 3047d7419..d421c7df2 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -844,7 +844,7 @@ extension SyncQueueTests { try await Task.sleep(for: .milliseconds(300)) XCTAssertEqual(client.requestCount, 1, "the lane waits behind the parked task") - service.retryPausedTask(id: "e3m1") + await service.retryPausedTask(id: "e3m1") try await waitForEmptyQueue() XCTAssertEqual(client.requestCount, 3) } diff --git a/BookPlayerTests/Services/UploadContinuationTests.swift b/BookPlayerTests/Services/UploadContinuationTests.swift index 5578a14a4..31a24c2af 100644 --- a/BookPlayerTests/Services/UploadContinuationTests.swift +++ b/BookPlayerTests/Services/UploadContinuationTests.swift @@ -90,6 +90,8 @@ final class UploadContinuationTests: XCTestCase { private var foreground = true private var requestPending = true private let changes = PassthroughSubject() + /// What the queue reports right now (the throttled subscription may lag) + private var currentCounts = QueueCounts() private func dependencies() -> UploadContinuationController.Dependencies { .init( @@ -103,6 +105,7 @@ final class UploadContinuationTests: XCTestCase { }, hasPendingRequest: { [unowned self] in self.requestPending }, queueChanges: { [unowned self] in self.changes.eraseToAnyPublisher() }, + currentCounts: { [unowned self] in self.currentCounts }, confirmEmptyAfter: .milliseconds(50) ) } @@ -259,7 +262,8 @@ final class UploadContinuationTests: XCTestCase { controller.attach(task) try await waitUntil { !task.titles.isEmpty } - changes.send(QueueCounts(byQueueKey: [TaskQueueKey.sync: 2], pausedByQueueKey: [TaskQueueKey.sync: 1], blockedQueueKeys: [TaskQueueKey.sync])) + currentCounts = QueueCounts(byQueueKey: [TaskQueueKey.sync: 2], pausedByQueueKey: [TaskQueueKey.sync: 1], blockedQueueKeys: [TaskQueueKey.sync]) + changes.send(currentCounts) try await waitUntil { !task.completions.isEmpty } XCTAssertEqual(task.completions, [false]) @@ -302,8 +306,7 @@ final class UploadContinuationTests: XCTestCase { func testSubmit_behindABlockedLane_isHeldBack() async throws { pending = [PendingBookUpload(uuid: "a", relativePath: "A.m4b", fileSize: 1, queueKey: TaskQueueKey.sync)] let controller = makeController() - changes.send(QueueCounts(byQueueKey: [TaskQueueKey.sync: 2], pausedByQueueKey: [TaskQueueKey.sync: 1], blockedQueueKeys: [TaskQueueKey.sync])) - try await Task.sleep(for: .milliseconds(50)) + currentCounts = QueueCounts(byQueueKey: [TaskQueueKey.sync: 2], pausedByQueueKey: [TaskQueueKey.sync: 1], blockedQueueKeys: [TaskQueueKey.sync]) await controller.submitIfNeeded() @@ -311,6 +314,136 @@ final class UploadContinuationTests: XCTestCase { XCTAssertEqual(controller.state, .idle) } + // MARK: - The "Continue in background" buttons + + private func uploadLaneCounts(waiting: Int, paused: Int = 0, blocked: Bool = false) -> QueueCounts { + QueueCounts( + byQueueKey: [TaskQueueKey.uploadFile: waiting + paused], + pausedByQueueKey: paused > 0 ? [TaskQueueKey.uploadFile: paused] : [:], + blockedQueueKeys: blocked ? [TaskQueueKey.uploadFile] : [] + ) + } + + func testOffer_showsOnlyWhenUploadsCanRunAndNothingIsLive() async throws { + let controller = makeController() + XCTAssertFalse(controller.isOfferAvailable, "nothing waiting") + + changes.send(uploadLaneCounts(waiting: 2)) + try await waitUntil { controller.isOfferAvailable } + XCTAssertTrue(controller.isOfferAvailable) + + networkAllows = false + XCTAssertFalse(controller.isOfferAvailable, "Wi-Fi only, on cellular") + networkAllows = true + canUpload = false + XCTAssertFalse(controller.isOfferAvailable, "no S3 access") + canUpload = true + + changes.send(uploadLaneCounts(waiting: 0, paused: 2)) + try await waitUntil { !controller.isOfferAvailable } + XCTAssertFalse(controller.isOfferAvailable, "only parked uploads") + + // An account-level pause blocks the upload lane itself + changes.send(uploadLaneCounts(waiting: 2, blocked: true)) + try await waitUntil { controller.counts.isBlocked(TaskQueueKey.uploadFile) } + XCTAssertFalse(controller.isOfferAvailable, "the lane is blocked") + } + + func testOffer_hidesWhileATaskRuns() async throws { + pending = [book("a", "A.m4b", 100)] + let controller = makeController() + changes.send(uploadLaneCounts(waiting: 1)) + try await waitUntil { controller.isOfferAvailable } + + controller.attach(FakeContinuedTask()) + + XCTAssertEqual(controller.state, .running) + XCTAssertFalse(controller.isOfferAvailable) + } + + func testButton_submitsTheTask_andHidesWhileStarting() async throws { + pending = [book("a", "A.m4b", 100)] + let controller = makeController() + changes.send(uploadLaneCounts(waiting: 1)) + try await waitUntil { controller.isOfferAvailable } + + controller.continueInBackground() + + try await waitUntil { !submitted.isEmpty } + XCTAssertEqual(controller.state, .starting) + XCTAssertFalse(controller.isOfferAvailable) + } + + /// A request iOS dropped leaves "Starting…": re-checked when the screen appears + func testRefreshState_clearsARequestIOSDropped() async { + pending = [book("a", "A.m4b", 100)] + let controller = makeController() + await controller.submitIfNeeded() + XCTAssertEqual(controller.state, .starting) + + await controller.refreshState() + XCTAssertEqual(controller.state, .starting, "still pending with iOS") + + requestPending = false + await controller.refreshState() + XCTAssertEqual(controller.state, .idle) + } + + /// Our own submit still on its way to iOS isn't a dropped request + func testRefreshState_duringAnInFlightSubmit_keepsStarting() async throws { + pending = [book("a", "A.m4b", 100)] + var release: CheckedContinuation? + var deps = dependencies() + deps.submit = { _ in await withCheckedContinuation { release = $0 } } + let controller = UploadContinuationController() + controller.setup(dependencies: deps) + let submitting = Task { await controller.submitIfNeeded() } + try await waitUntil { release != nil } + requestPending = false + + await controller.refreshState() + XCTAssertEqual(controller.state, .starting) + + release?.resume() + await submitting.value + XCTAssertEqual(controller.state, .starting) + } + + /// A Retry that just unblocked the lane counts at once, before the throttled counts catch up + func testSubmit_readsTheCurrentCounts_notTheThrottledOnes() async throws { + pending = [PendingBookUpload(uuid: "a", relativePath: "A.m4b", fileSize: 1, queueKey: TaskQueueKey.sync)] + let controller = makeController() + changes.send(QueueCounts(byQueueKey: [TaskQueueKey.sync: 2], pausedByQueueKey: [TaskQueueKey.sync: 1], blockedQueueKeys: [TaskQueueKey.sync])) + try await waitUntil { controller.counts.isBlocked(TaskQueueKey.sync) } + XCTAssertTrue(controller.counts.isBlocked(TaskQueueKey.sync), "the throttled counts still say blocked") + currentCounts = QueueCounts(byQueueKey: [TaskQueueKey.sync: 2]) + + await controller.submitIfNeeded() + + XCTAssertEqual(submitted.count, 1) + } + + func testRunningPercent_followsTheTask_andClearsWhenItEnds() async throws { + pending = [book("a", "A.m4b", 100)] + let controller = makeController() + let task = FakeContinuedTask() + controller.attach(task) + try await waitUntil { controller.runningPercent != nil } + XCTAssertEqual(controller.runningPercent, 0) + + NotificationCenter.default.post( + name: .uploadProgressUpdated, + object: nil, + userInfo: ["uuid": "a", "relativePath": "Folder/A.m4b", "progress": 0.37] + ) + try await waitUntil { controller.runningPercent == 37 } + XCTAssertEqual(controller.runningPercent, 37) + + task.expirationHandler?() + try await waitUntil { controller.state == .idle } + XCTAssertNil(controller.runningPercent) + } + /// Expiry (and a cancel from the Live Activity) is answered once, right in the handler func testExpiration_completesTheTaskOnce() async throws { pending = [book("a", "A.m4b", 100)] diff --git a/CLAUDE.md b/CLAUDE.md index eaad8c3b2..9103170ce 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -376,7 +376,9 @@ lines). It is the highest-risk file in the app. `.uploads.continued`) runs ONE `BGContinuedProcessingTask` for the whole upload queue, so uploads keep full speed in the background (Live Activity "Uploading files", "(x / n) ", progress in bytes). It is submitted whenever books are queued for upload — `SyncService.handleItemsToUpload` posts `.bookUploadsQueued` - (an import, or the first sync after signing in or subscribing; decided: always, no size threshold) — only from + (an import, or the first sync after signing in or subscribing; decided: always, no size threshold), on a parked + task's Retry, and from the "Continue in background" buttons (the Queued Tasks File Uploads header, a + borderless button under Profile's Queued Tasks link; shown only when `isOfferAvailable`) — only from the foreground, with S3 access, when the Wi-Fi-only setting allows the current network, and when some waiting book sits in a lane that can run (not all behind a blocked lane). Its books come from `SyncQueueService.pendingBookUploads()` (one repository read of both lanes: the sync lane's book `.upload`s — @@ -386,7 +388,8 @@ lines). It is the highest-risk file in the app. parked uploads remain or nothing can move (no S3 access, every waiting book behind a blocked lane). On expiry or a Live Activity cancel it answers `setTaskCompleted(false)` in the handler and the parts carry on in the background sessions. A task iOS launches before the services exist is held, not failed; a request iOS dropped - (`pendingTaskRequests`) no longer blocks the next submit. + (`pendingTaskRequests`) no longer blocks the next submit. While a task runs, Profile's caption reads "Uploading in background · N%" + (`runningPercent`); Profile stays two lines (no Wi-Fi caption there — the banner is Queued Tasks only). - **Book uploads are S3 multipart** (`FileUploadOperation`, the `uploadFile` lane; contract in bookplayer-api `docs/multipart-uploads.md`). A non-nil `url` from `PUT /v1/library` only means "the server needs the bytes" — the client never PUTs to it. **The server sets `synced` at `/upload/complete`; the client diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index e0533ceba..ffa08fbc4 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -57,8 +57,12 @@ public protocol SyncQueueServiceProtocol { /// on wakes them. func setServerLanesEnabled(_ enabled: Bool) - /// The user's Retry on a parked task: back to pending, and its lane wakes - func retryPausedTask(id: String) + /// The user's Retry on a parked task: back to pending, and its lane wakes. Returns once + /// the task is pending again. + func retryPausedTask(id: String) async + + /// The latest queue counts, read now + var queueCounts: QueueCounts { get } /// Remembers the Sentry event that reported a pause, so it's never reported twice func recordPauseReport(eventId: String, forTask taskId: String) @@ -549,13 +553,13 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } } - public func retryPausedTask(id: String) { - Task { - await taskContainer.resume(taskId: id) - wakeUpWorkers() - } + public func retryPausedTask(id: String) async { + await taskContainer.resume(taskId: id) + wakeUpWorkers() } + public var queueCounts: QueueCounts { tasksDataManager.currentQueueCounts } + public func settleUploads() async { // Bounded: the caller also times out, but a lane that never starts mustn't spin here for _ in 0..<100 { diff --git a/Shared/SwiftData/TasksDataManager.swift b/Shared/SwiftData/TasksDataManager.swift index df8080153..e9a1ea6dd 100644 --- a/Shared/SwiftData/TasksDataManager.swift +++ b/Shared/SwiftData/TasksDataManager.swift @@ -84,6 +84,9 @@ public final class TasksDataManager: BPLogger { initializeTasksCount() } + /// The latest snapshot, read now (thread-safe) + public var currentQueueCounts: QueueCounts { queueCountsSubject.value } + /// Pending-task counts per queue key, delivered on main. Replays the latest snapshot on /// subscribe, then emits after every store/pop. public func observeQueueCounts() -> AnyPublisher { From 3df42a64b55dbc83aef1d3c984528ce765aca050 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 28 Sep 2026 11:13:46 -0500 Subject: [PATCH 168/172] fix(sync): never confirm a book as synced on a tier without S3 On the server, a book's `synced` means its file is in S3, on every tier. When `PUT /v1/library` answers with no URL, the app always confirmed the item with `synced:true`. On PRO that answer means the file is already there, so the confirmation is right. On LITE it only means the tier stores no file, and confirming left the book looking backed up, so its file would never go up after an upgrade to PRO. The operation now carries the tier's S3 access (`canUploadFiles`, read from `accessPolicy[.uploadFile]` when the queue builds it) and confirms a book only with it. Folders and bound books have no file of their own and keep confirming on every tier. The server already ignores this confirmation for a book with no object; the client now stops sending it. --- BookPlayerTests/Services/SyncQueueTests.swift | 112 +++++++++++++++++- CLAUDE.md | 6 +- .../Sync/LibraryItemSyncOperation.swift | 14 ++- .../Services/SyncQueue/SyncQueueService.swift | 3 +- 4 files changed, 130 insertions(+), 5 deletions(-) diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index d421c7df2..df9bfbd86 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -1219,7 +1219,8 @@ extension SyncQueueTests { relativePath: name, jobType: .externalResourceToDownload, parameters: ["id": "pipe", "uuid": uuid, "relativePath": name] - ) + ), + canUploadFiles: true ) let done = expectation(description: "finished") @@ -1422,3 +1423,112 @@ extension SyncQueueTests { ) } } + +// MARK: - Upload confirmation by tier + +/// Records each library request and answers the metadata upload with no URL +private final class NoURLLibraryClient: NetworkClientMock, @unchecked Sendable { + private let lock = NSLock() + private var _calls = [String]() + private var _lastParameters: [String: Any]? + + var calls: [String] { lock.withLock { _calls } } + var lastParameters: [String: Any]? { lock.withLock { _lastParameters } } + + init() { + super.init(mockedResponse: Empty()) + } + + override func request( + path: String, + method: HTTPMethod, + parameters: [String: Any]? + ) async throws -> T { + lock.withLock { + _calls.append("\(method.rawValue) \(path)") + _lastParameters = parameters + } + return try JSONDecoder().decode(T.self, from: Data(#"{"content":{"url":null}}"#.utf8)) + } +} + +extension SyncQueueTests { + private func runMetadataUpload(type: SimpleItemType, canUploadFiles: Bool) async throws -> NoURLLibraryClient { + let client = NoURLLibraryClient() + let uuid = UUID().uuidString + let operation = LibraryItemSyncOperation( + client: client, + task: SyncTask( + id: "meta", + uuid: uuid, + relativePath: "Tier-\(uuid).m4b", + jobType: .upload, + parameters: ["id": "meta", "uuid": uuid, "relativePath": "Tier-\(uuid).m4b", "type": type.rawValue] + ), + canUploadFiles: canUploadFiles + ) + + let done = expectation(description: "finished") + let observer = operation.observe(\.isFinished, options: [.initial, .new]) { op, _ in + if op.isFinished { done.fulfill() } + } + operation.start() + await fulfillment(of: [done], timeout: 3) + observer.invalidate() + + XCTAssertTrue(operation.didSucceed) + return client + } + + /// A book's `synced` means its file is in S3. Without S3 access, no URL only means the tier + /// stores no file, so the book stays unconfirmed and its file can go up after an upgrade + func testMetadataUploadWithoutS3Access_neverConfirmsABook() async throws { + let client = try await runMetadataUpload(type: .book, canUploadFiles: false) + + XCTAssertEqual(client.calls, ["PUT /v1/library"]) + } + + /// With S3 access, no URL means the file is already there: the book is confirmed + func testMetadataUploadWithS3Access_confirmsABookAlreadyStored() async throws { + let client = try await runMetadataUpload(type: .book, canUploadFiles: true) + + XCTAssertEqual(client.calls, ["PUT /v1/library", "POST /v1/library"]) + XCTAssertEqual(client.lastParameters?["synced"] as? Bool, true) + } + + /// Folders and bound books aren't confirmed by a file: they're confirmed on every tier + func testMetadataUploadWithoutS3Access_stillConfirmsFoldersAndBoundBooks() async throws { + for type in [SimpleItemType.folder, .bound] { + let client = try await runMetadataUpload(type: type, canUploadFiles: false) + + XCTAssertEqual(client.calls, ["PUT /v1/library", "POST /v1/library"], "\(type)") + XCTAssertEqual(client.lastParameters?["synced"] as? Bool, true, "\(type)") + } + } + + /// The queue hands its tier to the operation it builds: a book queued on a tier without + /// S3 access is registered but never confirmed, and one queued on PRO is + func testQueuedMetadataUpload_confirmsABookOnlyWithS3Access() async throws { + for canUploadFiles in [false, true] { + let service = makeGatedEngine() + service.accessPolicy = [.uploadFile: canUploadFiles, .externalUpdate: true] + let client = NoURLLibraryClient() + service.networkClient = client + let uuid = UUID().uuidString + let book = try JSONDecoder().decode(SyncableItem.self, from: Data( + #"{"relativePath":"Tier-\#(uuid).m4b","originalFileName":"Tier.m4b","title":"Tier","isFinished":false,"type":2,"uuid":"\#(uuid)"}"#.utf8 + )) + await SyncJobScheduler(tasksRepository: repository).scheduleLibraryItemUploadJob(for: book) + + service.setServerLanesEnabled(true) + try await waitForEmptyQueue() + service.setServerLanesEnabled(false) + + XCTAssertEqual( + client.calls, + canUploadFiles ? ["PUT /v1/library", "POST /v1/library"] : ["PUT /v1/library"], + "canUploadFiles: \(canUploadFiles)" + ) + } + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 9103170ce..95c308dd5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -393,7 +393,11 @@ lines). It is the highest-risk file in the app. - **Book uploads are S3 multipart** (`FileUploadOperation`, the `uploadFile` lane; contract in bookplayer-api `docs/multipart-uploads.md`). A non-nil `url` from `PUT /v1/library` only means "the server needs the bytes" — the client never PUTs to it. **The server sets `synced` at `/upload/complete`; the client - never confirms a book's file.** S3 is the source of truth: every run rebuilds from `GET /upload/parts` plus + never confirms a book upload it made** (folders and bound books are confirmed after their presigned PUT). A nil `url` is confirmed with `synced:true` for folders and bound books on + every tier, but for a book only when the tier has S3 access (`LibraryItemSyncOperation.canUploadFiles`, from + `accessPolicy[.uploadFile]` when `createOperation` builds it): there it means the file is already in S3, while on + LITE it only means the tier stores no file, so LITE books stay `synced=false` and their files can go up after an + upgrade. S3 is the source of truth: every run rebuilds from `GET /upload/parts` plus the session's tasks for the current `uploadId`, so a relaunch or a lost event resumes without re-sending. The resumable state (`uploadId`, `partSize`, `fileSize`, `restartCount`) lives on `UploadFileTaskModel`; parts are sliced to `tmp/uploads//`; 64 MiB parts, 8 in flight (fewer on low disk), fresh part URLs every top-up diff --git a/Shared/Services/Sync/LibraryItemSyncOperation.swift b/Shared/Services/Sync/LibraryItemSyncOperation.swift index f92b928b5..7bdc19630 100644 --- a/Shared/Services/Sync/LibraryItemSyncOperation.swift +++ b/Shared/Services/Sync/LibraryItemSyncOperation.swift @@ -17,6 +17,9 @@ class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { let uuid: String let jobType: SyncJobType let parameters: [String: Any] + /// Whether the account's tier stores files in S3 (PRO). A book's `synced` means "its file + /// is in S3", so on any other tier the app never confirms one + let canUploadFiles: Bool /// Written from the operation's detached Task (and `cancel()`), read from the /// queue-thread completionBlock — lock-guarded like the base class's `didSucceed` @@ -49,9 +52,11 @@ class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { /// - Parameters: /// - client: Network client /// - task: Sync task to be handled in the operation + /// - canUploadFiles: Whether the account's tier stores files in S3 init( client: NetworkClientProtocol, - task: SyncTask + task: SyncTask, + canUploadFiles: Bool ) { self.client = client self.provider = NetworkProvider(client: client) @@ -59,6 +64,7 @@ class LibraryItemSyncOperation: AsyncOperation, BPLogger, @unchecked Sendable { self.jobType = task.jobType self.parameters = task.parameters self.uuid = task.uuid + self.canUploadFiles = canUploadFiles } /// Written in main() on the queue thread, read/cancelled by cancel() from any thread @@ -198,7 +204,11 @@ extension LibraryItemSyncOperation { if type == .book { SyncJobScheduler.removeHardLink(at: SyncJobScheduler.hardLinkURL(for: self.relativePath)) } - try await markUploadAsSynced(uuid: self.uuid) + /// Without S3 access no URL only means "this tier stores no file", so a book stays + /// unconfirmed: it's what lets its file go up if the account becomes PRO + if type != .book || canUploadFiles { + try await markUploadAsSynced(uuid: self.uuid) + } finish() return } diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index ffa08fbc4..9fb844da6 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -704,7 +704,8 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { relativePath: task.relativePath, jobType: task.jobType, parameters: task.parameters - ) + ), + canUploadFiles: accessPolicy[.uploadFile] == true ) } } From 734bb242cf928b1de029d738aab21b7a589e496f Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Mon, 28 Sep 2026 20:37:14 -0500 Subject: [PATCH 169/172] feat(sync): the missing-items pass, by uuid A book imported while the subscription had lapsed never reached the server: coming back only pulled the library root, and that pull deletes local items the server doesn't list. Books registered on LITE never had their files uploaded after an upgrade. And the first sync found what the server was missing by comparing local paths with `/keys`, so a path that went stale on this device (the item was moved or renamed on another one) read as missing, and its re-upload moved the item back on the server. The pass asks by uuid instead. It sends every local uuid in one `POST /v1/library/status` and gets back the ones the server has never seen (no row, active or deleted) and the books it holds without a file. - Unknown items are matched by path first (`POST /uuids`, inline: a legacy row takes our uuid, a conflict makes this device adopt the server's). Then they're registered like an import, parents first, with their bookmarks read in one background batch. - On PRO, books without a file go straight to the upload lane by uuid, never re-registered. Media-server books, books without a local file or over 10 GiB, and books already queued are skipped. - It is the first sync's registration step. `/keys` is no longer called, and the Debug export is local only (tree with uuids). - A lapse, whether seen in session or found at launch, makes the return a first sync. - The first sync never clears queued work: it waits for an empty sync lane. Folder pulls wait for the first sync, and its root pull never deletes. - It runs again when the account becomes PRO (that run starts the continued task) and weekly (that run doesn't). - Every run is single-flight and checks it's still in the sync session it began in. Phone only. Accepted: an item from before the server had uuids that another device deleted under a different uuid comes back. --- BookPlayer.xcodeproj/project.pbxproj | 16 +- .../Generated/AutoMockable.generated.swift | 30 +- .../Profile/Views/SyncPauseReport.swift | 5 +- .../Services/ListSyncRefreshService.swift | 17 +- .../Sections/DebugFileTransferable.swift | 106 +-- BookPlayer/Utils/AppServices.swift | 3 +- .../ListSyncRefreshServiceTests.swift | 34 + .../Mocks/AccountServiceMock.swift | 9 +- .../Services/LibraryServiceTests.swift | 33 +- .../Services/MissingItemsPassTests.swift | 623 ++++++++++++++++++ .../Services/SyncPauseReportingTests.swift | 11 +- CLAUDE.md | 39 +- Shared/Constants.swift | 6 + Shared/Services/LibraryService+Sync.swift | 123 +++- Shared/Services/Sync/LibraryAPI.swift | 16 +- .../Sync/Model/IdentifiersResponse.swift | 13 - .../Sync/Model/ItemsStatusResponse.swift | 17 + Shared/Services/Sync/SyncService.swift | 332 ++++++++-- .../SyncQueue/SyncQueueRepository.swift | 51 ++ .../Services/SyncQueue/SyncQueueService.swift | 55 +- 20 files changed, 1294 insertions(+), 245 deletions(-) create mode 100644 BookPlayerTests/Services/MissingItemsPassTests.swift delete mode 100644 Shared/Services/Sync/Model/IdentifiersResponse.swift create mode 100644 Shared/Services/Sync/Model/ItemsStatusResponse.swift diff --git a/BookPlayer.xcodeproj/project.pbxproj b/BookPlayer.xcodeproj/project.pbxproj index bdf40e8a5..db7350c33 100644 --- a/BookPlayer.xcodeproj/project.pbxproj +++ b/BookPlayer.xcodeproj/project.pbxproj @@ -828,8 +828,8 @@ 9F2DC9DB2A008B28006CDF1F /* PricingRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2DC9DA2A008B28006CDF1F /* PricingRowView.swift */; }; 9F2DC9E52A014BB5006CDF1F /* PricingModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2DC9E32A01313C006CDF1F /* PricingModel.swift */; }; 9F2DC9E62A014BB5006CDF1F /* PricingModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2DC9E32A01313C006CDF1F /* PricingModel.swift */; }; - 9F2E00922A568F800001FE20 /* IdentifiersResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2E00912A568F800001FE20 /* IdentifiersResponse.swift */; }; - 9F2E00932A568F800001FE20 /* IdentifiersResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2E00912A568F800001FE20 /* IdentifiersResponse.swift */; }; + 9F2E00922A568F800001FE20 /* ItemsStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2E00912A568F800001FE20 /* ItemsStatusResponse.swift */; }; + 9F2E00932A568F800001FE20 /* ItemsStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2E00912A568F800001FE20 /* ItemsStatusResponse.swift */; }; 9F2E00DE2A5C2B810001FE20 /* StorageCloudDeletedViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2E00DD2A5C2B810001FE20 /* StorageCloudDeletedViewModel.swift */; }; 9F3C436A284181690066D99A /* DataInitializerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3C435B28413C070066D99A /* DataInitializerCoordinator.swift */; }; 9F3C436B284181C70066D99A /* AlertPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3C4357284132640066D99A /* AlertPresenter.swift */; }; @@ -976,6 +976,7 @@ CA3B408256F8458669106CF9 /* IntegrationConnectionViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91D6855100BD1823B2674F /* IntegrationConnectionViewModelProtocol.swift */; }; CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */; }; 6C5741E68D44175ECF900294 /* UploadContinuationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04EDE7B20E949F916D8ECA2D /* UploadContinuationTests.swift */; }; + AD8D09AF57F6C7799943EA1F /* MissingItemsPassTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60EBB5E9BC0C94F511BD4044 /* MissingItemsPassTests.swift */; }; 50EEEAE96509B6867FC9180B /* BackgroundSessionWakeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83C482DCC8DC2DF811A3C7BC /* BackgroundSessionWakeTests.swift */; }; B2B1B1BF822F47AA40EE1B71 /* MultipartUploadEngineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */; }; 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */; }; @@ -1871,7 +1872,7 @@ 9F2DC9D82A008B19006CDF1F /* PricingOptionsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PricingOptionsView.swift; sourceTree = ""; }; 9F2DC9DA2A008B28006CDF1F /* PricingRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PricingRowView.swift; sourceTree = ""; }; 9F2DC9E32A01313C006CDF1F /* PricingModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PricingModel.swift; sourceTree = ""; }; - 9F2E00912A568F800001FE20 /* IdentifiersResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdentifiersResponse.swift; sourceTree = ""; }; + 9F2E00912A568F800001FE20 /* ItemsStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemsStatusResponse.swift; sourceTree = ""; }; 9F2E00DD2A5C2B810001FE20 /* StorageCloudDeletedViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageCloudDeletedViewModel.swift; sourceTree = ""; }; 9F3C4357284132640066D99A /* AlertPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertPresenter.swift; sourceTree = ""; }; 9F3C435B28413C070066D99A /* DataInitializerCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataInitializerCoordinator.swift; sourceTree = ""; }; @@ -2012,6 +2013,7 @@ FEEDBABE0000000000000004 /* SharedWidgetStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedWidgetStoreTests.swift; sourceTree = ""; }; FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncQueueTests.swift; sourceTree = ""; }; 04EDE7B20E949F916D8ECA2D /* UploadContinuationTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UploadContinuationTests.swift; sourceTree = ""; }; + 60EBB5E9BC0C94F511BD4044 /* MissingItemsPassTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MissingItemsPassTests.swift; sourceTree = ""; }; 83C482DCC8DC2DF811A3C7BC /* BackgroundSessionWakeTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BackgroundSessionWakeTests.swift; sourceTree = ""; }; 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MultipartUploadEngineTests.swift; sourceTree = ""; }; C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncPauseReportingTests.swift; sourceTree = ""; }; @@ -3406,6 +3408,7 @@ 5BE48B26D3726D5519F45ED9 /* IntegrationHostResolverTests.swift */, FF75FEB4DEC37DBE232CD140 /* SyncQueueTests.swift */, 04EDE7B20E949F916D8ECA2D /* UploadContinuationTests.swift */, + 60EBB5E9BC0C94F511BD4044 /* MissingItemsPassTests.swift */, 83C482DCC8DC2DF811A3C7BC /* BackgroundSessionWakeTests.swift */, 5C5F08C368941D45696C7891 /* MultipartUploadEngineTests.swift */, C64E54AA0319D8F687DFB6E4 /* SyncPauseReportingTests.swift */, @@ -3824,7 +3827,7 @@ 9FBDBC7F2879C6C900D315A2 /* UploadItemResponse.swift */, 1713BB63A647FA8447545EFD /* MultipartUploadResponse.swift */, 9FBDBC7C287940D900D315A2 /* ContentsResponse.swift */, - 9F2E00912A568F800001FE20 /* IdentifiersResponse.swift */, + 9F2E00912A568F800001FE20 /* ItemsStatusResponse.swift */, 9F9C7B4F29F9670100E257B0 /* BookmarksResponse.swift */, 9F0872DA2A19867C00B7FD4A /* ArtworkResponse.swift */, 9FAFC9F32995BB5C00FD531E /* RemoteFileURLResponse.swift */, @@ -4832,7 +4835,7 @@ 9FBDBC812879C6C900D315A2 /* UploadItemResponse.swift in Sources */, 04376D0C9384C1655823B498 /* MultipartUploadResponse.swift in Sources */, 41A90C4627563F5A00C30394 /* ItemType.swift in Sources */, - 9F2E00932A568F800001FE20 /* IdentifiersResponse.swift in Sources */, + 9F2E00932A568F800001FE20 /* ItemsStatusResponse.swift in Sources */, 4140EA7E227289CE0009F794 /* Library+CoreDataClass.swift in Sources */, 9911FBB62F72486D00DC9A2B /* ExternalUpdateProgressOperation.swift in Sources */, 41C233FE272E1958006BC7B8 /* SimpleLibraryItem.swift in Sources */, @@ -5337,6 +5340,7 @@ 3F058A74415A3AF6C17DA8F4 /* IntegrationHostResolverTests.swift in Sources */, CB3844DD8C695EAD32A4A811 /* SyncQueueTests.swift in Sources */, 6C5741E68D44175ECF900294 /* UploadContinuationTests.swift in Sources */, + AD8D09AF57F6C7799943EA1F /* MissingItemsPassTests.swift in Sources */, 50EEEAE96509B6867FC9180B /* BackgroundSessionWakeTests.swift in Sources */, B2B1B1BF822F47AA40EE1B71 /* MultipartUploadEngineTests.swift in Sources */, 3F42C29BC62913D44C22CBC0 /* SyncPauseReportingTests.swift in Sources */, @@ -5445,7 +5449,7 @@ 41A1B123226F88C500EA0400 /* Book+CoreDataClass.swift in Sources */, 41A1B105226E9DBD00EA0400 /* UIColor+Sweetercolor.swift in Sources */, 9FF383D32A40F97000BBAC11 /* MappingModel_v8_to_v9.xcmappingmodel in Sources */, - 9F2E00922A568F800001FE20 /* IdentifiersResponse.swift in Sources */, + 9F2E00922A568F800001FE20 /* ItemsStatusResponse.swift in Sources */, 41A1B10C226E9E9700EA0400 /* DeleteMode.swift in Sources */, 9FC1E44A2814C4DE00522FA8 /* NetworkClient.swift in Sources */, 9F9C7B5029F9670100E257B0 /* BookmarksResponse.swift in Sources */, diff --git a/BookPlayer/Generated/AutoMockable.generated.swift b/BookPlayer/Generated/AutoMockable.generated.swift index f8468a114..7c018dcb4 100644 --- a/BookPlayer/Generated/AutoMockable.generated.swift +++ b/BookPlayer/Generated/AutoMockable.generated.swift @@ -1876,6 +1876,11 @@ class SyncServiceProtocolMock: SyncServiceProtocol { set(value) { underlyingDownloadErrorPublisher = value } } var underlyingDownloadErrorPublisher: PassthroughSubject<(String, Error), Never>! + var hasRunFirstSync: Bool { + get { return underlyingHasRunFirstSync } + set(value) { underlyingHasRunFirstSync = value } + } + var underlyingHasRunFirstSync: Bool! //MARK: - updateSyncEnabled var updateSyncEnabledCallsCount = 0 @@ -1996,25 +2001,16 @@ class SyncServiceProtocolMock: SyncServiceProtocol { return syncBookmarksListRelativePathReturnValue } } - //MARK: - fetchSyncedIdentifiers + //MARK: - scheduleMissingItemsIfNeeded - var fetchSyncedIdentifiersThrowableError: Error? - var fetchSyncedIdentifiersCallsCount = 0 - var fetchSyncedIdentifiersCalled: Bool { - return fetchSyncedIdentifiersCallsCount > 0 + var scheduleMissingItemsIfNeededCallsCount = 0 + var scheduleMissingItemsIfNeededCalled: Bool { + return scheduleMissingItemsIfNeededCallsCount > 0 } - var fetchSyncedIdentifiersReturnValue: [String]! - var fetchSyncedIdentifiersClosure: (() async throws -> [String])? - func fetchSyncedIdentifiers() async throws -> [String] { - if let error = fetchSyncedIdentifiersThrowableError { - throw error - } - fetchSyncedIdentifiersCallsCount += 1 - if let fetchSyncedIdentifiersClosure = fetchSyncedIdentifiersClosure { - return try await fetchSyncedIdentifiersClosure() - } else { - return fetchSyncedIdentifiersReturnValue - } + var scheduleMissingItemsIfNeededClosure: (() async -> Void)? + func scheduleMissingItemsIfNeeded() async { + scheduleMissingItemsIfNeededCallsCount += 1 + await scheduleMissingItemsIfNeededClosure?() } //MARK: - getRemoteFileURLs diff --git a/BookPlayer/Profile/Profile/Views/SyncPauseReport.swift b/BookPlayer/Profile/Profile/Views/SyncPauseReport.swift index ec4c3a682..3c0f1fbc1 100644 --- a/BookPlayer/Profile/Profile/Views/SyncPauseReport.swift +++ b/BookPlayer/Profile/Profile/Views/SyncPauseReport.swift @@ -52,10 +52,7 @@ struct SyncPauseReport { } report += "\n-- Local library (\(library.count)) --\n" - report += LibraryTreeRepresentation.render( - entries: library.map { ($0.relativePath, $0.uuid) }, - remoteIdentifiers: nil - ) + report += LibraryTreeRepresentation.render(entries: library.map { ($0.relativePath, $0.uuid) }) return report } diff --git a/BookPlayer/Services/ListSyncRefreshService.swift b/BookPlayer/Services/ListSyncRefreshService.swift index e28f2c778..8df133185 100644 --- a/BookPlayer/Services/ListSyncRefreshService.swift +++ b/BookPlayer/Services/ListSyncRefreshService.swift @@ -46,10 +46,16 @@ final class ListSyncRefreshService: BPLogger, ObservableObject { // sync doesn't skip the pref refresh. async let prefPull: Void = { await preferencesService.pullFromServer(force: false) }() + let hasRunFirstSync = syncService.hasRunFirstSync do { if let relativePath { - try await syncService.syncListContents(at: relativePath) - } else if UserDefaults.standard.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents) == true { + // Until the first sync has registered this device's items (after signing in, or on + // coming back from a lapse), a folder's listing would delete the ones the server + // hasn't seen yet, such as books imported while sync was off + if hasRunFirstSync { + try await syncService.syncListContents(at: relativePath) + } + } else if hasRunFirstSync { try await syncService.syncListContents(at: nil) } else { try await syncService.syncLibraryContents() @@ -69,6 +75,13 @@ final class ListSyncRefreshService: BPLogger, ObservableObject { await externalProgressService.refreshItems(at: relativePath) _ = await prefPull + + // The weekly / became-PRO missing-items pass, off the refresh's path: a pull-to-refresh + // spinner shouldn't wait on it (it returns at once when nothing is due) + if relativePath == nil { + let syncService = syncService + Task { await syncService.scheduleMissingItemsIfNeeded() } + } } @MainActor diff --git a/BookPlayer/Settings/Sections/DebugFileTransferable.swift b/BookPlayer/Settings/Sections/DebugFileTransferable.swift index 7fd16a10a..6653b5d61 100644 --- a/BookPlayer/Settings/Sections/DebugFileTransferable.swift +++ b/BookPlayer/Settings/Sections/DebugFileTransferable.swift @@ -42,81 +42,25 @@ struct DebugFileTransferable: Transferable { let accountService: AccountService let syncService: SyncService + /// Local state only: what the server holds (and did) is read from its own records, which + /// the tree's uuids match exactly func generateDebugData() async -> Data { - var remoteIdentifiers: [String]? - var syncError: String? - let syncJobsInformation = await getSyncOperationsInformation() - if syncService.isActive { - do { - remoteIdentifiers = try await syncService.fetchSyncedIdentifiers() - } catch { - syncError = "Error fetching remote identifiers: \(error.localizedDescription)" - } - } - - let localidentifiers = libraryService.fetchIdentifiers() - - var libraryRepresentation = getLibraryRepresentation( - localidentifiers: localidentifiers, - remoteIdentifiers: remoteIdentifiers + // A view-context read, and the export runs off main + let libraryService = libraryService + let entries = await MainActor.run { libraryService.fetchIdentifiersWithUuids() } + var libraryRepresentation = LibraryTreeRepresentation.render( + entries: entries.map { ($0.relativePath, $0.uuid) } ) - if let remoteIdentifiers, - let remoteOnlyInfo = getRemoteOnlyInformation( - localidentifiers: localidentifiers, - remoteIdentifiers: remoteIdentifiers - ) - { - libraryRepresentation += remoteOnlyInfo - } - libraryRepresentation += getStorageBreakdown() libraryRepresentation += syncJobsInformation - if let syncError { - libraryRepresentation += "\n\n⚠️ Sync Error:\n\(syncError)\n" - } - return libraryRepresentation.data(using: .utf8)! } - /// Get a representation of the library like with the `tree` command - /// Note: For the first status, '✓' means the backing file exists, and '𐄂' that it's missing locally, - /// and for the second status, ☐ means the file is not uploaded yet, and ☑ that it's already synced - func getLibraryRepresentation( - localidentifiers: [String], - remoteIdentifiers: [String]? - ) -> String { - LibraryTreeRepresentation.render( - entries: libraryService.fetchIdentifiers().map { ($0, nil) }, - remoteIdentifiers: remoteIdentifiers - ) - } - - func getRemoteOnlyInformation( - localidentifiers: [String], - remoteIdentifiers: [String] - ) -> String? { - var remoteOnlyIdentifiers = Array(Set(remoteIdentifiers).subtracting(Set(localidentifiers))) - - guard !remoteOnlyIdentifiers.isEmpty else { - return nil - } - - remoteOnlyIdentifiers.sort(by: { $0.localizedStandardCompare($1) == ComparisonResult.orderedAscending }) - - var remoteInfo = "\n\nRemote only items:\n" - - for remoteOnlyIdentifier in remoteOnlyIdentifiers { - remoteInfo += "\(remoteOnlyIdentifier)\n" - } - - return remoteInfo - } - func getStorageBreakdown() -> String { var info = "\n\n--- Storage Breakdown ---\n" let fm = FileManager.default @@ -359,14 +303,11 @@ struct DebugFileTransferable: Transferable { /// The library as a `tree`-style listing, shared by the debug file and the sync report enum LibraryTreeRepresentation { + /// A representation of the library like the `tree` command's: '✓' means the backing file + /// exists on this device, '𐄂' that it's missing /// - Parameter entries: every item's path, in library order, with its uuid when the /// listing should show it - /// Note: For the first status, '✓' means the backing file exists, and '𐄂' that it's missing locally, - /// and for the second status, ☐ means the file is not uploaded yet, and ☑ that it's already synced - static func render( - entries: [(relativePath: String, uuid: String?)], - remoteIdentifiers: [String]? - ) -> String { + static func render(entries: [(relativePath: String, uuid: String?)]) -> String { var libraryRepresentation = "Library\n.\n" let processedFolderURL = DataManager.getProcessedFolderURL() @@ -376,11 +317,7 @@ enum LibraryTreeRepresentation { for (index, entry) in entries.enumerated() { let identifier = entry.relativePath let fileURL = processedFolderURL.appendingPathComponent(identifier) - let fileExistsRepresentation = getFileExistsRepresentation( - identifier: identifier, - fileURL: fileURL, - remoteIdentifiers: remoteIdentifiers - ) + let fileExistsRepresentation = FileManager.default.fileExists(atPath: fileURL.path) ? "[✓]" : "[𐄂]" let isLast = index == (entries.endIndex - 1) let newNestedLevel = identifier.components(separatedBy: "/").count - 1 var horizontalSeparator = String(repeating: baseSeparator, count: newNestedLevel) @@ -399,25 +336,4 @@ enum LibraryTreeRepresentation { return libraryRepresentation } - - static func getFileExistsRepresentation( - identifier: String, - fileURL: URL, - remoteIdentifiers: [String]? - ) -> String { - let localRepresentation = - FileManager.default.fileExists(atPath: fileURL.path) - ? "[✓]" - : "[𐄂]" - - guard let remoteIdentifiers else { - return localRepresentation - } - - if remoteIdentifiers.contains(identifier) { - return localRepresentation + "[☑]" - } else { - return localRepresentation + "[☐]" - } - } } diff --git a/BookPlayer/Utils/AppServices.swift b/BookPlayer/Utils/AppServices.swift index 54f9f146f..4953fc9c2 100644 --- a/BookPlayer/Utils/AppServices.swift +++ b/BookPlayer/Utils/AppServices.swift @@ -301,7 +301,8 @@ final class AppServices: BPLogger { isActive: accountService.hasSyncEnabled(), libraryService: libraryService, accountService: accountService, - syncQueueService: syncQueueService + syncQueueService: syncQueueService, + runsMissingItemsPass: true ) return service } diff --git a/BookPlayerTests/ListSyncRefreshServiceTests.swift b/BookPlayerTests/ListSyncRefreshServiceTests.swift index 6c1a53396..b167f6868 100644 --- a/BookPlayerTests/ListSyncRefreshServiceTests.swift +++ b/BookPlayerTests/ListSyncRefreshServiceTests.swift @@ -54,6 +54,8 @@ final class ListSyncRefreshServiceTests: XCTestCase { super.setUp() recorder = Recorder() syncService = SyncServiceProtocolMock() + // The first sync already ran: folder levels pull normally + syncService.hasRunFirstSync = true syncService.syncListContentsAtClosure = { [recorder] path in recorder?.record("cloud:\(path ?? "root")") } @@ -84,4 +86,36 @@ final class ListSyncRefreshServiceTests: XCTestCase { XCTAssertEqual(recorder.events, ["pull:Author/Series"], "the closure never ran; the pull did") XCTAssertEqual(preferencesService.pullFromServerForceCallsCount, 1) } + + /// Until the first sync has registered this device's items, a folder's listing would delete + /// the ones the server hasn't seen (books imported while sync was off): its cloud step waits + func testFolderCloudSync_waitsForTheFirstSync() async throws { + syncService.hasRunFirstSync = false + + try await sut.syncList(at: "Author/Series") + + XCTAssertEqual(recorder.events, ["pull:Author/Series"]) + XCTAssertEqual(preferencesService.pullFromServerForceCallsCount, 1) + } + + /// The root refresh asks for the weekly / became-PRO pass, without waiting on it + func testRootRefresh_asksForTheMissingItemsPass() async throws { + let asked = expectation(description: "pass asked") + syncService.scheduleMissingItemsIfNeededClosure = { asked.fulfill() } + + try await sut.syncList(at: nil) + + await fulfillment(of: [asked], timeout: 1) + XCTAssertEqual(recorder.events.first, "cloud:root") + } + + func testFolderRefresh_neverAsksForThePass() async throws { + let asked = expectation(description: "pass asked") + asked.isInverted = true + syncService.scheduleMissingItemsIfNeededClosure = { asked.fulfill() } + + try await sut.syncList(at: "Author") + + await fulfillment(of: [asked], timeout: 0.3) + } } diff --git a/BookPlayerTests/Mocks/AccountServiceMock.swift b/BookPlayerTests/Mocks/AccountServiceMock.swift index c3736d434..d03a82b66 100644 --- a/BookPlayerTests/Mocks/AccountServiceMock.swift +++ b/BookPlayerTests/Mocks/AccountServiceMock.swift @@ -138,9 +138,12 @@ class AccountServiceMock: AccountServiceProtocol { func deleteAccount() async throws -> String { return "Success" } + /// Settable so a test can model a tier change. The default .free keeps this consistent + /// with the mock's hasSyncEnabled()/hasPlusAccess() both returning false — a .plus level + /// would contradict them. + var accessLevelValue: BookPlayerKit.AccessLevel = .free + func getAccessLevel() -> BookPlayerKit.AccessLevel { - // .free keeps this consistent with the mock's hasSyncEnabled()/hasPlusAccess() - // both returning false — a .plus level would contradict them. - return .free + return accessLevelValue } } diff --git a/BookPlayerTests/Services/LibraryServiceTests.swift b/BookPlayerTests/Services/LibraryServiceTests.swift index 5e6dfd668..50476c450 100644 --- a/BookPlayerTests/Services/LibraryServiceTests.swift +++ b/BookPlayerTests/Services/LibraryServiceTests.swift @@ -1337,18 +1337,27 @@ class ModifyLibraryTests: LibraryServiceTests { XCTAssert(fetchedChapters?.last?.index == 2) } - func testGetItemsNotIncluded() async throws { - let emptyResult = await self.sut.getItemsToSync(remoteIdentifiers: []) - XCTAssert(emptyResult?.isEmpty == true) - - _ = try! self.sut.createFolder(with: "test-folder", inside: nil) - _ = try! self.sut.createFolder(with: "test-folder2", inside: nil) - - let secondResult = await self.sut.getItemsToSync(remoteIdentifiers: []) - XCTAssert(secondResult?.count == 2) - - let thirdResult = await self.sut.getItemsToSync(remoteIdentifiers: ["test-folder"]) - XCTAssert(thirdResult?.count == 1) + /// The missing-items pass reads every uuid, then the items the server asked about + func testUuidFetches_readTheWholeLibraryAndRegisterParentsFirst() async throws { + let emptyUuids = await self.sut.fetchAllUuids() + XCTAssertEqual(emptyUuids, []) + + let folder = try self.sut.createFolder(with: "test-folder", inside: nil) + let nested = try self.sut.createFolder(with: "nested", inside: folder.relativePath) + let other = try self.sut.createFolder(with: "test-folder2", inside: nil) + + let uuids = await self.sut.fetchAllUuids() + XCTAssertEqual(Set(uuids ?? []), [folder.uuid, nested.uuid, other.uuid]) + + let items = await self.sut.getSyncableItems(forUuids: [nested.uuid, folder.uuid]) + XCTAssertEqual(items?.map(\.relativePath), ["test-folder", "test-folder/nested"]) + let none = await self.sut.getSyncableItems(forUuids: []) + XCTAssertEqual(none?.isEmpty, true) + + // Read 500 uuids per fetch: items in different chunks all come back + let spread = [folder.uuid] + (0..<600).map { _ in UUID().uuidString } + [other.uuid] + let found = await self.sut.getSyncableItems(forUuids: spread) + XCTAssertEqual(found?.map(\.relativePath), ["test-folder", "test-folder2"]) } func testGetItemProperty() { diff --git a/BookPlayerTests/Services/MissingItemsPassTests.swift b/BookPlayerTests/Services/MissingItemsPassTests.swift new file mode 100644 index 000000000..50cac5a92 --- /dev/null +++ b/BookPlayerTests/Services/MissingItemsPassTests.swift @@ -0,0 +1,623 @@ +// +// MissingItemsPassTests.swift +// BookPlayerTests +// +// Copyright © 2026 BookPlayer LLC. All rights reserved. +// + +import Foundation +import SwiftData +import XCTest + +@testable import BookPlayer +@testable import BookPlayerKit + +/// The missing-items pass (bookplayer-api docs/multipart-uploads.md): the first sync's +/// registration step, then again on LITE → PRO and weekly. It works by uuid, never by path, +/// so a path that went stale on this device can't move anything back on the server. +final class MissingItemsPassTests: XCTestCase { + /// Answers `/status` from its script and records every request + private final class StatusClient: NetworkClientMock, @unchecked Sendable { + private let lock = NSLock() + private var _statusRequests = [[String]]() + private var _matchRequests = [[String: String]]() + private var _answer: (unknown: [String], unsynced: [String]) = ([], []) + private var _conflicts = [[String: String]]() + private var _failsStatus = false + private var _rootContent = [[String: Any]]() + private var _onStatus: (() async -> Void)? + + var statusRequests: [[String]] { lock.withLock { _statusRequests } } + var matchRequests: [[String: String]] { lock.withLock { _matchRequests } } + + /// `/uuids` answers these conflicts: local uuid → the server's + func conflict(_ localUuid: String, serverUuid: String) { + lock.withLock { _conflicts.append(["key": localUuid, "uuid": serverUuid]) } + } + + init() { + super.init(mockedResponse: Empty()) + } + + func answer(unknown: [String] = [], unsynced: [String] = []) { + lock.withLock { _answer = (unknown, unsynced) } + } + + func failStatus() { + lock.withLock { _failsStatus = true } + } + + func setRootContent(_ content: [[String: Any]]) { + lock.withLock { _rootContent = content } + } + + /// Runs while the server "answers" `/status` + func onStatus(_ action: @escaping () async -> Void) { + lock.withLock { _onStatus = action } + } + + override func request( + path: String, + method: HTTPMethod, + parameters: [String: Any]? + ) async throws -> T { + if path == "/v1/library/status", let action = lock.withLock({ _onStatus }) { + await action() + } + let object: Any = try lock.withLock { + switch (path, method) { + case ("/v1/library/status", _): + _statusRequests.append(parameters?["uuids"] as? [String] ?? []) + if _failsStatus { throw URLError(.notConnectedToInternet) } + return ["unknown": _answer.unknown, "unsynced": _answer.unsynced] + case ("/v1/library/uuids", _): + _matchRequests.append(parameters?["items"] as? [String: String] ?? [:]) + return ["applied": [String](), "conflicts": _conflicts] + case ("/v1/library", .get): + return ["content": _rootContent] + default: + return [String: Any]() + } + } + return try JSONDecoder().decode(T.self, from: JSONSerialization.data(withJSONObject: object)) + } + } + + /// Its own suite: the test host's SyncService works on `.standard` + private var defaults: UserDefaults! + private var defaultsSuite = "" + + private var tasksDataManager: TasksDataManager! + private var repository: SyncQueueRepository! + private var dataManager: DataManager! + private var libraryService: LibraryService! + private var queue: SyncQueueService! + private var client: StatusClient! + private var account: AccountServiceMock! + private var sync: SyncService! + + override func setUpWithError() throws { + defaultsSuite = "MissingItemsPassTests-\(UUID().uuidString)" + defaults = UserDefaults(suiteName: defaultsSuite) + + let schema = Schema([ + UploadTaskModel.self, + UpdateTaskModel.self, + MoveTaskModel.self, + DeleteTaskModel.self, + DeleteBookmarkTaskModel.self, + SetBookmarkTaskModel.self, + RenameFolderTaskModel.self, + ArtworkUploadTaskModel.self, + MatchUuidsTaskModel.self, + UploadExternalResourceTaskModel.self, + ExternalResourceToDownloadTaskModel.self, + DeleteExternalResourceTaskModel.self, + SyncQueueContainer.self, + QueuedTaskReferenceModel.self, + ExternalUpdateTaskModel.self, + UploadFileTaskModel.self, + ]) + let config = ModelConfiguration(isStoredInMemoryOnly: true, cloudKitDatabase: .none) + tasksDataManager = TasksDataManager(container: try ModelContainer(for: schema, configurations: config)) + repository = SyncQueueRepository(tasksDataManager: tasksDataManager) + + DataTestUtils.clearFolderContents(url: DataManager.getProcessedFolderURL()) + dataManager = DataManager(coreDataStack: CoreDataStack(testPath: "/dev/null")) + libraryService = LibraryService() + libraryService.setup(dataManager: dataManager, audioMetadataService: AudioMetadataService()) + _ = libraryService.getLibrary() + + client = StatusClient() + queue = SyncQueueService(maxConcurrentTasks: 1) + queue.taskContainer = repository + queue.tasksDataManager = tasksDataManager + // Conflicts rewrite the library's uuids through it + queue.dataManager = dataManager + queue.libraryService = libraryService + queue.accessPolicy = [.uploadFile: true, .externalUpdate: true] + queue.networkClient = client + account = AccountServiceMock(account: nil) + sync = makeSyncService(runsMissingItemsPass: true) + } + + override func tearDown() { + defaults.removePersistentDomain(forName: defaultsSuite) + DataTestUtils.clearFolderContents(url: DataManager.getProcessedFolderURL()) + sync = nil + queue = nil + repository = nil + tasksDataManager = nil + super.tearDown() + } + + private func makeSyncService(runsMissingItemsPass: Bool) -> SyncService { + let service = SyncService() + service.setup( + isActive: true, + libraryService: libraryService, + accountService: account, + syncQueueService: queue, + client: client, + runsMissingItemsPass: runsMissingItemsPass, + userDefaults: defaults + ) + // Hold what the pass queues, for the assertions + queue.setServerLanesEnabled(false) + return service + } + + /// A book at the library root, its file in Processed + private func book(_ title: String) -> Book { + let book = StubFactory.book(dataManager: dataManager, title: title, duration: 100) + dataManager.saveContext() + return book + } + + private func queueUploadFile(for book: Book, parked: Bool = false) async throws { + let id = UUID().uuidString + try await repository.storeTask(parameters: [ + "id": id, + "jobType": SyncJobType.uploadFile.rawValue, + "queueKey": TaskQueueKey.uploadFile, + "uuid": book.uuid, + "relativePath": book.relativePath, + "filePath": DataManager.getProcessedFolderURL().appendingPathComponent(book.relativePath).absoluteString, + ]) + if parked { + await repository.park( + taskId: id, + pause: TaskPause(scope: .task, errorCode: "invalid_parts", message: "m", httpStatus: 422, pausedAt: Date()) + ) + } + } + + private func syncLane() async -> [SyncTask] { + await repository.getAllTasksWithParams(in: TaskQueueKey.sync) + } + + private func uploadLane() async -> [SyncTask] { + await repository.getAllTasksWithParams(in: TaskQueueKey.uploadFile) + } + + private func waitUntil(timeout: TimeInterval = 3, _ condition: () async -> Bool) async throws { + let deadline = Date().addingTimeInterval(timeout) + while Date() < deadline { + if await condition() { return } + try await Task.sleep(for: .milliseconds(20)) + } + XCTFail("timed out") + } +} + +// MARK: - The pass + +extension MissingItemsPassTests { + /// Items the server never saw are matched by path first (a legacy row at the same path + /// would otherwise keep the server's uuid), then registered like an import, parents first + func testPass_matchesThenRegistersUnknownItems_parentsFirst() async throws { + let alpha = book("Alpha") + let shelf = try libraryService.createFolder(with: "Shelf", inside: nil) + let inner = try libraryService.createFolder(with: "Inner", inside: shelf.relativePath) + client.answer(unknown: [inner.uuid, alpha.uuid, shelf.uuid]) + + try await sync.runMissingItemsPass(startsContinuedUploads: false) + + XCTAssertEqual( + client.matchRequests, + [[alpha.relativePath: alpha.uuid, "Shelf": shelf.uuid, "Shelf/Inner": inner.uuid]] + ) + let lane = await syncLane() + XCTAssertEqual(lane.map(\.jobType), [.upload, .upload, .upload]) + XCTAssertEqual(lane.map(\.relativePath), [alpha.relativePath, "Shelf", "Shelf/Inner"]) + let sent = try XCTUnwrap(client.statusRequests.first) + XCTAssertEqual(Set(sent), [alpha.uuid, shelf.uuid, inner.uuid]) + } + + /// The same file already on the server under another uuid (imported on another device): + /// this device adopts it BEFORE registering, so every task carries the uuid the server knows + func testPass_adoptsTheServersUuidBeforeRegistering() async throws { + let twin = book("Twin") + let localUuid = twin.uuid + let serverUuid = UUID().uuidString + client.answer(unknown: [localUuid]) + client.conflict(localUuid, serverUuid: serverUuid) + + try await sync.runMissingItemsPass(startsContinuedUploads: false) + + let lane = await syncLane() + XCTAssertEqual(lane.map(\.jobType), [.upload]) + XCTAssertEqual(lane.first?.uuid, serverUuid) + XCTAssertEqual(lane.first?.parameters["uuid"] as? String, serverUuid) + let adopted = await libraryService.fetchRelativePath(forUuid: serverUuid) + XCTAssertEqual(adopted, twin.relativePath) + } + + /// Two rows sharing a uuid bring its conflict back twice: the first answer is adopted + func testPass_adoptsTheFirstAnswerForARepeatedConflict() async throws { + let twin = book("Repeated") + let localUuid = twin.uuid + let first = UUID().uuidString + client.answer(unknown: [localUuid]) + client.conflict(localUuid, serverUuid: first) + client.conflict(localUuid, serverUuid: UUID().uuidString) + + try await sync.runMissingItemsPass(startsContinuedUploads: false) + + let lane = await syncLane() + XCTAssertEqual(lane.map(\.uuid), [first]) + let adopted = await libraryService.fetchRelativePath(forUuid: first) + XCTAssertEqual(adopted, twin.relativePath) + } + + /// A registered book brings its user bookmarks along, in time order; other kinds stay local + @MainActor + func testPass_registersUserBookmarksWithTheirBook() async throws { + let marked = book("Marked") + _ = libraryService.createBookmark(at: 200, relativePath: marked.relativePath, uuid: marked.uuid, type: .user) + _ = libraryService.createBookmark(at: 50, relativePath: marked.relativePath, uuid: marked.uuid, type: .user) + _ = libraryService.createBookmark(at: 120, relativePath: marked.relativePath, uuid: marked.uuid, type: .sleep) + client.answer(unknown: [marked.uuid]) + + try await sync.runMissingItemsPass(startsContinuedUploads: false) + + let lane = await syncLane() + XCTAssertEqual(lane.map(\.jobType), [.upload, .setBookmark, .setBookmark]) + XCTAssertEqual(lane.dropFirst().compactMap { $0.parameters["time"] as? Double }, [50, 200]) + XCTAssertEqual(Set(lane.map(\.uuid)), [marked.uuid]) + + // Read 500 paths per fetch: a book past the first batch still brings its bookmarks + let markedPath: String = marked.relativePath + let bookmarks = await libraryService.getUserBookmarks(forItemsAt: (0..<600).map { "missing-\($0)" } + [markedPath]) + XCTAssertEqual(bookmarks[markedPath]?.map { $0.time }, [50, 200]) + XCTAssertEqual(bookmarks.count, 1) + } + + /// Books the server holds without a file go straight to the upload lane by uuid, never + /// through a re-registration (a `PUT /` at a stale path would move them back) + func testPass_queuesFilesOfUnsyncedBooksByUuid_skippingOnesAlreadyQueued() async throws { + let waiting = book("Waiting") + let queued = book("Queued") + try await queueUploadFile(for: queued, parked: true) + client.answer(unsynced: [waiting.uuid, queued.uuid]) + + try await sync.runMissingItemsPass(startsContinuedUploads: false) + + let syncTasks = await syncLane() + XCTAssertTrue(syncTasks.isEmpty) + let uploads = await uploadLane() + XCTAssertEqual(uploads.map(\.uuid).sorted(), [queued.uuid, waiting.uuid].sorted()) + let new = try XCTUnwrap(uploads.first { $0.uuid == waiting.uuid }) + XCTAssertEqual(new.relativePath, waiting.relativePath) + XCTAssertEqual( + (new.parameters["filePath"] as? String).flatMap(URL.init(string:))?.path, + DataManager.getProcessedFolderURL().appendingPathComponent(waiting.relativePath).path + ) + } + + /// Without S3 access (LITE) there are no files to send: only unknown items are registered + func testPass_withoutS3Access_onlyRegisters() async throws { + queue.accessPolicy = [.uploadFile: false, .externalUpdate: true] + let fresh = book("Fresh") + let unsynced = book("Unsynced") + client.answer(unknown: [fresh.uuid], unsynced: [unsynced.uuid]) + + try await sync.runMissingItemsPass(startsContinuedUploads: false) + + let lane = await syncLane() + XCTAssertEqual(lane.map(\.jobType), [.upload]) + let uploads = await uploadLane() + XCTAssertTrue(uploads.isEmpty) + } + + /// An item whose upload is queued (here parked) isn't lost: the pass leaves it to that task + func testPass_leavesAnUnknownItemWithAQueuedUploadAlone() async throws { + let parked = book("Parked") + try await queueUploadFile(for: parked, parked: true) + client.answer(unknown: [parked.uuid]) + + try await sync.runMissingItemsPass(startsContinuedUploads: false) + + let lane = await syncLane() + XCTAssertTrue(lane.isEmpty) + XCTAssertTrue(client.matchRequests.isEmpty) + } + + /// A failed read registers nothing and isn't recorded as a run: it's asked again + func testPass_failedStatus_changesNothing() async throws { + _ = book("Anything") + client.failStatus() + + do { + try await sync.runMissingItemsPass(startsContinuedUploads: true) + XCTFail("expected the pass to fail") + } catch {} + + let lane = await syncLane() + XCTAssertTrue(lane.isEmpty) + XCTAssertEqual(defaults.double(forKey: Constants.UserDefaults.missingItemsPassLastRun), 0) + } + + /// Only the first sync and a tier change start the continued task; the weekly run never does + func testPass_announcesQueuedUploadsOnlyWhenAsked() async throws { + let first = book("First") + client.answer(unsynced: [first.uuid]) + let quiet = expectation(forNotification: .bookUploadsQueued, object: nil) + quiet.isInverted = true + try await sync.runMissingItemsPass(startsContinuedUploads: false) + await fulfillment(of: [quiet], timeout: 0.3) + + let second = book("Second") + client.answer(unsynced: [second.uuid]) + let announced = expectation(forNotification: .bookUploadsQueued, object: nil) + try await sync.runMissingItemsPass(startsContinuedUploads: true) + await fulfillment(of: [announced], timeout: 1) + } + + /// What may go up by uuid: a book, not streamed from a media server, its file on this + /// device, within the 10 GiB ceiling + func testMissingFileUpload_takesOnlyBooksThatCanUpload() throws { + func item(_ path: String, type: SimpleItemType = .book, mediaServer: Bool = false) throws -> SyncableItem { + let resources = mediaServer + ? #","externalResources":[{"providerName":"jellyfin","providerId":"jf-1","syncStatus":"stream"}]"# + : "" + let json = #"{"relativePath":"\#(path)","originalFileName":"\#(path)","title":"t","isFinished":false,"type":\#(type.rawValue),"uuid":"u-\#(path)"\#(resources)}"# + return try JSONDecoder().decode(SyncableItem.self, from: Data(json.utf8)) + } + let processed = DataManager.getProcessedFolderURL() + try FileManager.default.createDirectory(at: processed, withIntermediateDirectories: true) + for name in ["ok.m4b", "stream.m4b", "huge.m4b"] { + FileManager.default.createFile(atPath: processed.appendingPathComponent(name).path, contents: Data("x".utf8)) + } + // Sparse: past the ceiling without writing 10 GiB + let huge = try FileHandle(forWritingTo: processed.appendingPathComponent("huge.m4b")) + try huge.truncate(atOffset: UInt64(FileUploadOperation.maxFileSize) + 1) + try huge.close() + + XCTAssertEqual( + SyncService.missingFileUpload(for: try item("ok.m4b")), + MissingFileUpload(uuid: "u-ok.m4b", relativePath: "ok.m4b", fileURL: processed.appendingPathComponent("ok.m4b")) + ) + XCTAssertNil(SyncService.missingFileUpload(for: try item("stream.m4b", mediaServer: true))) + XCTAssertNil(SyncService.missingFileUpload(for: try item("missing.m4b"))) + XCTAssertNil(SyncService.missingFileUpload(for: try item("huge.m4b"))) + XCTAssertNil(SyncService.missingFileUpload(for: try item("ok.m4b", type: .folder))) + } +} + +// MARK: - When it runs + +extension MissingItemsPassTests { + private func markFirstSyncDone(lastRun: Date? = nil) { + defaults.set(true, forKey: Constants.UserDefaults.hasScheduledLibraryContents) + if let lastRun { + defaults.set(lastRun.timeIntervalSince1970, forKey: Constants.UserDefaults.missingItemsPassLastRun) + } + } + + func testSchedule_runsOnceAWeek() async throws { + markFirstSyncDone(lastRun: Date().addingTimeInterval(-24 * 60 * 60)) + await sync.scheduleMissingItemsIfNeeded() + XCTAssertTrue(client.statusRequests.isEmpty, "a day after the last run") + + markFirstSyncDone(lastRun: Date().addingTimeInterval(-8 * 24 * 60 * 60)) + await sync.scheduleMissingItemsIfNeeded() + XCTAssertEqual(client.statusRequests.count, 1) + XCTAssertGreaterThan( + defaults.double(forKey: Constants.UserDefaults.missingItemsPassLastRun), + Date().addingTimeInterval(-60).timeIntervalSince1970 + ) + } + + /// Before the first sync, that sync is the pass; with changes queued, the server hasn't + /// seen them yet (a queued import would come back unknown and be registered twice) + func testSchedule_waitsForTheFirstSyncAndAnEmptySyncLane() async throws { + await sync.scheduleMissingItemsIfNeeded() + XCTAssertTrue(client.statusRequests.isEmpty, "before the first sync") + + markFirstSyncDone() + let pending = book("Pending") + await sync.jobManager.scheduleSetBookmarkJob(with: pending.relativePath, time: 10, note: nil, for: pending.uuid) + await sync.scheduleMissingItemsIfNeeded() + XCTAssertTrue(client.statusRequests.isEmpty, "with the sync lane busy") + } + + /// The watch has downloaded files of its own: it never runs the pass + func testSchedule_neverRunsWhereThePassIsOff() async throws { + let watchSync = makeSyncService(runsMissingItemsPass: false) + markFirstSyncDone() + + await watchSync.scheduleMissingItemsIfNeeded() + + XCTAssertTrue(client.statusRequests.isEmpty) + } + + /// LITE → PRO: the books registered without their file can now upload, at once, and the + /// continued task starts for them + func testBecomingPro_runsThePassAtOnce_andStartsTheContinuedTask() async throws { + markFirstSyncDone(lastRun: Date()) + defaults.set(false, forKey: Constants.UserDefaults.lastKnownProAccess) + let lite = book("Registered on LITE") + client.answer(unsynced: [lite.uuid]) + account.accessLevelValue = .pro + let announced = expectation(forNotification: .bookUploadsQueued, object: nil) + + sync.noteProAccess() + XCTAssertTrue(defaults.bool(forKey: Constants.UserDefaults.lastKnownProAccess)) + + await fulfillment(of: [announced], timeout: 3) + try await waitUntil { !defaults.bool(forKey: Constants.UserDefaults.missingItemsPassPending) } + XCTAssertEqual(client.statusRequests.count, 1) + let uploads = await uploadLane() + XCTAssertEqual(uploads.map(\.uuid), [lite.uuid]) + } + + /// The first reading (an app update, a fresh install, a sign-in) is no tier change: an + /// update mustn't start the continued task for every PRO user + func testFirstTierReading_isNoTierChange() { + account.accessLevelValue = .pro + + sync.noteProAccess() + + XCTAssertTrue(defaults.bool(forKey: Constants.UserDefaults.lastKnownProAccess)) + XCTAssertFalse(defaults.bool(forKey: Constants.UserDefaults.missingItemsPassPending)) + } + + /// A pending tier change stays pending until the queue has its PRO policy (the account + /// update reaches it on its own hop): only then could its files be queued + func testPendingPass_staysPendingUntilFilesCanBeQueued() async throws { + markFirstSyncDone(lastRun: Date()) + defaults.set(true, forKey: Constants.UserDefaults.missingItemsPassPending) + queue.accessPolicy = [.uploadFile: false, .externalUpdate: true] + + await sync.scheduleMissingItemsIfNeeded() + + XCTAssertEqual(client.statusRequests.count, 1) + XCTAssertTrue(defaults.bool(forKey: Constants.UserDefaults.missingItemsPassPending)) + } + + /// Leaving PRO before the pass ran drops it: LITE has no files to send + func testLeavingPro_dropsAPendingPass() { + defaults.set(true, forKey: Constants.UserDefaults.missingItemsPassPending) + defaults.set(true, forKey: Constants.UserDefaults.lastKnownProAccess) + account.accessLevelValue = .lite + + sync.noteProAccess() + + XCTAssertFalse(defaults.bool(forKey: Constants.UserDefaults.missingItemsPassPending)) + XCTAssertFalse(defaults.bool(forKey: Constants.UserDefaults.lastKnownProAccess)) + } + + /// An account row with this id: blank is how a signed-out account stays behind + private func accountRow(id: String) -> Account { + let row = Account(context: dataManager.getContext()) + row.id = id + return row + } + + private func launch(isActive: Bool, runsMissingItemsPass: Bool) -> SyncService { + let service = SyncService() + service.setup( + isActive: isActive, + libraryService: libraryService, + accountService: account, + syncQueueService: queue, + client: client, + runsMissingItemsPass: runsMissingItemsPass, + userDefaults: defaults + ) + queue.setServerLanesEnabled(false) + return service + } + + /// A lapse makes the return a first sync: what's imported meanwhile never reached the + /// server, and a plain listing would delete it. Not on the watch + @MainActor + func testLapse_makesTheReturnAFirstSync_onThePhoneOnly() async throws { + markFirstSyncDone() + let watch = launch(isActive: true, runsMissingItemsPass: false) + watch.updateSyncEnabled(false) + try await waitUntil { !watch.isActive } + XCTAssertTrue(defaults.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents)) + + sync.updateSyncEnabled(false) + + try await waitUntil { !defaults.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents) } + } + + /// A lapse that happened while the app was closed shows up at launch: signed in, not syncing + func testLaunchingLapsed_makesTheReturnAFirstSync() { + markFirstSyncDone() + account.account = accountRow(id: "user-1") + + _ = launch(isActive: false, runsMissingItemsPass: true) + + XCTAssertFalse(defaults.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents)) + } + + /// Signed out (the row stays, with a blank id), or on the watch, the flag is left alone + func testLaunchingSignedOutOrOnTheWatch_leavesTheFirstSyncFlag() { + markFirstSyncDone() + account.account = accountRow(id: "") + _ = launch(isActive: false, runsMissingItemsPass: true) + + account.account = accountRow(id: "user-1") + _ = launch(isActive: false, runsMissingItemsPass: false) + + XCTAssertTrue(defaults.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents)) + } + + /// Sync went off and came back while the first sync waited on the server: that session's + /// teardown wiped what it queued, so it mustn't mark the first sync done + @MainActor + func testFirstSync_acrossASessionChange_isNotMarkedDone() async throws { + let fresh = book("Fresh") + client.answer(unknown: [fresh.uuid]) + let sync = sync! + client.onStatus { + sync.updateSyncEnabled(false) + while await MainActor.run(body: { sync.isActive }) { try? await Task.sleep(for: .milliseconds(10)) } + sync.updateSyncEnabled(true) + while await MainActor.run(body: { !sync.isActive }) { try? await Task.sleep(for: .milliseconds(10)) } + } + + try await sync.syncLibraryContents() + + XCTAssertFalse(defaults.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents)) + let lane = await syncLane() + XCTAssertTrue(lane.isEmpty, "the old session registers nothing") + } + + /// Work queued before sync went off is held, never cleared (a paying subscriber can read + /// lapsed at launch): the first sync waits for it instead of wiping it + func testFirstSync_waitsForHeldTasks_andKeepsThem() async throws { + let held = book("Held") + await sync.jobManager.scheduleSetBookmarkJob(with: held.relativePath, time: 10, note: nil, for: held.uuid) + + try await sync.syncLibraryContents() + + let lane = await syncLane() + XCTAssertEqual(lane.map(\.jobType), [.setBookmark]) + XCTAssertTrue(client.statusRequests.isEmpty) + XCTAssertFalse(defaults.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents)) + } + + /// The first sync registers by uuid and never deletes what the server doesn't list yet + func testFirstSync_registersByUuid_andKeepsWhatTheServerLacks() async throws { + let lapseImport = book("Imported while lapsed") + client.answer(unknown: [lapseImport.uuid]) + client.setRootContent([SyncResponseFixtures.itemJSON(relativePath: "Remote.m4b")]) + defaults.set(true, forKey: Constants.UserDefaults.missingItemsPassPending) + + try await sync.syncLibraryContents() + + let exists = await libraryService.itemExists(for: lapseImport.relativePath) + XCTAssertTrue(exists, "the first sync's listing must not delete it") + let lane = await syncLane() + XCTAssertEqual(lane.map(\.jobType), [.upload]) + XCTAssertEqual(lane.last?.uuid, lapseImport.uuid) + XCTAssertTrue(defaults.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents)) + XCTAssertFalse(defaults.bool(forKey: Constants.UserDefaults.missingItemsPassPending)) + XCTAssertNotEqual(defaults.double(forKey: Constants.UserDefaults.missingItemsPassLastRun), 0) + } +} diff --git a/BookPlayerTests/Services/SyncPauseReportingTests.swift b/BookPlayerTests/Services/SyncPauseReportingTests.swift index 9b6f7e929..557685ffb 100644 --- a/BookPlayerTests/Services/SyncPauseReportingTests.swift +++ b/BookPlayerTests/Services/SyncPauseReportingTests.swift @@ -220,13 +220,10 @@ final class SyncPauseReportingTests: XCTestCase { XCTAssertTrue(report.subject.contains("item_not_found")) } - /// The debug file keeps its listing unchanged: no uuid column - func testLibraryTree_withoutUuids_matchesTheDebugFileFormat() { - let tree = LibraryTreeRepresentation.render( - entries: [("Book.mp3", nil)], - remoteIdentifiers: ["Book.mp3"] - ) - XCTAssertEqual(tree, "Library\n.\n`-- [𐄂][☑] Book.mp3\n") + /// Local state only: whether each item's file is on this device, with its uuid when given + func testLibraryTree_showsLocalFilesAndUuids() { + let tree = LibraryTreeRepresentation.render(entries: [("Book.mp3", "book-uuid"), ("Other.mp3", nil)]) + XCTAssertEqual(tree, "Library\n.\n|-- [𐄂] Book.mp3 (book-uuid)\n`-- [𐄂] Other.mp3\n") } func testReport_writesANamedFile() throws { diff --git a/CLAUDE.md b/CLAUDE.md index 95c308dd5..f59b99abf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -139,6 +139,9 @@ first. Reordering boot risks a launch crash. `JellyfinConnectionService`, `AudiobookShelfConnectionService`). `ListSyncRefreshService.syncList(at:)` is the ONE list-refresh entry point (list appear, pull-to-refresh, sync activation, CarPlay): cloud contents for the level → the level's media-server progress pull → preferences pull. + A folder's cloud step is skipped until the first sync has run (`SyncService.hasRunFirstSync`, backed by + `hasScheduledLibraryContents`): its listing would delete local items the server hasn't seen yet. The root refresh then asks, without waiting, for + `SyncService.scheduleMissingItemsIfNeeded()` (the weekly / became-PRO missing-items pass). The pull runs strictly AFTER the cloud step and never alongside it (cloud writes on the background context, the progress ingest on the view context; no merge policy), whatever the cloud outcome. It is resource-first: `LibraryService.findMediaServerResources(at:)` fetches only the level's media-server `ExternalResource` rows @@ -375,8 +378,9 @@ lines). It is the highest-risk file in the app. **Continued task:** `UploadContinuationController` (app target, owned by `AppServices`, registered at launch as `.uploads.continued`) runs ONE `BGContinuedProcessingTask` for the whole upload queue, so uploads keep full speed in the background (Live Activity "Uploading files", "(x / n) ", progress in bytes). It is - submitted whenever books are queued for upload — `SyncService.handleItemsToUpload` posts `.bookUploadsQueued` - (an import, or the first sync after signing in or subscribing; decided: always, no size threshold), on a parked + submitted whenever books are queued for upload — `.bookUploadsQueued` (posted by `SyncService.handleItemsToUpload` + for an import, and by the missing-items pass for the first sync and on becoming PRO, never its weekly run; + decided: always, no size threshold), on a parked task's Retry, and from the "Continue in background" buttons (the Queued Tasks File Uploads header, a borderless button under Profile's Queued Tasks link; shown only when `isOfferAvailable`) — only from the foreground, with S3 access, when the Wi-Fi-only setting allows the current network, and when some waiting @@ -396,8 +400,8 @@ lines). It is the highest-risk file in the app. never confirms a book upload it made** (folders and bound books are confirmed after their presigned PUT). A nil `url` is confirmed with `synced:true` for folders and bound books on every tier, but for a book only when the tier has S3 access (`LibraryItemSyncOperation.canUploadFiles`, from `accessPolicy[.uploadFile]` when `createOperation` builds it): there it means the file is already in S3, while on - LITE it only means the tier stores no file, so LITE books stay `synced=false` and their files can go up after an - upgrade. S3 is the source of truth: every run rebuilds from `GET /upload/parts` plus + LITE it only means the tier stores no file, so LITE books stay `synced=false` and the missing-items pass (below) + queues their files on becoming PRO. S3 is the source of truth: every run rebuilds from `GET /upload/parts` plus the session's tasks for the current `uploadId`, so a relaunch or a lost event resumes without re-sending. The resumable state (`uploadId`, `partSize`, `fileSize`, `restartCount`) lives on `UploadFileTaskModel`; parts are sliced to `tmp/uploads//`; 64 MiB parts, 8 in flight (fewer on low disk), fresh part URLs every top-up @@ -416,6 +420,33 @@ lines). It is the highest-risk file in the app. `.upload` as provider-backed (its answer then schedules no file); such a book's file goes up once downloaded through the sync-lane `externalResourceToDownload` job, which just schedules the upload (the old `external_set` route is gone; `complete` marks the resources downloaded). +- **Missing-items pass** (`SyncService.runMissingItemsPass`; contract in bookplayer-api `docs/multipart-uploads.md`): + sends every local uuid in ONE `POST /v1/library/status` and gets `{ unknown, unsynced }` back. Unknown items + (no server row, active or deleted) are first matched by path INLINE (`POST /uuids`, conflicts adopted in the + library and the queue via `applyUuidConflicts`, items re-read) — `PUT /` at a path the server holds under no uuid + or another one would never store ours, and a queued match job could rewrite uuids while the registrations were + still being stored — then registered like an import (`handleItemsToUpload`, parents first). Unsynced books (PRO only: `accessPolicy[.uploadFile]`) go straight to the upload lane BY UUID + (`scheduleMissingFileUploads`, the Processed file as source), never re-PUT: a stale path would move them back. + It skips media-server books (no backfill), books without a local file or over 10 GiB, and any book with an upload + already queued, parked included (`storeFileUploadsIfAbsent`: checked and stored in one actor turn, one save). It IS + the first sync's registration step (`syncLibraryContents`: the pass, then a root pull that never deletes); `/keys` + is deprecated and no longer called. The first sync never clears queued work: it waits until the sync lane is + empty (the flag stays off, the next root refresh retries), and every run of the pass is single-flight. A run + remembers the sync session it began in: sync going off (`logout`, a lapse) bumps it and clears the flag in one + locked step, so a logout+sign-in during a pass can't let the old run mark the first sync done after its teardown + wiped what it queued. Registration reads bookmarks in batches on a background context (`getUserBookmarks`). A lapse (`updateSyncEnabled(false)`, or `setup` finding a signed-in account — + `getAccountId() != nil` — that isn't syncing: the entitlement expired while the app was closed, or a stale cached + read, which is harmless) clears `hasScheduledLibraryContents`, so coming back runs a first sync: books imported meanwhile aren't on the server, and a plain listing would delete + them. `scheduleMissingItemsIfNeeded()` runs it again on LITE → PRO (the `.accountUpdate` sink's `noteProAccess` + sets `missingItemsPassPending` on a change of `lastKnownProAccess` — its first reading, e.g. after an app update, + only seeds it — cleared only by a run that could queue files, i.e. once the queue had its PRO policy) and weekly + (`missingItemsPassLastRun`), only once the first sync ran, while sync is on and with an empty sync lane; a tier + change arriving during a weekly run runs right after it; only a pending (tier-change) run posts + `.bookUploadsQueued`. Its state lives in the `UserDefaults` given to `setup` (`.standard`; tests inject a suite). Phone only: `setup(runsMissingItemsPass:)` is true in + `AppServices` alone (the watch has downloaded files of its own); without it the first sync throws and the other + entry points return. Accepted: a pre-March-2026 item that another + device deleted under its own uuid, or none, reads as unknown and comes back. The Settings › Debug export is + local only (tree with uuids, no server call). - `SyncService.swift` is `@Observable`. **`isActive` is `public private(set)` and must be mutated only via `updateSyncEnabled(_:)` / `logout()`** (both hop to `@MainActor`). It is driven by `.logout` (→ teardown, clears scheduled-contents flag, resets jobs) and `.accountUpdate` (→ `updateSyncEnabled(hasSyncEnabled())`) diff --git a/Shared/Constants.swift b/Shared/Constants.swift index 984c700c3..4ae43fcd7 100644 --- a/Shared/Constants.swift +++ b/Shared/Constants.swift @@ -15,6 +15,12 @@ public enum Constants { public static let syncTasksQueue = "userSyncTasksQueue" public static let lastSyncTimestamp = "lastSyncTimestamp" public static let hasScheduledLibraryContents = "hasScheduledLibraryContents" + /// When the missing-items pass last completed (the weekly run) + public static let missingItemsPassLastRun = "missingItemsPassLastRun" + /// The account became PRO: the next pass runs right away and starts the continued task + public static let missingItemsPassPending = "missingItemsPassPending" + /// The tier the last account update reported, to notice LITE → PRO + public static let lastKnownProAccess = "lastKnownProAccess" /// Armed when a book finishes playing; consumed on the next review-prompt evaluation public static let pendingReviewPrompt = "userPendingReviewPrompt" diff --git a/Shared/Services/LibraryService+Sync.swift b/Shared/Services/LibraryService+Sync.swift index c46bdc85e..af7546c78 100644 --- a/Shared/Services/LibraryService+Sync.swift +++ b/Shared/Services/LibraryService+Sync.swift @@ -15,8 +15,6 @@ public protocol LibrarySyncProtocol { var metadataUpdatePublisher: AnyPublisher<[String: Any], Never> { get } var progressUpdatePublisher: AnyPublisher<[String: Any], Never> { get } - /// Fetch all the stored items in the library that are not in the remote identifiers array - func getItemsToSync(remoteIdentifiers: [String]) async -> [SyncableItem]? /// Update local items with synced info func updateInfo(for itemsDict: [String: SyncableItem], parentFolder: String?) async /// Update single local item with synced info @@ -62,6 +60,18 @@ public protocol LibrarySyncProtocol { /// upload the server no longer recognizes is re-registered from the book's CURRENT state /// (a stale path would make the server move another item into place) func fetchSyncableItem(forUuid uuid: String) async -> SyncableItem? + + /// Every real uuid in the library, read on a background context: the missing-items pass + /// asks the server about all of them. nil when the read failed (never "an empty library") + func fetchAllUuids() async -> [String]? + + /// The items with these uuids as the server would register them, parents before children, + /// read on a background context. nil when a read failed (never "fewer items") + func getSyncableItems(forUuids uuids: [String]) async -> [SyncableItem]? + + /// Every user bookmark of the items at these paths, grouped by path, read on a background + /// context in batches: a first sync registers the whole library + func getUserBookmarks(forItemsAt relativePaths: [String]) async -> [String: [SimpleBookmark]] } extension LibraryService: LibrarySyncProtocol { @@ -135,6 +145,89 @@ extension LibraryService: LibrarySyncProtocol { } } + public func fetchAllUuids() async -> [String]? { + return await withCheckedContinuation { continuation in + let context = dataManager.getBackgroundContext() + context.perform { [context] in + let fetchRequest = NSFetchRequest(entityName: "LibraryItem") + fetchRequest.propertiesToFetch = [#keyPath(LibraryItem.uuid)] + fetchRequest.resultType = .dictionaryResultType + + do { + let uuids = try context.fetch(fetchRequest).compactMap { $0[#keyPath(LibraryItem.uuid)] as? String } + continuation.resume(returning: uuids.filter(Constants.isRealUuid)) + } catch { + Self.logger.error("Failed to read the library's uuids: \(error)") + continuation.resume(returning: nil) + } + } + } + } + + public func getSyncableItems(forUuids uuids: [String]) async -> [SyncableItem]? { + guard !uuids.isEmpty else { return [] } + return await withCheckedContinuation { continuation in + let context = dataManager.getBackgroundContext() + context.perform { [unowned self, context] in + var items = [SyncableItem]() + // A few hundred per IN list keeps each fetch well under SQLite's bound-variable limit + for start in stride(from: 0, to: uuids.count, by: 500) { + let fetchRequest = NSFetchRequest(entityName: "LibraryItem") + fetchRequest.propertiesToFetch = SyncableItem.fetchRequestProperties + fetchRequest.resultType = .dictionaryResultType + fetchRequest.predicate = NSPredicate( + format: "%K IN %@", + #keyPath(LibraryItem.uuid), + Array(uuids[start.. [String: [SimpleBookmark]] { + guard !relativePaths.isEmpty else { return [:] } + return await withCheckedContinuation { continuation in + let context = dataManager.getBackgroundContext() + context.perform { [unowned self, context] in + var bookmarks = [String: [SimpleBookmark]]() + for start in stride(from: 0, to: relativePaths.count, by: 500) { + let fetchRequest = NSFetchRequest(entityName: "Bookmark") + fetchRequest.propertiesToFetch = SimpleBookmark.fetchRequestProperties + fetchRequest.resultType = .dictionaryResultType + fetchRequest.predicate = NSPredicate( + format: "%K IN %@ && type == %d", + #keyPath(Bookmark.item.relativePath), + Array(relativePaths[start.. Double? { return await withCheckedContinuation { continuation in let context = dataManager.getBackgroundContext() @@ -417,32 +510,6 @@ extension LibraryService: LibrarySyncProtocol { } } - public func getItemsToSync(remoteIdentifiers: [String]) async -> [SyncableItem]? { - return await withCheckedContinuation { continuation in - let context = dataManager.getBackgroundContext() - context.perform { [unowned self, context] in - let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: "LibraryItem") - fetchRequest.propertiesToFetch = SyncableItem.fetchRequestProperties - fetchRequest.resultType = .dictionaryResultType - fetchRequest.predicate = NSPredicate( - format: "NOT (%K IN %@)", - #keyPath(LibraryItem.relativePath), - remoteIdentifiers - ) - let sort = NSSortDescriptor( - key: #keyPath(LibraryItem.relativePath), - ascending: true, - selector: #selector(NSString.localizedStandardCompare(_:)) - ) - fetchRequest.sortDescriptors = [sort] - - let results = try? context.fetch(fetchRequest) as? [[String: Any]] - - continuation.resume(returning: parseSyncableItems(from: results, context: context)) - } - } - } - public func getAllNestedItems(inside relativePath: String) -> [SyncableItem]? { let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: "LibraryItem") fetchRequest.propertiesToFetch = SyncableItem.fetchRequestProperties diff --git a/Shared/Services/Sync/LibraryAPI.swift b/Shared/Services/Sync/LibraryAPI.swift index 466a951ec..31a3218c8 100644 --- a/Shared/Services/Sync/LibraryAPI.swift +++ b/Shared/Services/Sync/LibraryAPI.swift @@ -9,7 +9,9 @@ import Foundation public enum LibraryAPI { - case syncedIdentifiers + /// The missing-items pass (bookplayer-api docs/multipart-uploads.md): of every uuid in the + /// local library, which the server has never seen and which are books without a file in S3 + case itemsStatus(uuids: [String]) case contents(path: String) case upload(params: [String: Any]) case externalResource(params: [String: Any]) @@ -42,8 +44,8 @@ public enum LibraryAPI { extension LibraryAPI: Endpoint { public var path: String { switch self { - case .syncedIdentifiers: - return "/v1/library/keys" + case .itemsStatus: + return "/v1/library/status" case .contents: return "/v1/library" case .upload: @@ -87,8 +89,8 @@ extension LibraryAPI: Endpoint { public var method: HTTPMethod { switch self { - case .syncedIdentifiers: - return .get + case .itemsStatus: + return .post case .contents: return .get case .upload: @@ -128,8 +130,8 @@ extension LibraryAPI: Endpoint { public var parameters: [String: Any]? { switch self { - case .syncedIdentifiers: - return nil + case .itemsStatus(let uuids): + return ["uuids": uuids] case .contents(let path): return [ "relativePath": path, diff --git a/Shared/Services/Sync/Model/IdentifiersResponse.swift b/Shared/Services/Sync/Model/IdentifiersResponse.swift deleted file mode 100644 index 91272c5a7..000000000 --- a/Shared/Services/Sync/Model/IdentifiersResponse.swift +++ /dev/null @@ -1,13 +0,0 @@ -// -// IdentifiersResponse.swift -// BookPlayer -// -// Created by gianni.carlo on 6/7/23. -// Copyright © 2023 BookPlayer LLC. All rights reserved. -// - -import Foundation - -struct IdentifiersResponse: Decodable { - let content: [String] -} diff --git a/Shared/Services/Sync/Model/ItemsStatusResponse.swift b/Shared/Services/Sync/Model/ItemsStatusResponse.swift new file mode 100644 index 000000000..20a65808e --- /dev/null +++ b/Shared/Services/Sync/Model/ItemsStatusResponse.swift @@ -0,0 +1,17 @@ +// +// ItemsStatusResponse.swift +// BookPlayer +// +// Created by gianni.carlo on 6/7/23. +// Copyright © 2023 BookPlayer LLC. All rights reserved. +// + +import Foundation + +/// `POST /v1/library/status`: each uuid comes back spelled as it was sent +struct ItemsStatusResponse: Decodable { + /// No row has the uuid, active or deleted: the item needs registering + let unknown: [String] + /// An active book whose file isn't in S3 + let unsynced: [String] +} diff --git a/Shared/Services/Sync/SyncService.swift b/Shared/Services/Sync/SyncService.swift index d70e834e3..a5fa3f13b 100644 --- a/Shared/Services/Sync/SyncService.swift +++ b/Shared/Services/Sync/SyncService.swift @@ -46,14 +46,21 @@ public protocol SyncServiceProtocol { /// Fetch the contents at the relativePath and override local contents with the remote repsonse func syncListContents(at relativePath: String?) async throws - /// Fetch the synced identifiers and upload new local items - /// Note: Should only be called once when the user logs in + /// The first sync: registers what the server is missing (the missing-items pass), then + /// reconciles the library root without deleting anything. Runs after signing in and on + /// coming back from a lapse func syncLibraryContents() async throws func syncBookmarksList(relativePath: String) async throws -> [SimpleBookmark]? - /// Fetch the remote synced identifiers - func fetchSyncedIdentifiers() async throws -> [String] + /// Whether the first sync has registered this device's items (after signing in, or on coming + /// back from a lapse): until then no listing may delete local items + var hasRunFirstSync: Bool { get } + + /// The missing-items pass outside the first sync: once the account becomes PRO (its books' + /// files can now go up), and weekly. Runs only when due, sync is on, the first sync has + /// run and nothing waits in the sync lane; one at a time + func scheduleMissingItemsIfNeeded() async func getRemoteFileURLs( of relativePath: String, @@ -162,6 +169,22 @@ public final class SyncService: SyncServiceProtocol, BPLogger { private var provider: NetworkProvider! + /// Only the phone runs the missing-items pass: the watch has downloaded files of its own + /// and must never upload them + private var runsMissingItemsPass = false + /// One pass at a time: an account update and a list refresh can ask together + private let missingItemsPassLock = NSLock() + private var isRunningMissingItemsPass = false + /// Where the first-sync flag and the pass's schedule live (injected by tests) + private var defaults: UserDefaults = .standard + /// Bumped (under `missingItemsPassLock`) whenever sync goes off: a pass that began earlier + /// can't tell a new session from its own by `isActive` alone if sync came back meanwhile + private var syncSession = 0 + + public var hasRunFirstSync: Bool { + defaults.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents) + } + private var disposeBag = Set() public init() {} @@ -176,12 +199,23 @@ public final class SyncService: SyncServiceProtocol, BPLogger { accountService: AccountServiceProtocol, syncQueueService: SyncQueueServiceProtocol, client: NetworkClientProtocol = NetworkClient(), - streamResolver: ExternalStreamResolving = ExternalStreamResolver() + streamResolver: ExternalStreamResolving = ExternalStreamResolver(), + runsMissingItemsPass: Bool = false, + userDefaults: UserDefaults = .standard ) { self.isActive = isActive + self.runsMissingItemsPass = runsMissingItemsPass + self.defaults = userDefaults self.streamResolver = streamResolver self.libraryService = libraryService self.accountService = accountService + // Signed in but not syncing is a lapse too, usually one that happened while the app was + // closed (the cached entitlement expired), with no transition for updateSyncEnabled to + // see. A paying subscriber whose cached read is stale lands here as well: harmless, the + // first sync never clears queued work and only runs once the sync lane is empty + if runsMissingItemsPass, !isActive, accountService.getAccountId() != nil { + defaults.set(false, forKey: Constants.UserDefaults.hasScheduledLibraryContents) + } self.syncQueueService = syncQueueService self.jobManager = SyncJobScheduler(tasksRepository: syncQueueService.taskContainer) // The queue holds the server lanes until told otherwise: a lapsed account's persisted @@ -247,6 +281,7 @@ public final class SyncService: SyncServiceProtocol, BPLogger { .sink(receiveValue: { [weak self] _ in guard let self, self.accountService.hasAccount() else { return } self.updateSyncEnabled(self.accountService.hasSyncEnabled()) + self.noteProAccess() }) .store(in: &disposeBag) @@ -314,33 +349,43 @@ public final class SyncService: SyncServiceProtocol, BPLogger { guard isActive else { throw BookPlayerError.networkError("Sync is not enabled") } + // Its pass queues this device's files for upload: never from the watch + guard runsMissingItemsPass else { + throw BookPlayerError.runtimeError("The first sync runs on the phone only") + } /// Wait for any in-flight logout teardown to finish before scheduling, so a fast /// logout→login can't have a late `resetAllJobs()` wipe freshly-scheduled jobs. await teardownTask?.value - if await queuedJobsCount() > 0 { - Self.logger.trace("Clearing orphaned tasks before initial library sync") - await resetAllJobs() + // Work queued before sync went off is held, never cleared (a paying subscriber can read + // lapsed at launch): it runs first, so the server has it before it's asked what it's + // missing. The flag stays off meanwhile, and the next root refresh runs this again + guard await queuedJobsCount() == 0 else { + Self.logger.trace("First sync waits for the queued sync tasks") + return } - - Self.logger.trace("Fetching synced library identifiers") - - let fetchedIdentifiers = try await fetchSyncedIdentifiers() - - if let itemsToUpload = await libraryService.getItemsToSync(remoteIdentifiers: fetchedIdentifiers), - !itemsToUpload.isEmpty - { - Self.logger.trace("Scheduling upload tasks") - await handleItemsToUpload(itemsToUpload) + guard beginMissingItemsPass() else { return } + defer { endMissingItemsPass() } + let session = currentSyncSession() + + Self.logger.trace("Registering what the server is missing") + + // By uuid, never by comparing paths: a path that went stale on this device (after a + // lapse, the stalest case) would make the server move its item back + let couldQueueFiles = try await runMissingItemsPass(startsContinuedUploads: true, session: session) + // Sync went off meanwhile (and maybe came back): its teardown wiped what this queued + guard isStillSyncSession(session) else { return } + // Only once its books' files could be queued: an account update may not have given the + // queue its PRO policy yet, and the next root refresh then runs the pass again + if couldQueueFiles { + defaults.set(false, forKey: Constants.UserDefaults.missingItemsPassPending) } let response = try await fetchContents(at: nil) - UserDefaults.standard.set( - true, - forKey: Constants.UserDefaults.hasScheduledLibraryContents - ) + // Checked and written in one step with the session's end, which clears the flag + guard markFirstSyncDone(in: session) else { return } try await processContentsResponse(response, parentFolder: nil, canDelete: false) } @@ -435,12 +480,6 @@ public final class SyncService: SyncServiceProtocol, BPLogger { return libraryService.getBookmarks(of: .user, relativePath: relativePath) } - public func fetchSyncedIdentifiers() async throws -> [String] { - let response: IdentifiersResponse = try await self.provider.request(.syncedIdentifiers) - - return response.content - } - func fetchContents(at relativePath: String?) async throws -> ContentsResponse { let path: String if let relativePath = relativePath { @@ -637,6 +676,9 @@ public final class SyncService: SyncServiceProtocol, BPLogger { self.isActive = enabled self.syncQueueService.setServerLanesEnabled(enabled) if !enabled { + // A lapse makes the return a first sync: what's imported meanwhile never reaches the + // server, and a plain listing would delete it (it isn't on the server) + self.endSyncSession(resettingFirstSync: self.runsMissingItemsPass) self.cancelAllJobs() // Clearing the persisted rows isn't enough (develop parity): an operation // already executing keeps uploading after the lapse without this. Scoped so @@ -656,10 +698,14 @@ public final class SyncService: SyncServiceProtocol, BPLogger { self.isActive = false self.syncQueueService.setServerLanesEnabled(false) } - UserDefaults.standard.set( - false, - forKey: Constants.UserDefaults.hasScheduledLibraryContents - ) + endSyncSession(resettingFirstSync: true) + for key in [ + Constants.UserDefaults.missingItemsPassLastRun, + Constants.UserDefaults.missingItemsPassPending, + Constants.UserDefaults.lastKnownProAccess, + ] { + defaults.removeObject(forKey: key) + } await resetAllJobs() } } @@ -700,7 +746,8 @@ extension SyncService { } extension SyncService { - func handleItemsToUpload(_ items: [SyncableItem]) async { + /// - Parameter announcesUploads: whether queued book files may start the continued task + func handleItemsToUpload(_ items: [SyncableItem], announcesUploads: Bool = true) async { for item in items { await jobManager.scheduleLibraryItemUploadJob(for: item) @@ -711,22 +758,22 @@ extension SyncService { } } - /// Handle bookmarks in separate loop, as the viewContext can be unreliable + /// Bookmarks after every item, read in batches on a background context: a first sync + /// registers the whole library, and this runs off main + let bookmarksByPath = await libraryService.getUserBookmarks(forItemsAt: items.map(\.relativePath)) for item in items { - if let bookmarks = libraryService.getBookmarks(of: .user, relativePath: item.relativePath) { - for bookmark in bookmarks { - await jobManager.scheduleSetBookmarkJob( - with: bookmark.relativePath, - time: floor(bookmark.time), - note: bookmark.note, - for: item.uuid - ) - } + for bookmark in bookmarksByPath[item.relativePath] ?? [] { + await jobManager.scheduleSetBookmarkJob( + with: bookmark.relativePath, + time: floor(bookmark.time), + note: bookmark.note, + for: item.uuid + ) } } // Media-server books have no file to upload from here (theirs goes up once downloaded) - if items.contains(where: { $0.type == .book && $0.mediaServerProviderName == nil }) { + if announcesUploads, items.contains(where: { $0.type == .book && $0.mediaServerProviderName == nil }) { await MainActor.run { NotificationCenter.default.post(name: .bookUploadsQueued, object: nil) } @@ -1107,3 +1154,200 @@ extension SyncService { } } } + +// MARK: - Missing-items pass + +extension SyncService { + /// How often the pass runs without a tier change + static let missingItemsPassInterval: TimeInterval = 7 * 24 * 60 * 60 + + /// The missing-items pass (bookplayer-api docs/multipart-uploads.md): asks the server about + /// every uuid in the local library, registers the items it has never seen like an import + /// and, with S3 access, queues the files of books it holds without one. By uuid, never by + /// path, so a path that went stale on this device can't move anything back. + /// - Parameters: + /// - startsContinuedUploads: whether queued book files may start the continued task (the + /// first sync and a tier change; the weekly run never does) + /// - session: the sync session the caller began in (its own, when nil) + /// - Returns: whether the tier could queue book files (a pending tier change is done) + @discardableResult + func runMissingItemsPass(startsContinuedUploads: Bool, session: Int? = nil) async throws -> Bool { + let session = session ?? currentSyncSession() + guard let localUuids = await libraryService.fetchAllUuids() else { + throw BookPlayerError.runtimeError("Couldn't read the library for the missing-items pass") + } + let status: ItemsStatusResponse = try await provider.request(.itemsStatus(uuids: localUuids)) + // Sync went off while the server answered (and maybe came back): its teardown already ran + guard isStillSyncSession(session) else { return false } + + // A book with an upload queued (parked included) isn't lost: leave it to that task + let queuedUploads = Set(await syncQueueService.taskContainer.getUploadCandidates().map(\.task.uuid)) + + let unknownUuids = status.unknown.filter { !queuedUploads.contains($0) } + var unknownItems = [SyncableItem]() + if !unknownUuids.isEmpty { + guard let items = await libraryService.getSyncableItems(forUuids: unknownUuids) else { + throw BookPlayerError.runtimeError("Couldn't read the items the server is missing") + } + unknownItems = try await matchUuids(of: items) + guard isStillSyncSession(session) else { return false } + await handleItemsToUpload(unknownItems, announcesUploads: false) + } + + // A logout during the registrations: don't queue into the next account's session + guard isStillSyncSession(session) else { return false } + // Read once: the same answer decides whether files are queued and whether a pending tier + // change is done + let canQueueFiles = syncQueueService.accessPolicy[.uploadFile] == true + var queuedFiles = 0 + if canQueueFiles, !status.unsynced.isEmpty { + guard let books = await libraryService.getSyncableItems(forUuids: status.unsynced) else { + throw BookPlayerError.runtimeError("Couldn't read the books the server has no file for") + } + queuedFiles = await syncQueueService.scheduleMissingFileUploads(books.compactMap(Self.missingFileUpload(for:))) + } + + if startsContinuedUploads, + queuedFiles > 0 || unknownItems.contains(where: { $0.type == .book && $0.mediaServerProviderName == nil }) + { + await MainActor.run { + NotificationCenter.default.post(name: .bookUploadsQueued, object: nil) + } + } + + // After a logout, the next account starts with no run on record + guard isStillSyncSession(session) else { return false } + defaults.set(Date().timeIntervalSince1970, forKey: Constants.UserDefaults.missingItemsPassLastRun) + return canQueueFiles + } + + /// Matches the items' uuids by path BEFORE anything registers them: the server may already + /// hold a row at an item's path under no uuid (a legacy row: the server takes ours) or + /// another one (the same file imported on another device: this device adopts it, in the + /// library and every queued task). `PUT /` at such a path would answer with that row without + /// storing our uuid. Done inline, not as a queued job, so every task registered afterwards + /// already carries the uuid the server knows. Returns the items as they now are. + private func matchUuids(of items: [SyncableItem]) async throws -> [SyncableItem] { + var conflicts = [ItemConflict]() + let limit = SyncJobScheduler.matchUuidsBatchLimit + for start in stride(from: 0, to: items.count, by: limit) { + let batch = items[start.. MissingFileUpload? { + guard item.type == .book, item.mediaServerProviderName == nil else { return nil } + let fileURL = DataManager.getProcessedFolderURL().appendingPathComponent(item.relativePath) + guard + let values = try? fileURL.resourceValues(forKeys: [.isRegularFileKey, .fileSizeKey]), + values.isRegularFile == true, + let size = values.fileSize, + Int64(size) <= FileUploadOperation.maxFileSize + else { return nil } + return MissingFileUpload(uuid: item.uuid, relativePath: item.relativePath, fileURL: fileURL) + } + + public func scheduleMissingItemsIfNeeded() async { + guard runsMissingItemsPass, isActive else { return } + // Until then, the first sync is the pass + guard defaults.bool(forKey: Constants.UserDefaults.hasScheduledLibraryContents) else { return } + guard isMissingItemsPassDue() else { return } + + guard beginMissingItemsPass() else { return } + defer { endMissingItemsPass() } + + await teardownTask?.value + let session = currentSyncSession() + // A tier change that arrived during a weekly run runs right after it, not a week later + while isMissingItemsPassDue() { + // Off (a logout or lapse) the pass stops without recording a run: stop with it. Queued + // changes haven't reached the server yet: a queued import would come back unknown and be + // registered twice + guard isStillSyncSession(session), hasRunFirstSync, await jobManager.queuedJobsCount() == 0 else { return } + let isPending = defaults.bool(forKey: Constants.UserDefaults.missingItemsPassPending) + do { + let couldQueueFiles = try await runMissingItemsPass(startsContinuedUploads: isPending, session: session) + guard isPending else { continue } + guard couldQueueFiles else { return } + defaults.set(false, forKey: Constants.UserDefaults.missingItemsPassPending) + } catch { + Self.logger.error("Missing-items pass failed: \(error.localizedDescription)") + return + } + } + } + + private func isMissingItemsPassDue() -> Bool { + let lastRun = defaults.double(forKey: Constants.UserDefaults.missingItemsPassLastRun) + return defaults.bool(forKey: Constants.UserDefaults.missingItemsPassPending) + || Date().timeIntervalSince1970 - lastRun >= Self.missingItemsPassInterval + } + + /// LITE → PRO: the books registered without their file can now upload, so the next pass is + /// due at once (and starts the continued task). Leaving PRO drops a pass still pending. The + /// first reading (an app update, a fresh install, a sign-in) is no tier change: the first + /// sync and the weekly run cover what's missing + func noteProAccess() { + guard runsMissingItemsPass else { return } + let isPro = accountService.getAccessLevel() == .pro + if let wasPro = defaults.object(forKey: Constants.UserDefaults.lastKnownProAccess) as? Bool, wasPro != isPro { + defaults.set(isPro, forKey: Constants.UserDefaults.missingItemsPassPending) + } + defaults.set(isPro, forKey: Constants.UserDefaults.lastKnownProAccess) + Task { await self.scheduleMissingItemsIfNeeded() } + } + + private func beginMissingItemsPass() -> Bool { + missingItemsPassLock.withLock { + guard !isRunningMissingItemsPass else { return false } + isRunningMissingItemsPass = true + return true + } + } + + private func endMissingItemsPass() { + missingItemsPassLock.withLock { isRunningMissingItemsPass = false } + } + + private func currentSyncSession() -> Int { + missingItemsPassLock.withLock { syncSession } + } + + private func isStillSyncSession(_ session: Int) -> Bool { + isActive && missingItemsPassLock.withLock { syncSession == session } + } + + /// Sync went off (a logout, a lapse): the session ends and, where asked, the first-sync + /// flag clears in the same step, so a pass from the old session can't mark itself done after + private func endSyncSession(resettingFirstSync: Bool) { + missingItemsPassLock.withLock { + syncSession += 1 + if resettingFirstSync { + defaults.set(false, forKey: Constants.UserDefaults.hasScheduledLibraryContents) + } + } + } + + private func markFirstSyncDone(in session: Int) -> Bool { + missingItemsPassLock.withLock { + guard isActive, syncSession == session else { return false } + defaults.set(true, forKey: Constants.UserDefaults.hasScheduledLibraryContents) + return true + } + } +} diff --git a/Shared/Services/SyncQueue/SyncQueueRepository.swift b/Shared/Services/SyncQueue/SyncQueueRepository.swift index 18d5b16c8..835bcd7f1 100644 --- a/Shared/Services/SyncQueue/SyncQueueRepository.swift +++ b/Shared/Services/SyncQueue/SyncQueueRepository.swift @@ -45,6 +45,10 @@ public protocol SyncQueueRepositoryProtocol: ModelActor { func hasUploadTask(for relativePath: String) -> Bool + /// Stores each upload-lane task unless its book already has an upload queued in either + /// lane, parked ones included. Returns how many were stored. + func storeFileUploadsIfAbsent(_ parameterList: [[String: Any]]) async throws -> Int + func applyMatchUuidConflicts(_ conflicts: [ItemConflict]) throws func clearAll(in queueKey: String) throws @@ -587,6 +591,53 @@ public actor SyncQueueRepository: SyncQueueRepositoryProtocol, BPLogger { } } + /// Checked and stored in one actor turn, so an upload queued meanwhile can't be doubled. + /// One save and one change notice for the whole batch: a LITE → PRO backlog can be + /// thousands of books, and a store per task would hold the actor for each of them + public func storeFileUploadsIfAbsent(_ parameterList: [[String: Any]]) async throws -> Int { + var queued = Set(getUploadCandidates().map(\.task.uuid)) + let context = modelContext + let containers = try context.fetch(FetchDescriptor()) + let tasksContainer = containers.first ?? SyncQueueContainer() + if containers.isEmpty { + context.insert(tasksContainer) + } + var nextPosition = (tasksContainer.tasks.map(\.position).max() ?? -1) + 1 + var stored = 0 + for parameters in parameterList { + guard + let taskId = parameters["id"] as? String, + let uuid = parameters["uuid"] as? String, + !queued.contains(uuid) + else { continue } + // Upload-lane tasks never coalesce: each is its book's one upload + tasksDataManager.createTaskModel(for: .uploadFile, with: parameters, in: context) + let taskReference = QueuedTaskReferenceModel( + queueKey: TaskQueueKey.uploadFile, + taskID: taskId, + jobType: .uploadFile, + position: nextPosition, + uuid: uuid, + relativePath: parameters["relativePath"] as? String ?? "" + ) + tasksContainer.tasks.append(taskReference) + taskReference.container = tasksContainer + nextPosition += 1 + queued.insert(uuid) + stored += 1 + } + guard stored > 0 else { return 0 } + + try context.save() + tasksDataManager.notifyTasksChanged(context: context) + NotificationCenter.default.post( + name: .newTaskInQueue, + object: nil, + userInfo: ["queueKey": TaskQueueKey.uploadFile] + ) + return stored + } + /// Check if there's an upload task queued for the item public func hasUploadTask(for relativePath: String) -> Bool { do { diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index 9fb844da6..e75e5fa15 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -10,6 +10,20 @@ import Foundation import Combine import CoreData +/// A book the server holds without its file, for the upload lane +public struct MissingFileUpload: Sendable, Equatable { + public let uuid: String + public let relativePath: String + /// The book's current Processed file + public let fileURL: URL + + public init(uuid: String, relativePath: String, fileURL: URL) { + self.uuid = uuid + self.relativePath = relativePath + self.fileURL = fileURL + } +} + public protocol SyncQueueServiceProtocol { var accessPolicy: [SyncJobType: Bool] { get set } @@ -42,6 +56,13 @@ public protocol SyncQueueServiceProtocol { func scheduleFileUpload(params: [String: Any]) + /// Queues the files of books the server holds without one (the missing-items pass), by + /// uuid, skipping any book with an upload already queued. Returns how many were queued. + func scheduleMissingFileUploads(_ uploads: [MissingFileUpload]) async -> Int + + /// Adopts the server's uuids for items it holds under another one (a `matchUuid` answer): + /// in the library, then in every queued task + func applyUuidConflicts(_ conflicts: [ItemConflict]) async throws /// Cancels in-flight BookPlayer-server operations (serial sync + S3 uploads) on a /// subscription lapse, leaving the tier-independent externalUpdate operations running. @@ -743,11 +764,19 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } } + public func applyUuidConflicts(_ conflicts: [ItemConflict]) async throws { + // The same local uuid can come back twice (two rows sharing it): adopt the first answer + var seen = Set() + let conflicts = conflicts.filter { seen.insert($0.key).inserted } + guard !conflicts.isEmpty else { return } + try await applyCoreDataConflicts(conflicts) + try await taskContainer.applyMatchUuidConflicts(conflicts) + } + private func handleMatchUuidsResponse(_ results: MatchUuidsResponse) async { guard !results.conflicts.isEmpty else { return } do { - try await applyCoreDataConflicts(results.conflicts) - try await taskContainer.applyMatchUuidConflicts(results.conflicts) + try await applyUuidConflicts(results.conflicts) } catch { Self.logger.error("Failed to apply matchUuid conflicts: \(error.localizedDescription)") await MainActor.run { @@ -881,6 +910,28 @@ extension SyncQueueService { Task { await storeFileUpload(params: params) } } + public func scheduleMissingFileUploads(_ uploads: [MissingFileUpload]) async -> Int { + guard accessPolicy[.uploadFile] == true, !uploads.isEmpty else { return 0 } + // The Processed file itself, not a temp hard link: the engine never deletes a source + // outside tmp, and finds the book again by uuid if it moves + let parameterList: [[String: Any]] = uploads.map { upload in + [ + "id": UUID().uuidString, + "jobType": SyncJobType.uploadFile.rawValue, + "queueKey": TaskQueueKey.uploadFile, + "uuid": upload.uuid, + "relativePath": upload.relativePath, + "filePath": upload.fileURL.absoluteString, + ] + } + do { + return try await taskContainer.storeFileUploadsIfAbsent(parameterList) + } catch { + Self.logger.error("Failed to queue the missing file uploads: \(error)") + return 0 + } + } + /// `scheduleFileUpload`, awaited: returns once the task is stored private func storeFileUpload(params: [String: Any]) async { guard accessPolicy[.uploadFile] == true else { From 64d516b2877e4164c48baaff301e970c5695d4be Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Wed, 30 Sep 2026 14:27:07 -0500 Subject: [PATCH 170/172] fix(sync): a Retry registers a lost upload again An upload whose book the server lost is re-registered once per session; a second item_not_found parks it, so re-registering can't cycle. A Retry of that park parked again at once until the app relaunched. The user asked for the upload, so a Retry now clears the book's mark and it is registered once more. --- BookPlayerTests/Services/SyncQueueTests.swift | 42 +++++++++++++++++++ CLAUDE.md | 3 +- .../Services/SyncQueue/SyncQueueService.swift | 7 ++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index df9bfbd86..c04c0ec42 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -1178,6 +1178,48 @@ extension SyncQueueTests { XCTAssertEqual(tasks.first?.pause?.scope, .task) } + /// A Retry asks for the upload again: the book is handed back once more although it + /// already was this session (gone locally here, so dropped) instead of parking again + func testRetry_ofALostUploadThatParked_registersItAgain() async throws { + let service = makeGatedEngine() + let lost = BookPlayerError.networkErrorWithCode(message: "gone", code: "item_not_found", status: 404) + service.networkClient = FailingNetworkClient( + errors: [lost, lost, lost] + Array(repeating: URLError(.timedOut), count: 50) + ) + let uuid = UUID().uuidString + service.findSyncableItem = { _ in nil } + for id in ["first", "second"] { + let link = FileManager.default.temporaryDirectory.appendingPathComponent("retry-\(id)-\(UUID().uuidString).m4b") + try Data("0123456789".utf8).write(to: link) + var params = uploadFileParams(id: id) + params["filePath"] = link.absoluteString + params["uuid"] = uuid + try await repository.storeTask(parameters: params) + } + + service.setServerLanesEnabled(true) + + var deadline = Date().addingTimeInterval(10) + var tasks = [QueuedSyncTask]() + while Date() < deadline { + tasks = await repository.getAllTasks() + if tasks.map(\.id) == ["second"], tasks.first?.pause != nil { break } + try await Task.sleep(for: .milliseconds(50)) + } + XCTAssertEqual(tasks.first?.pause?.errorCode, "item_not_found", "parked before the Retry") + + await service.retryPausedTask(id: "second") + + deadline = Date().addingTimeInterval(10) + while Date() < deadline { + tasks = await repository.getAllTasks() + if tasks.isEmpty || tasks.first?.pause != nil { break } + try await Task.sleep(for: .milliseconds(50)) + } + service.setServerLanesEnabled(false) + XCTAssertTrue(tasks.isEmpty, "handed back again (dropped: gone locally), not parked again") + } + /// Only a media-server link marks a book as streamed: a Hardcover link has no file and /// must not stop the book's own file from uploading func testUploadJob_flagsOnlyMediaServerBooksAsProviderBacked() async throws { diff --git a/CLAUDE.md b/CLAUDE.md index f59b99abf..15bd548f8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -416,7 +416,8 @@ lines). It is the highest-risk file in the app. bookmarks, like `SyncService.handleItemsToUpload` — before the task is popped, or dropped when it's gone locally too. Always re-register (decided): a book deleted on another device mid-upload can come back. A SECOND `item_not_found` for the same uuid in a session parks it (re-registering didn't help: e.g. another uuid holds - its key on the server). Only a MEDIA-SERVER link (`SyncableItem.mediaServerProviderName`, never Hardcover) marks an + its key on the server). A Retry of that parked upload clears the mark (decided: the user asked for the upload), + so the book is registered once more instead of parking again. Only a MEDIA-SERVER link (`SyncableItem.mediaServerProviderName`, never Hardcover) marks an `.upload` as provider-backed (its answer then schedules no file); such a book's file goes up once downloaded through the sync-lane `externalResourceToDownload` job, which just schedules the upload (the old `external_set` route is gone; `complete` marks the resources downloaded). diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index e75e5fa15..ca43f8098 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -575,6 +575,13 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { } public func retryPausedTask(id: String) async { + // An explicit Retry of an upload asks for the book again: it gets another + // re-registration even if it already had one this session + if let task = await taskContainer.getAllTasks().first(where: { $0.id == id }), + task.jobType == .uploadFile, + task.pause != nil { + stateLock.withLock { _ = handedBackUuids.remove(task.uuid) } + } await taskContainer.resume(taskId: id) wakeUpWorkers() } From 017e5e38721582dcd222a472f0c27bf46b27ca4d Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 1 Oct 2026 09:11:56 -0500 Subject: [PATCH 171/172] fix(sync): don't report a too-large book's park to Sentry A book over 10 GiB parks as file_too_large: the app's own limit, shown with a Dismiss action. It's an expected state with nothing to fix, so the park no longer posts .syncTaskPaused and never reaches Sentry. --- BookPlayerTests/Services/SyncQueueTests.swift | 8 +++++++- CLAUDE.md | 2 +- Shared/Services/SyncQueue/SyncQueueService.swift | 10 +++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/BookPlayerTests/Services/SyncQueueTests.swift b/BookPlayerTests/Services/SyncQueueTests.swift index c04c0ec42..5a88b8d54 100644 --- a/BookPlayerTests/Services/SyncQueueTests.swift +++ b/BookPlayerTests/Services/SyncQueueTests.swift @@ -1054,9 +1054,14 @@ extension SyncQueueTests { extension SyncQueueTests { /// End to end through the engine: the upload task's operation runs, its local refusal - /// reaches the parking policy, and the task parks alone with the app's own reason + /// reaches the parking policy, and the task parks alone with the app's own reason, + /// unreported (an expected limit, not a failure) func testTooLargeUpload_parksTheTaskWithItsLocalReason() async throws { let service = makeGatedEngine() + let reported = expectation(forNotification: .syncTaskPaused, object: nil) { note in + (note.object as? QueuedSyncTask)?.id == "huge" + } + reported.isInverted = true let link = FileManager.default.temporaryDirectory.appendingPathComponent("huge-\(UUID().uuidString).m4b") FileManager.default.createFile(atPath: link.path, contents: nil) let handle = try FileHandle(forWritingTo: link) @@ -1080,6 +1085,7 @@ extension SyncQueueTests { XCTAssertEqual(pause?.errorCode, "file_too_large") XCTAssertNil(pause?.httpStatus) XCTAssertTrue(FileManager.default.fileExists(atPath: link.path), "the link stays for a Retry") + await fulfillment(of: [reported], timeout: 0.5) } } diff --git a/CLAUDE.md b/CLAUDE.md index 15bd548f8..042f7cb08 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -293,7 +293,7 @@ CarPlay event bus. Declared in `Shared/Extensions/Notification+BookPlayerKit.swi can put a resumed task ahead of it) are never coalescing targets. Retry = one automatic resume at launch (`setup`) plus `retryPausedTask(id:)`; there is deliberately no Skip. A first park posts `.syncTaskPaused`, skipped when the row already carries a `sentryEventId` (recorded via `recordPauseReport`; - it survives resumes). The app-target `SyncPauseReporter` (owned by `AppServices`) turns it into ONE Sentry + it survives resumes) and for a too-large book (decided: an expected limit, nothing to act on). The app-target `SyncPauseReporter` (owned by `AppServices`) turns it into ONE Sentry warning per task, fingerprint `["sync-paused", jobType, errorCode]`, with a minimal payload (job type, code, status, lane, scope, item uuid) — **never the server message or a path: both embed file names**. The Queued Tasks row of a parked task shows the server's message with Retry and Report; Report mails (or, without Mail, diff --git a/Shared/Services/SyncQueue/SyncQueueService.swift b/Shared/Services/SyncQueue/SyncQueueService.swift index ca43f8098..374661337 100644 --- a/Shared/Services/SyncQueue/SyncQueueService.swift +++ b/Shared/Services/SyncQueue/SyncQueueService.swift @@ -476,7 +476,15 @@ public class SyncQueueService: SyncQueueServiceProtocol, BPLogger { Self.logger.error("Dropping \(task.jobType.rawValue) task \(task.id): the server answered \(code)") await taskContainer.pop(task) case .park(let scope): - await park(task, scope: scope, code: code, message: message, status: status) + // A too-large book is the app's own limit, not a failure: nothing to report + await park( + task, + scope: scope, + code: code, + message: message, + status: status, + report: code != UploadFileError.fileTooLarge.code + ) case .verifyAccount: // Every server lane holds from here: the rejection is about the account, so the // next task would get the same answer From b52d79a244c844fc7c1e92f5650f418a7b7bb4d1 Mon Sep 17 00:00:00 2001 From: Gianni Carlo Date: Thu, 1 Oct 2026 10:46:33 -0500 Subject: [PATCH 172/172] docs: CLAUDE.md matches CI on Xcode 27, the iOS 26 minimum and current packages The CI section still described the macos-26 runner and Xcode 26.4; the workflow moved to the xcode-27 runner because the upload code needs the iOS 27 SDK. Also records the deployment targets (iOS 26.0, watchOS 10.0) and the current package requirements (RevenueCat ~5.78, Kingfisher ~8.10, Get). --- CLAUDE.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 042f7cb08..81c40e177 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -48,6 +48,10 @@ Nine native targets in `BookPlayer.xcodeproj` (no `Package.swift`, no app `.xcwo | `BookPlayerShareExtension` | app-extension | Share-sheet import | `BookPlayerShareExtension/` | | `BookPlayerTests` | "Audiobook PlayerTests" · unit-test | Unit + perf tests | `BookPlayerTests/` | +**Deployment targets:** iOS **26.0** for every iOS target, watchOS **10.0** for the watch app, `BookPlayerWatchKit` +and the watch widgets. An `#available(iOS 18…26)` check is dead code on iOS, but `Shared/` and the shared widget +files also compile for watchOS 10, so an iOS-only API there still needs its `#if os(iOS)` / availability guard. + **Dependency rule:** app → `BookPlayerKit` (`import BookPlayerKit`). `Shared/` must **not** import app-layer types — that breaks the framework boundary and is a 🔴 finding. Watch/shared code selects the framework with: @@ -65,8 +69,8 @@ App Intents in the top-level `BookPlayer/BookPlayer/AppIntents/` folder — don' ### Dependencies (SPM, declared inside `project.pbxproj`) -RevenueCat (`purchases-ios`, ~5.33), Sentry (`sentry-cocoa`, **exact 8.36.0**), Kingfisher (~7.9), -JellyfinAPI (`jellyfin-sdk-swift`, ~0.4), MarqueeLabel (~4.0.5), DeviceKit (~5.1), +RevenueCat (`purchases-ios`, ~5.78), Sentry (`sentry-cocoa`, **exact 8.36.0**), Kingfisher (~8.10), +JellyfinAPI (`jellyfin-sdk-swift`, ~0.4), Get (~2.2), MarqueeLabel (~4.0.5), DeviceKit (~5.1), IDZSwiftCommonCrypto (~0.13.1), Themeable (~3.0), ZipArchive (~2.3), DirectoryWatcher (~2.8.6). `BlurHashDecode.swift` is vendored (SwiftLint-excluded). RevenueCat + Kingfisher link into the **frameworks**; most others link into the **app**. SwiftLint runs as a build-phase run-script; **Sourcery is run manually** (not @@ -76,10 +80,13 @@ a build phase) and its output is committed. ## Build, CI & tooling (what the tools own — don't hand-police it) -- **CI** (`.github/workflows/ci.yml`): runner `macos-26`, **Xcode 26.4**, `build-for-testing` then +- **CI** (`.github/workflows/ci.yml`): runner `xcode-27` (GitHub's preview image), **Xcode 27.0** + (`/Applications/Xcode_27.0.app`, set with `xcode-select`). Xcode 27 is required: the upload code calls iOS 27 + SDK APIs behind `#available` (`BGTaskScheduler.submitTaskRequest`), which Xcode 26 can't compile. It copies + `Debug.template.xcconfig` → `Debug.xcconfig`, resolves SPM, resets the simulators, then `build-for-testing` and `test-without-building` with the **`Unit Tests`** test plan, `-only-testing:BookPlayerTests`, simulator - `iPhone 17`. It first copies `Debug.template.xcconfig` → `Debug.xcconfig`. Triggers on push to `main`/`develop` - and PRs to `develop`. + `iPhone 17`. Triggers on push to `main`/`develop` and PRs to `develop`. Release builds come from Xcode Cloud + (`ci_scripts/`), whose Xcode version is set in App Store Connect and must be 27 too. - **Lint/format is enforced by tools — do NOT flag style they own.** `.swiftlint.yml` **disables**: `line_length`, `identifier_name`, `type_name`, `type_body_length`, `file_length`, `nesting`, `force_try`, `trailing_comma`, `trailing_newline`, `trailing_whitespace`, `switch_case_alignment`, `private_over_fileprivate`, `opening_brace`,