Showing preview only (4,856K chars total). Download the full file or copy to clipboard to get everything.
Repository: quran/quran-ios
Branch: main
Commit: 91948a747adf
Files: 825
Total size: 4.4 MB
Directory structure:
gitextract_dc9d8v7i/
├── .github/
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .swift-version
├── .swiftformat
├── .swiftlint.yml
├── .swiftpm/
│ └── xcode/
│ └── xcshareddata/
│ └── xcschemes/
│ ├── AllTargetsTests.xcscheme
│ ├── AnnotationsService.xcscheme
│ ├── AppStructureFeature.xcscheme
│ ├── BatchDownloader.xcscheme
│ ├── BookmarksFeature.xcscheme
│ ├── Caching.xcscheme
│ ├── Crashing.xcscheme
│ ├── HomeFeature.xcscheme
│ ├── LastPagePersistence.xcscheme
│ ├── Localization.xcscheme
│ ├── MoreMenuFeature.xcscheme
│ ├── NetworkSupport.xcscheme
│ ├── NoorUI.xcscheme
│ ├── NotePersistence.xcscheme
│ ├── NotesFeature.xcscheme
│ ├── OAuthServiceAppAuthImpl.xcscheme
│ ├── PageBookmarkPersistence.xcscheme
│ ├── Preferences.xcscheme
│ ├── QuranAudioKit.xcscheme
│ ├── QuranEngine-Package.xcscheme
│ ├── QuranImageFeature.xcscheme
│ ├── QuranKit.xcscheme
│ ├── QuranPagesFeature.xcscheme
│ ├── QuranTextKit.xcscheme
│ ├── QuranTextKitTests.xcscheme
│ ├── QuranTranslationFeature.xcscheme
│ ├── ReadingSelectorFeature.xcscheme
│ ├── ReadingService.xcscheme
│ ├── ReciterListFeature.xcscheme
│ ├── SQLitePersistence.xcscheme
│ ├── SearchFeature.xcscheme
│ ├── SettingsFeature.xcscheme
│ ├── SystemDependencies.xcscheme
│ ├── SystemDependenciesFake.xcscheme
│ ├── Timing.xcscheme
│ ├── TranslationService.xcscheme
│ ├── TranslationsFeature.xcscheme
│ ├── UIx.xcscheme
│ ├── Utilities.xcscheme
│ ├── UtilitiesTests.xcscheme
│ ├── VLogging.xcscheme
│ └── VersionUpdater.xcscheme
├── AllTargetsTests/
│ └── Empty.swift
├── Core/
│ ├── Analytics/
│ │ └── AnalyticsLibrary.swift
│ ├── AppMigrator/
│ │ ├── Sources/
│ │ │ ├── AppMigrator.swift
│ │ │ └── AppVersionUpdater.swift
│ │ └── Tests/
│ │ └── AppMigratorTests.swift
│ ├── AsyncUtilitiesForTesting/
│ │ ├── AsyncAlgorithms++.swift
│ │ ├── AsyncAsserts.swift
│ │ ├── PublisherCollector.swift
│ │ ├── XCTestCase+PromiseKit.swift
│ │ └── XCTestCase+Publisher.swift
│ ├── Caching/
│ │ ├── Sources/
│ │ │ ├── Cache.swift
│ │ │ ├── OperationCacheableService.swift
│ │ │ └── PagesCacheableService.swift
│ │ └── Tests/
│ │ ├── CacheTests.swift
│ │ ├── OperationCacheableServiceTests.swift
│ │ └── PagesCacheableServiceTests.swift
│ ├── Crashing/
│ │ ├── Crasher.swift
│ │ └── Global.swift
│ ├── Localization/
│ │ ├── Localizations.swift
│ │ ├── NumberFormatter+Extension.swift
│ │ ├── Resources/
│ │ │ ├── ar.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── de.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── en.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── es.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── fa.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── fr.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── kk.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── ms.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ └── Readers.strings
│ │ │ ├── nl.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── pt.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ └── Readers.strings
│ │ │ ├── ru.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── tr.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── ug.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── uz.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ ├── vi.lproj/
│ │ │ │ ├── Android.strings
│ │ │ │ ├── Android.stringsdict
│ │ │ │ ├── Localizable.strings
│ │ │ │ ├── Readers.strings
│ │ │ │ └── Suras.strings
│ │ │ └── zh.lproj/
│ │ │ ├── Android.strings
│ │ │ ├── Android.stringsdict
│ │ │ └── Localizable.strings
│ │ └── resource_bundle.swift
│ ├── Locking/
│ │ ├── NSLocking+Extension.swift
│ │ └── Protected.swift
│ ├── OAuthService/
│ │ └── OAuthService.swift
│ ├── OAuthServiceAppAuthImpl/
│ │ └── OAuthServiceAppAuthImpl.swift
│ ├── OAuthServiceFake/
│ │ └── OAuthServiceFake.swift
│ ├── Preferences/
│ │ ├── Preference.swift
│ │ ├── PreferenceKey.swift
│ │ ├── PreferenceTransformer.swift
│ │ └── Preferences.swift
│ ├── QueuePlayer/
│ │ ├── AudioInterruptionMonitor.swift
│ │ ├── AudioPlayer.swift
│ │ ├── AudioPlaying.swift
│ │ ├── AudioRequest.swift
│ │ ├── NowPlayingUpdater.swift
│ │ ├── Player.swift
│ │ ├── PlayerItemInfo.swift
│ │ ├── QueuePlayer.swift
│ │ └── Runs.swift
│ ├── SecurePersistence/
│ │ └── SecurePersistence.swift
│ ├── SystemDependencies/
│ │ ├── EventObserver.swift
│ │ ├── FileSystem.swift
│ │ ├── KeychainAccess.swift
│ │ ├── PersistentHistoryTransaction.swift
│ │ ├── SystemBundle.swift
│ │ ├── SystemTime.swift
│ │ └── Zipper.swift
│ ├── SystemDependenciesFake/
│ │ ├── AsyncChannelEventObserver.swift
│ │ ├── FileSystemFake.swift
│ │ ├── KeychainAccessFake.swift
│ │ ├── PersistentHistoryTransactionFake.swift
│ │ ├── SystemBundleFake.swift
│ │ ├── SystemTimeFake.swift
│ │ └── ZipperFake.swift
│ ├── Timing/
│ │ └── Timer.swift
│ ├── Utilities/
│ │ ├── Sources/
│ │ │ ├── Extensions/
│ │ │ │ ├── Array+Extension.swift
│ │ │ │ ├── Error+Extension.swift
│ │ │ │ ├── FileManager+Extension.swift
│ │ │ │ ├── Int+Extension.swift
│ │ │ │ ├── Result+Extension.swift
│ │ │ │ ├── Sequence+Extension.swift
│ │ │ │ ├── String+Chunking.swift
│ │ │ │ ├── String+Extension.swift
│ │ │ │ ├── Task+Extension.swift
│ │ │ │ └── URL+Extension.swift
│ │ │ └── Features/
│ │ │ ├── Address.swift
│ │ │ ├── AsyncInitializer.swift
│ │ │ ├── AsyncPublisher.swift
│ │ │ ├── AsyncThrowingPublisher.swift
│ │ │ ├── Attempt.swift
│ │ │ ├── Locking.swift
│ │ │ ├── MultiPredicateComparer.swift
│ │ │ ├── MulticastContinuation.swift
│ │ │ ├── Pair.swift
│ │ │ └── RelativeFilePath.swift
│ │ └── Tests/
│ │ ├── AsyncPublisherTests.swift
│ │ ├── AsyncThrowingPublisherTests.swift
│ │ ├── String+ChunkingTests.swift
│ │ └── String+ExtensionTests.swift
│ ├── VLogging/
│ │ └── Logger.swift
│ └── WeakSet/
│ ├── UnsafeWeakSet.swift
│ └── WeakSet.swift
├── Data/
│ ├── AudioTimingPersistence/
│ │ ├── AyahTimingPersistence.swift
│ │ └── GRDBAyahTimingPersistence.swift
│ ├── AuthenticationClient/
│ │ ├── Sources/
│ │ │ ├── AuthenticationClient.swift
│ │ │ ├── AuthenticationClientMobileSyncImpl.swift
│ │ │ └── AuthentincationClientImpl.swift
│ │ └── Tests/
│ │ └── AuthenticationClientTests.swift
│ ├── BatchDownloader/
│ │ ├── Sources/
│ │ │ ├── DownloadProgress.swift
│ │ │ ├── Downloader/
│ │ │ │ ├── DownloadBatchDataController.swift
│ │ │ │ ├── DownloadBatchResponse.swift
│ │ │ │ ├── DownloadManager.swift
│ │ │ │ ├── DownloadSessionDelegate.swift
│ │ │ │ ├── DownloadsObserver.swift
│ │ │ │ ├── DownloadsPersistence.swift
│ │ │ │ └── GRDBDownloadsPersistence.swift
│ │ │ ├── Entities/
│ │ │ │ ├── Download.swift
│ │ │ │ └── DownloadRequest.swift
│ │ │ └── Errors/
│ │ │ └── FileSystemError.swift
│ │ └── Tests/
│ │ ├── DownloadManagerTests.swift
│ │ └── HistoryProgressListener.swift
│ ├── BatchDownloaderFake/
│ │ └── BatchDownloaderFake.swift
│ ├── CoreDataModel/
│ │ ├── Quran.xcdatamodeld/
│ │ │ └── Quran.xcdatamodel/
│ │ │ └── contents
│ │ ├── Resources.swift
│ │ └── Schema.swift
│ ├── CoreDataPersistence/
│ │ ├── Sources/
│ │ │ ├── CoreDataPersistentHistoryProcessor.swift
│ │ │ ├── CoreDataPublisher.swift
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── CoreDataTypes.swift
│ │ │ ├── NSManagedObjectContext+Extensions.swift
│ │ │ └── merging/
│ │ │ ├── CoreDataEntityUniquifier.swift
│ │ │ ├── CoreDataInsertedEntitiesRetriever.swift
│ │ │ ├── CoreDataPersistentHistoryTransactionsMerger.swift
│ │ │ └── SimpleCoreDataEntityUniquifier.swift
│ │ └── Tests/
│ │ ├── CoreDataInsertedEntitiesRetrieverTests.swift
│ │ ├── CoreDataPublisherTests.swift
│ │ ├── CoreDataStackTests.swift
│ │ └── SimpleCoreDataEntityUniquifierTests.swift
│ ├── CoreDataPersistenceTestSupport/
│ │ ├── CoreDataStack+Extensions.swift
│ │ ├── LastPage+++.swift
│ │ ├── Note+++.swift
│ │ └── PageBookmark+++.swift
│ ├── LastPagePersistence/
│ │ ├── Sources/
│ │ │ ├── CoreDataLastPageOverflowHandler.swift
│ │ │ ├── CoreDataLastPagePersistence.swift
│ │ │ ├── CoreDataLastPageUniquifier.swift
│ │ │ ├── LastPagePersistence.swift
│ │ │ └── LastPagePersistenceModel.swift
│ │ └── Tests/
│ │ ├── CoreDataLastPagePersistenceTests.swift
│ │ └── CoreDataLastPageUniquifierTests.swift
│ ├── LinePagePersistence/
│ │ ├── Sources/
│ │ │ ├── GRDBLinePagePersistence.swift
│ │ │ ├── LinePageModels.swift
│ │ │ └── LinePagePersistence.swift
│ │ └── Tests/
│ │ └── LinePagePersistenceTests.swift
│ ├── NetworkSupport/
│ │ ├── Sources/
│ │ │ ├── NetworkError.swift
│ │ │ ├── NetworkManager.swift
│ │ │ └── NetworkSession.swift
│ │ └── Tests/
│ │ └── NetworkManagerTests.swift
│ ├── NetworkSupportFake/
│ │ └── NetworkSessionFake.swift
│ ├── NotePersistence/
│ │ ├── Sources/
│ │ │ ├── CoreDataNotePersistence.swift
│ │ │ ├── CoreDataNoteUniquifier.swift
│ │ │ ├── NotePersistence.swift
│ │ │ └── NotePersistenceModel.swift
│ │ └── Tests/
│ │ ├── CoreDataNotePersistenceTests.swift
│ │ └── CoreDataNoteUniquifierTests.swift
│ ├── PageBookmarkPersistence/
│ │ ├── Sources/
│ │ │ ├── CoreDataPageBookmarkPersistence.swift
│ │ │ ├── CoreDataPageBookmarkUniquifier.swift
│ │ │ ├── MobileSyncPageBookmarkPersistence.swift
│ │ │ ├── PageBookmarkPersistence.swift
│ │ │ └── PageBookmarkPersistenceModel.swift
│ │ └── Tests/
│ │ └── CoreDataPageBookmarkPersistenceTests.swift
│ ├── SQLitePersistence/
│ │ ├── Sources/
│ │ │ ├── DatabaseConnection.swift
│ │ │ └── PersistenceError.swift
│ │ └── Tests/
│ │ └── DatabaseConnectionTests.swift
│ ├── SyncedPageBookmarkPersistence/
│ │ ├── Sources/
│ │ │ ├── GRDBSyncedPageBookmarkPersistence.swift
│ │ │ ├── SyncedPageBookmarkPersistence.swift
│ │ │ └── SyncedPageBookmarkPersistenceModel.swift
│ │ └── Tests/
│ │ └── GRDBSyncedPageBookmarkPersistenceTests.swift
│ ├── TranslationPersistence/
│ │ ├── ActiveTranslationsPersistence.swift
│ │ └── GRDBActiveTranslationsPersistence.swift
│ ├── VerseTextPersistence/
│ │ ├── DatabaseVersionPersistence.swift
│ │ ├── GRDBDatabaseVersionPersistence.swift
│ │ ├── GRDBVerseTextPersistence.swift
│ │ └── VerseTextPersistence.swift
│ ├── WordFramePersistence/
│ │ ├── GRDBWordFramePersistence.swift
│ │ └── WordFramePersistence.swift
│ └── WordTextPersistence/
│ ├── GRDBWordTextPersistence.swift
│ └── WordTextPersistence.swift
├── Documentation/
│ └── MobileSyncLocalDevelopment.md
├── Domain/
│ ├── AnnotationsService/
│ │ ├── Sources/
│ │ │ ├── AnalyticsLibrary+Events.swift
│ │ │ ├── LastPageService.swift
│ │ │ ├── LastPageUpdater.swift
│ │ │ ├── NoteService.swift
│ │ │ ├── PageBookmarkService.swift
│ │ │ └── QuranHighlightsService.swift
│ │ └── Tests/
│ │ └── EmptyTests.swift
│ ├── AudioTimingService/
│ │ └── ReciterTimingRetriever.swift
│ ├── AudioUpdater/
│ │ ├── Sources/
│ │ │ ├── AudioUpdate.swift
│ │ │ ├── AudioUpdatePreferences.swift
│ │ │ ├── AudioUpdater.swift
│ │ │ ├── AudioUpdatesNetworkManager.swift
│ │ │ └── MD5Calculator.swift
│ │ └── Tests/
│ │ └── AudioUpdaterTests.swift
│ ├── ImageService/
│ │ ├── Sources/
│ │ │ ├── ImageDataService.swift
│ │ │ ├── LinePageAssetService.swift
│ │ │ ├── LinePageGeometry.swift
│ │ │ └── LinePageWordFrameAdapter.swift
│ │ └── Tests/
│ │ ├── ImageDataServiceTests.swift
│ │ ├── LinePageAssetServiceTests.swift
│ │ ├── LinePageGeometryTests.swift
│ │ ├── LinePageWordFrameAdapterTests.swift
│ │ ├── WordFrameTests.swift
│ │ └── __Snapshots__/
│ │ └── ImageDataServiceTests/
│ │ ├── testGettingImageAtPage1.2.json
│ │ ├── testGettingImageAtPage3.2.json
│ │ └── testGettingImageAtPage604.2.json
│ ├── QuranAudioKit/
│ │ ├── Sources/
│ │ │ ├── AudioPlayer/
│ │ │ │ ├── GaplessAudioRequestBuilder.swift
│ │ │ │ ├── GappedAudioRequestBuilder.swift
│ │ │ │ ├── QuranAudioPlayer.swift
│ │ │ │ └── QuranAudioRequestBuilder.swift
│ │ │ ├── Dependencies/
│ │ │ │ └── QueuingPlayer.swift
│ │ │ ├── Downloads/
│ │ │ │ ├── Download+Types.swift
│ │ │ │ └── QuranAudioDownloader.swift
│ │ │ └── Preferences/
│ │ │ ├── AudioEnd+Localization.swift
│ │ │ ├── AudioPreferences.swift
│ │ │ └── PreferencesLastAyahFinder.swift
│ │ └── Tests/
│ │ ├── AudioRequest+Extension.swift
│ │ ├── GaplessAudioRequestBuilderTests.swift
│ │ ├── GappedAudioRequestBuilderTests.swift
│ │ ├── QueuePlayerFake.swift
│ │ ├── QuranAudioDownloaderTests.swift
│ │ ├── QuranAudioPlayerDelegateClosures.swift
│ │ ├── QuranAudioPlayerTests.swift
│ │ └── __Snapshots__/
│ │ └── QuranAudioPlayerTests/
│ │ ├── testPlayingDownloadedGaplessReciter1FullSura.1.json
│ │ ├── testPlayingDownloadedGaplessReciter1SuraEndsEarly.1.json
│ │ ├── testPlayingDownloadedGaplessReciter1SurasHasEndTimestamp.1.json
│ │ ├── testPlayingDownloadedGaplessReciter1SurasHasEndTimestampStopBeforeEnd.1.json
│ │ ├── testPlayingDownloadedGaplessReciter2Suras1stSuraHasEndTimestamp.1.json
│ │ ├── testPlayingDownloadedGaplessReciter3FullSura.1.json
│ │ ├── testPlayingDownloadedGappedReciter1FullSura.1.json
│ │ ├── testPlayingDownloadedGappedReciter1SuraEndsEarly.1.json
│ │ ├── testPlayingDownloadedGappedReciter3FullSura.1.json
│ │ └── testPlayingDownloadedGappedReciterAtTawbah.1.json
│ ├── QuranResources/
│ │ └── QuranResources.swift
│ ├── QuranTextKit/
│ │ ├── Sources/
│ │ │ ├── Localization/
│ │ │ │ └── QuranKit+Localization.swift
│ │ │ ├── Preferences/
│ │ │ │ ├── FontSizePreferences.swift
│ │ │ │ └── QuranContentStatePreferences.swift
│ │ │ ├── Search/
│ │ │ │ ├── Recents/
│ │ │ │ │ └── SearchRecentsService.swift
│ │ │ │ └── Searchers/
│ │ │ │ ├── CompositeSearcher.swift
│ │ │ │ ├── NumberSearcher.swift
│ │ │ │ ├── PersistenceSearcher.swift
│ │ │ │ ├── SearchTerm.swift
│ │ │ │ ├── Searcher.swift
│ │ │ │ ├── SuraSearcher.swift
│ │ │ │ └── TranslationSearcher.swift
│ │ │ ├── ShareableText/
│ │ │ │ └── ShareableVerseTextRetriever.swift
│ │ │ ├── TranslationText/
│ │ │ │ └── QuranTextDataService.swift
│ │ │ └── TwoPages/
│ │ │ └── TwoPagesUtils.swift
│ │ └── Tests/
│ │ ├── CompositeSearcherTests.swift
│ │ ├── Encoding.swift
│ │ ├── QuartersDataRetrieverTests.swift
│ │ ├── QuranTextDataServiceTests.swift
│ │ ├── SearchRecentsServiceTests.swift
│ │ ├── ShareableVerseTextRetrieverTests.swift
│ │ ├── TestData.swift
│ │ ├── TwoPagesUtilsTests.swift
│ │ └── __Snapshots__/
│ │ ├── CompositeSearcherTests/
│ │ │ ├── testMatchArabicQuran.1.json
│ │ │ ├── testMatchArabicQuran.2.json
│ │ │ ├── testMatchArabicSuraName.1.json
│ │ │ ├── testMatchArabicSuraName.2.json
│ │ │ ├── testMatchMultipleSuras.1.json
│ │ │ ├── testMatchMultipleSuras.2.json
│ │ │ ├── testMatchOneSura.1.json
│ │ │ ├── testMatchOneSura.2.json
│ │ │ ├── testMatchSuraAndQuran.1.json
│ │ │ ├── testMatchSuraAndQuran.2.json
│ │ │ ├── testMatchSuraAndQuran.3.json
│ │ │ ├── testMatchSuraAndQuran.4.json
│ │ │ ├── testMatchSuraAndQuran.5.json
│ │ │ ├── testMatchSuraAndQuran.6.json
│ │ │ ├── testMatchSuraAndQuranWithIncorrectTashkeel.1.json
│ │ │ ├── testMatchSuraAndQuranWithIncorrectTashkeel.2.json
│ │ │ ├── testMatchTranslation.1.json
│ │ │ ├── testMatchTranslation.2.json
│ │ │ ├── testNumbers.1.json
│ │ │ ├── testNumbers.2.json
│ │ │ └── testNumbers.3.json
│ │ └── SearchRecentsServiceTests/
│ │ ├── testPopularTerms.1.json
│ │ └── testPopularTerms.2.json
│ ├── ReadingService/
│ │ ├── Sources/
│ │ │ ├── ReadingPreferences.swift
│ │ │ ├── ReadingRemoteResources.swift
│ │ │ ├── ReadingResourceDownloader.swift
│ │ │ └── ReadingResourcesService.swift
│ │ └── Tests/
│ │ ├── ReadingRemoteResourcesFake.swift
│ │ └── ReadingResourcesServiceTests.swift
│ ├── ReciterService/
│ │ ├── Sources/
│ │ │ ├── AudioFileListRetriever.swift
│ │ │ ├── AudioUnzipper.swift
│ │ │ ├── DownloadedRecitersService.swift
│ │ │ ├── RecentRecitersService.swift
│ │ │ ├── Reciter+Localization.swift
│ │ │ ├── ReciterAudioDeleter.swift
│ │ │ ├── ReciterDataRetriever.swift
│ │ │ ├── ReciterPreferences.swift
│ │ │ └── ReciterSizeInfoRetriever.swift
│ │ └── Tests/
│ │ ├── DownloadedRecitersServiceTests.swift
│ │ ├── RecentRecitersServiceTests.swift
│ │ └── ReciterSizeInfoRetrieverTests.swift
│ ├── ReciterServiceFake/
│ │ ├── Reciter+Fixture.swift
│ │ └── Reciter+Preparation.swift
│ ├── SettingsService/
│ │ ├── ReviewPersistence.swift
│ │ └── ReviewService.swift
│ ├── TestResources/
│ │ └── TestResources.swift
│ ├── TranslationService/
│ │ ├── Sources/
│ │ │ ├── LocalTranslationsRetriever.swift
│ │ │ ├── SelectedTranslationsPreferences.swift
│ │ │ ├── TranslationDeleter.swift
│ │ │ ├── TranslationNetworkManager.swift
│ │ │ ├── TranslationUnzipper.swift
│ │ │ ├── TranslationsDownloader.swift
│ │ │ ├── TranslationsParser.swift
│ │ │ ├── TranslationsRepository.swift
│ │ │ └── TranslationsVersionUpdater.swift
│ │ └── Tests/
│ │ ├── LocalTranslationsRetrieverTests.swift
│ │ ├── SelectedTranslationsPreferencesTests.swift
│ │ ├── TranslationDeleterTests.swift
│ │ ├── TranslationsDownloaderTests.swift
│ │ └── TranslationsRepositoryTests.swift
│ ├── TranslationServiceFake/
│ │ ├── LocalTranslationsFake.swift
│ │ └── TranslationTestData.swift
│ ├── WordFrameService/
│ │ ├── WordFrame+Extension.swift
│ │ └── WordFrameProcessor.swift
│ └── WordTextService/
│ ├── Sources/
│ │ ├── WordTextPreferences.swift
│ │ └── WordTextService.swift
│ └── Tests/
│ └── WordTextServiceTests.swift
├── Example/
│ ├── QuranEngineApp/
│ │ ├── Classes/
│ │ │ ├── Analytics.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Container.swift
│ │ │ ├── QuranEngineApp-Bridging-Header.h
│ │ │ └── SceneDelegate.swift
│ │ ├── Info.plist
│ │ └── Resources/
│ │ ├── Assets.xcassets/
│ │ │ ├── AccentColor.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── app-image.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── quran-engine2.imageset/
│ │ │ │ └── Contents.json
│ │ │ └── readings/
│ │ │ ├── Contents.json
│ │ │ ├── hafs_1405.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── hafs_1421.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── hafs_1439.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── hafs_1440.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── hafs_1441.imageset/
│ │ │ │ └── Contents.json
│ │ │ └── tajweed.imageset/
│ │ │ └── Contents.json
│ │ ├── Base.lproj/
│ │ │ └── LaunchScreen.storyboard
│ │ └── reciters.plist
│ └── QuranEngineApp.xcodeproj/
│ ├── project.pbxproj
│ ├── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata/
│ └── xcschemes/
│ └── QuranEngineApp.xcscheme
├── Features/
│ ├── AdvancedAudioOptionsFeature/
│ │ ├── AdvancedAudioOptions.swift
│ │ ├── AdvancedAudioOptionsBuilder.swift
│ │ ├── AdvancedAudioOptionsView.swift
│ │ ├── AdvancedAudioOptionsViewModel.swift
│ │ ├── AdvancedAudioVersesViewController.swift
│ │ └── Runs++.swift
│ ├── AppDependencies/
│ │ └── AppDependencies.swift
│ ├── AppMigrationFeature/
│ │ ├── FileSystemMigrator.swift
│ │ ├── MigrationView.swift
│ │ ├── MigrationViewController.swift
│ │ └── RecitersPathMigrator.swift
│ ├── AppStructureFeature/
│ │ ├── App/
│ │ │ ├── AppBuilder.swift
│ │ │ ├── AppInteractor.swift
│ │ │ └── AppViewController.swift
│ │ ├── Common/
│ │ │ ├── TabBuilder.swift
│ │ │ ├── TabInteractor.swift
│ │ │ └── TabViewController.swift
│ │ ├── Launch/
│ │ │ ├── LaunchBuilder.swift
│ │ │ └── LaunchStartup.swift
│ │ └── Tabs/
│ │ ├── BookmarksTab.swift
│ │ ├── HomeTab.swift
│ │ ├── NotesTab.swift
│ │ ├── SearchTab.swift
│ │ └── SettingsTab.swift
│ ├── AudioBannerFeature/
│ │ ├── AudioBannerBuilder.swift
│ │ ├── AudioBannerView.swift
│ │ ├── AudioBannerViewModel.swift
│ │ └── RemoteCommandsHandler.swift
│ ├── AudioDownloadsFeature/
│ │ ├── AudioDownloadItem.swift
│ │ ├── AudioDownloadsBuilder.swift
│ │ ├── AudioDownloadsView.swift
│ │ ├── AudioDownloadsViewController.swift
│ │ └── AudioDownloadsViewModel.swift
│ ├── AyahMenuFeature/
│ │ ├── AyahMenuBuilder.swift
│ │ ├── AyahMenuViewController.swift
│ │ └── AyahMenuViewModel.swift
│ ├── BookmarksFeature/
│ │ ├── Sources/
│ │ │ ├── BookmarksBuilder.swift
│ │ │ ├── BookmarksPreferences.swift
│ │ │ ├── BookmarksView.swift
│ │ │ ├── BookmarksViewController.swift
│ │ │ └── BookmarksViewModel.swift
│ │ └── Tests/
│ │ └── BookmarksViewModelTests.swift
│ ├── FeaturesSupport/
│ │ ├── Analytics.Screen.swift
│ │ ├── CommonAnalytics.swift
│ │ └── QuranNavigator.swift
│ ├── HomeFeature/
│ │ ├── HomeBuilder.swift
│ │ ├── HomePreferences.swift
│ │ ├── HomeView.swift
│ │ ├── HomeViewController.swift
│ │ ├── HomeViewModel.swift
│ │ └── QuarterItem.swift
│ ├── MoreMenuFeature/
│ │ ├── MoreMenuBuilder.swift
│ │ ├── MoreMenuController.swift
│ │ ├── MoreMenuModel.swift
│ │ ├── MoreMenuViewModel.swift
│ │ └── views/
│ │ ├── FontSizeStepper.swift
│ │ ├── MoreMenuDeviceRotation.swift
│ │ ├── MoreMenuEmpty.swift
│ │ ├── MoreMenuFontSize.swift
│ │ ├── MoreMenuModeSelector.swift
│ │ ├── MoreMenuThemeSettings.swift
│ │ ├── MoreMenuThemeSettingsViewModel.swift
│ │ ├── MoreMenuTranslationSelector.swift
│ │ ├── MoreMenuTwoPages.swift
│ │ ├── MoreMenuVerticalScrolling.swift
│ │ ├── MoreMenuView.swift
│ │ ├── MoreMenuWordPointer.swift
│ │ └── MoreMenuWordPointerType.swift
│ ├── NoteEditorFeature/
│ │ ├── NoteEditorBuilder.swift
│ │ ├── NoteEditorInteractor.swift
│ │ └── NoteEditorViewController.swift
│ ├── NotesFeature/
│ │ ├── NoteItem.swift
│ │ ├── NotesBuilder.swift
│ │ ├── NotesView.swift
│ │ ├── NotesViewController.swift
│ │ └── NotesViewModel.swift
│ ├── QuranContentFeature/
│ │ ├── ContentBuilder.swift
│ │ ├── ContentViewController.swift
│ │ ├── ContentViewModel.swift
│ │ ├── PagesView.swift
│ │ └── QuranInput.swift
│ ├── QuranImageFeature/
│ │ ├── ContentImageBuilder.swift
│ │ ├── ContentImageView.swift
│ │ ├── ContentImageViewModel.swift
│ │ ├── ContentLineView.swift
│ │ └── ContentLineViewModel.swift
│ ├── QuranPagesFeature/
│ │ ├── Page+Localization.swift
│ │ ├── PageGeometryActions.swift
│ │ └── QuranPaginationView.swift
│ ├── QuranTranslationFeature/
│ │ ├── ContentTranslationBuilder.swift
│ │ ├── ContentTranslationView.swift
│ │ ├── ContentTranslationViewModel.swift
│ │ ├── Translation+UI.swift
│ │ ├── TranslationFootnote.swift
│ │ ├── TranslationItem+View.swift
│ │ ├── TranslationItem.swift
│ │ └── TranslationURL.swift
│ ├── QuranViewFeature/
│ │ ├── QuranBuilder.swift
│ │ ├── QuranInteractor.swift
│ │ ├── QuranView.swift
│ │ └── QuranViewController.swift
│ ├── ReadingSelectorFeature/
│ │ ├── ReadingSelectorBuilder.swift
│ │ ├── ReadingSelectorViewController.swift
│ │ ├── ReadingSelectorViewModel.swift
│ │ └── View/
│ │ ├── Reading+Resources.swift
│ │ ├── ReadingDetails.swift
│ │ ├── ReadingImage.swift
│ │ ├── ReadingImageView.swift
│ │ ├── ReadingInfo.swift
│ │ ├── ReadingItem.swift
│ │ └── ReadingSelector.swift
│ ├── ReciterListFeature/
│ │ ├── ReciterListBuilder.swift
│ │ ├── ReciterListView.swift
│ │ ├── ReciterListViewController.swift
│ │ └── ReciterListViewModel.swift
│ ├── SearchFeature/
│ │ ├── SearchBuilder.swift
│ │ ├── SearchTypes.swift
│ │ ├── SearchView.swift
│ │ ├── SearchViewController.swift
│ │ └── SearchViewModel.swift
│ ├── SettingsFeature/
│ │ ├── Sources/
│ │ │ ├── ContactUsService.swift
│ │ │ ├── Diagnostics/
│ │ │ │ ├── DiagnosticsBuilder.swift
│ │ │ │ ├── DiagnosticsService.swift
│ │ │ │ ├── DiagnosticsView.swift
│ │ │ │ └── DiagnosticsViewModel.swift
│ │ │ ├── SettingsBuilder.swift
│ │ │ ├── SettingsRootView.swift
│ │ │ ├── SettingsRootViewModel.swift
│ │ │ └── UIViewController+Share.swift
│ │ └── Tests/
│ │ └── SettingsRootViewModelTests.swift
│ ├── TranslationVerseFeature/
│ │ ├── TranslationVerseBuilder.swift
│ │ ├── TranslationVerseView.swift
│ │ ├── TranslationVerseViewController.swift
│ │ └── TranslationVerseViewModel.swift
│ ├── TranslationsFeature/
│ │ ├── TranslationItem.swift
│ │ ├── TranslationsListBuilder.swift
│ │ ├── TranslationsListView.swift
│ │ ├── TranslationsListViewModel.swift
│ │ └── TranslationsViewController.swift
│ ├── WhatsNewFeature/
│ │ ├── AppWhatsNew.swift
│ │ ├── AppWhatsNewController.swift
│ │ ├── AppWhatsNewVersionStore.swift
│ │ └── whats-new.plist
│ └── WordPointerFeature/
│ ├── WordPointerBuilder.swift
│ ├── WordPointerViewController.swift
│ └── WordPointerViewModel.swift
├── LICENSE
├── Makefile
├── Model/
│ ├── QuranAnnotations/
│ │ ├── LastPage.swift
│ │ ├── Note.swift
│ │ ├── PageBookmark.swift
│ │ └── QuranHighlights.swift
│ ├── QuranAudio/
│ │ ├── AudioDownloadedSize.swift
│ │ ├── AudioEnd.swift
│ │ ├── AyahTiming.swift
│ │ ├── RangeTiming.swift
│ │ ├── Reciter+URLs.swift
│ │ ├── Reciter.swift
│ │ ├── SuraTiming.swift
│ │ └── Timing.swift
│ ├── QuranGeometry/
│ │ ├── AyahNumberLocation.swift
│ │ ├── ImagePage.swift
│ │ ├── SuraHeaderLocation.swift
│ │ ├── WordFrame.swift
│ │ ├── WordFrameCollection.swift
│ │ ├── WordFrameLine.swift
│ │ └── WordFrameScale.swift
│ ├── QuranKit/
│ │ ├── Sources/
│ │ │ ├── AyahNumber.swift
│ │ │ ├── Hizb.swift
│ │ │ ├── Juz.swift
│ │ │ ├── LastAyahFinder/
│ │ │ │ ├── JuzBasedLastAyahFinder.swift
│ │ │ │ ├── LastAyahFinder.swift
│ │ │ │ ├── PageBasedLastAyahFinder.swift
│ │ │ │ ├── QuranBasedLastAyahFinder.swift
│ │ │ │ └── SuraBasedLastAyahFinder.swift
│ │ │ ├── LazyAtomic.swift
│ │ │ ├── Navigatable.swift
│ │ │ ├── Page.swift
│ │ │ ├── Quarter.swift
│ │ │ ├── Quran.swift
│ │ │ ├── QuranGroup.swift
│ │ │ ├── QuranValueStorage.swift
│ │ │ ├── Reading.swift
│ │ │ ├── ReadingInfo/
│ │ │ │ ├── Madani1405QuranReadingInfoRawData.swift
│ │ │ │ ├── Madani1440QuranReadingInfoRawData.swift
│ │ │ │ └── QuranReadingInfoRawData.swift
│ │ │ ├── Sura.swift
│ │ │ ├── Util.swift
│ │ │ └── Word.swift
│ │ └── Tests/
│ │ ├── AyahNumberTests.swift
│ │ ├── HizbTests.swift
│ │ ├── JuzTests.swift
│ │ ├── PageTests.swift
│ │ ├── QuarterTests.swift
│ │ └── SuraTests.swift
│ └── QuranText/
│ ├── FontSize.swift
│ ├── QuranMode.swift
│ ├── SearchResults.swift
│ ├── TranslatedVerses.swift
│ ├── Translation+URLs.swift
│ ├── Translation.swift
│ └── WordTextType.swift
├── Package.resolved
├── Package.swift
├── QuranEngine-Package.xctestplan
├── README.md
├── UI/
│ ├── NoorFont/
│ │ └── FontName.swift
│ ├── NoorUI/
│ │ ├── BaseControllers/
│ │ │ ├── BaseNavigationController.swift
│ │ │ ├── BaseViewController.swift
│ │ │ └── UIViewController+Error.swift
│ │ ├── Colors/
│ │ │ ├── Color+extension.swift
│ │ │ └── Colors.xcassets/
│ │ │ ├── Contents.json
│ │ │ ├── appTint.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── theme-calm-bg.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── theme-calm-text.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── theme-focus-bg.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── theme-focus-text.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── theme-original-bg.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── theme-original-text.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── theme-paper-bg.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── theme-paper-text.colorset/
│ │ │ │ └── Contents.json
│ │ │ ├── theme-quiet-bg.colorset/
│ │ │ │ └── Contents.json
│ │ │ └── theme-quiet-text.colorset/
│ │ │ └── Contents.json
│ │ ├── Components/
│ │ │ ├── ActiveRoundedButton.swift
│ │ │ ├── AppStoreDownloadButton.swift
│ │ │ ├── AppearanceModeSelector.swift
│ │ │ ├── ChoicesView.swift
│ │ │ ├── DataUnavailableView.swift
│ │ │ ├── DisclosureIndicator.swift
│ │ │ ├── DropdownButton.swift
│ │ │ ├── ErrorAlertModifier.swift
│ │ │ ├── List/
│ │ │ │ ├── NoorList.swift
│ │ │ │ ├── NoorListItem.swift
│ │ │ │ └── NoorSection.swift
│ │ │ ├── LoadingView.swift
│ │ │ ├── MultipartText.swift
│ │ │ ├── ProminentRoundedButton.swift
│ │ │ └── ThemeStyleSelector.swift
│ │ ├── Features/
│ │ │ ├── AudioBanner/
│ │ │ │ └── AudioBannerViewUI.swift
│ │ │ ├── AyahMenu/
│ │ │ │ ├── AyahMenuUI.swift
│ │ │ │ └── AyahMenuView.swift
│ │ │ ├── Content/
│ │ │ │ └── ContentStatusView.swift
│ │ │ ├── Note/
│ │ │ │ ├── EditableNote.swift
│ │ │ │ ├── Note.Color++.swift
│ │ │ │ ├── NoteCircle.swift
│ │ │ │ ├── NoteEditorView.swift
│ │ │ │ └── UIViewController+Note.swift
│ │ │ └── Quran/
│ │ │ ├── AdaptiveImageScrollView.swift
│ │ │ ├── AdaptiveQuranScrollView.swift
│ │ │ ├── ImageDecorationsView.swift
│ │ │ ├── QuranArabicText.swift
│ │ │ ├── QuranPageFooter.swift
│ │ │ ├── QuranPageHeader.swift
│ │ │ ├── QuranPageSeparators.swift
│ │ │ ├── QuranScrollingViewModifier.swift
│ │ │ ├── QuranSuraName.swift
│ │ │ ├── QuranThemedImage.swift
│ │ │ ├── QuranTranslationReferenceVerse.swift
│ │ │ ├── QuranTranslationTextChunk.swift
│ │ │ ├── QuranTranslatorName.swift
│ │ │ └── QuranVerseSeparator.swift
│ │ ├── Font/
│ │ │ ├── FontName++.swift
│ │ │ └── FontSize++.swift
│ │ ├── Formatters/
│ │ │ └── TimeAgo.swift
│ │ ├── Images/
│ │ │ ├── Images.xcassets/
│ │ │ │ ├── Contents.json
│ │ │ │ ├── ayah-end-marker.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── pointer-25.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── rotate_to_landscape-25.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── rotate_to_portrait-25.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── settings-25.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── settings_filled-25.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── sura_header.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── NoorImage.swift
│ │ │ └── NoorSystemImage.swift
│ │ ├── Miscellaneous/
│ │ │ ├── ContentDimension.swift
│ │ │ ├── Dimensions.swift
│ │ │ ├── ReadableInsetsViewModifier.swift
│ │ │ ├── TestResource+Path.swift
│ │ │ └── ThemedColorInvert.swift
│ │ ├── Pager/
│ │ │ └── PageViewController.swift
│ │ ├── Shapes/
│ │ │ └── Arc.swift
│ │ └── Theme/
│ │ ├── AppearanceModeViews.swift
│ │ ├── QuranHighlights+Theme.swift
│ │ ├── ThemeService.swift
│ │ └── ThemeStyleViews.swift
│ ├── UIx/
│ │ ├── SwiftUI/
│ │ │ ├── CollectionView/
│ │ │ │ ├── CollectionView.swift
│ │ │ │ ├── CollectionViewController.swift
│ │ │ │ ├── CollectionViewDataSource.swift
│ │ │ │ ├── CollectionViewReader.swift
│ │ │ │ ├── CollectionViewScroller.swift
│ │ │ │ ├── HostingCollectionViewCell.swift
│ │ │ │ └── ListSection.swift
│ │ │ ├── Epoxy/
│ │ │ │ ├── CollectionViewScrollToItemHelper.swift
│ │ │ │ ├── DataIDProviding.swift
│ │ │ │ ├── EpoxyIntrinsicContentSizeInvalidator.swift
│ │ │ │ ├── EpoxySwiftUIHostingController.swift
│ │ │ │ ├── EpoxySwiftUIHostingView.swift
│ │ │ │ ├── EpoxySwiftUILayoutMargins.swift
│ │ │ │ ├── README.md
│ │ │ │ └── _Compatibility.swift
│ │ │ ├── Miscellaneous/
│ │ │ │ ├── AsyncAction.swift
│ │ │ │ ├── BackgroundHighlightingStyle.swift
│ │ │ │ ├── CustomButtonStyle.swift
│ │ │ │ ├── EdgeInsets++.swift
│ │ │ │ ├── EditController.swift
│ │ │ │ ├── SwiftUIColor+extension.swift
│ │ │ │ ├── UIKitNavigator.swift
│ │ │ │ ├── View+Task.swift
│ │ │ │ ├── View+URL.swift
│ │ │ │ ├── View+onSizeChange.swift
│ │ │ │ └── WrappingHStack.swift
│ │ │ ├── Mutate.swift
│ │ │ ├── SingleChoice/
│ │ │ │ ├── SingleChoiceRow.swift
│ │ │ │ └── SingleChoiceSelector.swift
│ │ │ ├── Toast/
│ │ │ │ ├── Toast.swift
│ │ │ │ └── ToastEnvironmentKey.swift
│ │ │ └── Views/
│ │ │ ├── AttributedString++.swift
│ │ │ ├── AutoSizingHostingController.swift
│ │ │ ├── AutoUpdatingPreferredContentSizeHostingController.swift
│ │ │ ├── CloseButton.swift
│ │ │ ├── CocoaNavigationBar.swift
│ │ │ ├── CocoaNavigationView.swift
│ │ │ ├── CollectionTracker.swift
│ │ │ ├── HostingCell.swift
│ │ │ ├── InvertInDarkModeModifier.swift
│ │ │ ├── PopoverNavigationController.swift
│ │ │ ├── PreferredContentSizeMatchesScrollView.swift
│ │ │ ├── SheetPresentationDetents.swift
│ │ │ ├── SingleAxisGeometryReader.swift
│ │ │ ├── StaticViewControllerRepresentable.swift
│ │ │ ├── TextAlignmentModifier.swift
│ │ │ ├── TextView.swift
│ │ │ ├── UIViewControllerReader.swift
│ │ │ └── WindowSafeAreaInsetsReaderViewModifier.swift
│ │ └── UIKit/
│ │ ├── DataSources/
│ │ │ ├── DefaultSection.swift
│ │ │ └── NSDiffableDataSourceSnapshot++.swift
│ │ ├── Extensions/
│ │ │ ├── CALayer+Extension.swift
│ │ │ ├── SegmentedControl+Extension.swift
│ │ │ ├── String+Size.swift
│ │ │ ├── UIBezierPath+Extension.swift
│ │ │ ├── UIColor+Extension.swift
│ │ │ ├── UIImage+Extension.swift
│ │ │ ├── UITableView+Extension.swift
│ │ │ ├── UIView+AutoLayout.swift
│ │ │ ├── UIView+Extension.swift
│ │ │ ├── UIViewController+Extensions.swift
│ │ │ └── UIWIndow+Extensions.swift
│ │ ├── Miscellaneous/
│ │ │ ├── NSDirectionalEdgeInsets++.swift
│ │ │ ├── PresentationsMonitor.swift
│ │ │ └── ScrollViewPageBehavior.swift
│ │ ├── Popover/
│ │ │ ├── PhonePopoverPresenter.swift
│ │ │ └── PopoverPresenter.swift
│ │ └── Views/
│ │ ├── BackgroundColorButton.swift
│ │ ├── ByPassTouchesView.swift
│ │ ├── CircleView.swift
│ │ ├── CircularView.swift
│ │ ├── GradientView.swift
│ │ ├── MagnifyingGlass.swift
│ │ ├── RoundedShadowView.swift
│ │ ├── ScrollViewController.swift
│ │ ├── SearchControllerWithNoCancelButton.swift
│ │ └── TwoLineNavigationTitleView.swift
│ └── ViewConstrainer/
│ ├── GroupConstrainer.swift
│ ├── SingleConstrainer.swift
│ ├── UIView+Const.swift
│ └── ViewConstrainer.swift
├── agents.md
└── codecov.yml
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
push:
branches:
- main
pull_request:
jobs:
Package:
runs-on: macos-26
steps:
- uses: actions/checkout@v2
- name: Setting up Xcode
run: sudo xcode-select -s "/Applications/Xcode_26.2.app"
- name: Install xcbeautify
run: brew install xcbeautify
- name: Run tests
run: make test
- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
ExampleApp:
runs-on: macos-26
steps:
- uses: actions/checkout@v2
- name: Setting up Xcode
run: sudo xcode-select -s "/Applications/Xcode_26.2.app"
- name: Install xcbeautify
run: brew install xcbeautify
- name: Build
run: make build-example
SwiftFormat:
runs-on: macos-26
steps:
- uses: actions/checkout@v2
- name: Setting up Xcode
run: sudo xcode-select -s "/Applications/Xcode_26.2.app"
- name: SwiftFormat
run: make format-lint
================================================
FILE: .gitignore
================================================
# Xcode
#
build/
.DS_Store
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
!default.xcworkspace
xcuserdata
#Breakpoints_v2.xcbkptlist
upload_dsym_results
xcschememanagement.plist
*.xccheckout
profile
*.moved-aside
DerivedData
.idea/
*.hmap
*.ipa
*.xcuserstate
package.json
# Swift Package Manager. See: https://github.com/apple/swift-package-manager/blob/main/Sources/Workspace/InitPackage.swift#L381
.DS_Store
.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc
/BuildTools/
================================================
FILE: .swift-version
================================================
5.10
================================================
FILE: .swiftformat
================================================
# Don't format
--exclude .build,UI/UIx/SwiftUI/Epoxy,BuildTools
# Options
--importgrouping testable-bottom # sortedImports
--wraparguments before-first # wrapArguments
--wrapparameters before-first # wrapArguments
--funcattributes prev-line # wrapAttributes
--typeattributes prev-line # wrapAttributes
--beforemarks typealias,struct # organizeDeclarations
--structthreshold 70
--classthreshold 70
--enumthreshold 70
# Disabled
--disable andOperator
--disable emptyBraces
--disable extensionAccessControl
--disable hoistAwait
--disable hoistPatternLet
--disable hoistTry
--disable redundantType
--disable unusedArguments
--disable redundantReturn
# Enabled
--enable blankLineAfterImports
--enable blankLinesBetweenImports
--enable blockComments
--enable isEmpty
--enable organizeDeclarations
================================================
FILE: .swiftlint.yml
================================================
excluded:
- .build
- Tests/QuranTextKitTests/Mocks.swift
disabled_rules:
- colon
- for_where
- syntactic_sugar
- nesting
- opening_brace
- trailing_comma # should be useful for git
- multiple_closures_with_trailing_closure
- todo
opt_in_rules:
#NOT NEEDED - anonymous_argument_in_multiline_closure
- array_init
#NOT NEEDED - attributes
#NOT NEEDED - balanced_xctest_lifecycle
#NOT NEEDED - closure_end_indentation
- closure_spacing
#NOT NEEDED - collection_alignment
#NOT NEEDED - conditional_returns_on_newline
- contains_over_filter_count
- contains_over_filter_is_empty
- contains_over_first_not_nil
- contains_over_range_nil_comparison
#NOT NEEDED - convenience_type
#NOT NEEDED - discouraged_assert
#NOT NEEDED - discouraged_none_name
- discarded_notification_center_observer
#NOT NEEDED - discouraged_object_literal
- discouraged_optional_boolean
#NOT NEEDED for now - discouraged_optional_collection
- empty_count
- empty_string
- empty_xctest_method
- enum_case_associated_values_count
#NOT NEEDED - expiring_todo
#NOT NEEDED - explicit_acl
#NOT NEEDED - explicit_enum_raw_value
#NOT NEEDED - explicit_self
#NOT NEEDED - explicit_top_level_acl
#NOT NEEDED - explicit_type_interface
- explicit_init
#NOT NEEDED - explicit_type_interface
#NOT NEEDED - extension_access_modifier
#NOT NEEDED - fallthrough
- fatal_error_message
#- file_header
#NOT NEEDED - file_name
- file_name_no_space
#NOT NEEDED - file_types_order
- flatmap_over_map_reduce
- first_where
# Frequently used - force_unwrapping
#NOT NEEDED - function_default_parameter_at_end
#NOT NEEDED - implicit_return
- ibinspectable_in_extension
- identical_operands
- implicit_return
- implicitly_unwrapped_optional
#NOT NEEDED - indentation_width
#NOT NEEDED - joined_default_parameter
- last_where
#NOT NEEDED - legacy_multiple
#NOT NEEDED - legacy_objc_type
- legacy_random
#NOT NEEDED - let_var_whitespace
- literal_expression_end_indentation
#NOT NEEDED - lower_acl_than_parent
#NOT NEEDED - missing_docs
- modifier_order
#NOT NEEDED - multiline_arguments
#NOT NEEDED - multiline_arguments_brackets
- multiline_function_chains
#NOT NEEDED - multiline_literal_brackets
- multiline_parameters
#NOT NEEDED - multiline_parameters_brackets
- multiple_closures_with_trailing_closure
- nesting
- nimble_operator
#NOT NEEDED - no_extension_access_modifier
#NOT NEEDED - no_grouping_extension
- notification_center_detachment
#NOT NEEDED - nslocalizedstring_key
#NOT NEEDED - nslocalizedstring_require_bundle
#NOT NEEDED - number_separator
- object_literal
#NOT NEEDED - opening_brace
#NOT NEEDED - operator_usage_whitespace
- optional_enum_case_matching
- overridden_super_call
- override_in_extension
- pattern_matching_keywords
#NOT NEEDED - prefer_nimble
#NOT NEEDED - prefer_self_in_static_references
#NOT NEEDED - prefer_self_type_over_type_of_self
- prefer_zero_over_explicit_init
#NOT NEEDED - prefixed_toplevel_constant
#NOT NEEDED - private_action
#NOT NEEDED - private_outlet
- private_subject
# // TODO: uncomment - prohibited_interface_builder
- prohibited_super_call
- quick_discouraged_call
- quick_discouraged_focused_test
- quick_discouraged_pending_test
#NOT NEEDED - raw_value_for_camel_cased_codable_enum
- reduce_into
- redundant_nil_coalescing
#NOT NEEDED - redundant_type_annotation
#NOT NEEDED - required_deinit
#NOT CONFIGURED - required_enum_case
- single_test_class
- sorted_first_last
- sorted_imports
- static_operator
- strict_fileprivate
#NOT NEEDED - strong_iboutlet
#NOT NEEDED - switch_case_on_newline
- syntactic_sugar
#NOT NEEDED - test_case_accessibility
#NOT NEEDED - toggle_bool
#NOT NEEDED - trailing_closure
#NOT NEEDED - trailing_comma
#NOT NEEDED - unavailable_function
#NOT NEEDED - unneeded_parentheses_in_closure_argument
- unowned_variable_capture
- untyped_error_in_catch
- vertical_parameter_alignment_on_call
#NOT NEEDED - vertical_whitespace_between_cases
#NOT NEEDED - vertical_whitespace_closing_braces
#NOT NEEDED - vertical_whitespace_opening_braces
#NOT NEEDED - xct_specific_matcher
#NOT NEEDED - yoda_condition
analyzer_rules: # Rules run by `swiftlint analyze` (experimental)
- capture_variable
# - explicit_self
- unused_declaration
- unused_import
type_name:
min_length: 2
max_length: 60
identifier_name:
min_length: 1
max_length: 60
file_length: 600
generic_type_name:
max_length: 30
line_length: 150 # Needs to configure it correctly!
type_body_length: 300
function_parameter_count: 10
function_body_length: 80
large_tuple: 4
object_literal:
color_literal: false
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/AllTargetsTests.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "2620"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AllTargetsTests"
BuildableName = "AllTargetsTests"
BlueprintName = "AllTargetsTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/AnnotationsService.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AnnotationsService"
BuildableName = "AnnotationsService"
BlueprintName = "AnnotationsService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AnnotationsService"
BuildableName = "AnnotationsService"
BlueprintName = "AnnotationsService"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/AppStructureFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AppStructureFeature"
BuildableName = "AppStructureFeature"
BlueprintName = "AppStructureFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AppStructureFeature"
BuildableName = "AppStructureFeature"
BlueprintName = "AppStructureFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/BatchDownloader.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BatchDownloader"
BuildableName = "BatchDownloader"
BlueprintName = "BatchDownloader"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BatchDownloader"
BuildableName = "BatchDownloader"
BlueprintName = "BatchDownloader"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/BookmarksFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BookmarksFeature"
BuildableName = "BookmarksFeature"
BlueprintName = "BookmarksFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BookmarksFeature"
BuildableName = "BookmarksFeature"
BlueprintName = "BookmarksFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/Caching.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Caching"
BuildableName = "Caching"
BlueprintName = "Caching"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Caching"
BuildableName = "Caching"
BlueprintName = "Caching"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/Crashing.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Crashing"
BuildableName = "Crashing"
BlueprintName = "Crashing"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Crashing"
BuildableName = "Crashing"
BlueprintName = "Crashing"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/HomeFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "HomeFeature"
BuildableName = "HomeFeature"
BlueprintName = "HomeFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "HomeFeature"
BuildableName = "HomeFeature"
BlueprintName = "HomeFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/LastPagePersistence.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "LastPagePersistence"
BuildableName = "LastPagePersistence"
BlueprintName = "LastPagePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "LastPagePersistence"
BuildableName = "LastPagePersistence"
BlueprintName = "LastPagePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/Localization.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Localization"
BuildableName = "Localization"
BlueprintName = "Localization"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Localization"
BuildableName = "Localization"
BlueprintName = "Localization"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/MoreMenuFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1620"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "MoreMenuFeature"
BuildableName = "MoreMenuFeature"
BlueprintName = "MoreMenuFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "MoreMenuFeature"
BuildableName = "MoreMenuFeature"
BlueprintName = "MoreMenuFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/NetworkSupport.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1620"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NetworkSupport"
BuildableName = "NetworkSupport"
BlueprintName = "NetworkSupport"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NetworkSupport"
BuildableName = "NetworkSupport"
BlueprintName = "NetworkSupport"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/NoorUI.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NoorUI"
BuildableName = "NoorUI"
BlueprintName = "NoorUI"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NoorUI"
BuildableName = "NoorUI"
BlueprintName = "NoorUI"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/NotePersistence.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NotePersistence"
BuildableName = "NotePersistence"
BlueprintName = "NotePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NotePersistence"
BuildableName = "NotePersistence"
BlueprintName = "NotePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/NotesFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NotesFeature"
BuildableName = "NotesFeature"
BlueprintName = "NotesFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NotesFeature"
BuildableName = "NotesFeature"
BlueprintName = "NotesFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/OAuthServiceAppAuthImpl.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "2610"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "OAuthServiceAppAuthImpl"
BuildableName = "OAuthServiceAppAuthImpl"
BlueprintName = "OAuthServiceAppAuthImpl"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "OAuthServiceAppAuthImpl"
BuildableName = "OAuthServiceAppAuthImpl"
BlueprintName = "OAuthServiceAppAuthImpl"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/PageBookmarkPersistence.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "PageBookmarkPersistence"
BuildableName = "PageBookmarkPersistence"
BlueprintName = "PageBookmarkPersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "PageBookmarkPersistence"
BuildableName = "PageBookmarkPersistence"
BlueprintName = "PageBookmarkPersistence"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/Preferences.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Preferences"
BuildableName = "Preferences"
BlueprintName = "Preferences"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Preferences"
BuildableName = "Preferences"
BlueprintName = "Preferences"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/QuranAudioKit.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranAudioKit"
BuildableName = "QuranAudioKit"
BlueprintName = "QuranAudioKit"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranAudioKit"
BuildableName = "QuranAudioKit"
BlueprintName = "QuranAudioKit"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/QuranEngine-Package.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_TestResources"
BuildableName = "QuranEngine_TestResources"
BlueprintName = "QuranEngine_TestResources"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_Localization"
BuildableName = "QuranEngine_Localization"
BlueprintName = "QuranEngine_Localization"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_CoreDataModel"
BuildableName = "QuranEngine_CoreDataModel"
BlueprintName = "QuranEngine_CoreDataModel"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BatchDownloader"
BuildableName = "BatchDownloader"
BlueprintName = "BatchDownloader"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Caching"
BuildableName = "Caching"
BlueprintName = "Caching"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Crashing"
BuildableName = "Crashing"
BlueprintName = "Crashing"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "LastPagePersistence"
BuildableName = "LastPagePersistence"
BlueprintName = "LastPagePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Localization"
BuildableName = "Localization"
BlueprintName = "Localization"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NotePersistence"
BuildableName = "NotePersistence"
BlueprintName = "NotePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "PageBookmarkPersistence"
BuildableName = "PageBookmarkPersistence"
BlueprintName = "PageBookmarkPersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Preferences"
BuildableName = "Preferences"
BlueprintName = "Preferences"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranAudioKit"
BuildableName = "QuranAudioKit"
BlueprintName = "QuranAudioKit"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranKit"
BuildableName = "QuranKit"
BlueprintName = "QuranKit"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranTextKit"
BuildableName = "QuranTextKit"
BlueprintName = "QuranTextKit"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SystemDependencies"
BuildableName = "SystemDependencies"
BlueprintName = "SystemDependencies"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SystemDependenciesFake"
BuildableName = "SystemDependenciesFake"
BlueprintName = "SystemDependenciesFake"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Timing"
BuildableName = "Timing"
BlueprintName = "Timing"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationService"
BuildableName = "TranslationService"
BlueprintName = "TranslationService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Utilities"
BuildableName = "Utilities"
BlueprintName = "Utilities"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "VLogging"
BuildableName = "VLogging"
BlueprintName = "VLogging"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AsyncUtilitiesForTesting"
BuildableName = "AsyncUtilitiesForTesting"
BlueprintName = "AsyncUtilitiesForTesting"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BatchDownloaderFake"
BuildableName = "BatchDownloaderFake"
BlueprintName = "BatchDownloaderFake"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CoreDataModel"
BuildableName = "CoreDataModel"
BlueprintName = "CoreDataModel"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CoreDataPersistence"
BuildableName = "CoreDataPersistence"
BlueprintName = "CoreDataPersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CoreDataPersistenceTestSupport"
BuildableName = "CoreDataPersistenceTestSupport"
BlueprintName = "CoreDataPersistenceTestSupport"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Locking"
BuildableName = "Locking"
BlueprintName = "Locking"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NetworkSupport"
BuildableName = "NetworkSupport"
BlueprintName = "NetworkSupport"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NetworkSupportFake"
BuildableName = "NetworkSupportFake"
BlueprintName = "NetworkSupportFake"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QueuePlayer"
BuildableName = "QueuePlayer"
BlueprintName = "QueuePlayer"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QueuePlayerObjc"
BuildableName = "QueuePlayerObjc"
BlueprintName = "QueuePlayerObjc"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SQLitePersistence"
BuildableName = "SQLitePersistence"
BlueprintName = "SQLitePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TestResources"
BuildableName = "TestResources"
BlueprintName = "TestResources"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationServiceFake"
BuildableName = "TranslationServiceFake"
BlueprintName = "TranslationServiceFake"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "WeakSet"
BuildableName = "WeakSet"
BlueprintName = "WeakSet"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BatchDownloaderTests"
BuildableName = "BatchDownloaderTests"
BlueprintName = "BatchDownloaderTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CachingTests"
BuildableName = "CachingTests"
BlueprintName = "CachingTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CoreDataPersistenceTests"
BuildableName = "CoreDataPersistenceTests"
BlueprintName = "CoreDataPersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "LastPagePersistenceTests"
BuildableName = "LastPagePersistenceTests"
BlueprintName = "LastPagePersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NetworkSupportTests"
BuildableName = "NetworkSupportTests"
BlueprintName = "NetworkSupportTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NotePersistenceTests"
BuildableName = "NotePersistenceTests"
BlueprintName = "NotePersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "PageBookmarkPersistenceTests"
BuildableName = "PageBookmarkPersistenceTests"
BlueprintName = "PageBookmarkPersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranAudioKitTests"
BuildableName = "QuranAudioKitTests"
BlueprintName = "QuranAudioKitTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranKitTests"
BuildableName = "QuranKitTests"
BlueprintName = "QuranKitTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranTextKitTests"
BuildableName = "QuranTextKitTests"
BlueprintName = "QuranTextKitTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SQLitePersistenceTests"
BuildableName = "SQLitePersistenceTests"
BlueprintName = "SQLitePersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationServiceTests"
BuildableName = "TranslationServiceTests"
BlueprintName = "TranslationServiceTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "UtilitiesTests"
BuildableName = "UtilitiesTests"
BlueprintName = "UtilitiesTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AudioUpdater"
BuildableName = "AudioUpdater"
BlueprintName = "AudioUpdater"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReciterService"
BuildableName = "ReciterService"
BlueprintName = "ReciterService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReciterServiceFake"
BuildableName = "ReciterServiceFake"
BlueprintName = "ReciterServiceFake"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReadingService"
BuildableName = "ReadingService"
BlueprintName = "ReadingService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "WordFramePersistence"
BuildableName = "WordFramePersistence"
BlueprintName = "WordFramePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "WordFrameService"
BuildableName = "WordFrameService"
BlueprintName = "WordFrameService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "WordTextPersistence"
BuildableName = "WordTextPersistence"
BlueprintName = "WordTextPersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "WordTextService"
BuildableName = "WordTextService"
BlueprintName = "WordTextService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ImageService"
BuildableName = "ImageService"
BlueprintName = "ImageService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranGeometry"
BuildableName = "QuranGeometry"
BlueprintName = "QuranGeometry"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AudioTimingPersistence"
BuildableName = "AudioTimingPersistence"
BlueprintName = "AudioTimingPersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AudioTimingService"
BuildableName = "AudioTimingService"
BlueprintName = "AudioTimingService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranAudio"
BuildableName = "QuranAudio"
BlueprintName = "QuranAudio"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranText"
BuildableName = "QuranText"
BlueprintName = "QuranText"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "VerseTextPersistence"
BuildableName = "VerseTextPersistence"
BlueprintName = "VerseTextPersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationPersistence"
BuildableName = "TranslationPersistence"
BlueprintName = "TranslationPersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranAnnotations"
BuildableName = "QuranAnnotations"
BlueprintName = "QuranAnnotations"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AnnotationsService"
BuildableName = "AnnotationsService"
BlueprintName = "AnnotationsService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Analytics"
BuildableName = "Analytics"
BlueprintName = "Analytics"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "UIx"
BuildableName = "UIx"
BlueprintName = "UIx"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ViewConstrainer"
BuildableName = "ViewConstrainer"
BlueprintName = "ViewConstrainer"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_NoorUI"
BuildableName = "QuranEngine_NoorUI"
BlueprintName = "QuranEngine_NoorUI"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NoorUI"
BuildableName = "NoorUI"
BlueprintName = "NoorUI"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AppDependencies"
BuildableName = "AppDependencies"
BlueprintName = "AppDependencies"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_ReciterListFeature"
BuildableName = "QuranEngine_ReciterListFeature"
BlueprintName = "QuranEngine_ReciterListFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AyahMenuFeature"
BuildableName = "AyahMenuFeature"
BlueprintName = "AyahMenuFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReciterListFeature"
BuildableName = "ReciterListFeature"
BlueprintName = "ReciterListFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "WhatsNewFeature"
BuildableName = "WhatsNewFeature"
BlueprintName = "WhatsNewFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "WordPointerFeature"
BuildableName = "WordPointerFeature"
BlueprintName = "WordPointerFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AppMigrator"
BuildableName = "AppMigrator"
BlueprintName = "AppMigrator"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_AppMigrationFeature"
BuildableName = "QuranEngine_AppMigrationFeature"
BlueprintName = "QuranEngine_AppMigrationFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AppMigrationFeature"
BuildableName = "AppMigrationFeature"
BlueprintName = "AppMigrationFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AdvancedAudioOptionsFeature"
BuildableName = "AdvancedAudioOptionsFeature"
BlueprintName = "AdvancedAudioOptionsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_AudioBannerFeature"
BuildableName = "QuranEngine_AudioBannerFeature"
BlueprintName = "QuranEngine_AudioBannerFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AudioBannerFeature"
BuildableName = "AudioBannerFeature"
BlueprintName = "AudioBannerFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_AudioDownloadsFeature"
BuildableName = "QuranEngine_AudioDownloadsFeature"
BlueprintName = "QuranEngine_AudioDownloadsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AudioDownloadsFeature"
BuildableName = "AudioDownloadsFeature"
BlueprintName = "AudioDownloadsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "MoreMenuFeature"
BuildableName = "MoreMenuFeature"
BlueprintName = "MoreMenuFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NoteEditorFeature"
BuildableName = "NoteEditorFeature"
BlueprintName = "NoteEditorFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BookmarksFeature"
BuildableName = "BookmarksFeature"
BlueprintName = "BookmarksFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FeaturesSupport"
BuildableName = "FeaturesSupport"
BlueprintName = "FeaturesSupport"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranPagesFeature"
BuildableName = "QuranPagesFeature"
BlueprintName = "QuranPagesFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranImageFeature"
BuildableName = "QuranImageFeature"
BlueprintName = "QuranImageFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReadingSelectorFeature"
BuildableName = "ReadingSelectorFeature"
BlueprintName = "ReadingSelectorFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranTranslationFeature"
BuildableName = "QuranTranslationFeature"
BlueprintName = "QuranTranslationFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranContentFeature"
BuildableName = "QuranContentFeature"
BlueprintName = "QuranContentFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationsFeature"
BuildableName = "TranslationsFeature"
BlueprintName = "TranslationsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NotesFeature"
BuildableName = "NotesFeature"
BlueprintName = "NotesFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationVerseFeature"
BuildableName = "TranslationVerseFeature"
BlueprintName = "TranslationVerseFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_SearchFeature"
BuildableName = "QuranEngine_SearchFeature"
BlueprintName = "QuranEngine_SearchFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SearchFeature"
BuildableName = "SearchFeature"
BlueprintName = "SearchFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "HomeFeature"
BuildableName = "HomeFeature"
BlueprintName = "HomeFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranViewFeature"
BuildableName = "QuranViewFeature"
BlueprintName = "QuranViewFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SettingsFeature"
BuildableName = "SettingsFeature"
BlueprintName = "SettingsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SettingsService"
BuildableName = "SettingsService"
BlueprintName = "SettingsService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AppStructureFeature"
BuildableName = "AppStructureFeature"
BlueprintName = "AppStructureFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_NoorFont"
BuildableName = "QuranEngine_NoorFont"
BlueprintName = "QuranEngine_NoorFont"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NoorFont"
BuildableName = "NoorFont"
BlueprintName = "NoorFont"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_TranslationsFeature"
BuildableName = "QuranEngine_TranslationsFeature"
BlueprintName = "QuranEngine_TranslationsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_QuranResources"
BuildableName = "QuranEngine_QuranResources"
BlueprintName = "QuranEngine_QuranResources"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranResources"
BuildableName = "QuranResources"
BlueprintName = "QuranResources"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AuthenticationClient"
BuildableName = "AuthenticationClient"
BlueprintName = "AuthenticationClient"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "OAuthService"
BuildableName = "OAuthService"
BlueprintName = "OAuthService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "OAuthServiceAppAuthImpl"
BuildableName = "OAuthServiceAppAuthImpl"
BlueprintName = "OAuthServiceAppAuthImpl"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "OAuthServiceFake"
BuildableName = "OAuthServiceFake"
BlueprintName = "OAuthServiceFake"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranProfileService"
BuildableName = "QuranProfileService"
BlueprintName = "QuranProfileService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SecurePersistence"
BuildableName = "SecurePersistence"
BlueprintName = "SecurePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SyncedPageBookmarkPersistence"
BuildableName = "SyncedPageBookmarkPersistence"
BlueprintName = "SyncedPageBookmarkPersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<TestPlans>
<TestPlanReference
reference = "container:QuranEngine-Package.xctestplan"
default = "YES">
</TestPlanReference>
</TestPlans>
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BatchDownloaderTests"
BuildableName = "BatchDownloaderTests"
BlueprintName = "BatchDownloaderTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CachingTests"
BuildableName = "CachingTests"
BlueprintName = "CachingTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CoreDataPersistenceTests"
BuildableName = "CoreDataPersistenceTests"
BlueprintName = "CoreDataPersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "LastPagePersistenceTests"
BuildableName = "LastPagePersistenceTests"
BlueprintName = "LastPagePersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NetworkSupportTests"
BuildableName = "NetworkSupportTests"
BlueprintName = "NetworkSupportTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "NotePersistenceTests"
BuildableName = "NotePersistenceTests"
BlueprintName = "NotePersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "PageBookmarkPersistenceTests"
BuildableName = "PageBookmarkPersistenceTests"
BlueprintName = "PageBookmarkPersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranAudioKitTests"
BuildableName = "QuranAudioKitTests"
BlueprintName = "QuranAudioKitTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranKitTests"
BuildableName = "QuranKitTests"
BlueprintName = "QuranKitTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranTextKitTests"
BuildableName = "QuranTextKitTests"
BlueprintName = "QuranTextKitTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SQLitePersistenceTests"
BuildableName = "SQLitePersistenceTests"
BlueprintName = "SQLitePersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationServiceTests"
BuildableName = "TranslationServiceTests"
BlueprintName = "TranslationServiceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "UtilitiesTests"
BuildableName = "UtilitiesTests"
BlueprintName = "UtilitiesTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReciterServiceTests"
BuildableName = "ReciterServiceTests"
BlueprintName = "ReciterServiceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReadingServiceTests"
BuildableName = "ReadingServiceTests"
BlueprintName = "ReadingServiceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "WordTextServiceTests"
BuildableName = "WordTextServiceTests"
BlueprintName = "WordTextServiceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ImageServiceTests"
BuildableName = "ImageServiceTests"
BlueprintName = "ImageServiceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AnnotationsServiceTests"
BuildableName = "AnnotationsServiceTests"
BlueprintName = "AnnotationsServiceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AllTargetsTests"
BuildableName = "AllTargetsTests"
BlueprintName = "AllTargetsTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AppMigratorTests"
BuildableName = "AppMigratorTests"
BlueprintName = "AppMigratorTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AuthenticationClientTests"
BuildableName = "AuthenticationClientTests"
BlueprintName = "AuthenticationClientTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SyncedPageBookmarkPersistenceTests"
BuildableName = "SyncedPageBookmarkPersistenceTests"
BlueprintName = "SyncedPageBookmarkPersistenceTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranEngine_TestResources"
BuildableName = "QuranEngine_TestResources"
BlueprintName = "QuranEngine_TestResources"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/QuranImageFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranImageFeature"
BuildableName = "QuranImageFeature"
BlueprintName = "QuranImageFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranImageFeature"
BuildableName = "QuranImageFeature"
BlueprintName = "QuranImageFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/QuranKit.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranKit"
BuildableName = "QuranKit"
BlueprintName = "QuranKit"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranKit"
BuildableName = "QuranKit"
BlueprintName = "QuranKit"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/QuranPagesFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranPagesFeature"
BuildableName = "QuranPagesFeature"
BlueprintName = "QuranPagesFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranPagesFeature"
BuildableName = "QuranPagesFeature"
BlueprintName = "QuranPagesFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/QuranTextKit.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranTextKit"
BuildableName = "QuranTextKit"
BlueprintName = "QuranTextKit"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranTextKit"
BuildableName = "QuranTextKit"
BlueprintName = "QuranTextKit"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/QuranTextKitTests.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranTextKitTests"
BuildableName = "QuranTextKitTests"
BlueprintName = "QuranTextKitTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/QuranTranslationFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranTranslationFeature"
BuildableName = "QuranTranslationFeature"
BlueprintName = "QuranTranslationFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "QuranTranslationFeature"
BuildableName = "QuranTranslationFeature"
BlueprintName = "QuranTranslationFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/ReadingSelectorFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReadingSelectorFeature"
BuildableName = "ReadingSelectorFeature"
BlueprintName = "ReadingSelectorFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReadingSelectorFeature"
BuildableName = "ReadingSelectorFeature"
BlueprintName = "ReadingSelectorFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/ReadingService.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReadingService"
BuildableName = "ReadingService"
BlueprintName = "ReadingService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReadingService"
BuildableName = "ReadingService"
BlueprintName = "ReadingService"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/ReciterListFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReciterListFeature"
BuildableName = "ReciterListFeature"
BlueprintName = "ReciterListFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ReciterListFeature"
BuildableName = "ReciterListFeature"
BlueprintName = "ReciterListFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/SQLitePersistence.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1620"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SQLitePersistence"
BuildableName = "SQLitePersistence"
BlueprintName = "SQLitePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SQLitePersistence"
BuildableName = "SQLitePersistence"
BlueprintName = "SQLitePersistence"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/SearchFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SearchFeature"
BuildableName = "SearchFeature"
BlueprintName = "SearchFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SearchFeature"
BuildableName = "SearchFeature"
BlueprintName = "SearchFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/SettingsFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SettingsFeature"
BuildableName = "SettingsFeature"
BlueprintName = "SettingsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SettingsFeature"
BuildableName = "SettingsFeature"
BlueprintName = "SettingsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/SystemDependencies.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SystemDependencies"
BuildableName = "SystemDependencies"
BlueprintName = "SystemDependencies"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SystemDependencies"
BuildableName = "SystemDependencies"
BlueprintName = "SystemDependencies"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/SystemDependenciesFake.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SystemDependenciesFake"
BuildableName = "SystemDependenciesFake"
BlueprintName = "SystemDependenciesFake"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SystemDependenciesFake"
BuildableName = "SystemDependenciesFake"
BlueprintName = "SystemDependenciesFake"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/Timing.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Timing"
BuildableName = "Timing"
BlueprintName = "Timing"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Timing"
BuildableName = "Timing"
BlueprintName = "Timing"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/TranslationService.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationService"
BuildableName = "TranslationService"
BlueprintName = "TranslationService"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationService"
BuildableName = "TranslationService"
BlueprintName = "TranslationService"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/TranslationsFeature.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationsFeature"
BuildableName = "TranslationsFeature"
BlueprintName = "TranslationsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "TranslationsFeature"
BuildableName = "TranslationsFeature"
BlueprintName = "TranslationsFeature"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/UIx.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "UIx"
BuildableName = "UIx"
BlueprintName = "UIx"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "UIx"
BuildableName = "UIx"
BlueprintName = "UIx"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/Utilities.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Utilities"
BuildableName = "Utilities"
BlueprintName = "Utilities"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Utilities"
BuildableName = "Utilities"
BlueprintName = "Utilities"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/UtilitiesTests.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "UtilitiesTests"
BuildableName = "UtilitiesTests"
BlueprintName = "UtilitiesTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/VLogging.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "VLogging"
BuildableName = "VLogging"
BlueprintName = "VLogging"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "VLogging"
BuildableName = "VLogging"
BlueprintName = "VLogging"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: .swiftpm/xcode/xcshareddata/xcschemes/VersionUpdater.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "VersionUpdater"
BuildableName = "VersionUpdater"
BlueprintName = "VersionUpdater"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "VersionUpdater"
BuildableName = "VersionUpdater"
BlueprintName = "VersionUpdater"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: AllTargetsTests/Empty.swift
================================================
//
// Empty.swift
//
//
// Created by Mohamed Afifi on 2023-06-17.
//
import XCTest
/// Empty test class to help ensure we have at least one test case.
///
/// AllTargetsTests is a test target to link all other targets to ensure we produce coverage info for all code.
final class Empty: XCTestCase {
func testEmpty() throws {
}
}
================================================
FILE: Core/Analytics/AnalyticsLibrary.swift
================================================
//
// AnalyticsLibrary.swift
//
//
// Created by Mohamed Afifi on 2023-06-12.
//
public protocol AnalyticsLibrary: Sendable {
func logEvent(_ name: String, value: String)
}
================================================
FILE: Core/AppMigrator/Sources/AppMigrator.swift
================================================
//
// AppMigrator.swift
// Quran
//
// Created by Mohamed Afifi on 9/10/18.
//
// Quran for iOS is a Quran reading application for iOS.
// Copyright (C) 2018 Quran.com
//
import Foundation
import SystemDependencies
import VLogging
public protocol Migrator {
var blocksUI: Bool { get }
var uiTitle: String? { get }
func execute(update: LaunchVersionUpdate) async
}
public enum MigrationStatus: Equatable {
case noMigration
case migrate(blocksUI: Bool, titles: Set<String>)
}
public final class AppMigrator {
// MARK: Lifecycle
public convenience init() {
self.init(bundle: DefaultSystemBundle())
}
public init(bundle: SystemBundle) {
updater = AppVersionUpdater(bundle: bundle)
}
// MARK: Public
public var launchVersion: LaunchVersionUpdate { updater.launchVersion() }
public func register(migrator: Migrator, for version: AppVersion) {
migrators.append((version, migrator))
}
public func migrationStatus() -> MigrationStatus {
let updaters = versionUpdaters()
if updaters.isEmpty {
updater.commitUpdates()
return .noMigration
} else {
let blocksUI = updaters.contains { $0.blocksUI }
let titles = Set(updaters.compactMap(\.uiTitle))
return .migrate(blocksUI: blocksUI, titles: titles)
}
}
public func migrate() async {
let launchVersion = updater.launchVersion()
logger.notice("Version Update: \(launchVersion)")
await withTaskGroup(of: Void.self) { taskGroup in
let updaters = versionUpdaters()
for updater in updaters {
taskGroup.addTask {
await updater.execute(update: launchVersion)
}
}
}
updater.commitUpdates()
}
// MARK: Private
private var migrators: [(AppVersion, Migrator)] = []
private let updater: AppVersionUpdater
private func versionUpdaters() -> [Migrator] {
switch launchVersion {
case .update(let old, _), .firstLaunch(version: let old), .sameVersion(version: let old):
return updaters(for: old)
}
}
private func updaters(for version: String) -> [Migrator] {
migrators // Returns updaters where: oldVersion < updaters.version.
.filter { version.compare($0.0, options: .numeric) == .orderedAscending }
.map { $1 }
}
}
================================================
FILE: Core/AppMigrator/Sources/AppVersionUpdater.swift
================================================
//
// AppVersionUpdater.swift
// Quran
//
// Created by Mohamed Afifi on 5/2/17.
//
// Quran for iOS is a Quran reading application for iOS.
// Copyright (C) 2017 Quran.com
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
import Preferences
import SystemDependencies
public typealias AppVersion = String
public enum LaunchVersionUpdate {
case sameVersion(version: AppVersion)
case firstLaunch(version: AppVersion)
case update(from: AppVersion, to: AppVersion)
}
struct AppVersionPreferences {
// MARK: Lifecycle
private init() {}
// MARK: Internal
static let shared = AppVersionPreferences()
@Preference(appVersion)
var appVersion: String?
static func reset() {
Preferences.shared.removeValueForKey(appVersion)
}
// MARK: Private
private static let appVersion = PreferenceKey<String?>(key: "appVersion", defaultValue: nil)
}
struct AppVersionUpdater {
// MARK: Lifecycle
init(bundle: SystemBundle) {
self.bundle = bundle
}
// MARK: Internal
func launchVersion() -> LaunchVersionUpdate {
let current = current
let previous = preferences.appVersion
if let previous {
if previous == current {
return .sameVersion(version: current)
} else {
return .update(from: previous, to: current)
}
} else {
return .firstLaunch(version: current)
}
}
/// eventually we should update the app version
func commitUpdates() {
preferences.appVersion = current
}
// MARK: Private
private let bundle: SystemBundle
private let preferences = AppVersionPreferences.shared
private var current: String {
guard let version = bundle.infoValue(forKey: "CFBundleShortVersionString") as? String else {
fatalError("CFBundleShortVersionString should be set in your main bundle.")
}
return version
}
}
================================================
FILE: Core/AppMigrator/Tests/AppMigratorTests.swift
================================================
//
// AppMigratorTests.swift
//
//
// Created by Mohamed Afifi on 2023-05-17.
//
import SystemDependenciesFake
import XCTest
@testable import AppMigrator
final class AppMigratorTests: XCTestCase {
// MARK: Internal
override func setUp() async throws {
try await super.setUp()
bundle = SystemBundleFake()
service = AppMigrator(bundle: bundle)
worker1 = MigratorTester(blocksUI: true, uiTitle: "Worker 1")
worker2 = MigratorTester(blocksUI: true, uiTitle: "Worker 2")
nonBlockingWorker = MigratorTester(blocksUI: false, uiTitle: nil)
service.register(migrator: worker1, for: "1.16.0")
service.register(migrator: worker2, for: "1.17.0")
service.register(migrator: nonBlockingWorker, for: "1.18.0")
bundle.info["CFBundleShortVersionString"] = "1.18.0"
}
override func tearDown() async throws {
try await super.tearDown()
AppVersionPreferences.reset()
}
func test_futureNewInstallation() async {
await verifyNoMigration()
}
func test_currentNewInstallation() async {
bundle.info["CFBundleShortVersionString"] = "1.18.0"
await verifyNoMigration()
}
func test_sameVersion() async {
preferences.appVersion = "1.18.0"
bundle.info["CFBundleShortVersionString"] = preferences.appVersion
await verifyNoMigration()
}
func test_upgrade_noUpdater() async {
preferences.appVersion = "1.18.0"
bundle.info["CFBundleShortVersionString"] = "1.19.0"
await verifyNoMigration()
}
func test_upgrade_runLastUpdater() async {
preferences.appVersion = "1.17.0"
let status = service.migrationStatus()
XCTAssertEqual(status, .migrate(blocksUI: false, titles: []))
await service.migrate()
XCTAssertNil(worker1.update)
XCTAssertNil(worker2.update)
XCTAssertNotNil(nonBlockingWorker.update)
}
func test_upgrade_runLastTwoUpdaters() async {
preferences.appVersion = "1.16.0"
let status = service.migrationStatus()
XCTAssertEqual(status, .migrate(blocksUI: true, titles: ["Worker 2"]))
await service.migrate()
XCTAssertNil(worker1.update)
XCTAssertNotNil(worker2.update)
XCTAssertNotNil(nonBlockingWorker.update)
}
func test_upgrade_runAllUpdaters() async {
preferences.appVersion = "1.15.0"
let status = service.migrationStatus()
XCTAssertEqual(status, .migrate(blocksUI: true, titles: ["Worker 1", "Worker 2"]))
await service.migrate()
XCTAssertNotNil(worker1.update)
XCTAssertNotNil(worker2.update)
XCTAssertNotNil(nonBlockingWorker.update)
}
// MARK: Private
private var service: AppMigrator!
private let preferences = AppVersionPreferences.shared
private var bundle: SystemBundleFake!
private var worker1: MigratorTester!
private var worker2: MigratorTester!
private var nonBlockingWorker: MigratorTester!
// MARK: - Helpers
private func verifyNoMigration(file: StaticString = #filePath, line: UInt = #line) async {
let status = service.migrationStatus()
XCTAssertEqual(status, .noMigration)
await service.migrate()
XCTAssertNil(worker1.update, file: file, line: line)
XCTAssertNil(worker2.update, file: file, line: line)
XCTAssertNil(nonBlockingWorker.update, file: file, line: line)
}
}
private final class MigratorTester: Migrator {
// MARK: Lifecycle
init(blocksUI: Bool, uiTitle: String?) {
self.blocksUI = blocksUI
self.uiTitle = uiTitle
}
// MARK: Internal
let blocksUI: Bool
let uiTitle: String?
var update: LaunchVersionUpdate?
func execute(update: LaunchVersionUpdate) async {
self.update = update
}
}
================================================
FILE: Core/AsyncUtilitiesForTesting/AsyncAlgorithms++.swift
================================================
//
// AsyncAlgorithms++.swift
//
//
// Created by Mohamed Afifi on 2023-05-28.
//
import AsyncAlgorithms
extension AsyncChannel {
public func next() async -> Element? {
var iterator = makeAsyncIterator()
return await iterator.next()
}
}
extension AsyncChannel where Element == Void {
public func send() async {
await send(())
}
}
================================================
FILE: Core/AsyncUtilitiesForTesting/AsyncAsserts.swift
================================================
//
// AsyncAsserts.swift
//
//
// Created by Mohamed Afifi on 2023-06-03.
//
import Foundation
import XCTest
// Credits to @pointfreeco
// https://github.com/pointfreeco/combine-schedulers
extension Task where Success == Failure, Failure == Never {
public static func megaYield(count: Int = 10) async {
for _ in 1 ... count {
await Task<Void, Never>.detached(priority: .background) { await Task.yield() }.value
}
}
}
public func AsyncAssertEqual<T>(
_ expression1: @autoclosure () async throws -> T,
_ expression2: @autoclosure () async throws -> T,
_ message: @autoclosure () -> String = "",
file: StaticString = #filePath,
line: UInt = #line
) async rethrows where T: Equatable {
let e1 = try await expression1()
let e2 = try await expression2()
XCTAssertEqual(e1, e2, message(), file: file, line: line)
}
public func AsyncAssertThrows(
_ expression: @autoclosure () async throws -> Void,
_ expectedError: NSError?,
_ message: @autoclosure () -> String = "Didn't throw",
file: StaticString = #filePath,
line: UInt = #line
) async {
do {
try await expression()
XCTFail(message(), file: file, line: line)
} catch {
if let expectedError {
XCTAssertEqual(error as NSError?, expectedError, message(), file: file, line: line)
}
}
}
public func AsyncUnwrap<T>(
_ expression: @autoclosure () async throws -> T?,
_ message: @autoclosure () -> String = "",
file: StaticString = #filePath,
line: UInt = #line
) async throws -> T {
let value = try await expression()
return try XCTUnwrap(value, message(), file: file, line: line)
}
================================================
FILE: Core/AsyncUtilitiesForTesting/PublisherCollector.swift
================================================
//
// PublisherCollector.swift
//
//
// Created by Mohamed Afifi on 2023-05-30.
//
import Combine
public final class PublisherCollector<T> {
// MARK: Lifecycle
public init<P: Publisher>(_ publisher: P) where P.Output == T, P.Failure == Never {
cancellable = publisher.sink(receiveValue: { [weak self] item in
self?.items.append(item)
})
}
// MARK: Public
public var cancellable: AnyCancellable?
public var items: [T] = []
}
================================================
FILE: Core/AsyncUtilitiesForTesting/XCTestCase+PromiseKit.swift
================================================
//
// XCTestCase+PromiseKit.swift
//
//
// Created by Mohamed Afifi on 2021-12-19.
//
import XCTest
extension XCTestCase {
public static let defaultTimeout: TimeInterval = 5
@nonobjc
public func wait(for queue: DispatchQueue, timeout: TimeInterval = defaultTimeout) {
let expectation = expectation(description: "DispatchQueue")
queue.async(flags: .barrier) {
expectation.fulfill()
}
wait(for: [expectation], timeout: timeout)
}
// From: https://www.swiftbysundell.com/articles/testing-error-code-paths-in-swift/
public func assert<E: Error & Equatable>(
_ expression: @autoclosure () throws -> some Any,
throws error: E,
in file: StaticString = #file,
line: UInt = #line
) {
var thrownError: Error?
XCTAssertThrowsError(
try expression(),
gitextract_dc9d8v7i/ ├── .github/ │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .swift-version ├── .swiftformat ├── .swiftlint.yml ├── .swiftpm/ │ └── xcode/ │ └── xcshareddata/ │ └── xcschemes/ │ ├── AllTargetsTests.xcscheme │ ├── AnnotationsService.xcscheme │ ├── AppStructureFeature.xcscheme │ ├── BatchDownloader.xcscheme │ ├── BookmarksFeature.xcscheme │ ├── Caching.xcscheme │ ├── Crashing.xcscheme │ ├── HomeFeature.xcscheme │ ├── LastPagePersistence.xcscheme │ ├── Localization.xcscheme │ ├── MoreMenuFeature.xcscheme │ ├── NetworkSupport.xcscheme │ ├── NoorUI.xcscheme │ ├── NotePersistence.xcscheme │ ├── NotesFeature.xcscheme │ ├── OAuthServiceAppAuthImpl.xcscheme │ ├── PageBookmarkPersistence.xcscheme │ ├── Preferences.xcscheme │ ├── QuranAudioKit.xcscheme │ ├── QuranEngine-Package.xcscheme │ ├── QuranImageFeature.xcscheme │ ├── QuranKit.xcscheme │ ├── QuranPagesFeature.xcscheme │ ├── QuranTextKit.xcscheme │ ├── QuranTextKitTests.xcscheme │ ├── QuranTranslationFeature.xcscheme │ ├── ReadingSelectorFeature.xcscheme │ ├── ReadingService.xcscheme │ ├── ReciterListFeature.xcscheme │ ├── SQLitePersistence.xcscheme │ ├── SearchFeature.xcscheme │ ├── SettingsFeature.xcscheme │ ├── SystemDependencies.xcscheme │ ├── SystemDependenciesFake.xcscheme │ ├── Timing.xcscheme │ ├── TranslationService.xcscheme │ ├── TranslationsFeature.xcscheme │ ├── UIx.xcscheme │ ├── Utilities.xcscheme │ ├── UtilitiesTests.xcscheme │ ├── VLogging.xcscheme │ └── VersionUpdater.xcscheme ├── AllTargetsTests/ │ └── Empty.swift ├── Core/ │ ├── Analytics/ │ │ └── AnalyticsLibrary.swift │ ├── AppMigrator/ │ │ ├── Sources/ │ │ │ ├── AppMigrator.swift │ │ │ └── AppVersionUpdater.swift │ │ └── Tests/ │ │ └── AppMigratorTests.swift │ ├── AsyncUtilitiesForTesting/ │ │ ├── AsyncAlgorithms++.swift │ │ ├── AsyncAsserts.swift │ │ ├── PublisherCollector.swift │ │ ├── XCTestCase+PromiseKit.swift │ │ └── XCTestCase+Publisher.swift │ ├── Caching/ │ │ ├── Sources/ │ │ │ ├── Cache.swift │ │ │ ├── OperationCacheableService.swift │ │ │ └── PagesCacheableService.swift │ │ └── Tests/ │ │ ├── CacheTests.swift │ │ ├── OperationCacheableServiceTests.swift │ │ └── PagesCacheableServiceTests.swift │ ├── Crashing/ │ │ ├── Crasher.swift │ │ └── Global.swift │ ├── Localization/ │ │ ├── Localizations.swift │ │ ├── NumberFormatter+Extension.swift │ │ ├── Resources/ │ │ │ ├── ar.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── de.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── en.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── es.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── fa.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── fr.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── kk.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── ms.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ └── Readers.strings │ │ │ ├── nl.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── pt.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ └── Readers.strings │ │ │ ├── ru.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── tr.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ └── Suras.strings │ │ │ ├── ug.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── uz.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ ├── vi.lproj/ │ │ │ │ ├── Android.strings │ │ │ │ ├── Android.stringsdict │ │ │ │ ├── Localizable.strings │ │ │ │ ├── Readers.strings │ │ │ │ └── Suras.strings │ │ │ └── zh.lproj/ │ │ │ ├── Android.strings │ │ │ ├── Android.stringsdict │ │ │ └── Localizable.strings │ │ └── resource_bundle.swift │ ├── Locking/ │ │ ├── NSLocking+Extension.swift │ │ └── Protected.swift │ ├── OAuthService/ │ │ └── OAuthService.swift │ ├── OAuthServiceAppAuthImpl/ │ │ └── OAuthServiceAppAuthImpl.swift │ ├── OAuthServiceFake/ │ │ └── OAuthServiceFake.swift │ ├── Preferences/ │ │ ├── Preference.swift │ │ ├── PreferenceKey.swift │ │ ├── PreferenceTransformer.swift │ │ └── Preferences.swift │ ├── QueuePlayer/ │ │ ├── AudioInterruptionMonitor.swift │ │ ├── AudioPlayer.swift │ │ ├── AudioPlaying.swift │ │ ├── AudioRequest.swift │ │ ├── NowPlayingUpdater.swift │ │ ├── Player.swift │ │ ├── PlayerItemInfo.swift │ │ ├── QueuePlayer.swift │ │ └── Runs.swift │ ├── SecurePersistence/ │ │ └── SecurePersistence.swift │ ├── SystemDependencies/ │ │ ├── EventObserver.swift │ │ ├── FileSystem.swift │ │ ├── KeychainAccess.swift │ │ ├── PersistentHistoryTransaction.swift │ │ ├── SystemBundle.swift │ │ ├── SystemTime.swift │ │ └── Zipper.swift │ ├── SystemDependenciesFake/ │ │ ├── AsyncChannelEventObserver.swift │ │ ├── FileSystemFake.swift │ │ ├── KeychainAccessFake.swift │ │ ├── PersistentHistoryTransactionFake.swift │ │ ├── SystemBundleFake.swift │ │ ├── SystemTimeFake.swift │ │ └── ZipperFake.swift │ ├── Timing/ │ │ └── Timer.swift │ ├── Utilities/ │ │ ├── Sources/ │ │ │ ├── Extensions/ │ │ │ │ ├── Array+Extension.swift │ │ │ │ ├── Error+Extension.swift │ │ │ │ ├── FileManager+Extension.swift │ │ │ │ ├── Int+Extension.swift │ │ │ │ ├── Result+Extension.swift │ │ │ │ ├── Sequence+Extension.swift │ │ │ │ ├── String+Chunking.swift │ │ │ │ ├── String+Extension.swift │ │ │ │ ├── Task+Extension.swift │ │ │ │ └── URL+Extension.swift │ │ │ └── Features/ │ │ │ ├── Address.swift │ │ │ ├── AsyncInitializer.swift │ │ │ ├── AsyncPublisher.swift │ │ │ ├── AsyncThrowingPublisher.swift │ │ │ ├── Attempt.swift │ │ │ ├── Locking.swift │ │ │ ├── MultiPredicateComparer.swift │ │ │ ├── MulticastContinuation.swift │ │ │ ├── Pair.swift │ │ │ └── RelativeFilePath.swift │ │ └── Tests/ │ │ ├── AsyncPublisherTests.swift │ │ ├── AsyncThrowingPublisherTests.swift │ │ ├── String+ChunkingTests.swift │ │ └── String+ExtensionTests.swift │ ├── VLogging/ │ │ └── Logger.swift │ └── WeakSet/ │ ├── UnsafeWeakSet.swift │ └── WeakSet.swift ├── Data/ │ ├── AudioTimingPersistence/ │ │ ├── AyahTimingPersistence.swift │ │ └── GRDBAyahTimingPersistence.swift │ ├── AuthenticationClient/ │ │ ├── Sources/ │ │ │ ├── AuthenticationClient.swift │ │ │ ├── AuthenticationClientMobileSyncImpl.swift │ │ │ └── AuthentincationClientImpl.swift │ │ └── Tests/ │ │ └── AuthenticationClientTests.swift │ ├── BatchDownloader/ │ │ ├── Sources/ │ │ │ ├── DownloadProgress.swift │ │ │ ├── Downloader/ │ │ │ │ ├── DownloadBatchDataController.swift │ │ │ │ ├── DownloadBatchResponse.swift │ │ │ │ ├── DownloadManager.swift │ │ │ │ ├── DownloadSessionDelegate.swift │ │ │ │ ├── DownloadsObserver.swift │ │ │ │ ├── DownloadsPersistence.swift │ │ │ │ └── GRDBDownloadsPersistence.swift │ │ │ ├── Entities/ │ │ │ │ ├── Download.swift │ │ │ │ └── DownloadRequest.swift │ │ │ └── Errors/ │ │ │ └── FileSystemError.swift │ │ └── Tests/ │ │ ├── DownloadManagerTests.swift │ │ └── HistoryProgressListener.swift │ ├── BatchDownloaderFake/ │ │ └── BatchDownloaderFake.swift │ ├── CoreDataModel/ │ │ ├── Quran.xcdatamodeld/ │ │ │ └── Quran.xcdatamodel/ │ │ │ └── contents │ │ ├── Resources.swift │ │ └── Schema.swift │ ├── CoreDataPersistence/ │ │ ├── Sources/ │ │ │ ├── CoreDataPersistentHistoryProcessor.swift │ │ │ ├── CoreDataPublisher.swift │ │ │ ├── CoreDataStack.swift │ │ │ ├── CoreDataTypes.swift │ │ │ ├── NSManagedObjectContext+Extensions.swift │ │ │ └── merging/ │ │ │ ├── CoreDataEntityUniquifier.swift │ │ │ ├── CoreDataInsertedEntitiesRetriever.swift │ │ │ ├── CoreDataPersistentHistoryTransactionsMerger.swift │ │ │ └── SimpleCoreDataEntityUniquifier.swift │ │ └── Tests/ │ │ ├── CoreDataInsertedEntitiesRetrieverTests.swift │ │ ├── CoreDataPublisherTests.swift │ │ ├── CoreDataStackTests.swift │ │ └── SimpleCoreDataEntityUniquifierTests.swift │ ├── CoreDataPersistenceTestSupport/ │ │ ├── CoreDataStack+Extensions.swift │ │ ├── LastPage+++.swift │ │ ├── Note+++.swift │ │ └── PageBookmark+++.swift │ ├── LastPagePersistence/ │ │ ├── Sources/ │ │ │ ├── CoreDataLastPageOverflowHandler.swift │ │ │ ├── CoreDataLastPagePersistence.swift │ │ │ ├── CoreDataLastPageUniquifier.swift │ │ │ ├── LastPagePersistence.swift │ │ │ └── LastPagePersistenceModel.swift │ │ └── Tests/ │ │ ├── CoreDataLastPagePersistenceTests.swift │ │ └── CoreDataLastPageUniquifierTests.swift │ ├── LinePagePersistence/ │ │ ├── Sources/ │ │ │ ├── GRDBLinePagePersistence.swift │ │ │ ├── LinePageModels.swift │ │ │ └── LinePagePersistence.swift │ │ └── Tests/ │ │ └── LinePagePersistenceTests.swift │ ├── NetworkSupport/ │ │ ├── Sources/ │ │ │ ├── NetworkError.swift │ │ │ ├── NetworkManager.swift │ │ │ └── NetworkSession.swift │ │ └── Tests/ │ │ └── NetworkManagerTests.swift │ ├── NetworkSupportFake/ │ │ └── NetworkSessionFake.swift │ ├── NotePersistence/ │ │ ├── Sources/ │ │ │ ├── CoreDataNotePersistence.swift │ │ │ ├── CoreDataNoteUniquifier.swift │ │ │ ├── NotePersistence.swift │ │ │ └── NotePersistenceModel.swift │ │ └── Tests/ │ │ ├── CoreDataNotePersistenceTests.swift │ │ └── CoreDataNoteUniquifierTests.swift │ ├── PageBookmarkPersistence/ │ │ ├── Sources/ │ │ │ ├── CoreDataPageBookmarkPersistence.swift │ │ │ ├── CoreDataPageBookmarkUniquifier.swift │ │ │ ├── MobileSyncPageBookmarkPersistence.swift │ │ │ ├── PageBookmarkPersistence.swift │ │ │ └── PageBookmarkPersistenceModel.swift │ │ └── Tests/ │ │ └── CoreDataPageBookmarkPersistenceTests.swift │ ├── SQLitePersistence/ │ │ ├── Sources/ │ │ │ ├── DatabaseConnection.swift │ │ │ └── PersistenceError.swift │ │ └── Tests/ │ │ └── DatabaseConnectionTests.swift │ ├── SyncedPageBookmarkPersistence/ │ │ ├── Sources/ │ │ │ ├── GRDBSyncedPageBookmarkPersistence.swift │ │ │ ├── SyncedPageBookmarkPersistence.swift │ │ │ └── SyncedPageBookmarkPersistenceModel.swift │ │ └── Tests/ │ │ └── GRDBSyncedPageBookmarkPersistenceTests.swift │ ├── TranslationPersistence/ │ │ ├── ActiveTranslationsPersistence.swift │ │ └── GRDBActiveTranslationsPersistence.swift │ ├── VerseTextPersistence/ │ │ ├── DatabaseVersionPersistence.swift │ │ ├── GRDBDatabaseVersionPersistence.swift │ │ ├── GRDBVerseTextPersistence.swift │ │ └── VerseTextPersistence.swift │ ├── WordFramePersistence/ │ │ ├── GRDBWordFramePersistence.swift │ │ └── WordFramePersistence.swift │ └── WordTextPersistence/ │ ├── GRDBWordTextPersistence.swift │ └── WordTextPersistence.swift ├── Documentation/ │ └── MobileSyncLocalDevelopment.md ├── Domain/ │ ├── AnnotationsService/ │ │ ├── Sources/ │ │ │ ├── AnalyticsLibrary+Events.swift │ │ │ ├── LastPageService.swift │ │ │ ├── LastPageUpdater.swift │ │ │ ├── NoteService.swift │ │ │ ├── PageBookmarkService.swift │ │ │ └── QuranHighlightsService.swift │ │ └── Tests/ │ │ └── EmptyTests.swift │ ├── AudioTimingService/ │ │ └── ReciterTimingRetriever.swift │ ├── AudioUpdater/ │ │ ├── Sources/ │ │ │ ├── AudioUpdate.swift │ │ │ ├── AudioUpdatePreferences.swift │ │ │ ├── AudioUpdater.swift │ │ │ ├── AudioUpdatesNetworkManager.swift │ │ │ └── MD5Calculator.swift │ │ └── Tests/ │ │ └── AudioUpdaterTests.swift │ ├── ImageService/ │ │ ├── Sources/ │ │ │ ├── ImageDataService.swift │ │ │ ├── LinePageAssetService.swift │ │ │ ├── LinePageGeometry.swift │ │ │ └── LinePageWordFrameAdapter.swift │ │ └── Tests/ │ │ ├── ImageDataServiceTests.swift │ │ ├── LinePageAssetServiceTests.swift │ │ ├── LinePageGeometryTests.swift │ │ ├── LinePageWordFrameAdapterTests.swift │ │ ├── WordFrameTests.swift │ │ └── __Snapshots__/ │ │ └── ImageDataServiceTests/ │ │ ├── testGettingImageAtPage1.2.json │ │ ├── testGettingImageAtPage3.2.json │ │ └── testGettingImageAtPage604.2.json │ ├── QuranAudioKit/ │ │ ├── Sources/ │ │ │ ├── AudioPlayer/ │ │ │ │ ├── GaplessAudioRequestBuilder.swift │ │ │ │ ├── GappedAudioRequestBuilder.swift │ │ │ │ ├── QuranAudioPlayer.swift │ │ │ │ └── QuranAudioRequestBuilder.swift │ │ │ ├── Dependencies/ │ │ │ │ └── QueuingPlayer.swift │ │ │ ├── Downloads/ │ │ │ │ ├── Download+Types.swift │ │ │ │ └── QuranAudioDownloader.swift │ │ │ └── Preferences/ │ │ │ ├── AudioEnd+Localization.swift │ │ │ ├── AudioPreferences.swift │ │ │ └── PreferencesLastAyahFinder.swift │ │ └── Tests/ │ │ ├── AudioRequest+Extension.swift │ │ ├── GaplessAudioRequestBuilderTests.swift │ │ ├── GappedAudioRequestBuilderTests.swift │ │ ├── QueuePlayerFake.swift │ │ ├── QuranAudioDownloaderTests.swift │ │ ├── QuranAudioPlayerDelegateClosures.swift │ │ ├── QuranAudioPlayerTests.swift │ │ └── __Snapshots__/ │ │ └── QuranAudioPlayerTests/ │ │ ├── testPlayingDownloadedGaplessReciter1FullSura.1.json │ │ ├── testPlayingDownloadedGaplessReciter1SuraEndsEarly.1.json │ │ ├── testPlayingDownloadedGaplessReciter1SurasHasEndTimestamp.1.json │ │ ├── testPlayingDownloadedGaplessReciter1SurasHasEndTimestampStopBeforeEnd.1.json │ │ ├── testPlayingDownloadedGaplessReciter2Suras1stSuraHasEndTimestamp.1.json │ │ ├── testPlayingDownloadedGaplessReciter3FullSura.1.json │ │ ├── testPlayingDownloadedGappedReciter1FullSura.1.json │ │ ├── testPlayingDownloadedGappedReciter1SuraEndsEarly.1.json │ │ ├── testPlayingDownloadedGappedReciter3FullSura.1.json │ │ └── testPlayingDownloadedGappedReciterAtTawbah.1.json │ ├── QuranResources/ │ │ └── QuranResources.swift │ ├── QuranTextKit/ │ │ ├── Sources/ │ │ │ ├── Localization/ │ │ │ │ └── QuranKit+Localization.swift │ │ │ ├── Preferences/ │ │ │ │ ├── FontSizePreferences.swift │ │ │ │ └── QuranContentStatePreferences.swift │ │ │ ├── Search/ │ │ │ │ ├── Recents/ │ │ │ │ │ └── SearchRecentsService.swift │ │ │ │ └── Searchers/ │ │ │ │ ├── CompositeSearcher.swift │ │ │ │ ├── NumberSearcher.swift │ │ │ │ ├── PersistenceSearcher.swift │ │ │ │ ├── SearchTerm.swift │ │ │ │ ├── Searcher.swift │ │ │ │ ├── SuraSearcher.swift │ │ │ │ └── TranslationSearcher.swift │ │ │ ├── ShareableText/ │ │ │ │ └── ShareableVerseTextRetriever.swift │ │ │ ├── TranslationText/ │ │ │ │ └── QuranTextDataService.swift │ │ │ └── TwoPages/ │ │ │ └── TwoPagesUtils.swift │ │ └── Tests/ │ │ ├── CompositeSearcherTests.swift │ │ ├── Encoding.swift │ │ ├── QuartersDataRetrieverTests.swift │ │ ├── QuranTextDataServiceTests.swift │ │ ├── SearchRecentsServiceTests.swift │ │ ├── ShareableVerseTextRetrieverTests.swift │ │ ├── TestData.swift │ │ ├── TwoPagesUtilsTests.swift │ │ └── __Snapshots__/ │ │ ├── CompositeSearcherTests/ │ │ │ ├── testMatchArabicQuran.1.json │ │ │ ├── testMatchArabicQuran.2.json │ │ │ ├── testMatchArabicSuraName.1.json │ │ │ ├── testMatchArabicSuraName.2.json │ │ │ ├── testMatchMultipleSuras.1.json │ │ │ ├── testMatchMultipleSuras.2.json │ │ │ ├── testMatchOneSura.1.json │ │ │ ├── testMatchOneSura.2.json │ │ │ ├── testMatchSuraAndQuran.1.json │ │ │ ├── testMatchSuraAndQuran.2.json │ │ │ ├── testMatchSuraAndQuran.3.json │ │ │ ├── testMatchSuraAndQuran.4.json │ │ │ ├── testMatchSuraAndQuran.5.json │ │ │ ├── testMatchSuraAndQuran.6.json │ │ │ ├── testMatchSuraAndQuranWithIncorrectTashkeel.1.json │ │ │ ├── testMatchSuraAndQuranWithIncorrectTashkeel.2.json │ │ │ ├── testMatchTranslation.1.json │ │ │ ├── testMatchTranslation.2.json │ │ │ ├── testNumbers.1.json │ │ │ ├── testNumbers.2.json │ │ │ └── testNumbers.3.json │ │ └── SearchRecentsServiceTests/ │ │ ├── testPopularTerms.1.json │ │ └── testPopularTerms.2.json │ ├── ReadingService/ │ │ ├── Sources/ │ │ │ ├── ReadingPreferences.swift │ │ │ ├── ReadingRemoteResources.swift │ │ │ ├── ReadingResourceDownloader.swift │ │ │ └── ReadingResourcesService.swift │ │ └── Tests/ │ │ ├── ReadingRemoteResourcesFake.swift │ │ └── ReadingResourcesServiceTests.swift │ ├── ReciterService/ │ │ ├── Sources/ │ │ │ ├── AudioFileListRetriever.swift │ │ │ ├── AudioUnzipper.swift │ │ │ ├── DownloadedRecitersService.swift │ │ │ ├── RecentRecitersService.swift │ │ │ ├── Reciter+Localization.swift │ │ │ ├── ReciterAudioDeleter.swift │ │ │ ├── ReciterDataRetriever.swift │ │ │ ├── ReciterPreferences.swift │ │ │ └── ReciterSizeInfoRetriever.swift │ │ └── Tests/ │ │ ├── DownloadedRecitersServiceTests.swift │ │ ├── RecentRecitersServiceTests.swift │ │ └── ReciterSizeInfoRetrieverTests.swift │ ├── ReciterServiceFake/ │ │ ├── Reciter+Fixture.swift │ │ └── Reciter+Preparation.swift │ ├── SettingsService/ │ │ ├── ReviewPersistence.swift │ │ └── ReviewService.swift │ ├── TestResources/ │ │ └── TestResources.swift │ ├── TranslationService/ │ │ ├── Sources/ │ │ │ ├── LocalTranslationsRetriever.swift │ │ │ ├── SelectedTranslationsPreferences.swift │ │ │ ├── TranslationDeleter.swift │ │ │ ├── TranslationNetworkManager.swift │ │ │ ├── TranslationUnzipper.swift │ │ │ ├── TranslationsDownloader.swift │ │ │ ├── TranslationsParser.swift │ │ │ ├── TranslationsRepository.swift │ │ │ └── TranslationsVersionUpdater.swift │ │ └── Tests/ │ │ ├── LocalTranslationsRetrieverTests.swift │ │ ├── SelectedTranslationsPreferencesTests.swift │ │ ├── TranslationDeleterTests.swift │ │ ├── TranslationsDownloaderTests.swift │ │ └── TranslationsRepositoryTests.swift │ ├── TranslationServiceFake/ │ │ ├── LocalTranslationsFake.swift │ │ └── TranslationTestData.swift │ ├── WordFrameService/ │ │ ├── WordFrame+Extension.swift │ │ └── WordFrameProcessor.swift │ └── WordTextService/ │ ├── Sources/ │ │ ├── WordTextPreferences.swift │ │ └── WordTextService.swift │ └── Tests/ │ └── WordTextServiceTests.swift ├── Example/ │ ├── QuranEngineApp/ │ │ ├── Classes/ │ │ │ ├── Analytics.swift │ │ │ ├── AppDelegate.swift │ │ │ ├── Container.swift │ │ │ ├── QuranEngineApp-Bridging-Header.h │ │ │ └── SceneDelegate.swift │ │ ├── Info.plist │ │ └── Resources/ │ │ ├── Assets.xcassets/ │ │ │ ├── AccentColor.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── app-image.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── quran-engine2.imageset/ │ │ │ │ └── Contents.json │ │ │ └── readings/ │ │ │ ├── Contents.json │ │ │ ├── hafs_1405.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── hafs_1421.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── hafs_1439.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── hafs_1440.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── hafs_1441.imageset/ │ │ │ │ └── Contents.json │ │ │ └── tajweed.imageset/ │ │ │ └── Contents.json │ │ ├── Base.lproj/ │ │ │ └── LaunchScreen.storyboard │ │ └── reciters.plist │ └── QuranEngineApp.xcodeproj/ │ ├── project.pbxproj │ ├── project.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata/ │ └── xcschemes/ │ └── QuranEngineApp.xcscheme ├── Features/ │ ├── AdvancedAudioOptionsFeature/ │ │ ├── AdvancedAudioOptions.swift │ │ ├── AdvancedAudioOptionsBuilder.swift │ │ ├── AdvancedAudioOptionsView.swift │ │ ├── AdvancedAudioOptionsViewModel.swift │ │ ├── AdvancedAudioVersesViewController.swift │ │ └── Runs++.swift │ ├── AppDependencies/ │ │ └── AppDependencies.swift │ ├── AppMigrationFeature/ │ │ ├── FileSystemMigrator.swift │ │ ├── MigrationView.swift │ │ ├── MigrationViewController.swift │ │ └── RecitersPathMigrator.swift │ ├── AppStructureFeature/ │ │ ├── App/ │ │ │ ├── AppBuilder.swift │ │ │ ├── AppInteractor.swift │ │ │ └── AppViewController.swift │ │ ├── Common/ │ │ │ ├── TabBuilder.swift │ │ │ ├── TabInteractor.swift │ │ │ └── TabViewController.swift │ │ ├── Launch/ │ │ │ ├── LaunchBuilder.swift │ │ │ └── LaunchStartup.swift │ │ └── Tabs/ │ │ ├── BookmarksTab.swift │ │ ├── HomeTab.swift │ │ ├── NotesTab.swift │ │ ├── SearchTab.swift │ │ └── SettingsTab.swift │ ├── AudioBannerFeature/ │ │ ├── AudioBannerBuilder.swift │ │ ├── AudioBannerView.swift │ │ ├── AudioBannerViewModel.swift │ │ └── RemoteCommandsHandler.swift │ ├── AudioDownloadsFeature/ │ │ ├── AudioDownloadItem.swift │ │ ├── AudioDownloadsBuilder.swift │ │ ├── AudioDownloadsView.swift │ │ ├── AudioDownloadsViewController.swift │ │ └── AudioDownloadsViewModel.swift │ ├── AyahMenuFeature/ │ │ ├── AyahMenuBuilder.swift │ │ ├── AyahMenuViewController.swift │ │ └── AyahMenuViewModel.swift │ ├── BookmarksFeature/ │ │ ├── Sources/ │ │ │ ├── BookmarksBuilder.swift │ │ │ ├── BookmarksPreferences.swift │ │ │ ├── BookmarksView.swift │ │ │ ├── BookmarksViewController.swift │ │ │ └── BookmarksViewModel.swift │ │ └── Tests/ │ │ └── BookmarksViewModelTests.swift │ ├── FeaturesSupport/ │ │ ├── Analytics.Screen.swift │ │ ├── CommonAnalytics.swift │ │ └── QuranNavigator.swift │ ├── HomeFeature/ │ │ ├── HomeBuilder.swift │ │ ├── HomePreferences.swift │ │ ├── HomeView.swift │ │ ├── HomeViewController.swift │ │ ├── HomeViewModel.swift │ │ └── QuarterItem.swift │ ├── MoreMenuFeature/ │ │ ├── MoreMenuBuilder.swift │ │ ├── MoreMenuController.swift │ │ ├── MoreMenuModel.swift │ │ ├── MoreMenuViewModel.swift │ │ └── views/ │ │ ├── FontSizeStepper.swift │ │ ├── MoreMenuDeviceRotation.swift │ │ ├── MoreMenuEmpty.swift │ │ ├── MoreMenuFontSize.swift │ │ ├── MoreMenuModeSelector.swift │ │ ├── MoreMenuThemeSettings.swift │ │ ├── MoreMenuThemeSettingsViewModel.swift │ │ ├── MoreMenuTranslationSelector.swift │ │ ├── MoreMenuTwoPages.swift │ │ ├── MoreMenuVerticalScrolling.swift │ │ ├── MoreMenuView.swift │ │ ├── MoreMenuWordPointer.swift │ │ └── MoreMenuWordPointerType.swift │ ├── NoteEditorFeature/ │ │ ├── NoteEditorBuilder.swift │ │ ├── NoteEditorInteractor.swift │ │ └── NoteEditorViewController.swift │ ├── NotesFeature/ │ │ ├── NoteItem.swift │ │ ├── NotesBuilder.swift │ │ ├── NotesView.swift │ │ ├── NotesViewController.swift │ │ └── NotesViewModel.swift │ ├── QuranContentFeature/ │ │ ├── ContentBuilder.swift │ │ ├── ContentViewController.swift │ │ ├── ContentViewModel.swift │ │ ├── PagesView.swift │ │ └── QuranInput.swift │ ├── QuranImageFeature/ │ │ ├── ContentImageBuilder.swift │ │ ├── ContentImageView.swift │ │ ├── ContentImageViewModel.swift │ │ ├── ContentLineView.swift │ │ └── ContentLineViewModel.swift │ ├── QuranPagesFeature/ │ │ ├── Page+Localization.swift │ │ ├── PageGeometryActions.swift │ │ └── QuranPaginationView.swift │ ├── QuranTranslationFeature/ │ │ ├── ContentTranslationBuilder.swift │ │ ├── ContentTranslationView.swift │ │ ├── ContentTranslationViewModel.swift │ │ ├── Translation+UI.swift │ │ ├── TranslationFootnote.swift │ │ ├── TranslationItem+View.swift │ │ ├── TranslationItem.swift │ │ └── TranslationURL.swift │ ├── QuranViewFeature/ │ │ ├── QuranBuilder.swift │ │ ├── QuranInteractor.swift │ │ ├── QuranView.swift │ │ └── QuranViewController.swift │ ├── ReadingSelectorFeature/ │ │ ├── ReadingSelectorBuilder.swift │ │ ├── ReadingSelectorViewController.swift │ │ ├── ReadingSelectorViewModel.swift │ │ └── View/ │ │ ├── Reading+Resources.swift │ │ ├── ReadingDetails.swift │ │ ├── ReadingImage.swift │ │ ├── ReadingImageView.swift │ │ ├── ReadingInfo.swift │ │ ├── ReadingItem.swift │ │ └── ReadingSelector.swift │ ├── ReciterListFeature/ │ │ ├── ReciterListBuilder.swift │ │ ├── ReciterListView.swift │ │ ├── ReciterListViewController.swift │ │ └── ReciterListViewModel.swift │ ├── SearchFeature/ │ │ ├── SearchBuilder.swift │ │ ├── SearchTypes.swift │ │ ├── SearchView.swift │ │ ├── SearchViewController.swift │ │ └── SearchViewModel.swift │ ├── SettingsFeature/ │ │ ├── Sources/ │ │ │ ├── ContactUsService.swift │ │ │ ├── Diagnostics/ │ │ │ │ ├── DiagnosticsBuilder.swift │ │ │ │ ├── DiagnosticsService.swift │ │ │ │ ├── DiagnosticsView.swift │ │ │ │ └── DiagnosticsViewModel.swift │ │ │ ├── SettingsBuilder.swift │ │ │ ├── SettingsRootView.swift │ │ │ ├── SettingsRootViewModel.swift │ │ │ └── UIViewController+Share.swift │ │ └── Tests/ │ │ └── SettingsRootViewModelTests.swift │ ├── TranslationVerseFeature/ │ │ ├── TranslationVerseBuilder.swift │ │ ├── TranslationVerseView.swift │ │ ├── TranslationVerseViewController.swift │ │ └── TranslationVerseViewModel.swift │ ├── TranslationsFeature/ │ │ ├── TranslationItem.swift │ │ ├── TranslationsListBuilder.swift │ │ ├── TranslationsListView.swift │ │ ├── TranslationsListViewModel.swift │ │ └── TranslationsViewController.swift │ ├── WhatsNewFeature/ │ │ ├── AppWhatsNew.swift │ │ ├── AppWhatsNewController.swift │ │ ├── AppWhatsNewVersionStore.swift │ │ └── whats-new.plist │ └── WordPointerFeature/ │ ├── WordPointerBuilder.swift │ ├── WordPointerViewController.swift │ └── WordPointerViewModel.swift ├── LICENSE ├── Makefile ├── Model/ │ ├── QuranAnnotations/ │ │ ├── LastPage.swift │ │ ├── Note.swift │ │ ├── PageBookmark.swift │ │ └── QuranHighlights.swift │ ├── QuranAudio/ │ │ ├── AudioDownloadedSize.swift │ │ ├── AudioEnd.swift │ │ ├── AyahTiming.swift │ │ ├── RangeTiming.swift │ │ ├── Reciter+URLs.swift │ │ ├── Reciter.swift │ │ ├── SuraTiming.swift │ │ └── Timing.swift │ ├── QuranGeometry/ │ │ ├── AyahNumberLocation.swift │ │ ├── ImagePage.swift │ │ ├── SuraHeaderLocation.swift │ │ ├── WordFrame.swift │ │ ├── WordFrameCollection.swift │ │ ├── WordFrameLine.swift │ │ └── WordFrameScale.swift │ ├── QuranKit/ │ │ ├── Sources/ │ │ │ ├── AyahNumber.swift │ │ │ ├── Hizb.swift │ │ │ ├── Juz.swift │ │ │ ├── LastAyahFinder/ │ │ │ │ ├── JuzBasedLastAyahFinder.swift │ │ │ │ ├── LastAyahFinder.swift │ │ │ │ ├── PageBasedLastAyahFinder.swift │ │ │ │ ├── QuranBasedLastAyahFinder.swift │ │ │ │ └── SuraBasedLastAyahFinder.swift │ │ │ ├── LazyAtomic.swift │ │ │ ├── Navigatable.swift │ │ │ ├── Page.swift │ │ │ ├── Quarter.swift │ │ │ ├── Quran.swift │ │ │ ├── QuranGroup.swift │ │ │ ├── QuranValueStorage.swift │ │ │ ├── Reading.swift │ │ │ ├── ReadingInfo/ │ │ │ │ ├── Madani1405QuranReadingInfoRawData.swift │ │ │ │ ├── Madani1440QuranReadingInfoRawData.swift │ │ │ │ └── QuranReadingInfoRawData.swift │ │ │ ├── Sura.swift │ │ │ ├── Util.swift │ │ │ └── Word.swift │ │ └── Tests/ │ │ ├── AyahNumberTests.swift │ │ ├── HizbTests.swift │ │ ├── JuzTests.swift │ │ ├── PageTests.swift │ │ ├── QuarterTests.swift │ │ └── SuraTests.swift │ └── QuranText/ │ ├── FontSize.swift │ ├── QuranMode.swift │ ├── SearchResults.swift │ ├── TranslatedVerses.swift │ ├── Translation+URLs.swift │ ├── Translation.swift │ └── WordTextType.swift ├── Package.resolved ├── Package.swift ├── QuranEngine-Package.xctestplan ├── README.md ├── UI/ │ ├── NoorFont/ │ │ └── FontName.swift │ ├── NoorUI/ │ │ ├── BaseControllers/ │ │ │ ├── BaseNavigationController.swift │ │ │ ├── BaseViewController.swift │ │ │ └── UIViewController+Error.swift │ │ ├── Colors/ │ │ │ ├── Color+extension.swift │ │ │ └── Colors.xcassets/ │ │ │ ├── Contents.json │ │ │ ├── appTint.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── theme-calm-bg.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── theme-calm-text.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── theme-focus-bg.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── theme-focus-text.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── theme-original-bg.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── theme-original-text.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── theme-paper-bg.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── theme-paper-text.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── theme-quiet-bg.colorset/ │ │ │ │ └── Contents.json │ │ │ └── theme-quiet-text.colorset/ │ │ │ └── Contents.json │ │ ├── Components/ │ │ │ ├── ActiveRoundedButton.swift │ │ │ ├── AppStoreDownloadButton.swift │ │ │ ├── AppearanceModeSelector.swift │ │ │ ├── ChoicesView.swift │ │ │ ├── DataUnavailableView.swift │ │ │ ├── DisclosureIndicator.swift │ │ │ ├── DropdownButton.swift │ │ │ ├── ErrorAlertModifier.swift │ │ │ ├── List/ │ │ │ │ ├── NoorList.swift │ │ │ │ ├── NoorListItem.swift │ │ │ │ └── NoorSection.swift │ │ │ ├── LoadingView.swift │ │ │ ├── MultipartText.swift │ │ │ ├── ProminentRoundedButton.swift │ │ │ └── ThemeStyleSelector.swift │ │ ├── Features/ │ │ │ ├── AudioBanner/ │ │ │ │ └── AudioBannerViewUI.swift │ │ │ ├── AyahMenu/ │ │ │ │ ├── AyahMenuUI.swift │ │ │ │ └── AyahMenuView.swift │ │ │ ├── Content/ │ │ │ │ └── ContentStatusView.swift │ │ │ ├── Note/ │ │ │ │ ├── EditableNote.swift │ │ │ │ ├── Note.Color++.swift │ │ │ │ ├── NoteCircle.swift │ │ │ │ ├── NoteEditorView.swift │ │ │ │ └── UIViewController+Note.swift │ │ │ └── Quran/ │ │ │ ├── AdaptiveImageScrollView.swift │ │ │ ├── AdaptiveQuranScrollView.swift │ │ │ ├── ImageDecorationsView.swift │ │ │ ├── QuranArabicText.swift │ │ │ ├── QuranPageFooter.swift │ │ │ ├── QuranPageHeader.swift │ │ │ ├── QuranPageSeparators.swift │ │ │ ├── QuranScrollingViewModifier.swift │ │ │ ├── QuranSuraName.swift │ │ │ ├── QuranThemedImage.swift │ │ │ ├── QuranTranslationReferenceVerse.swift │ │ │ ├── QuranTranslationTextChunk.swift │ │ │ ├── QuranTranslatorName.swift │ │ │ └── QuranVerseSeparator.swift │ │ ├── Font/ │ │ │ ├── FontName++.swift │ │ │ └── FontSize++.swift │ │ ├── Formatters/ │ │ │ └── TimeAgo.swift │ │ ├── Images/ │ │ │ ├── Images.xcassets/ │ │ │ │ ├── Contents.json │ │ │ │ ├── ayah-end-marker.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── pointer-25.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── rotate_to_landscape-25.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── rotate_to_portrait-25.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── settings-25.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── settings_filled-25.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── sura_header.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── NoorImage.swift │ │ │ └── NoorSystemImage.swift │ │ ├── Miscellaneous/ │ │ │ ├── ContentDimension.swift │ │ │ ├── Dimensions.swift │ │ │ ├── ReadableInsetsViewModifier.swift │ │ │ ├── TestResource+Path.swift │ │ │ └── ThemedColorInvert.swift │ │ ├── Pager/ │ │ │ └── PageViewController.swift │ │ ├── Shapes/ │ │ │ └── Arc.swift │ │ └── Theme/ │ │ ├── AppearanceModeViews.swift │ │ ├── QuranHighlights+Theme.swift │ │ ├── ThemeService.swift │ │ └── ThemeStyleViews.swift │ ├── UIx/ │ │ ├── SwiftUI/ │ │ │ ├── CollectionView/ │ │ │ │ ├── CollectionView.swift │ │ │ │ ├── CollectionViewController.swift │ │ │ │ ├── CollectionViewDataSource.swift │ │ │ │ ├── CollectionViewReader.swift │ │ │ │ ├── CollectionViewScroller.swift │ │ │ │ ├── HostingCollectionViewCell.swift │ │ │ │ └── ListSection.swift │ │ │ ├── Epoxy/ │ │ │ │ ├── CollectionViewScrollToItemHelper.swift │ │ │ │ ├── DataIDProviding.swift │ │ │ │ ├── EpoxyIntrinsicContentSizeInvalidator.swift │ │ │ │ ├── EpoxySwiftUIHostingController.swift │ │ │ │ ├── EpoxySwiftUIHostingView.swift │ │ │ │ ├── EpoxySwiftUILayoutMargins.swift │ │ │ │ ├── README.md │ │ │ │ └── _Compatibility.swift │ │ │ ├── Miscellaneous/ │ │ │ │ ├── AsyncAction.swift │ │ │ │ ├── BackgroundHighlightingStyle.swift │ │ │ │ ├── CustomButtonStyle.swift │ │ │ │ ├── EdgeInsets++.swift │ │ │ │ ├── EditController.swift │ │ │ │ ├── SwiftUIColor+extension.swift │ │ │ │ ├── UIKitNavigator.swift │ │ │ │ ├── View+Task.swift │ │ │ │ ├── View+URL.swift │ │ │ │ ├── View+onSizeChange.swift │ │ │ │ └── WrappingHStack.swift │ │ │ ├── Mutate.swift │ │ │ ├── SingleChoice/ │ │ │ │ ├── SingleChoiceRow.swift │ │ │ │ └── SingleChoiceSelector.swift │ │ │ ├── Toast/ │ │ │ │ ├── Toast.swift │ │ │ │ └── ToastEnvironmentKey.swift │ │ │ └── Views/ │ │ │ ├── AttributedString++.swift │ │ │ ├── AutoSizingHostingController.swift │ │ │ ├── AutoUpdatingPreferredContentSizeHostingController.swift │ │ │ ├── CloseButton.swift │ │ │ ├── CocoaNavigationBar.swift │ │ │ ├── CocoaNavigationView.swift │ │ │ ├── CollectionTracker.swift │ │ │ ├── HostingCell.swift │ │ │ ├── InvertInDarkModeModifier.swift │ │ │ ├── PopoverNavigationController.swift │ │ │ ├── PreferredContentSizeMatchesScrollView.swift │ │ │ ├── SheetPresentationDetents.swift │ │ │ ├── SingleAxisGeometryReader.swift │ │ │ ├── StaticViewControllerRepresentable.swift │ │ │ ├── TextAlignmentModifier.swift │ │ │ ├── TextView.swift │ │ │ ├── UIViewControllerReader.swift │ │ │ └── WindowSafeAreaInsetsReaderViewModifier.swift │ │ └── UIKit/ │ │ ├── DataSources/ │ │ │ ├── DefaultSection.swift │ │ │ └── NSDiffableDataSourceSnapshot++.swift │ │ ├── Extensions/ │ │ │ ├── CALayer+Extension.swift │ │ │ ├── SegmentedControl+Extension.swift │ │ │ ├── String+Size.swift │ │ │ ├── UIBezierPath+Extension.swift │ │ │ ├── UIColor+Extension.swift │ │ │ ├── UIImage+Extension.swift │ │ │ ├── UITableView+Extension.swift │ │ │ ├── UIView+AutoLayout.swift │ │ │ ├── UIView+Extension.swift │ │ │ ├── UIViewController+Extensions.swift │ │ │ └── UIWIndow+Extensions.swift │ │ ├── Miscellaneous/ │ │ │ ├── NSDirectionalEdgeInsets++.swift │ │ │ ├── PresentationsMonitor.swift │ │ │ └── ScrollViewPageBehavior.swift │ │ ├── Popover/ │ │ │ ├── PhonePopoverPresenter.swift │ │ │ └── PopoverPresenter.swift │ │ └── Views/ │ │ ├── BackgroundColorButton.swift │ │ ├── ByPassTouchesView.swift │ │ ├── CircleView.swift │ │ ├── CircularView.swift │ │ ├── GradientView.swift │ │ ├── MagnifyingGlass.swift │ │ ├── RoundedShadowView.swift │ │ ├── ScrollViewController.swift │ │ ├── SearchControllerWithNoCancelButton.swift │ │ └── TwoLineNavigationTitleView.swift │ └── ViewConstrainer/ │ ├── GroupConstrainer.swift │ ├── SingleConstrainer.swift │ ├── UIView+Const.swift │ └── ViewConstrainer.swift ├── agents.md └── codecov.yml
Condensed preview — 825 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,987K chars).
[
{
"path": ".github/workflows/ci.yml",
"chars": 1002,
"preview": "name: CI\n\non:\n push:\n branches:\n - main\n pull_request:\n\njobs:\n Package:\n runs-on: macos-26\n\n steps:\n "
},
{
"path": ".gitignore",
"chars": 647,
"preview": "# Xcode\n#\nbuild/\n.DS_Store\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectiv"
},
{
"path": ".swift-version",
"chars": 4,
"preview": "5.10"
},
{
"path": ".swiftformat",
"chars": 799,
"preview": "# Don't format\n--exclude .build,UI/UIx/SwiftUI/Epoxy,BuildTools\n\n# Options\n\n--importgrouping testable-bottom # sortedImp"
},
{
"path": ".swiftlint.yml",
"chars": 4779,
"preview": "excluded:\n - .build\n - Tests/QuranTextKitTests/Mocks.swift\n\ndisabled_rules:\n - colon\n - for_where\n - syntactic_suga"
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/AllTargetsTests.xcscheme",
"chars": 1864,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"2620\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/AnnotationsService.xcscheme",
"chars": 2361,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/AppStructureFeature.xcscheme",
"chars": 2367,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/BatchDownloader.xcscheme",
"chars": 2343,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/BookmarksFeature.xcscheme",
"chars": 2349,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/Caching.xcscheme",
"chars": 2295,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/Crashing.xcscheme",
"chars": 2301,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/HomeFeature.xcscheme",
"chars": 2319,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/LastPagePersistence.xcscheme",
"chars": 2367,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/Localization.xcscheme",
"chars": 2325,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/MoreMenuFeature.xcscheme",
"chars": 2382,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1620\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/NetworkSupport.xcscheme",
"chars": 2376,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1620\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/NoorUI.xcscheme",
"chars": 2289,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/NotePersistence.xcscheme",
"chars": 2343,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/NotesFeature.xcscheme",
"chars": 2325,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/OAuthServiceAppAuthImpl.xcscheme",
"chars": 2430,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"2610\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/PageBookmarkPersistence.xcscheme",
"chars": 2391,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/Preferences.xcscheme",
"chars": 2319,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/QuranAudioKit.xcscheme",
"chars": 2331,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/QuranEngine-Package.xcscheme",
"chars": 76358,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/QuranImageFeature.xcscheme",
"chars": 2355,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/QuranKit.xcscheme",
"chars": 2301,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/QuranPagesFeature.xcscheme",
"chars": 2355,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/QuranTextKit.xcscheme",
"chars": 2325,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/QuranTextKitTests.xcscheme",
"chars": 1831,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/QuranTranslationFeature.xcscheme",
"chars": 2391,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/ReadingSelectorFeature.xcscheme",
"chars": 2385,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/ReadingService.xcscheme",
"chars": 2337,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/ReciterListFeature.xcscheme",
"chars": 2361,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/SQLitePersistence.xcscheme",
"chars": 2394,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1620\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/SearchFeature.xcscheme",
"chars": 2331,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/SettingsFeature.xcscheme",
"chars": 2343,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/SystemDependencies.xcscheme",
"chars": 2361,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/SystemDependenciesFake.xcscheme",
"chars": 2385,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/Timing.xcscheme",
"chars": 2289,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/TranslationService.xcscheme",
"chars": 2361,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/TranslationsFeature.xcscheme",
"chars": 2367,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/UIx.xcscheme",
"chars": 2271,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/Utilities.xcscheme",
"chars": 2307,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/UtilitiesTests.xcscheme",
"chars": 1822,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/VLogging.xcscheme",
"chars": 2301,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": ".swiftpm/xcode/xcshareddata/xcschemes/VersionUpdater.xcscheme",
"chars": 2337,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.7\">\n <BuildAction\n "
},
{
"path": "AllTargetsTests/Empty.swift",
"chars": 342,
"preview": "//\n// Empty.swift\n//\n//\n// Created by Mohamed Afifi on 2023-06-17.\n//\n\nimport XCTest\n\n/// Empty test class to help ens"
},
{
"path": "Core/Analytics/AnalyticsLibrary.swift",
"chars": 180,
"preview": "//\n// AnalyticsLibrary.swift\n//\n//\n// Created by Mohamed Afifi on 2023-06-12.\n//\n\npublic protocol AnalyticsLibrary: Se"
},
{
"path": "Core/AppMigrator/Sources/AppMigrator.swift",
"chars": 2471,
"preview": "//\n// AppMigrator.swift\n// Quran\n//\n// Created by Mohamed Afifi on 9/10/18.\n//\n// Quran for iOS is a Quran reading a"
},
{
"path": "Core/AppMigrator/Sources/AppVersionUpdater.swift",
"chars": 2445,
"preview": "//\n// AppVersionUpdater.swift\n// Quran\n//\n// Created by Mohamed Afifi on 5/2/17.\n//\n// Quran for iOS is a Quran read"
},
{
"path": "Core/AppMigrator/Tests/AppMigratorTests.swift",
"chars": 3884,
"preview": "//\n// AppMigratorTests.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-17.\n//\n\nimport SystemDependenciesFake\nimport"
},
{
"path": "Core/AsyncUtilitiesForTesting/AsyncAlgorithms++.swift",
"chars": 375,
"preview": "//\n// AsyncAlgorithms++.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-28.\n//\n\nimport AsyncAlgorithms\n\nextension A"
},
{
"path": "Core/AsyncUtilitiesForTesting/AsyncAsserts.swift",
"chars": 1697,
"preview": "//\n// AsyncAsserts.swift\n//\n//\n// Created by Mohamed Afifi on 2023-06-03.\n//\n\nimport Foundation\nimport XCTest\n\n// Cred"
},
{
"path": "Core/AsyncUtilitiesForTesting/PublisherCollector.swift",
"chars": 483,
"preview": "//\n// PublisherCollector.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-30.\n//\n\nimport Combine\n\npublic final class"
},
{
"path": "Core/AsyncUtilitiesForTesting/XCTestCase+PromiseKit.swift",
"chars": 1254,
"preview": "//\n// XCTestCase+PromiseKit.swift\n//\n//\n// Created by Mohamed Afifi on 2021-12-19.\n//\n\nimport XCTest\n\nextension XCTest"
},
{
"path": "Core/AsyncUtilitiesForTesting/XCTestCase+Publisher.swift",
"chars": 3009,
"preview": "//\n// XCTestCase+Publisher.swift\n//\n//\n// Created by Mohamed Afifi on 2023-02-20.\n//\n\nimport Combine\nimport XCTest\n\nex"
},
{
"path": "Core/Caching/Sources/Cache.swift",
"chars": 2871,
"preview": "//\n// Cache.swift\n// Quran\n//\n// Created by Mohamed Afifi on 11/1/16.\n//\n// Quran for iOS is a Quran reading applica"
},
{
"path": "Core/Caching/Sources/OperationCacheableService.swift",
"chars": 3204,
"preview": "//\n// OperationCacheableService.swift\n// Quran\n//\n// Created by Mohamed Afifi on 3/28/17.\n//\n// Quran for iOS is a Q"
},
{
"path": "Core/Caching/Sources/PagesCacheableService.swift",
"chars": 2698,
"preview": "//\n// PagesCacheableService.swift\n// Quran\n//\n// Created by Mohamed Afifi on 3/21/17.\n//\n// Quran for iOS is a Quran"
},
{
"path": "Core/Caching/Tests/CacheTests.swift",
"chars": 1519,
"preview": "//\n// CacheTests.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-27.\n//\n\nimport XCTest\n@testable import Caching\n\ncl"
},
{
"path": "Core/Caching/Tests/OperationCacheableServiceTests.swift",
"chars": 1683,
"preview": "//\n// OperationCacheableServiceTests.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-27.\n//\n\nimport XCTest\n@testabl"
},
{
"path": "Core/Caching/Tests/PagesCacheableServiceTests.swift",
"chars": 4091,
"preview": "//\n// PagesCacheableServiceTests.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-27.\n//\n\nimport AsyncUtilitiesForTe"
},
{
"path": "Core/Crashing/Crasher.swift",
"chars": 2891,
"preview": "//\n// Crasher.swift\n// Quran\n//\n// Created by Mohamed Afifi on 4/28/17.\n//\n// Quran for iOS is a Quran reading appli"
},
{
"path": "Core/Crashing/Global.swift",
"chars": 105,
"preview": "//\n// Global.swift\n//\n//\n// Created by Mohamed Afifi on 2021-12-29.\n//\n\npublic let crasher = Crasher()\n"
},
{
"path": "Core/Localization/Localizations.swift",
"chars": 2215,
"preview": "//\n// Localizations.swift\n// Quran\n//\n// Created by Mohamed Afifi on 4/13/18.\n//\n// Quran for iOS is a Quran reading"
},
{
"path": "Core/Localization/NumberFormatter+Extension.swift",
"chars": 2044,
"preview": "//\n// NumberFormatter+Extension.swift\n// Quran\n//\n// Created by Mohamed Afifi on 5/1/16.\n//\n// Quran for iOS is a Qu"
},
{
"path": "Core/Localization/Resources/ar.lproj/Android.strings",
"chars": 15405,
"preview": "\"about_contributors\" = \"المساهمون\";\n\"about_contributors_summary\" = \"قائمة بأسماء المساهمين في تطوير تطبيق قرآن أندرويد\";"
},
{
"path": "Core/Localization/Resources/ar.lproj/Android.stringsdict",
"chars": 3871,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_files"
},
{
"path": "Core/Localization/Resources/ar.lproj/Localizable.strings",
"chars": 9195,
"preview": "\n\n// MARK: - General\n\n\"button.done\" = \"تم\";\n\"button.delete\" = \"حذف\";\n\n// MARK: - Errors\n\n\"error.dialog.title\" = \"خطأ\";\n\""
},
{
"path": "Core/Localization/Resources/ar.lproj/Readers.strings",
"chars": 4335,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"عبد العزيز بن صالح الزهراني\";\n\"qari_abdulbaset\" = \"عبد الباسط عبد الصمد (غير متصل)\";"
},
{
"path": "Core/Localization/Resources/ar.lproj/Suras.strings",
"chars": 3716,
"preview": "\"sura_names[0]\" = \"الفَاتِحَةِ\";\n\"sura_names[1]\" = \"البَقَرَةِ\";\n\"sura_names[2]\" = \"آلِ عِمۡرَانَ\";\n\"sura_names[3]\" = \""
},
{
"path": "Core/Localization/Resources/de.lproj/Android.strings",
"chars": 19369,
"preview": "\"about_contributors\" = \"Mitwirkende\";\n\"about_contributors_summary\" = \"Eine Liste von Personen, die zur Entwicklung von Q"
},
{
"path": "Core/Localization/Resources/de.lproj/Android.stringsdict",
"chars": 1976,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_files"
},
{
"path": "Core/Localization/Resources/de.lproj/Localizable.strings",
"chars": 15832,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"Fertig\";\n// Metadata: "
},
{
"path": "Core/Localization/Resources/de.lproj/Readers.strings",
"chars": 4605,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahrani\";\n\"qari_abdulbaset\" = \"Abd Al-Basit (gespalten)\";\n\"qari_abdulba"
},
{
"path": "Core/Localization/Resources/de.lproj/Suras.strings",
"chars": 9453,
"preview": "\"sura_names_translation[0]\" = \"Die Eröffnende\";\n\"sura_names_translation[1]\" = \"Die Kuh\";\n\"sura_names_translation[2]\" = \""
},
{
"path": "Core/Localization/Resources/en.lproj/Android.strings",
"chars": 19172,
"preview": "\"about_androidx\" = \"AndroidX\";\n\"about_androidx_url\" = \"https://developer.android.com/jetpack/androidx\";\n\"about_contribut"
},
{
"path": "Core/Localization/Resources/en.lproj/Android.stringsdict",
"chars": 4601,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_delet"
},
{
"path": "Core/Localization/Resources/en.lproj/Localizable.strings",
"chars": 10134,
"preview": "/*\n Quran iOS app localization. Other localizations are from Android repo.\n */\n\n\n// MARK: - General\n\n\"button.done\" = \"D"
},
{
"path": "Core/Localization/Resources/en.lproj/Readers.strings",
"chars": 4536,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahrani\";\n\"qari_abdulbaset\" = \"Abd Al-Basit (gapped)\";\n\"qari_abdulbaset"
},
{
"path": "Core/Localization/Resources/en.lproj/Suras.strings",
"chars": 9199,
"preview": "\"sura_names_translation[0]\" = \"The Opening\";\n\"sura_names_translation[1]\" = \"The Cow\";\n\"sura_names_translation[2]\" = \"The"
},
{
"path": "Core/Localization/Resources/es.lproj/Android.strings",
"chars": 17961,
"preview": "\"about_contributors\" = \"Colaboradores\";\n\"about_contributors_summary\" = \"Lista de personas que han contribuido al desarro"
},
{
"path": "Core/Localization/Resources/es.lproj/Android.stringsdict",
"chars": 1327,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>search_results</key"
},
{
"path": "Core/Localization/Resources/es.lproj/Localizable.strings",
"chars": 15782,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"Hecho\";\n// Metadata: T"
},
{
"path": "Core/Localization/Resources/es.lproj/Readers.strings",
"chars": 4533,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahrani\";\n\"qari_abdulbaset\" = \"Abd Al-Basit (pausas)\";\n\"qari_abdulbaset"
},
{
"path": "Core/Localization/Resources/es.lproj/Suras.strings",
"chars": 5414,
"preview": "\"sura_names_translation[0]\" = \"El Inicio\";\n\"sura_names_translation[1]\" = \"La Vaca\";\n\"sura_names_translation[2]\" = \"La Fa"
},
{
"path": "Core/Localization/Resources/fa.lproj/Android.strings",
"chars": 14723,
"preview": "\"about_contributors\" = \"همکاران\";\n\"about_contributors_summary\" = \"فهرستی از افرادی که به توسعه این برنامه یاری رساندهان"
},
{
"path": "Core/Localization/Resources/fa.lproj/Android.stringsdict",
"chars": 2603,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_files"
},
{
"path": "Core/Localization/Resources/fa.lproj/Localizable.strings",
"chars": 15189,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"انجام شد\";\n// Metadata"
},
{
"path": "Core/Localization/Resources/fa.lproj/Readers.strings",
"chars": 4345,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"عبد العزيز بن صالح الزهراني\";\n\"qari_abdulbaset\" = \"عبدالباسط عبدالصمد (شکاف زده)\";\n\""
},
{
"path": "Core/Localization/Resources/fa.lproj/Suras.strings",
"chars": 3273,
"preview": "\"sura_names[0]\" = \"الفاتحة\";\n\"sura_names[1]\" = \"البقرة\";\n\"sura_names[2]\" = \"آل عمران\";\n\"sura_names[3]\" = \"النساء\";\n\"sura"
},
{
"path": "Core/Localization/Resources/fr.lproj/Android.strings",
"chars": 18004,
"preview": "\"about_contributors\" = \"Contributeurs\";\n\"about_contributors_summary\" = \"Une liste des personnes ayant contribué au dével"
},
{
"path": "Core/Localization/Resources/fr.lproj/Android.stringsdict",
"chars": 1488,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>search_results</key"
},
{
"path": "Core/Localization/Resources/fr.lproj/Localizable.strings",
"chars": 15904,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"Terminé\";\n// Metadata:"
},
{
"path": "Core/Localization/Resources/fr.lproj/Readers.strings",
"chars": 4603,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahrani\";\n\"qari_abdulbaset\" = \"Abd Al-Basit (interrompu)\";\n\"qari_abdulb"
},
{
"path": "Core/Localization/Resources/fr.lproj/Suras.strings",
"chars": 8952,
"preview": "\"sura_names_translation[0]\" = \"L\\'ouverture\";\n\"sura_names_translation[1]\" = \"La vache\";\n\"sura_names_translation[2]\" = \"L"
},
{
"path": "Core/Localization/Resources/kk.lproj/Android.strings",
"chars": 15625,
"preview": "\"about_contributors\" = \"Жасаушылар\";\n\"about_contributors_summary\" = \"Quran for Android бағдарламасының дамуына үлес қосқ"
},
{
"path": "Core/Localization/Resources/kk.lproj/Android.stringsdict",
"chars": 2585,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_files"
},
{
"path": "Core/Localization/Resources/kk.lproj/Localizable.strings",
"chars": 14381,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"Аяқталды\";\n// Metadata"
},
{
"path": "Core/Localization/Resources/kk.lproj/Readers.strings",
"chars": 4501,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahrani\";\n\"qari_abdulbaset\" = \"Әбдүлбәсит Әбдусамад (үзілген)\";\n\"qari_a"
},
{
"path": "Core/Localization/Resources/kk.lproj/Suras.strings",
"chars": 3234,
"preview": "\"sura_names[0]\" = \"Фатиха\";\n\"sura_names[1]\" = \"Бақара\";\n\"sura_names[2]\" = \"Әли Имран\";\n\"sura_names[3]\" = \"Ниса\";\n\"sura_n"
},
{
"path": "Core/Localization/Resources/ms.lproj/Android.strings",
"chars": 16597,
"preview": "\"about_contributors\" = \"Senarai Penyumbang\";\n\"about_contributors_summary\" = \"Senarai para penyumbang untuk projek aplika"
},
{
"path": "Core/Localization/Resources/ms.lproj/Android.stringsdict",
"chars": 2544,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_files"
},
{
"path": "Core/Localization/Resources/ms.lproj/Localizable.strings",
"chars": 14391,
"preview": "/*\n Author: https://github.com/faizmokh\n */\n\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review requ"
},
{
"path": "Core/Localization/Resources/ms.lproj/Readers.strings",
"chars": 4526,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahrani\";\n\"qari_abdulbaset\" = \"Abd Al-Basit (jurang)\";\n\"qari_abdulbaset"
},
{
"path": "Core/Localization/Resources/nl.lproj/Android.strings",
"chars": 19525,
"preview": "\"about_androidx\" = \"AndroidX\";\n\"about_androidx_url\" = \"\\\nhttps://developer.android.com/jetpack/androidx\";\n\"about_contrib"
},
{
"path": "Core/Localization/Resources/nl.lproj/Android.stringsdict",
"chars": 3232,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_files"
},
{
"path": "Core/Localization/Resources/nl.lproj/Localizable.strings",
"chars": 10165,
"preview": "/*\n Author: https://github.com/abdelouali\n */\n\n\n// MARK: - General\n\n\"button.done\" = \"Klaar\";\n\"button.delete\" = \"Verwijd"
},
{
"path": "Core/Localization/Resources/nl.lproj/Readers.strings",
"chars": 4538,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahrani\";\n\"qari_abdulbaset\" = \"Abd Al-Basit (pauzes)\";\n\"qari_abdulbaset"
},
{
"path": "Core/Localization/Resources/nl.lproj/Suras.strings",
"chars": 9226,
"preview": "\"sura_names_translation[0]\" = \"De Opening\";\n\"sura_names_translation[1]\" = \"De Koe\";\n\"sura_names_translation[2]\" = \"De Fa"
},
{
"path": "Core/Localization/Resources/pt.lproj/Android.strings",
"chars": 15192,
"preview": "\"about_contributors\" = \"Contribuintes\";\n\"about_contributors_summary\" = \"Uma lista de pessoas que contribuíram para o des"
},
{
"path": "Core/Localization/Resources/pt.lproj/Android.stringsdict",
"chars": 1315,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>search_results</key"
},
{
"path": "Core/Localization/Resources/pt.lproj/Localizable.strings",
"chars": 15674,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"Concluído\";\n// Metadat"
},
{
"path": "Core/Localization/Resources/pt.lproj/Readers.strings",
"chars": 4585,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahrani\";\n\"qari_abdulbaset\" = \"Abd Al-Baset (intervalo)\";\n\"qari_abdulba"
},
{
"path": "Core/Localization/Resources/ru.lproj/Android.strings",
"chars": 16841,
"preview": "\"about_contributors\" = \"Разработчики\";\n\"about_contributors_summary\" = \"Список людей, которые внесли свой вклад в развити"
},
{
"path": "Core/Localization/Resources/ru.lproj/Android.stringsdict",
"chars": 5024,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_delet"
},
{
"path": "Core/Localization/Resources/ru.lproj/Localizable.strings",
"chars": 15531,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"Готово\";\n// Metadata: "
},
{
"path": "Core/Localization/Resources/ru.lproj/Readers.strings",
"chars": 4686,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Абдульазиз аз-Захрани\";\n\"qari_abdulbaset\" = \"Абдульбасет Абдусамад (интервал)\";\n\"qar"
},
{
"path": "Core/Localization/Resources/ru.lproj/Suras.strings",
"chars": 8597,
"preview": "\"sura_names_translation[0]\" = \"Открывающая Книгу\";\n\"sura_names_translation[1]\" = \"Корова\";\n\"sura_names_translation[2]\" ="
},
{
"path": "Core/Localization/Resources/tr.lproj/Android.strings",
"chars": 15919,
"preview": "\"about_contributors\" = \"Katkıda bulunanlar\";\n\"about_contributors_summary\" = \"\\\"Quran for Android'un gelişimine katkıda b"
},
{
"path": "Core/Localization/Resources/tr.lproj/Android.stringsdict",
"chars": 3950,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_delet"
},
{
"path": "Core/Localization/Resources/tr.lproj/Localizable.strings",
"chars": 11762,
"preview": "/*\n Author: Salih Aydin <slhydn@icloud.com>\n */\n\n\n// MARK: - General\n\n\"button.done\" = \"Tamam\";\n\"button.delete\" = \"Sil\";"
},
{
"path": "Core/Localization/Resources/tr.lproj/Suras.strings",
"chars": 3261,
"preview": "\"sura_names[0]\" = \"Fâtiha\";\n\"sura_names[1]\" = \"Bakara\";\n\"sura_names[2]\" = \"Âl-i İmrân\";\n\"sura_names[3]\" = \"Nisâ\";\n\"sura_"
},
{
"path": "Core/Localization/Resources/ug.lproj/Android.strings",
"chars": 16808,
"preview": "\"about_contributors\" = \"تۆھپىكارلار\";\n\"about_contributors_summary\" = \"قۇرئان ئاندىرويىدنىڭ تەرەققىياتىغا تۆھپە قوشقان كى"
},
{
"path": "Core/Localization/Resources/ug.lproj/Android.stringsdict",
"chars": 1931,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>bookmark_tag_delete"
},
{
"path": "Core/Localization/Resources/ug.lproj/Localizable.strings",
"chars": 15505,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"ئاخىرلاشتى\";\n// Metada"
},
{
"path": "Core/Localization/Resources/ug.lproj/Readers.strings",
"chars": 4714,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"ئابدۇلئەزىز ئاز-زاھرانى\";\n\"qari_abdulbaset\" = \"ئابدۇلباسىت ئابدۇلسەمەد (ئايرىملىق)\";"
},
{
"path": "Core/Localization/Resources/ug.lproj/Suras.strings",
"chars": 3260,
"preview": "\"sura_names[0]\" = \"فاتىھە\";\n\"sura_names[1]\" = \"بەقەرە\";\n\"sura_names[2]\" = \"ئال ئىمران\";\n\"sura_names[3]\" = \"نىسا\";\n\"sura_"
},
{
"path": "Core/Localization/Resources/uz.lproj/Android.strings",
"chars": 17524,
"preview": "\"about_contributors\" = \"Ishtirokchilar\";\n\"about_contributors_summary\" = \"Ushbu \\\"Quran for Android\\\" ilovasini ishlab ch"
},
{
"path": "Core/Localization/Resources/uz.lproj/Android.stringsdict",
"chars": 3995,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_delet"
},
{
"path": "Core/Localization/Resources/uz.lproj/Localizable.strings",
"chars": 15814,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"Tugallandi\";\n// Metada"
},
{
"path": "Core/Localization/Resources/uz.lproj/Readers.strings",
"chars": 4598,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahroniy\";\n\"qari_abdulbaset\" = \"Abdulbosit (doimiy emas)\";\n\"qari_abdulb"
},
{
"path": "Core/Localization/Resources/uz.lproj/Suras.strings",
"chars": 3247,
"preview": "\"sura_names[0]\" = \"Fotiha\";\n\"sura_names[1]\" = \"Baqara\";\n\"sura_names[2]\" = \"Oli Imron\";\n\"sura_names[3]\" = \"Niso\";\n\"sura_n"
},
{
"path": "Core/Localization/Resources/vi.lproj/Android.strings",
"chars": 16331,
"preview": "\"about_contributors\" = \"Những người đóng góp\";\n\"about_contributors_summary\" = \"Danh sách những người đã đóng góp vào sự "
},
{
"path": "Core/Localization/Resources/vi.lproj/Android.stringsdict",
"chars": 3934,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>audio_manager_delet"
},
{
"path": "Core/Localization/Resources/vi.lproj/Localizable.strings",
"chars": 9406,
"preview": "/*\n Author: https://github.com/techyescountry\n */\n\n\n// MARK: - General\n\n\"button.done\" = \"Xong\";\n\"button.delete\" = \"Xóa\""
},
{
"path": "Core/Localization/Resources/vi.lproj/Readers.strings",
"chars": 4541,
"preview": "\"qari_abdulaziz_zahrani_gapless\" = \"Abdulaziz Az-Zahrani\";\n\"qari_abdulbaset\" = \"Abd Al-Basit (gapped)\";\n\"qari_abdulbaset"
},
{
"path": "Core/Localization/Resources/vi.lproj/Suras.strings",
"chars": 8982,
"preview": "\"sura_names_translation[0]\" = \"Khai Đề\";\n\"sura_names_translation[1]\" = \"Con Bò Cái\";\n\"sura_names_translation[2]\" = \"Gia "
},
{
"path": "Core/Localization/Resources/zh.lproj/Android.strings",
"chars": 10193,
"preview": "\"about_contributors\" = \"撰稿人\";\n\"about_contributors_summary\" = \"为安卓版《古兰经》的开发做出贡献的人员名单\";\n\"about_data_sources\" = \"数据来源\";\n\"ab"
},
{
"path": "Core/Localization/Resources/zh.lproj/Android.stringsdict",
"chars": 1128,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<plist version=\"1.0\">\n <dict>\n <key>search_results</key"
},
{
"path": "Core/Localization/Resources/zh.lproj/Localizable.strings",
"chars": 12842,
"preview": "\n\n// MARK: - General\n\n// Metadata: Translated by ChatGPT; human review required.\n\"button.done\" = \"完成\";\n// Metadata: Tran"
},
{
"path": "Core/Localization/resource_bundle.swift",
"chars": 1356,
"preview": "//\n// resource_bundle.swift\n//\n//\n// Created by Afifi, Mohamed on 8/29/21.\n//\n\nimport Foundation\n\nprivate class Bundle"
},
{
"path": "Core/Locking/NSLocking+Extension.swift",
"chars": 1049,
"preview": "//\n// NSLocking+Extension.swift\n// Quran\n//\n// Created by Mohamed Afifi on 5/4/16.\n//\n// Quran for iOS is a Quran re"
},
{
"path": "Core/Locking/Protected.swift",
"chars": 1593,
"preview": "//\n// Protected.swift\n// Quran\n//\n// Created by Mohamed Afifi on 3/16/17.\n//\n// Quran for iOS is a Quran reading app"
},
{
"path": "Core/OAuthService/OAuthService.swift",
"chars": 1519,
"preview": "//\n// OAuthService.swift\n// QuranEngine\n//\n// Created by Mohannad Hassan on 08/01/2025.\n//\n\nimport Foundation\nimport "
},
{
"path": "Core/OAuthServiceAppAuthImpl/OAuthServiceAppAuthImpl.swift",
"chars": 6988,
"preview": "//\n// OAuthServiceAppAuthImpl.swift\n// QuranEngine\n//\n// Created by Mohannad Hassan on 08/01/2025.\n//\n\nimport AppAuth"
},
{
"path": "Core/OAuthServiceFake/OAuthServiceFake.swift",
"chars": 3017,
"preview": "//\n// OAuthServiceFake.swift\n// QuranEngine\n//\n// Created by Mohannad Hassan on 22/01/2025.\n//\n\nimport OAuthService\ni"
},
{
"path": "Core/Preferences/Preference.swift",
"chars": 1800,
"preview": "//\n// Preference.swift\n//\n//\n// Created by Mohamed Afifi on 2022-04-16.\n//\n\nimport Combine\n\n@propertyWrapper\npublic fi"
},
{
"path": "Core/Preferences/PreferenceKey.swift",
"chars": 804,
"preview": "//\n// PreferenceKey.swift\n//\n//\n// Created by Mohamed Afifi on 2021-12-17.\n//\n\n#if DEBUG\n private enum Statics {\n "
},
{
"path": "Core/Preferences/PreferenceTransformer.swift",
"chars": 1059,
"preview": "//\n// PreferenceTransformer.swift\n//\n//\n// Created by Mohamed Afifi on 2022-09-10.\n//\n\npublic struct PreferenceTransfo"
},
{
"path": "Core/Preferences/Preferences.swift",
"chars": 1845,
"preview": "//\n// Preferences.swift\n//\n//\n// Created by Mohamed Afifi on 2021-12-17.\n//\n\nimport Combine\nimport Foundation\n\npublic "
},
{
"path": "Core/QueuePlayer/AudioInterruptionMonitor.swift",
"chars": 2055,
"preview": "//\n// AudioInterruptionMonitor.swift\n// QueuePlayer\n//\n// Created by Afifi, Mohamed on 4/29/19.\n// Copyright © 2019 "
},
{
"path": "Core/QueuePlayer/AudioPlayer.swift",
"chars": 6569,
"preview": "//\n// AudioPlayer.swift\n// QueuePlayer\n//\n// Created by Afifi, Mohamed on 4/27/19.\n// Copyright © 2019 Quran.com. Al"
},
{
"path": "Core/QueuePlayer/AudioPlaying.swift",
"chars": 3283,
"preview": "//\n// AudioPlaying.swift\n// QueuePlayer\n//\n// Created by Afifi, Mohamed on 4/27/19.\n// Copyright © 2019 Quran.com. A"
},
{
"path": "Core/QueuePlayer/AudioRequest.swift",
"chars": 1210,
"preview": "//\n// AudioRequest.swift\n// QueuePlayer\n//\n// Created by Afifi, Mohamed on 4/27/19.\n// Copyright © 2019 Quran.com. A"
},
{
"path": "Core/QueuePlayer/NowPlayingUpdater.swift",
"chars": 1682,
"preview": "//\n// NowPlayingUpdater.swift\n// Quran\n//\n// Created by Afifi, Mohamed on 4/28/19.\n// Copyright © 2019 Quran.com. Al"
},
{
"path": "Core/QueuePlayer/Player.swift",
"chars": 2072,
"preview": "//\n// Player.swift\n// QueuePlayer\n//\n// Created by Afifi, Mohamed on 5/4/19.\n// Copyright © 2019 Quran.com. All righ"
},
{
"path": "Core/QueuePlayer/PlayerItemInfo.swift",
"chars": 1178,
"preview": "//\n// PlayerItemInfo.swift\n// Quran\n//\n// Created by Afifi, Mohamed on 2018-04-04.\n//\n// Quran for iOS is a Quran re"
},
{
"path": "Core/QueuePlayer/QueuePlayer.swift",
"chars": 2446,
"preview": "//\n// QueuePlayer.swift\n// QueuePlayer\n//\n// Created by Afifi, Mohamed on 4/23/19.\n// Copyright © 2019 Quran.com. Al"
},
{
"path": "Core/QueuePlayer/Runs.swift",
"chars": 1041,
"preview": "//\n// Runs.swift\n// Quran\n//\n// Created by Afifi, Mohamed on 2018-04-04.\n//\n// Quran for iOS is a Quran reading appl"
},
{
"path": "Core/SecurePersistence/SecurePersistence.swift",
"chars": 3752,
"preview": "//\n// SecurePersistence.swift\n// QuranEngine\n//\n// Created by Mohannad Hassan on 28/12/2024.\n//\n\nimport Foundation\nim"
},
{
"path": "Core/SystemDependencies/EventObserver.swift",
"chars": 272,
"preview": "//\n// EventObserver.swift\n//\n//\n// Created by Mohamed Afifi on 2023-11-05.\n//\n\npublic protocol EventObserver {\n fun"
},
{
"path": "Core/SystemDependencies/FileSystem.swift",
"chars": 2938,
"preview": "//\n// FileSystem.swift\n//\n//\n// Created by Mohamed Afifi on 2022-02-08.\n//\n\nimport Foundation\nimport Utilities\n\npublic"
},
{
"path": "Core/SystemDependencies/KeychainAccess.swift",
"chars": 1078,
"preview": "//\n// KeychainAccess.swift\n// QuranEngine\n//\n// Created by Mohannad Hassan on 21/01/2025.\n//\n\nimport Foundation\n\npubl"
},
{
"path": "Core/SystemDependencies/PersistentHistoryTransaction.swift",
"chars": 589,
"preview": "//\n// PersistentHistoryTransaction.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-28.\n//\n\nimport CoreData\n\npublic "
},
{
"path": "Core/SystemDependencies/SystemBundle.swift",
"chars": 944,
"preview": "//\n// SystemBundle.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-07.\n//\n\nimport Foundation\n\npublic protocol Syste"
},
{
"path": "Core/SystemDependencies/SystemTime.swift",
"chars": 319,
"preview": "//\n// SystemTime.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-07.\n//\n\nimport Foundation\n\npublic protocol SystemT"
},
{
"path": "Core/SystemDependencies/Zipper.swift",
"chars": 550,
"preview": "//\n// Zipper.swift\n//\n//\n// Created by Mohamed Afifi on 2023-11-22.\n//\n\nimport Foundation\nimport Zip\n\npublic protocol "
},
{
"path": "Core/SystemDependenciesFake/AsyncChannelEventObserver.swift",
"chars": 540,
"preview": "//\n// AsyncChannelEventObserver.swift\n//\n//\n// Created by Mohamed Afifi on 2023-11-05.\n//\n\nimport AsyncAlgorithms\nimpo"
},
{
"path": "Core/SystemDependenciesFake/FileSystemFake.swift",
"chars": 3673,
"preview": "//\n// FileSystemFake.swift\n//\n//\n// Created by Mohamed Afifi on 2022-02-08.\n//\n\nimport Foundation\nimport SystemDepende"
},
{
"path": "Core/SystemDependenciesFake/KeychainAccessFake.swift",
"chars": 1541,
"preview": "//\n// KeychainAccessFake.swift\n// QuranEngine\n//\n// Created by Mohannad Hassan on 21/01/2025.\n//\n\nimport Foundation\ni"
},
{
"path": "Core/SystemDependenciesFake/PersistentHistoryTransactionFake.swift",
"chars": 938,
"preview": "//\n// PersistentHistoryTransactionFake.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-28.\n//\n\nimport CoreData\nimpo"
},
{
"path": "Core/SystemDependenciesFake/SystemBundleFake.swift",
"chars": 775,
"preview": "//\n// SystemBundleFake.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-07.\n//\n\nimport Foundation\nimport SystemDepen"
},
{
"path": "Core/SystemDependenciesFake/SystemTimeFake.swift",
"chars": 305,
"preview": "//\n// SystemTimeFake.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-07.\n//\n\nimport Foundation\nimport SystemDepende"
},
{
"path": "Core/SystemDependenciesFake/ZipperFake.swift",
"chars": 1155,
"preview": "//\n// ZipperFake.swift\n//\n//\n// Created by Mohamed Afifi on 2023-11-22.\n//\n\nimport Foundation\nimport SystemDependencie"
},
{
"path": "Core/Timing/Timer.swift",
"chars": 2980,
"preview": "//\n// Timer.swift\n// Quran\n//\n// Created by Mohamed Afifi on 5/2/16.\n//\n// Quran for iOS is a Quran reading applicat"
},
{
"path": "Core/Utilities/Sources/Extensions/Array+Extension.swift",
"chars": 785,
"preview": "//\n// Array+Extension.swift\n//\n//\n// Created by Mohamed Afifi on 2023-04-29.\n//\n\nextension Array where Element: Hashab"
},
{
"path": "Core/Utilities/Sources/Extensions/Error+Extension.swift",
"chars": 454,
"preview": "//\n// Error+Extension.swift\n//\n//\n// Created by Mohamed Afifi on 2023-12-19.\n//\n\nimport Foundation\n\nextension Error {\n"
},
{
"path": "Core/Utilities/Sources/Extensions/FileManager+Extension.swift",
"chars": 1405,
"preview": "//\n// FileManager+Extension.swift\n// Quran\n//\n// Created by Mohamed Afifi on 10/29/16.\n//\n// Quran for iOS is a Qura"
},
{
"path": "Core/Utilities/Sources/Extensions/Int+Extension.swift",
"chars": 1027,
"preview": "//\n// Int+Extension.swift\n// Quran\n//\n// Created by Mohamed Afifi on 4/23/17.\n//\n// Quran for iOS is a Quran reading"
},
{
"path": "Core/Utilities/Sources/Extensions/Result+Extension.swift",
"chars": 322,
"preview": "//\n// Result+Extension.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-27.\n//\n\nextension Swift.Result where Failure"
},
{
"path": "Core/Utilities/Sources/Extensions/Sequence+Extension.swift",
"chars": 2009,
"preview": "//\n// Sequence+Extension.swift\n// Quran\n//\n// Created by Mohamed Afifi on 2/19/17.\n//\n// Quran for iOS is a Quran re"
},
{
"path": "Core/Utilities/Sources/Extensions/String+Chunking.swift",
"chars": 4338,
"preview": "//\n// String+Chunking.swift\n//\n//\n// Created by Mohamed Afifi on 2023-12-31.\n//\n\nimport Foundation\n\nextension String {"
},
{
"path": "Core/Utilities/Sources/Extensions/String+Extension.swift",
"chars": 4287,
"preview": "//\n// String+Extension.swift\n// Quran\n//\n// Created by Mohamed Afifi on 2/25/17.\n//\n// Quran for iOS is a Quran read"
},
{
"path": "Core/Utilities/Sources/Extensions/Task+Extension.swift",
"chars": 1511,
"preview": "//\n// Task+Extension.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-02.\n//\n\nimport Combine\n\npublic final class Can"
},
{
"path": "Core/Utilities/Sources/Extensions/URL+Extension.swift",
"chars": 992,
"preview": "//\n// URL+Extension.swift\n// Quran\n//\n// Created by Mohamed Afifi on 5/7/16.\n//\n// Quran for iOS is a Quran reading "
},
{
"path": "Core/Utilities/Sources/Features/Address.swift",
"chars": 350,
"preview": "//\n// Address.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-27.\n//\n\nimport Foundation\n\npublic func address(of o: "
},
{
"path": "Core/Utilities/Sources/Features/AsyncInitializer.swift",
"chars": 840,
"preview": "//\n// AsyncInitializer.swift\n//\n//\n// Created by Mohamed Afifi on 2023-11-26.\n//\n\npublic struct AsyncInitializer {\n "
},
{
"path": "Core/Utilities/Sources/Features/AsyncPublisher.swift",
"chars": 2547,
"preview": "//\n// AsyncPublisher.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-28.\n//\n\nimport Combine\n\n// Inspired by: https:"
},
{
"path": "Core/Utilities/Sources/Features/AsyncThrowingPublisher.swift",
"chars": 2882,
"preview": "//\n// AsyncThrowingPublisher.swift\n//\n//\n// Created by Mohamed Afifi on 2023-06-11.\n//\n\nimport Combine\n\n// Inspired by"
},
{
"path": "Core/Utilities/Sources/Features/Attempt.swift",
"chars": 1347,
"preview": "//\n// Attempt.swift\n// Quran\n//\n// Created by Mohamed Afifi on 3/12/17.\n//\n// Quran for iOS is a Quran reading appli"
},
{
"path": "Core/Utilities/Sources/Features/Locking.swift",
"chars": 4701,
"preview": "// From: https://github.com/apple/swift-async-algorithms/blob/e6b21d2a6d6cf8c886a97fba489563fd885937d4/Sources/AsyncAlgo"
},
{
"path": "Core/Utilities/Sources/Features/MultiPredicateComparer.swift",
"chars": 708,
"preview": "//\n// MultiPredicateComparer.swift\n//\n//\n// Created by Mohamed Afifi on 2023-07-09.\n//\n\npublic struct MultiPredicateCo"
},
{
"path": "Core/Utilities/Sources/Features/MulticastContinuation.swift",
"chars": 1361,
"preview": "//\n// MulticastContinuation.swift\n//\n//\n// Created by Mohamed Afifi on 2023-04-30.\n//\n\npublic struct MulticastContinua"
},
{
"path": "Core/Utilities/Sources/Features/Pair.swift",
"chars": 425,
"preview": "//\n// Pair.swift\n//\n//\n// Created by Mohamed Afifi on 2024-02-02.\n//\n\npublic struct Pair<First, Second> {\n public v"
},
{
"path": "Core/Utilities/Sources/Features/RelativeFilePath.swift",
"chars": 2310,
"preview": "//\n// RelativeFilePath.swift\n//\n//\n// Created by Mohamed Afifi on 2023-07-09.\n//\n\nimport Foundation\n\npublic struct Rel"
},
{
"path": "Core/Utilities/Tests/AsyncPublisherTests.swift",
"chars": 3206,
"preview": "//\n// AsyncPublisherTests.swift\n//\n//\n// Created by Mohamed Afifi on 2023-05-28.\n//\n\nimport AsyncAlgorithms\nimport Asy"
},
{
"path": "Core/Utilities/Tests/AsyncThrowingPublisherTests.swift",
"chars": 4105,
"preview": "//\n// AsyncThrowingPublisherTests.swift\n//\n//\n// Created by Mohamed Afifi on 2023-06-11.\n//\n\nimport AsyncAlgorithms\nim"
},
{
"path": "Core/Utilities/Tests/String+ChunkingTests.swift",
"chars": 6273,
"preview": "//\n// String+ChunkingTests.swift\n//\n//\n// Created by Mohamed Afifi on 2023-12-31.\n//\n\nimport Utilities\nimport XCTest\n\n"
}
]
// ... and 625 more files (download for full content)
About this extraction
This page contains the full source code of the quran/quran-ios GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 825 files (4.4 MB), approximately 1.2M tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.