crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

project.pbxproj (142198B)


      1 // !$*UTF8*$!
      2 {
      3 	archiveVersion = 1;
      4 	classes = {
      5 	};
      6 	objectVersion = 77;
      7 	objects = {
      8 
      9 /* Begin PBXBuildFile section */
     10 		0063A5FC9F39E37A67F137FF /* GameListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED2D830B9EFAD753C233BEB4 /* GameListView.swift */; };
     11 		00A25F5D8DFF62EFA0C4D1D7 /* FriendEntity+DisplayName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8D856707B4D76FDBF4AE69 /* FriendEntity+DisplayName.swift */; };
     12 		00F2108848ADC7B4BF3AA0AE /* PlayerSessionNavigationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46801B570FC0B2C791ECDED3 /* PlayerSessionNavigationTests.swift */; };
     13 		014134FB81566B5D41168260 /* PerGameZoneTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 283C5C97180C805B6C5BF622 /* PerGameZoneTests.swift */; };
     14 		0158184A413AE177F75B4150 /* JournalReplayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89B1FFD2F90141EA949A8540 /* JournalReplayTests.swift */; };
     15 		01D1B4C7303F1CA52438FF86 /* HardwareKeyboardInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6940546CFA1E87EF814AA6BB /* HardwareKeyboardInputView.swift */; };
     16 		0241DC498C645FE1BDA00FB0 /* NYTPuzzleFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0938B0ACB40772EE522D77C /* NYTPuzzleFetcher.swift */; };
     17 		025377AF80D45967CE910423 /* SyncMonitorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C190EA5717C291B3F2AE46C /* SyncMonitorTests.swift */; };
     18 		02943BA53D2130B910E6DC00 /* EnsureGameEntityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94CEBA27A8AC4FCC92ADE1B4 /* EnsureGameEntityTests.swift */; };
     19 		036EC1EDDEFD17DCDD9B5F1A /* ClueList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B8B65482CA1739A3863A99E /* ClueList.swift */; };
     20 		04062BCD473ED244159B1066 /* PlayerRosterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1813630FA05C194AFF43855C /* PlayerRosterTests.swift */; };
     21 		06AE6DF7AA3274480C591E47 /* EngagementStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B09D52DB46731E92C3E9297C /* EngagementStore.swift */; };
     22 		07A46496EE0B12FD526F36FB /* SessionPushPlannerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C040D5EBC73B1ED47C2C9D4 /* SessionPushPlannerTests.swift */; };
     23 		082B9BAADE3AFA54EFE30E19 /* PuzzleModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5DF04E70017065DFA95B396 /* PuzzleModifiers.swift */; };
     24 		085B70680087464B8A7BA3EE /* GridSilhouetteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7062403AC9CFB4FF04BBF3 /* GridSilhouetteTests.swift */; };
     25 		0A7AEB93A473AFCCD9217F49 /* PuzzleSessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 362E3A93102B6C9AECD4133A /* PuzzleSessionTests.swift */; };
     26 		0BB721552A849A53AB9BF7CC /* RemoteCoordinateValidationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 960353A6F38DD290112A2FE1 /* RemoteCoordinateValidationTests.swift */; };
     27 		0C39CA21BE50E49F9F06C5F2 /* PlayerRoster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3292748EAE27B608C769D393 /* PlayerRoster.swift */; };
     28 		0F2992C16A3A658DEA0F707E /* DiagnosticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCACEED6A9235EC6221F4F66 /* DiagnosticsView.swift */; };
     29 		1016604FBD4D63A0B9AAE503 /* CloudQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16AAC1E8D2CB3B5117159934 /* CloudQuery.swift */; };
     30 		10AF4F2750E0D64AA3828F35 /* ImportServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4494C40DD593DA7CE6641027 /* ImportServiceTests.swift */; };
     31 		128915DB37018EE4CC16C856 /* GameCursorStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D2AD5021F1AF0DB44FA4540 /* GameCursorStore.swift */; };
     32 		13C0F34520828020AD825D07 /* JoiningPuzzleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18FF14E0D73B0D2DB427F08 /* JoiningPuzzleView.swift */; };
     33 		14749A042380925B7CA902F2 /* XDMarkup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF18C52558DBD58ECAD4964 /* XDMarkup.swift */; };
     34 		15768439C1783A1780FBB824 /* SessionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A7BD8DFDB41BFBA694A0933 /* SessionCoordinator.swift */; };
     35 		16D7328AE0BB1F7ED46235C8 /* GameEntity+ContentKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24A4B5C8EC4A46906C07F819 /* GameEntity+ContentKey.swift */; };
     36 		17A754692F05B97DBDD645F2 /* PlayerSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F0B4F65D017C1FBAC3B23DF /* PlayerSelection.swift */; };
     37 		18CA29E61C4F1471A455FEC8 /* FriendEncryptionKeyDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 833AAFBA0094BAB27E13FE29 /* FriendEncryptionKeyDirectory.swift */; };
     38 		18D5BB584DBF92A2EC580AEA /* NotificationNavigationBrokerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEDD63AD5E33E2B0399780EF /* NotificationNavigationBrokerTests.swift */; };
     39 		197DDF45C36B9570BB9AE4B5 /* AuthorIdentity.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F1471BE4D6D84361DD692B /* AuthorIdentity.swift */; };
     40 		1989FEF3DE02BEA414B6E9ED /* ExternalBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFA63B0051B4E6F4FC4B132A /* ExternalBrowseView.swift */; };
     41 		1A19D13D9B820E276C60819E /* InputMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BDD06460A76D4AF31077732 /* InputMonitor.swift */; };
     42 		1A1A8A9AB36D02E2A5A9ED28 /* GameViewedStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9AE0F26E602A9246F5C6ABF /* GameViewedStore.swift */; };
     43 		1AAFF86B40CBBFF1EC9ADF9F /* GridThumbnailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B1F07B5DDE2A8B49B28392A /* GridThumbnailView.swift */; };
     44 		1D08DDEDEF5433912CC6D4DB /* GameViewedStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9406C27662147CD3C0783644 /* GameViewedStoreTests.swift */; };
     45 		1E404AD99B04912167B83176 /* NYTOverlayLetterRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 570F8FE85CC46CE3CB5CFEC1 /* NYTOverlayLetterRecognizer.swift */; };
     46 		1F4E5473F78A5CEDBA9719CE /* NYTAuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A253416F4FEA271A80B22A73 /* NYTAuthService.swift */; };
     47 		205894D447BFE2CCEB07575D /* GameStoreRevocationLockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8E8D1BC7DF9EBB08F8CABD /* GameStoreRevocationLockTests.swift */; };
     48 		24F7ED458A1C09F8CF309B35 /* PuzzleNotificationText+GameEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF9C2FEF0D3584864DFC967 /* PuzzleNotificationText+GameEntity.swift */; };
     49 		25141DD1C50C9191B6C94119 /* DecorationImages.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7557050B17F113BB488AA23 /* DecorationImages.swift */; };
     50 		2571BA6482B3E896A80FF393 /* CompactSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B024B2FFB11E51E9724BBE23 /* CompactSlider.swift */; };
     51 		262A9CE8C3CB93869190CFF1 /* GameStoreMergedAuthorCellsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 122BC1863D12DE06388D5DA7 /* GameStoreMergedAuthorCellsTests.swift */; };
     52 		2641299DE1F2E84E8C21E037 /* LogScrubberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C06E2CC3A77CB306BD2DF867 /* LogScrubberTests.swift */; };
     53 		267ED5B329F05A30430B73A0 /* EngagementHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C701DAE36000DE19F7CC95 /* EngagementHost.swift */; };
     54 		26DC22F88FA10C47BC06975E /* PersistenceRecoveryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A467BC00116EEC8500BE6A1 /* PersistenceRecoveryTests.swift */; };
     55 		2765E30202EF955B425CB1A3 /* NYTOverlayLetterRecognizerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8B50452D3AFE25D98B497A /* NYTOverlayLetterRecognizerTests.swift */; };
     56 		2A273C98FE3AC5E4C9BE1D88 /* PushPayloadCipherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C793B5B9684D49328E42129 /* PushPayloadCipherTests.swift */; };
     57 		2AF2550B08CE79F8615B3076 /* FriendZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A4AFF292381C9B33C0F2CD6 /* FriendZone.swift */; };
     58 		2C0DFC182240A2519ED1FA6A /* GameMutatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC1C59A30FB2571598273E4 /* GameMutatorTests.swift */; };
     59 		2C5A15054CCCBF9FD626AFBB /* GameStorePushAddressTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A56778AF8190F0D7EB2E27E /* GameStorePushAddressTests.swift */; };
     60 		2DD78CA0CD587AA4E5C4B178 /* PuzzleScoreboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3A251D89028B3CA065DE053 /* PuzzleScoreboard.swift */; };
     61 		30703DDF575DCDA53227DA66 /* GamePushCredentialsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5A8118AC2FE60D877F1D29 /* GamePushCredentialsTests.swift */; };
     62 		309457EC2DFEC476253D54D2 /* PlayerSelectionPublisherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF159746D076E051C2CB590C /* PlayerSelectionPublisherTests.swift */; };
     63 		31F2B6A61ED352C7D800149F /* XDAcceptTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F4EBC0F07FF815274C028CA /* XDAcceptTests.swift */; };
     64 		328309D8CC72CCB5623FB2A1 /* EngagementCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67CFF96D54D2DE9C44EB120A /* EngagementCoordinatorTests.swift */; };
     65 		33CEEDAFBAA46128A9713AF5 /* PushRequestAuthenticatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 630A65B1CCFEFEA825D3DD41 /* PushRequestAuthenticatorTests.swift */; };
     66 		350722635E9A17324148CACC /* PuzzleCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DC7784917397BCD6B8D679D /* PuzzleCatalog.swift */; };
     67 		351CB23C537BAB61863D95F6 /* PuzzleNotificationText.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE7CEB8980A9664BAAA5D196 /* PuzzleNotificationText.swift */; };
     68 		35D97436772257DAD3936ECB /* TipStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D4A76B233E16B7C5A248EB7 /* TipStore.swift */; };
     69 		36E2AAF1EE1314E13477EE85 /* NicknameDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111803C8FFFB0C839217482 /* NicknameDirectory.swift */; };
     70 		38439415796652D8B88C53B3 /* XDDecorationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C08795365FABCC11A6C6E28 /* XDDecorationTests.swift */; };
     71 		38C913D00ED762BD9E355A2D /* KeychainHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33878A29B09A6154C7A63C82 /* KeychainHelper.swift */; };
     72 		3A5483EF2893AE325DF27EE8 /* GameMutator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DC132D49361C56DE79C13E /* GameMutator.swift */; };
     73 		3B3F30AA1B7AA6D4465CB537 /* EngagementMessageAuthenticatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A24FD313982C8094CD020106 /* EngagementMessageAuthenticatorTests.swift */; };
     74 		3C54AE4AA04342CCF5705B20 /* PlayerNamePublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71DFD035381B6252DCD873C9 /* PlayerNamePublisher.swift */; };
     75 		3C54B672A9FCA98C0A304470 /* TipsArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DC6394CB0F5B85C083FAC7 /* TipsArchive.swift */; };
     76 		41290C86E72D6567C43C31B7 /* ShareLinkShortenerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 057F2B8B8A894D08BB801219 /* ShareLinkShortenerTests.swift */; };
     77 		43E311FBD68B7D35A4D29743 /* PushPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2C9D3E7FCE2D42C5B7E3856 /* PushPayload.swift */; };
     78 		449B0A09A36B276C93CFB9A4 /* GameStoreUnreadMovesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31C534911020BE4ED2E5065D /* GameStoreUnreadMovesTests.swift */; };
     79 		44FF4A5334A4086DEA7D8A7B /* GameShareItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663934F0B7CA8BDD462DFAA4 /* GameShareItem.swift */; };
     80 		47584CBEF819C2F507D06DFF /* PlayerColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB55FC337CF72C650373210A /* PlayerColor.swift */; };
     81 		47A6EAAC144C37608AB9AE91 /* PlayerPreferencesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7F1EDE21BB7D6456D6E9000 /* PlayerPreferencesTests.swift */; };
     82 		47B4FB563BA4A8A54E2C26E0 /* XDLimitsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F6DB4116933BB66274AC6E8 /* XDLimitsTests.swift */; };
     83 		4819D7FBB407C9D76510EA2A /* TestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B399E89BBB37730F2F1E9 /* TestHelpers.swift */; };
     84 		4A89595E3F6AB50E1D9E6BA8 /* ImportService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462CE0FD356F6137C9BFD30F /* ImportService.swift */; };
     85 		4B8CA45845618D75A3313816 /* GridSilhouette.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16AC7215D0269195FEA8BA8 /* GridSilhouette.swift */; };
     86 		4D7BF839BA71E1BF0AE9BCE9 /* GameStoreContributingDevicesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EA25E2AE98ACD029EC0129 /* GameStoreContributingDevicesTests.swift */; };
     87 		4D90B39AD2F79959FB8089EE /* MovesUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DD270E16E00145EF2807EA9 /* MovesUpdater.swift */; };
     88 		4D9E2C35893E68E47F790994 /* BundledBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7023E506D777DB80B18A7DB5 /* BundledBrowseView.swift */; };
     89 		4E14BB5D6F96D178373ED55A /* PeerChangeLedger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B427285F8D6BE35025591BFA /* PeerChangeLedger.swift */; };
     90 		4E1A70D1EC709A0478631DCF /* DecorationRenderingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 382F9AAB0B98B4A78E255F15 /* DecorationRenderingTests.swift */; };
     91 		4F1A93404828EDBDBBF86716 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C6AB016CA4E2FC69A0E6A4F /* SettingsView.swift */; };
     92 		503229FF89FF7C29CEF4C16D /* Puzzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C8064F04FC6177D987ACA2 /* Puzzle.swift */; };
     93 		5082CCB75939E1BC6E9DC03A /* AppDefaultsMigratorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F4D2E1504784E738D2B33A /* AppDefaultsMigratorTests.swift */; };
     94 		50C02D37A41D55CFA5D307E2 /* NYTPuzzleUpgraderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34489D0864DF76AF436E391 /* NYTPuzzleUpgraderTests.swift */; };
     95 		51E6F7F2FC52C2AA87B9DB45 /* PeerPresenceGraceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08E8592B1CB1336E63498706 /* PeerPresenceGraceTests.swift */; };
     96 		521E877D28502B917C89B66D /* AccountPushCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B166E87D13C41C4D3575169 /* AccountPushCoordinatorTests.swift */; };
     97 		5264996E0D72A805B20985E8 /* PuzzleGridStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23A7390848B1943C80142934 /* PuzzleGridStats.swift */; };
     98 		59230713D85AE6895852B06A /* InviteCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10064D171DB7C48D3DE1E769 /* InviteCoordinator.swift */; };
     99 		5992AD4A06D7C6440825E9C6 /* GameArchiver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B7539E0AD285C5A3AC3DDA2 /* GameArchiver.swift */; };
    100 		5E80545A8ECEB1E2ED371C53 /* PushCredentialRotationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD32BDDE9B007B11BE86B7A0 /* PushCredentialRotationTests.swift */; };
    101 		5E89D1F8FDFE56395997281A /* NewGameSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C81EFA0B7776CB9713CD63 /* NewGameSheet.swift */; };
    102 		5ECF5B80D08E5E999A540782 /* SessionMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB332831AB173ACF6BFEC59 /* SessionMonitor.swift */; };
    103 		5EFCD28B3B682DCCF38068D6 /* AnnouncementCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D3ECD0DE71BE567BCEE15F6 /* AnnouncementCenter.swift */; };
    104 		5FB26F40F5DB52111E3D1BDC /* CheckResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FD9A43789D0ED123F7A99B0 /* CheckResult.swift */; };
    105 		609364CB79E0C7517298B404 /* ContentKeyDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAFA466405AABA1C06272795 /* ContentKeyDirectory.swift */; };
    106 		61A0F71985C898D046556A1D /* FriendInviteRecencyStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51583D7304A586BF38F0D8E3 /* FriendInviteRecencyStoreTests.swift */; };
    107 		61F8B38587EE49D376B53544 /* ReplayCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 603E6FC55F1BD944592379D2 /* ReplayCacheTests.swift */; };
    108 		648EA338E7718079EA354D7D /* EngagementMessageAuthenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B3E0C62CBF5ADF7C01C1D54 /* EngagementMessageAuthenticator.swift */; };
    109 		659F7E48357E164144A19789 /* CloudContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98E68FD021EF8ED50BC706EE /* CloudContainer.swift */; };
    110 		6850EAE474E589CE1EA2DF68 /* NicknameDirectoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92168360625ECDD36FF50EE8 /* NicknameDirectoryTests.swift */; };
    111 		689DAEC70934027E76E8116E /* KeyboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FDE73AD7C543B29C8E493F8 /* KeyboardView.swift */; };
    112 		6A1CA96FF48CBEEE78EA6D34 /* FriendModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B766E872B12DC79ECCD80941 /* FriendModelTests.swift */; };
    113 		6AE88D9E1918508DBF2A91E1 /* NotificationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D2FD896D75863554E31654C /* NotificationState.swift */; };
    114 		6BD5C5B6BED06651312E2D01 /* MailComposeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F8AAA9540C80F787A1465C0 /* MailComposeView.swift */; };
    115 		6BE7E91158F4DF1F71247C6D /* CellMark.swift in Sources */ = {isa = PBXBuildFile; fileRef = B135C285570F91181595B405 /* CellMark.swift */; };
    116 		6C091D30AAC9F63B7CE6FB58 /* AnnouncementCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978A96CC6F550ED7A73F8D96 /* AnnouncementCenterTests.swift */; };
    117 		6D2AF361587E43D807BA212F /* NYTLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1747D4DCB4BCC831069BBE07 /* NYTLoginView.swift */; };
    118 		6E36ED34ACF047BABB3E2D69 /* RecentChangesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80B377D237AC14B9856579E1 /* RecentChangesTests.swift */; };
    119 		6E67C0DCB0416F382EA065B7 /* JournalUploadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD9C72266D1BAC43C8976C0 /* JournalUploadTests.swift */; };
    120 		701BD90172F500B89E32E8E6 /* NoticeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A61768D423564A9080414A38 /* NoticeView.swift */; };
    121 		712A2764596A2D17A0BBBF3B /* FriendZoneTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 800CCFBE90554F287E765755 /* FriendZoneTests.swift */; };
    122 		7714B1C2FBCBBAD9BE8FEAF8 /* GameSummaryThumbnailTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5EEBF169823C172000FC45B /* GameSummaryThumbnailTests.swift */; };
    123 		774C5B5FC06366A0F5CD2376 /* GameSyncVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 275DB12E9D81DD48B9025718 /* GameSyncVersion.swift */; };
    124 		77556FD9473A3F10FADF5E4E /* PersistenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACC295195602B3DDF7BB3895 /* PersistenceController.swift */; };
    125 		779D1955F350B507A47B1E5B /* ShareLinkShortener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B50A841D92D1F2B173E7DF /* ShareLinkShortener.swift */; };
    126 		786813F3418C32EFBF296220 /* XDMarkupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9FE0A9624DB87758F3D1768 /* XDMarkupTests.swift */; };
    127 		78802AFDF6273231781CC0DC /* AppServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBDC81CA6A9C80EB31E7F493 /* AppServices.swift */; };
    128 		7BD1A9F69953F9C3288969AF /* PlayerRecordPresenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C838C184A0C7B1B0A9821CE /* PlayerRecordPresenceTests.swift */; };
    129 		7BE53C851A311A7B6255B45E /* CellAccessibilityDescriberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3059A4C23D040E0D1F258B92 /* CellAccessibilityDescriberTests.swift */; };
    130 		7CD7CC4681C2085AAC39FA79 /* XDDecorationWriter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A2D346F414F374A45F92AD /* XDDecorationWriter.swift */; };
    131 		7D4A56FBB1C5D5F89271B77F /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 507B4DC893CE8AC4778CBACE /* NotificationService.swift */; };
    132 		7D9337A19747C79070AB3D59 /* InviteEntity+DisplayName.swift in Sources */ = {isa = PBXBuildFile; fileRef = E25A040EA4DC9672C895A7AC /* InviteEntity+DisplayName.swift */; };
    133 		7E6ED856CE78A774B061CA60 /* FriendEncryptionKeyDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 833AAFBA0094BAB27E13FE29 /* FriendEncryptionKeyDirectory.swift */; };
    134 		7FCD3F582B5ADC235E1F88A0 /* PuzzleNotificationTextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C90E94A01FEA77A5C9A2BC94 /* PuzzleNotificationTextTests.swift */; };
    135 		7FFEACFC672925A0968ACC1C /* XD.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9031A1574C21866940F6A2C /* XD.swift */; };
    136 		8171E5B23FEC5FB63029A640 /* CloudJoinFailureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E6BB07A54A3C3AF6F210F49 /* CloudJoinFailureTests.swift */; };
    137 		8225918652DCC822CA1C862F /* PendingEditFlagTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D491B7232333AA8957732387 /* PendingEditFlagTests.swift */; };
    138 		82918A74836E5076CBFA1592 /* SyncEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73DDDED719CFFDD6035C3B48 /* SyncEngine.swift */; };
    139 		82D1714DC441E4943E96C882 /* PuzzleFileReaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9EE11280592CA66C2BEC71A /* PuzzleFileReaderTests.swift */; };
    140 		83CF8376EBFD7271931AC1B7 /* GridAccessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF4CA70D10760D6770907606 /* GridAccessibility.swift */; };
    141 		85A798525FE1DC98210A9E82 /* GameCursorStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E818B0F4689BAD57660B7C /* GameCursorStoreTests.swift */; };
    142 		85B9BAC5ED404FE4496250CB /* NYTPuzzleUpgrader.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE54EF557E8D808BAA20EA54 /* NYTPuzzleUpgrader.swift */; };
    143 		884BC090D4E2D416AA52D6FD /* FriendPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E78C275F8A90E3E3EEF190CC /* FriendPickerView.swift */; };
    144 		88A34C8857B2B3D45A6FBCB2 /* PuzzleSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 710BCB6A647A820B106CE666 /* PuzzleSession.swift */; };
    145 		88BACA1689459AC9AED20D43 /* NotificationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D2FD896D75863554E31654C /* NotificationState.swift */; };
    146 		89CEDB8864F61E42AC04F9D6 /* RecordSerializerMovesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 443BF6DF77C8226313EE9564 /* RecordSerializerMovesTests.swift */; };
    147 		8AE376C0726116082B15241D /* ShareLinkRouteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5990D989AD745211A18848E4 /* ShareLinkRouteTests.swift */; };
    148 		8B356C953DA0FAF149C3391A /* Puzzles in Resources */ = {isa = PBXBuildFile; fileRef = BA67C509B467132D1B7510A4 /* Puzzles */; };
    149 		8C37D748EBFD75DACCB992C3 /* DriveMonitorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29686FFBC5BC8BCCF8CCC49A /* DriveMonitorTests.swift */; };
    150 		8D8A9F70731C98DD00BE1DA5 /* Layouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 836B8D4B351C9225162A82C0 /* Layouts.swift */; };
    151 		8ECA254A8BB852BF4B9CE6D7 /* MarketingScreenshots.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBEE60E9D850739CA3D01AA /* MarketingScreenshots.swift */; };
    152 		8F5CB2F94E083D06D7E04280 /* PlayerSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20B331CC55827FEF3420ABCE /* PlayerSession.swift */; };
    153 		8FEE38B2B540F0E91560747F /* PushPayloadCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33DE10D2A5AFBAC73469BD33 /* PushPayloadCipher.swift */; };
    154 		903681985C17FCB5F97773A9 /* OpenPuzzleBannerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8CA0FC750259EB1D762B0EE /* OpenPuzzleBannerTests.swift */; };
    155 		91703E54DB4679C1911BF994 /* Moves.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86470163BFF956F3DE438506 /* Moves.swift */; };
    156 		924B29C1EEB29F849A6824C3 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C8886A66F0877858A67D62 /* AboutView.swift */; };
    157 		931431F8052FC58768C9BC26 /* FriendControllerNicknameReplayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E2702C74378FD2F14D1CE33 /* FriendControllerNicknameReplayTests.swift */; };
    158 		93DB3DD9A8EE994B92E7C084 /* GridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED48AD9C3A7A113D101BBD21 /* GridView.swift */; };
    159 		9502840161DB88BB6BB409D5 /* Journal.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3D29B227D2B0E699423C48 /* Journal.swift */; };
    160 		95170ECF07E94E7581C2B66F /* ContentKeyDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAFA466405AABA1C06272795 /* ContentKeyDirectory.swift */; };
    161 		9582AA583F5EA008FFC82B64 /* ZoneOrphaningTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A01534A21796A4EC7113A9 /* ZoneOrphaningTests.swift */; };
    162 		95B4083F8BC2CA465077A662 /* PlayerColorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23FCFFF1C2C7E909DFD8FC43 /* PlayerColorTests.swift */; };
    163 		95FDB86366A30C95C69D5A02 /* RevealConfirmationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71312F9248AA21238F7D5D6D /* RevealConfirmationTests.swift */; };
    164 		9789150602A3321D2E1E7E81 /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0BF60C84D92A9024AC1A53FC /* Media.xcassets */; };
    165 		978F91DBAE94BC5DA1D94705 /* DriveMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70AD1A006E6D03E4429E3BF0 /* DriveMonitor.swift */; };
    166 		98F8FBF324ED00D53FEBB1DB /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = 465F2BB469EFE84CF3733398 /* Game.swift */; };
    167 		9AACF424992AE45FD7937064 /* GameStoreCompletionLockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E230B327585E1E3A2921C92 /* GameStoreCompletionLockTests.swift */; };
    168 		9AD5700398B1C1F29A3A75F6 /* TipStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D6991C1EBAB2C64D9DF669 /* TipStoreTests.swift */; };
    169 		9AD8936D94FD676B23DFBB77 /* RecentChanges.swift in Sources */ = {isa = PBXBuildFile; fileRef = 605CA0FC7AF069CE3A3B38C1 /* RecentChanges.swift */; };
    170 		9B1162B1714415FE58CBAE2C /* PersistenceControllerHealTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54A448620E71515AAA7BA3DD /* PersistenceControllerHealTests.swift */; };
    171 		9C52C48DB4996D5C83DEC144 /* PuzzleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57B1734CF731C2E405A39159 /* PuzzleView.swift */; };
    172 		9CB8808193A4A106D721D767 /* XDFileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC61E2582D94B1E6EC67136 /* XDFileType.swift */; };
    173 		9DDFDF9D97FFC4F043CE84D8 /* PuzzleFileReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE1A1BF1EBD7D9E4584EF5FE /* PuzzleFileReader.swift */; };
    174 		9DFE90A6D7C58823CA02CA4E /* InboundRecordIdentityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08C434DB97DE2FBD8BEB867C /* InboundRecordIdentityTests.swift */; };
    175 		9FFD01CF6767220EEA20C0E4 /* GamePushCredentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78919F44C3035C48410FC894 /* GamePushCredentials.swift */; };
    176 		A0977C7B0B0D928DA569C326 /* NicknameDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111803C8FFFB0C839217482 /* NicknameDirectory.swift */; };
    177 		A133A4B4A0C95AF8708BD7E6 /* PushClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9F9E7ED4E1AF02F0C71051 /* PushClient.swift */; };
    178 		A458AF9CA8579AB51B695B08 /* PendingChangeReapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAEDA3C3765CD8D8897FE5D5 /* PendingChangeReapTests.swift */; };
    179 		A4BF96473CD6D937402239C1 /* NYTOverlaySlicer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A55219DFC3EEC971E3A8BA6D /* NYTOverlaySlicer.swift */; };
    180 		A65F99414F8CF6704567BB07 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C18E9B47668E008BE4CF86 /* Archive.swift */; };
    181 		A78FF09708EDED7ED50BB55B /* PushPayloadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E87E28DC9402A4369647DE50 /* PushPayloadTests.swift */; };
    182 		A7FA870D794CA00F7F3F05D2 /* EngagementHostEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400B3C87248F3FCA3F76400B /* EngagementHostEnvironment.swift */; };
    183 		A87E5E615559B6461B1C3F94 /* AnnouncementBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD68E9CA9D3057FE07E985E1 /* AnnouncementBanner.swift */; };
    184 		A98382E7659991FAF0F4ED0A /* AuthorIdentityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 457B06DBFDC358D213A7CE54 /* AuthorIdentityTests.swift */; };
    185 		AA38A51862FC0AB8F7D34899 /* NYTToXDConverterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C54223FED97577A593B7964E /* NYTToXDConverterTests.swift */; };
    186 		AACC9F70AEEDCB3360FFDEFF /* GridStateMergerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C7F3A9BD7FAF81CB77032A6 /* GridStateMergerTests.swift */; };
    187 		AC70BED45521BB77535C456C /* AppDelegatePushBufferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48EC33BC7DDAC3B7F29C3F02 /* AppDelegatePushBufferTests.swift */; };
    188 		ADBEAD1C0139BCF864CA8A1D /* PuzzleCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89528AF69DE06C61FA8E91A1 /* PuzzleCommands.swift */; };
    189 		AE5D8C531F89F05B7201B3AC /* SessionMonitorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F64DAE64C9AA042B330C526F /* SessionMonitorTests.swift */; };
    190 		AE92B185FB52032AEB9421A1 /* AppActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAD36DEDB3D997AB47146EA9 /* AppActions.swift */; };
    191 		AF4F1AE2A1F94E92C785C524 /* Square.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB851649DE78AAAC5A928C52 /* Square.swift */; };
    192 		B00743DAF8F46F14CE13E909 /* FriendsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 298A9C54A1CC753E860E174E /* FriendsView.swift */; };
    193 		B0170C8927EDD2E43F849204 /* TimeLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFFB5B2EFBB62B7021AC2FC2 /* TimeLog.swift */; };
    194 		B48DE7079BE2F31D2367C5F7 /* SessionPushPlanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA49DA9E0ADEB11A920787FA /* SessionPushPlanner.swift */; };
    195 		B5F78A55C9BCCD24E44D865F /* JournalReplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27ECEA51DE42D07495744EF8 /* JournalReplay.swift */; };
    196 		B6AB531F4E0C4031B627C539 /* PlayerSelectionPublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BF168D5C1CD85DAE5CAF9E /* PlayerSelectionPublisher.swift */; };
    197 		B762200F54C52E8377A80D15 /* NYTToXDConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6F111BE8750697C4BC7A17 /* NYTToXDConverter.swift */; };
    198 		BA7FCA7D8713582B2396BE6B /* GridPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9062DC673A2F5AC87FC417AB /* GridPosition.swift */; };
    199 		BAB41DBF7D099B1EE46B4ACB /* ClueBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E935CE4384F3B67CC22EEBAC /* ClueBar.swift */; };
    200 		BCB9A4D5E06EE5006186465D /* ShareController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C74683332956B0D1CA37589 /* ShareController.swift */; };
    201 		BD317ECC09C9099AC29B8C5D /* FriendAvatarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 065CD67A1D9F7B63AE6B42D6 /* FriendAvatarView.swift */; };
    202 		BE57957589423497338EBD37 /* ShareRoutingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68072F4F3EB5D5A78E03D408 /* ShareRoutingTests.swift */; };
    203 		C1930083671621AC79CF95DD /* MovesUpdaterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AF6157D97271205626E207C /* MovesUpdaterTests.swift */; };
    204 		C1D97A4CD02BC9C22C4208BB /* NYTAuthServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED8154F949E1D94252F70765 /* NYTAuthServiceTests.swift */; };
    205 		C30C0C4E54E4209A22843872 /* CrossmateModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F93AC31640C40FCC039570A3 /* CrossmateModel.xcdatamodeld */; };
    206 		C472EF02D8C7B0AC1D2284B8 /* CustomButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9B757D86362CD6F0500E9CB /* CustomButtons.swift */; };
    207 		C511387D9FFBCC2E2F5EF699 /* NotificationService.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 51318FC5DAE02D35CB005729 /* NotificationService.appex */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
    208 		C58F15CBEADA72032B54009D /* ReplayControlsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847415468DBB1C566D18BC17 /* ReplayControlsTests.swift */; };
    209 		C6CC673F2D4BB8A1C0439FBB /* PushClientTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63AE7146492AD286EF13C3E7 /* PushClientTests.swift */; };
    210 		C843CADAA263CED503528A4E /* NYTBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3413F8755236FC0578AF8109 /* NYTBrowseView.swift */; };
    211 		C89A15D812E372FE1C56039B /* PUZToXDConverterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE193CAB325C991952D7CE5 /* PUZToXDConverterTests.swift */; };
    212 		C8ACF431021E7BEE61A99153 /* FriendController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E655698481325C92EF5C348B /* FriendController.swift */; };
    213 		C9864C9940C9DAAD0A788094 /* ReplayLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFD574AC2D0A910053E2A73 /* ReplayLoader.swift */; };
    214 		CABF8BFAA30B9F26C482FAB9 /* EngagementCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FDE03B4A77A8095ED2C23AB /* EngagementCoordinator.swift */; };
    215 		CC250D6BA9B41CB722D8A62E /* CloudService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56BC76178319D0D669CD50FF /* CloudService.swift */; };
    216 		CCF3867C32C3F36E4F69A59E /* DebuggingMonitors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16E1DA8C1B4E73AFB779CC06 /* DebuggingMonitors.swift */; };
    217 		CED9627EAF70673B339D85EF /* AppDefaultsMigrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA74C894ECCA1A176DD5B2F8 /* AppDefaultsMigrator.swift */; };
    218 		CEDF853009D0C367035F1F76 /* PlayerNamePublisherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DE04D53EC3BC7D2DA0093C3 /* PlayerNamePublisherTests.swift */; };
    219 		CF0CA17ABE211DAE4DD35AFD /* RecordSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C0A7348E1283E7CD2486E2A /* RecordSerializer.swift */; };
    220 		CF1DC343A5D3110EDFA703AB /* LastUpdatedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF3B7E191D571FD800A4D719 /* LastUpdatedView.swift */; };
    221 		CF56BBB90855367CB85FEB43 /* PUZToXDConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B369788E0FEA0DCE1B125816 /* PUZToXDConverter.swift */; };
    222 		D05F1B226E67A31218BA4E3A /* InvitationFailureCallout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2494B62495C8048ED64072E2 /* InvitationFailureCallout.swift */; };
    223 		D13ECFAE05DB508577D2FF66 /* RecordBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5267DDA1A330DCBD07303D44 /* RecordBuilder.swift */; };
    224 		D240BF6498A9148855DB7734 /* EngagementLifecycle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DB0580C9B7C778F34BE6AC2 /* EngagementLifecycle.swift */; };
    225 		D2AC1D9BD7E387B06B9B8A0E /* PuzzleHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBA3FB1334DB816E62B7D9B /* PuzzleHeader.swift */; };
    226 		D3E5B61C695CE3DDA7016E47 /* FriendInviteRecencyStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4D705650CD98E8BB20AC4AD /* FriendInviteRecencyStore.swift */; };
    227 		D4EDC0D426688B295DA77C08 /* ShareLinkRoute.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2ED0D601BB574618C15B5EF /* ShareLinkRoute.swift */; };
    228 		D5022BFB2F8F2E5904EDF5C8 /* GameCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F34401948BC53DA9C93D64B /* GameCardView.swift */; };
    229 		D519F54F8CE0BD53D9C6144C /* AppServicesAnnouncementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9998739ED0875A17271B7899 /* AppServicesAnnouncementTests.swift */; };
    230 		D58980B92C99122C368D4216 /* GameStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93EE5BA78566EDED68D846AB /* GameStore.swift */; };
    231 		D94FF5DFB9412D2DC24F6574 /* RecordApplier.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD63A9B20168F3B81AF4348F /* RecordApplier.swift */; };
    232 		DAD7EA11DA7330773A485473 /* PeerChangeLedgerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D243575E32A8663B1AAF492A /* PeerChangeLedgerTests.swift */; };
    233 		DB098F40C6950E29B4BF10A7 /* ArchiveTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9EA9CF96312BFF5340CE2A7 /* ArchiveTests.swift */; };
    234 		DCAA1C4A4E4943675EC6632A /* NYTPuzzleFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0CCED43B365363662C45A30 /* NYTPuzzleFetcherTests.swift */; };
    235 		DDC7994B951A3A7B836B36F6 /* SuccessPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41A62DA6F7138876CA5A27EF /* SuccessPanel.swift */; };
    236 		DE90CC8BE23A0EFC4A32FFA5 /* MovesInboundTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF1254FE7BE3672AEC1607B1 /* MovesInboundTests.swift */; };
    237 		DE9E4FAB098731A650F2D306 /* CrossmateApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F2AC5C3B50F4178859E9AC /* CrossmateApp.swift */; };
    238 		E15A40AA623B60279E8DDF43 /* CloudDiagnostics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E5E4B165E374FEE732068B /* CloudDiagnostics.swift */; };
    239 		E16A8FE849A8E8BCC0F32280 /* CloudZones.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F86F0F1883A93F9622FB67 /* CloudZones.swift */; };
    240 		E1FBC33E3348547D4DF946C4 /* ReplayControls.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50EE8A159CC553623F6F7DE4 /* ReplayControls.swift */; };
    241 		E354A588DBA74627A9CD5591 /* Presence.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC4FF046BF772646B5CA73F /* Presence.swift */; };
    242 		E454051BA4797000C8AD2B48 /* MovesCodecLegacyDecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B33C21324E1474BCC126AA0 /* MovesCodecLegacyDecodeTests.swift */; };
    243 		E632562D090D8BE907F28C53 /* NotificationStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47532AED239AEF476D8E9206 /* NotificationStateTests.swift */; };
    244 		E6A13F8736ABF41F6346E301 /* ParticipantSummaries.swift in Sources */ = {isa = PBXBuildFile; fileRef = FED7C2528355BC007E48B7EF /* ParticipantSummaries.swift */; };
    245 		E81F92AAB2968997C3D68809 /* PuzzleNotificationText.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE7CEB8980A9664BAAA5D196 /* PuzzleNotificationText.swift */; };
    246 		E91FB8101E1927CA567DE825 /* PuzzleSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7AFD37B03A1C2E23E5766E6 /* PuzzleSource.swift */; };
    247 		E9A65F3548DD062FD36A19E1 /* CellPatterns.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F13534332699C80382FE682 /* CellPatterns.swift */; };
    248 		EA0AA522F6C383034C4572F4 /* AccountPushCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03D59EA74A4BA084AD97478D /* AccountPushCoordinator.swift */; };
    249 		EA9DA088AF131B0E6A874E70 /* NYTOverlaySlicerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7845E863A179DBB0B932C234 /* NYTOverlaySlicerTests.swift */; };
    250 		EB6E99226D5EE27668787008 /* BadgeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5B1E8E12B86DF6CA478F65 /* BadgeCoordinator.swift */; };
    251 		ECC1A5C3623F50B67185CFFB /* RecordSerializerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E4DEAF9F7887CBB46A99E8E /* RecordSerializerTests.swift */; };
    252 		ED6C21CD9F5AB286B69A02E4 /* GridStateMerger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14B05C19BD4705876B3DF0EC /* GridStateMerger.swift */; };
    253 		F15591B48E4155CB19C1F084 /* TimeLogTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7F35A7BFE52279BC24677F5 /* TimeLogTests.swift */; };
    254 		F1854B64C63447B7C7232097 /* DiagnosticsReport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D36E66AE489DC5C5FB85E19 /* DiagnosticsReport.swift */; };
    255 		F2F7CB23DA62BF714632B097 /* PushRequestAuthenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAF6E3F3558E128E7A482A61 /* PushRequestAuthenticator.swift */; };
    256 		F34EDFD45E2F5006807DDAC7 /* PuzzleCatalogTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8560440C548752EE93E0ED9 /* PuzzleCatalogTests.swift */; };
    257 		F46733AB3C72749A4A992667 /* SyncState+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A49C3C31F49A85764B84A15 /* SyncState+Helpers.swift */; };
    258 		F5F333B36654AEAF69A3C220 /* MovesJournalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C92190C4A344EC319A0F88 /* MovesJournalTests.swift */; };
    259 		F627D68B521FEA85EB80A850 /* CalendarDayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF20BDF7FF6423BA4FD911D5 /* CalendarDayCell.swift */; };
    260 		F8A4B3A1F9601654C60550B3 /* PushPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2C9D3E7FCE2D42C5B7E3856 /* PushPayload.swift */; };
    261 		F8D37DBE75D7B3F039A8FAC8 /* ImportedBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A832061C19BA0F073617CA2 /* ImportedBrowseView.swift */; };
    262 		F8DDA34AC1A6B6499C5D222E /* PlayerPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46148CF0F4D719692F81A6EC /* PlayerPreferences.swift */; };
    263 		FC480FE2930EAE406F5BBBDA /* GameRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD2570A5A3573D66B3C4A52 /* GameRowView.swift */; };
    264 		FC4853B4261B06945D0D1470 /* PushPayloadCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33DE10D2A5AFBAC73469BD33 /* PushPayloadCipher.swift */; };
    265 		FE447FF4339EA0BF874B1114 /* InviteDeliveryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28AB8C4D560CA5D4E4C61750 /* InviteDeliveryStore.swift */; };
    266 /* End PBXBuildFile section */
    267 
    268 /* Begin PBXContainerItemProxy section */
    269 		0751E0359C340223ADBA2B05 /* PBXContainerItemProxy */ = {
    270 			isa = PBXContainerItemProxy;
    271 			containerPortal = 9167165F088B7698D1319D3C /* Project object */;
    272 			proxyType = 1;
    273 			remoteGlobalIDString = 350366A68B75DC4BDA91F8E5;
    274 			remoteInfo = NotificationService;
    275 		};
    276 		F0122CF3E216720C4437CE6A /* PBXContainerItemProxy */ = {
    277 			isa = PBXContainerItemProxy;
    278 			containerPortal = 9167165F088B7698D1319D3C /* Project object */;
    279 			proxyType = 1;
    280 			remoteGlobalIDString = 7708D1C8A0145D43BD15DEB7;
    281 			remoteInfo = Crossmate;
    282 		};
    283 /* End PBXContainerItemProxy section */
    284 
    285 /* Begin PBXCopyFilesBuildPhase section */
    286 		2768812850886EB633B6C27C /* Embed Foundation Extensions */ = {
    287 			isa = PBXCopyFilesBuildPhase;
    288 			buildActionMask = 2147483647;
    289 			dstPath = "";
    290 			dstSubfolderSpec = 13;
    291 			files = (
    292 				C511387D9FFBCC2E2F5EF699 /* NotificationService.appex in Embed Foundation Extensions */,
    293 			);
    294 			name = "Embed Foundation Extensions";
    295 			runOnlyForDeploymentPostprocessing = 0;
    296 		};
    297 /* End PBXCopyFilesBuildPhase section */
    298 
    299 /* Begin PBXFileReference section */
    300 		03D59EA74A4BA084AD97478D /* AccountPushCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountPushCoordinator.swift; sourceTree = "<group>"; };
    301 		057F2B8B8A894D08BB801219 /* ShareLinkShortenerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareLinkShortenerTests.swift; sourceTree = "<group>"; };
    302 		065CD67A1D9F7B63AE6B42D6 /* FriendAvatarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendAvatarView.swift; sourceTree = "<group>"; };
    303 		07E5E4B165E374FEE732068B /* CloudDiagnostics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudDiagnostics.swift; sourceTree = "<group>"; };
    304 		08C434DB97DE2FBD8BEB867C /* InboundRecordIdentityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboundRecordIdentityTests.swift; sourceTree = "<group>"; };
    305 		08E8592B1CB1336E63498706 /* PeerPresenceGraceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerPresenceGraceTests.swift; sourceTree = "<group>"; };
    306 		09C81EFA0B7776CB9713CD63 /* NewGameSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewGameSheet.swift; sourceTree = "<group>"; };
    307 		09EA25E2AE98ACD029EC0129 /* GameStoreContributingDevicesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreContributingDevicesTests.swift; sourceTree = "<group>"; };
    308 		0BDC16DA7F762F4C5F4BED14 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = "<group>"; };
    309 		0BF60C84D92A9024AC1A53FC /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = "<group>"; };
    310 		0C0A7348E1283E7CD2486E2A /* RecordSerializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSerializer.swift; sourceTree = "<group>"; };
    311 		0C190EA5717C291B3F2AE46C /* SyncMonitorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncMonitorTests.swift; sourceTree = "<group>"; };
    312 		0DF9C2FEF0D3584864DFC967 /* PuzzleNotificationText+GameEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PuzzleNotificationText+GameEntity.swift"; sourceTree = "<group>"; };
    313 		0E230B327585E1E3A2921C92 /* GameStoreCompletionLockTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreCompletionLockTests.swift; sourceTree = "<group>"; };
    314 		0EB332831AB173ACF6BFEC59 /* SessionMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionMonitor.swift; sourceTree = "<group>"; };
    315 		0F8AAA9540C80F787A1465C0 /* MailComposeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailComposeView.swift; sourceTree = "<group>"; };
    316 		0FD9A43789D0ED123F7A99B0 /* CheckResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckResult.swift; sourceTree = "<group>"; };
    317 		10064D171DB7C48D3DE1E769 /* InviteCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InviteCoordinator.swift; sourceTree = "<group>"; };
    318 		11BF168D5C1CD85DAE5CAF9E /* PlayerSelectionPublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSelectionPublisher.swift; sourceTree = "<group>"; };
    319 		122BC1863D12DE06388D5DA7 /* GameStoreMergedAuthorCellsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreMergedAuthorCellsTests.swift; sourceTree = "<group>"; };
    320 		14B05C19BD4705876B3DF0EC /* GridStateMerger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridStateMerger.swift; sourceTree = "<group>"; };
    321 		14F2AC5C3B50F4178859E9AC /* CrossmateApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrossmateApp.swift; sourceTree = "<group>"; };
    322 		16AAC1E8D2CB3B5117159934 /* CloudQuery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudQuery.swift; sourceTree = "<group>"; };
    323 		16E1DA8C1B4E73AFB779CC06 /* DebuggingMonitors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebuggingMonitors.swift; sourceTree = "<group>"; };
    324 		1747D4DCB4BCC831069BBE07 /* NYTLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTLoginView.swift; sourceTree = "<group>"; };
    325 		1813630FA05C194AFF43855C /* PlayerRosterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRosterTests.swift; sourceTree = "<group>"; };
    326 		18C701DAE36000DE19F7CC95 /* EngagementHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementHost.swift; sourceTree = "<group>"; };
    327 		1B7539E0AD285C5A3AC3DDA2 /* GameArchiver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameArchiver.swift; sourceTree = "<group>"; };
    328 		1C08795365FABCC11A6C6E28 /* XDDecorationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDDecorationTests.swift; sourceTree = "<group>"; };
    329 		1D3ECD0DE71BE567BCEE15F6 /* AnnouncementCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnouncementCenter.swift; sourceTree = "<group>"; };
    330 		20B331CC55827FEF3420ABCE /* PlayerSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSession.swift; sourceTree = "<group>"; };
    331 		23A7390848B1943C80142934 /* PuzzleGridStats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleGridStats.swift; sourceTree = "<group>"; };
    332 		23FCFFF1C2C7E909DFD8FC43 /* PlayerColorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerColorTests.swift; sourceTree = "<group>"; };
    333 		2494B62495C8048ED64072E2 /* InvitationFailureCallout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitationFailureCallout.swift; sourceTree = "<group>"; };
    334 		24A4B5C8EC4A46906C07F819 /* GameEntity+ContentKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GameEntity+ContentKey.swift"; sourceTree = "<group>"; };
    335 		275DB12E9D81DD48B9025718 /* GameSyncVersion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameSyncVersion.swift; sourceTree = "<group>"; };
    336 		27ECEA51DE42D07495744EF8 /* JournalReplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JournalReplay.swift; sourceTree = "<group>"; };
    337 		283C5C97180C805B6C5BF622 /* PerGameZoneTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PerGameZoneTests.swift; sourceTree = "<group>"; };
    338 		28AB8C4D560CA5D4E4C61750 /* InviteDeliveryStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InviteDeliveryStore.swift; sourceTree = "<group>"; };
    339 		29686FFBC5BC8BCCF8CCC49A /* DriveMonitorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DriveMonitorTests.swift; sourceTree = "<group>"; };
    340 		298A9C54A1CC753E860E174E /* FriendsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendsView.swift; sourceTree = "<group>"; };
    341 		2A832061C19BA0F073617CA2 /* ImportedBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportedBrowseView.swift; sourceTree = "<group>"; };
    342 		2D2FD896D75863554E31654C /* NotificationState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationState.swift; sourceTree = "<group>"; };
    343 		2D36E66AE489DC5C5FB85E19 /* DiagnosticsReport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiagnosticsReport.swift; sourceTree = "<group>"; };
    344 		2D5B1E8E12B86DF6CA478F65 /* BadgeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgeCoordinator.swift; sourceTree = "<group>"; };
    345 		2DD9C72266D1BAC43C8976C0 /* JournalUploadTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JournalUploadTests.swift; sourceTree = "<group>"; };
    346 		2E2702C74378FD2F14D1CE33 /* FriendControllerNicknameReplayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendControllerNicknameReplayTests.swift; sourceTree = "<group>"; };
    347 		3059A4C23D040E0D1F258B92 /* CellAccessibilityDescriberTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellAccessibilityDescriberTests.swift; sourceTree = "<group>"; };
    348 		3111803C8FFFB0C839217482 /* NicknameDirectory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NicknameDirectory.swift; sourceTree = "<group>"; };
    349 		31C534911020BE4ED2E5065D /* GameStoreUnreadMovesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreUnreadMovesTests.swift; sourceTree = "<group>"; };
    350 		3292748EAE27B608C769D393 /* PlayerRoster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRoster.swift; sourceTree = "<group>"; };
    351 		33878A29B09A6154C7A63C82 /* KeychainHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainHelper.swift; sourceTree = "<group>"; };
    352 		33DE10D2A5AFBAC73469BD33 /* PushPayloadCipher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushPayloadCipher.swift; sourceTree = "<group>"; };
    353 		3413F8755236FC0578AF8109 /* NYTBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTBrowseView.swift; sourceTree = "<group>"; };
    354 		362E3A93102B6C9AECD4133A /* PuzzleSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleSessionTests.swift; sourceTree = "<group>"; };
    355 		382F9AAB0B98B4A78E255F15 /* DecorationRenderingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecorationRenderingTests.swift; sourceTree = "<group>"; };
    356 		3FDE73AD7C543B29C8E493F8 /* KeyboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardView.swift; sourceTree = "<group>"; };
    357 		3FFD574AC2D0A910053E2A73 /* ReplayLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayLoader.swift; sourceTree = "<group>"; };
    358 		400B3C87248F3FCA3F76400B /* EngagementHostEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementHostEnvironment.swift; sourceTree = "<group>"; };
    359 		41A62DA6F7138876CA5A27EF /* SuccessPanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessPanel.swift; sourceTree = "<group>"; };
    360 		43DC132D49361C56DE79C13E /* GameMutator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameMutator.swift; sourceTree = "<group>"; };
    361 		443BF6DF77C8226313EE9564 /* RecordSerializerMovesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSerializerMovesTests.swift; sourceTree = "<group>"; };
    362 		4494C40DD593DA7CE6641027 /* ImportServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportServiceTests.swift; sourceTree = "<group>"; };
    363 		44F86F0F1883A93F9622FB67 /* CloudZones.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudZones.swift; sourceTree = "<group>"; };
    364 		457B06DBFDC358D213A7CE54 /* AuthorIdentityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorIdentityTests.swift; sourceTree = "<group>"; };
    365 		46148CF0F4D719692F81A6EC /* PlayerPreferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerPreferences.swift; sourceTree = "<group>"; };
    366 		462CE0FD356F6137C9BFD30F /* ImportService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportService.swift; sourceTree = "<group>"; };
    367 		465F2BB469EFE84CF3733398 /* Game.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Game.swift; sourceTree = "<group>"; };
    368 		46801B570FC0B2C791ECDED3 /* PlayerSessionNavigationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSessionNavigationTests.swift; sourceTree = "<group>"; };
    369 		47532AED239AEF476D8E9206 /* NotificationStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationStateTests.swift; sourceTree = "<group>"; };
    370 		48EC33BC7DDAC3B7F29C3F02 /* AppDelegatePushBufferTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegatePushBufferTests.swift; sourceTree = "<group>"; };
    371 		4A467BC00116EEC8500BE6A1 /* PersistenceRecoveryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceRecoveryTests.swift; sourceTree = "<group>"; };
    372 		4B166E87D13C41C4D3575169 /* AccountPushCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountPushCoordinatorTests.swift; sourceTree = "<group>"; };
    373 		4B33C21324E1474BCC126AA0 /* MovesCodecLegacyDecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesCodecLegacyDecodeTests.swift; sourceTree = "<group>"; };
    374 		4DB0580C9B7C778F34BE6AC2 /* EngagementLifecycle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementLifecycle.swift; sourceTree = "<group>"; };
    375 		4DC7784917397BCD6B8D679D /* PuzzleCatalog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleCatalog.swift; sourceTree = "<group>"; };
    376 		4F4EBC0F07FF815274C028CA /* XDAcceptTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDAcceptTests.swift; sourceTree = "<group>"; };
    377 		507B4DC893CE8AC4778CBACE /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
    378 		50EE8A159CC553623F6F7DE4 /* ReplayControls.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayControls.swift; sourceTree = "<group>"; };
    379 		51318FC5DAE02D35CB005729 /* NotificationService.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = NotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; };
    380 		51583D7304A586BF38F0D8E3 /* FriendInviteRecencyStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendInviteRecencyStoreTests.swift; sourceTree = "<group>"; };
    381 		5267DDA1A330DCBD07303D44 /* RecordBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordBuilder.swift; sourceTree = "<group>"; };
    382 		52B50A841D92D1F2B173E7DF /* ShareLinkShortener.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareLinkShortener.swift; sourceTree = "<group>"; };
    383 		54A448620E71515AAA7BA3DD /* PersistenceControllerHealTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceControllerHealTests.swift; sourceTree = "<group>"; };
    384 		56BC76178319D0D669CD50FF /* CloudService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudService.swift; sourceTree = "<group>"; };
    385 		570F8FE85CC46CE3CB5CFEC1 /* NYTOverlayLetterRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTOverlayLetterRecognizer.swift; sourceTree = "<group>"; };
    386 		57B1734CF731C2E405A39159 /* PuzzleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleView.swift; sourceTree = "<group>"; };
    387 		5990D989AD745211A18848E4 /* ShareLinkRouteTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareLinkRouteTests.swift; sourceTree = "<group>"; };
    388 		5C74683332956B0D1CA37589 /* ShareController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareController.swift; sourceTree = "<group>"; };
    389 		5C838C184A0C7B1B0A9821CE /* PlayerRecordPresenceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRecordPresenceTests.swift; sourceTree = "<group>"; };
    390 		5CBEE60E9D850739CA3D01AA /* MarketingScreenshots.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarketingScreenshots.swift; sourceTree = "<group>"; };
    391 		5DE04D53EC3BC7D2DA0093C3 /* PlayerNamePublisherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerNamePublisherTests.swift; sourceTree = "<group>"; };
    392 		5E6BB07A54A3C3AF6F210F49 /* CloudJoinFailureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudJoinFailureTests.swift; sourceTree = "<group>"; };
    393 		603E6FC55F1BD944592379D2 /* ReplayCacheTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayCacheTests.swift; sourceTree = "<group>"; };
    394 		605CA0FC7AF069CE3A3B38C1 /* RecentChanges.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecentChanges.swift; sourceTree = "<group>"; };
    395 		60E818B0F4689BAD57660B7C /* GameCursorStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameCursorStoreTests.swift; sourceTree = "<group>"; };
    396 		630A65B1CCFEFEA825D3DD41 /* PushRequestAuthenticatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushRequestAuthenticatorTests.swift; sourceTree = "<group>"; };
    397 		63AE7146492AD286EF13C3E7 /* PushClientTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushClientTests.swift; sourceTree = "<group>"; };
    398 		64C8064F04FC6177D987ACA2 /* Puzzle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Puzzle.swift; sourceTree = "<group>"; };
    399 		663934F0B7CA8BDD462DFAA4 /* GameShareItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameShareItem.swift; sourceTree = "<group>"; };
    400 		67CFF96D54D2DE9C44EB120A /* EngagementCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementCoordinatorTests.swift; sourceTree = "<group>"; };
    401 		68072F4F3EB5D5A78E03D408 /* ShareRoutingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareRoutingTests.swift; sourceTree = "<group>"; };
    402 		6940546CFA1E87EF814AA6BB /* HardwareKeyboardInputView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareKeyboardInputView.swift; sourceTree = "<group>"; };
    403 		6B1F07B5DDE2A8B49B28392A /* GridThumbnailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridThumbnailView.swift; sourceTree = "<group>"; };
    404 		6BDD06460A76D4AF31077732 /* InputMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputMonitor.swift; sourceTree = "<group>"; };
    405 		6C793B5B9684D49328E42129 /* PushPayloadCipherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushPayloadCipherTests.swift; sourceTree = "<group>"; };
    406 		6C7F3A9BD7FAF81CB77032A6 /* GridStateMergerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridStateMergerTests.swift; sourceTree = "<group>"; };
    407 		6F0B4F65D017C1FBAC3B23DF /* PlayerSelection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSelection.swift; sourceTree = "<group>"; };
    408 		6F34401948BC53DA9C93D64B /* GameCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameCardView.swift; sourceTree = "<group>"; };
    409 		7023E506D777DB80B18A7DB5 /* BundledBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundledBrowseView.swift; sourceTree = "<group>"; };
    410 		70AD1A006E6D03E4429E3BF0 /* DriveMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DriveMonitor.swift; sourceTree = "<group>"; };
    411 		710BCB6A647A820B106CE666 /* PuzzleSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleSession.swift; sourceTree = "<group>"; };
    412 		71312F9248AA21238F7D5D6D /* RevealConfirmationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RevealConfirmationTests.swift; sourceTree = "<group>"; };
    413 		71DFD035381B6252DCD873C9 /* PlayerNamePublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerNamePublisher.swift; sourceTree = "<group>"; };
    414 		73DDDED719CFFDD6035C3B48 /* SyncEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncEngine.swift; sourceTree = "<group>"; };
    415 		74C8886A66F0877858A67D62 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; };
    416 		7845E863A179DBB0B932C234 /* NYTOverlaySlicerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTOverlaySlicerTests.swift; sourceTree = "<group>"; };
    417 		78919F44C3035C48410FC894 /* GamePushCredentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamePushCredentials.swift; sourceTree = "<group>"; };
    418 		78C92190C4A344EC319A0F88 /* MovesJournalTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesJournalTests.swift; sourceTree = "<group>"; };
    419 		7A4AFF292381C9B33C0F2CD6 /* FriendZone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendZone.swift; sourceTree = "<group>"; };
    420 		7A7BD8DFDB41BFBA694A0933 /* SessionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCoordinator.swift; sourceTree = "<group>"; };
    421 		7B3E1A382B24A7803701D947 /* Crossmate.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Crossmate.entitlements; sourceTree = "<group>"; };
    422 		7B5A8118AC2FE60D877F1D29 /* GamePushCredentialsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamePushCredentialsTests.swift; sourceTree = "<group>"; };
    423 		7B8B65482CA1739A3863A99E /* ClueList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClueList.swift; sourceTree = "<group>"; };
    424 		7C6AB016CA4E2FC69A0E6A4F /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
    425 		7DD270E16E00145EF2807EA9 /* MovesUpdater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesUpdater.swift; sourceTree = "<group>"; };
    426 		7E4DEAF9F7887CBB46A99E8E /* RecordSerializerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSerializerTests.swift; sourceTree = "<group>"; };
    427 		800CCFBE90554F287E765755 /* FriendZoneTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendZoneTests.swift; sourceTree = "<group>"; };
    428 		80B377D237AC14B9856579E1 /* RecentChangesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecentChangesTests.swift; sourceTree = "<group>"; };
    429 		833AAFBA0094BAB27E13FE29 /* FriendEncryptionKeyDirectory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendEncryptionKeyDirectory.swift; sourceTree = "<group>"; };
    430 		836B8D4B351C9225162A82C0 /* Layouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Layouts.swift; sourceTree = "<group>"; };
    431 		847415468DBB1C566D18BC17 /* ReplayControlsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayControlsTests.swift; sourceTree = "<group>"; };
    432 		86470163BFF956F3DE438506 /* Moves.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Moves.swift; sourceTree = "<group>"; };
    433 		88E8AACB638FE5724B534B41 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
    434 		89528AF69DE06C61FA8E91A1 /* PuzzleCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleCommands.swift; sourceTree = "<group>"; };
    435 		89B1FFD2F90141EA949A8540 /* JournalReplayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JournalReplayTests.swift; sourceTree = "<group>"; };
    436 		8A9F9E7ED4E1AF02F0C71051 /* PushClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushClient.swift; sourceTree = "<group>"; };
    437 		8C040D5EBC73B1ED47C2C9D4 /* SessionPushPlannerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionPushPlannerTests.swift; sourceTree = "<group>"; };
    438 		8D2AD5021F1AF0DB44FA4540 /* GameCursorStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameCursorStore.swift; sourceTree = "<group>"; };
    439 		8D4A76B233E16B7C5A248EB7 /* TipStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipStore.swift; sourceTree = "<group>"; };
    440 		8FDE03B4A77A8095ED2C23AB /* EngagementCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementCoordinator.swift; sourceTree = "<group>"; };
    441 		9062DC673A2F5AC87FC417AB /* GridPosition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridPosition.swift; sourceTree = "<group>"; };
    442 		92168360625ECDD36FF50EE8 /* NicknameDirectoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NicknameDirectoryTests.swift; sourceTree = "<group>"; };
    443 		927186458ED03FD0C5660765 /* CrossmateModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = CrossmateModel.xcdatamodel; sourceTree = "<group>"; };
    444 		93EE5BA78566EDED68D846AB /* GameStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStore.swift; sourceTree = "<group>"; };
    445 		9406C27662147CD3C0783644 /* GameViewedStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewedStoreTests.swift; sourceTree = "<group>"; };
    446 		9447F0FE34C63810C6F1D8BE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
    447 		94CEBA27A8AC4FCC92ADE1B4 /* EnsureGameEntityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnsureGameEntityTests.swift; sourceTree = "<group>"; };
    448 		960353A6F38DD290112A2FE1 /* RemoteCoordinateValidationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteCoordinateValidationTests.swift; sourceTree = "<group>"; };
    449 		978A96CC6F550ED7A73F8D96 /* AnnouncementCenterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnouncementCenterTests.swift; sourceTree = "<group>"; };
    450 		98E68FD021EF8ED50BC706EE /* CloudContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudContainer.swift; sourceTree = "<group>"; };
    451 		9998739ED0875A17271B7899 /* AppServicesAnnouncementTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppServicesAnnouncementTests.swift; sourceTree = "<group>"; };
    452 		99F4D2E1504784E738D2B33A /* AppDefaultsMigratorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDefaultsMigratorTests.swift; sourceTree = "<group>"; };
    453 		9A49C3C31F49A85764B84A15 /* SyncState+Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SyncState+Helpers.swift"; sourceTree = "<group>"; };
    454 		9A56778AF8190F0D7EB2E27E /* GameStorePushAddressTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStorePushAddressTests.swift; sourceTree = "<group>"; };
    455 		9AF6157D97271205626E207C /* MovesUpdaterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesUpdaterTests.swift; sourceTree = "<group>"; };
    456 		9B3E0C62CBF5ADF7C01C1D54 /* EngagementMessageAuthenticator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementMessageAuthenticator.swift; sourceTree = "<group>"; };
    457 		9F13534332699C80382FE682 /* CellPatterns.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellPatterns.swift; sourceTree = "<group>"; };
    458 		9F6DB4116933BB66274AC6E8 /* XDLimitsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDLimitsTests.swift; sourceTree = "<group>"; };
    459 		9F8D856707B4D76FDBF4AE69 /* FriendEntity+DisplayName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FriendEntity+DisplayName.swift"; sourceTree = "<group>"; };
    460 		A0CCED43B365363662C45A30 /* NYTPuzzleFetcherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTPuzzleFetcherTests.swift; sourceTree = "<group>"; };
    461 		A24FD313982C8094CD020106 /* EngagementMessageAuthenticatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementMessageAuthenticatorTests.swift; sourceTree = "<group>"; };
    462 		A253416F4FEA271A80B22A73 /* NYTAuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTAuthService.swift; sourceTree = "<group>"; };
    463 		A3A251D89028B3CA065DE053 /* PuzzleScoreboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleScoreboard.swift; sourceTree = "<group>"; };
    464 		A55219DFC3EEC971E3A8BA6D /* NYTOverlaySlicer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTOverlaySlicer.swift; sourceTree = "<group>"; };
    465 		A61768D423564A9080414A38 /* NoticeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeView.swift; sourceTree = "<group>"; };
    466 		A8C18E9B47668E008BE4CF86 /* Archive.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Archive.swift; sourceTree = "<group>"; };
    467 		A8CA0FC750259EB1D762B0EE /* OpenPuzzleBannerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenPuzzleBannerTests.swift; sourceTree = "<group>"; };
    468 		A9A01534A21796A4EC7113A9 /* ZoneOrphaningTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZoneOrphaningTests.swift; sourceTree = "<group>"; };
    469 		A9DC6394CB0F5B85C083FAC7 /* TipsArchive.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipsArchive.swift; sourceTree = "<group>"; };
    470 		ACC295195602B3DDF7BB3895 /* PersistenceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceController.swift; sourceTree = "<group>"; };
    471 		ADBA3FB1334DB816E62B7D9B /* PuzzleHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleHeader.swift; sourceTree = "<group>"; };
    472 		AF3B7E191D571FD800A4D719 /* LastUpdatedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LastUpdatedView.swift; sourceTree = "<group>"; };
    473 		AFA63B0051B4E6F4FC4B132A /* ExternalBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalBrowseView.swift; sourceTree = "<group>"; };
    474 		AFFB5B2EFBB62B7021AC2FC2 /* TimeLog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeLog.swift; sourceTree = "<group>"; };
    475 		B024B2FFB11E51E9724BBE23 /* CompactSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompactSlider.swift; sourceTree = "<group>"; };
    476 		B0938B0ACB40772EE522D77C /* NYTPuzzleFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTPuzzleFetcher.swift; sourceTree = "<group>"; };
    477 		B09D52DB46731E92C3E9297C /* EngagementStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementStore.swift; sourceTree = "<group>"; };
    478 		B135C285570F91181595B405 /* CellMark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellMark.swift; sourceTree = "<group>"; };
    479 		B1F1471BE4D6D84361DD692B /* AuthorIdentity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorIdentity.swift; sourceTree = "<group>"; };
    480 		B34489D0864DF76AF436E391 /* NYTPuzzleUpgraderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTPuzzleUpgraderTests.swift; sourceTree = "<group>"; };
    481 		B369788E0FEA0DCE1B125816 /* PUZToXDConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PUZToXDConverter.swift; sourceTree = "<group>"; };
    482 		B3D873ABDF871E14794A2845 /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = "<group>"; };
    483 		B427285F8D6BE35025591BFA /* PeerChangeLedger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerChangeLedger.swift; sourceTree = "<group>"; };
    484 		B689A7138429641E61E9E558 /* Crossmate.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Crossmate.app; sourceTree = BUILT_PRODUCTS_DIR; };
    485 		B7557050B17F113BB488AA23 /* DecorationImages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecorationImages.swift; sourceTree = "<group>"; };
    486 		B766E872B12DC79ECCD80941 /* FriendModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendModelTests.swift; sourceTree = "<group>"; };
    487 		B8560440C548752EE93E0ED9 /* PuzzleCatalogTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleCatalogTests.swift; sourceTree = "<group>"; };
    488 		B9031A1574C21866940F6A2C /* XD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XD.swift; sourceTree = "<group>"; };
    489 		B9AE0F26E602A9246F5C6ABF /* GameViewedStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewedStore.swift; sourceTree = "<group>"; };
    490 		B9EA9CF96312BFF5340CE2A7 /* ArchiveTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArchiveTests.swift; sourceTree = "<group>"; };
    491 		BA67C509B467132D1B7510A4 /* Puzzles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Puzzles; sourceTree = SOURCE_ROOT; };
    492 		BAEDA3C3765CD8D8897FE5D5 /* PendingChangeReapTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PendingChangeReapTests.swift; sourceTree = "<group>"; };
    493 		BCACEED6A9235EC6221F4F66 /* DiagnosticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiagnosticsView.swift; sourceTree = "<group>"; };
    494 		BD32BDDE9B007B11BE86B7A0 /* PushCredentialRotationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushCredentialRotationTests.swift; sourceTree = "<group>"; };
    495 		BD63A9B20168F3B81AF4348F /* RecordApplier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordApplier.swift; sourceTree = "<group>"; };
    496 		BF6F111BE8750697C4BC7A17 /* NYTToXDConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTToXDConverter.swift; sourceTree = "<group>"; };
    497 		BF7062403AC9CFB4FF04BBF3 /* GridSilhouetteTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridSilhouetteTests.swift; sourceTree = "<group>"; };
    498 		BFC1C59A30FB2571598273E4 /* GameMutatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameMutatorTests.swift; sourceTree = "<group>"; };
    499 		C06E2CC3A77CB306BD2DF867 /* LogScrubberTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogScrubberTests.swift; sourceTree = "<group>"; };
    500 		C2C9D3E7FCE2D42C5B7E3856 /* PushPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushPayload.swift; sourceTree = "<group>"; };
    501 		C3A2D346F414F374A45F92AD /* XDDecorationWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDDecorationWriter.swift; sourceTree = "<group>"; };
    502 		C54223FED97577A593B7964E /* NYTToXDConverterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTToXDConverterTests.swift; sourceTree = "<group>"; };
    503 		C7F35A7BFE52279BC24677F5 /* TimeLogTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeLogTests.swift; sourceTree = "<group>"; };
    504 		C8D6991C1EBAB2C64D9DF669 /* TipStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipStoreTests.swift; sourceTree = "<group>"; };
    505 		C90E94A01FEA77A5C9A2BC94 /* PuzzleNotificationTextTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleNotificationTextTests.swift; sourceTree = "<group>"; };
    506 		CA49DA9E0ADEB11A920787FA /* SessionPushPlanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionPushPlanner.swift; sourceTree = "<group>"; };
    507 		CA74C894ECCA1A176DD5B2F8 /* AppDefaultsMigrator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDefaultsMigrator.swift; sourceTree = "<group>"; };
    508 		CBDC81CA6A9C80EB31E7F493 /* AppServices.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppServices.swift; sourceTree = "<group>"; };
    509 		CD68E9CA9D3057FE07E985E1 /* AnnouncementBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnouncementBanner.swift; sourceTree = "<group>"; };
    510 		CE54EF557E8D808BAA20EA54 /* NYTPuzzleUpgrader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTPuzzleUpgrader.swift; sourceTree = "<group>"; };
    511 		CE7CEB8980A9664BAAA5D196 /* PuzzleNotificationText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleNotificationText.swift; sourceTree = "<group>"; };
    512 		CF20BDF7FF6423BA4FD911D5 /* CalendarDayCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarDayCell.swift; sourceTree = "<group>"; };
    513 		CF3D29B227D2B0E699423C48 /* Journal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Journal.swift; sourceTree = "<group>"; };
    514 		CFC4FF046BF772646B5CA73F /* Presence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Presence.swift; sourceTree = "<group>"; };
    515 		D16AC7215D0269195FEA8BA8 /* GridSilhouette.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridSilhouette.swift; sourceTree = "<group>"; };
    516 		D243575E32A8663B1AAF492A /* PeerChangeLedgerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerChangeLedgerTests.swift; sourceTree = "<group>"; };
    517 		D491B7232333AA8957732387 /* PendingEditFlagTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PendingEditFlagTests.swift; sourceTree = "<group>"; };
    518 		D4D705650CD98E8BB20AC4AD /* FriendInviteRecencyStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendInviteRecencyStore.swift; sourceTree = "<group>"; };
    519 		D97CBA409832A24D64DF0F5C /* Crossmate Unit Tests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = "Crossmate Unit Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
    520 		D9EE11280592CA66C2BEC71A /* PuzzleFileReaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleFileReaderTests.swift; sourceTree = "<group>"; };
    521 		DAD36DEDB3D997AB47146EA9 /* AppActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppActions.swift; sourceTree = "<group>"; };
    522 		DB55FC337CF72C650373210A /* PlayerColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerColor.swift; sourceTree = "<group>"; };
    523 		DB851649DE78AAAC5A928C52 /* Square.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Square.swift; sourceTree = "<group>"; };
    524 		DBD2570A5A3573D66B3C4A52 /* GameRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameRowView.swift; sourceTree = "<group>"; };
    525 		DD8B50452D3AFE25D98B497A /* NYTOverlayLetterRecognizerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTOverlayLetterRecognizerTests.swift; sourceTree = "<group>"; };
    526 		DD8E8D1BC7DF9EBB08F8CABD /* GameStoreRevocationLockTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreRevocationLockTests.swift; sourceTree = "<group>"; };
    527 		E18FF14E0D73B0D2DB427F08 /* JoiningPuzzleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoiningPuzzleView.swift; sourceTree = "<group>"; };
    528 		E25A040EA4DC9672C895A7AC /* InviteEntity+DisplayName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "InviteEntity+DisplayName.swift"; sourceTree = "<group>"; };
    529 		E2ED0D601BB574618C15B5EF /* ShareLinkRoute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareLinkRoute.swift; sourceTree = "<group>"; };
    530 		E5EEBF169823C172000FC45B /* GameSummaryThumbnailTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameSummaryThumbnailTests.swift; sourceTree = "<group>"; };
    531 		E655698481325C92EF5C348B /* FriendController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendController.swift; sourceTree = "<group>"; };
    532 		E78C275F8A90E3E3EEF190CC /* FriendPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendPickerView.swift; sourceTree = "<group>"; };
    533 		E7AFD37B03A1C2E23E5766E6 /* PuzzleSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleSource.swift; sourceTree = "<group>"; };
    534 		E7F1EDE21BB7D6456D6E9000 /* PlayerPreferencesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerPreferencesTests.swift; sourceTree = "<group>"; };
    535 		E87E28DC9402A4369647DE50 /* PushPayloadTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushPayloadTests.swift; sourceTree = "<group>"; };
    536 		E935CE4384F3B67CC22EEBAC /* ClueBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClueBar.swift; sourceTree = "<group>"; };
    537 		EAC61E2582D94B1E6EC67136 /* XDFileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDFileType.swift; sourceTree = "<group>"; };
    538 		EAF18C52558DBD58ECAD4964 /* XDMarkup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDMarkup.swift; sourceTree = "<group>"; };
    539 		EAFA466405AABA1C06272795 /* ContentKeyDirectory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentKeyDirectory.swift; sourceTree = "<group>"; };
    540 		ED2D830B9EFAD753C233BEB4 /* GameListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameListView.swift; sourceTree = "<group>"; };
    541 		ED48AD9C3A7A113D101BBD21 /* GridView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridView.swift; sourceTree = "<group>"; };
    542 		ED8154F949E1D94252F70765 /* NYTAuthServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTAuthServiceTests.swift; sourceTree = "<group>"; };
    543 		EE1A1BF1EBD7D9E4584EF5FE /* PuzzleFileReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleFileReader.swift; sourceTree = "<group>"; };
    544 		EF1254FE7BE3672AEC1607B1 /* MovesInboundTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesInboundTests.swift; sourceTree = "<group>"; };
    545 		F5DF04E70017065DFA95B396 /* PuzzleModifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleModifiers.swift; sourceTree = "<group>"; };
    546 		F64DAE64C9AA042B330C526F /* SessionMonitorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionMonitorTests.swift; sourceTree = "<group>"; };
    547 		F97B399E89BBB37730F2F1E9 /* TestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestHelpers.swift; sourceTree = "<group>"; };
    548 		F9B757D86362CD6F0500E9CB /* CustomButtons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomButtons.swift; sourceTree = "<group>"; };
    549 		F9FE0A9624DB87758F3D1768 /* XDMarkupTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDMarkupTests.swift; sourceTree = "<group>"; };
    550 		FAF6E3F3558E128E7A482A61 /* PushRequestAuthenticator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushRequestAuthenticator.swift; sourceTree = "<group>"; };
    551 		FDE193CAB325C991952D7CE5 /* PUZToXDConverterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PUZToXDConverterTests.swift; sourceTree = "<group>"; };
    552 		FED7C2528355BC007E48B7EF /* ParticipantSummaries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParticipantSummaries.swift; sourceTree = "<group>"; };
    553 		FEDD63AD5E33E2B0399780EF /* NotificationNavigationBrokerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationNavigationBrokerTests.swift; sourceTree = "<group>"; };
    554 		FF159746D076E051C2CB590C /* PlayerSelectionPublisherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSelectionPublisherTests.swift; sourceTree = "<group>"; };
    555 		FF4CA70D10760D6770907606 /* GridAccessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridAccessibility.swift; sourceTree = "<group>"; };
    556 /* End PBXFileReference section */
    557 
    558 /* Begin PBXGroup section */
    559 		01B07D8724DEA04C3E74558E /* Support */ = {
    560 			isa = PBXGroup;
    561 			children = (
    562 				F97B399E89BBB37730F2F1E9 /* TestHelpers.swift */,
    563 			);
    564 			name = Support;
    565 			path = Tests/Support;
    566 			sourceTree = "<group>";
    567 		};
    568 		074C2962E79CAE6C0EA6431A /* Sync */ = {
    569 			isa = PBXGroup;
    570 			children = (
    571 				A8C18E9B47668E008BE4CF86 /* Archive.swift */,
    572 				B1F1471BE4D6D84361DD692B /* AuthorIdentity.swift */,
    573 				07E5E4B165E374FEE732068B /* CloudDiagnostics.swift */,
    574 				16AAC1E8D2CB3B5117159934 /* CloudQuery.swift */,
    575 				44F86F0F1883A93F9622FB67 /* CloudZones.swift */,
    576 				2D36E66AE489DC5C5FB85E19 /* DiagnosticsReport.swift */,
    577 				8FDE03B4A77A8095ED2C23AB /* EngagementCoordinator.swift */,
    578 				9B3E0C62CBF5ADF7C01C1D54 /* EngagementMessageAuthenticator.swift */,
    579 				E655698481325C92EF5C348B /* FriendController.swift */,
    580 				7A4AFF292381C9B33C0F2CD6 /* FriendZone.swift */,
    581 				1B7539E0AD285C5A3AC3DDA2 /* GameArchiver.swift */,
    582 				78919F44C3035C48410FC894 /* GamePushCredentials.swift */,
    583 				275DB12E9D81DD48B9025718 /* GameSyncVersion.swift */,
    584 				14B05C19BD4705876B3DF0EC /* GridStateMerger.swift */,
    585 				86470163BFF956F3DE438506 /* Moves.swift */,
    586 				7DD270E16E00145EF2807EA9 /* MovesUpdater.swift */,
    587 				B427285F8D6BE35025591BFA /* PeerChangeLedger.swift */,
    588 				11BF168D5C1CD85DAE5CAF9E /* PlayerSelectionPublisher.swift */,
    589 				CFC4FF046BF772646B5CA73F /* Presence.swift */,
    590 				605CA0FC7AF069CE3A3B38C1 /* RecentChanges.swift */,
    591 				BD63A9B20168F3B81AF4348F /* RecordApplier.swift */,
    592 				5267DDA1A330DCBD07303D44 /* RecordBuilder.swift */,
    593 				0C0A7348E1283E7CD2486E2A /* RecordSerializer.swift */,
    594 				0EB332831AB173ACF6BFEC59 /* SessionMonitor.swift */,
    595 				5C74683332956B0D1CA37589 /* ShareController.swift */,
    596 				73DDDED719CFFDD6035C3B48 /* SyncEngine.swift */,
    597 				9A49C3C31F49A85764B84A15 /* SyncState+Helpers.swift */,
    598 			);
    599 			path = Sync;
    600 			sourceTree = "<group>";
    601 		};
    602 		08204641416EEBE67C3EF5F6 /* GameList */ = {
    603 			isa = PBXGroup;
    604 			children = (
    605 				6F34401948BC53DA9C93D64B /* GameCardView.swift */,
    606 				ED2D830B9EFAD753C233BEB4 /* GameListView.swift */,
    607 				DBD2570A5A3573D66B3C4A52 /* GameRowView.swift */,
    608 				663934F0B7CA8BDD462DFAA4 /* GameShareItem.swift */,
    609 				AF3B7E191D571FD800A4D719 /* LastUpdatedView.swift */,
    610 			);
    611 			path = GameList;
    612 			sourceTree = "<group>";
    613 		};
    614 		12BCF7948BC2C200C647C279 /* Products */ = {
    615 			isa = PBXGroup;
    616 			children = (
    617 				D97CBA409832A24D64DF0F5C /* Crossmate Unit Tests.xctest */,
    618 				B689A7138429641E61E9E558 /* Crossmate.app */,
    619 				51318FC5DAE02D35CB005729 /* NotificationService.appex */,
    620 			);
    621 			name = Products;
    622 			sourceTree = "<group>";
    623 		};
    624 		1FB709FE7325CD51300A22F0 /* Settings */ = {
    625 			isa = PBXGroup;
    626 			children = (
    627 				74C8886A66F0877858A67D62 /* AboutView.swift */,
    628 				BCACEED6A9235EC6221F4F66 /* DiagnosticsView.swift */,
    629 				7C6AB016CA4E2FC69A0E6A4F /* SettingsView.swift */,
    630 				A9DC6394CB0F5B85C083FAC7 /* TipsArchive.swift */,
    631 			);
    632 			path = Settings;
    633 			sourceTree = "<group>";
    634 		};
    635 		212DB6FCF46C41F81C41D232 /* Unit */ = {
    636 			isa = PBXGroup;
    637 			children = (
    638 				4B166E87D13C41C4D3575169 /* AccountPushCoordinatorTests.swift */,
    639 				978A96CC6F550ED7A73F8D96 /* AnnouncementCenterTests.swift */,
    640 				99F4D2E1504784E738D2B33A /* AppDefaultsMigratorTests.swift */,
    641 				48EC33BC7DDAC3B7F29C3F02 /* AppDelegatePushBufferTests.swift */,
    642 				B9EA9CF96312BFF5340CE2A7 /* ArchiveTests.swift */,
    643 				3059A4C23D040E0D1F258B92 /* CellAccessibilityDescriberTests.swift */,
    644 				5E6BB07A54A3C3AF6F210F49 /* CloudJoinFailureTests.swift */,
    645 				382F9AAB0B98B4A78E255F15 /* DecorationRenderingTests.swift */,
    646 				29686FFBC5BC8BCCF8CCC49A /* DriveMonitorTests.swift */,
    647 				51583D7304A586BF38F0D8E3 /* FriendInviteRecencyStoreTests.swift */,
    648 				60E818B0F4689BAD57660B7C /* GameCursorStoreTests.swift */,
    649 				BFC1C59A30FB2571598273E4 /* GameMutatorTests.swift */,
    650 				0E230B327585E1E3A2921C92 /* GameStoreCompletionLockTests.swift */,
    651 				09EA25E2AE98ACD029EC0129 /* GameStoreContributingDevicesTests.swift */,
    652 				122BC1863D12DE06388D5DA7 /* GameStoreMergedAuthorCellsTests.swift */,
    653 				9A56778AF8190F0D7EB2E27E /* GameStorePushAddressTests.swift */,
    654 				DD8E8D1BC7DF9EBB08F8CABD /* GameStoreRevocationLockTests.swift */,
    655 				31C534911020BE4ED2E5065D /* GameStoreUnreadMovesTests.swift */,
    656 				E5EEBF169823C172000FC45B /* GameSummaryThumbnailTests.swift */,
    657 				9406C27662147CD3C0783644 /* GameViewedStoreTests.swift */,
    658 				BF7062403AC9CFB4FF04BBF3 /* GridSilhouetteTests.swift */,
    659 				6C7F3A9BD7FAF81CB77032A6 /* GridStateMergerTests.swift */,
    660 				4494C40DD593DA7CE6641027 /* ImportServiceTests.swift */,
    661 				89B1FFD2F90141EA949A8540 /* JournalReplayTests.swift */,
    662 				2DD9C72266D1BAC43C8976C0 /* JournalUploadTests.swift */,
    663 				C06E2CC3A77CB306BD2DF867 /* LogScrubberTests.swift */,
    664 				78C92190C4A344EC319A0F88 /* MovesJournalTests.swift */,
    665 				9AF6157D97271205626E207C /* MovesUpdaterTests.swift */,
    666 				92168360625ECDD36FF50EE8 /* NicknameDirectoryTests.swift */,
    667 				FEDD63AD5E33E2B0399780EF /* NotificationNavigationBrokerTests.swift */,
    668 				47532AED239AEF476D8E9206 /* NotificationStateTests.swift */,
    669 				ED8154F949E1D94252F70765 /* NYTAuthServiceTests.swift */,
    670 				DD8B50452D3AFE25D98B497A /* NYTOverlayLetterRecognizerTests.swift */,
    671 				7845E863A179DBB0B932C234 /* NYTOverlaySlicerTests.swift */,
    672 				A0CCED43B365363662C45A30 /* NYTPuzzleFetcherTests.swift */,
    673 				B34489D0864DF76AF436E391 /* NYTPuzzleUpgraderTests.swift */,
    674 				C54223FED97577A593B7964E /* NYTToXDConverterTests.swift */,
    675 				A8CA0FC750259EB1D762B0EE /* OpenPuzzleBannerTests.swift */,
    676 				D243575E32A8663B1AAF492A /* PeerChangeLedgerTests.swift */,
    677 				D491B7232333AA8957732387 /* PendingEditFlagTests.swift */,
    678 				4A467BC00116EEC8500BE6A1 /* PersistenceRecoveryTests.swift */,
    679 				23FCFFF1C2C7E909DFD8FC43 /* PlayerColorTests.swift */,
    680 				5DE04D53EC3BC7D2DA0093C3 /* PlayerNamePublisherTests.swift */,
    681 				E7F1EDE21BB7D6456D6E9000 /* PlayerPreferencesTests.swift */,
    682 				1813630FA05C194AFF43855C /* PlayerRosterTests.swift */,
    683 				FF159746D076E051C2CB590C /* PlayerSelectionPublisherTests.swift */,
    684 				46801B570FC0B2C791ECDED3 /* PlayerSessionNavigationTests.swift */,
    685 				63AE7146492AD286EF13C3E7 /* PushClientTests.swift */,
    686 				6C793B5B9684D49328E42129 /* PushPayloadCipherTests.swift */,
    687 				E87E28DC9402A4369647DE50 /* PushPayloadTests.swift */,
    688 				630A65B1CCFEFEA825D3DD41 /* PushRequestAuthenticatorTests.swift */,
    689 				FDE193CAB325C991952D7CE5 /* PUZToXDConverterTests.swift */,
    690 				B8560440C548752EE93E0ED9 /* PuzzleCatalogTests.swift */,
    691 				D9EE11280592CA66C2BEC71A /* PuzzleFileReaderTests.swift */,
    692 				C90E94A01FEA77A5C9A2BC94 /* PuzzleNotificationTextTests.swift */,
    693 				362E3A93102B6C9AECD4133A /* PuzzleSessionTests.swift */,
    694 				80B377D237AC14B9856579E1 /* RecentChangesTests.swift */,
    695 				443BF6DF77C8226313EE9564 /* RecordSerializerMovesTests.swift */,
    696 				7E4DEAF9F7887CBB46A99E8E /* RecordSerializerTests.swift */,
    697 				603E6FC55F1BD944592379D2 /* ReplayCacheTests.swift */,
    698 				847415468DBB1C566D18BC17 /* ReplayControlsTests.swift */,
    699 				71312F9248AA21238F7D5D6D /* RevealConfirmationTests.swift */,
    700 				8C040D5EBC73B1ED47C2C9D4 /* SessionPushPlannerTests.swift */,
    701 				5990D989AD745211A18848E4 /* ShareLinkRouteTests.swift */,
    702 				057F2B8B8A894D08BB801219 /* ShareLinkShortenerTests.swift */,
    703 				0C190EA5717C291B3F2AE46C /* SyncMonitorTests.swift */,
    704 				C7F35A7BFE52279BC24677F5 /* TimeLogTests.swift */,
    705 				C8D6991C1EBAB2C64D9DF669 /* TipStoreTests.swift */,
    706 				4F4EBC0F07FF815274C028CA /* XDAcceptTests.swift */,
    707 				1C08795365FABCC11A6C6E28 /* XDDecorationTests.swift */,
    708 				9F6DB4116933BB66274AC6E8 /* XDLimitsTests.swift */,
    709 				F9FE0A9624DB87758F3D1768 /* XDMarkupTests.swift */,
    710 				ABB371EF2574E95782CB05FD /* Sync */,
    711 			);
    712 			name = Unit;
    713 			path = Tests/Unit;
    714 			sourceTree = "<group>";
    715 		};
    716 		41DB2417FF67A47FE6890256 /* Models */ = {
    717 			isa = PBXGroup;
    718 			children = (
    719 				B135C285570F91181595B405 /* CellMark.swift */,
    720 				0FD9A43789D0ED123F7A99B0 /* CheckResult.swift */,
    721 				B09D52DB46731E92C3E9297C /* EngagementStore.swift */,
    722 				9F8D856707B4D76FDBF4AE69 /* FriendEntity+DisplayName.swift */,
    723 				D4D705650CD98E8BB20AC4AD /* FriendInviteRecencyStore.swift */,
    724 				465F2BB469EFE84CF3733398 /* Game.swift */,
    725 				8D2AD5021F1AF0DB44FA4540 /* GameCursorStore.swift */,
    726 				24A4B5C8EC4A46906C07F819 /* GameEntity+ContentKey.swift */,
    727 				B9AE0F26E602A9246F5C6ABF /* GameViewedStore.swift */,
    728 				9062DC673A2F5AC87FC417AB /* GridPosition.swift */,
    729 				E25A040EA4DC9672C895A7AC /* InviteEntity+DisplayName.swift */,
    730 				FED7C2528355BC007E48B7EF /* ParticipantSummaries.swift */,
    731 				DB55FC337CF72C650373210A /* PlayerColor.swift */,
    732 				46148CF0F4D719692F81A6EC /* PlayerPreferences.swift */,
    733 				3292748EAE27B608C769D393 /* PlayerRoster.swift */,
    734 				6F0B4F65D017C1FBAC3B23DF /* PlayerSelection.swift */,
    735 				20B331CC55827FEF3420ABCE /* PlayerSession.swift */,
    736 				64C8064F04FC6177D987ACA2 /* Puzzle.swift */,
    737 				4DC7784917397BCD6B8D679D /* PuzzleCatalog.swift */,
    738 				0DF9C2FEF0D3584864DFC967 /* PuzzleNotificationText+GameEntity.swift */,
    739 				E7AFD37B03A1C2E23E5766E6 /* PuzzleSource.swift */,
    740 				50EE8A159CC553623F6F7DE4 /* ReplayControls.swift */,
    741 				DB851649DE78AAAC5A928C52 /* Square.swift */,
    742 				AFFB5B2EFBB62B7021AC2FC2 /* TimeLog.swift */,
    743 				8D4A76B233E16B7C5A248EB7 /* TipStore.swift */,
    744 				B9031A1574C21866940F6A2C /* XD.swift */,
    745 				C3A2D346F414F374A45F92AD /* XDDecorationWriter.swift */,
    746 				EAC61E2582D94B1E6EC67136 /* XDFileType.swift */,
    747 				EAF18C52558DBD58ECAD4964 /* XDMarkup.swift */,
    748 				F93AC31640C40FCC039570A3 /* CrossmateModel.xcdatamodeld */,
    749 			);
    750 			path = Models;
    751 			sourceTree = "<group>";
    752 		};
    753 		486B6F0E3B86BC2765CCEC33 /* Friends */ = {
    754 			isa = PBXGroup;
    755 			children = (
    756 				E78C275F8A90E3E3EEF190CC /* FriendPickerView.swift */,
    757 				298A9C54A1CC753E860E174E /* FriendsView.swift */,
    758 				2494B62495C8048ED64072E2 /* InvitationFailureCallout.swift */,
    759 			);
    760 			path = Friends;
    761 			sourceTree = "<group>";
    762 		};
    763 		565DBAFC8DB2589B3F0AF90E /* Persistence */ = {
    764 			isa = PBXGroup;
    765 			children = (
    766 				43DC132D49361C56DE79C13E /* GameMutator.swift */,
    767 				93EE5BA78566EDED68D846AB /* GameStore.swift */,
    768 				CF3D29B227D2B0E699423C48 /* Journal.swift */,
    769 				27ECEA51DE42D07495744EF8 /* JournalReplay.swift */,
    770 				ACC295195602B3DDF7BB3895 /* PersistenceController.swift */,
    771 			);
    772 			path = Persistence;
    773 			sourceTree = "<group>";
    774 		};
    775 		5770CE69DB2B0B7462FACE53 /* Crossmate */ = {
    776 			isa = PBXGroup;
    777 			children = (
    778 				7B3E1A382B24A7803701D947 /* Crossmate.entitlements */,
    779 				14F2AC5C3B50F4178859E9AC /* CrossmateApp.swift */,
    780 				9447F0FE34C63810C6F1D8BE /* Info.plist */,
    781 				0BF60C84D92A9024AC1A53FC /* Media.xcassets */,
    782 				41DB2417FF67A47FE6890256 /* Models */,
    783 				565DBAFC8DB2589B3F0AF90E /* Persistence */,
    784 				D8F0E3376B2616B4E917129C /* Services */,
    785 				074C2962E79CAE6C0EA6431A /* Sync */,
    786 				84445EA9CACB6AAAEDE6965F /* Views */,
    787 			);
    788 			path = Crossmate;
    789 			sourceTree = "<group>";
    790 		};
    791 		6F470E54D9E6E99FCEA893D1 /* Generated */ = {
    792 			isa = PBXGroup;
    793 			children = (
    794 				0BDC16DA7F762F4C5F4BED14 /* Config.xcconfig */,
    795 			);
    796 			path = Generated;
    797 			sourceTree = "<group>";
    798 		};
    799 		84445EA9CACB6AAAEDE6965F /* Views */ = {
    800 			isa = PBXGroup;
    801 			children = (
    802 				5CBEE60E9D850739CA3D01AA /* MarketingScreenshots.swift */,
    803 				AB1863007AA59F4769675599 /* Browse */,
    804 				99CEFF0AB23C2B9329A9F8B2 /* Components */,
    805 				486B6F0E3B86BC2765CCEC33 /* Friends */,
    806 				08204641416EEBE67C3EF5F6 /* GameList */,
    807 				895088B5D0214046158C6D24 /* Puzzle */,
    808 				1FB709FE7325CD51300A22F0 /* Settings */,
    809 			);
    810 			path = Views;
    811 			sourceTree = "<group>";
    812 		};
    813 		895088B5D0214046158C6D24 /* Puzzle */ = {
    814 			isa = PBXGroup;
    815 			children = (
    816 				9F13534332699C80382FE682 /* CellPatterns.swift */,
    817 				E935CE4384F3B67CC22EEBAC /* ClueBar.swift */,
    818 				7B8B65482CA1739A3863A99E /* ClueList.swift */,
    819 				B7557050B17F113BB488AA23 /* DecorationImages.swift */,
    820 				FF4CA70D10760D6770907606 /* GridAccessibility.swift */,
    821 				ED48AD9C3A7A113D101BBD21 /* GridView.swift */,
    822 				6940546CFA1E87EF814AA6BB /* HardwareKeyboardInputView.swift */,
    823 				E18FF14E0D73B0D2DB427F08 /* JoiningPuzzleView.swift */,
    824 				3FDE73AD7C543B29C8E493F8 /* KeyboardView.swift */,
    825 				89528AF69DE06C61FA8E91A1 /* PuzzleCommands.swift */,
    826 				23A7390848B1943C80142934 /* PuzzleGridStats.swift */,
    827 				ADBA3FB1334DB816E62B7D9B /* PuzzleHeader.swift */,
    828 				F5DF04E70017065DFA95B396 /* PuzzleModifiers.swift */,
    829 				A3A251D89028B3CA065DE053 /* PuzzleScoreboard.swift */,
    830 				57B1734CF731C2E405A39159 /* PuzzleView.swift */,
    831 				41A62DA6F7138876CA5A27EF /* SuccessPanel.swift */,
    832 			);
    833 			path = Puzzle;
    834 			sourceTree = "<group>";
    835 		};
    836 		99CEFF0AB23C2B9329A9F8B2 /* Components */ = {
    837 			isa = PBXGroup;
    838 			children = (
    839 				CD68E9CA9D3057FE07E985E1 /* AnnouncementBanner.swift */,
    840 				B024B2FFB11E51E9724BBE23 /* CompactSlider.swift */,
    841 				F9B757D86362CD6F0500E9CB /* CustomButtons.swift */,
    842 				065CD67A1D9F7B63AE6B42D6 /* FriendAvatarView.swift */,
    843 				6B1F07B5DDE2A8B49B28392A /* GridThumbnailView.swift */,
    844 				836B8D4B351C9225162A82C0 /* Layouts.swift */,
    845 				0F8AAA9540C80F787A1465C0 /* MailComposeView.swift */,
    846 				A61768D423564A9080414A38 /* NoticeView.swift */,
    847 			);
    848 			path = Components;
    849 			sourceTree = "<group>";
    850 		};
    851 		9BF7383FE2AB07F12434C013 /* Shared */ = {
    852 			isa = PBXGroup;
    853 			children = (
    854 				EAFA466405AABA1C06272795 /* ContentKeyDirectory.swift */,
    855 				833AAFBA0094BAB27E13FE29 /* FriendEncryptionKeyDirectory.swift */,
    856 				3111803C8FFFB0C839217482 /* NicknameDirectory.swift */,
    857 				2D2FD896D75863554E31654C /* NotificationState.swift */,
    858 				C2C9D3E7FCE2D42C5B7E3856 /* PushPayload.swift */,
    859 				33DE10D2A5AFBAC73469BD33 /* PushPayloadCipher.swift */,
    860 				CE7CEB8980A9664BAAA5D196 /* PuzzleNotificationText.swift */,
    861 			);
    862 			path = Shared;
    863 			sourceTree = "<group>";
    864 		};
    865 		AB1863007AA59F4769675599 /* Browse */ = {
    866 			isa = PBXGroup;
    867 			children = (
    868 				7023E506D777DB80B18A7DB5 /* BundledBrowseView.swift */,
    869 				CF20BDF7FF6423BA4FD911D5 /* CalendarDayCell.swift */,
    870 				AFA63B0051B4E6F4FC4B132A /* ExternalBrowseView.swift */,
    871 				2A832061C19BA0F073617CA2 /* ImportedBrowseView.swift */,
    872 				09C81EFA0B7776CB9713CD63 /* NewGameSheet.swift */,
    873 				3413F8755236FC0578AF8109 /* NYTBrowseView.swift */,
    874 				1747D4DCB4BCC831069BBE07 /* NYTLoginView.swift */,
    875 			);
    876 			path = Browse;
    877 			sourceTree = "<group>";
    878 		};
    879 		ABB371EF2574E95782CB05FD /* Sync */ = {
    880 			isa = PBXGroup;
    881 			children = (
    882 				9998739ED0875A17271B7899 /* AppServicesAnnouncementTests.swift */,
    883 				457B06DBFDC358D213A7CE54 /* AuthorIdentityTests.swift */,
    884 				67CFF96D54D2DE9C44EB120A /* EngagementCoordinatorTests.swift */,
    885 				A24FD313982C8094CD020106 /* EngagementMessageAuthenticatorTests.swift */,
    886 				94CEBA27A8AC4FCC92ADE1B4 /* EnsureGameEntityTests.swift */,
    887 				2E2702C74378FD2F14D1CE33 /* FriendControllerNicknameReplayTests.swift */,
    888 				B766E872B12DC79ECCD80941 /* FriendModelTests.swift */,
    889 				800CCFBE90554F287E765755 /* FriendZoneTests.swift */,
    890 				7B5A8118AC2FE60D877F1D29 /* GamePushCredentialsTests.swift */,
    891 				08C434DB97DE2FBD8BEB867C /* InboundRecordIdentityTests.swift */,
    892 				4B33C21324E1474BCC126AA0 /* MovesCodecLegacyDecodeTests.swift */,
    893 				EF1254FE7BE3672AEC1607B1 /* MovesInboundTests.swift */,
    894 				08E8592B1CB1336E63498706 /* PeerPresenceGraceTests.swift */,
    895 				BAEDA3C3765CD8D8897FE5D5 /* PendingChangeReapTests.swift */,
    896 				283C5C97180C805B6C5BF622 /* PerGameZoneTests.swift */,
    897 				54A448620E71515AAA7BA3DD /* PersistenceControllerHealTests.swift */,
    898 				5C838C184A0C7B1B0A9821CE /* PlayerRecordPresenceTests.swift */,
    899 				BD32BDDE9B007B11BE86B7A0 /* PushCredentialRotationTests.swift */,
    900 				960353A6F38DD290112A2FE1 /* RemoteCoordinateValidationTests.swift */,
    901 				F64DAE64C9AA042B330C526F /* SessionMonitorTests.swift */,
    902 				68072F4F3EB5D5A78E03D408 /* ShareRoutingTests.swift */,
    903 				A9A01534A21796A4EC7113A9 /* ZoneOrphaningTests.swift */,
    904 			);
    905 			path = Sync;
    906 			sourceTree = "<group>";
    907 		};
    908 		C5342A31D253372339517EEE = {
    909 			isa = PBXGroup;
    910 			children = (
    911 				BA67C509B467132D1B7510A4 /* Puzzles */,
    912 				5770CE69DB2B0B7462FACE53 /* Crossmate */,
    913 				6F470E54D9E6E99FCEA893D1 /* Generated */,
    914 				D7910EDB740AFF963BDCA6CE /* NotificationService */,
    915 				9BF7383FE2AB07F12434C013 /* Shared */,
    916 				01B07D8724DEA04C3E74558E /* Support */,
    917 				212DB6FCF46C41F81C41D232 /* Unit */,
    918 				12BCF7948BC2C200C647C279 /* Products */,
    919 			);
    920 			sourceTree = "<group>";
    921 		};
    922 		D7910EDB740AFF963BDCA6CE /* NotificationService */ = {
    923 			isa = PBXGroup;
    924 			children = (
    925 				88E8AACB638FE5724B534B41 /* Info.plist */,
    926 				B3D873ABDF871E14794A2845 /* NotificationService.entitlements */,
    927 				507B4DC893CE8AC4778CBACE /* NotificationService.swift */,
    928 			);
    929 			path = NotificationService;
    930 			sourceTree = "<group>";
    931 		};
    932 		D8F0E3376B2616B4E917129C /* Services */ = {
    933 			isa = PBXGroup;
    934 			children = (
    935 				03D59EA74A4BA084AD97478D /* AccountPushCoordinator.swift */,
    936 				1D3ECD0DE71BE567BCEE15F6 /* AnnouncementCenter.swift */,
    937 				DAD36DEDB3D997AB47146EA9 /* AppActions.swift */,
    938 				CA74C894ECCA1A176DD5B2F8 /* AppDefaultsMigrator.swift */,
    939 				CBDC81CA6A9C80EB31E7F493 /* AppServices.swift */,
    940 				2D5B1E8E12B86DF6CA478F65 /* BadgeCoordinator.swift */,
    941 				98E68FD021EF8ED50BC706EE /* CloudContainer.swift */,
    942 				56BC76178319D0D669CD50FF /* CloudService.swift */,
    943 				16E1DA8C1B4E73AFB779CC06 /* DebuggingMonitors.swift */,
    944 				70AD1A006E6D03E4429E3BF0 /* DriveMonitor.swift */,
    945 				18C701DAE36000DE19F7CC95 /* EngagementHost.swift */,
    946 				400B3C87248F3FCA3F76400B /* EngagementHostEnvironment.swift */,
    947 				4DB0580C9B7C778F34BE6AC2 /* EngagementLifecycle.swift */,
    948 				D16AC7215D0269195FEA8BA8 /* GridSilhouette.swift */,
    949 				462CE0FD356F6137C9BFD30F /* ImportService.swift */,
    950 				6BDD06460A76D4AF31077732 /* InputMonitor.swift */,
    951 				10064D171DB7C48D3DE1E769 /* InviteCoordinator.swift */,
    952 				28AB8C4D560CA5D4E4C61750 /* InviteDeliveryStore.swift */,
    953 				33878A29B09A6154C7A63C82 /* KeychainHelper.swift */,
    954 				A253416F4FEA271A80B22A73 /* NYTAuthService.swift */,
    955 				570F8FE85CC46CE3CB5CFEC1 /* NYTOverlayLetterRecognizer.swift */,
    956 				A55219DFC3EEC971E3A8BA6D /* NYTOverlaySlicer.swift */,
    957 				B0938B0ACB40772EE522D77C /* NYTPuzzleFetcher.swift */,
    958 				CE54EF557E8D808BAA20EA54 /* NYTPuzzleUpgrader.swift */,
    959 				BF6F111BE8750697C4BC7A17 /* NYTToXDConverter.swift */,
    960 				71DFD035381B6252DCD873C9 /* PlayerNamePublisher.swift */,
    961 				8A9F9E7ED4E1AF02F0C71051 /* PushClient.swift */,
    962 				FAF6E3F3558E128E7A482A61 /* PushRequestAuthenticator.swift */,
    963 				B369788E0FEA0DCE1B125816 /* PUZToXDConverter.swift */,
    964 				EE1A1BF1EBD7D9E4584EF5FE /* PuzzleFileReader.swift */,
    965 				710BCB6A647A820B106CE666 /* PuzzleSession.swift */,
    966 				3FFD574AC2D0A910053E2A73 /* ReplayLoader.swift */,
    967 				7A7BD8DFDB41BFBA694A0933 /* SessionCoordinator.swift */,
    968 				CA49DA9E0ADEB11A920787FA /* SessionPushPlanner.swift */,
    969 				E2ED0D601BB574618C15B5EF /* ShareLinkRoute.swift */,
    970 				52B50A841D92D1F2B173E7DF /* ShareLinkShortener.swift */,
    971 			);
    972 			path = Services;
    973 			sourceTree = "<group>";
    974 		};
    975 /* End PBXGroup section */
    976 
    977 /* Begin PBXNativeTarget section */
    978 		350366A68B75DC4BDA91F8E5 /* NotificationService */ = {
    979 			isa = PBXNativeTarget;
    980 			buildConfigurationList = 97D15A585690B87E7C17FF8A /* Build configuration list for PBXNativeTarget "NotificationService" */;
    981 			buildPhases = (
    982 				6D4D7955C5F70F9F18D7C1F0 /* Sources */,
    983 			);
    984 			buildRules = (
    985 			);
    986 			dependencies = (
    987 			);
    988 			name = NotificationService;
    989 			packageProductDependencies = (
    990 			);
    991 			productName = NotificationService;
    992 			productReference = 51318FC5DAE02D35CB005729 /* NotificationService.appex */;
    993 			productType = "com.apple.product-type.app-extension";
    994 		};
    995 		7708D1C8A0145D43BD15DEB7 /* Crossmate */ = {
    996 			isa = PBXNativeTarget;
    997 			buildConfigurationList = AB7D49875A042FD78EDD157A /* Build configuration list for PBXNativeTarget "Crossmate" */;
    998 			buildPhases = (
    999 				C17B62906BBF281D006D8DC2 /* Sources */,
   1000 				C475EFB2B47245175F9B415C /* Resources */,
   1001 				2768812850886EB633B6C27C /* Embed Foundation Extensions */,
   1002 			);
   1003 			buildRules = (
   1004 			);
   1005 			dependencies = (
   1006 				0638C125467274AA03088E07 /* PBXTargetDependency */,
   1007 			);
   1008 			name = Crossmate;
   1009 			packageProductDependencies = (
   1010 			);
   1011 			productName = Crossmate;
   1012 			productReference = B689A7138429641E61E9E558 /* Crossmate.app */;
   1013 			productType = "com.apple.product-type.application";
   1014 		};
   1015 		C38EBD1A6B9D37EF81FF3511 /* Crossmate Unit Tests */ = {
   1016 			isa = PBXNativeTarget;
   1017 			buildConfigurationList = 0C7AF110B3697D116B91817A /* Build configuration list for PBXNativeTarget "Crossmate Unit Tests" */;
   1018 			buildPhases = (
   1019 				931E2DAAD4EC47B06F7AB60A /* Sources */,
   1020 			);
   1021 			buildRules = (
   1022 			);
   1023 			dependencies = (
   1024 				42035D5EEE61A5D459E1D46D /* PBXTargetDependency */,
   1025 			);
   1026 			name = "Crossmate Unit Tests";
   1027 			packageProductDependencies = (
   1028 			);
   1029 			productName = "Crossmate Unit Tests";
   1030 			productReference = D97CBA409832A24D64DF0F5C /* Crossmate Unit Tests.xctest */;
   1031 			productType = "com.apple.product-type.bundle.unit-test";
   1032 		};
   1033 /* End PBXNativeTarget section */
   1034 
   1035 /* Begin PBXProject section */
   1036 		9167165F088B7698D1319D3C /* Project object */ = {
   1037 			isa = PBXProject;
   1038 			attributes = {
   1039 				BuildIndependentTargetsInParallel = YES;
   1040 				LastUpgradeCheck = 1430;
   1041 				TargetAttributes = {
   1042 					350366A68B75DC4BDA91F8E5 = {
   1043 						DevelopmentTeam = 7TD7PZBNXP;
   1044 						ProvisioningStyle = Automatic;
   1045 					};
   1046 					7708D1C8A0145D43BD15DEB7 = {
   1047 						DevelopmentTeam = 7TD7PZBNXP;
   1048 						ProvisioningStyle = Automatic;
   1049 					};
   1050 					C38EBD1A6B9D37EF81FF3511 = {
   1051 						DevelopmentTeam = 7TD7PZBNXP;
   1052 						ProvisioningStyle = Automatic;
   1053 					};
   1054 				};
   1055 			};
   1056 			buildConfigurationList = 9A436EF03A8593C66A18A832 /* Build configuration list for PBXProject "Crossmate" */;
   1057 			developmentRegion = en;
   1058 			hasScannedForEncodings = 0;
   1059 			knownRegions = (
   1060 				Base,
   1061 				en,
   1062 			);
   1063 			mainGroup = C5342A31D253372339517EEE;
   1064 			minimizedProjectReferenceProxies = 1;
   1065 			preferredProjectObjectVersion = 77;
   1066 			productRefGroup = 12BCF7948BC2C200C647C279 /* Products */;
   1067 			projectDirPath = "";
   1068 			projectRoot = "";
   1069 			targets = (
   1070 				7708D1C8A0145D43BD15DEB7 /* Crossmate */,
   1071 				350366A68B75DC4BDA91F8E5 /* NotificationService */,
   1072 				C38EBD1A6B9D37EF81FF3511 /* Crossmate Unit Tests */,
   1073 			);
   1074 		};
   1075 /* End PBXProject section */
   1076 
   1077 /* Begin PBXResourcesBuildPhase section */
   1078 		C475EFB2B47245175F9B415C /* Resources */ = {
   1079 			isa = PBXResourcesBuildPhase;
   1080 			buildActionMask = 2147483647;
   1081 			files = (
   1082 				9789150602A3321D2E1E7E81 /* Media.xcassets in Resources */,
   1083 				8B356C953DA0FAF149C3391A /* Puzzles in Resources */,
   1084 			);
   1085 			runOnlyForDeploymentPostprocessing = 0;
   1086 		};
   1087 /* End PBXResourcesBuildPhase section */
   1088 
   1089 /* Begin PBXSourcesBuildPhase section */
   1090 		6D4D7955C5F70F9F18D7C1F0 /* Sources */ = {
   1091 			isa = PBXSourcesBuildPhase;
   1092 			buildActionMask = 2147483647;
   1093 			files = (
   1094 				95170ECF07E94E7581C2B66F /* ContentKeyDirectory.swift in Sources */,
   1095 				18CA29E61C4F1471A455FEC8 /* FriendEncryptionKeyDirectory.swift in Sources */,
   1096 				A0977C7B0B0D928DA569C326 /* NicknameDirectory.swift in Sources */,
   1097 				7D4A56FBB1C5D5F89271B77F /* NotificationService.swift in Sources */,
   1098 				88BACA1689459AC9AED20D43 /* NotificationState.swift in Sources */,
   1099 				F8A4B3A1F9601654C60550B3 /* PushPayload.swift in Sources */,
   1100 				FC4853B4261B06945D0D1470 /* PushPayloadCipher.swift in Sources */,
   1101 				351CB23C537BAB61863D95F6 /* PuzzleNotificationText.swift in Sources */,
   1102 			);
   1103 			runOnlyForDeploymentPostprocessing = 0;
   1104 		};
   1105 		931E2DAAD4EC47B06F7AB60A /* Sources */ = {
   1106 			isa = PBXSourcesBuildPhase;
   1107 			buildActionMask = 2147483647;
   1108 			files = (
   1109 				521E877D28502B917C89B66D /* AccountPushCoordinatorTests.swift in Sources */,
   1110 				6C091D30AAC9F63B7CE6FB58 /* AnnouncementCenterTests.swift in Sources */,
   1111 				5082CCB75939E1BC6E9DC03A /* AppDefaultsMigratorTests.swift in Sources */,
   1112 				AC70BED45521BB77535C456C /* AppDelegatePushBufferTests.swift in Sources */,
   1113 				D519F54F8CE0BD53D9C6144C /* AppServicesAnnouncementTests.swift in Sources */,
   1114 				DB098F40C6950E29B4BF10A7 /* ArchiveTests.swift in Sources */,
   1115 				A98382E7659991FAF0F4ED0A /* AuthorIdentityTests.swift in Sources */,
   1116 				7BE53C851A311A7B6255B45E /* CellAccessibilityDescriberTests.swift in Sources */,
   1117 				8171E5B23FEC5FB63029A640 /* CloudJoinFailureTests.swift in Sources */,
   1118 				4E1A70D1EC709A0478631DCF /* DecorationRenderingTests.swift in Sources */,
   1119 				8C37D748EBFD75DACCB992C3 /* DriveMonitorTests.swift in Sources */,
   1120 				328309D8CC72CCB5623FB2A1 /* EngagementCoordinatorTests.swift in Sources */,
   1121 				3B3F30AA1B7AA6D4465CB537 /* EngagementMessageAuthenticatorTests.swift in Sources */,
   1122 				02943BA53D2130B910E6DC00 /* EnsureGameEntityTests.swift in Sources */,
   1123 				931431F8052FC58768C9BC26 /* FriendControllerNicknameReplayTests.swift in Sources */,
   1124 				61A0F71985C898D046556A1D /* FriendInviteRecencyStoreTests.swift in Sources */,
   1125 				6A1CA96FF48CBEEE78EA6D34 /* FriendModelTests.swift in Sources */,
   1126 				712A2764596A2D17A0BBBF3B /* FriendZoneTests.swift in Sources */,
   1127 				85A798525FE1DC98210A9E82 /* GameCursorStoreTests.swift in Sources */,
   1128 				2C0DFC182240A2519ED1FA6A /* GameMutatorTests.swift in Sources */,
   1129 				30703DDF575DCDA53227DA66 /* GamePushCredentialsTests.swift in Sources */,
   1130 				9AACF424992AE45FD7937064 /* GameStoreCompletionLockTests.swift in Sources */,
   1131 				4D7BF839BA71E1BF0AE9BCE9 /* GameStoreContributingDevicesTests.swift in Sources */,
   1132 				262A9CE8C3CB93869190CFF1 /* GameStoreMergedAuthorCellsTests.swift in Sources */,
   1133 				2C5A15054CCCBF9FD626AFBB /* GameStorePushAddressTests.swift in Sources */,
   1134 				205894D447BFE2CCEB07575D /* GameStoreRevocationLockTests.swift in Sources */,
   1135 				449B0A09A36B276C93CFB9A4 /* GameStoreUnreadMovesTests.swift in Sources */,
   1136 				7714B1C2FBCBBAD9BE8FEAF8 /* GameSummaryThumbnailTests.swift in Sources */,
   1137 				1D08DDEDEF5433912CC6D4DB /* GameViewedStoreTests.swift in Sources */,
   1138 				085B70680087464B8A7BA3EE /* GridSilhouetteTests.swift in Sources */,
   1139 				AACC9F70AEEDCB3360FFDEFF /* GridStateMergerTests.swift in Sources */,
   1140 				10AF4F2750E0D64AA3828F35 /* ImportServiceTests.swift in Sources */,
   1141 				9DFE90A6D7C58823CA02CA4E /* InboundRecordIdentityTests.swift in Sources */,
   1142 				0158184A413AE177F75B4150 /* JournalReplayTests.swift in Sources */,
   1143 				6E67C0DCB0416F382EA065B7 /* JournalUploadTests.swift in Sources */,
   1144 				2641299DE1F2E84E8C21E037 /* LogScrubberTests.swift in Sources */,
   1145 				E454051BA4797000C8AD2B48 /* MovesCodecLegacyDecodeTests.swift in Sources */,
   1146 				DE90CC8BE23A0EFC4A32FFA5 /* MovesInboundTests.swift in Sources */,
   1147 				F5F333B36654AEAF69A3C220 /* MovesJournalTests.swift in Sources */,
   1148 				C1930083671621AC79CF95DD /* MovesUpdaterTests.swift in Sources */,
   1149 				C1D97A4CD02BC9C22C4208BB /* NYTAuthServiceTests.swift in Sources */,
   1150 				2765E30202EF955B425CB1A3 /* NYTOverlayLetterRecognizerTests.swift in Sources */,
   1151 				EA9DA088AF131B0E6A874E70 /* NYTOverlaySlicerTests.swift in Sources */,
   1152 				DCAA1C4A4E4943675EC6632A /* NYTPuzzleFetcherTests.swift in Sources */,
   1153 				50C02D37A41D55CFA5D307E2 /* NYTPuzzleUpgraderTests.swift in Sources */,
   1154 				AA38A51862FC0AB8F7D34899 /* NYTToXDConverterTests.swift in Sources */,
   1155 				6850EAE474E589CE1EA2DF68 /* NicknameDirectoryTests.swift in Sources */,
   1156 				18D5BB584DBF92A2EC580AEA /* NotificationNavigationBrokerTests.swift in Sources */,
   1157 				E632562D090D8BE907F28C53 /* NotificationStateTests.swift in Sources */,
   1158 				903681985C17FCB5F97773A9 /* OpenPuzzleBannerTests.swift in Sources */,
   1159 				C89A15D812E372FE1C56039B /* PUZToXDConverterTests.swift in Sources */,
   1160 				DAD7EA11DA7330773A485473 /* PeerChangeLedgerTests.swift in Sources */,
   1161 				51E6F7F2FC52C2AA87B9DB45 /* PeerPresenceGraceTests.swift in Sources */,
   1162 				A458AF9CA8579AB51B695B08 /* PendingChangeReapTests.swift in Sources */,
   1163 				8225918652DCC822CA1C862F /* PendingEditFlagTests.swift in Sources */,
   1164 				014134FB81566B5D41168260 /* PerGameZoneTests.swift in Sources */,
   1165 				9B1162B1714415FE58CBAE2C /* PersistenceControllerHealTests.swift in Sources */,
   1166 				26DC22F88FA10C47BC06975E /* PersistenceRecoveryTests.swift in Sources */,
   1167 				95B4083F8BC2CA465077A662 /* PlayerColorTests.swift in Sources */,
   1168 				CEDF853009D0C367035F1F76 /* PlayerNamePublisherTests.swift in Sources */,
   1169 				47A6EAAC144C37608AB9AE91 /* PlayerPreferencesTests.swift in Sources */,
   1170 				7BD1A9F69953F9C3288969AF /* PlayerRecordPresenceTests.swift in Sources */,
   1171 				04062BCD473ED244159B1066 /* PlayerRosterTests.swift in Sources */,
   1172 				309457EC2DFEC476253D54D2 /* PlayerSelectionPublisherTests.swift in Sources */,
   1173 				00F2108848ADC7B4BF3AA0AE /* PlayerSessionNavigationTests.swift in Sources */,
   1174 				C6CC673F2D4BB8A1C0439FBB /* PushClientTests.swift in Sources */,
   1175 				5E80545A8ECEB1E2ED371C53 /* PushCredentialRotationTests.swift in Sources */,
   1176 				2A273C98FE3AC5E4C9BE1D88 /* PushPayloadCipherTests.swift in Sources */,
   1177 				A78FF09708EDED7ED50BB55B /* PushPayloadTests.swift in Sources */,
   1178 				33CEEDAFBAA46128A9713AF5 /* PushRequestAuthenticatorTests.swift in Sources */,
   1179 				F34EDFD45E2F5006807DDAC7 /* PuzzleCatalogTests.swift in Sources */,
   1180 				82D1714DC441E4943E96C882 /* PuzzleFileReaderTests.swift in Sources */,
   1181 				7FCD3F582B5ADC235E1F88A0 /* PuzzleNotificationTextTests.swift in Sources */,
   1182 				0A7AEB93A473AFCCD9217F49 /* PuzzleSessionTests.swift in Sources */,
   1183 				6E36ED34ACF047BABB3E2D69 /* RecentChangesTests.swift in Sources */,
   1184 				89CEDB8864F61E42AC04F9D6 /* RecordSerializerMovesTests.swift in Sources */,
   1185 				ECC1A5C3623F50B67185CFFB /* RecordSerializerTests.swift in Sources */,
   1186 				0BB721552A849A53AB9BF7CC /* RemoteCoordinateValidationTests.swift in Sources */,
   1187 				61F8B38587EE49D376B53544 /* ReplayCacheTests.swift in Sources */,
   1188 				C58F15CBEADA72032B54009D /* ReplayControlsTests.swift in Sources */,
   1189 				95FDB86366A30C95C69D5A02 /* RevealConfirmationTests.swift in Sources */,
   1190 				AE5D8C531F89F05B7201B3AC /* SessionMonitorTests.swift in Sources */,
   1191 				07A46496EE0B12FD526F36FB /* SessionPushPlannerTests.swift in Sources */,
   1192 				8AE376C0726116082B15241D /* ShareLinkRouteTests.swift in Sources */,
   1193 				41290C86E72D6567C43C31B7 /* ShareLinkShortenerTests.swift in Sources */,
   1194 				BE57957589423497338EBD37 /* ShareRoutingTests.swift in Sources */,
   1195 				025377AF80D45967CE910423 /* SyncMonitorTests.swift in Sources */,
   1196 				4819D7FBB407C9D76510EA2A /* TestHelpers.swift in Sources */,
   1197 				F15591B48E4155CB19C1F084 /* TimeLogTests.swift in Sources */,
   1198 				9AD5700398B1C1F29A3A75F6 /* TipStoreTests.swift in Sources */,
   1199 				31F2B6A61ED352C7D800149F /* XDAcceptTests.swift in Sources */,
   1200 				38439415796652D8B88C53B3 /* XDDecorationTests.swift in Sources */,
   1201 				47B4FB563BA4A8A54E2C26E0 /* XDLimitsTests.swift in Sources */,
   1202 				786813F3418C32EFBF296220 /* XDMarkupTests.swift in Sources */,
   1203 				9582AA583F5EA008FFC82B64 /* ZoneOrphaningTests.swift in Sources */,
   1204 			);
   1205 			runOnlyForDeploymentPostprocessing = 0;
   1206 		};
   1207 		C17B62906BBF281D006D8DC2 /* Sources */ = {
   1208 			isa = PBXSourcesBuildPhase;
   1209 			buildActionMask = 2147483647;
   1210 			files = (
   1211 				924B29C1EEB29F849A6824C3 /* AboutView.swift in Sources */,
   1212 				EA0AA522F6C383034C4572F4 /* AccountPushCoordinator.swift in Sources */,
   1213 				A87E5E615559B6461B1C3F94 /* AnnouncementBanner.swift in Sources */,
   1214 				5EFCD28B3B682DCCF38068D6 /* AnnouncementCenter.swift in Sources */,
   1215 				AE92B185FB52032AEB9421A1 /* AppActions.swift in Sources */,
   1216 				CED9627EAF70673B339D85EF /* AppDefaultsMigrator.swift in Sources */,
   1217 				78802AFDF6273231781CC0DC /* AppServices.swift in Sources */,
   1218 				A65F99414F8CF6704567BB07 /* Archive.swift in Sources */,
   1219 				197DDF45C36B9570BB9AE4B5 /* AuthorIdentity.swift in Sources */,
   1220 				EB6E99226D5EE27668787008 /* BadgeCoordinator.swift in Sources */,
   1221 				4D9E2C35893E68E47F790994 /* BundledBrowseView.swift in Sources */,
   1222 				F627D68B521FEA85EB80A850 /* CalendarDayCell.swift in Sources */,
   1223 				6BE7E91158F4DF1F71247C6D /* CellMark.swift in Sources */,
   1224 				E9A65F3548DD062FD36A19E1 /* CellPatterns.swift in Sources */,
   1225 				5FB26F40F5DB52111E3D1BDC /* CheckResult.swift in Sources */,
   1226 				659F7E48357E164144A19789 /* CloudContainer.swift in Sources */,
   1227 				E15A40AA623B60279E8DDF43 /* CloudDiagnostics.swift in Sources */,
   1228 				1016604FBD4D63A0B9AAE503 /* CloudQuery.swift in Sources */,
   1229 				CC250D6BA9B41CB722D8A62E /* CloudService.swift in Sources */,
   1230 				E16A8FE849A8E8BCC0F32280 /* CloudZones.swift in Sources */,
   1231 				BAB41DBF7D099B1EE46B4ACB /* ClueBar.swift in Sources */,
   1232 				036EC1EDDEFD17DCDD9B5F1A /* ClueList.swift in Sources */,
   1233 				2571BA6482B3E896A80FF393 /* CompactSlider.swift in Sources */,
   1234 				609364CB79E0C7517298B404 /* ContentKeyDirectory.swift in Sources */,
   1235 				DE9E4FAB098731A650F2D306 /* CrossmateApp.swift in Sources */,
   1236 				C30C0C4E54E4209A22843872 /* CrossmateModel.xcdatamodeld in Sources */,
   1237 				C472EF02D8C7B0AC1D2284B8 /* CustomButtons.swift in Sources */,
   1238 				CCF3867C32C3F36E4F69A59E /* DebuggingMonitors.swift in Sources */,
   1239 				25141DD1C50C9191B6C94119 /* DecorationImages.swift in Sources */,
   1240 				F1854B64C63447B7C7232097 /* DiagnosticsReport.swift in Sources */,
   1241 				0F2992C16A3A658DEA0F707E /* DiagnosticsView.swift in Sources */,
   1242 				978F91DBAE94BC5DA1D94705 /* DriveMonitor.swift in Sources */,
   1243 				CABF8BFAA30B9F26C482FAB9 /* EngagementCoordinator.swift in Sources */,
   1244 				267ED5B329F05A30430B73A0 /* EngagementHost.swift in Sources */,
   1245 				A7FA870D794CA00F7F3F05D2 /* EngagementHostEnvironment.swift in Sources */,
   1246 				D240BF6498A9148855DB7734 /* EngagementLifecycle.swift in Sources */,
   1247 				648EA338E7718079EA354D7D /* EngagementMessageAuthenticator.swift in Sources */,
   1248 				06AE6DF7AA3274480C591E47 /* EngagementStore.swift in Sources */,
   1249 				1989FEF3DE02BEA414B6E9ED /* ExternalBrowseView.swift in Sources */,
   1250 				BD317ECC09C9099AC29B8C5D /* FriendAvatarView.swift in Sources */,
   1251 				C8ACF431021E7BEE61A99153 /* FriendController.swift in Sources */,
   1252 				7E6ED856CE78A774B061CA60 /* FriendEncryptionKeyDirectory.swift in Sources */,
   1253 				00A25F5D8DFF62EFA0C4D1D7 /* FriendEntity+DisplayName.swift in Sources */,
   1254 				D3E5B61C695CE3DDA7016E47 /* FriendInviteRecencyStore.swift in Sources */,
   1255 				884BC090D4E2D416AA52D6FD /* FriendPickerView.swift in Sources */,
   1256 				2AF2550B08CE79F8615B3076 /* FriendZone.swift in Sources */,
   1257 				B00743DAF8F46F14CE13E909 /* FriendsView.swift in Sources */,
   1258 				98F8FBF324ED00D53FEBB1DB /* Game.swift in Sources */,
   1259 				5992AD4A06D7C6440825E9C6 /* GameArchiver.swift in Sources */,
   1260 				D5022BFB2F8F2E5904EDF5C8 /* GameCardView.swift in Sources */,
   1261 				128915DB37018EE4CC16C856 /* GameCursorStore.swift in Sources */,
   1262 				16D7328AE0BB1F7ED46235C8 /* GameEntity+ContentKey.swift in Sources */,
   1263 				0063A5FC9F39E37A67F137FF /* GameListView.swift in Sources */,
   1264 				3A5483EF2893AE325DF27EE8 /* GameMutator.swift in Sources */,
   1265 				9FFD01CF6767220EEA20C0E4 /* GamePushCredentials.swift in Sources */,
   1266 				FC480FE2930EAE406F5BBBDA /* GameRowView.swift in Sources */,
   1267 				44FF4A5334A4086DEA7D8A7B /* GameShareItem.swift in Sources */,
   1268 				D58980B92C99122C368D4216 /* GameStore.swift in Sources */,
   1269 				774C5B5FC06366A0F5CD2376 /* GameSyncVersion.swift in Sources */,
   1270 				1A1A8A9AB36D02E2A5A9ED28 /* GameViewedStore.swift in Sources */,
   1271 				83CF8376EBFD7271931AC1B7 /* GridAccessibility.swift in Sources */,
   1272 				BA7FCA7D8713582B2396BE6B /* GridPosition.swift in Sources */,
   1273 				4B8CA45845618D75A3313816 /* GridSilhouette.swift in Sources */,
   1274 				ED6C21CD9F5AB286B69A02E4 /* GridStateMerger.swift in Sources */,
   1275 				1AAFF86B40CBBFF1EC9ADF9F /* GridThumbnailView.swift in Sources */,
   1276 				93DB3DD9A8EE994B92E7C084 /* GridView.swift in Sources */,
   1277 				01D1B4C7303F1CA52438FF86 /* HardwareKeyboardInputView.swift in Sources */,
   1278 				4A89595E3F6AB50E1D9E6BA8 /* ImportService.swift in Sources */,
   1279 				F8D37DBE75D7B3F039A8FAC8 /* ImportedBrowseView.swift in Sources */,
   1280 				1A19D13D9B820E276C60819E /* InputMonitor.swift in Sources */,
   1281 				D05F1B226E67A31218BA4E3A /* InvitationFailureCallout.swift in Sources */,
   1282 				59230713D85AE6895852B06A /* InviteCoordinator.swift in Sources */,
   1283 				FE447FF4339EA0BF874B1114 /* InviteDeliveryStore.swift in Sources */,
   1284 				7D9337A19747C79070AB3D59 /* InviteEntity+DisplayName.swift in Sources */,
   1285 				13C0F34520828020AD825D07 /* JoiningPuzzleView.swift in Sources */,
   1286 				9502840161DB88BB6BB409D5 /* Journal.swift in Sources */,
   1287 				B5F78A55C9BCCD24E44D865F /* JournalReplay.swift in Sources */,
   1288 				689DAEC70934027E76E8116E /* KeyboardView.swift in Sources */,
   1289 				38C913D00ED762BD9E355A2D /* KeychainHelper.swift in Sources */,
   1290 				CF1DC343A5D3110EDFA703AB /* LastUpdatedView.swift in Sources */,
   1291 				8D8A9F70731C98DD00BE1DA5 /* Layouts.swift in Sources */,
   1292 				6BD5C5B6BED06651312E2D01 /* MailComposeView.swift in Sources */,
   1293 				8ECA254A8BB852BF4B9CE6D7 /* MarketingScreenshots.swift in Sources */,
   1294 				91703E54DB4679C1911BF994 /* Moves.swift in Sources */,
   1295 				4D90B39AD2F79959FB8089EE /* MovesUpdater.swift in Sources */,
   1296 				1F4E5473F78A5CEDBA9719CE /* NYTAuthService.swift in Sources */,
   1297 				C843CADAA263CED503528A4E /* NYTBrowseView.swift in Sources */,
   1298 				6D2AF361587E43D807BA212F /* NYTLoginView.swift in Sources */,
   1299 				1E404AD99B04912167B83176 /* NYTOverlayLetterRecognizer.swift in Sources */,
   1300 				A4BF96473CD6D937402239C1 /* NYTOverlaySlicer.swift in Sources */,
   1301 				0241DC498C645FE1BDA00FB0 /* NYTPuzzleFetcher.swift in Sources */,
   1302 				85B9BAC5ED404FE4496250CB /* NYTPuzzleUpgrader.swift in Sources */,
   1303 				B762200F54C52E8377A80D15 /* NYTToXDConverter.swift in Sources */,
   1304 				5E89D1F8FDFE56395997281A /* NewGameSheet.swift in Sources */,
   1305 				36E2AAF1EE1314E13477EE85 /* NicknameDirectory.swift in Sources */,
   1306 				701BD90172F500B89E32E8E6 /* NoticeView.swift in Sources */,
   1307 				6AE88D9E1918508DBF2A91E1 /* NotificationState.swift in Sources */,
   1308 				CF56BBB90855367CB85FEB43 /* PUZToXDConverter.swift in Sources */,
   1309 				E6A13F8736ABF41F6346E301 /* ParticipantSummaries.swift in Sources */,
   1310 				4E14BB5D6F96D178373ED55A /* PeerChangeLedger.swift in Sources */,
   1311 				77556FD9473A3F10FADF5E4E /* PersistenceController.swift in Sources */,
   1312 				47584CBEF819C2F507D06DFF /* PlayerColor.swift in Sources */,
   1313 				3C54AE4AA04342CCF5705B20 /* PlayerNamePublisher.swift in Sources */,
   1314 				F8DDA34AC1A6B6499C5D222E /* PlayerPreferences.swift in Sources */,
   1315 				0C39CA21BE50E49F9F06C5F2 /* PlayerRoster.swift in Sources */,
   1316 				17A754692F05B97DBDD645F2 /* PlayerSelection.swift in Sources */,
   1317 				B6AB531F4E0C4031B627C539 /* PlayerSelectionPublisher.swift in Sources */,
   1318 				8F5CB2F94E083D06D7E04280 /* PlayerSession.swift in Sources */,
   1319 				E354A588DBA74627A9CD5591 /* Presence.swift in Sources */,
   1320 				A133A4B4A0C95AF8708BD7E6 /* PushClient.swift in Sources */,
   1321 				43E311FBD68B7D35A4D29743 /* PushPayload.swift in Sources */,
   1322 				8FEE38B2B540F0E91560747F /* PushPayloadCipher.swift in Sources */,
   1323 				F2F7CB23DA62BF714632B097 /* PushRequestAuthenticator.swift in Sources */,
   1324 				503229FF89FF7C29CEF4C16D /* Puzzle.swift in Sources */,
   1325 				350722635E9A17324148CACC /* PuzzleCatalog.swift in Sources */,
   1326 				ADBEAD1C0139BCF864CA8A1D /* PuzzleCommands.swift in Sources */,
   1327 				9DDFDF9D97FFC4F043CE84D8 /* PuzzleFileReader.swift in Sources */,
   1328 				5264996E0D72A805B20985E8 /* PuzzleGridStats.swift in Sources */,
   1329 				D2AC1D9BD7E387B06B9B8A0E /* PuzzleHeader.swift in Sources */,
   1330 				082B9BAADE3AFA54EFE30E19 /* PuzzleModifiers.swift in Sources */,
   1331 				24F7ED458A1C09F8CF309B35 /* PuzzleNotificationText+GameEntity.swift in Sources */,
   1332 				E81F92AAB2968997C3D68809 /* PuzzleNotificationText.swift in Sources */,
   1333 				2DD78CA0CD587AA4E5C4B178 /* PuzzleScoreboard.swift in Sources */,
   1334 				88A34C8857B2B3D45A6FBCB2 /* PuzzleSession.swift in Sources */,
   1335 				E91FB8101E1927CA567DE825 /* PuzzleSource.swift in Sources */,
   1336 				9C52C48DB4996D5C83DEC144 /* PuzzleView.swift in Sources */,
   1337 				9AD8936D94FD676B23DFBB77 /* RecentChanges.swift in Sources */,
   1338 				D94FF5DFB9412D2DC24F6574 /* RecordApplier.swift in Sources */,
   1339 				D13ECFAE05DB508577D2FF66 /* RecordBuilder.swift in Sources */,
   1340 				CF0CA17ABE211DAE4DD35AFD /* RecordSerializer.swift in Sources */,
   1341 				E1FBC33E3348547D4DF946C4 /* ReplayControls.swift in Sources */,
   1342 				C9864C9940C9DAAD0A788094 /* ReplayLoader.swift in Sources */,
   1343 				15768439C1783A1780FBB824 /* SessionCoordinator.swift in Sources */,
   1344 				5ECF5B80D08E5E999A540782 /* SessionMonitor.swift in Sources */,
   1345 				B48DE7079BE2F31D2367C5F7 /* SessionPushPlanner.swift in Sources */,
   1346 				4F1A93404828EDBDBBF86716 /* SettingsView.swift in Sources */,
   1347 				BCB9A4D5E06EE5006186465D /* ShareController.swift in Sources */,
   1348 				D4EDC0D426688B295DA77C08 /* ShareLinkRoute.swift in Sources */,
   1349 				779D1955F350B507A47B1E5B /* ShareLinkShortener.swift in Sources */,
   1350 				AF4F1AE2A1F94E92C785C524 /* Square.swift in Sources */,
   1351 				DDC7994B951A3A7B836B36F6 /* SuccessPanel.swift in Sources */,
   1352 				82918A74836E5076CBFA1592 /* SyncEngine.swift in Sources */,
   1353 				F46733AB3C72749A4A992667 /* SyncState+Helpers.swift in Sources */,
   1354 				B0170C8927EDD2E43F849204 /* TimeLog.swift in Sources */,
   1355 				35D97436772257DAD3936ECB /* TipStore.swift in Sources */,
   1356 				3C54B672A9FCA98C0A304470 /* TipsArchive.swift in Sources */,
   1357 				7FFEACFC672925A0968ACC1C /* XD.swift in Sources */,
   1358 				7CD7CC4681C2085AAC39FA79 /* XDDecorationWriter.swift in Sources */,
   1359 				9CB8808193A4A106D721D767 /* XDFileType.swift in Sources */,
   1360 				14749A042380925B7CA902F2 /* XDMarkup.swift in Sources */,
   1361 			);
   1362 			runOnlyForDeploymentPostprocessing = 0;
   1363 		};
   1364 /* End PBXSourcesBuildPhase section */
   1365 
   1366 /* Begin PBXTargetDependency section */
   1367 		0638C125467274AA03088E07 /* PBXTargetDependency */ = {
   1368 			isa = PBXTargetDependency;
   1369 			target = 350366A68B75DC4BDA91F8E5 /* NotificationService */;
   1370 			targetProxy = 0751E0359C340223ADBA2B05 /* PBXContainerItemProxy */;
   1371 		};
   1372 		42035D5EEE61A5D459E1D46D /* PBXTargetDependency */ = {
   1373 			isa = PBXTargetDependency;
   1374 			target = 7708D1C8A0145D43BD15DEB7 /* Crossmate */;
   1375 			targetProxy = F0122CF3E216720C4437CE6A /* PBXContainerItemProxy */;
   1376 		};
   1377 /* End PBXTargetDependency section */
   1378 
   1379 /* Begin XCBuildConfiguration section */
   1380 		209C1E6D178C7EF962FC85A5 /* Release */ = {
   1381 			isa = XCBuildConfiguration;
   1382 			baseConfigurationReference = 0BDC16DA7F762F4C5F4BED14 /* Config.xcconfig */;
   1383 			buildSettings = {
   1384 				ALWAYS_SEARCH_USER_PATHS = NO;
   1385 				ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_EXTENSIONS = YES;
   1386 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
   1387 				CLANG_ANALYZER_NONNULL = YES;
   1388 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
   1389 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
   1390 				CLANG_CXX_LIBRARY = "libc++";
   1391 				CLANG_ENABLE_MODULES = YES;
   1392 				CLANG_ENABLE_OBJC_ARC = YES;
   1393 				CLANG_ENABLE_OBJC_WEAK = YES;
   1394 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
   1395 				CLANG_WARN_BOOL_CONVERSION = YES;
   1396 				CLANG_WARN_COMMA = YES;
   1397 				CLANG_WARN_CONSTANT_CONVERSION = YES;
   1398 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
   1399 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
   1400 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
   1401 				CLANG_WARN_EMPTY_BODY = YES;
   1402 				CLANG_WARN_ENUM_CONVERSION = YES;
   1403 				CLANG_WARN_INFINITE_RECURSION = YES;
   1404 				CLANG_WARN_INT_CONVERSION = YES;
   1405 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
   1406 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
   1407 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
   1408 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
   1409 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
   1410 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
   1411 				CLANG_WARN_STRICT_PROTOTYPES = YES;
   1412 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
   1413 				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
   1414 				CLANG_WARN_UNREACHABLE_CODE = YES;
   1415 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
   1416 				COPY_PHASE_STRIP = NO;
   1417 				DEAD_CODE_STRIPPING = YES;
   1418 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
   1419 				DEVELOPMENT_TEAM = 7TD7PZBNXP;
   1420 				ENABLE_NS_ASSERTIONS = NO;
   1421 				ENABLE_STRICT_OBJC_MSGSEND = YES;
   1422 				ENABLE_USER_SCRIPT_SANDBOXING = YES;
   1423 				GCC_C_LANGUAGE_STANDARD = gnu11;
   1424 				GCC_NO_COMMON_BLOCKS = YES;
   1425 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
   1426 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
   1427 				GCC_WARN_UNDECLARED_SELECTOR = YES;
   1428 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
   1429 				GCC_WARN_UNUSED_FUNCTION = YES;
   1430 				GCC_WARN_UNUSED_VARIABLE = YES;
   1431 				IPHONEOS_DEPLOYMENT_TARGET = 17.5;
   1432 				MTL_ENABLE_DEBUG_INFO = NO;
   1433 				MTL_FAST_MATH = YES;
   1434 				PRODUCT_NAME = "$(TARGET_NAME)";
   1435 				SDKROOT = iphoneos;
   1436 				STRING_CATALOG_GENERATE_SYMBOLS = YES;
   1437 				SWIFT_COMPILATION_MODE = wholemodule;
   1438 				SWIFT_EMIT_LOC_STRINGS = YES;
   1439 				SWIFT_OPTIMIZATION_LEVEL = "-O";
   1440 				SWIFT_VERSION = 6;
   1441 			};
   1442 			name = Release;
   1443 		};
   1444 		42CA2E441989D32BE123F48A /* Debug */ = {
   1445 			isa = XCBuildConfiguration;
   1446 			buildSettings = {
   1447 				BUNDLE_LOADER = "$(TEST_HOST)";
   1448 				CODE_SIGN_STYLE = Automatic;
   1449 				GENERATE_INFOPLIST_FILE = YES;
   1450 				LD_RUNPATH_SEARCH_PATHS = (
   1451 					"$(inherited)",
   1452 					"@executable_path/Frameworks",
   1453 					"@loader_path/Frameworks",
   1454 				);
   1455 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.unittests;
   1456 				SDKROOT = iphoneos;
   1457 				TARGETED_DEVICE_FAMILY = "1,2";
   1458 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Crossmate.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Crossmate";
   1459 			};
   1460 			name = Debug;
   1461 		};
   1462 		642190659D822637293D1645 /* Release */ = {
   1463 			isa = XCBuildConfiguration;
   1464 			buildSettings = {
   1465 				BUNDLE_LOADER = "$(TEST_HOST)";
   1466 				CODE_SIGN_STYLE = Automatic;
   1467 				GENERATE_INFOPLIST_FILE = YES;
   1468 				LD_RUNPATH_SEARCH_PATHS = (
   1469 					"$(inherited)",
   1470 					"@executable_path/Frameworks",
   1471 					"@loader_path/Frameworks",
   1472 				);
   1473 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.unittests;
   1474 				SDKROOT = iphoneos;
   1475 				TARGETED_DEVICE_FAMILY = "1,2";
   1476 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Crossmate.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Crossmate";
   1477 			};
   1478 			name = Release;
   1479 		};
   1480 		68A4416DD8D2ADB28F35E46C /* Release */ = {
   1481 			isa = XCBuildConfiguration;
   1482 			buildSettings = {
   1483 				CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
   1484 				CODE_SIGN_STYLE = Automatic;
   1485 				INFOPLIST_FILE = NotificationService/Info.plist;
   1486 				LD_RUNPATH_SEARCH_PATHS = (
   1487 					"$(inherited)",
   1488 					"@executable_path/Frameworks",
   1489 					"@executable_path/../../Frameworks",
   1490 				);
   1491 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.notificationservice;
   1492 				SDKROOT = iphoneos;
   1493 				TARGETED_DEVICE_FAMILY = "1,2";
   1494 			};
   1495 			name = Release;
   1496 		};
   1497 		8BC97916898B0BF1E6951C48 /* Release */ = {
   1498 			isa = XCBuildConfiguration;
   1499 			buildSettings = {
   1500 				APP_ATTEST_ENVIRONMENT = production;
   1501 				APS_ENVIRONMENT = production;
   1502 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
   1503 				CODE_SIGN_ENTITLEMENTS = Crossmate/Crossmate.entitlements;
   1504 				CODE_SIGN_IDENTITY = "iPhone Developer";
   1505 				CODE_SIGN_STYLE = Automatic;
   1506 				CROSSMATE_ENGAGEMENT_SOCKET_URL = "$(inherited)";
   1507 				CROSSMATE_PUSH_BASE_URL = "$(inherited)";
   1508 				CROSSMATE_SHARE_LINK_BASE_URL = "$(inherited)";
   1509 				CROSSMATE_SHARE_LINK_HOST = "$(inherited)";
   1510 				INFOPLIST_FILE = Crossmate/Info.plist;
   1511 				LD_RUNPATH_SEARCH_PATHS = (
   1512 					"$(inherited)",
   1513 					"@executable_path/Frameworks",
   1514 				);
   1515 				OTHER_LDFLAGS = "$(inherited) -Wl,-no_deduplicate";
   1516 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate;
   1517 				SDKROOT = iphoneos;
   1518 				TARGETED_DEVICE_FAMILY = "1,2";
   1519 			};
   1520 			name = Release;
   1521 		};
   1522 		AF49D30A1B81631106E05429 /* Debug */ = {
   1523 			isa = XCBuildConfiguration;
   1524 			buildSettings = {
   1525 				APP_ATTEST_ENVIRONMENT = production;
   1526 				APS_ENVIRONMENT = development;
   1527 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
   1528 				CODE_SIGN_ENTITLEMENTS = Crossmate/Crossmate.entitlements;
   1529 				CODE_SIGN_IDENTITY = "iPhone Developer";
   1530 				CODE_SIGN_STYLE = Automatic;
   1531 				CROSSMATE_ENGAGEMENT_SOCKET_URL = "$(inherited)";
   1532 				CROSSMATE_PUSH_BASE_URL = "$(inherited)";
   1533 				CROSSMATE_SHARE_LINK_BASE_URL = "$(inherited)";
   1534 				CROSSMATE_SHARE_LINK_HOST = "$(inherited)";
   1535 				INFOPLIST_FILE = Crossmate/Info.plist;
   1536 				LD_RUNPATH_SEARCH_PATHS = (
   1537 					"$(inherited)",
   1538 					"@executable_path/Frameworks",
   1539 				);
   1540 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate;
   1541 				SDKROOT = iphoneos;
   1542 				TARGETED_DEVICE_FAMILY = "1,2";
   1543 			};
   1544 			name = Debug;
   1545 		};
   1546 		C32934743A6313F80D8A4C76 /* Debug */ = {
   1547 			isa = XCBuildConfiguration;
   1548 			buildSettings = {
   1549 				CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
   1550 				CODE_SIGN_STYLE = Automatic;
   1551 				INFOPLIST_FILE = NotificationService/Info.plist;
   1552 				LD_RUNPATH_SEARCH_PATHS = (
   1553 					"$(inherited)",
   1554 					"@executable_path/Frameworks",
   1555 					"@executable_path/../../Frameworks",
   1556 				);
   1557 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.notificationservice;
   1558 				SDKROOT = iphoneos;
   1559 				TARGETED_DEVICE_FAMILY = "1,2";
   1560 			};
   1561 			name = Debug;
   1562 		};
   1563 		E7B092DD549FA4FFED8BC20E /* Debug */ = {
   1564 			isa = XCBuildConfiguration;
   1565 			baseConfigurationReference = 0BDC16DA7F762F4C5F4BED14 /* Config.xcconfig */;
   1566 			buildSettings = {
   1567 				ALWAYS_SEARCH_USER_PATHS = NO;
   1568 				ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_EXTENSIONS = YES;
   1569 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
   1570 				CLANG_ANALYZER_NONNULL = YES;
   1571 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
   1572 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
   1573 				CLANG_CXX_LIBRARY = "libc++";
   1574 				CLANG_ENABLE_MODULES = YES;
   1575 				CLANG_ENABLE_OBJC_ARC = YES;
   1576 				CLANG_ENABLE_OBJC_WEAK = YES;
   1577 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
   1578 				CLANG_WARN_BOOL_CONVERSION = YES;
   1579 				CLANG_WARN_COMMA = YES;
   1580 				CLANG_WARN_CONSTANT_CONVERSION = YES;
   1581 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
   1582 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
   1583 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
   1584 				CLANG_WARN_EMPTY_BODY = YES;
   1585 				CLANG_WARN_ENUM_CONVERSION = YES;
   1586 				CLANG_WARN_INFINITE_RECURSION = YES;
   1587 				CLANG_WARN_INT_CONVERSION = YES;
   1588 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
   1589 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
   1590 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
   1591 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
   1592 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
   1593 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
   1594 				CLANG_WARN_STRICT_PROTOTYPES = YES;
   1595 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
   1596 				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
   1597 				CLANG_WARN_UNREACHABLE_CODE = YES;
   1598 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
   1599 				COPY_PHASE_STRIP = NO;
   1600 				DEAD_CODE_STRIPPING = YES;
   1601 				DEBUG_INFORMATION_FORMAT = dwarf;
   1602 				DEVELOPMENT_TEAM = 7TD7PZBNXP;
   1603 				ENABLE_STRICT_OBJC_MSGSEND = YES;
   1604 				ENABLE_TESTABILITY = YES;
   1605 				ENABLE_USER_SCRIPT_SANDBOXING = YES;
   1606 				GCC_C_LANGUAGE_STANDARD = gnu11;
   1607 				GCC_DYNAMIC_NO_PIC = NO;
   1608 				GCC_NO_COMMON_BLOCKS = YES;
   1609 				GCC_OPTIMIZATION_LEVEL = 0;
   1610 				GCC_PREPROCESSOR_DEFINITIONS = (
   1611 					"$(inherited)",
   1612 					"DEBUG=1",
   1613 				);
   1614 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
   1615 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
   1616 				GCC_WARN_UNDECLARED_SELECTOR = YES;
   1617 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
   1618 				GCC_WARN_UNUSED_FUNCTION = YES;
   1619 				GCC_WARN_UNUSED_VARIABLE = YES;
   1620 				IPHONEOS_DEPLOYMENT_TARGET = 17.5;
   1621 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
   1622 				MTL_FAST_MATH = YES;
   1623 				ONLY_ACTIVE_ARCH = YES;
   1624 				PRODUCT_NAME = "$(TARGET_NAME)";
   1625 				SDKROOT = iphoneos;
   1626 				STRING_CATALOG_GENERATE_SYMBOLS = YES;
   1627 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
   1628 				SWIFT_EMIT_LOC_STRINGS = YES;
   1629 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
   1630 				SWIFT_VERSION = 6;
   1631 			};
   1632 			name = Debug;
   1633 		};
   1634 /* End XCBuildConfiguration section */
   1635 
   1636 /* Begin XCConfigurationList section */
   1637 		0C7AF110B3697D116B91817A /* Build configuration list for PBXNativeTarget "Crossmate Unit Tests" */ = {
   1638 			isa = XCConfigurationList;
   1639 			buildConfigurations = (
   1640 				42CA2E441989D32BE123F48A /* Debug */,
   1641 				642190659D822637293D1645 /* Release */,
   1642 			);
   1643 			defaultConfigurationIsVisible = 0;
   1644 			defaultConfigurationName = Debug;
   1645 		};
   1646 		97D15A585690B87E7C17FF8A /* Build configuration list for PBXNativeTarget "NotificationService" */ = {
   1647 			isa = XCConfigurationList;
   1648 			buildConfigurations = (
   1649 				C32934743A6313F80D8A4C76 /* Debug */,
   1650 				68A4416DD8D2ADB28F35E46C /* Release */,
   1651 			);
   1652 			defaultConfigurationIsVisible = 0;
   1653 			defaultConfigurationName = Debug;
   1654 		};
   1655 		9A436EF03A8593C66A18A832 /* Build configuration list for PBXProject "Crossmate" */ = {
   1656 			isa = XCConfigurationList;
   1657 			buildConfigurations = (
   1658 				E7B092DD549FA4FFED8BC20E /* Debug */,
   1659 				209C1E6D178C7EF962FC85A5 /* Release */,
   1660 			);
   1661 			defaultConfigurationIsVisible = 0;
   1662 			defaultConfigurationName = Debug;
   1663 		};
   1664 		AB7D49875A042FD78EDD157A /* Build configuration list for PBXNativeTarget "Crossmate" */ = {
   1665 			isa = XCConfigurationList;
   1666 			buildConfigurations = (
   1667 				AF49D30A1B81631106E05429 /* Debug */,
   1668 				8BC97916898B0BF1E6951C48 /* Release */,
   1669 			);
   1670 			defaultConfigurationIsVisible = 0;
   1671 			defaultConfigurationName = Debug;
   1672 		};
   1673 /* End XCConfigurationList section */
   1674 
   1675 /* Begin XCVersionGroup section */
   1676 		F93AC31640C40FCC039570A3 /* CrossmateModel.xcdatamodeld */ = {
   1677 			isa = XCVersionGroup;
   1678 			children = (
   1679 				927186458ED03FD0C5660765 /* CrossmateModel.xcdatamodel */,
   1680 			);
   1681 			currentVersion = 927186458ED03FD0C5660765 /* CrossmateModel.xcdatamodel */;
   1682 			path = CrossmateModel.xcdatamodeld;
   1683 			sourceTree = "<group>";
   1684 			versionGroupType = wrapper.xcdatamodel;
   1685 		};
   1686 /* End XCVersionGroup section */
   1687 	};
   1688 	rootObject = 9167165F088B7698D1319D3C /* Project object */;
   1689 }