diff --git a/native/ios/MatchLiveTv.xcodeproj/project.pbxproj b/native/ios/MatchLiveTv.xcodeproj/project.pbxproj index 4a55ebe..7c01099 100644 --- a/native/ios/MatchLiveTv.xcodeproj/project.pbxproj +++ b/native/ios/MatchLiveTv.xcodeproj/project.pbxproj @@ -7,183 +7,183 @@ objects = { /* Begin PBXBuildFile section */ - 05E2509B1F96460F9A8FBDEE /* MatchScoringRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51257C93F3A4464F8AA4B5B5 /* MatchScoringRulesTests.swift */; }; - 0811090F35B647A9AAE98018 /* ApiInstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = F52E5A9320FD4A9C82C64092 /* ApiInstant.swift */; }; - 0ABF8F2EAEF84F3CB3510FCA /* MatchHubFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C298D589A644368A5B3DB79 /* MatchHubFilter.swift */; }; - 0AEA80531D74475A9279AAF8 /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C77C273929F4A4A9079A55E /* LoginScreen.swift */; }; - 0B2C36335D034737BD753D22 /* BroadcastControlsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9652ABD17F34BF7B781F9CB /* BroadcastControlsOverlay.swift */; }; - 1191C9F3433D4C79BB1D55CA /* DeviceTelemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD66A152068843A89E25EA2A /* DeviceTelemetry.swift */; }; - 16D77B1BA1694BC9AAEACACA /* ScoreState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7B37C6177BA4FC7AD4DE2C9 /* ScoreState.swift */; }; - 17F54C8204F346CCA9EBFF89 /* TokenStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6CC04AA64F244128D7069F7 /* TokenStore.swift */; }; - 1B65AFB2A2A54BD69FE9D4D3 /* MatchLiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7485A29DA1E4F7EB3D4116D /* MatchLiveAPI.swift */; }; - 1DF38DB813DC491C94C206CD /* SponsorElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF4D8B887F6467699C4E184 /* SponsorElement.swift */; }; - 1F26CA550156447B89B3EC01 /* MatchLiveWordmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5396F45B5E40B1B1787C6E /* MatchLiveWordmark.swift */; }; - 2094E19DDAD0464B9CED0495 /* ScoreActionDecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9493EA978E6460FACFB7831 /* ScoreActionDecodeTests.swift */; }; - 228CC71E4BBA4CF0A7712FDD /* ApiInstantTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EFBCE62B1AD4A318A676B29 /* ApiInstantTests.swift */; }; - 252646FBD7F94CCEB49EE534 /* ScoreController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C62B9683F44AA2A14D424A /* ScoreController.swift */; }; - 255C09F3A1AB4FCC80DC403D /* KeepScreenOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56E3FD0A68DC4FB6BB6F5DC3 /* KeepScreenOn.swift */; }; - 2F05B27C846F4284A533573D /* AuthRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FF6D203D77042EBAF2DB51F /* AuthRepository.swift */; }; - 2F9195CCAE9949C087CECAA2 /* LiveScoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7122CAE2FBF04D59B28E3393 /* LiveScoreActions.swift */; }; - 33848EA261D540879BABC0EC /* LiveBroadcastCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35FA1B77E81F48C5B4E55CD9 /* LiveBroadcastCoordinator.swift */; }; - 344B17113ADF4C548146080C /* MatchLiveTv/Resources/Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4F01AFBFEF6044C68CB26E01 /* MatchLiveTv/Resources/Assets.xcassets */; }; - 34C4FE9AC892423FA42B0FA1 /* SessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87978C769F4E4D468052CC33 /* SessionRepository.swift */; }; - 3D6496F4394A4A8B8280CCD7 /* MatchStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351CF0707AD942A58C630254 /* MatchStatusBadge.swift */; }; - 412D04EC8F8344F3941D7774 /* ScoreRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB392D77E64247B3B093F616 /* ScoreRepository.swift */; }; - 44412124BE71497F89A100A7 /* OverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = A14E10B5AA8D45859AC6A1A4 /* OverlayState.swift */; }; - 4661478CC7C343379C100A7E /* MatchRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = E00E4AADECC140CDAD8C2AE6 /* MatchRepository.swift */; }; - 4B6FFF5D05164AE9AFB2833C /* StepMatchScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5FCAE846D294A19A7981CA2 /* StepMatchScreen.swift */; }; - 4BF1F3719177402988F3E680 /* MatchLiveTvApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA1FADDBD6A478FBA4D4047 /* MatchLiveTvApp.swift */; }; - 4C2639442FE6D7CF0015AAF3 /* HaishinKit in Frameworks */ = {isa = PBXBuildFile; productRef = 363FFDAD444D4381B6D23159 /* HaishinKit */; }; - 4C2639452FE6D7CF0015AAF3 /* RTMPHaishinKit in Frameworks */ = {isa = PBXBuildFile; productRef = 3CEE882EC45E49D49BF6B568 /* RTMPHaishinKit */; }; - 4E3828F9935743CCB4B15F01 /* WizardComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 727F818455854A5C95A36750 /* WizardComponents.swift */; }; - 57499374CE314E5C9B19E857 /* OverlayLogoCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = A399280B3F39439986A8B8CA /* OverlayLogoCache.swift */; }; - 5A085BBBD09B49A98A261FD1 /* StepNetworkTestScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1575FE5CDD584E119971A738 /* StepNetworkTestScreen.swift */; }; - 5BD7A70803AE4BFCBED02E69 /* WizardSessionHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7C680C09D954141B3992BAE /* WizardSessionHolder.swift */; }; - 62147CCDD37243B9AB328357 /* ColorHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2944504F54A4FFBBC27890E /* ColorHex.swift */; }; - 62F8E9A68AF84E04B5B25C0E /* LiveBroadcastEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = F03E8C38FF8F45E3B60876C4 /* LiveBroadcastEngine.swift */; }; - 6312973A866D4191BA2E2E5E /* BroadcastPermissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B905649882624CD4BDFBAA1E /* BroadcastPermissions.swift */; }; - 64D51E5990C34E64BBDD6153 /* MediaUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F5C50636970455FBD3C4C90 /* MediaUrl.swift */; }; - 6F38CD1E29CE4EDF92D2FCBD /* AppConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 218CB473E8054075A604031B /* AppConfig.swift */; }; - 70385A94466D4A2EA11DDB3B /* LivePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9BE69BF72BE4435BEDA9133 /* LivePreviewView.swift */; }; - 71A4EBF7C11441ED8202C4A5 /* SplashScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91EC9ED467E84061B684745A /* SplashScreen.swift */; }; - 72458A3A5D6D40D8B2B4362A /* ActionCableClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E73FCF20F1D4F148B9CD4B3 /* ActionCableClient.swift */; }; - 72B22BECDAD64FE88CD38A25 /* BroadcastOrientationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = FED568E49E4044838349A540 /* BroadcastOrientationPolicy.swift */; }; - 7360468C628E48AF950EF5CB /* StepTransmissionScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64DFCC6BD2024FDBAB16BB74 /* StepTransmissionScreen.swift */; }; - 7FAB1EF0F8D3459CB1A05CD5 /* OverlayCanvasRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F2481408D6640FB9CC2CB2F /* OverlayCanvasRenderer.swift */; }; - 844259AFBAF448C6ADBDE30C /* ApiDtos.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1AD2477B899435F8D082A92 /* ApiDtos.swift */; }; - 85680F15BAC247B1AA97DC4D /* MatchPrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB0CC339DE745259373D142 /* MatchPrimaryButton.swift */; }; - 871F7D73227B4E699B65FE3D /* TeamBrandingEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E32781A593654542B0650E57 /* TeamBrandingEditor.swift */; }; - 8B26B443AD5C4FF388D448F5 /* LiveBroadcastCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB5D916A7D894E119711065F /* LiveBroadcastCoordinatorTests.swift */; }; - 9187B987AC034AAD887F6393 /* BroadcastOrientationPolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D291E7B6E7644EC49B08B1E3 /* BroadcastOrientationPolicyTests.swift */; }; - 942E7C8159B2490A9058D20A /* MatchScreenScaffold.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324AD8EC837D48F5B6FFCEAA /* MatchScreenScaffold.swift */; }; - 953EFFA2B63946A0818C82A1 /* CompactScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 994567EE1DE14A20B92F4E96 /* CompactScoreboardElement.swift */; }; - A5767FD88F8D4123A68224CD /* BroadcastScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72E46A99EFD841C5A1647DB8 /* BroadcastScreen.swift */; }; - ABA512B1D2C7407E892623DE /* WatermarkElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16A9445555754FB7BDAADD3A /* WatermarkElement.swift */; }; - AD41DBD5504E4D3CB34B81B1 /* OverlayMappings.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC64A2E1500E4ADB9ACE1A86 /* OverlayMappings.swift */; }; - AD9A1CB58F8C44EC92C5B4AE /* MatchScoringRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = B820270757EE42759E42FEEE /* MatchScoringRules.swift */; }; - ADA537BB60354316AB3D343D /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 500277E50C1A4646920A8543 /* Models.swift */; }; - B6CA255BE2A840A7B21CDCCB /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638CBB9E0E874F7F95CBE204 /* ShareSheet.swift */; }; - B9DFB757CD3942AEBC1953F0 /* WizardShellScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 828F33DF188D43AFB37FB0FE /* WizardShellScreen.swift */; }; - BCA11E5347BE4070B1883A58 /* AppNavHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = C90C96BCB45B4C70A4EFEDDA /* AppNavHost.swift */; }; - BDAA05C294674E0A837D27AB /* MatchSecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8363E5303ADB4FD78519684F /* MatchSecondaryButton.swift */; }; - BDF21E4064AC48D2BF2D3182 /* MatchSessionLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99BA29C831B4470DB25B2180 /* MatchSessionLauncher.swift */; }; - C0E26D8B51484304B9234F89 /* BroadcastModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0E9DB4FB233435987DE957D /* BroadcastModels.swift */; }; - C2479C699DF24364951AFFEC /* Routes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AB101F16AF1494E8A143D0A /* Routes.swift */; }; - C6B8E801C3E449ABBFA44F33 /* MatchColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33DE04949BC459E88BE9366 /* MatchColors.swift */; }; - D44A9E22D1C241EA83B7A897 /* BroadcastVideoOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0997030621F749A3B9CDF588 /* BroadcastVideoOrientation.swift */; }; - D4EED1F5722B435695F1C09D /* ScreenOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E331937B64477698ACF9B4 /* ScreenOrientation.swift */; }; - D6ED4D033BA74DFFA968FC50 /* OverlayRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE8079EC41BD47469013C0B2 /* OverlayRenderer.swift */; }; - D74402BB72E04D8A816BC980 /* SessionCableService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 153C1BAFFFD94507B3F4960D /* SessionCableService.swift */; }; - DAA27DA77F904BA9B59684B1 /* ScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F0128206567441BB807BB13 /* ScoreboardElement.swift */; }; - DF8D47F8D9604F60B03E87F2 /* AppContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FF647CAD4FA457A8F37C5F0 /* AppContainer.swift */; }; - E2D089A57F9F49D887C0D233 /* ModalRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9818CDD6BBDF4E68B2F56E32 /* ModalRoutes.swift */; }; - E2E74A83D86544BA8FB85AAB /* TeamColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6338B84D52DA4FBA93DAE49A /* TeamColorPicker.swift */; }; - E8D2C2E91DBE41BB9A1B59AF /* UserFacingError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E556E7CE8E4407B926500E /* UserFacingError.swift */; }; - F3907C6CC01447B786FF633F /* MatchesScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8258C8C208E4AE2B37636E8 /* MatchesScreen.swift */; }; - FB09138978B3408ABBE91CD9 /* ScoreControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7814A010936047EBB4193446 /* ScoreControllerTests.swift */; }; - FEE2AE0621F94EA393524C47 /* LiveScoreDialogHostTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 740D32B076064CCDBE6A688F /* LiveScoreDialogHostTests.swift */; }; + 01EF2265D1624199B171D57E /* LivePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3F630293570453BB85BE288 /* LivePreviewView.swift */; }; + 035B95F7CE8643C48038A114 /* ApiDtos.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F08BB3F014B44F18A1203FE /* ApiDtos.swift */; }; + 0469F385C3BD41489812C2EC /* TeamBrandingEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77A71899E82D448797DCE7E8 /* TeamBrandingEditor.swift */; }; + 066B7E46EB6245BA94C12BA6 /* AppConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 395345091E364AFF9FFB34B9 /* AppConfig.swift */; }; + 0D3A76C230854286AA528524 /* AppContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 590CA24C9659490E9A8EC555 /* AppContainer.swift */; }; + 0D666A37E49749C68C0DB06B /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = A23B62DE25C94F47B560D742 /* ShareSheet.swift */; }; + 0D81FEE2FA88468C98652291 /* WizardShellScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29358C1BDC864C408AB4FAD0 /* WizardShellScreen.swift */; }; + 0F6F3A1F9EA74107BDFAF930 /* SessionCableService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3D8CA843FF54424B181675B /* SessionCableService.swift */; }; + 100AF197AD334A1AB38D271B /* ModalRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44E182032F64EBBA55ADCEB /* ModalRoutes.swift */; }; + 226769D5E66848FB90B5BFEE /* MatchStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5964C8AF73D4617BB437E4A /* MatchStatusBadge.swift */; }; + 2B400EFC857D4EDF9CCF73B9 /* BroadcastModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 820BDE9FBCCB4BABACD2AC89 /* BroadcastModels.swift */; }; + 35B3BCE4D68F47C4ABD1E955 /* MatchPrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E92E0A7DB54267AC53F60A /* MatchPrimaryButton.swift */; }; + 3E25B3A6F51242B9847DBA6F /* ScoreState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51A6EEEAD38F4F509310B82E /* ScoreState.swift */; }; + 3EF78D9394DF41D89E0A43F8 /* SponsorElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDC3D4B19E974898AA9CAC76 /* SponsorElement.swift */; }; + 3F5B3BD00C6F48379469C171 /* TokenStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABC6373E955749DF9AB5DB5B /* TokenStore.swift */; }; + 42EF33716F6843B69945E6AB /* MatchLiveTvApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13EB02413D134D6289DB90DA /* MatchLiveTvApp.swift */; }; + 46F6F77D670A49BFB4A9B757 /* UserFacingError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 109F8ABCCCF649EFB3E6647C /* UserFacingError.swift */; }; + 4C1FDA2D80034A2FB6550DAB /* MatchRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2AF23C6CDE24E1AB227F019 /* MatchRepository.swift */; }; + 4C2639482FE6DA960015AAF3 /* HaishinKit in Frameworks */ = {isa = PBXBuildFile; productRef = BC6C276807664B6CB76A8A9D /* HaishinKit */; }; + 4C2639492FE6DA960015AAF3 /* RTMPHaishinKit in Frameworks */ = {isa = PBXBuildFile; productRef = 8F64C5AA49464C419712EAC5 /* RTMPHaishinKit */; }; + 4D74385A3406406ABFA45B44 /* OverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA288DB764E24438AE8826DC /* OverlayState.swift */; }; + 4FFA52FD7FF8410AA8FA673E /* MatchLiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9889D83B0787422397EF3181 /* MatchLiveAPI.swift */; }; + 52EB3701353841BDB837C75E /* WatermarkElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D95106A21804A2EAEDCECB7 /* WatermarkElement.swift */; }; + 539D6877DF3C478E86200649 /* LiveBroadcastCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3F2049B408743AA82AF43F3 /* LiveBroadcastCoordinator.swift */; }; + 557CA481D63840D3AA6EFD5B /* ColorHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D5ED55DB884EA2AC986F61 /* ColorHex.swift */; }; + 5AE324386FA64E1C8BA5F21F /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = F961133AE74D4ECE9FDC3EBF /* LoginScreen.swift */; }; + 5BEB4A09B526452D8CCBBE1B /* SessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3691F2136AAD4545B655F544 /* SessionRepository.swift */; }; + 5CA7D12629854A4A9B9DF084 /* TeamColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68C47301A29345819A2CDEC8 /* TeamColorPicker.swift */; }; + 5DB4B7C040F6449198E5D07D /* ActionCableClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E91F93272E41A78E4CBECC /* ActionCableClient.swift */; }; + 60D2848965684DB5BFEBD5E3 /* MatchLiveTv/Resources/Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1B4E0A284897418CB3B60E19 /* MatchLiveTv/Resources/Assets.xcassets */; }; + 63CB7A84409D49CEBD74DE4D /* AuthRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB1B3BC7CA8B4B25BCC77F6E /* AuthRepository.swift */; }; + 67818D53F7EA46C2A4850214 /* ScoreRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE709C8660614B9DA5A2D657 /* ScoreRepository.swift */; }; + 6B4C7990A5D94A2C8AC69FC1 /* WizardComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7250114A6FB34430BB20B414 /* WizardComponents.swift */; }; + 6DFF8FAA4ECF46F1928851A4 /* ScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2B9108C739D484BAD4FF40F /* ScoreboardElement.swift */; }; + 727B74004C3741D9BA510F3B /* LiveScoreDialogHostTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27FB35A567D04317B0421156 /* LiveScoreDialogHostTests.swift */; }; + 735CF034B3BA49BE9BBDD261 /* AppNavHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1265527D9925494BAE66B5A0 /* AppNavHost.swift */; }; + 75D6916EAD4E46CA9E36582C /* MatchScoringRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87A9A8AEACEA48FABD06BD52 /* MatchScoringRulesTests.swift */; }; + 7636A7A0E3CC477799338D29 /* LiveBroadcastCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B55F65BAA6146AF84B010CC /* LiveBroadcastCoordinatorTests.swift */; }; + 794CC6694C74486BAB61CA3B /* ApiInstantTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0707542005B4DCC90E3A072 /* ApiInstantTests.swift */; }; + 7D0DF967FC03423394839915 /* OverlayMappings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 611ECD9494B94B75B9866791 /* OverlayMappings.swift */; }; + 8179BD051391404B9E2235C2 /* KeepScreenOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1D75DB685D64B93A65E9FC8 /* KeepScreenOn.swift */; }; + 81DB6B2543BC407EBB056C4B /* BroadcastScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985215153D0A44DC8B429731 /* BroadcastScreen.swift */; }; + 833558A9A0A043ECB8E146F6 /* ScoreActionDecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D3A1338FBA0411587BB5F4B /* ScoreActionDecodeTests.swift */; }; + 87DB3FBE122F444B87B9D73B /* LiveBroadcastEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC8B7397C0BD4EC59851185D /* LiveBroadcastEngine.swift */; }; + 8841513B4E1743E983E7D2C8 /* BroadcastControlsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF2832197EE409AA0B0334C /* BroadcastControlsOverlay.swift */; }; + 8C32CAC69405444DA4BB1E36 /* ScoreController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F41CF197E5D543CE9A949497 /* ScoreController.swift */; }; + 8D7FCD0052674C0EB4F5C811 /* MatchesScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D6F174CE084074972CABF6 /* MatchesScreen.swift */; }; + 8F6D3E3D61584BBA865AD2D7 /* OverlayLogoCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10BEC6633F9F446587F1818C /* OverlayLogoCache.swift */; }; + 919B83984A5347989781366F /* MatchScoringRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = D48D1A4C43A24A1E815A646D /* MatchScoringRules.swift */; }; + 92E4CAC8F45141A8899749C5 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DF32351AC9D47F39C23B29A /* Models.swift */; }; + AA9BCB0DA5164D43BD7A43FA /* CompactScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC36378EDDDF44F29ACAD3C6 /* CompactScoreboardElement.swift */; }; + AEA8CCA49E514EA3984F297E /* BroadcastOrientationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFE4871BCA51457CB720047B /* BroadcastOrientationPolicy.swift */; }; + AFA2540B2280448A81DFF5CF /* Routes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 586F014DA6724EEB810107AD /* Routes.swift */; }; + B6F8B4BA2E49480DBD2CA846 /* MatchScreenScaffold.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7E9EFA6947F4A799570A271 /* MatchScreenScaffold.swift */; }; + C1D2EA29B25C4B06B03B6FFE /* BroadcastVideoOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCA50054BF694B9D82EA97ED /* BroadcastVideoOrientation.swift */; }; + C3B1B44C77084C05B325F935 /* StepNetworkTestScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C26A0114F73483A85C70772 /* StepNetworkTestScreen.swift */; }; + C9B90AAE70C142DEB8996100 /* ApiInstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 354D09291641417F99E27D5A /* ApiInstant.swift */; }; + CF8E45A2BFE34E4BBE259654 /* DeviceTelemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 258DECC661314224B6A98F47 /* DeviceTelemetry.swift */; }; + D08665EFFF27465294B620B5 /* ScoreControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F7A645B14A44C69304E136 /* ScoreControllerTests.swift */; }; + DBBB006ED6C946A2950D805C /* StepMatchScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8992D152CF7F478BA6469E36 /* StepMatchScreen.swift */; }; + DC848628856A4FCB86EE9DA7 /* MatchSecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8736A8A330D4815A3D56104 /* MatchSecondaryButton.swift */; }; + DF09C441105448CDBAFBD9AF /* OverlayRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49FD73A6D4254EAD9484E159 /* OverlayRenderer.swift */; }; + DFD70B8BFDAD427DA63CD6B1 /* MatchSessionLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7060C0C306D44E9AA8AAF5D4 /* MatchSessionLauncher.swift */; }; + E01D498C8EF64F85A41EAC54 /* StepTransmissionScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94EDDD3FE78C4DC288424A6E /* StepTransmissionScreen.swift */; }; + E15E57A4C69D49F7AB0C916A /* BroadcastPermissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CC868CFCFB6429F84E481B4 /* BroadcastPermissions.swift */; }; + E4C3F469616A42818F63CE89 /* WizardSessionHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973C4EEE1DCD40448D7F2FAD /* WizardSessionHolder.swift */; }; + E5ECF142981E4D58B3040FB5 /* MatchColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E15E2F8F9114F299D8EB017 /* MatchColors.swift */; }; + E75B706F137249FF807FE0DD /* BroadcastOrientationPolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49FDEC2FCAD14E7C9D671A27 /* BroadcastOrientationPolicyTests.swift */; }; + EB3031C7972041F2BE6C3933 /* MediaUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0BD001D8384E1CAD5A327B /* MediaUrl.swift */; }; + ECA9E663AF8B4F19BA4AD6D2 /* ScreenOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A279824047D4B7EB08A3F30 /* ScreenOrientation.swift */; }; + ED730C9B9068449E8D8AF6C8 /* OverlayCanvasRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5BF42CCF934AC7A9516374 /* OverlayCanvasRenderer.swift */; }; + F0497D8B51DE4173AF395AF8 /* MatchHubFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F71C110A07B4F71AB71E6ED /* MatchHubFilter.swift */; }; + F065E5BE5EC34955B133C189 /* MatchLiveWordmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C6CE9645ACD4713AFC66C58 /* MatchLiveWordmark.swift */; }; + F8324F96CA074A0B8A71BB7B /* LiveScoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A224E4FD5069421AAB0C4CF6 /* LiveScoreActions.swift */; }; + FCDD0B3AA1F046B4B912A2F7 /* SplashScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB3CE35029F144899C81993B /* SplashScreen.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 90C62964E51147DCABB6E3C2 /* PBXContainerItemProxy */ = { + B2EE838DC30044B18C9AEE34 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DBE4153B1FC34F91BC390462 /* Project object */; + containerPortal = 456AEB32689E48DEA025761E /* Project object */; proxyType = 1; - remoteGlobalIDString = 2F039DD838234B1F9B1B2FF5; + remoteGlobalIDString = C1A6F02007F74525A4124BD0; remoteInfo = MatchLiveTv; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0997030621F749A3B9CDF588 /* BroadcastVideoOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastVideoOrientation.swift; path = MatchLiveTv/Streaming/BroadcastVideoOrientation.swift; sourceTree = ""; }; - 0FF6D203D77042EBAF2DB51F /* AuthRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AuthRepository.swift; path = MatchLiveTv/Data/Repository/AuthRepository.swift; sourceTree = ""; }; - 153C1BAFFFD94507B3F4960D /* SessionCableService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionCableService.swift; path = MatchLiveTv/Data/Cable/SessionCableService.swift; sourceTree = ""; }; - 1575FE5CDD584E119971A738 /* StepNetworkTestScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepNetworkTestScreen.swift; path = MatchLiveTv/UI/Wizard/StepNetworkTestScreen.swift; sourceTree = ""; }; - 16A9445555754FB7BDAADD3A /* WatermarkElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WatermarkElement.swift; path = MatchLiveTv/Streaming/Overlay/WatermarkElement.swift; sourceTree = ""; }; - 218CB473E8054075A604031B /* AppConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppConfig.swift; path = MatchLiveTv/Core/AppConfig.swift; sourceTree = ""; }; - 2D5396F45B5E40B1B1787C6E /* MatchLiveWordmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveWordmark.swift; path = MatchLiveTv/UI/Components/MatchLiveWordmark.swift; sourceTree = ""; }; - 324AD8EC837D48F5B6FFCEAA /* MatchScreenScaffold.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScreenScaffold.swift; path = MatchLiveTv/UI/Components/MatchScreenScaffold.swift; sourceTree = ""; }; - 351CF0707AD942A58C630254 /* MatchStatusBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchStatusBadge.swift; path = MatchLiveTv/UI/Components/MatchStatusBadge.swift; sourceTree = ""; }; - 358F960727AF4821B82A7791 /* MatchLiveTv/Resources/Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = MatchLiveTv/Resources/Info.plist; sourceTree = ""; }; - 35FA1B77E81F48C5B4E55CD9 /* LiveBroadcastCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinator.swift; path = MatchLiveTv/Streaming/LiveBroadcastCoordinator.swift; sourceTree = ""; }; - 38E556E7CE8E4407B926500E /* UserFacingError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UserFacingError.swift; path = MatchLiveTv/Core/UserFacingError.swift; sourceTree = ""; }; - 3AB101F16AF1494E8A143D0A /* Routes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Routes.swift; path = MatchLiveTv/UI/Navigation/Routes.swift; sourceTree = ""; }; - 3E73FCF20F1D4F148B9CD4B3 /* ActionCableClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActionCableClient.swift; path = MatchLiveTv/Data/Cable/ActionCableClient.swift; sourceTree = ""; }; - 3EF4D8B887F6467699C4E184 /* SponsorElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SponsorElement.swift; path = MatchLiveTv/Streaming/Overlay/SponsorElement.swift; sourceTree = ""; }; - 4BA1FADDBD6A478FBA4D4047 /* MatchLiveTvApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveTvApp.swift; path = MatchLiveTv/App/MatchLiveTvApp.swift; sourceTree = ""; }; - 4C77C273929F4A4A9079A55E /* LoginScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LoginScreen.swift; path = MatchLiveTv/UI/Login/LoginScreen.swift; sourceTree = ""; }; - 4F01AFBFEF6044C68CB26E01 /* MatchLiveTv/Resources/Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = MatchLiveTv/Resources/Assets.xcassets; sourceTree = ""; }; - 500277E50C1A4646920A8543 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Models.swift; path = MatchLiveTv/Domain/Models.swift; sourceTree = ""; }; - 51257C93F3A4464F8AA4B5B5 /* MatchScoringRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRulesTests.swift; path = MatchLiveTvTests/MatchScoringRulesTests.swift; sourceTree = ""; }; - 56E3FD0A68DC4FB6BB6F5DC3 /* KeepScreenOn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = KeepScreenOn.swift; path = MatchLiveTv/UI/System/KeepScreenOn.swift; sourceTree = ""; }; - 60E331937B64477698ACF9B4 /* ScreenOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScreenOrientation.swift; path = MatchLiveTv/UI/System/ScreenOrientation.swift; sourceTree = ""; }; - 6338B84D52DA4FBA93DAE49A /* TeamColorPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamColorPicker.swift; path = MatchLiveTv/UI/Wizard/TeamColorPicker.swift; sourceTree = ""; }; - 638CBB9E0E874F7F95CBE204 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ShareSheet.swift; path = MatchLiveTv/UI/System/ShareSheet.swift; sourceTree = ""; }; - 64DFCC6BD2024FDBAB16BB74 /* StepTransmissionScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepTransmissionScreen.swift; path = MatchLiveTv/UI/Wizard/StepTransmissionScreen.swift; sourceTree = ""; }; - 6EB0CC339DE745259373D142 /* MatchPrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchPrimaryButton.swift; path = MatchLiveTv/UI/Components/MatchPrimaryButton.swift; sourceTree = ""; }; - 6F2481408D6640FB9CC2CB2F /* OverlayCanvasRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayCanvasRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayCanvasRenderer.swift; sourceTree = ""; }; - 7122CAE2FBF04D59B28E3393 /* LiveScoreActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreActions.swift; path = MatchLiveTv/UI/Broadcast/LiveScoreActions.swift; sourceTree = ""; }; - 727F818455854A5C95A36750 /* WizardComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardComponents.swift; path = MatchLiveTv/UI/Wizard/WizardComponents.swift; sourceTree = ""; }; - 72E46A99EFD841C5A1647DB8 /* BroadcastScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastScreen.swift; path = MatchLiveTv/UI/Broadcast/BroadcastScreen.swift; sourceTree = ""; }; - 740D32B076064CCDBE6A688F /* LiveScoreDialogHostTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreDialogHostTests.swift; path = MatchLiveTvTests/LiveScoreDialogHostTests.swift; sourceTree = ""; }; - 7814A010936047EBB4193446 /* ScoreControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreControllerTests.swift; path = MatchLiveTvTests/ScoreControllerTests.swift; sourceTree = ""; }; - 78C62B9683F44AA2A14D424A /* ScoreController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreController.swift; path = MatchLiveTv/Data/Scoring/ScoreController.swift; sourceTree = ""; }; - 7C298D589A644368A5B3DB79 /* MatchHubFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchHubFilter.swift; path = MatchLiveTv/Domain/MatchHubFilter.swift; sourceTree = ""; }; - 7F5C50636970455FBD3C4C90 /* MediaUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediaUrl.swift; path = MatchLiveTv/Core/MediaUrl.swift; sourceTree = ""; }; - 828F33DF188D43AFB37FB0FE /* WizardShellScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardShellScreen.swift; path = MatchLiveTv/UI/Wizard/WizardShellScreen.swift; sourceTree = ""; }; - 8363E5303ADB4FD78519684F /* MatchSecondaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSecondaryButton.swift; path = MatchLiveTv/UI/Components/MatchSecondaryButton.swift; sourceTree = ""; }; - 87978C769F4E4D468052CC33 /* SessionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionRepository.swift; path = MatchLiveTv/Data/Repository/SessionRepository.swift; sourceTree = ""; }; - 8F0128206567441BB807BB13 /* ScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/ScoreboardElement.swift; sourceTree = ""; }; - 8FF647CAD4FA457A8F37C5F0 /* AppContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppContainer.swift; path = MatchLiveTv/Data/AppContainer.swift; sourceTree = ""; }; - 91EC9ED467E84061B684745A /* SplashScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SplashScreen.swift; path = MatchLiveTv/UI/Splash/SplashScreen.swift; sourceTree = ""; }; - 9818CDD6BBDF4E68B2F56E32 /* ModalRoutes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ModalRoutes.swift; path = MatchLiveTv/UI/Navigation/ModalRoutes.swift; sourceTree = ""; }; - 994567EE1DE14A20B92F4E96 /* CompactScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CompactScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/CompactScoreboardElement.swift; sourceTree = ""; }; - 99BA29C831B4470DB25B2180 /* MatchSessionLauncher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSessionLauncher.swift; path = MatchLiveTv/Data/Repository/MatchSessionLauncher.swift; sourceTree = ""; }; - 9EFBCE62B1AD4A318A676B29 /* ApiInstantTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstantTests.swift; path = MatchLiveTvTests/ApiInstantTests.swift; sourceTree = ""; }; - A0E9DB4FB233435987DE957D /* BroadcastModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastModels.swift; path = MatchLiveTv/Streaming/BroadcastModels.swift; sourceTree = ""; }; - A14E10B5AA8D45859AC6A1A4 /* OverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayState.swift; path = MatchLiveTv/Streaming/Overlay/OverlayState.swift; sourceTree = ""; }; - A1AD2477B899435F8D082A92 /* ApiDtos.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiDtos.swift; path = MatchLiveTv/Data/API/ApiDtos.swift; sourceTree = ""; }; - A2DCC5443E58454998461BDB /* MatchLiveTv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MatchLiveTv.app; sourceTree = BUILT_PRODUCTS_DIR; }; - A399280B3F39439986A8B8CA /* OverlayLogoCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayLogoCache.swift; path = MatchLiveTv/Streaming/Overlay/OverlayLogoCache.swift; sourceTree = ""; }; - A5FCAE846D294A19A7981CA2 /* StepMatchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepMatchScreen.swift; path = MatchLiveTv/UI/Wizard/StepMatchScreen.swift; sourceTree = ""; }; - A9BE69BF72BE4435BEDA9133 /* LivePreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LivePreviewView.swift; path = MatchLiveTv/Streaming/Preview/LivePreviewView.swift; sourceTree = ""; }; - B2944504F54A4FFBBC27890E /* ColorHex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ColorHex.swift; path = MatchLiveTv/Core/ColorHex.swift; sourceTree = ""; }; - B7485A29DA1E4F7EB3D4116D /* MatchLiveAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveAPI.swift; path = MatchLiveTv/Data/API/MatchLiveAPI.swift; sourceTree = ""; }; - B820270757EE42759E42FEEE /* MatchScoringRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRules.swift; path = MatchLiveTv/Domain/MatchScoringRules.swift; sourceTree = ""; }; - B8258C8C208E4AE2B37636E8 /* MatchesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchesScreen.swift; path = MatchLiveTv/UI/Matches/MatchesScreen.swift; sourceTree = ""; }; - B905649882624CD4BDFBAA1E /* BroadcastPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastPermissions.swift; path = MatchLiveTv/UI/Permissions/BroadcastPermissions.swift; sourceTree = ""; }; - BB5D916A7D894E119711065F /* LiveBroadcastCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinatorTests.swift; path = MatchLiveTvTests/LiveBroadcastCoordinatorTests.swift; sourceTree = ""; }; - C33DE04949BC459E88BE9366 /* MatchColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchColors.swift; path = MatchLiveTv/UI/Theme/MatchColors.swift; sourceTree = ""; }; - C7B37C6177BA4FC7AD4DE2C9 /* ScoreState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreState.swift; path = MatchLiveTv/Domain/ScoreState.swift; sourceTree = ""; }; - C90C96BCB45B4C70A4EFEDDA /* AppNavHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppNavHost.swift; path = MatchLiveTv/UI/Navigation/AppNavHost.swift; sourceTree = ""; }; - CC64A2E1500E4ADB9ACE1A86 /* OverlayMappings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayMappings.swift; path = MatchLiveTv/Streaming/Overlay/OverlayMappings.swift; sourceTree = ""; }; - CE8079EC41BD47469013C0B2 /* OverlayRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayRenderer.swift; sourceTree = ""; }; - D291E7B6E7644EC49B08B1E3 /* BroadcastOrientationPolicyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicyTests.swift; path = MatchLiveTvTests/BroadcastOrientationPolicyTests.swift; sourceTree = ""; }; - D6DC6A6529B74BACBD05E817 /* MatchLiveTvTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MatchLiveTvTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - D7C680C09D954141B3992BAE /* WizardSessionHolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardSessionHolder.swift; path = MatchLiveTv/Data/WizardSessionHolder.swift; sourceTree = ""; }; - D9493EA978E6460FACFB7831 /* ScoreActionDecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreActionDecodeTests.swift; path = MatchLiveTvTests/ScoreActionDecodeTests.swift; sourceTree = ""; }; - DB392D77E64247B3B093F616 /* ScoreRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreRepository.swift; path = MatchLiveTv/Data/Repository/ScoreRepository.swift; sourceTree = ""; }; - E00E4AADECC140CDAD8C2AE6 /* MatchRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchRepository.swift; path = MatchLiveTv/Data/Repository/MatchRepository.swift; sourceTree = ""; }; - E32781A593654542B0650E57 /* TeamBrandingEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamBrandingEditor.swift; path = MatchLiveTv/UI/Wizard/TeamBrandingEditor.swift; sourceTree = ""; }; - E6CC04AA64F244128D7069F7 /* TokenStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TokenStore.swift; path = MatchLiveTv/Core/TokenStore.swift; sourceTree = ""; }; - F03E8C38FF8F45E3B60876C4 /* LiveBroadcastEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastEngine.swift; path = MatchLiveTv/Streaming/LiveBroadcastEngine.swift; sourceTree = ""; }; - F52E5A9320FD4A9C82C64092 /* ApiInstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstant.swift; path = MatchLiveTv/Core/ApiInstant.swift; sourceTree = ""; }; - F9652ABD17F34BF7B781F9CB /* BroadcastControlsOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastControlsOverlay.swift; path = MatchLiveTv/UI/Broadcast/BroadcastControlsOverlay.swift; sourceTree = ""; }; - FD66A152068843A89E25EA2A /* DeviceTelemetry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DeviceTelemetry.swift; path = MatchLiveTv/Core/DeviceTelemetry.swift; sourceTree = ""; }; - FED568E49E4044838349A540 /* BroadcastOrientationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicy.swift; path = MatchLiveTv/Streaming/BroadcastOrientationPolicy.swift; sourceTree = ""; }; + 0E15E2F8F9114F299D8EB017 /* MatchColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchColors.swift; path = MatchLiveTv/UI/Theme/MatchColors.swift; sourceTree = ""; }; + 109F8ABCCCF649EFB3E6647C /* UserFacingError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UserFacingError.swift; path = MatchLiveTv/Core/UserFacingError.swift; sourceTree = ""; }; + 10BEC6633F9F446587F1818C /* OverlayLogoCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayLogoCache.swift; path = MatchLiveTv/Streaming/Overlay/OverlayLogoCache.swift; sourceTree = ""; }; + 11E92E0A7DB54267AC53F60A /* MatchPrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchPrimaryButton.swift; path = MatchLiveTv/UI/Components/MatchPrimaryButton.swift; sourceTree = ""; }; + 1265527D9925494BAE66B5A0 /* AppNavHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppNavHost.swift; path = MatchLiveTv/UI/Navigation/AppNavHost.swift; sourceTree = ""; }; + 13EB02413D134D6289DB90DA /* MatchLiveTvApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveTvApp.swift; path = MatchLiveTv/App/MatchLiveTvApp.swift; sourceTree = ""; }; + 1B4E0A284897418CB3B60E19 /* MatchLiveTv/Resources/Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = MatchLiveTv/Resources/Assets.xcassets; sourceTree = ""; }; + 1B5BF42CCF934AC7A9516374 /* OverlayCanvasRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayCanvasRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayCanvasRenderer.swift; sourceTree = ""; }; + 1CC868CFCFB6429F84E481B4 /* BroadcastPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastPermissions.swift; path = MatchLiveTv/UI/Permissions/BroadcastPermissions.swift; sourceTree = ""; }; + 1D3A1338FBA0411587BB5F4B /* ScoreActionDecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreActionDecodeTests.swift; path = MatchLiveTvTests/ScoreActionDecodeTests.swift; sourceTree = ""; }; + 1EF154DE4E184011B1E29261 /* MatchLiveTvTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MatchLiveTvTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 258DECC661314224B6A98F47 /* DeviceTelemetry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DeviceTelemetry.swift; path = MatchLiveTv/Core/DeviceTelemetry.swift; sourceTree = ""; }; + 27FB35A567D04317B0421156 /* LiveScoreDialogHostTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreDialogHostTests.swift; path = MatchLiveTvTests/LiveScoreDialogHostTests.swift; sourceTree = ""; }; + 29358C1BDC864C408AB4FAD0 /* WizardShellScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardShellScreen.swift; path = MatchLiveTv/UI/Wizard/WizardShellScreen.swift; sourceTree = ""; }; + 2DF2832197EE409AA0B0334C /* BroadcastControlsOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastControlsOverlay.swift; path = MatchLiveTv/UI/Broadcast/BroadcastControlsOverlay.swift; sourceTree = ""; }; + 354D09291641417F99E27D5A /* ApiInstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstant.swift; path = MatchLiveTv/Core/ApiInstant.swift; sourceTree = ""; }; + 3691F2136AAD4545B655F544 /* SessionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionRepository.swift; path = MatchLiveTv/Data/Repository/SessionRepository.swift; sourceTree = ""; }; + 395345091E364AFF9FFB34B9 /* AppConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppConfig.swift; path = MatchLiveTv/Core/AppConfig.swift; sourceTree = ""; }; + 49FD73A6D4254EAD9484E159 /* OverlayRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayRenderer.swift; sourceTree = ""; }; + 49FDEC2FCAD14E7C9D671A27 /* BroadcastOrientationPolicyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicyTests.swift; path = MatchLiveTvTests/BroadcastOrientationPolicyTests.swift; sourceTree = ""; }; + 51A6EEEAD38F4F509310B82E /* ScoreState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreState.swift; path = MatchLiveTv/Domain/ScoreState.swift; sourceTree = ""; }; + 586F014DA6724EEB810107AD /* Routes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Routes.swift; path = MatchLiveTv/UI/Navigation/Routes.swift; sourceTree = ""; }; + 590CA24C9659490E9A8EC555 /* AppContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppContainer.swift; path = MatchLiveTv/Data/AppContainer.swift; sourceTree = ""; }; + 5C26A0114F73483A85C70772 /* StepNetworkTestScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepNetworkTestScreen.swift; path = MatchLiveTv/UI/Wizard/StepNetworkTestScreen.swift; sourceTree = ""; }; + 5F8323C8BC81496A8A1DE9B5 /* MatchLiveTv/Resources/Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = MatchLiveTv/Resources/Info.plist; sourceTree = ""; }; + 611ECD9494B94B75B9866791 /* OverlayMappings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayMappings.swift; path = MatchLiveTv/Streaming/Overlay/OverlayMappings.swift; sourceTree = ""; }; + 63D6F174CE084074972CABF6 /* MatchesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchesScreen.swift; path = MatchLiveTv/UI/Matches/MatchesScreen.swift; sourceTree = ""; }; + 68C47301A29345819A2CDEC8 /* TeamColorPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamColorPicker.swift; path = MatchLiveTv/UI/Wizard/TeamColorPicker.swift; sourceTree = ""; }; + 68D5ED55DB884EA2AC986F61 /* ColorHex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ColorHex.swift; path = MatchLiveTv/Core/ColorHex.swift; sourceTree = ""; }; + 6C6CE9645ACD4713AFC66C58 /* MatchLiveWordmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveWordmark.swift; path = MatchLiveTv/UI/Components/MatchLiveWordmark.swift; sourceTree = ""; }; + 6DF32351AC9D47F39C23B29A /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Models.swift; path = MatchLiveTv/Domain/Models.swift; sourceTree = ""; }; + 7060C0C306D44E9AA8AAF5D4 /* MatchSessionLauncher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSessionLauncher.swift; path = MatchLiveTv/Data/Repository/MatchSessionLauncher.swift; sourceTree = ""; }; + 7250114A6FB34430BB20B414 /* WizardComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardComponents.swift; path = MatchLiveTv/UI/Wizard/WizardComponents.swift; sourceTree = ""; }; + 77A71899E82D448797DCE7E8 /* TeamBrandingEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamBrandingEditor.swift; path = MatchLiveTv/UI/Wizard/TeamBrandingEditor.swift; sourceTree = ""; }; + 7B55F65BAA6146AF84B010CC /* LiveBroadcastCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinatorTests.swift; path = MatchLiveTvTests/LiveBroadcastCoordinatorTests.swift; sourceTree = ""; }; + 7D95106A21804A2EAEDCECB7 /* WatermarkElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WatermarkElement.swift; path = MatchLiveTv/Streaming/Overlay/WatermarkElement.swift; sourceTree = ""; }; + 7F08BB3F014B44F18A1203FE /* ApiDtos.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiDtos.swift; path = MatchLiveTv/Data/API/ApiDtos.swift; sourceTree = ""; }; + 820BDE9FBCCB4BABACD2AC89 /* BroadcastModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastModels.swift; path = MatchLiveTv/Streaming/BroadcastModels.swift; sourceTree = ""; }; + 87A9A8AEACEA48FABD06BD52 /* MatchScoringRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRulesTests.swift; path = MatchLiveTvTests/MatchScoringRulesTests.swift; sourceTree = ""; }; + 8992D152CF7F478BA6469E36 /* StepMatchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepMatchScreen.swift; path = MatchLiveTv/UI/Wizard/StepMatchScreen.swift; sourceTree = ""; }; + 8A279824047D4B7EB08A3F30 /* ScreenOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScreenOrientation.swift; path = MatchLiveTv/UI/System/ScreenOrientation.swift; sourceTree = ""; }; + 8F71C110A07B4F71AB71E6ED /* MatchHubFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchHubFilter.swift; path = MatchLiveTv/Domain/MatchHubFilter.swift; sourceTree = ""; }; + 94EDDD3FE78C4DC288424A6E /* StepTransmissionScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepTransmissionScreen.swift; path = MatchLiveTv/UI/Wizard/StepTransmissionScreen.swift; sourceTree = ""; }; + 973C4EEE1DCD40448D7F2FAD /* WizardSessionHolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardSessionHolder.swift; path = MatchLiveTv/Data/WizardSessionHolder.swift; sourceTree = ""; }; + 985215153D0A44DC8B429731 /* BroadcastScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastScreen.swift; path = MatchLiveTv/UI/Broadcast/BroadcastScreen.swift; sourceTree = ""; }; + 9889D83B0787422397EF3181 /* MatchLiveAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveAPI.swift; path = MatchLiveTv/Data/API/MatchLiveAPI.swift; sourceTree = ""; }; + A1D75DB685D64B93A65E9FC8 /* KeepScreenOn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = KeepScreenOn.swift; path = MatchLiveTv/UI/System/KeepScreenOn.swift; sourceTree = ""; }; + A224E4FD5069421AAB0C4CF6 /* LiveScoreActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreActions.swift; path = MatchLiveTv/UI/Broadcast/LiveScoreActions.swift; sourceTree = ""; }; + A23B62DE25C94F47B560D742 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ShareSheet.swift; path = MatchLiveTv/UI/System/ShareSheet.swift; sourceTree = ""; }; + A3D8CA843FF54424B181675B /* SessionCableService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionCableService.swift; path = MatchLiveTv/Data/Cable/SessionCableService.swift; sourceTree = ""; }; + A3F2049B408743AA82AF43F3 /* LiveBroadcastCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinator.swift; path = MatchLiveTv/Streaming/LiveBroadcastCoordinator.swift; sourceTree = ""; }; + A5964C8AF73D4617BB437E4A /* MatchStatusBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchStatusBadge.swift; path = MatchLiveTv/UI/Components/MatchStatusBadge.swift; sourceTree = ""; }; + AB1B3BC7CA8B4B25BCC77F6E /* AuthRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AuthRepository.swift; path = MatchLiveTv/Data/Repository/AuthRepository.swift; sourceTree = ""; }; + ABC6373E955749DF9AB5DB5B /* TokenStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TokenStore.swift; path = MatchLiveTv/Core/TokenStore.swift; sourceTree = ""; }; + AC36378EDDDF44F29ACAD3C6 /* CompactScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CompactScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/CompactScoreboardElement.swift; sourceTree = ""; }; + B2B9108C739D484BAD4FF40F /* ScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/ScoreboardElement.swift; sourceTree = ""; }; + B8736A8A330D4815A3D56104 /* MatchSecondaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSecondaryButton.swift; path = MatchLiveTv/UI/Components/MatchSecondaryButton.swift; sourceTree = ""; }; + BA288DB764E24438AE8826DC /* OverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayState.swift; path = MatchLiveTv/Streaming/Overlay/OverlayState.swift; sourceTree = ""; }; + BC8B7397C0BD4EC59851185D /* LiveBroadcastEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastEngine.swift; path = MatchLiveTv/Streaming/LiveBroadcastEngine.swift; sourceTree = ""; }; + BCA50054BF694B9D82EA97ED /* BroadcastVideoOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastVideoOrientation.swift; path = MatchLiveTv/Streaming/BroadcastVideoOrientation.swift; sourceTree = ""; }; + BDC3D4B19E974898AA9CAC76 /* SponsorElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SponsorElement.swift; path = MatchLiveTv/Streaming/Overlay/SponsorElement.swift; sourceTree = ""; }; + BFE4871BCA51457CB720047B /* BroadcastOrientationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicy.swift; path = MatchLiveTv/Streaming/BroadcastOrientationPolicy.swift; sourceTree = ""; }; + C2AF23C6CDE24E1AB227F019 /* MatchRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchRepository.swift; path = MatchLiveTv/Data/Repository/MatchRepository.swift; sourceTree = ""; }; + C44E182032F64EBBA55ADCEB /* ModalRoutes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ModalRoutes.swift; path = MatchLiveTv/UI/Navigation/ModalRoutes.swift; sourceTree = ""; }; + C7E9EFA6947F4A799570A271 /* MatchScreenScaffold.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScreenScaffold.swift; path = MatchLiveTv/UI/Components/MatchScreenScaffold.swift; sourceTree = ""; }; + C8F7A645B14A44C69304E136 /* ScoreControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreControllerTests.swift; path = MatchLiveTvTests/ScoreControllerTests.swift; sourceTree = ""; }; + CB3CE35029F144899C81993B /* SplashScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SplashScreen.swift; path = MatchLiveTv/UI/Splash/SplashScreen.swift; sourceTree = ""; }; + CE709C8660614B9DA5A2D657 /* ScoreRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreRepository.swift; path = MatchLiveTv/Data/Repository/ScoreRepository.swift; sourceTree = ""; }; + D48D1A4C43A24A1E815A646D /* MatchScoringRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRules.swift; path = MatchLiveTv/Domain/MatchScoringRules.swift; sourceTree = ""; }; + DE0BD001D8384E1CAD5A327B /* MediaUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediaUrl.swift; path = MatchLiveTv/Core/MediaUrl.swift; sourceTree = ""; }; + E3F630293570453BB85BE288 /* LivePreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LivePreviewView.swift; path = MatchLiveTv/Streaming/Preview/LivePreviewView.swift; sourceTree = ""; }; + E8E91F93272E41A78E4CBECC /* ActionCableClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActionCableClient.swift; path = MatchLiveTv/Data/Cable/ActionCableClient.swift; sourceTree = ""; }; + F0707542005B4DCC90E3A072 /* ApiInstantTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstantTests.swift; path = MatchLiveTvTests/ApiInstantTests.swift; sourceTree = ""; }; + F41CF197E5D543CE9A949497 /* ScoreController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreController.swift; path = MatchLiveTv/Data/Scoring/ScoreController.swift; sourceTree = ""; }; + F7FCFC922786459EAF4D1813 /* MatchLiveTv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MatchLiveTv.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F961133AE74D4ECE9FDC3EBF /* LoginScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LoginScreen.swift; path = MatchLiveTv/UI/Login/LoginScreen.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - EC74ACD5FC794566A431A35D /* Frameworks */ = { + 3793049D651342FCB0DCB8E7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4C2639452FE6D7CF0015AAF3 /* RTMPHaishinKit in Frameworks */, - 4C2639442FE6D7CF0015AAF3 /* HaishinKit in Frameworks */, + 4C2639492FE6DA960015AAF3 /* RTMPHaishinKit in Frameworks */, + 4C2639482FE6DA960015AAF3 /* HaishinKit in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F4997458E6A441FFAF9F30AD /* Frameworks */ = { + CBDEBD8700894FF8ABB072C4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -193,122 +193,122 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 04C16256D74947F49F3C9F65 /* Products */ = { + 043A9CA61B924E8AA7DD8BAC /* Products */ = { isa = PBXGroup; children = ( - A2DCC5443E58454998461BDB /* MatchLiveTv.app */, - D6DC6A6529B74BACBD05E817 /* MatchLiveTvTests.xctest */, + F7FCFC922786459EAF4D1813 /* MatchLiveTv.app */, + 1EF154DE4E184011B1E29261 /* MatchLiveTvTests.xctest */, ); name = Products; sourceTree = ""; }; - 24B89ABF583C445F8BE6725C /* MatchLiveTvTests */ = { + 3295305662B540D3B837C583 = { isa = PBXGroup; children = ( - 9EFBCE62B1AD4A318A676B29 /* ApiInstantTests.swift */, - D291E7B6E7644EC49B08B1E3 /* BroadcastOrientationPolicyTests.swift */, - BB5D916A7D894E119711065F /* LiveBroadcastCoordinatorTests.swift */, - 740D32B076064CCDBE6A688F /* LiveScoreDialogHostTests.swift */, - 51257C93F3A4464F8AA4B5B5 /* MatchScoringRulesTests.swift */, - D9493EA978E6460FACFB7831 /* ScoreActionDecodeTests.swift */, - 7814A010936047EBB4193446 /* ScoreControllerTests.swift */, - ); - name = MatchLiveTvTests; - sourceTree = ""; - }; - 64400CD6009C4B9FB7362229 = { - isa = PBXGroup; - children = ( - EA914F8374EB40228298872E /* MatchLiveTv */, - 24B89ABF583C445F8BE6725C /* MatchLiveTvTests */, - 04C16256D74947F49F3C9F65 /* Products */, + 957E89149C624576B613E912 /* MatchLiveTv */, + F3A8835D1D314FBC9DE71AF9 /* MatchLiveTvTests */, + 043A9CA61B924E8AA7DD8BAC /* Products */, ); sourceTree = ""; }; - EA914F8374EB40228298872E /* MatchLiveTv */ = { + 957E89149C624576B613E912 /* MatchLiveTv */ = { isa = PBXGroup; children = ( - 4BA1FADDBD6A478FBA4D4047 /* MatchLiveTvApp.swift */, - F52E5A9320FD4A9C82C64092 /* ApiInstant.swift */, - 218CB473E8054075A604031B /* AppConfig.swift */, - B2944504F54A4FFBBC27890E /* ColorHex.swift */, - FD66A152068843A89E25EA2A /* DeviceTelemetry.swift */, - 7F5C50636970455FBD3C4C90 /* MediaUrl.swift */, - E6CC04AA64F244128D7069F7 /* TokenStore.swift */, - 38E556E7CE8E4407B926500E /* UserFacingError.swift */, - A1AD2477B899435F8D082A92 /* ApiDtos.swift */, - B7485A29DA1E4F7EB3D4116D /* MatchLiveAPI.swift */, - 8FF647CAD4FA457A8F37C5F0 /* AppContainer.swift */, - 3E73FCF20F1D4F148B9CD4B3 /* ActionCableClient.swift */, - 153C1BAFFFD94507B3F4960D /* SessionCableService.swift */, - 0FF6D203D77042EBAF2DB51F /* AuthRepository.swift */, - E00E4AADECC140CDAD8C2AE6 /* MatchRepository.swift */, - 99BA29C831B4470DB25B2180 /* MatchSessionLauncher.swift */, - DB392D77E64247B3B093F616 /* ScoreRepository.swift */, - 87978C769F4E4D468052CC33 /* SessionRepository.swift */, - 78C62B9683F44AA2A14D424A /* ScoreController.swift */, - D7C680C09D954141B3992BAE /* WizardSessionHolder.swift */, - 7C298D589A644368A5B3DB79 /* MatchHubFilter.swift */, - B820270757EE42759E42FEEE /* MatchScoringRules.swift */, - 500277E50C1A4646920A8543 /* Models.swift */, - C7B37C6177BA4FC7AD4DE2C9 /* ScoreState.swift */, - A0E9DB4FB233435987DE957D /* BroadcastModels.swift */, - FED568E49E4044838349A540 /* BroadcastOrientationPolicy.swift */, - 0997030621F749A3B9CDF588 /* BroadcastVideoOrientation.swift */, - 35FA1B77E81F48C5B4E55CD9 /* LiveBroadcastCoordinator.swift */, - F03E8C38FF8F45E3B60876C4 /* LiveBroadcastEngine.swift */, - 994567EE1DE14A20B92F4E96 /* CompactScoreboardElement.swift */, - 6F2481408D6640FB9CC2CB2F /* OverlayCanvasRenderer.swift */, - A399280B3F39439986A8B8CA /* OverlayLogoCache.swift */, - CC64A2E1500E4ADB9ACE1A86 /* OverlayMappings.swift */, - CE8079EC41BD47469013C0B2 /* OverlayRenderer.swift */, - A14E10B5AA8D45859AC6A1A4 /* OverlayState.swift */, - 8F0128206567441BB807BB13 /* ScoreboardElement.swift */, - 3EF4D8B887F6467699C4E184 /* SponsorElement.swift */, - 16A9445555754FB7BDAADD3A /* WatermarkElement.swift */, - A9BE69BF72BE4435BEDA9133 /* LivePreviewView.swift */, - F9652ABD17F34BF7B781F9CB /* BroadcastControlsOverlay.swift */, - 72E46A99EFD841C5A1647DB8 /* BroadcastScreen.swift */, - 7122CAE2FBF04D59B28E3393 /* LiveScoreActions.swift */, - 2D5396F45B5E40B1B1787C6E /* MatchLiveWordmark.swift */, - 6EB0CC339DE745259373D142 /* MatchPrimaryButton.swift */, - 324AD8EC837D48F5B6FFCEAA /* MatchScreenScaffold.swift */, - 8363E5303ADB4FD78519684F /* MatchSecondaryButton.swift */, - 351CF0707AD942A58C630254 /* MatchStatusBadge.swift */, - 4C77C273929F4A4A9079A55E /* LoginScreen.swift */, - B8258C8C208E4AE2B37636E8 /* MatchesScreen.swift */, - C90C96BCB45B4C70A4EFEDDA /* AppNavHost.swift */, - 9818CDD6BBDF4E68B2F56E32 /* ModalRoutes.swift */, - 3AB101F16AF1494E8A143D0A /* Routes.swift */, - B905649882624CD4BDFBAA1E /* BroadcastPermissions.swift */, - 91EC9ED467E84061B684745A /* SplashScreen.swift */, - 56E3FD0A68DC4FB6BB6F5DC3 /* KeepScreenOn.swift */, - 60E331937B64477698ACF9B4 /* ScreenOrientation.swift */, - 638CBB9E0E874F7F95CBE204 /* ShareSheet.swift */, - C33DE04949BC459E88BE9366 /* MatchColors.swift */, - A5FCAE846D294A19A7981CA2 /* StepMatchScreen.swift */, - 1575FE5CDD584E119971A738 /* StepNetworkTestScreen.swift */, - 64DFCC6BD2024FDBAB16BB74 /* StepTransmissionScreen.swift */, - E32781A593654542B0650E57 /* TeamBrandingEditor.swift */, - 6338B84D52DA4FBA93DAE49A /* TeamColorPicker.swift */, - 727F818455854A5C95A36750 /* WizardComponents.swift */, - 828F33DF188D43AFB37FB0FE /* WizardShellScreen.swift */, - 4F01AFBFEF6044C68CB26E01 /* MatchLiveTv/Resources/Assets.xcassets */, - 358F960727AF4821B82A7791 /* MatchLiveTv/Resources/Info.plist */, + 13EB02413D134D6289DB90DA /* MatchLiveTvApp.swift */, + 354D09291641417F99E27D5A /* ApiInstant.swift */, + 395345091E364AFF9FFB34B9 /* AppConfig.swift */, + 68D5ED55DB884EA2AC986F61 /* ColorHex.swift */, + 258DECC661314224B6A98F47 /* DeviceTelemetry.swift */, + DE0BD001D8384E1CAD5A327B /* MediaUrl.swift */, + ABC6373E955749DF9AB5DB5B /* TokenStore.swift */, + 109F8ABCCCF649EFB3E6647C /* UserFacingError.swift */, + 7F08BB3F014B44F18A1203FE /* ApiDtos.swift */, + 9889D83B0787422397EF3181 /* MatchLiveAPI.swift */, + 590CA24C9659490E9A8EC555 /* AppContainer.swift */, + E8E91F93272E41A78E4CBECC /* ActionCableClient.swift */, + A3D8CA843FF54424B181675B /* SessionCableService.swift */, + AB1B3BC7CA8B4B25BCC77F6E /* AuthRepository.swift */, + C2AF23C6CDE24E1AB227F019 /* MatchRepository.swift */, + 7060C0C306D44E9AA8AAF5D4 /* MatchSessionLauncher.swift */, + CE709C8660614B9DA5A2D657 /* ScoreRepository.swift */, + 3691F2136AAD4545B655F544 /* SessionRepository.swift */, + F41CF197E5D543CE9A949497 /* ScoreController.swift */, + 973C4EEE1DCD40448D7F2FAD /* WizardSessionHolder.swift */, + 8F71C110A07B4F71AB71E6ED /* MatchHubFilter.swift */, + D48D1A4C43A24A1E815A646D /* MatchScoringRules.swift */, + 6DF32351AC9D47F39C23B29A /* Models.swift */, + 51A6EEEAD38F4F509310B82E /* ScoreState.swift */, + 820BDE9FBCCB4BABACD2AC89 /* BroadcastModels.swift */, + BFE4871BCA51457CB720047B /* BroadcastOrientationPolicy.swift */, + BCA50054BF694B9D82EA97ED /* BroadcastVideoOrientation.swift */, + A3F2049B408743AA82AF43F3 /* LiveBroadcastCoordinator.swift */, + BC8B7397C0BD4EC59851185D /* LiveBroadcastEngine.swift */, + AC36378EDDDF44F29ACAD3C6 /* CompactScoreboardElement.swift */, + 1B5BF42CCF934AC7A9516374 /* OverlayCanvasRenderer.swift */, + 10BEC6633F9F446587F1818C /* OverlayLogoCache.swift */, + 611ECD9494B94B75B9866791 /* OverlayMappings.swift */, + 49FD73A6D4254EAD9484E159 /* OverlayRenderer.swift */, + BA288DB764E24438AE8826DC /* OverlayState.swift */, + B2B9108C739D484BAD4FF40F /* ScoreboardElement.swift */, + BDC3D4B19E974898AA9CAC76 /* SponsorElement.swift */, + 7D95106A21804A2EAEDCECB7 /* WatermarkElement.swift */, + E3F630293570453BB85BE288 /* LivePreviewView.swift */, + 2DF2832197EE409AA0B0334C /* BroadcastControlsOverlay.swift */, + 985215153D0A44DC8B429731 /* BroadcastScreen.swift */, + A224E4FD5069421AAB0C4CF6 /* LiveScoreActions.swift */, + 6C6CE9645ACD4713AFC66C58 /* MatchLiveWordmark.swift */, + 11E92E0A7DB54267AC53F60A /* MatchPrimaryButton.swift */, + C7E9EFA6947F4A799570A271 /* MatchScreenScaffold.swift */, + B8736A8A330D4815A3D56104 /* MatchSecondaryButton.swift */, + A5964C8AF73D4617BB437E4A /* MatchStatusBadge.swift */, + F961133AE74D4ECE9FDC3EBF /* LoginScreen.swift */, + 63D6F174CE084074972CABF6 /* MatchesScreen.swift */, + 1265527D9925494BAE66B5A0 /* AppNavHost.swift */, + C44E182032F64EBBA55ADCEB /* ModalRoutes.swift */, + 586F014DA6724EEB810107AD /* Routes.swift */, + 1CC868CFCFB6429F84E481B4 /* BroadcastPermissions.swift */, + CB3CE35029F144899C81993B /* SplashScreen.swift */, + A1D75DB685D64B93A65E9FC8 /* KeepScreenOn.swift */, + 8A279824047D4B7EB08A3F30 /* ScreenOrientation.swift */, + A23B62DE25C94F47B560D742 /* ShareSheet.swift */, + 0E15E2F8F9114F299D8EB017 /* MatchColors.swift */, + 8992D152CF7F478BA6469E36 /* StepMatchScreen.swift */, + 5C26A0114F73483A85C70772 /* StepNetworkTestScreen.swift */, + 94EDDD3FE78C4DC288424A6E /* StepTransmissionScreen.swift */, + 77A71899E82D448797DCE7E8 /* TeamBrandingEditor.swift */, + 68C47301A29345819A2CDEC8 /* TeamColorPicker.swift */, + 7250114A6FB34430BB20B414 /* WizardComponents.swift */, + 29358C1BDC864C408AB4FAD0 /* WizardShellScreen.swift */, + 1B4E0A284897418CB3B60E19 /* MatchLiveTv/Resources/Assets.xcassets */, + 5F8323C8BC81496A8A1DE9B5 /* MatchLiveTv/Resources/Info.plist */, ); name = MatchLiveTv; sourceTree = ""; }; + F3A8835D1D314FBC9DE71AF9 /* MatchLiveTvTests */ = { + isa = PBXGroup; + children = ( + F0707542005B4DCC90E3A072 /* ApiInstantTests.swift */, + 49FDEC2FCAD14E7C9D671A27 /* BroadcastOrientationPolicyTests.swift */, + 7B55F65BAA6146AF84B010CC /* LiveBroadcastCoordinatorTests.swift */, + 27FB35A567D04317B0421156 /* LiveScoreDialogHostTests.swift */, + 87A9A8AEACEA48FABD06BD52 /* MatchScoringRulesTests.swift */, + 1D3A1338FBA0411587BB5F4B /* ScoreActionDecodeTests.swift */, + C8F7A645B14A44C69304E136 /* ScoreControllerTests.swift */, + ); + name = MatchLiveTvTests; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 2F039DD838234B1F9B1B2FF5 /* MatchLiveTv */ = { + C1A6F02007F74525A4124BD0 /* MatchLiveTv */ = { isa = PBXNativeTarget; - buildConfigurationList = 7F122D777A6E41C9BD148CDD /* Build configuration list for PBXNativeTarget "MatchLiveTv" */; + buildConfigurationList = B85A15C67B064173ACD38B52 /* Build configuration list for PBXNativeTarget "MatchLiveTv" */; buildPhases = ( - AD28C1C2220D4921862D734A /* Sources */, - EC74ACD5FC794566A431A35D /* Frameworks */, - CA170C64969345F0974EA381 /* Resources */, + CECE99C00DA949F1A6F9E016 /* Sources */, + 3793049D651342FCB0DCB8E7 /* Frameworks */, + 702AFFCE779D46568D8EFD3B /* Resources */, ); buildRules = ( ); @@ -316,40 +316,40 @@ ); name = MatchLiveTv; packageProductDependencies = ( - 363FFDAD444D4381B6D23159 /* HaishinKit */, - 3CEE882EC45E49D49BF6B568 /* RTMPHaishinKit */, + BC6C276807664B6CB76A8A9D /* HaishinKit */, + 8F64C5AA49464C419712EAC5 /* RTMPHaishinKit */, ); productName = MatchLiveTv; - productReference = A2DCC5443E58454998461BDB /* MatchLiveTv.app */; + productReference = F7FCFC922786459EAF4D1813 /* MatchLiveTv.app */; productType = "com.apple.product-type.application"; }; - F441C7131D0345549D8CA917 /* MatchLiveTvTests */ = { + D2DB6900C94F48F0A49F19BB /* MatchLiveTvTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 271ADC46052246A38FB0DFCE /* Build configuration list for PBXNativeTarget "MatchLiveTvTests" */; + buildConfigurationList = 557C4FE091C3492A98F420D2 /* Build configuration list for PBXNativeTarget "MatchLiveTvTests" */; buildPhases = ( - 79D8DB6A21534CC695AEAAD3 /* Sources */, - F4997458E6A441FFAF9F30AD /* Frameworks */, + E214E6AEA37A48A8A6B5FCF4 /* Sources */, + CBDEBD8700894FF8ABB072C4 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 953DB6F101304B388EBFB376 /* PBXTargetDependency */, + 7AF81B34F40A4032BF55ECCC /* PBXTargetDependency */, ); name = MatchLiveTvTests; productName = MatchLiveTvTests; - productReference = D6DC6A6529B74BACBD05E817 /* MatchLiveTvTests.xctest */; + productReference = 1EF154DE4E184011B1E29261 /* MatchLiveTvTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - DBE4153B1FC34F91BC390462 /* Project object */ = { + 456AEB32689E48DEA025761E /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = 0; LastSwiftUpdateCheck = 1600; }; - buildConfigurationList = 1E22BBCE2E7C4E1DBD22BF81 /* Build configuration list for PBXProject "MatchLiveTv" */; + buildConfigurationList = D9A53CE9A9354D1598FD2265 /* Build configuration list for PBXProject "MatchLiveTv" */; compatibilityVersion = "Xcode 15.0"; developmentRegion = it; hasScannedForEncodings = 0; @@ -358,138 +358,130 @@ en, Base, ); - mainGroup = 64400CD6009C4B9FB7362229; + mainGroup = 3295305662B540D3B837C583; packageReferences = ( - 3FD2C0913F9E4659A9B8920D /* XCRemoteSwiftPackageReference "HaishinKit" */, + 6645D37DD2684C94860AEF1B /* XCRemoteSwiftPackageReference "HaishinKit" */, ); - productRefGroup = 04C16256D74947F49F3C9F65 /* Products */; + productRefGroup = 043A9CA61B924E8AA7DD8BAC /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 2F039DD838234B1F9B1B2FF5 /* MatchLiveTv */, - F441C7131D0345549D8CA917 /* MatchLiveTvTests */, + C1A6F02007F74525A4124BD0 /* MatchLiveTv */, + D2DB6900C94F48F0A49F19BB /* MatchLiveTvTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - CA170C64969345F0974EA381 /* Resources */ = { + 702AFFCE779D46568D8EFD3B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 344B17113ADF4C548146080C /* MatchLiveTv/Resources/Assets.xcassets in Resources */, + 60D2848965684DB5BFEBD5E3 /* MatchLiveTv/Resources/Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 79D8DB6A21534CC695AEAAD3 /* Sources */ = { + CECE99C00DA949F1A6F9E016 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 228CC71E4BBA4CF0A7712FDD /* ApiInstantTests.swift in Sources */, - 9187B987AC034AAD887F6393 /* BroadcastOrientationPolicyTests.swift in Sources */, - 8B26B443AD5C4FF388D448F5 /* LiveBroadcastCoordinatorTests.swift in Sources */, - FEE2AE0621F94EA393524C47 /* LiveScoreDialogHostTests.swift in Sources */, - 05E2509B1F96460F9A8FBDEE /* MatchScoringRulesTests.swift in Sources */, - 2094E19DDAD0464B9CED0495 /* ScoreActionDecodeTests.swift in Sources */, - FB09138978B3408ABBE91CD9 /* ScoreControllerTests.swift in Sources */, + 42EF33716F6843B69945E6AB /* MatchLiveTvApp.swift in Sources */, + C9B90AAE70C142DEB8996100 /* ApiInstant.swift in Sources */, + 066B7E46EB6245BA94C12BA6 /* AppConfig.swift in Sources */, + 557CA481D63840D3AA6EFD5B /* ColorHex.swift in Sources */, + CF8E45A2BFE34E4BBE259654 /* DeviceTelemetry.swift in Sources */, + EB3031C7972041F2BE6C3933 /* MediaUrl.swift in Sources */, + 3F5B3BD00C6F48379469C171 /* TokenStore.swift in Sources */, + 46F6F77D670A49BFB4A9B757 /* UserFacingError.swift in Sources */, + 035B95F7CE8643C48038A114 /* ApiDtos.swift in Sources */, + 4FFA52FD7FF8410AA8FA673E /* MatchLiveAPI.swift in Sources */, + 0D3A76C230854286AA528524 /* AppContainer.swift in Sources */, + 5DB4B7C040F6449198E5D07D /* ActionCableClient.swift in Sources */, + 0F6F3A1F9EA74107BDFAF930 /* SessionCableService.swift in Sources */, + 63CB7A84409D49CEBD74DE4D /* AuthRepository.swift in Sources */, + 4C1FDA2D80034A2FB6550DAB /* MatchRepository.swift in Sources */, + DFD70B8BFDAD427DA63CD6B1 /* MatchSessionLauncher.swift in Sources */, + 67818D53F7EA46C2A4850214 /* ScoreRepository.swift in Sources */, + 5BEB4A09B526452D8CCBBE1B /* SessionRepository.swift in Sources */, + 8C32CAC69405444DA4BB1E36 /* ScoreController.swift in Sources */, + E4C3F469616A42818F63CE89 /* WizardSessionHolder.swift in Sources */, + F0497D8B51DE4173AF395AF8 /* MatchHubFilter.swift in Sources */, + 919B83984A5347989781366F /* MatchScoringRules.swift in Sources */, + 92E4CAC8F45141A8899749C5 /* Models.swift in Sources */, + 3E25B3A6F51242B9847DBA6F /* ScoreState.swift in Sources */, + 2B400EFC857D4EDF9CCF73B9 /* BroadcastModels.swift in Sources */, + AEA8CCA49E514EA3984F297E /* BroadcastOrientationPolicy.swift in Sources */, + C1D2EA29B25C4B06B03B6FFE /* BroadcastVideoOrientation.swift in Sources */, + 539D6877DF3C478E86200649 /* LiveBroadcastCoordinator.swift in Sources */, + 87DB3FBE122F444B87B9D73B /* LiveBroadcastEngine.swift in Sources */, + AA9BCB0DA5164D43BD7A43FA /* CompactScoreboardElement.swift in Sources */, + ED730C9B9068449E8D8AF6C8 /* OverlayCanvasRenderer.swift in Sources */, + 8F6D3E3D61584BBA865AD2D7 /* OverlayLogoCache.swift in Sources */, + 7D0DF967FC03423394839915 /* OverlayMappings.swift in Sources */, + DF09C441105448CDBAFBD9AF /* OverlayRenderer.swift in Sources */, + 4D74385A3406406ABFA45B44 /* OverlayState.swift in Sources */, + 6DFF8FAA4ECF46F1928851A4 /* ScoreboardElement.swift in Sources */, + 3EF78D9394DF41D89E0A43F8 /* SponsorElement.swift in Sources */, + 52EB3701353841BDB837C75E /* WatermarkElement.swift in Sources */, + 01EF2265D1624199B171D57E /* LivePreviewView.swift in Sources */, + 8841513B4E1743E983E7D2C8 /* BroadcastControlsOverlay.swift in Sources */, + 81DB6B2543BC407EBB056C4B /* BroadcastScreen.swift in Sources */, + F8324F96CA074A0B8A71BB7B /* LiveScoreActions.swift in Sources */, + F065E5BE5EC34955B133C189 /* MatchLiveWordmark.swift in Sources */, + 35B3BCE4D68F47C4ABD1E955 /* MatchPrimaryButton.swift in Sources */, + B6F8B4BA2E49480DBD2CA846 /* MatchScreenScaffold.swift in Sources */, + DC848628856A4FCB86EE9DA7 /* MatchSecondaryButton.swift in Sources */, + 226769D5E66848FB90B5BFEE /* MatchStatusBadge.swift in Sources */, + 5AE324386FA64E1C8BA5F21F /* LoginScreen.swift in Sources */, + 8D7FCD0052674C0EB4F5C811 /* MatchesScreen.swift in Sources */, + 735CF034B3BA49BE9BBDD261 /* AppNavHost.swift in Sources */, + 100AF197AD334A1AB38D271B /* ModalRoutes.swift in Sources */, + AFA2540B2280448A81DFF5CF /* Routes.swift in Sources */, + E15E57A4C69D49F7AB0C916A /* BroadcastPermissions.swift in Sources */, + FCDD0B3AA1F046B4B912A2F7 /* SplashScreen.swift in Sources */, + 8179BD051391404B9E2235C2 /* KeepScreenOn.swift in Sources */, + ECA9E663AF8B4F19BA4AD6D2 /* ScreenOrientation.swift in Sources */, + 0D666A37E49749C68C0DB06B /* ShareSheet.swift in Sources */, + E5ECF142981E4D58B3040FB5 /* MatchColors.swift in Sources */, + DBBB006ED6C946A2950D805C /* StepMatchScreen.swift in Sources */, + C3B1B44C77084C05B325F935 /* StepNetworkTestScreen.swift in Sources */, + E01D498C8EF64F85A41EAC54 /* StepTransmissionScreen.swift in Sources */, + 0469F385C3BD41489812C2EC /* TeamBrandingEditor.swift in Sources */, + 5CA7D12629854A4A9B9DF084 /* TeamColorPicker.swift in Sources */, + 6B4C7990A5D94A2C8AC69FC1 /* WizardComponents.swift in Sources */, + 0D81FEE2FA88468C98652291 /* WizardShellScreen.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - AD28C1C2220D4921862D734A /* Sources */ = { + E214E6AEA37A48A8A6B5FCF4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4BF1F3719177402988F3E680 /* MatchLiveTvApp.swift in Sources */, - 0811090F35B647A9AAE98018 /* ApiInstant.swift in Sources */, - 6F38CD1E29CE4EDF92D2FCBD /* AppConfig.swift in Sources */, - 62147CCDD37243B9AB328357 /* ColorHex.swift in Sources */, - 1191C9F3433D4C79BB1D55CA /* DeviceTelemetry.swift in Sources */, - 64D51E5990C34E64BBDD6153 /* MediaUrl.swift in Sources */, - 17F54C8204F346CCA9EBFF89 /* TokenStore.swift in Sources */, - E8D2C2E91DBE41BB9A1B59AF /* UserFacingError.swift in Sources */, - 844259AFBAF448C6ADBDE30C /* ApiDtos.swift in Sources */, - 1B65AFB2A2A54BD69FE9D4D3 /* MatchLiveAPI.swift in Sources */, - DF8D47F8D9604F60B03E87F2 /* AppContainer.swift in Sources */, - 72458A3A5D6D40D8B2B4362A /* ActionCableClient.swift in Sources */, - D74402BB72E04D8A816BC980 /* SessionCableService.swift in Sources */, - 2F05B27C846F4284A533573D /* AuthRepository.swift in Sources */, - 4661478CC7C343379C100A7E /* MatchRepository.swift in Sources */, - BDF21E4064AC48D2BF2D3182 /* MatchSessionLauncher.swift in Sources */, - 412D04EC8F8344F3941D7774 /* ScoreRepository.swift in Sources */, - 34C4FE9AC892423FA42B0FA1 /* SessionRepository.swift in Sources */, - 252646FBD7F94CCEB49EE534 /* ScoreController.swift in Sources */, - 5BD7A70803AE4BFCBED02E69 /* WizardSessionHolder.swift in Sources */, - 0ABF8F2EAEF84F3CB3510FCA /* MatchHubFilter.swift in Sources */, - AD9A1CB58F8C44EC92C5B4AE /* MatchScoringRules.swift in Sources */, - ADA537BB60354316AB3D343D /* Models.swift in Sources */, - 16D77B1BA1694BC9AAEACACA /* ScoreState.swift in Sources */, - C0E26D8B51484304B9234F89 /* BroadcastModels.swift in Sources */, - 72B22BECDAD64FE88CD38A25 /* BroadcastOrientationPolicy.swift in Sources */, - D44A9E22D1C241EA83B7A897 /* BroadcastVideoOrientation.swift in Sources */, - 33848EA261D540879BABC0EC /* LiveBroadcastCoordinator.swift in Sources */, - 62F8E9A68AF84E04B5B25C0E /* LiveBroadcastEngine.swift in Sources */, - 953EFFA2B63946A0818C82A1 /* CompactScoreboardElement.swift in Sources */, - 7FAB1EF0F8D3459CB1A05CD5 /* OverlayCanvasRenderer.swift in Sources */, - 57499374CE314E5C9B19E857 /* OverlayLogoCache.swift in Sources */, - AD41DBD5504E4D3CB34B81B1 /* OverlayMappings.swift in Sources */, - D6ED4D033BA74DFFA968FC50 /* OverlayRenderer.swift in Sources */, - 44412124BE71497F89A100A7 /* OverlayState.swift in Sources */, - DAA27DA77F904BA9B59684B1 /* ScoreboardElement.swift in Sources */, - 1DF38DB813DC491C94C206CD /* SponsorElement.swift in Sources */, - ABA512B1D2C7407E892623DE /* WatermarkElement.swift in Sources */, - 70385A94466D4A2EA11DDB3B /* LivePreviewView.swift in Sources */, - 0B2C36335D034737BD753D22 /* BroadcastControlsOverlay.swift in Sources */, - A5767FD88F8D4123A68224CD /* BroadcastScreen.swift in Sources */, - 2F9195CCAE9949C087CECAA2 /* LiveScoreActions.swift in Sources */, - 1F26CA550156447B89B3EC01 /* MatchLiveWordmark.swift in Sources */, - 85680F15BAC247B1AA97DC4D /* MatchPrimaryButton.swift in Sources */, - 942E7C8159B2490A9058D20A /* MatchScreenScaffold.swift in Sources */, - BDAA05C294674E0A837D27AB /* MatchSecondaryButton.swift in Sources */, - 3D6496F4394A4A8B8280CCD7 /* MatchStatusBadge.swift in Sources */, - 0AEA80531D74475A9279AAF8 /* LoginScreen.swift in Sources */, - F3907C6CC01447B786FF633F /* MatchesScreen.swift in Sources */, - BCA11E5347BE4070B1883A58 /* AppNavHost.swift in Sources */, - E2D089A57F9F49D887C0D233 /* ModalRoutes.swift in Sources */, - C2479C699DF24364951AFFEC /* Routes.swift in Sources */, - 6312973A866D4191BA2E2E5E /* BroadcastPermissions.swift in Sources */, - 71A4EBF7C11441ED8202C4A5 /* SplashScreen.swift in Sources */, - 255C09F3A1AB4FCC80DC403D /* KeepScreenOn.swift in Sources */, - D4EED1F5722B435695F1C09D /* ScreenOrientation.swift in Sources */, - B6CA255BE2A840A7B21CDCCB /* ShareSheet.swift in Sources */, - C6B8E801C3E449ABBFA44F33 /* MatchColors.swift in Sources */, - 4B6FFF5D05164AE9AFB2833C /* StepMatchScreen.swift in Sources */, - 5A085BBBD09B49A98A261FD1 /* StepNetworkTestScreen.swift in Sources */, - 7360468C628E48AF950EF5CB /* StepTransmissionScreen.swift in Sources */, - 871F7D73227B4E699B65FE3D /* TeamBrandingEditor.swift in Sources */, - E2E74A83D86544BA8FB85AAB /* TeamColorPicker.swift in Sources */, - 4E3828F9935743CCB4B15F01 /* WizardComponents.swift in Sources */, - B9DFB757CD3942AEBC1953F0 /* WizardShellScreen.swift in Sources */, + 794CC6694C74486BAB61CA3B /* ApiInstantTests.swift in Sources */, + E75B706F137249FF807FE0DD /* BroadcastOrientationPolicyTests.swift in Sources */, + 7636A7A0E3CC477799338D29 /* LiveBroadcastCoordinatorTests.swift in Sources */, + 727B74004C3741D9BA510F3B /* LiveScoreDialogHostTests.swift in Sources */, + 75D6916EAD4E46CA9E36582C /* MatchScoringRulesTests.swift in Sources */, + 833558A9A0A043ECB8E146F6 /* ScoreActionDecodeTests.swift in Sources */, + D08665EFFF27465294B620B5 /* ScoreControllerTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 953DB6F101304B388EBFB376 /* PBXTargetDependency */ = { + 7AF81B34F40A4032BF55ECCC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 2F039DD838234B1F9B1B2FF5 /* MatchLiveTv */; - targetProxy = 90C62964E51147DCABB6E3C2 /* PBXContainerItemProxy */; + target = C1A6F02007F74525A4124BD0 /* MatchLiveTv */; + targetProxy = B2EE838DC30044B18C9AEE34 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 10CF510EECBA46A28C005559 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 2A2B61A669994F488438E767 /* Debug */ = { + 225662CBBF56481BAEE29648 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; @@ -507,15 +499,7 @@ }; name = Debug; }; - 3F95B64C066F4446ACEDEEFA /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 4F2ACFA1B72745E696F93445 /* Release */ = { + 25DF4C4290CD4B85A1FB5B00 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { API_BASE_URL = "https://www.matchlivetv.it"; @@ -541,7 +525,41 @@ }; name = Release; }; - C6FDF65D61EE4467A5089156 /* Debug */ = { + 2619E7D33A5048E098621AAC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 21; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MARKETING_VERSION = 2.0.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.matchlivetv.match-live-tv.tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MatchLiveTv.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MatchLiveTv"; + }; + name = Release; + }; + 908522446C5E40DBBCEC19A6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 9D109C6FCBD247FEBF780C10 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + F65D58B3D4D6450FA8626BAA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { API_BASE_URL = "https://www.matchlivetv.it"; @@ -568,50 +586,32 @@ }; name = Debug; }; - E9E462592C9D4C8CB7EF2F7B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 21; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - MARKETING_VERSION = 2.0.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.matchlivetv.match-live-tv.tests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MatchLiveTv.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MatchLiveTv"; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 1E22BBCE2E7C4E1DBD22BF81 /* Build configuration list for PBXProject "MatchLiveTv" */ = { + 557C4FE091C3492A98F420D2 /* Build configuration list for PBXNativeTarget "MatchLiveTvTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 10CF510EECBA46A28C005559 /* Debug */, - 3F95B64C066F4446ACEDEEFA /* Release */, + 225662CBBF56481BAEE29648 /* Debug */, + 2619E7D33A5048E098621AAC /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 271ADC46052246A38FB0DFCE /* Build configuration list for PBXNativeTarget "MatchLiveTvTests" */ = { + B85A15C67B064173ACD38B52 /* Build configuration list for PBXNativeTarget "MatchLiveTv" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2A2B61A669994F488438E767 /* Debug */, - E9E462592C9D4C8CB7EF2F7B /* Release */, + F65D58B3D4D6450FA8626BAA /* Debug */, + 25DF4C4290CD4B85A1FB5B00 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7F122D777A6E41C9BD148CDD /* Build configuration list for PBXNativeTarget "MatchLiveTv" */ = { + D9A53CE9A9354D1598FD2265 /* Build configuration list for PBXProject "MatchLiveTv" */ = { isa = XCConfigurationList; buildConfigurations = ( - C6FDF65D61EE4467A5089156 /* Debug */, - 4F2ACFA1B72745E696F93445 /* Release */, + 908522446C5E40DBBCEC19A6 /* Debug */, + 9D109C6FCBD247FEBF780C10 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -619,7 +619,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 3FD2C0913F9E4659A9B8920D /* XCRemoteSwiftPackageReference "HaishinKit" */ = { + 6645D37DD2684C94860AEF1B /* XCRemoteSwiftPackageReference "HaishinKit" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/shogo4405/HaishinKit.swift"; requirement = { @@ -630,17 +630,17 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 363FFDAD444D4381B6D23159 /* HaishinKit */ = { + 8F64C5AA49464C419712EAC5 /* RTMPHaishinKit */ = { isa = XCSwiftPackageProductDependency; - package = 3FD2C0913F9E4659A9B8920D /* XCRemoteSwiftPackageReference "HaishinKit" */; - productName = HaishinKit; - }; - 3CEE882EC45E49D49BF6B568 /* RTMPHaishinKit */ = { - isa = XCSwiftPackageProductDependency; - package = 3FD2C0913F9E4659A9B8920D /* XCRemoteSwiftPackageReference "HaishinKit" */; + package = 6645D37DD2684C94860AEF1B /* XCRemoteSwiftPackageReference "HaishinKit" */; productName = RTMPHaishinKit; }; + BC6C276807664B6CB76A8A9D /* HaishinKit */ = { + isa = XCSwiftPackageProductDependency; + package = 6645D37DD2684C94860AEF1B /* XCRemoteSwiftPackageReference "HaishinKit" */; + productName = HaishinKit; + }; /* End XCSwiftPackageProductDependency section */ }; - rootObject = DBE4153B1FC34F91BC390462 /* Project object */; + rootObject = 456AEB32689E48DEA025761E /* Project object */; } diff --git a/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme b/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme index 1c9ceb4..21d9698 100644 --- a/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme +++ b/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme @@ -3,28 +3,28 @@ - + - + - + - + - + diff --git a/native/ios/MatchLiveTv/Data/Scoring/ScoreController.swift b/native/ios/MatchLiveTv/Data/Scoring/ScoreController.swift index 576b271..efdccdb 100644 --- a/native/ios/MatchLiveTv/Data/Scoring/ScoreController.swift +++ b/native/ios/MatchLiveTv/Data/Scoring/ScoreController.swift @@ -41,17 +41,18 @@ final class ScoreController: ObservableObject { func applyRemote(_ remote: ScoreState, source: RemoteScoreSource = .polling) { if remote == score { return } - if remote.progressKey() < score.progressKey() { return } - if source == .polling, - Date() < suppressRemoteUntil, - remote.progressKey() == score.progressKey() { - return - } + if source == .cable { - // Punteggio dalla regia: annulla sync API in volo che potrebbe sovrascrivere con stato vecchio. + // La regia è fonte di verità: accetta anche undo (punteggio più basso). syncTask?.cancel() syncGeneration += 1 suppressRemoteUntil = .distantPast + publishScore(remote) + return + } + + if Date() < suppressRemoteUntil, remote.progressKey() <= score.progressKey() { + return } publishScore(remote) } @@ -177,9 +178,8 @@ final class ScoreController: ObservableObject { onScoreDidChange?() } - /// Applica la risposta API solo se non è più vecchia dello stato locale (evita race con la regia). + /// Applica la risposta API dopo un'azione locale (incluso undo). private func applyServerScoreIfNewer(_ remote: ScoreState) { - guard remote.progressKey() >= score.progressKey() else { return } publishScore(remote) } diff --git a/native/ios/MatchLiveTvTests/ScoreControllerTests.swift b/native/ios/MatchLiveTvTests/ScoreControllerTests.swift index a4711fc..c28ff41 100644 --- a/native/ios/MatchLiveTvTests/ScoreControllerTests.swift +++ b/native/ios/MatchLiveTvTests/ScoreControllerTests.swift @@ -120,4 +120,42 @@ final class ScoreControllerTests: XCTestCase { XCTAssertEqual(controller.score.periodLabel, "Q2") XCTAssertEqual(controller.score.period, 2) } + + func testCableUndoFromRegiaAppliesLowerScore() { + let controller = ScoreController( + scoreRepository: ScoreRepository(api: MatchLiveAPI()), + sessionCable: SessionCableService() + ) + var local = ScoreState(boardType: "basket", period: 2, periodLabel: "Q2") + local.homePoints = 6 + local.awayPoints = 4 + controller.bind(sessionId: "session-1", initial: local) + + var remote = ScoreState(boardType: "basket", period: 2, periodLabel: "Q2") + remote.homePoints = 5 + remote.awayPoints = 4 + controller.applyRemote(remote, source: .cable) + + XCTAssertEqual(controller.score.homePoints, 5) + XCTAssertEqual(controller.score.awayPoints, 4) + } + + func testPollingUndoFromRegiaAppliesWhenNotSuppressing() { + let controller = ScoreController( + scoreRepository: ScoreRepository(api: MatchLiveAPI()), + sessionCable: SessionCableService() + ) + var local = ScoreState(boardType: "basket") + local.homePoints = 6 + local.awayPoints = 4 + controller.bind(sessionId: "session-1", initial: local) + + var remote = ScoreState(boardType: "basket") + remote.homePoints = 5 + remote.awayPoints = 3 + controller.applyRemote(remote, source: .polling) + + XCTAssertEqual(controller.score.homePoints, 5) + XCTAssertEqual(controller.score.awayPoints, 3) + } }