crossmate

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

project.pbxproj (57646B)


      1 // !$*UTF8*$!
      2 {
      3 	archiveVersion = 1;
      4 	classes = {
      5 	};
      6 	objectVersion = 77;
      7 	objects = {
      8 
      9 /* Begin PBXBuildFile section */
     10 		00F2108848ADC7B4BF3AA0AE /* PlayerSessionNavigationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46801B570FC0B2C791ECDED3 /* PlayerSessionNavigationTests.swift */; };
     11 		014134FB81566B5D41168260 /* PerGameZoneTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 283C5C97180C805B6C5BF622 /* PerGameZoneTests.swift */; };
     12 		0241DC498C645FE1BDA00FB0 /* NYTPuzzleFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0938B0ACB40772EE522D77C /* NYTPuzzleFetcher.swift */; };
     13 		02943BA53D2130B910E6DC00 /* EnsureGameEntityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94CEBA27A8AC4FCC92ADE1B4 /* EnsureGameEntityTests.swift */; };
     14 		04062BCD473ED244159B1066 /* PlayerRosterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1813630FA05C194AFF43855C /* PlayerRosterTests.swift */; };
     15 		0C39CA21BE50E49F9F06C5F2 /* PlayerRoster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3292748EAE27B608C769D393 /* PlayerRoster.swift */; };
     16 		170D481E47CE5CB17BB8619E /* GamePlayerColorStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC4C0246B2BCE686A3516DB /* GamePlayerColorStoreTests.swift */; };
     17 		17A754692F05B97DBDD645F2 /* PlayerSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F0B4F65D017C1FBAC3B23DF /* PlayerSelection.swift */; };
     18 		197DDF45C36B9570BB9AE4B5 /* AuthorIdentity.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F1471BE4D6D84361DD692B /* AuthorIdentity.swift */; };
     19 		1A19D13D9B820E276C60819E /* InputMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BDD06460A76D4AF31077732 /* InputMonitor.swift */; };
     20 		1CC2D062086FDC5894BFEFA2 /* DiagnosticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434862125EC5C0C0F3717ECA /* DiagnosticsView.swift */; };
     21 		1F4E5473F78A5CEDBA9719CE /* NYTAuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A253416F4FEA271A80B22A73 /* NYTAuthService.swift */; };
     22 		2B03A1A36AB55495ED0E8684 /* HardwareKeyboardInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 947102E58EFCF898D258AC3E /* HardwareKeyboardInputView.swift */; };
     23 		2C0DFC182240A2519ED1FA6A /* GameMutatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC1C59A30FB2571598273E4 /* GameMutatorTests.swift */; };
     24 		2F43F24C98D7FF00CA486753 /* PuzzleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFBE9E1A5C72FF3918F54CFA /* PuzzleView.swift */; };
     25 		309457EC2DFEC476253D54D2 /* PlayerSelectionPublisherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF159746D076E051C2CB590C /* PlayerSelectionPublisherTests.swift */; };
     26 		31F2B6A61ED352C7D800149F /* XDAcceptTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F4EBC0F07FF815274C028CA /* XDAcceptTests.swift */; };
     27 		350722635E9A17324148CACC /* PuzzleCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DC7784917397BCD6B8D679D /* PuzzleCatalog.swift */; };
     28 		38C913D00ED762BD9E355A2D /* KeychainHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33878A29B09A6154C7A63C82 /* KeychainHelper.swift */; };
     29 		3A5483EF2893AE325DF27EE8 /* GameMutator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DC132D49361C56DE79C13E /* GameMutator.swift */; };
     30 		3C54AE4AA04342CCF5705B20 /* PlayerNamePublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71DFD035381B6252DCD873C9 /* PlayerNamePublisher.swift */; };
     31 		40256E08EE741F4C414B842B /* PuzzleNotificationText.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F03A9F357672533E2A8DB0 /* PuzzleNotificationText.swift */; };
     32 		453E30B78DFB4B689D70EE2C /* GameStoreUnseenMovesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3916C52FE26549625BD18A4 /* GameStoreUnseenMovesTests.swift */; };
     33 		47584CBEF819C2F507D06DFF /* PlayerColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB55FC337CF72C650373210A /* PlayerColor.swift */; };
     34 		4819D7FBB407C9D76510EA2A /* TestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B399E89BBB37730F2F1E9 /* TestHelpers.swift */; };
     35 		4A89595E3F6AB50E1D9E6BA8 /* ImportService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462CE0FD356F6137C9BFD30F /* ImportService.swift */; };
     36 		4D90B39AD2F79959FB8089EE /* MovesUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DD270E16E00145EF2807EA9 /* MovesUpdater.swift */; };
     37 		503229FF89FF7C29CEF4C16D /* Puzzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C8064F04FC6177D987ACA2 /* Puzzle.swift */; };
     38 		54464FDFB8C71B0D3B4B61A2 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74FEFF257CDDD3EF0E77CBF7 /* SettingsView.swift */; };
     39 		6AE88D9E1918508DBF2A91E1 /* NotificationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D2FD896D75863554E31654C /* NotificationState.swift */; };
     40 		6BE7E91158F4DF1F71247C6D /* CellMark.swift in Sources */ = {isa = PBXBuildFile; fileRef = B135C285570F91181595B405 /* CellMark.swift */; };
     41 		740F5EC3331CA9DCCDA682F0 /* SuccessPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B23A692318044351247606DF /* SuccessPanel.swift */; };
     42 		765B50552B13175F91A25EA1 /* GridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAB4BB9E160C3A59C653E7A9 /* GridView.swift */; };
     43 		77556FD9473A3F10FADF5E4E /* PersistenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACC295195602B3DDF7BB3895 /* PersistenceController.swift */; };
     44 		78802AFDF6273231781CC0DC /* AppServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBDC81CA6A9C80EB31E7F493 /* AppServices.swift */; };
     45 		7FCD3F582B5ADC235E1F88A0 /* PuzzleNotificationTextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C90E94A01FEA77A5C9A2BC94 /* PuzzleNotificationTextTests.swift */; };
     46 		7FFEACFC672925A0968ACC1C /* XD.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9031A1574C21866940F6A2C /* XD.swift */; };
     47 		818B1F2693962832BE14578E /* GameListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38DDAD9D6470A894C3FD6F90 /* GameListView.swift */; };
     48 		82918A74836E5076CBFA1592 /* SyncEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73DDDED719CFFDD6035C3B48 /* SyncEngine.swift */; };
     49 		8478F0BC0CA624C78DC0A3B5 /* ImportedBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87B1BB8AB6309AF111671CB5 /* ImportedBrowseView.swift */; };
     50 		849970A21D62C34EC382A27E /* GameShareItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ABB557BA10CBE9909056882 /* GameShareItem.swift */; };
     51 		89CEDB8864F61E42AC04F9D6 /* RecordSerializerMovesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 443BF6DF77C8226313EE9564 /* RecordSerializerMovesTests.swift */; };
     52 		8B356C953DA0FAF149C3391A /* Puzzles in Resources */ = {isa = PBXBuildFile; fileRef = BA67C509B467132D1B7510A4 /* Puzzles */; };
     53 		8F5CB2F94E083D06D7E04280 /* PlayerSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20B331CC55827FEF3420ABCE /* PlayerSession.swift */; };
     54 		91703E54DB4679C1911BF994 /* Moves.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86470163BFF956F3DE438506 /* Moves.swift */; };
     55 		9582AA583F5EA008FFC82B64 /* ZoneOrphaningTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A01534A21796A4EC7113A9 /* ZoneOrphaningTests.swift */; };
     56 		9789150602A3321D2E1E7E81 /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0BF60C84D92A9024AC1A53FC /* Media.xcassets */; };
     57 		978F91DBAE94BC5DA1D94705 /* DriveMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70AD1A006E6D03E4429E3BF0 /* DriveMonitor.swift */; };
     58 		98F8FBF324ED00D53FEBB1DB /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = 465F2BB469EFE84CF3733398 /* Game.swift */; };
     59 		9CB8808193A4A106D721D767 /* XDFileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC61E2582D94B1E6EC67136 /* XDFileType.swift */; };
     60 		A98382E7659991FAF0F4ED0A /* AuthorIdentityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 457B06DBFDC358D213A7CE54 /* AuthorIdentityTests.swift */; };
     61 		AA28425BD26F72A9E2B58742 /* BundledBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A4B7C6A8A23C6E4CCEC759F /* BundledBrowseView.swift */; };
     62 		AA38A51862FC0AB8F7D34899 /* NYTToXDConverterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C54223FED97577A593B7964E /* NYTToXDConverterTests.swift */; };
     63 		AACC9F70AEEDCB3360FFDEFF /* GridStateMergerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C7F3A9BD7FAF81CB77032A6 /* GridStateMergerTests.swift */; };
     64 		AB05765D2C3F4841026344E5 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AF633D73818BD59F759FAC4 /* AboutView.swift */; };
     65 		AF4F1AE2A1F94E92C785C524 /* Square.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB851649DE78AAAC5A928C52 /* Square.swift */; };
     66 		B6AB531F4E0C4031B627C539 /* PlayerSelectionPublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BF168D5C1CD85DAE5CAF9E /* PlayerSelectionPublisher.swift */; };
     67 		B762200F54C52E8377A80D15 /* NYTToXDConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6F111BE8750697C4BC7A17 /* NYTToXDConverter.swift */; };
     68 		B94919176DEC6EC31637B037 /* ClueList.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9BD3F7EAFD344D8E10E8C3B /* ClueList.swift */; };
     69 		BCB9A4D5E06EE5006186465D /* ShareController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C74683332956B0D1CA37589 /* ShareController.swift */; };
     70 		BE57957589423497338EBD37 /* ShareRoutingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68072F4F3EB5D5A78E03D408 /* ShareRoutingTests.swift */; };
     71 		C1930083671621AC79CF95DD /* MovesUpdaterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AF6157D97271205626E207C /* MovesUpdaterTests.swift */; };
     72 		C1D97A4CD02BC9C22C4208BB /* NYTAuthServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED8154F949E1D94252F70765 /* NYTAuthServiceTests.swift */; };
     73 		C30C0C4E54E4209A22843872 /* CrossmateModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F93AC31640C40FCC039570A3 /* CrossmateModel.xcdatamodeld */; };
     74 		C7370BCAD585EEFD366204E3 /* GridThumbnailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9BB7D9759D27F7BA6734FDE /* GridThumbnailView.swift */; };
     75 		C89A15D812E372FE1C56039B /* PUZToXDConverterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE193CAB325C991952D7CE5 /* PUZToXDConverterTests.swift */; };
     76 		C944A5BD871C6ECC64DE8A5B /* CalendarDayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0CAA5E17BD406AFEEF96196 /* CalendarDayCell.swift */; };
     77 		CC250D6BA9B41CB722D8A62E /* CloudService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56BC76178319D0D669CD50FF /* CloudService.swift */; };
     78 		CCF3867C32C3F36E4F69A59E /* DebuggingMonitors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16E1DA8C1B4E73AFB779CC06 /* DebuggingMonitors.swift */; };
     79 		CEDF853009D0C367035F1F76 /* PlayerNamePublisherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DE04D53EC3BC7D2DA0093C3 /* PlayerNamePublisherTests.swift */; };
     80 		CF0CA17ABE211DAE4DD35AFD /* RecordSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C0A7348E1283E7CD2486E2A /* RecordSerializer.swift */; };
     81 		CF56BBB90855367CB85FEB43 /* PUZToXDConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B369788E0FEA0DCE1B125816 /* PUZToXDConverter.swift */; };
     82 		CFCA3C2C3CF6D88AE844D7AD /* CellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8E50E7BA98C88B4CAB39DC1 /* CellView.swift */; };
     83 		D219A9ACC7C1FB305DA6A4CE /* NYTLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07C57DEE9E0EFA684D8BD00B /* NYTLoginView.swift */; };
     84 		D5150033DB80810F93BE0B5F /* RecordEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E30C592ECAF9B51BC7F1D297 /* RecordEditorView.swift */; };
     85 		D58980B92C99122C368D4216 /* GameStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93EE5BA78566EDED68D846AB /* GameStore.swift */; };
     86 		DB74ED1E2DFEBEC951E10C8E /* GamePlayerColorStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 666155B0C17A8CED11C45A80 /* GamePlayerColorStore.swift */; };
     87 		DE2F9B91A6A68594491182E3 /* NewGameSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2F7D62E5E9EE2AEFC8940F4 /* NewGameSheet.swift */; };
     88 		DE90CC8BE23A0EFC4A32FFA5 /* MovesInboundTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF1254FE7BE3672AEC1607B1 /* MovesInboundTests.swift */; };
     89 		DE9E4FAB098731A650F2D306 /* CrossmateApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F2AC5C3B50F4178859E9AC /* CrossmateApp.swift */; };
     90 		E632562D090D8BE907F28C53 /* NotificationStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47532AED239AEF476D8E9206 /* NotificationStateTests.swift */; };
     91 		E91FB8101E1927CA567DE825 /* PuzzleSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7AFD37B03A1C2E23E5766E6 /* PuzzleSource.swift */; };
     92 		ECC1A5C3623F50B67185CFFB /* RecordSerializerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E4DEAF9F7887CBB46A99E8E /* RecordSerializerTests.swift */; };
     93 		ED6C21CD9F5AB286B69A02E4 /* GridStateMerger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14B05C19BD4705876B3DF0EC /* GridStateMerger.swift */; };
     94 		F34EDFD45E2F5006807DDAC7 /* PuzzleCatalogTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8560440C548752EE93E0ED9 /* PuzzleCatalogTests.swift */; };
     95 		F46733AB3C72749A4A992667 /* SyncState+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A49C3C31F49A85764B84A15 /* SyncState+Helpers.swift */; };
     96 		F77177F48728ECEACD3B28B3 /* KeyboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D28E8CBB1AFFD801E87D4E3 /* KeyboardView.swift */; };
     97 		F8DDA34AC1A6B6499C5D222E /* PlayerPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46148CF0F4D719692F81A6EC /* PlayerPreferences.swift */; };
     98 		FFBE2EC8A3A60E119A0D314F /* NYTBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2BE43E18B1CC6AAD27DC6D /* NYTBrowseView.swift */; };
     99 /* End PBXBuildFile section */
    100 
    101 /* Begin PBXContainerItemProxy section */
    102 		F0122CF3E216720C4437CE6A /* PBXContainerItemProxy */ = {
    103 			isa = PBXContainerItemProxy;
    104 			containerPortal = 9167165F088B7698D1319D3C /* Project object */;
    105 			proxyType = 1;
    106 			remoteGlobalIDString = 7708D1C8A0145D43BD15DEB7;
    107 			remoteInfo = Crossmate;
    108 		};
    109 /* End PBXContainerItemProxy section */
    110 
    111 /* Begin PBXFileReference section */
    112 		07C57DEE9E0EFA684D8BD00B /* NYTLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTLoginView.swift; sourceTree = "<group>"; };
    113 		0BF60C84D92A9024AC1A53FC /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = "<group>"; };
    114 		0C0A7348E1283E7CD2486E2A /* RecordSerializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSerializer.swift; sourceTree = "<group>"; };
    115 		11BF168D5C1CD85DAE5CAF9E /* PlayerSelectionPublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSelectionPublisher.swift; sourceTree = "<group>"; };
    116 		14B05C19BD4705876B3DF0EC /* GridStateMerger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridStateMerger.swift; sourceTree = "<group>"; };
    117 		14F2AC5C3B50F4178859E9AC /* CrossmateApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrossmateApp.swift; sourceTree = "<group>"; };
    118 		16E1DA8C1B4E73AFB779CC06 /* DebuggingMonitors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebuggingMonitors.swift; sourceTree = "<group>"; };
    119 		1813630FA05C194AFF43855C /* PlayerRosterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRosterTests.swift; sourceTree = "<group>"; };
    120 		1F2BE43E18B1CC6AAD27DC6D /* NYTBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTBrowseView.swift; sourceTree = "<group>"; };
    121 		20B331CC55827FEF3420ABCE /* PlayerSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSession.swift; sourceTree = "<group>"; };
    122 		26397B9DBC57DCF7B58899D4 /* BuildNumber.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BuildNumber.xcconfig; sourceTree = "<group>"; };
    123 		283C5C97180C805B6C5BF622 /* PerGameZoneTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PerGameZoneTests.swift; sourceTree = "<group>"; };
    124 		2D2FD896D75863554E31654C /* NotificationState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationState.swift; sourceTree = "<group>"; };
    125 		3292748EAE27B608C769D393 /* PlayerRoster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRoster.swift; sourceTree = "<group>"; };
    126 		33878A29B09A6154C7A63C82 /* KeychainHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainHelper.swift; sourceTree = "<group>"; };
    127 		38DDAD9D6470A894C3FD6F90 /* GameListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameListView.swift; sourceTree = "<group>"; };
    128 		434862125EC5C0C0F3717ECA /* DiagnosticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiagnosticsView.swift; sourceTree = "<group>"; };
    129 		43DC132D49361C56DE79C13E /* GameMutator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameMutator.swift; sourceTree = "<group>"; };
    130 		443BF6DF77C8226313EE9564 /* RecordSerializerMovesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSerializerMovesTests.swift; sourceTree = "<group>"; };
    131 		457B06DBFDC358D213A7CE54 /* AuthorIdentityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorIdentityTests.swift; sourceTree = "<group>"; };
    132 		46148CF0F4D719692F81A6EC /* PlayerPreferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerPreferences.swift; sourceTree = "<group>"; };
    133 		462CE0FD356F6137C9BFD30F /* ImportService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportService.swift; sourceTree = "<group>"; };
    134 		465F2BB469EFE84CF3733398 /* Game.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Game.swift; sourceTree = "<group>"; };
    135 		46801B570FC0B2C791ECDED3 /* PlayerSessionNavigationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSessionNavigationTests.swift; sourceTree = "<group>"; };
    136 		47532AED239AEF476D8E9206 /* NotificationStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationStateTests.swift; sourceTree = "<group>"; };
    137 		4AF633D73818BD59F759FAC4 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; };
    138 		4DC7784917397BCD6B8D679D /* PuzzleCatalog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleCatalog.swift; sourceTree = "<group>"; };
    139 		4F4EBC0F07FF815274C028CA /* XDAcceptTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDAcceptTests.swift; sourceTree = "<group>"; };
    140 		56BC76178319D0D669CD50FF /* CloudService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudService.swift; sourceTree = "<group>"; };
    141 		5ABB557BA10CBE9909056882 /* GameShareItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameShareItem.swift; sourceTree = "<group>"; };
    142 		5C74683332956B0D1CA37589 /* ShareController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareController.swift; sourceTree = "<group>"; };
    143 		5DE04D53EC3BC7D2DA0093C3 /* PlayerNamePublisherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerNamePublisherTests.swift; sourceTree = "<group>"; };
    144 		64C8064F04FC6177D987ACA2 /* Puzzle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Puzzle.swift; sourceTree = "<group>"; };
    145 		666155B0C17A8CED11C45A80 /* GamePlayerColorStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamePlayerColorStore.swift; sourceTree = "<group>"; };
    146 		68072F4F3EB5D5A78E03D408 /* ShareRoutingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareRoutingTests.swift; sourceTree = "<group>"; };
    147 		6BDD06460A76D4AF31077732 /* InputMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputMonitor.swift; sourceTree = "<group>"; };
    148 		6C7F3A9BD7FAF81CB77032A6 /* GridStateMergerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridStateMergerTests.swift; sourceTree = "<group>"; };
    149 		6F0B4F65D017C1FBAC3B23DF /* PlayerSelection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSelection.swift; sourceTree = "<group>"; };
    150 		70AD1A006E6D03E4429E3BF0 /* DriveMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DriveMonitor.swift; sourceTree = "<group>"; };
    151 		71DFD035381B6252DCD873C9 /* PlayerNamePublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerNamePublisher.swift; sourceTree = "<group>"; };
    152 		73DDDED719CFFDD6035C3B48 /* SyncEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncEngine.swift; sourceTree = "<group>"; };
    153 		74FEFF257CDDD3EF0E77CBF7 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
    154 		7B3E1A382B24A7803701D947 /* Crossmate.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Crossmate.entitlements; sourceTree = "<group>"; };
    155 		7D28E8CBB1AFFD801E87D4E3 /* KeyboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardView.swift; sourceTree = "<group>"; };
    156 		7DD270E16E00145EF2807EA9 /* MovesUpdater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesUpdater.swift; sourceTree = "<group>"; };
    157 		7E4DEAF9F7887CBB46A99E8E /* RecordSerializerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSerializerTests.swift; sourceTree = "<group>"; };
    158 		86470163BFF956F3DE438506 /* Moves.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Moves.swift; sourceTree = "<group>"; };
    159 		87B1BB8AB6309AF111671CB5 /* ImportedBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportedBrowseView.swift; sourceTree = "<group>"; };
    160 		927186458ED03FD0C5660765 /* CrossmateModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = CrossmateModel.xcdatamodel; sourceTree = "<group>"; };
    161 		93EE5BA78566EDED68D846AB /* GameStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStore.swift; sourceTree = "<group>"; };
    162 		9447F0FE34C63810C6F1D8BE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
    163 		947102E58EFCF898D258AC3E /* HardwareKeyboardInputView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareKeyboardInputView.swift; sourceTree = "<group>"; };
    164 		94CEBA27A8AC4FCC92ADE1B4 /* EnsureGameEntityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnsureGameEntityTests.swift; sourceTree = "<group>"; };
    165 		9A49C3C31F49A85764B84A15 /* SyncState+Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SyncState+Helpers.swift"; sourceTree = "<group>"; };
    166 		9A4B7C6A8A23C6E4CCEC759F /* BundledBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundledBrowseView.swift; sourceTree = "<group>"; };
    167 		9AF6157D97271205626E207C /* MovesUpdaterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesUpdaterTests.swift; sourceTree = "<group>"; };
    168 		A253416F4FEA271A80B22A73 /* NYTAuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTAuthService.swift; sourceTree = "<group>"; };
    169 		A9A01534A21796A4EC7113A9 /* ZoneOrphaningTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZoneOrphaningTests.swift; sourceTree = "<group>"; };
    170 		ACC295195602B3DDF7BB3895 /* PersistenceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceController.swift; sourceTree = "<group>"; };
    171 		AFBE9E1A5C72FF3918F54CFA /* PuzzleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleView.swift; sourceTree = "<group>"; };
    172 		B0938B0ACB40772EE522D77C /* NYTPuzzleFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTPuzzleFetcher.swift; sourceTree = "<group>"; };
    173 		B135C285570F91181595B405 /* CellMark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellMark.swift; sourceTree = "<group>"; };
    174 		B1F1471BE4D6D84361DD692B /* AuthorIdentity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorIdentity.swift; sourceTree = "<group>"; };
    175 		B23A692318044351247606DF /* SuccessPanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessPanel.swift; sourceTree = "<group>"; };
    176 		B369788E0FEA0DCE1B125816 /* PUZToXDConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PUZToXDConverter.swift; sourceTree = "<group>"; };
    177 		B689A7138429641E61E9E558 /* Crossmate.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Crossmate.app; sourceTree = BUILT_PRODUCTS_DIR; };
    178 		B8560440C548752EE93E0ED9 /* PuzzleCatalogTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleCatalogTests.swift; sourceTree = "<group>"; };
    179 		B9031A1574C21866940F6A2C /* XD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XD.swift; sourceTree = "<group>"; };
    180 		BA67C509B467132D1B7510A4 /* Puzzles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Puzzles; sourceTree = SOURCE_ROOT; };
    181 		BF6F111BE8750697C4BC7A17 /* NYTToXDConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTToXDConverter.swift; sourceTree = "<group>"; };
    182 		BFC1C59A30FB2571598273E4 /* GameMutatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameMutatorTests.swift; sourceTree = "<group>"; };
    183 		C0CAA5E17BD406AFEEF96196 /* CalendarDayCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarDayCell.swift; sourceTree = "<group>"; };
    184 		C54223FED97577A593B7964E /* NYTToXDConverterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTToXDConverterTests.swift; sourceTree = "<group>"; };
    185 		C90E94A01FEA77A5C9A2BC94 /* PuzzleNotificationTextTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleNotificationTextTests.swift; sourceTree = "<group>"; };
    186 		CAB4BB9E160C3A59C653E7A9 /* GridView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridView.swift; sourceTree = "<group>"; };
    187 		CBDC81CA6A9C80EB31E7F493 /* AppServices.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppServices.swift; sourceTree = "<group>"; };
    188 		D2F03A9F357672533E2A8DB0 /* PuzzleNotificationText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleNotificationText.swift; sourceTree = "<group>"; };
    189 		D3916C52FE26549625BD18A4 /* GameStoreUnseenMovesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreUnseenMovesTests.swift; sourceTree = "<group>"; };
    190 		D97CBA409832A24D64DF0F5C /* Crossmate Unit Tests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = "Crossmate Unit Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
    191 		D9BB7D9759D27F7BA6734FDE /* GridThumbnailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridThumbnailView.swift; sourceTree = "<group>"; };
    192 		DB55FC337CF72C650373210A /* PlayerColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerColor.swift; sourceTree = "<group>"; };
    193 		DB851649DE78AAAC5A928C52 /* Square.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Square.swift; sourceTree = "<group>"; };
    194 		E30C592ECAF9B51BC7F1D297 /* RecordEditorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordEditorView.swift; sourceTree = "<group>"; };
    195 		E7AFD37B03A1C2E23E5766E6 /* PuzzleSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleSource.swift; sourceTree = "<group>"; };
    196 		E9BD3F7EAFD344D8E10E8C3B /* ClueList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClueList.swift; sourceTree = "<group>"; };
    197 		EAC61E2582D94B1E6EC67136 /* XDFileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDFileType.swift; sourceTree = "<group>"; };
    198 		EBC4C0246B2BCE686A3516DB /* GamePlayerColorStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamePlayerColorStoreTests.swift; sourceTree = "<group>"; };
    199 		ED8154F949E1D94252F70765 /* NYTAuthServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTAuthServiceTests.swift; sourceTree = "<group>"; };
    200 		EF1254FE7BE3672AEC1607B1 /* MovesInboundTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesInboundTests.swift; sourceTree = "<group>"; };
    201 		F2F7D62E5E9EE2AEFC8940F4 /* NewGameSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewGameSheet.swift; sourceTree = "<group>"; };
    202 		F8E50E7BA98C88B4CAB39DC1 /* CellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellView.swift; sourceTree = "<group>"; };
    203 		F97B399E89BBB37730F2F1E9 /* TestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestHelpers.swift; sourceTree = "<group>"; };
    204 		FDE193CAB325C991952D7CE5 /* PUZToXDConverterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PUZToXDConverterTests.swift; sourceTree = "<group>"; };
    205 		FF159746D076E051C2CB590C /* PlayerSelectionPublisherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSelectionPublisherTests.swift; sourceTree = "<group>"; };
    206 /* End PBXFileReference section */
    207 
    208 /* Begin PBXGroup section */
    209 		01B07D8724DEA04C3E74558E /* Support */ = {
    210 			isa = PBXGroup;
    211 			children = (
    212 				F97B399E89BBB37730F2F1E9 /* TestHelpers.swift */,
    213 			);
    214 			name = Support;
    215 			path = Tests/Support;
    216 			sourceTree = "<group>";
    217 		};
    218 		074C2962E79CAE6C0EA6431A /* Sync */ = {
    219 			isa = PBXGroup;
    220 			children = (
    221 				B1F1471BE4D6D84361DD692B /* AuthorIdentity.swift */,
    222 				14B05C19BD4705876B3DF0EC /* GridStateMerger.swift */,
    223 				86470163BFF956F3DE438506 /* Moves.swift */,
    224 				7DD270E16E00145EF2807EA9 /* MovesUpdater.swift */,
    225 				11BF168D5C1CD85DAE5CAF9E /* PlayerSelectionPublisher.swift */,
    226 				0C0A7348E1283E7CD2486E2A /* RecordSerializer.swift */,
    227 				5C74683332956B0D1CA37589 /* ShareController.swift */,
    228 				73DDDED719CFFDD6035C3B48 /* SyncEngine.swift */,
    229 				9A49C3C31F49A85764B84A15 /* SyncState+Helpers.swift */,
    230 			);
    231 			path = Sync;
    232 			sourceTree = "<group>";
    233 		};
    234 		12BCF7948BC2C200C647C279 /* Products */ = {
    235 			isa = PBXGroup;
    236 			children = (
    237 				D97CBA409832A24D64DF0F5C /* Crossmate Unit Tests.xctest */,
    238 				B689A7138429641E61E9E558 /* Crossmate.app */,
    239 			);
    240 			name = Products;
    241 			sourceTree = "<group>";
    242 		};
    243 		212DB6FCF46C41F81C41D232 /* Unit */ = {
    244 			isa = PBXGroup;
    245 			children = (
    246 				BFC1C59A30FB2571598273E4 /* GameMutatorTests.swift */,
    247 				EBC4C0246B2BCE686A3516DB /* GamePlayerColorStoreTests.swift */,
    248 				D3916C52FE26549625BD18A4 /* GameStoreUnseenMovesTests.swift */,
    249 				6C7F3A9BD7FAF81CB77032A6 /* GridStateMergerTests.swift */,
    250 				9AF6157D97271205626E207C /* MovesUpdaterTests.swift */,
    251 				47532AED239AEF476D8E9206 /* NotificationStateTests.swift */,
    252 				ED8154F949E1D94252F70765 /* NYTAuthServiceTests.swift */,
    253 				C54223FED97577A593B7964E /* NYTToXDConverterTests.swift */,
    254 				5DE04D53EC3BC7D2DA0093C3 /* PlayerNamePublisherTests.swift */,
    255 				1813630FA05C194AFF43855C /* PlayerRosterTests.swift */,
    256 				FF159746D076E051C2CB590C /* PlayerSelectionPublisherTests.swift */,
    257 				46801B570FC0B2C791ECDED3 /* PlayerSessionNavigationTests.swift */,
    258 				FDE193CAB325C991952D7CE5 /* PUZToXDConverterTests.swift */,
    259 				B8560440C548752EE93E0ED9 /* PuzzleCatalogTests.swift */,
    260 				C90E94A01FEA77A5C9A2BC94 /* PuzzleNotificationTextTests.swift */,
    261 				443BF6DF77C8226313EE9564 /* RecordSerializerMovesTests.swift */,
    262 				7E4DEAF9F7887CBB46A99E8E /* RecordSerializerTests.swift */,
    263 				4F4EBC0F07FF815274C028CA /* XDAcceptTests.swift */,
    264 				ABB371EF2574E95782CB05FD /* Sync */,
    265 			);
    266 			name = Unit;
    267 			path = Tests/Unit;
    268 			sourceTree = "<group>";
    269 		};
    270 		41DB2417FF67A47FE6890256 /* Models */ = {
    271 			isa = PBXGroup;
    272 			children = (
    273 				B135C285570F91181595B405 /* CellMark.swift */,
    274 				465F2BB469EFE84CF3733398 /* Game.swift */,
    275 				666155B0C17A8CED11C45A80 /* GamePlayerColorStore.swift */,
    276 				DB55FC337CF72C650373210A /* PlayerColor.swift */,
    277 				46148CF0F4D719692F81A6EC /* PlayerPreferences.swift */,
    278 				3292748EAE27B608C769D393 /* PlayerRoster.swift */,
    279 				6F0B4F65D017C1FBAC3B23DF /* PlayerSelection.swift */,
    280 				20B331CC55827FEF3420ABCE /* PlayerSession.swift */,
    281 				64C8064F04FC6177D987ACA2 /* Puzzle.swift */,
    282 				4DC7784917397BCD6B8D679D /* PuzzleCatalog.swift */,
    283 				D2F03A9F357672533E2A8DB0 /* PuzzleNotificationText.swift */,
    284 				E7AFD37B03A1C2E23E5766E6 /* PuzzleSource.swift */,
    285 				DB851649DE78AAAC5A928C52 /* Square.swift */,
    286 				B9031A1574C21866940F6A2C /* XD.swift */,
    287 				EAC61E2582D94B1E6EC67136 /* XDFileType.swift */,
    288 				F93AC31640C40FCC039570A3 /* CrossmateModel.xcdatamodeld */,
    289 			);
    290 			path = Models;
    291 			sourceTree = "<group>";
    292 		};
    293 		565DBAFC8DB2589B3F0AF90E /* Persistence */ = {
    294 			isa = PBXGroup;
    295 			children = (
    296 				43DC132D49361C56DE79C13E /* GameMutator.swift */,
    297 				93EE5BA78566EDED68D846AB /* GameStore.swift */,
    298 				ACC295195602B3DDF7BB3895 /* PersistenceController.swift */,
    299 			);
    300 			path = Persistence;
    301 			sourceTree = "<group>";
    302 		};
    303 		5770CE69DB2B0B7462FACE53 /* Crossmate */ = {
    304 			isa = PBXGroup;
    305 			children = (
    306 				7B3E1A382B24A7803701D947 /* Crossmate.entitlements */,
    307 				14F2AC5C3B50F4178859E9AC /* CrossmateApp.swift */,
    308 				9447F0FE34C63810C6F1D8BE /* Info.plist */,
    309 				0BF60C84D92A9024AC1A53FC /* Media.xcassets */,
    310 				41DB2417FF67A47FE6890256 /* Models */,
    311 				565DBAFC8DB2589B3F0AF90E /* Persistence */,
    312 				D8F0E3376B2616B4E917129C /* Services */,
    313 				074C2962E79CAE6C0EA6431A /* Sync */,
    314 				84445EA9CACB6AAAEDE6965F /* Views */,
    315 			);
    316 			path = Crossmate;
    317 			sourceTree = "<group>";
    318 		};
    319 		6F470E54D9E6E99FCEA893D1 /* Generated */ = {
    320 			isa = PBXGroup;
    321 			children = (
    322 				26397B9DBC57DCF7B58899D4 /* BuildNumber.xcconfig */,
    323 			);
    324 			path = Generated;
    325 			sourceTree = "<group>";
    326 		};
    327 		84445EA9CACB6AAAEDE6965F /* Views */ = {
    328 			isa = PBXGroup;
    329 			children = (
    330 				4AF633D73818BD59F759FAC4 /* AboutView.swift */,
    331 				9A4B7C6A8A23C6E4CCEC759F /* BundledBrowseView.swift */,
    332 				C0CAA5E17BD406AFEEF96196 /* CalendarDayCell.swift */,
    333 				F8E50E7BA98C88B4CAB39DC1 /* CellView.swift */,
    334 				E9BD3F7EAFD344D8E10E8C3B /* ClueList.swift */,
    335 				434862125EC5C0C0F3717ECA /* DiagnosticsView.swift */,
    336 				38DDAD9D6470A894C3FD6F90 /* GameListView.swift */,
    337 				5ABB557BA10CBE9909056882 /* GameShareItem.swift */,
    338 				D9BB7D9759D27F7BA6734FDE /* GridThumbnailView.swift */,
    339 				CAB4BB9E160C3A59C653E7A9 /* GridView.swift */,
    340 				947102E58EFCF898D258AC3E /* HardwareKeyboardInputView.swift */,
    341 				87B1BB8AB6309AF111671CB5 /* ImportedBrowseView.swift */,
    342 				7D28E8CBB1AFFD801E87D4E3 /* KeyboardView.swift */,
    343 				F2F7D62E5E9EE2AEFC8940F4 /* NewGameSheet.swift */,
    344 				1F2BE43E18B1CC6AAD27DC6D /* NYTBrowseView.swift */,
    345 				07C57DEE9E0EFA684D8BD00B /* NYTLoginView.swift */,
    346 				AFBE9E1A5C72FF3918F54CFA /* PuzzleView.swift */,
    347 				E30C592ECAF9B51BC7F1D297 /* RecordEditorView.swift */,
    348 				74FEFF257CDDD3EF0E77CBF7 /* SettingsView.swift */,
    349 				B23A692318044351247606DF /* SuccessPanel.swift */,
    350 			);
    351 			path = Views;
    352 			sourceTree = "<group>";
    353 		};
    354 		9BF7383FE2AB07F12434C013 /* Shared */ = {
    355 			isa = PBXGroup;
    356 			children = (
    357 				2D2FD896D75863554E31654C /* NotificationState.swift */,
    358 			);
    359 			path = Shared;
    360 			sourceTree = "<group>";
    361 		};
    362 		ABB371EF2574E95782CB05FD /* Sync */ = {
    363 			isa = PBXGroup;
    364 			children = (
    365 				457B06DBFDC358D213A7CE54 /* AuthorIdentityTests.swift */,
    366 				94CEBA27A8AC4FCC92ADE1B4 /* EnsureGameEntityTests.swift */,
    367 				EF1254FE7BE3672AEC1607B1 /* MovesInboundTests.swift */,
    368 				283C5C97180C805B6C5BF622 /* PerGameZoneTests.swift */,
    369 				68072F4F3EB5D5A78E03D408 /* ShareRoutingTests.swift */,
    370 				A9A01534A21796A4EC7113A9 /* ZoneOrphaningTests.swift */,
    371 			);
    372 			path = Sync;
    373 			sourceTree = "<group>";
    374 		};
    375 		C5342A31D253372339517EEE = {
    376 			isa = PBXGroup;
    377 			children = (
    378 				BA67C509B467132D1B7510A4 /* Puzzles */,
    379 				5770CE69DB2B0B7462FACE53 /* Crossmate */,
    380 				6F470E54D9E6E99FCEA893D1 /* Generated */,
    381 				9BF7383FE2AB07F12434C013 /* Shared */,
    382 				01B07D8724DEA04C3E74558E /* Support */,
    383 				212DB6FCF46C41F81C41D232 /* Unit */,
    384 				12BCF7948BC2C200C647C279 /* Products */,
    385 			);
    386 			sourceTree = "<group>";
    387 		};
    388 		D8F0E3376B2616B4E917129C /* Services */ = {
    389 			isa = PBXGroup;
    390 			children = (
    391 				CBDC81CA6A9C80EB31E7F493 /* AppServices.swift */,
    392 				56BC76178319D0D669CD50FF /* CloudService.swift */,
    393 				16E1DA8C1B4E73AFB779CC06 /* DebuggingMonitors.swift */,
    394 				70AD1A006E6D03E4429E3BF0 /* DriveMonitor.swift */,
    395 				462CE0FD356F6137C9BFD30F /* ImportService.swift */,
    396 				6BDD06460A76D4AF31077732 /* InputMonitor.swift */,
    397 				33878A29B09A6154C7A63C82 /* KeychainHelper.swift */,
    398 				A253416F4FEA271A80B22A73 /* NYTAuthService.swift */,
    399 				B0938B0ACB40772EE522D77C /* NYTPuzzleFetcher.swift */,
    400 				BF6F111BE8750697C4BC7A17 /* NYTToXDConverter.swift */,
    401 				71DFD035381B6252DCD873C9 /* PlayerNamePublisher.swift */,
    402 				B369788E0FEA0DCE1B125816 /* PUZToXDConverter.swift */,
    403 			);
    404 			path = Services;
    405 			sourceTree = "<group>";
    406 		};
    407 /* End PBXGroup section */
    408 
    409 /* Begin PBXNativeTarget section */
    410 		7708D1C8A0145D43BD15DEB7 /* Crossmate */ = {
    411 			isa = PBXNativeTarget;
    412 			buildConfigurationList = AB7D49875A042FD78EDD157A /* Build configuration list for PBXNativeTarget "Crossmate" */;
    413 			buildPhases = (
    414 				C17B62906BBF281D006D8DC2 /* Sources */,
    415 				C475EFB2B47245175F9B415C /* Resources */,
    416 			);
    417 			buildRules = (
    418 			);
    419 			dependencies = (
    420 			);
    421 			name = Crossmate;
    422 			packageProductDependencies = (
    423 			);
    424 			productName = Crossmate;
    425 			productReference = B689A7138429641E61E9E558 /* Crossmate.app */;
    426 			productType = "com.apple.product-type.application";
    427 		};
    428 		C38EBD1A6B9D37EF81FF3511 /* Crossmate Unit Tests */ = {
    429 			isa = PBXNativeTarget;
    430 			buildConfigurationList = 0C7AF110B3697D116B91817A /* Build configuration list for PBXNativeTarget "Crossmate Unit Tests" */;
    431 			buildPhases = (
    432 				931E2DAAD4EC47B06F7AB60A /* Sources */,
    433 			);
    434 			buildRules = (
    435 			);
    436 			dependencies = (
    437 				42035D5EEE61A5D459E1D46D /* PBXTargetDependency */,
    438 			);
    439 			name = "Crossmate Unit Tests";
    440 			packageProductDependencies = (
    441 			);
    442 			productName = "Crossmate Unit Tests";
    443 			productReference = D97CBA409832A24D64DF0F5C /* Crossmate Unit Tests.xctest */;
    444 			productType = "com.apple.product-type.bundle.unit-test";
    445 		};
    446 /* End PBXNativeTarget section */
    447 
    448 /* Begin PBXProject section */
    449 		9167165F088B7698D1319D3C /* Project object */ = {
    450 			isa = PBXProject;
    451 			attributes = {
    452 				BuildIndependentTargetsInParallel = YES;
    453 				LastUpgradeCheck = 1430;
    454 				TargetAttributes = {
    455 					7708D1C8A0145D43BD15DEB7 = {
    456 						DevelopmentTeam = 7TD7PZBNXP;
    457 						ProvisioningStyle = Automatic;
    458 					};
    459 					C38EBD1A6B9D37EF81FF3511 = {
    460 						DevelopmentTeam = 7TD7PZBNXP;
    461 						ProvisioningStyle = Automatic;
    462 					};
    463 				};
    464 			};
    465 			buildConfigurationList = 9A436EF03A8593C66A18A832 /* Build configuration list for PBXProject "Crossmate" */;
    466 			developmentRegion = en;
    467 			hasScannedForEncodings = 0;
    468 			knownRegions = (
    469 				Base,
    470 				en,
    471 			);
    472 			mainGroup = C5342A31D253372339517EEE;
    473 			minimizedProjectReferenceProxies = 1;
    474 			preferredProjectObjectVersion = 77;
    475 			productRefGroup = 12BCF7948BC2C200C647C279 /* Products */;
    476 			projectDirPath = "";
    477 			projectRoot = "";
    478 			targets = (
    479 				7708D1C8A0145D43BD15DEB7 /* Crossmate */,
    480 				C38EBD1A6B9D37EF81FF3511 /* Crossmate Unit Tests */,
    481 			);
    482 		};
    483 /* End PBXProject section */
    484 
    485 /* Begin PBXResourcesBuildPhase section */
    486 		C475EFB2B47245175F9B415C /* Resources */ = {
    487 			isa = PBXResourcesBuildPhase;
    488 			buildActionMask = 2147483647;
    489 			files = (
    490 				9789150602A3321D2E1E7E81 /* Media.xcassets in Resources */,
    491 				8B356C953DA0FAF149C3391A /* Puzzles in Resources */,
    492 			);
    493 			runOnlyForDeploymentPostprocessing = 0;
    494 		};
    495 /* End PBXResourcesBuildPhase section */
    496 
    497 /* Begin PBXSourcesBuildPhase section */
    498 		931E2DAAD4EC47B06F7AB60A /* Sources */ = {
    499 			isa = PBXSourcesBuildPhase;
    500 			buildActionMask = 2147483647;
    501 			files = (
    502 				A98382E7659991FAF0F4ED0A /* AuthorIdentityTests.swift in Sources */,
    503 				02943BA53D2130B910E6DC00 /* EnsureGameEntityTests.swift in Sources */,
    504 				2C0DFC182240A2519ED1FA6A /* GameMutatorTests.swift in Sources */,
    505 				170D481E47CE5CB17BB8619E /* GamePlayerColorStoreTests.swift in Sources */,
    506 				453E30B78DFB4B689D70EE2C /* GameStoreUnseenMovesTests.swift in Sources */,
    507 				AACC9F70AEEDCB3360FFDEFF /* GridStateMergerTests.swift in Sources */,
    508 				DE90CC8BE23A0EFC4A32FFA5 /* MovesInboundTests.swift in Sources */,
    509 				C1930083671621AC79CF95DD /* MovesUpdaterTests.swift in Sources */,
    510 				C1D97A4CD02BC9C22C4208BB /* NYTAuthServiceTests.swift in Sources */,
    511 				AA38A51862FC0AB8F7D34899 /* NYTToXDConverterTests.swift in Sources */,
    512 				E632562D090D8BE907F28C53 /* NotificationStateTests.swift in Sources */,
    513 				C89A15D812E372FE1C56039B /* PUZToXDConverterTests.swift in Sources */,
    514 				014134FB81566B5D41168260 /* PerGameZoneTests.swift in Sources */,
    515 				CEDF853009D0C367035F1F76 /* PlayerNamePublisherTests.swift in Sources */,
    516 				04062BCD473ED244159B1066 /* PlayerRosterTests.swift in Sources */,
    517 				309457EC2DFEC476253D54D2 /* PlayerSelectionPublisherTests.swift in Sources */,
    518 				00F2108848ADC7B4BF3AA0AE /* PlayerSessionNavigationTests.swift in Sources */,
    519 				F34EDFD45E2F5006807DDAC7 /* PuzzleCatalogTests.swift in Sources */,
    520 				7FCD3F582B5ADC235E1F88A0 /* PuzzleNotificationTextTests.swift in Sources */,
    521 				89CEDB8864F61E42AC04F9D6 /* RecordSerializerMovesTests.swift in Sources */,
    522 				ECC1A5C3623F50B67185CFFB /* RecordSerializerTests.swift in Sources */,
    523 				BE57957589423497338EBD37 /* ShareRoutingTests.swift in Sources */,
    524 				4819D7FBB407C9D76510EA2A /* TestHelpers.swift in Sources */,
    525 				31F2B6A61ED352C7D800149F /* XDAcceptTests.swift in Sources */,
    526 				9582AA583F5EA008FFC82B64 /* ZoneOrphaningTests.swift in Sources */,
    527 			);
    528 			runOnlyForDeploymentPostprocessing = 0;
    529 		};
    530 		C17B62906BBF281D006D8DC2 /* Sources */ = {
    531 			isa = PBXSourcesBuildPhase;
    532 			buildActionMask = 2147483647;
    533 			files = (
    534 				AB05765D2C3F4841026344E5 /* AboutView.swift in Sources */,
    535 				78802AFDF6273231781CC0DC /* AppServices.swift in Sources */,
    536 				197DDF45C36B9570BB9AE4B5 /* AuthorIdentity.swift in Sources */,
    537 				AA28425BD26F72A9E2B58742 /* BundledBrowseView.swift in Sources */,
    538 				C944A5BD871C6ECC64DE8A5B /* CalendarDayCell.swift in Sources */,
    539 				6BE7E91158F4DF1F71247C6D /* CellMark.swift in Sources */,
    540 				CFCA3C2C3CF6D88AE844D7AD /* CellView.swift in Sources */,
    541 				CC250D6BA9B41CB722D8A62E /* CloudService.swift in Sources */,
    542 				B94919176DEC6EC31637B037 /* ClueList.swift in Sources */,
    543 				DE9E4FAB098731A650F2D306 /* CrossmateApp.swift in Sources */,
    544 				C30C0C4E54E4209A22843872 /* CrossmateModel.xcdatamodeld in Sources */,
    545 				CCF3867C32C3F36E4F69A59E /* DebuggingMonitors.swift in Sources */,
    546 				1CC2D062086FDC5894BFEFA2 /* DiagnosticsView.swift in Sources */,
    547 				978F91DBAE94BC5DA1D94705 /* DriveMonitor.swift in Sources */,
    548 				98F8FBF324ED00D53FEBB1DB /* Game.swift in Sources */,
    549 				818B1F2693962832BE14578E /* GameListView.swift in Sources */,
    550 				3A5483EF2893AE325DF27EE8 /* GameMutator.swift in Sources */,
    551 				DB74ED1E2DFEBEC951E10C8E /* GamePlayerColorStore.swift in Sources */,
    552 				849970A21D62C34EC382A27E /* GameShareItem.swift in Sources */,
    553 				D58980B92C99122C368D4216 /* GameStore.swift in Sources */,
    554 				ED6C21CD9F5AB286B69A02E4 /* GridStateMerger.swift in Sources */,
    555 				C7370BCAD585EEFD366204E3 /* GridThumbnailView.swift in Sources */,
    556 				765B50552B13175F91A25EA1 /* GridView.swift in Sources */,
    557 				2B03A1A36AB55495ED0E8684 /* HardwareKeyboardInputView.swift in Sources */,
    558 				4A89595E3F6AB50E1D9E6BA8 /* ImportService.swift in Sources */,
    559 				8478F0BC0CA624C78DC0A3B5 /* ImportedBrowseView.swift in Sources */,
    560 				1A19D13D9B820E276C60819E /* InputMonitor.swift in Sources */,
    561 				F77177F48728ECEACD3B28B3 /* KeyboardView.swift in Sources */,
    562 				38C913D00ED762BD9E355A2D /* KeychainHelper.swift in Sources */,
    563 				91703E54DB4679C1911BF994 /* Moves.swift in Sources */,
    564 				4D90B39AD2F79959FB8089EE /* MovesUpdater.swift in Sources */,
    565 				1F4E5473F78A5CEDBA9719CE /* NYTAuthService.swift in Sources */,
    566 				FFBE2EC8A3A60E119A0D314F /* NYTBrowseView.swift in Sources */,
    567 				D219A9ACC7C1FB305DA6A4CE /* NYTLoginView.swift in Sources */,
    568 				0241DC498C645FE1BDA00FB0 /* NYTPuzzleFetcher.swift in Sources */,
    569 				B762200F54C52E8377A80D15 /* NYTToXDConverter.swift in Sources */,
    570 				DE2F9B91A6A68594491182E3 /* NewGameSheet.swift in Sources */,
    571 				6AE88D9E1918508DBF2A91E1 /* NotificationState.swift in Sources */,
    572 				CF56BBB90855367CB85FEB43 /* PUZToXDConverter.swift in Sources */,
    573 				77556FD9473A3F10FADF5E4E /* PersistenceController.swift in Sources */,
    574 				47584CBEF819C2F507D06DFF /* PlayerColor.swift in Sources */,
    575 				3C54AE4AA04342CCF5705B20 /* PlayerNamePublisher.swift in Sources */,
    576 				F8DDA34AC1A6B6499C5D222E /* PlayerPreferences.swift in Sources */,
    577 				0C39CA21BE50E49F9F06C5F2 /* PlayerRoster.swift in Sources */,
    578 				17A754692F05B97DBDD645F2 /* PlayerSelection.swift in Sources */,
    579 				B6AB531F4E0C4031B627C539 /* PlayerSelectionPublisher.swift in Sources */,
    580 				8F5CB2F94E083D06D7E04280 /* PlayerSession.swift in Sources */,
    581 				503229FF89FF7C29CEF4C16D /* Puzzle.swift in Sources */,
    582 				350722635E9A17324148CACC /* PuzzleCatalog.swift in Sources */,
    583 				40256E08EE741F4C414B842B /* PuzzleNotificationText.swift in Sources */,
    584 				E91FB8101E1927CA567DE825 /* PuzzleSource.swift in Sources */,
    585 				2F43F24C98D7FF00CA486753 /* PuzzleView.swift in Sources */,
    586 				D5150033DB80810F93BE0B5F /* RecordEditorView.swift in Sources */,
    587 				CF0CA17ABE211DAE4DD35AFD /* RecordSerializer.swift in Sources */,
    588 				54464FDFB8C71B0D3B4B61A2 /* SettingsView.swift in Sources */,
    589 				BCB9A4D5E06EE5006186465D /* ShareController.swift in Sources */,
    590 				AF4F1AE2A1F94E92C785C524 /* Square.swift in Sources */,
    591 				740F5EC3331CA9DCCDA682F0 /* SuccessPanel.swift in Sources */,
    592 				82918A74836E5076CBFA1592 /* SyncEngine.swift in Sources */,
    593 				F46733AB3C72749A4A992667 /* SyncState+Helpers.swift in Sources */,
    594 				7FFEACFC672925A0968ACC1C /* XD.swift in Sources */,
    595 				9CB8808193A4A106D721D767 /* XDFileType.swift in Sources */,
    596 			);
    597 			runOnlyForDeploymentPostprocessing = 0;
    598 		};
    599 /* End PBXSourcesBuildPhase section */
    600 
    601 /* Begin PBXTargetDependency section */
    602 		42035D5EEE61A5D459E1D46D /* PBXTargetDependency */ = {
    603 			isa = PBXTargetDependency;
    604 			target = 7708D1C8A0145D43BD15DEB7 /* Crossmate */;
    605 			targetProxy = F0122CF3E216720C4437CE6A /* PBXContainerItemProxy */;
    606 		};
    607 /* End PBXTargetDependency section */
    608 
    609 /* Begin XCBuildConfiguration section */
    610 		209C1E6D178C7EF962FC85A5 /* Release */ = {
    611 			isa = XCBuildConfiguration;
    612 			baseConfigurationReference = 26397B9DBC57DCF7B58899D4 /* BuildNumber.xcconfig */;
    613 			buildSettings = {
    614 				ALWAYS_SEARCH_USER_PATHS = NO;
    615 				ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_EXTENSIONS = YES;
    616 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
    617 				CLANG_ANALYZER_NONNULL = YES;
    618 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
    619 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
    620 				CLANG_CXX_LIBRARY = "libc++";
    621 				CLANG_ENABLE_MODULES = YES;
    622 				CLANG_ENABLE_OBJC_ARC = YES;
    623 				CLANG_ENABLE_OBJC_WEAK = YES;
    624 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
    625 				CLANG_WARN_BOOL_CONVERSION = YES;
    626 				CLANG_WARN_COMMA = YES;
    627 				CLANG_WARN_CONSTANT_CONVERSION = YES;
    628 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
    629 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
    630 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
    631 				CLANG_WARN_EMPTY_BODY = YES;
    632 				CLANG_WARN_ENUM_CONVERSION = YES;
    633 				CLANG_WARN_INFINITE_RECURSION = YES;
    634 				CLANG_WARN_INT_CONVERSION = YES;
    635 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
    636 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
    637 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
    638 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
    639 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
    640 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
    641 				CLANG_WARN_STRICT_PROTOTYPES = YES;
    642 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
    643 				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
    644 				CLANG_WARN_UNREACHABLE_CODE = YES;
    645 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
    646 				COPY_PHASE_STRIP = NO;
    647 				DEAD_CODE_STRIPPING = YES;
    648 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
    649 				DEVELOPMENT_TEAM = 7TD7PZBNXP;
    650 				ENABLE_NS_ASSERTIONS = NO;
    651 				ENABLE_STRICT_OBJC_MSGSEND = YES;
    652 				ENABLE_USER_SCRIPT_SANDBOXING = YES;
    653 				GCC_C_LANGUAGE_STANDARD = gnu11;
    654 				GCC_NO_COMMON_BLOCKS = YES;
    655 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
    656 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
    657 				GCC_WARN_UNDECLARED_SELECTOR = YES;
    658 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
    659 				GCC_WARN_UNUSED_FUNCTION = YES;
    660 				GCC_WARN_UNUSED_VARIABLE = YES;
    661 				IPHONEOS_DEPLOYMENT_TARGET = 26.0;
    662 				MTL_ENABLE_DEBUG_INFO = NO;
    663 				MTL_FAST_MATH = YES;
    664 				PRODUCT_NAME = "$(TARGET_NAME)";
    665 				SDKROOT = iphoneos;
    666 				STRING_CATALOG_GENERATE_SYMBOLS = YES;
    667 				SWIFT_COMPILATION_MODE = wholemodule;
    668 				SWIFT_EMIT_LOC_STRINGS = YES;
    669 				SWIFT_OPTIMIZATION_LEVEL = "-O";
    670 				SWIFT_VERSION = 6;
    671 			};
    672 			name = Release;
    673 		};
    674 		42CA2E441989D32BE123F48A /* Debug */ = {
    675 			isa = XCBuildConfiguration;
    676 			buildSettings = {
    677 				BUNDLE_LOADER = "$(TEST_HOST)";
    678 				CODE_SIGN_STYLE = Automatic;
    679 				GENERATE_INFOPLIST_FILE = YES;
    680 				LD_RUNPATH_SEARCH_PATHS = (
    681 					"$(inherited)",
    682 					"@executable_path/Frameworks",
    683 					"@loader_path/Frameworks",
    684 				);
    685 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.unittests;
    686 				SDKROOT = iphoneos;
    687 				TARGETED_DEVICE_FAMILY = "1,2";
    688 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Crossmate.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Crossmate";
    689 			};
    690 			name = Debug;
    691 		};
    692 		642190659D822637293D1645 /* Release */ = {
    693 			isa = XCBuildConfiguration;
    694 			buildSettings = {
    695 				BUNDLE_LOADER = "$(TEST_HOST)";
    696 				CODE_SIGN_STYLE = Automatic;
    697 				GENERATE_INFOPLIST_FILE = YES;
    698 				LD_RUNPATH_SEARCH_PATHS = (
    699 					"$(inherited)",
    700 					"@executable_path/Frameworks",
    701 					"@loader_path/Frameworks",
    702 				);
    703 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.unittests;
    704 				SDKROOT = iphoneos;
    705 				TARGETED_DEVICE_FAMILY = "1,2";
    706 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Crossmate.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Crossmate";
    707 			};
    708 			name = Release;
    709 		};
    710 		8BC97916898B0BF1E6951C48 /* Release */ = {
    711 			isa = XCBuildConfiguration;
    712 			buildSettings = {
    713 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
    714 				CODE_SIGN_ENTITLEMENTS = Crossmate/Crossmate.entitlements;
    715 				CODE_SIGN_IDENTITY = "iPhone Developer";
    716 				CODE_SIGN_STYLE = Automatic;
    717 				INFOPLIST_FILE = Crossmate/Info.plist;
    718 				LD_RUNPATH_SEARCH_PATHS = (
    719 					"$(inherited)",
    720 					"@executable_path/Frameworks",
    721 				);
    722 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate;
    723 				SDKROOT = iphoneos;
    724 				TARGETED_DEVICE_FAMILY = "1,2";
    725 			};
    726 			name = Release;
    727 		};
    728 		AF49D30A1B81631106E05429 /* Debug */ = {
    729 			isa = XCBuildConfiguration;
    730 			buildSettings = {
    731 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
    732 				CODE_SIGN_ENTITLEMENTS = Crossmate/Crossmate.entitlements;
    733 				CODE_SIGN_IDENTITY = "iPhone Developer";
    734 				CODE_SIGN_STYLE = Automatic;
    735 				INFOPLIST_FILE = Crossmate/Info.plist;
    736 				LD_RUNPATH_SEARCH_PATHS = (
    737 					"$(inherited)",
    738 					"@executable_path/Frameworks",
    739 				);
    740 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate;
    741 				SDKROOT = iphoneos;
    742 				TARGETED_DEVICE_FAMILY = "1,2";
    743 			};
    744 			name = Debug;
    745 		};
    746 		E7B092DD549FA4FFED8BC20E /* Debug */ = {
    747 			isa = XCBuildConfiguration;
    748 			baseConfigurationReference = 26397B9DBC57DCF7B58899D4 /* BuildNumber.xcconfig */;
    749 			buildSettings = {
    750 				ALWAYS_SEARCH_USER_PATHS = NO;
    751 				ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_EXTENSIONS = YES;
    752 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
    753 				CLANG_ANALYZER_NONNULL = YES;
    754 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
    755 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
    756 				CLANG_CXX_LIBRARY = "libc++";
    757 				CLANG_ENABLE_MODULES = YES;
    758 				CLANG_ENABLE_OBJC_ARC = YES;
    759 				CLANG_ENABLE_OBJC_WEAK = YES;
    760 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
    761 				CLANG_WARN_BOOL_CONVERSION = YES;
    762 				CLANG_WARN_COMMA = YES;
    763 				CLANG_WARN_CONSTANT_CONVERSION = YES;
    764 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
    765 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
    766 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
    767 				CLANG_WARN_EMPTY_BODY = YES;
    768 				CLANG_WARN_ENUM_CONVERSION = YES;
    769 				CLANG_WARN_INFINITE_RECURSION = YES;
    770 				CLANG_WARN_INT_CONVERSION = YES;
    771 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
    772 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
    773 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
    774 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
    775 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
    776 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
    777 				CLANG_WARN_STRICT_PROTOTYPES = YES;
    778 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
    779 				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
    780 				CLANG_WARN_UNREACHABLE_CODE = YES;
    781 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
    782 				COPY_PHASE_STRIP = NO;
    783 				DEAD_CODE_STRIPPING = YES;
    784 				DEBUG_INFORMATION_FORMAT = dwarf;
    785 				DEVELOPMENT_TEAM = 7TD7PZBNXP;
    786 				ENABLE_STRICT_OBJC_MSGSEND = YES;
    787 				ENABLE_TESTABILITY = YES;
    788 				ENABLE_USER_SCRIPT_SANDBOXING = YES;
    789 				GCC_C_LANGUAGE_STANDARD = gnu11;
    790 				GCC_DYNAMIC_NO_PIC = NO;
    791 				GCC_NO_COMMON_BLOCKS = YES;
    792 				GCC_OPTIMIZATION_LEVEL = 0;
    793 				GCC_PREPROCESSOR_DEFINITIONS = (
    794 					"$(inherited)",
    795 					"DEBUG=1",
    796 				);
    797 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
    798 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
    799 				GCC_WARN_UNDECLARED_SELECTOR = YES;
    800 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
    801 				GCC_WARN_UNUSED_FUNCTION = YES;
    802 				GCC_WARN_UNUSED_VARIABLE = YES;
    803 				IPHONEOS_DEPLOYMENT_TARGET = 26.0;
    804 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
    805 				MTL_FAST_MATH = YES;
    806 				ONLY_ACTIVE_ARCH = YES;
    807 				PRODUCT_NAME = "$(TARGET_NAME)";
    808 				SDKROOT = iphoneos;
    809 				STRING_CATALOG_GENERATE_SYMBOLS = YES;
    810 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
    811 				SWIFT_EMIT_LOC_STRINGS = YES;
    812 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
    813 				SWIFT_VERSION = 6;
    814 			};
    815 			name = Debug;
    816 		};
    817 /* End XCBuildConfiguration section */
    818 
    819 /* Begin XCConfigurationList section */
    820 		0C7AF110B3697D116B91817A /* Build configuration list for PBXNativeTarget "Crossmate Unit Tests" */ = {
    821 			isa = XCConfigurationList;
    822 			buildConfigurations = (
    823 				42CA2E441989D32BE123F48A /* Debug */,
    824 				642190659D822637293D1645 /* Release */,
    825 			);
    826 			defaultConfigurationIsVisible = 0;
    827 			defaultConfigurationName = Debug;
    828 		};
    829 		9A436EF03A8593C66A18A832 /* Build configuration list for PBXProject "Crossmate" */ = {
    830 			isa = XCConfigurationList;
    831 			buildConfigurations = (
    832 				E7B092DD549FA4FFED8BC20E /* Debug */,
    833 				209C1E6D178C7EF962FC85A5 /* Release */,
    834 			);
    835 			defaultConfigurationIsVisible = 0;
    836 			defaultConfigurationName = Debug;
    837 		};
    838 		AB7D49875A042FD78EDD157A /* Build configuration list for PBXNativeTarget "Crossmate" */ = {
    839 			isa = XCConfigurationList;
    840 			buildConfigurations = (
    841 				AF49D30A1B81631106E05429 /* Debug */,
    842 				8BC97916898B0BF1E6951C48 /* Release */,
    843 			);
    844 			defaultConfigurationIsVisible = 0;
    845 			defaultConfigurationName = Debug;
    846 		};
    847 /* End XCConfigurationList section */
    848 
    849 /* Begin XCVersionGroup section */
    850 		F93AC31640C40FCC039570A3 /* CrossmateModel.xcdatamodeld */ = {
    851 			isa = XCVersionGroup;
    852 			children = (
    853 				927186458ED03FD0C5660765 /* CrossmateModel.xcdatamodel */,
    854 			);
    855 			currentVersion = 927186458ED03FD0C5660765 /* CrossmateModel.xcdatamodel */;
    856 			path = CrossmateModel.xcdatamodeld;
    857 			sourceTree = "<group>";
    858 			versionGroupType = wrapper.xcdatamodel;
    859 		};
    860 /* End XCVersionGroup section */
    861 	};
    862 	rootObject = 9167165F088B7698D1319D3C /* Project object */;
    863 }