diff --git a/native/ios/MatchLiveTv.xcodeproj/project.pbxproj b/native/ios/MatchLiveTv.xcodeproj/project.pbxproj index e2a7ff5..19109bc 100644 --- a/native/ios/MatchLiveTv.xcodeproj/project.pbxproj +++ b/native/ios/MatchLiveTv.xcodeproj/project.pbxproj @@ -4,151 +4,151 @@ classes = {}; objectVersion = 60; objects = { - 5B23ED0F23434BC3A23B142F /* MatchLiveTvApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveTvApp.swift; path = MatchLiveTv/App/MatchLiveTvApp.swift; sourceTree = ""; }; - D7A94757D18C46C9821833B7 /* ApiInstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstant.swift; path = MatchLiveTv/Core/ApiInstant.swift; sourceTree = ""; }; - 1443F18A02BB4890A01A56F9 /* AppConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppConfig.swift; path = MatchLiveTv/Core/AppConfig.swift; sourceTree = ""; }; - E717B8A6A51E499490C0334B /* ColorHex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ColorHex.swift; path = MatchLiveTv/Core/ColorHex.swift; sourceTree = ""; }; - 6E6A356C81724C51BF41C25D /* DeviceTelemetry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DeviceTelemetry.swift; path = MatchLiveTv/Core/DeviceTelemetry.swift; sourceTree = ""; }; - DC18E1BC596E42DBB8BBBBFD /* MediaUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediaUrl.swift; path = MatchLiveTv/Core/MediaUrl.swift; sourceTree = ""; }; - C3DCAD32C3F24439A75920C1 /* TokenStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TokenStore.swift; path = MatchLiveTv/Core/TokenStore.swift; sourceTree = ""; }; - B4B5CF0BD5534CF7BE51E3CB /* UserFacingError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UserFacingError.swift; path = MatchLiveTv/Core/UserFacingError.swift; sourceTree = ""; }; - E14CA2E05DE7400C852121AD /* ApiDtos.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiDtos.swift; path = MatchLiveTv/Data/API/ApiDtos.swift; sourceTree = ""; }; - BD1CEFBFF4D54361A4C3B4D2 /* MatchLiveAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveAPI.swift; path = MatchLiveTv/Data/API/MatchLiveAPI.swift; sourceTree = ""; }; - 66C7207107804520B8B87462 /* AppContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppContainer.swift; path = MatchLiveTv/Data/AppContainer.swift; sourceTree = ""; }; - BE6E2D81675945268458DEE8 /* ActionCableClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActionCableClient.swift; path = MatchLiveTv/Data/Cable/ActionCableClient.swift; sourceTree = ""; }; - E902041CF4A04479B72760FE /* SessionCableService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionCableService.swift; path = MatchLiveTv/Data/Cable/SessionCableService.swift; sourceTree = ""; }; - 4AE94D0FE137473D8821B0E3 /* AuthRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AuthRepository.swift; path = MatchLiveTv/Data/Repository/AuthRepository.swift; sourceTree = ""; }; - 8D20E18A8913489FABFBFFB5 /* MatchRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchRepository.swift; path = MatchLiveTv/Data/Repository/MatchRepository.swift; sourceTree = ""; }; - BDDCAF6027D24CB2B273A3D6 /* MatchSessionLauncher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSessionLauncher.swift; path = MatchLiveTv/Data/Repository/MatchSessionLauncher.swift; sourceTree = ""; }; - 2A5CCF3B585A4095941A6B21 /* ScoreRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreRepository.swift; path = MatchLiveTv/Data/Repository/ScoreRepository.swift; sourceTree = ""; }; - 4436BE62A6004577BE8356C1 /* SessionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionRepository.swift; path = MatchLiveTv/Data/Repository/SessionRepository.swift; sourceTree = ""; }; - CF167DF2CBC14C2A97D49C1D /* ScoreController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreController.swift; path = MatchLiveTv/Data/Scoring/ScoreController.swift; sourceTree = ""; }; - 0BE371ACB29A48DF928B90DD /* WizardSessionHolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardSessionHolder.swift; path = MatchLiveTv/Data/WizardSessionHolder.swift; sourceTree = ""; }; - 73A8C9597075432FB3DFCFFA /* MatchHubFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchHubFilter.swift; path = MatchLiveTv/Domain/MatchHubFilter.swift; sourceTree = ""; }; - 116561D032ED4DF8A4174E59 /* MatchScoringRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRules.swift; path = MatchLiveTv/Domain/MatchScoringRules.swift; sourceTree = ""; }; - AC559FEC305D475CA3F1DB21 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Models.swift; path = MatchLiveTv/Domain/Models.swift; sourceTree = ""; }; - 3247EDBBC6114F269C89736C /* ScoreState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreState.swift; path = MatchLiveTv/Domain/ScoreState.swift; sourceTree = ""; }; - 15B20863445A4EC28321DBFF /* BroadcastModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastModels.swift; path = MatchLiveTv/Streaming/BroadcastModels.swift; sourceTree = ""; }; - 51B7115C3000422A8DCA41ED /* LiveBroadcastCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinator.swift; path = MatchLiveTv/Streaming/LiveBroadcastCoordinator.swift; sourceTree = ""; }; - 7A433A01B5BB4FE0B8E51234 /* LiveBroadcastEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastEngine.swift; path = MatchLiveTv/Streaming/LiveBroadcastEngine.swift; sourceTree = ""; }; - C296D6280BCD4DC0BB467CC1 /* CompactScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CompactScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/CompactScoreboardElement.swift; sourceTree = ""; }; - 3F851B63647B4122A2753EBD /* OverlayCanvasRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayCanvasRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayCanvasRenderer.swift; sourceTree = ""; }; - 420794A1247149B7B931DAEA /* OverlayLogoCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayLogoCache.swift; path = MatchLiveTv/Streaming/Overlay/OverlayLogoCache.swift; sourceTree = ""; }; - 48C5D1CE81864C2FBB3188EA /* OverlayMappings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayMappings.swift; path = MatchLiveTv/Streaming/Overlay/OverlayMappings.swift; sourceTree = ""; }; - 228DEA0D7B0D48D6BED86141 /* OverlayRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayRenderer.swift; sourceTree = ""; }; - 0F9F57E16B374D3AB379C1FF /* OverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayState.swift; path = MatchLiveTv/Streaming/Overlay/OverlayState.swift; sourceTree = ""; }; - 0ED2AA45ECFA4193ACC31063 /* ScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/ScoreboardElement.swift; sourceTree = ""; }; - 1F2B2A3AC4C948038C03E8BB /* SponsorElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SponsorElement.swift; path = MatchLiveTv/Streaming/Overlay/SponsorElement.swift; sourceTree = ""; }; - 3465550280DE4F5E8D485F69 /* WatermarkElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WatermarkElement.swift; path = MatchLiveTv/Streaming/Overlay/WatermarkElement.swift; sourceTree = ""; }; - 42A4881EE59B42FEB7749122 /* LivePreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LivePreviewView.swift; path = MatchLiveTv/Streaming/Preview/LivePreviewView.swift; sourceTree = ""; }; - 2B7C7A905479455F98F00DC3 /* BroadcastControlsOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastControlsOverlay.swift; path = MatchLiveTv/UI/Broadcast/BroadcastControlsOverlay.swift; sourceTree = ""; }; - 8EBF7DD17E77419A83DC0496 /* BroadcastScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastScreen.swift; path = MatchLiveTv/UI/Broadcast/BroadcastScreen.swift; sourceTree = ""; }; - 2F0BE30BA75440D5B0A0F9A6 /* LiveScoreActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreActions.swift; path = MatchLiveTv/UI/Broadcast/LiveScoreActions.swift; sourceTree = ""; }; - 1EDDB8ABF0ED4F24A5932D18 /* MatchLiveWordmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveWordmark.swift; path = MatchLiveTv/UI/Components/MatchLiveWordmark.swift; sourceTree = ""; }; - F2D8C0FDD5EB4A3792E4D32E /* MatchPrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchPrimaryButton.swift; path = MatchLiveTv/UI/Components/MatchPrimaryButton.swift; sourceTree = ""; }; - BDCE69667BE74DB9AF3E29E8 /* MatchScreenScaffold.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScreenScaffold.swift; path = MatchLiveTv/UI/Components/MatchScreenScaffold.swift; sourceTree = ""; }; - 6E72DCB8E06D42038B6E8B69 /* MatchSecondaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSecondaryButton.swift; path = MatchLiveTv/UI/Components/MatchSecondaryButton.swift; sourceTree = ""; }; - DC49A86D45D745E297107891 /* MatchStatusBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchStatusBadge.swift; path = MatchLiveTv/UI/Components/MatchStatusBadge.swift; sourceTree = ""; }; - 456228041D2F44E99258698B /* LoginScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LoginScreen.swift; path = MatchLiveTv/UI/Login/LoginScreen.swift; sourceTree = ""; }; - 6C792176D0544EED87B303C0 /* MatchesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchesScreen.swift; path = MatchLiveTv/UI/Matches/MatchesScreen.swift; sourceTree = ""; }; - ED410204E5694627AEA787DD /* AppNavHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppNavHost.swift; path = MatchLiveTv/UI/Navigation/AppNavHost.swift; sourceTree = ""; }; - EFF711C0619445C3944D3442 /* ModalRoutes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ModalRoutes.swift; path = MatchLiveTv/UI/Navigation/ModalRoutes.swift; sourceTree = ""; }; - 98EA33F31CE34BC88EC99E64 /* Routes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Routes.swift; path = MatchLiveTv/UI/Navigation/Routes.swift; sourceTree = ""; }; - 097406CB65A24473B7F8A915 /* BroadcastPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastPermissions.swift; path = MatchLiveTv/UI/Permissions/BroadcastPermissions.swift; sourceTree = ""; }; - F18D3BA8A2604783AFA7BADC /* SplashScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SplashScreen.swift; path = MatchLiveTv/UI/Splash/SplashScreen.swift; sourceTree = ""; }; - 8CF22D513753479E96E37546 /* KeepScreenOn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = KeepScreenOn.swift; path = MatchLiveTv/UI/System/KeepScreenOn.swift; sourceTree = ""; }; - 3C42C3E8D4D24A6EBC8A140F /* ScreenOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScreenOrientation.swift; path = MatchLiveTv/UI/System/ScreenOrientation.swift; sourceTree = ""; }; - AED45F6291AC4F7FB7B31393 /* MatchColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchColors.swift; path = MatchLiveTv/UI/Theme/MatchColors.swift; sourceTree = ""; }; - E4A2CDEC380147D89E36B359 /* StepMatchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepMatchScreen.swift; path = MatchLiveTv/UI/Wizard/StepMatchScreen.swift; sourceTree = ""; }; - 4E0B262FA3774D72901529E8 /* StepNetworkTestScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepNetworkTestScreen.swift; path = MatchLiveTv/UI/Wizard/StepNetworkTestScreen.swift; sourceTree = ""; }; - 00F0EEBEE0C642FAB6298D79 /* StepTransmissionScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepTransmissionScreen.swift; path = MatchLiveTv/UI/Wizard/StepTransmissionScreen.swift; sourceTree = ""; }; - 64C5CD27F7354DDB9A7FCC5F /* TeamBrandingEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamBrandingEditor.swift; path = MatchLiveTv/UI/Wizard/TeamBrandingEditor.swift; sourceTree = ""; }; - EC0F495A7A484769ADA89E96 /* TeamColorPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamColorPicker.swift; path = MatchLiveTv/UI/Wizard/TeamColorPicker.swift; sourceTree = ""; }; - A768FA73B328428EAC69BF16 /* WizardComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardComponents.swift; path = MatchLiveTv/UI/Wizard/WizardComponents.swift; sourceTree = ""; }; - 5B9EE57FDB9148A4B541B8CF /* WizardShellScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardShellScreen.swift; path = MatchLiveTv/UI/Wizard/WizardShellScreen.swift; sourceTree = ""; }; - 2540D3CA40CC4181B3D4AFF3 /* ApiInstantTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstantTests.swift; path = MatchLiveTvTests/ApiInstantTests.swift; sourceTree = ""; }; - CD155C0D547D4495B9E6308A /* MatchScoringRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRulesTests.swift; path = MatchLiveTvTests/MatchScoringRulesTests.swift; sourceTree = ""; }; - 42D318A6B43D4D4A898DBBE0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = MatchLiveTv/Resources/Assets.xcassets; sourceTree = ""; }; - 82B310B2B49243A296C9C581 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = MatchLiveTv/Resources/Info.plist; sourceTree = ""; }; - A42C110EE8DB4ECC893951AD /* MatchLiveTv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MatchLiveTv.app; sourceTree = BUILT_PRODUCTS_DIR; }; - CA19230D3F7D4C6A95406F87 /* MatchLiveTvTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MatchLiveTvTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 0B182AE2B64440FBAD820078 /* HaishinKit */ = {isa = XCSwiftPackageProductDependency; package = F80AB1FECA6A40798C87634A; productName = HaishinKit; }; - F0E1D34F0B3545A99C3EF141 /* RTMPHaishinKit */ = {isa = XCSwiftPackageProductDependency; package = F80AB1FECA6A40798C87634A; productName = RTMPHaishinKit; }; - C43733BB396340269131C87F /* MatchLiveTvApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B23ED0F23434BC3A23B142F /* MatchLiveTvApp.swift */; }; - 3879FE4999AD42D29DD88BC9 /* ApiInstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7A94757D18C46C9821833B7 /* ApiInstant.swift */; }; - F9B0B951CC0E45F3AD9E17AE /* AppConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1443F18A02BB4890A01A56F9 /* AppConfig.swift */; }; - FDC36E1F2673422E9F09A84D /* ColorHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = E717B8A6A51E499490C0334B /* ColorHex.swift */; }; - 9BF13DD9192942E8A69CD50B /* DeviceTelemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6A356C81724C51BF41C25D /* DeviceTelemetry.swift */; }; - 82F9B0A9BD714835A41E20CE /* MediaUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC18E1BC596E42DBB8BBBBFD /* MediaUrl.swift */; }; - 6A6460E2BBBA44C6964B2281 /* TokenStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3DCAD32C3F24439A75920C1 /* TokenStore.swift */; }; - 09C3F7CBE03C479FB3E4D484 /* UserFacingError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4B5CF0BD5534CF7BE51E3CB /* UserFacingError.swift */; }; - 882F9D01445F454BBBF95AAE /* ApiDtos.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14CA2E05DE7400C852121AD /* ApiDtos.swift */; }; - A9C47B24D37C48D59221AB15 /* MatchLiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD1CEFBFF4D54361A4C3B4D2 /* MatchLiveAPI.swift */; }; - E45FC9EC93854268B13B2814 /* AppContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66C7207107804520B8B87462 /* AppContainer.swift */; }; - 035C3532E9224C11A63DE8D0 /* ActionCableClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE6E2D81675945268458DEE8 /* ActionCableClient.swift */; }; - BD0F196EE104494FA4959E43 /* SessionCableService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E902041CF4A04479B72760FE /* SessionCableService.swift */; }; - E16AD6EDD2E34A1BB16942CC /* AuthRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AE94D0FE137473D8821B0E3 /* AuthRepository.swift */; }; - 4D58338481074C47B177E866 /* MatchRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D20E18A8913489FABFBFFB5 /* MatchRepository.swift */; }; - 5B0F3899F7B14F84AEF5CADA /* MatchSessionLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDDCAF6027D24CB2B273A3D6 /* MatchSessionLauncher.swift */; }; - 535A5DC767124965A7E6ED4D /* ScoreRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A5CCF3B585A4095941A6B21 /* ScoreRepository.swift */; }; - 1C27C8DFDE544D75B1D49507 /* SessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4436BE62A6004577BE8356C1 /* SessionRepository.swift */; }; - 8F6BCEEF9168476FBA147FD3 /* ScoreController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF167DF2CBC14C2A97D49C1D /* ScoreController.swift */; }; - A2BFF50DA9294532A2F6D52B /* WizardSessionHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BE371ACB29A48DF928B90DD /* WizardSessionHolder.swift */; }; - A5EA10DEDBB34A4A95243C8A /* MatchHubFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73A8C9597075432FB3DFCFFA /* MatchHubFilter.swift */; }; - 71857E5125D14E0BAC132C3B /* MatchScoringRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 116561D032ED4DF8A4174E59 /* MatchScoringRules.swift */; }; - 965F2CEB66984469BD3BB2F6 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC559FEC305D475CA3F1DB21 /* Models.swift */; }; - 6247A346FC674616A8833D87 /* ScoreState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3247EDBBC6114F269C89736C /* ScoreState.swift */; }; - 21F2A3C208DA4D9A8D8A2AD0 /* BroadcastModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15B20863445A4EC28321DBFF /* BroadcastModels.swift */; }; - C1967324B50641B1AAA7153D /* LiveBroadcastCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B7115C3000422A8DCA41ED /* LiveBroadcastCoordinator.swift */; }; - 6A39E943F02842819BA0F11D /* LiveBroadcastEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A433A01B5BB4FE0B8E51234 /* LiveBroadcastEngine.swift */; }; - 456274BB9DFA482EB52A77FF /* CompactScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = C296D6280BCD4DC0BB467CC1 /* CompactScoreboardElement.swift */; }; - FFF0200A28BD4C55BF288A04 /* OverlayCanvasRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F851B63647B4122A2753EBD /* OverlayCanvasRenderer.swift */; }; - EED95CFC9C044C46B8C748E8 /* OverlayLogoCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 420794A1247149B7B931DAEA /* OverlayLogoCache.swift */; }; - 196A4353FEBF48FB8086B6C3 /* OverlayMappings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48C5D1CE81864C2FBB3188EA /* OverlayMappings.swift */; }; - 73067AA8AEFA446C898CBB36 /* OverlayRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 228DEA0D7B0D48D6BED86141 /* OverlayRenderer.swift */; }; - AD747FCF7E8A40FB8FB0C09D /* OverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F9F57E16B374D3AB379C1FF /* OverlayState.swift */; }; - 4A2583194D364768910F0A2E /* ScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED2AA45ECFA4193ACC31063 /* ScoreboardElement.swift */; }; - 63FB60603C30400A9412B97A /* SponsorElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2B2A3AC4C948038C03E8BB /* SponsorElement.swift */; }; - 476CEF2BD80A4F5ABAF4BF8F /* WatermarkElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3465550280DE4F5E8D485F69 /* WatermarkElement.swift */; }; - E2B229D77E7B4B0EB3E20F3A /* LivePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42A4881EE59B42FEB7749122 /* LivePreviewView.swift */; }; - 455B81C72AAC40269A4B4EDE /* BroadcastControlsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B7C7A905479455F98F00DC3 /* BroadcastControlsOverlay.swift */; }; - 2E49953E828A4F1A87AF47AF /* BroadcastScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EBF7DD17E77419A83DC0496 /* BroadcastScreen.swift */; }; - 87870520F2C5472DBEF4FAA0 /* LiveScoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F0BE30BA75440D5B0A0F9A6 /* LiveScoreActions.swift */; }; - 7F20ADEFF13D42EB969FA227 /* MatchLiveWordmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EDDB8ABF0ED4F24A5932D18 /* MatchLiveWordmark.swift */; }; - F05637D278B04B9E9F914685 /* MatchPrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2D8C0FDD5EB4A3792E4D32E /* MatchPrimaryButton.swift */; }; - 05E7701D345F47A48EB3B1A8 /* MatchScreenScaffold.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDCE69667BE74DB9AF3E29E8 /* MatchScreenScaffold.swift */; }; - D0CA4D05E24D44B48662A467 /* MatchSecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E72DCB8E06D42038B6E8B69 /* MatchSecondaryButton.swift */; }; - 093B423F42B840AC8DC4BBFE /* MatchStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC49A86D45D745E297107891 /* MatchStatusBadge.swift */; }; - 6478C806699D4AF3AB895AC6 /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 456228041D2F44E99258698B /* LoginScreen.swift */; }; - E981731C73724090B93301FC /* MatchesScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C792176D0544EED87B303C0 /* MatchesScreen.swift */; }; - D7EF5FD3160546A18B1F3268 /* AppNavHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED410204E5694627AEA787DD /* AppNavHost.swift */; }; - DE2C6A8E89FF4C019599320F /* ModalRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF711C0619445C3944D3442 /* ModalRoutes.swift */; }; - FC4AD7E92B4248BF8D440AB5 /* Routes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98EA33F31CE34BC88EC99E64 /* Routes.swift */; }; - 08FB4930AAC1443B8A6AA17A /* BroadcastPermissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097406CB65A24473B7F8A915 /* BroadcastPermissions.swift */; }; - AA896C55DB9741B78A173671 /* SplashScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = F18D3BA8A2604783AFA7BADC /* SplashScreen.swift */; }; - F2C1D718393C4A7695FE56CD /* KeepScreenOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CF22D513753479E96E37546 /* KeepScreenOn.swift */; }; - C06B35642D68409788DAC85F /* ScreenOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C42C3E8D4D24A6EBC8A140F /* ScreenOrientation.swift */; }; - CA27CA0592C1459AA5895B03 /* MatchColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = AED45F6291AC4F7FB7B31393 /* MatchColors.swift */; }; - 0D790785EC384F4F999DF393 /* StepMatchScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4A2CDEC380147D89E36B359 /* StepMatchScreen.swift */; }; - 33D5A9835E1C476FA513CD7B /* StepNetworkTestScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E0B262FA3774D72901529E8 /* StepNetworkTestScreen.swift */; }; - 16773703D9B34B4D99E37DAB /* StepTransmissionScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00F0EEBEE0C642FAB6298D79 /* StepTransmissionScreen.swift */; }; - 439C3F3C9E8E4512AAE9A6F9 /* TeamBrandingEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C5CD27F7354DDB9A7FCC5F /* TeamBrandingEditor.swift */; }; - 1895A7F0D8A04AB086C8B0E0 /* TeamColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0F495A7A484769ADA89E96 /* TeamColorPicker.swift */; }; - E606392321674632B0B5A9C3 /* WizardComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = A768FA73B328428EAC69BF16 /* WizardComponents.swift */; }; - 437D99BC2B8446CA87766221 /* WizardShellScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B9EE57FDB9148A4B541B8CF /* WizardShellScreen.swift */; }; - 76DE047F93C0417FB8D60984 /* ApiInstantTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2540D3CA40CC4181B3D4AFF3 /* ApiInstantTests.swift */; }; - AB9147175A564C9B848A5E43 /* MatchScoringRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD155C0D547D4495B9E6308A /* MatchScoringRulesTests.swift */; }; - 9392A07F3B5343F4BE8538C9 /* Assets in Resources */ = {isa = PBXBuildFile; fileRef = 42D318A6B43D4D4A898DBBE0; }; - 7AE60FABDB154D8286A2902F = {isa = PBXGroup; children = (25BA0F6BCD6248C8B1090B10, 9CDEE1193E594846AF90F5A3, CECA644368B34BD1AF81B7D4); sourceTree = ""; }; - 25BA0F6BCD6248C8B1090B10 = {isa = PBXGroup; children = (5B23ED0F23434BC3A23B142F, D7A94757D18C46C9821833B7, 1443F18A02BB4890A01A56F9, E717B8A6A51E499490C0334B, 6E6A356C81724C51BF41C25D, DC18E1BC596E42DBB8BBBBFD, C3DCAD32C3F24439A75920C1, B4B5CF0BD5534CF7BE51E3CB, E14CA2E05DE7400C852121AD, BD1CEFBFF4D54361A4C3B4D2, 66C7207107804520B8B87462, BE6E2D81675945268458DEE8, E902041CF4A04479B72760FE, 4AE94D0FE137473D8821B0E3, 8D20E18A8913489FABFBFFB5, BDDCAF6027D24CB2B273A3D6, 2A5CCF3B585A4095941A6B21, 4436BE62A6004577BE8356C1, CF167DF2CBC14C2A97D49C1D, 0BE371ACB29A48DF928B90DD, 73A8C9597075432FB3DFCFFA, 116561D032ED4DF8A4174E59, AC559FEC305D475CA3F1DB21, 3247EDBBC6114F269C89736C, 15B20863445A4EC28321DBFF, 51B7115C3000422A8DCA41ED, 7A433A01B5BB4FE0B8E51234, C296D6280BCD4DC0BB467CC1, 3F851B63647B4122A2753EBD, 420794A1247149B7B931DAEA, 48C5D1CE81864C2FBB3188EA, 228DEA0D7B0D48D6BED86141, 0F9F57E16B374D3AB379C1FF, 0ED2AA45ECFA4193ACC31063, 1F2B2A3AC4C948038C03E8BB, 3465550280DE4F5E8D485F69, 42A4881EE59B42FEB7749122, 2B7C7A905479455F98F00DC3, 8EBF7DD17E77419A83DC0496, 2F0BE30BA75440D5B0A0F9A6, 1EDDB8ABF0ED4F24A5932D18, F2D8C0FDD5EB4A3792E4D32E, BDCE69667BE74DB9AF3E29E8, 6E72DCB8E06D42038B6E8B69, DC49A86D45D745E297107891, 456228041D2F44E99258698B, 6C792176D0544EED87B303C0, ED410204E5694627AEA787DD, EFF711C0619445C3944D3442, 98EA33F31CE34BC88EC99E64, 097406CB65A24473B7F8A915, F18D3BA8A2604783AFA7BADC, 8CF22D513753479E96E37546, 3C42C3E8D4D24A6EBC8A140F, AED45F6291AC4F7FB7B31393, E4A2CDEC380147D89E36B359, 4E0B262FA3774D72901529E8, 00F0EEBEE0C642FAB6298D79, 64C5CD27F7354DDB9A7FCC5F, EC0F495A7A484769ADA89E96, A768FA73B328428EAC69BF16, 5B9EE57FDB9148A4B541B8CF, 42D318A6B43D4D4A898DBBE0, 82B310B2B49243A296C9C581); name = MatchLiveTv; sourceTree = ""; }; - 9CDEE1193E594846AF90F5A3 = {isa = PBXGroup; children = (2540D3CA40CC4181B3D4AFF3, CD155C0D547D4495B9E6308A); name = MatchLiveTvTests; sourceTree = ""; }; - CECA644368B34BD1AF81B7D4 = {isa = PBXGroup; children = (A42C110EE8DB4ECC893951AD, CA19230D3F7D4C6A95406F87); name = Products; sourceTree = ""; }; - 75685F0D94844D25990466AB = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (C43733BB396340269131C87F, 3879FE4999AD42D29DD88BC9, F9B0B951CC0E45F3AD9E17AE, FDC36E1F2673422E9F09A84D, 9BF13DD9192942E8A69CD50B, 82F9B0A9BD714835A41E20CE, 6A6460E2BBBA44C6964B2281, 09C3F7CBE03C479FB3E4D484, 882F9D01445F454BBBF95AAE, A9C47B24D37C48D59221AB15, E45FC9EC93854268B13B2814, 035C3532E9224C11A63DE8D0, BD0F196EE104494FA4959E43, E16AD6EDD2E34A1BB16942CC, 4D58338481074C47B177E866, 5B0F3899F7B14F84AEF5CADA, 535A5DC767124965A7E6ED4D, 1C27C8DFDE544D75B1D49507, 8F6BCEEF9168476FBA147FD3, A2BFF50DA9294532A2F6D52B, A5EA10DEDBB34A4A95243C8A, 71857E5125D14E0BAC132C3B, 965F2CEB66984469BD3BB2F6, 6247A346FC674616A8833D87, 21F2A3C208DA4D9A8D8A2AD0, C1967324B50641B1AAA7153D, 6A39E943F02842819BA0F11D, 456274BB9DFA482EB52A77FF, FFF0200A28BD4C55BF288A04, EED95CFC9C044C46B8C748E8, 196A4353FEBF48FB8086B6C3, 73067AA8AEFA446C898CBB36, AD747FCF7E8A40FB8FB0C09D, 4A2583194D364768910F0A2E, 63FB60603C30400A9412B97A, 476CEF2BD80A4F5ABAF4BF8F, E2B229D77E7B4B0EB3E20F3A, 455B81C72AAC40269A4B4EDE, 2E49953E828A4F1A87AF47AF, 87870520F2C5472DBEF4FAA0, 7F20ADEFF13D42EB969FA227, F05637D278B04B9E9F914685, 05E7701D345F47A48EB3B1A8, D0CA4D05E24D44B48662A467, 093B423F42B840AC8DC4BBFE, 6478C806699D4AF3AB895AC6, E981731C73724090B93301FC, D7EF5FD3160546A18B1F3268, DE2C6A8E89FF4C019599320F, FC4AD7E92B4248BF8D440AB5, 08FB4930AAC1443B8A6AA17A, AA896C55DB9741B78A173671, F2C1D718393C4A7695FE56CD, C06B35642D68409788DAC85F, CA27CA0592C1459AA5895B03, 0D790785EC384F4F999DF393, 33D5A9835E1C476FA513CD7B, 16773703D9B34B4D99E37DAB, 439C3F3C9E8E4512AAE9A6F9, 1895A7F0D8A04AB086C8B0E0, E606392321674632B0B5A9C3, 437D99BC2B8446CA87766221); runOnlyForDeploymentPostprocessing = 0; }; - BC137E765FCA41FB85A944F8 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (76DE047F93C0417FB8D60984, AB9147175A564C9B848A5E43); runOnlyForDeploymentPostprocessing = 0; }; - E2036A7DDA8F4F7491399F71 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (9392A07F3B5343F4BE8538C9); runOnlyForDeploymentPostprocessing = 0; }; - ECE339972AA84978AE88BB46 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; }; - 1C9A61B330DB4A6AA59CFEF4 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; }; - 9773A4B6329B4CD2AA4CA51D = {isa = XCBuildConfiguration; buildSettings = { + 7D502D6BFF584BE097F441D3 /* MatchLiveTvApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveTvApp.swift; path = MatchLiveTv/App/MatchLiveTvApp.swift; sourceTree = ""; }; + E4D928872F8A45FAAFFF9F98 /* ApiInstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstant.swift; path = MatchLiveTv/Core/ApiInstant.swift; sourceTree = ""; }; + 6FD1683477F947CB9C4B32A1 /* AppConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppConfig.swift; path = MatchLiveTv/Core/AppConfig.swift; sourceTree = ""; }; + EE19BA76641848B8A6BD66BC /* ColorHex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ColorHex.swift; path = MatchLiveTv/Core/ColorHex.swift; sourceTree = ""; }; + 674D4E0891724CCC9A530996 /* DeviceTelemetry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DeviceTelemetry.swift; path = MatchLiveTv/Core/DeviceTelemetry.swift; sourceTree = ""; }; + F11E75C58605479AB24D6BAB /* MediaUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediaUrl.swift; path = MatchLiveTv/Core/MediaUrl.swift; sourceTree = ""; }; + DF7B53044B9B40D5A23F7077 /* TokenStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TokenStore.swift; path = MatchLiveTv/Core/TokenStore.swift; sourceTree = ""; }; + 0FCD7AFD6FBA45B78CEC748E /* UserFacingError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UserFacingError.swift; path = MatchLiveTv/Core/UserFacingError.swift; sourceTree = ""; }; + 72E47488A16B4FA49C74FFA6 /* ApiDtos.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiDtos.swift; path = MatchLiveTv/Data/API/ApiDtos.swift; sourceTree = ""; }; + 0E4851454F9C4D6C9A2BD946 /* MatchLiveAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveAPI.swift; path = MatchLiveTv/Data/API/MatchLiveAPI.swift; sourceTree = ""; }; + 13CFC4001F3641138379CF77 /* AppContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppContainer.swift; path = MatchLiveTv/Data/AppContainer.swift; sourceTree = ""; }; + 416D9D0EE1414F0BA98EBC33 /* ActionCableClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActionCableClient.swift; path = MatchLiveTv/Data/Cable/ActionCableClient.swift; sourceTree = ""; }; + C2342D3CB2C146799098D05F /* SessionCableService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionCableService.swift; path = MatchLiveTv/Data/Cable/SessionCableService.swift; sourceTree = ""; }; + 1C23153FA47E4274AA87A136 /* AuthRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AuthRepository.swift; path = MatchLiveTv/Data/Repository/AuthRepository.swift; sourceTree = ""; }; + EC76170D739A414EA1F7261B /* MatchRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchRepository.swift; path = MatchLiveTv/Data/Repository/MatchRepository.swift; sourceTree = ""; }; + 100C4F0504D8457D94089ED8 /* MatchSessionLauncher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSessionLauncher.swift; path = MatchLiveTv/Data/Repository/MatchSessionLauncher.swift; sourceTree = ""; }; + C649A4EC60774AA7829C6AC4 /* ScoreRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreRepository.swift; path = MatchLiveTv/Data/Repository/ScoreRepository.swift; sourceTree = ""; }; + 616A0E114FE44B5782179A50 /* SessionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionRepository.swift; path = MatchLiveTv/Data/Repository/SessionRepository.swift; sourceTree = ""; }; + F2DD2DA40C21451287827C77 /* ScoreController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreController.swift; path = MatchLiveTv/Data/Scoring/ScoreController.swift; sourceTree = ""; }; + DB66A0A42AD54E48929F5A9E /* WizardSessionHolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardSessionHolder.swift; path = MatchLiveTv/Data/WizardSessionHolder.swift; sourceTree = ""; }; + C991BA285472411FA0819BA6 /* MatchHubFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchHubFilter.swift; path = MatchLiveTv/Domain/MatchHubFilter.swift; sourceTree = ""; }; + F2F260C1D8C44A7DBF26C88C /* MatchScoringRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRules.swift; path = MatchLiveTv/Domain/MatchScoringRules.swift; sourceTree = ""; }; + B91FAB0CE884433BAF90CB87 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Models.swift; path = MatchLiveTv/Domain/Models.swift; sourceTree = ""; }; + C981A70741504FED997BF8A2 /* ScoreState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreState.swift; path = MatchLiveTv/Domain/ScoreState.swift; sourceTree = ""; }; + E9990A92AB0546B3B77B9A8B /* BroadcastModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastModels.swift; path = MatchLiveTv/Streaming/BroadcastModels.swift; sourceTree = ""; }; + A23145A497C4494AB5901FB4 /* LiveBroadcastCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinator.swift; path = MatchLiveTv/Streaming/LiveBroadcastCoordinator.swift; sourceTree = ""; }; + BF15F363ED4D4466B543226D /* LiveBroadcastEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastEngine.swift; path = MatchLiveTv/Streaming/LiveBroadcastEngine.swift; sourceTree = ""; }; + 423A409037C7408088DADC76 /* CompactScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CompactScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/CompactScoreboardElement.swift; sourceTree = ""; }; + 82B588D9B7844FDFB600D9DF /* OverlayCanvasRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayCanvasRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayCanvasRenderer.swift; sourceTree = ""; }; + DD63A5AFF02A4D32902606FA /* OverlayLogoCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayLogoCache.swift; path = MatchLiveTv/Streaming/Overlay/OverlayLogoCache.swift; sourceTree = ""; }; + 50DD7B3855C74DA291286184 /* OverlayMappings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayMappings.swift; path = MatchLiveTv/Streaming/Overlay/OverlayMappings.swift; sourceTree = ""; }; + CCB366E93584429F8EB8151D /* OverlayRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayRenderer.swift; sourceTree = ""; }; + E2F9E7C71E4844498BA95A56 /* OverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayState.swift; path = MatchLiveTv/Streaming/Overlay/OverlayState.swift; sourceTree = ""; }; + 024982C1D4A84A5389A7BCF6 /* ScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/ScoreboardElement.swift; sourceTree = ""; }; + DAE19ACACBBA424AB844674E /* SponsorElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SponsorElement.swift; path = MatchLiveTv/Streaming/Overlay/SponsorElement.swift; sourceTree = ""; }; + 5342C88D12634E0894FD16E9 /* WatermarkElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WatermarkElement.swift; path = MatchLiveTv/Streaming/Overlay/WatermarkElement.swift; sourceTree = ""; }; + 691D1DF008404C29AC5925BC /* LivePreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LivePreviewView.swift; path = MatchLiveTv/Streaming/Preview/LivePreviewView.swift; sourceTree = ""; }; + B56AB91CBBA842A183DD04C9 /* BroadcastControlsOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastControlsOverlay.swift; path = MatchLiveTv/UI/Broadcast/BroadcastControlsOverlay.swift; sourceTree = ""; }; + 2801B8D684B440858B32ABB0 /* BroadcastScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastScreen.swift; path = MatchLiveTv/UI/Broadcast/BroadcastScreen.swift; sourceTree = ""; }; + 3C2797E56C8B4857A7FA2880 /* LiveScoreActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreActions.swift; path = MatchLiveTv/UI/Broadcast/LiveScoreActions.swift; sourceTree = ""; }; + 1D23B0386B9F487F8AA597D3 /* MatchLiveWordmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveWordmark.swift; path = MatchLiveTv/UI/Components/MatchLiveWordmark.swift; sourceTree = ""; }; + 03F2473246C84F41BCD355C2 /* MatchPrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchPrimaryButton.swift; path = MatchLiveTv/UI/Components/MatchPrimaryButton.swift; sourceTree = ""; }; + 8CA4423F75F74FBFAE533080 /* MatchScreenScaffold.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScreenScaffold.swift; path = MatchLiveTv/UI/Components/MatchScreenScaffold.swift; sourceTree = ""; }; + 854ABA49A0D547B9AEB910B4 /* MatchSecondaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSecondaryButton.swift; path = MatchLiveTv/UI/Components/MatchSecondaryButton.swift; sourceTree = ""; }; + 3C3A2E7E20EB4F2DB5712369 /* MatchStatusBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchStatusBadge.swift; path = MatchLiveTv/UI/Components/MatchStatusBadge.swift; sourceTree = ""; }; + 42AD3B662EC5485082D5741F /* LoginScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LoginScreen.swift; path = MatchLiveTv/UI/Login/LoginScreen.swift; sourceTree = ""; }; + EFB4B3068F404B3EB5A0FF1F /* MatchesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchesScreen.swift; path = MatchLiveTv/UI/Matches/MatchesScreen.swift; sourceTree = ""; }; + 5014F0820E6B40F6B34DC51A /* AppNavHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppNavHost.swift; path = MatchLiveTv/UI/Navigation/AppNavHost.swift; sourceTree = ""; }; + CEE1BFA4FF76445790FF6560 /* ModalRoutes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ModalRoutes.swift; path = MatchLiveTv/UI/Navigation/ModalRoutes.swift; sourceTree = ""; }; + 3ECB25032A93474288F2FBA7 /* Routes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Routes.swift; path = MatchLiveTv/UI/Navigation/Routes.swift; sourceTree = ""; }; + 2337F10A7DDA4E619DB37E82 /* BroadcastPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastPermissions.swift; path = MatchLiveTv/UI/Permissions/BroadcastPermissions.swift; sourceTree = ""; }; + 833350AF23F6419A90E317F8 /* SplashScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SplashScreen.swift; path = MatchLiveTv/UI/Splash/SplashScreen.swift; sourceTree = ""; }; + 316F29E465194CACB8947EAF /* KeepScreenOn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = KeepScreenOn.swift; path = MatchLiveTv/UI/System/KeepScreenOn.swift; sourceTree = ""; }; + 1ADC984335A743A0ACDB409F /* ScreenOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScreenOrientation.swift; path = MatchLiveTv/UI/System/ScreenOrientation.swift; sourceTree = ""; }; + 116E4DA20AC043D9B6A9CE6D /* MatchColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchColors.swift; path = MatchLiveTv/UI/Theme/MatchColors.swift; sourceTree = ""; }; + 8E0E99517ABF4F99B08F3705 /* StepMatchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepMatchScreen.swift; path = MatchLiveTv/UI/Wizard/StepMatchScreen.swift; sourceTree = ""; }; + D2A79ECE8FCA4DF88EC6DE4F /* StepNetworkTestScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepNetworkTestScreen.swift; path = MatchLiveTv/UI/Wizard/StepNetworkTestScreen.swift; sourceTree = ""; }; + D1A38D2697E34F55B9240A8A /* StepTransmissionScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepTransmissionScreen.swift; path = MatchLiveTv/UI/Wizard/StepTransmissionScreen.swift; sourceTree = ""; }; + 0BEC22E0D4E242828468572E /* TeamBrandingEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamBrandingEditor.swift; path = MatchLiveTv/UI/Wizard/TeamBrandingEditor.swift; sourceTree = ""; }; + EF2B79415AC6441CB2735D4D /* TeamColorPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamColorPicker.swift; path = MatchLiveTv/UI/Wizard/TeamColorPicker.swift; sourceTree = ""; }; + 94E4E688B3154A7C9791E72C /* WizardComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardComponents.swift; path = MatchLiveTv/UI/Wizard/WizardComponents.swift; sourceTree = ""; }; + E8B92AF2FADC4DE7B2A6D000 /* WizardShellScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardShellScreen.swift; path = MatchLiveTv/UI/Wizard/WizardShellScreen.swift; sourceTree = ""; }; + F390918CBBD54AAEB0647D47 /* ApiInstantTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstantTests.swift; path = MatchLiveTvTests/ApiInstantTests.swift; sourceTree = ""; }; + F4D6CD1E29934B5D97D2F02E /* MatchScoringRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRulesTests.swift; path = MatchLiveTvTests/MatchScoringRulesTests.swift; sourceTree = ""; }; + 402D4D4F22DB49678F3E6FE7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = MatchLiveTv/Resources/Assets.xcassets; sourceTree = ""; }; + 044C9EE056CF444E9E98D3A6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = MatchLiveTv/Resources/Info.plist; sourceTree = ""; }; + D28494E6896F4E25A06AE11E /* MatchLiveTv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MatchLiveTv.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1D8E2905DD6E42479BC4C10E /* MatchLiveTvTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MatchLiveTvTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DFA66CC46F824DCF9A20211C /* HaishinKit */ = {isa = XCSwiftPackageProductDependency; package = 80244AADE65A4F05B29ECFB5; productName = HaishinKit; }; + 7CD46223721F489E8F2981D8 /* RTMPHaishinKit */ = {isa = XCSwiftPackageProductDependency; package = 80244AADE65A4F05B29ECFB5; productName = RTMPHaishinKit; }; + EC02F9C46D3E4C1088D88F8A /* MatchLiveTvApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D502D6BFF584BE097F441D3 /* MatchLiveTvApp.swift */; }; + 8BDFE8DE8206441A8D094C2E /* ApiInstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4D928872F8A45FAAFFF9F98 /* ApiInstant.swift */; }; + 7B8856F51ECA47EDAC0D0F9E /* AppConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FD1683477F947CB9C4B32A1 /* AppConfig.swift */; }; + AD61B798C741478E86CF0F21 /* ColorHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE19BA76641848B8A6BD66BC /* ColorHex.swift */; }; + BC44270E1DB54A9EA94AF25C /* DeviceTelemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 674D4E0891724CCC9A530996 /* DeviceTelemetry.swift */; }; + 13268DA8F54B4835BD433426 /* MediaUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = F11E75C58605479AB24D6BAB /* MediaUrl.swift */; }; + 32D039D1037C4D4E826C5967 /* TokenStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF7B53044B9B40D5A23F7077 /* TokenStore.swift */; }; + 0713AAA3C14B4D76BCDFD2E0 /* UserFacingError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FCD7AFD6FBA45B78CEC748E /* UserFacingError.swift */; }; + 54951F21D9EE48719961E4D2 /* ApiDtos.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72E47488A16B4FA49C74FFA6 /* ApiDtos.swift */; }; + 139F79D283B1472E9DBA09A0 /* MatchLiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E4851454F9C4D6C9A2BD946 /* MatchLiveAPI.swift */; }; + 308C38EE4912489495844906 /* AppContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13CFC4001F3641138379CF77 /* AppContainer.swift */; }; + 51D03DC2F67F47E1ACE13C62 /* ActionCableClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416D9D0EE1414F0BA98EBC33 /* ActionCableClient.swift */; }; + 06BCCCDE5EEE4420965A8AD9 /* SessionCableService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2342D3CB2C146799098D05F /* SessionCableService.swift */; }; + F6AD6F9866FD401CB3183B65 /* AuthRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C23153FA47E4274AA87A136 /* AuthRepository.swift */; }; + 53F020EB95F248EAB7B4F160 /* MatchRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC76170D739A414EA1F7261B /* MatchRepository.swift */; }; + D3683FB90FFF4F6BACDC48AA /* MatchSessionLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 100C4F0504D8457D94089ED8 /* MatchSessionLauncher.swift */; }; + 7BFD2334AFE748B6A1E41904 /* ScoreRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = C649A4EC60774AA7829C6AC4 /* ScoreRepository.swift */; }; + 243992F8BACE403D8901BC2D /* SessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 616A0E114FE44B5782179A50 /* SessionRepository.swift */; }; + 85768720CAA94956A4DAD2D1 /* ScoreController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2DD2DA40C21451287827C77 /* ScoreController.swift */; }; + C92AA21B3A384DC6AD6D6C3A /* WizardSessionHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB66A0A42AD54E48929F5A9E /* WizardSessionHolder.swift */; }; + D11A107F06F749F8909C2513 /* MatchHubFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C991BA285472411FA0819BA6 /* MatchHubFilter.swift */; }; + 9316E3BE6C394B90AC4C33BE /* MatchScoringRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2F260C1D8C44A7DBF26C88C /* MatchScoringRules.swift */; }; + 53B9E9BC594B4E5BB6FA7C86 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = B91FAB0CE884433BAF90CB87 /* Models.swift */; }; + 1C9EB4524E2D466A877785CA /* ScoreState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C981A70741504FED997BF8A2 /* ScoreState.swift */; }; + 5D2EFF9E1A444394AE8C4325 /* BroadcastModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9990A92AB0546B3B77B9A8B /* BroadcastModels.swift */; }; + F40F95B9AF0846CBA1D1E1D3 /* LiveBroadcastCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A23145A497C4494AB5901FB4 /* LiveBroadcastCoordinator.swift */; }; + 9BCFF862205B4275A845EDB1 /* LiveBroadcastEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF15F363ED4D4466B543226D /* LiveBroadcastEngine.swift */; }; + 125330B419C94948942351D7 /* CompactScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 423A409037C7408088DADC76 /* CompactScoreboardElement.swift */; }; + 534D7ACB2128436CA844E53B /* OverlayCanvasRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82B588D9B7844FDFB600D9DF /* OverlayCanvasRenderer.swift */; }; + 24EABF4A150546E4BC7F6C32 /* OverlayLogoCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD63A5AFF02A4D32902606FA /* OverlayLogoCache.swift */; }; + B4FC8CF476D44C32912FAD70 /* OverlayMappings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50DD7B3855C74DA291286184 /* OverlayMappings.swift */; }; + 83D733D7DBEE4374B1374074 /* OverlayRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCB366E93584429F8EB8151D /* OverlayRenderer.swift */; }; + 7D60112C22DA49C1B57A6AED /* OverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2F9E7C71E4844498BA95A56 /* OverlayState.swift */; }; + DDC4E6E4080040D595B53D94 /* ScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 024982C1D4A84A5389A7BCF6 /* ScoreboardElement.swift */; }; + 5D696DC51A334778BA8044A8 /* SponsorElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAE19ACACBBA424AB844674E /* SponsorElement.swift */; }; + 0C1792555BFD40EC84E093F5 /* WatermarkElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5342C88D12634E0894FD16E9 /* WatermarkElement.swift */; }; + F52ED96B71C3448E9E6A93F6 /* LivePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 691D1DF008404C29AC5925BC /* LivePreviewView.swift */; }; + 76BC7C34AB3E4B2DAEACFB89 /* BroadcastControlsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56AB91CBBA842A183DD04C9 /* BroadcastControlsOverlay.swift */; }; + 75E1FAC00E944A789974476C /* BroadcastScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2801B8D684B440858B32ABB0 /* BroadcastScreen.swift */; }; + 88CD8E2D7D684BE6BBC9EF7D /* LiveScoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C2797E56C8B4857A7FA2880 /* LiveScoreActions.swift */; }; + 10085C82FD204FA1A6727CE5 /* MatchLiveWordmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D23B0386B9F487F8AA597D3 /* MatchLiveWordmark.swift */; }; + CFB328FB535446608F6AA4B7 /* MatchPrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03F2473246C84F41BCD355C2 /* MatchPrimaryButton.swift */; }; + 5A2D0215E89F4D0692B60FA8 /* MatchScreenScaffold.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CA4423F75F74FBFAE533080 /* MatchScreenScaffold.swift */; }; + 4B8C519BF65F435C9AF58902 /* MatchSecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 854ABA49A0D547B9AEB910B4 /* MatchSecondaryButton.swift */; }; + 41DD9BBB13FB4CFD87C940F8 /* MatchStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C3A2E7E20EB4F2DB5712369 /* MatchStatusBadge.swift */; }; + 4DBBB1020F2A4CD090740ECA /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42AD3B662EC5485082D5741F /* LoginScreen.swift */; }; + 25DB8C2F0DCD40A6BF38E7D3 /* MatchesScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFB4B3068F404B3EB5A0FF1F /* MatchesScreen.swift */; }; + DCEF4209679541628926D50D /* AppNavHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5014F0820E6B40F6B34DC51A /* AppNavHost.swift */; }; + B5F397173C1D437DB12CA85B /* ModalRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE1BFA4FF76445790FF6560 /* ModalRoutes.swift */; }; + 8CEE2254C44F49B48FE4E3CE /* Routes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ECB25032A93474288F2FBA7 /* Routes.swift */; }; + 8801885DF5CE4620BBFA1CBB /* BroadcastPermissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2337F10A7DDA4E619DB37E82 /* BroadcastPermissions.swift */; }; + 06DEA551887C423C834E39ED /* SplashScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 833350AF23F6419A90E317F8 /* SplashScreen.swift */; }; + 5F75111D35E84C22A6CB8C31 /* KeepScreenOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 316F29E465194CACB8947EAF /* KeepScreenOn.swift */; }; + 18A549FCA1AE4507B65A4BDD /* ScreenOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ADC984335A743A0ACDB409F /* ScreenOrientation.swift */; }; + 1535B18F8FEF446CB1FEAF74 /* MatchColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 116E4DA20AC043D9B6A9CE6D /* MatchColors.swift */; }; + 9493516ED98F487E9D70CABF /* StepMatchScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E0E99517ABF4F99B08F3705 /* StepMatchScreen.swift */; }; + BDC66B9F5AD34CA0BFDECE2C /* StepNetworkTestScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2A79ECE8FCA4DF88EC6DE4F /* StepNetworkTestScreen.swift */; }; + 0F35C68364F242929EB0C7A8 /* StepTransmissionScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1A38D2697E34F55B9240A8A /* StepTransmissionScreen.swift */; }; + D1659689E30C484BB31B93C4 /* TeamBrandingEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BEC22E0D4E242828468572E /* TeamBrandingEditor.swift */; }; + AA6C0D7D59AA46CFB3F362EC /* TeamColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF2B79415AC6441CB2735D4D /* TeamColorPicker.swift */; }; + D1304F69E9E7458980E7A5AE /* WizardComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94E4E688B3154A7C9791E72C /* WizardComponents.swift */; }; + CA3858060106420BBD5AA150 /* WizardShellScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8B92AF2FADC4DE7B2A6D000 /* WizardShellScreen.swift */; }; + 3B9B059CA0A9476EBA98FF2F /* ApiInstantTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F390918CBBD54AAEB0647D47 /* ApiInstantTests.swift */; }; + D3B351AAB75F4996BC381BB6 /* MatchScoringRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D6CD1E29934B5D97D2F02E /* MatchScoringRulesTests.swift */; }; + AC6319A132F34CD4AE4D0460 /* Assets in Resources */ = {isa = PBXBuildFile; fileRef = 402D4D4F22DB49678F3E6FE7; }; + CBBB3E15BBAD4B658EA9D569 = {isa = PBXGroup; children = (458DC3A81348480A8BFF1C2F, 413A6469A5994B779B5D9CE9, 1B1C9B9F983C4571AD8488D4); sourceTree = ""; }; + 458DC3A81348480A8BFF1C2F = {isa = PBXGroup; children = (7D502D6BFF584BE097F441D3, E4D928872F8A45FAAFFF9F98, 6FD1683477F947CB9C4B32A1, EE19BA76641848B8A6BD66BC, 674D4E0891724CCC9A530996, F11E75C58605479AB24D6BAB, DF7B53044B9B40D5A23F7077, 0FCD7AFD6FBA45B78CEC748E, 72E47488A16B4FA49C74FFA6, 0E4851454F9C4D6C9A2BD946, 13CFC4001F3641138379CF77, 416D9D0EE1414F0BA98EBC33, C2342D3CB2C146799098D05F, 1C23153FA47E4274AA87A136, EC76170D739A414EA1F7261B, 100C4F0504D8457D94089ED8, C649A4EC60774AA7829C6AC4, 616A0E114FE44B5782179A50, F2DD2DA40C21451287827C77, DB66A0A42AD54E48929F5A9E, C991BA285472411FA0819BA6, F2F260C1D8C44A7DBF26C88C, B91FAB0CE884433BAF90CB87, C981A70741504FED997BF8A2, E9990A92AB0546B3B77B9A8B, A23145A497C4494AB5901FB4, BF15F363ED4D4466B543226D, 423A409037C7408088DADC76, 82B588D9B7844FDFB600D9DF, DD63A5AFF02A4D32902606FA, 50DD7B3855C74DA291286184, CCB366E93584429F8EB8151D, E2F9E7C71E4844498BA95A56, 024982C1D4A84A5389A7BCF6, DAE19ACACBBA424AB844674E, 5342C88D12634E0894FD16E9, 691D1DF008404C29AC5925BC, B56AB91CBBA842A183DD04C9, 2801B8D684B440858B32ABB0, 3C2797E56C8B4857A7FA2880, 1D23B0386B9F487F8AA597D3, 03F2473246C84F41BCD355C2, 8CA4423F75F74FBFAE533080, 854ABA49A0D547B9AEB910B4, 3C3A2E7E20EB4F2DB5712369, 42AD3B662EC5485082D5741F, EFB4B3068F404B3EB5A0FF1F, 5014F0820E6B40F6B34DC51A, CEE1BFA4FF76445790FF6560, 3ECB25032A93474288F2FBA7, 2337F10A7DDA4E619DB37E82, 833350AF23F6419A90E317F8, 316F29E465194CACB8947EAF, 1ADC984335A743A0ACDB409F, 116E4DA20AC043D9B6A9CE6D, 8E0E99517ABF4F99B08F3705, D2A79ECE8FCA4DF88EC6DE4F, D1A38D2697E34F55B9240A8A, 0BEC22E0D4E242828468572E, EF2B79415AC6441CB2735D4D, 94E4E688B3154A7C9791E72C, E8B92AF2FADC4DE7B2A6D000, 402D4D4F22DB49678F3E6FE7, 044C9EE056CF444E9E98D3A6); name = MatchLiveTv; sourceTree = ""; }; + 413A6469A5994B779B5D9CE9 = {isa = PBXGroup; children = (F390918CBBD54AAEB0647D47, F4D6CD1E29934B5D97D2F02E); name = MatchLiveTvTests; sourceTree = ""; }; + 1B1C9B9F983C4571AD8488D4 = {isa = PBXGroup; children = (D28494E6896F4E25A06AE11E, 1D8E2905DD6E42479BC4C10E); name = Products; sourceTree = ""; }; + F7A341AD112F40069CF86FD6 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (EC02F9C46D3E4C1088D88F8A, 8BDFE8DE8206441A8D094C2E, 7B8856F51ECA47EDAC0D0F9E, AD61B798C741478E86CF0F21, BC44270E1DB54A9EA94AF25C, 13268DA8F54B4835BD433426, 32D039D1037C4D4E826C5967, 0713AAA3C14B4D76BCDFD2E0, 54951F21D9EE48719961E4D2, 139F79D283B1472E9DBA09A0, 308C38EE4912489495844906, 51D03DC2F67F47E1ACE13C62, 06BCCCDE5EEE4420965A8AD9, F6AD6F9866FD401CB3183B65, 53F020EB95F248EAB7B4F160, D3683FB90FFF4F6BACDC48AA, 7BFD2334AFE748B6A1E41904, 243992F8BACE403D8901BC2D, 85768720CAA94956A4DAD2D1, C92AA21B3A384DC6AD6D6C3A, D11A107F06F749F8909C2513, 9316E3BE6C394B90AC4C33BE, 53B9E9BC594B4E5BB6FA7C86, 1C9EB4524E2D466A877785CA, 5D2EFF9E1A444394AE8C4325, F40F95B9AF0846CBA1D1E1D3, 9BCFF862205B4275A845EDB1, 125330B419C94948942351D7, 534D7ACB2128436CA844E53B, 24EABF4A150546E4BC7F6C32, B4FC8CF476D44C32912FAD70, 83D733D7DBEE4374B1374074, 7D60112C22DA49C1B57A6AED, DDC4E6E4080040D595B53D94, 5D696DC51A334778BA8044A8, 0C1792555BFD40EC84E093F5, F52ED96B71C3448E9E6A93F6, 76BC7C34AB3E4B2DAEACFB89, 75E1FAC00E944A789974476C, 88CD8E2D7D684BE6BBC9EF7D, 10085C82FD204FA1A6727CE5, CFB328FB535446608F6AA4B7, 5A2D0215E89F4D0692B60FA8, 4B8C519BF65F435C9AF58902, 41DD9BBB13FB4CFD87C940F8, 4DBBB1020F2A4CD090740ECA, 25DB8C2F0DCD40A6BF38E7D3, DCEF4209679541628926D50D, B5F397173C1D437DB12CA85B, 8CEE2254C44F49B48FE4E3CE, 8801885DF5CE4620BBFA1CBB, 06DEA551887C423C834E39ED, 5F75111D35E84C22A6CB8C31, 18A549FCA1AE4507B65A4BDD, 1535B18F8FEF446CB1FEAF74, 9493516ED98F487E9D70CABF, BDC66B9F5AD34CA0BFDECE2C, 0F35C68364F242929EB0C7A8, D1659689E30C484BB31B93C4, AA6C0D7D59AA46CFB3F362EC, D1304F69E9E7458980E7A5AE, CA3858060106420BBD5AA150); runOnlyForDeploymentPostprocessing = 0; }; + 80C627F33BA84D3CA773051A = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (3B9B059CA0A9476EBA98FF2F, D3B351AAB75F4996BC381BB6); runOnlyForDeploymentPostprocessing = 0; }; + 6D5FE4DF497646A4AE97C6BF = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (AC6319A132F34CD4AE4D0460); runOnlyForDeploymentPostprocessing = 0; }; + 8DA7499F824E4935BDED6CBC = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; }; + E9B2E37AC12D4AB087998F8D = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; }; + DA38CD9FFE6747869F6CDDC2 = {isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 21; @@ -165,12 +165,13 @@ MARKETING_VERSION = 2.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.matchlivetv.match-live-tv; PRODUCT_NAME = "$(TARGET_NAME)"; + API_BASE_URL = "https://www.matchlivetv.it"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; ENABLE_TESTABILITY = YES; }; name = Debug; }; - C101F6805BCD491CBA3F987D = {isa = XCBuildConfiguration; buildSettings = { + 9E05E72AB8714F77936FEE82 = {isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 21; @@ -187,10 +188,11 @@ MARKETING_VERSION = 2.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.matchlivetv.match-live-tv; PRODUCT_NAME = "$(TARGET_NAME)"; + API_BASE_URL = "https://www.matchlivetv.it"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; - D8F8880914704BA9B087EE7B = {isa = XCBuildConfiguration; buildSettings = { + 7805CB3AE2314A48A5A5CC9D = {isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 21; @@ -204,7 +206,7 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MatchLiveTv.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MatchLiveTv"; }; name = Debug; }; - 2627164A4CA343B2A4C15A2E = {isa = XCBuildConfiguration; buildSettings = { + 9869C88802314492A8E9FFFF = {isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 21; @@ -218,17 +220,17 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MatchLiveTv.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MatchLiveTv"; }; name = Release; }; - 7BD2F8EE33E8434AB17CE373 = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Debug; }; - 68B5EA19B4E24E5D968BF94C = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Release; }; - 6ED2FEB21E7E44408B6A0677 = {isa = XCConfigurationList; buildConfigurations = (9773A4B6329B4CD2AA4CA51D, C101F6805BCD491CBA3F987D); defaultConfigurationName = Release; }; - EB832D1A0EA94AE69A6F2B98 = {isa = XCConfigurationList; buildConfigurations = (D8F8880914704BA9B087EE7B, 2627164A4CA343B2A4C15A2E); defaultConfigurationName = Release; }; - 8683854CF3914406BD918C9D = {isa = XCConfigurationList; buildConfigurations = (7BD2F8EE33E8434AB17CE373, 68B5EA19B4E24E5D968BF94C); defaultConfigurationName = Release; }; - ACA5F32E253C473B9AD5D069 = {isa = PBXNativeTarget; buildConfigurationList = 6ED2FEB21E7E44408B6A0677; buildPhases = (75685F0D94844D25990466AB, ECE339972AA84978AE88BB46, E2036A7DDA8F4F7491399F71); buildRules = (); dependencies = (); name = MatchLiveTv; packageProductDependencies = (0B182AE2B64440FBAD820078, F0E1D34F0B3545A99C3EF141); productName = MatchLiveTv; productReference = A42C110EE8DB4ECC893951AD; productType = "com.apple.product-type.application"; }; - 8BE99E481DB24808AD87CDAA = {isa = PBXContainerItemProxy; containerPortal = 715925D32BC14CF8A5A9128B /* Project object */; proxyType = 1; remoteGlobalIDString = ACA5F32E253C473B9AD5D069; remoteInfo = MatchLiveTv; }; - 056ABE5A2CDA4D3E88485D37 = {isa = PBXTargetDependency; target = ACA5F32E253C473B9AD5D069 /* MatchLiveTv */; targetProxy = 8BE99E481DB24808AD87CDAA /* PBXContainerItemProxy */; }; - A5EE823E98D34E7CB20F3F9E = {isa = PBXNativeTarget; buildConfigurationList = EB832D1A0EA94AE69A6F2B98; buildPhases = (BC137E765FCA41FB85A944F8, 1C9A61B330DB4A6AA59CFEF4); buildRules = (); dependencies = (056ABE5A2CDA4D3E88485D37); name = MatchLiveTvTests; productName = MatchLiveTvTests; productReference = CA19230D3F7D4C6A95406F87; productType = "com.apple.product-type.bundle.unit-test"; }; - F80AB1FECA6A40798C87634A = {isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/shogo4405/HaishinKit.swift"; requirement = {kind = upToNextMajorVersion; minimumVersion = 2.0.0;}; }; - 715925D32BC14CF8A5A9128B = {isa = PBXProject; attributes = {BuildIndependentTargetsInParallel = 0; LastSwiftUpdateCheck = 1600;}; buildConfigurationList = 8683854CF3914406BD918C9D; compatibilityVersion = "Xcode 15.0"; developmentRegion = it; mainGroup = 7AE60FABDB154D8286A2902F; packageReferences = (F80AB1FECA6A40798C87634A); productRefGroup = CECA644368B34BD1AF81B7D4; targets = (ACA5F32E253C473B9AD5D069, A5EE823E98D34E7CB20F3F9E); }; + 33F5448B1E1349E2BAA5E3AE = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Debug; }; + D72B6CA2A24E4AC09A0B782D = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Release; }; + 75B30A2BA25E4139B5005285 = {isa = XCConfigurationList; buildConfigurations = (DA38CD9FFE6747869F6CDDC2, 9E05E72AB8714F77936FEE82); defaultConfigurationName = Release; }; + 01C6C81B18A7474DBD247E7A = {isa = XCConfigurationList; buildConfigurations = (7805CB3AE2314A48A5A5CC9D, 9869C88802314492A8E9FFFF); defaultConfigurationName = Release; }; + A30B7C4ACC1F47769F89A326 = {isa = XCConfigurationList; buildConfigurations = (33F5448B1E1349E2BAA5E3AE, D72B6CA2A24E4AC09A0B782D); defaultConfigurationName = Release; }; + DC6F777098DA4A41A83135DA = {isa = PBXNativeTarget; buildConfigurationList = 75B30A2BA25E4139B5005285; buildPhases = (F7A341AD112F40069CF86FD6, 8DA7499F824E4935BDED6CBC, 6D5FE4DF497646A4AE97C6BF); buildRules = (); dependencies = (); name = MatchLiveTv; packageProductDependencies = (DFA66CC46F824DCF9A20211C, 7CD46223721F489E8F2981D8); productName = MatchLiveTv; productReference = D28494E6896F4E25A06AE11E; productType = "com.apple.product-type.application"; }; + C445B2BC555541D7B69EB55F = {isa = PBXContainerItemProxy; containerPortal = 6E081DDA594D416BB8A07BE6 /* Project object */; proxyType = 1; remoteGlobalIDString = DC6F777098DA4A41A83135DA; remoteInfo = MatchLiveTv; }; + F804FB6411E24621B8A73A8F = {isa = PBXTargetDependency; target = DC6F777098DA4A41A83135DA /* MatchLiveTv */; targetProxy = C445B2BC555541D7B69EB55F /* PBXContainerItemProxy */; }; + 4BD1D70CB43840E58D45DF29 = {isa = PBXNativeTarget; buildConfigurationList = 01C6C81B18A7474DBD247E7A; buildPhases = (80C627F33BA84D3CA773051A, E9B2E37AC12D4AB087998F8D); buildRules = (); dependencies = (F804FB6411E24621B8A73A8F); name = MatchLiveTvTests; productName = MatchLiveTvTests; productReference = 1D8E2905DD6E42479BC4C10E; productType = "com.apple.product-type.bundle.unit-test"; }; + 80244AADE65A4F05B29ECFB5 = {isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/shogo4405/HaishinKit.swift"; requirement = {kind = upToNextMajorVersion; minimumVersion = 2.0.0;}; }; + 6E081DDA594D416BB8A07BE6 = {isa = PBXProject; attributes = {BuildIndependentTargetsInParallel = 0; LastSwiftUpdateCheck = 1600;}; buildConfigurationList = A30B7C4ACC1F47769F89A326; compatibilityVersion = "Xcode 15.0"; developmentRegion = it; mainGroup = CBBB3E15BBAD4B658EA9D569; packageReferences = (80244AADE65A4F05B29ECFB5); productRefGroup = 1B1C9B9F983C4571AD8488D4; targets = (DC6F777098DA4A41A83135DA, 4BD1D70CB43840E58D45DF29); }; }; - rootObject = 715925D32BC14CF8A5A9128B /* Project object */; + rootObject = 6E081DDA594D416BB8A07BE6 /* Project object */; } diff --git a/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme b/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme index 96ebad4..6136466 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/Resources/Info.plist b/native/ios/MatchLiveTv/Resources/Info.plist index ea82169..9c89af2 100644 --- a/native/ios/MatchLiveTv/Resources/Info.plist +++ b/native/ios/MatchLiveTv/Resources/Info.plist @@ -3,7 +3,7 @@ API_BASE_URL - https://www.matchlivetv.it + $(API_BASE_URL) CFBundleDevelopmentRegion it CFBundleDisplayName diff --git a/native/ios/generate_xcodeproj.py b/native/ios/generate_xcodeproj.py index 44b4685..9605bd1 100755 --- a/native/ios/generate_xcodeproj.py +++ b/native/ios/generate_xcodeproj.py @@ -95,6 +95,7 @@ app_settings = """ MARKETING_VERSION = 2.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.matchlivetv.match-live-tv; PRODUCT_NAME = "$(TARGET_NAME)"; + API_BASE_URL = "https://www.matchlivetv.it"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; """ diff --git a/scripts/e2e_ios_simulator.sh b/scripts/e2e_ios_simulator.sh new file mode 100755 index 0000000..c6a92bf --- /dev/null +++ b/scripts/e2e_ios_simulator.sh @@ -0,0 +1,104 @@ +#!/usr/bin/env bash +# E2E iOS: build Debug sul simulatore, API locale, smoke Riprendi diretta + close_set. +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +IOS_DIR="$ROOT/native/ios" +API="${API:-http://localhost:3000}" +SIM_ID="${SIM_ID:-48A837E2-845E-4043-B168-B8D4FDCAAE21}" +DERIVED="$IOS_DIR/build/DerivedData" + +cd "$IOS_DIR" +python3 generate_xcodeproj.py + +echo "== Build simulatore (API=$API) ==" +xcodebuild \ + -project MatchLiveTv.xcodeproj \ + -scheme MatchLiveTv \ + -destination "platform=iOS Simulator,id=$SIM_ID" \ + -derivedDataPath "$DERIVED" \ + -configuration Debug \ + API_BASE_URL="$API" \ + ONLY_ACTIVE_ARCH=YES ARCHS=arm64 EXCLUDED_ARCHS=x86_64 \ + build 2>&1 | tail -5 + +APP="$DERIVED/Build/Products/Debug-iphonesimulator/MatchLiveTv.app" +test -d "$APP" + +echo "== Install + launch ==" +xcrun simctl install "$SIM_ID" "$APP" +xcrun simctl launch "$SIM_ID" com.matchlivetv.match-live-tv + +echo "== API: sessione live + score volley + Riprendi diretta ==" +LOGIN=$(curl -sf -X POST "$API/api/v1/auth/login" \ + -H "Content-Type: application/json" \ + -d '{"email":"coach@matchlivetv.test","password":"password123"}') +TOKEN=$(echo "$LOGIN" | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])") +AUTH="Authorization: Bearer $TOKEN" + +TEAM_ID=$(curl -sf -H "$AUTH" "$API/api/v1/teams" | python3 -c "import sys,json; print(json.load(sys.stdin)[0]['id'])") + +# Libera slot diretta concorrente (limite piano dev) +while read -r SID; do + [[ -n "$SID" ]] && curl -sf -X PATCH -H "$AUTH" "$API/api/v1/sessions/$SID/stop" > /dev/null || true +done < <(curl -sf -H "$AUTH" "$API/api/v1/teams/$TEAM_ID/matches" | python3 -c " +import sys, json +for m in json.load(sys.stdin): + sid = m.get('active_session_id') + if sid: + print(sid) +") + +MATCH=$(curl -sf -X POST -H "$AUTH" -H "Content-Type: application/json" \ + "$API/api/v1/teams/$TEAM_ID/matches" \ + -d '{"opponent_name":"E2E iOS","sport_key":"pallavolo"}') +MATCH_ID=$(echo "$MATCH" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])") + +SESSION=$(curl -sf -X POST -H "$AUTH" -H "Content-Type: application/json" \ + "$API/api/v1/matches/$MATCH_ID/sessions" \ + -d '{"platform":"matchlivetv","privacy_status":"unlisted","quality_preset":"720p_30_2.5mbps"}') +SESSION_ID=$(echo "$SESSION" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])") +curl -sf -X PATCH -H "$AUTH" "$API/api/v1/sessions/$SESSION_ID/start" > /dev/null + +# Porta il tabellone a 26-12 +for _ in $(seq 1 26); do + curl -sf -X POST -H "$AUTH" -H "Content-Type: application/json" \ + "$API/api/v1/sessions/$SESSION_ID/score_action" \ + -d '{"score_action":"home_point"}' > /dev/null +done +for _ in $(seq 1 12); do + curl -sf -X POST -H "$AUTH" -H "Content-Type: application/json" \ + "$API/api/v1/sessions/$SESSION_ID/score_action" \ + -d '{"score_action":"away_point"}' > /dev/null +done + +CLOSE=$(curl -sf -X POST -H "$AUTH" -H "Content-Type: application/json" \ + "$API/api/v1/sessions/$SESSION_ID/score_action" \ + -d '{"score_action":"close_set"}') + +python3 - <