X-Git-Url: https://git.r.bdr.sh/rbdr/map/blobdiff_plain/5e8ff4850c4827125fe12788dd5b153c4f636f48..f93215a7b37e065a0a52a852bb2c35d2a3d77b0b:/Map.xcodeproj/project.pbxproj?ds=inline diff --git a/Map.xcodeproj/project.pbxproj b/Map.xcodeproj/project.pbxproj index 275bb9e..7dc8883 100644 --- a/Map.xcodeproj/project.pbxproj +++ b/Map.xcodeproj/project.pbxproj @@ -3,108 +3,135 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ - B523C73D25C98D9800C44061 /* NSImage+writePNG.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C73C25C98D9800C44061 /* NSImage+writePNG.swift */; }; - B523C74625C9BD3500C44061 /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B523C74525C9BD3500C44061 /* CloudKit.framework */; }; - B523C74B25C9C1BA00C44061 /* DefaultMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C74A25C9C1BA00C44061 /* DefaultMapView.swift */; }; - B523C75A25C9FD4900C44061 /* MapAxes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C75925C9FD4900C44061 /* MapAxes.swift */; }; - B523C76225CA05A300C44061 /* MapStages.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C76125CA05A300C44061 /* MapStages.swift */; }; - B523C76725CA071B00C44061 /* MapVertices.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C76625CA071B00C44061 /* MapVertices.swift */; }; - B523C76C25CA0DFA00C44061 /* MapEdges.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C76B25CA0DFA00C44061 /* MapEdges.swift */; }; - B523C77125CA121300C44061 /* MapBlockers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C77025CA121300C44061 /* MapBlockers.swift */; }; - B523C77625CA181100C44061 /* MapColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C77525CA181100C44061 /* MapColor.swift */; }; - B523C77E25CA294C00C44061 /* MapOpportunities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C77D25CA294C00C44061 /* MapOpportunities.swift */; }; - B526257225C874F9003E73B7 /* MapApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526257125C874F9003E73B7 /* MapApp.swift */; }; - B526257425C874F9003E73B7 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526257325C874F9003E73B7 /* ContentView.swift */; }; - B526257625C874FA003E73B7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B526257525C874FA003E73B7 /* Assets.xcassets */; }; - B526257925C874FA003E73B7 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B526257825C874FA003E73B7 /* Preview Assets.xcassets */; }; - B526257B25C874FA003E73B7 /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526257A25C874FA003E73B7 /* Persistence.swift */; }; - B526257E25C874FA003E73B7 /* Map.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B526257C25C874FA003E73B7 /* Map.xcdatamodeld */; }; - B526258A25C874FA003E73B7 /* MapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526258925C874FA003E73B7 /* MapTests.swift */; }; - B526259525C874FA003E73B7 /* MapUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526259425C874FA003E73B7 /* MapUITests.swift */; }; - B52625A625C876C3003E73B7 /* MapDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625A525C876C3003E73B7 /* MapDetail.swift */; }; - B52625AB25C87909003E73B7 /* Date+format.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625AA25C87909003E73B7 /* Date+format.swift */; }; - B52625B025C87C14003E73B7 /* MapRender.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625AF25C87C14003E73B7 /* MapRender.swift */; }; - B52625BB25C884C2003E73B7 /* Map+parse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625BA25C884C2003E73B7 /* Map+parse.swift */; }; - B52625C625C8BD2A003E73B7 /* Stage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625C525C8BD2A003E73B7 /* Stage.swift */; }; - B539516C25CB0C9300959F72 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = B539516B25CB0C9200959F72 /* Store.swift */; }; - B539517425CB0CA400959F72 /* AppState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B539517325CB0CA400959F72 /* AppState.swift */; }; - B539518125CB2D7A00959F72 /* MapTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B539518025CB2D7A00959F72 /* MapTextEditor.swift */; }; + B5012E3F2C96232A00AC4D68 /* EvolutionPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E3E2C96232300AC4D68 /* EvolutionPicker.swift */; }; + B5012E422C96235E00AC4D68 /* Stage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E412C96235B00AC4D68 /* Stage.swift */; }; + B5012E452C9623C700AC4D68 /* Font+theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E442C9623C500AC4D68 /* Font+theme.swift */; }; + B5012E472C96243C00AC4D68 /* MapTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E462C96243500AC4D68 /* MapTextEditor.swift */; }; + B5012E492C96245B00AC4D68 /* Color+theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E482C96245800AC4D68 /* Color+theme.swift */; }; + B5012E4B2C96246F00AC4D68 /* NSColor+theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E4A2C96246D00AC4D68 /* NSColor+theme.swift */; }; + B5012E572C96249400AC4D68 /* NoteParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E4D2C96249400AC4D68 /* NoteParserStrategy.swift */; }; + B5012E582C96249400AC4D68 /* BlockerParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E4F2C96249400AC4D68 /* BlockerParserStrategy.swift */; }; + B5012E592C96249400AC4D68 /* VertexParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E4C2C96249400AC4D68 /* VertexParserStrategy.swift */; }; + B5012E5A2C96249400AC4D68 /* MapParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E532C96249400AC4D68 /* MapParser.swift */; }; + B5012E5B2C96249400AC4D68 /* OpportunityParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E502C96249400AC4D68 /* OpportunityParserStrategy.swift */; }; + B5012E5C2C96249400AC4D68 /* EdgeParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E4E2C96249400AC4D68 /* EdgeParserStrategy.swift */; }; + B5012E5D2C96249400AC4D68 /* StageParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E512C96249400AC4D68 /* StageParserStrategy.swift */; }; + B5012E5E2C96249400AC4D68 /* Debouncer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E552C96249400AC4D68 /* Debouncer.swift */; }; + B5012E622C96254700AC4D68 /* MapRenderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E5F2C96254700AC4D68 /* MapRenderView.swift */; }; + B5012E6B2C96255A00AC4D68 /* MapAxes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E632C96255A00AC4D68 /* MapAxes.swift */; }; + B5012E6C2C96255A00AC4D68 /* MapVertices.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E652C96255A00AC4D68 /* MapVertices.swift */; }; + B5012E6D2C96255A00AC4D68 /* MapStages.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E642C96255A00AC4D68 /* MapStages.swift */; }; + B5012E6E2C96255A00AC4D68 /* MapNotes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E662C96255A00AC4D68 /* MapNotes.swift */; }; + B5012E6F2C96255A00AC4D68 /* MapEdges.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E672C96255A00AC4D68 /* MapEdges.swift */; }; + B5012E702C96255A00AC4D68 /* MapOpportunities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E692C96255A00AC4D68 /* MapOpportunities.swift */; }; + B5012E712C96255A00AC4D68 /* MapBlockers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E682C96255A00AC4D68 /* MapBlockers.swift */; }; + B5012E742C9625E200AC4D68 /* Patterns in Frameworks */ = {isa = PBXBuildFile; productRef = B5012E732C9625E200AC4D68 /* Patterns */; }; + B5012E7A2C96F02F00AC4D68 /* Dimensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E792C96F02E00AC4D68 /* Dimensions.swift */; }; + B5012E7C2C972B6C00AC4D68 /* GroupParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E7B2C972B6600AC4D68 /* GroupParserStrategy.swift */; }; + B5012E7F2C97315800AC4D68 /* ConcaveHull in Frameworks */ = {isa = PBXBuildFile; productRef = B5012E7E2C97315800AC4D68 /* ConcaveHull */; }; + B5012E812C97318600AC4D68 /* MapGroups.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E802C97318300AC4D68 /* MapGroups.swift */; }; + B5012E872C97874600AC4D68 /* MapGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E862C97874400AC4D68 /* MapGroup.swift */; }; + B5012E8A2C98235500AC4D68 /* MapCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E892C98235300AC4D68 /* MapCommands.swift */; }; + B5012E8C2C98244000AC4D68 /* ViewStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E8B2C98243E00AC4D68 /* ViewStyle.swift */; }; + B5012E8E2C9828D000AC4D68 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5012E8D2C9828CE00AC4D68 /* Constants.swift */; }; + B51A45F52C982FAE00870ED5 /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = B51A45F42C982FAE00870ED5 /* Sparkle */; }; + B51A45F72C982FEA00870ED5 /* UpdateCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51A45F62C982FE700870ED5 /* UpdateCommands.swift */; }; + B54587102C961E9C0067B788 /* MapApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B545870F2C961E9C0067B788 /* MapApp.swift */; }; + B54587122C961E9C0067B788 /* MapDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54587112C961E9C0067B788 /* MapDocument.swift */; }; + B54587142C961E9C0067B788 /* MapEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54587132C961E9C0067B788 /* MapEditor.swift */; }; + B54587162C961E9E0067B788 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B54587152C961E9E0067B788 /* Assets.xcassets */; }; + B54587192C961E9E0067B788 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B54587182C961E9E0067B788 /* Preview Assets.xcassets */; }; + B54587252C961E9E0067B788 /* MapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54587242C961E9E0067B788 /* MapTests.swift */; }; + B545872F2C961E9E0067B788 /* MapUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B545872E2C961E9E0067B788 /* MapUITests.swift */; }; + B54587312C961E9E0067B788 /* MapUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54587302C961E9E0067B788 /* MapUITestsLaunchTests.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - B526258625C874FA003E73B7 /* PBXContainerItemProxy */ = { + B54587212C961E9E0067B788 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = B526256625C874F9003E73B7 /* Project object */; + containerPortal = B54587042C961E9C0067B788 /* Project object */; proxyType = 1; - remoteGlobalIDString = B526256D25C874F9003E73B7; - remoteInfo = Map; + remoteGlobalIDString = B545870B2C961E9C0067B788; + remoteInfo = Map2; }; - B526259125C874FA003E73B7 /* PBXContainerItemProxy */ = { + B545872B2C961E9E0067B788 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = B526256625C874F9003E73B7 /* Project object */; + containerPortal = B54587042C961E9C0067B788 /* Project object */; proxyType = 1; - remoteGlobalIDString = B526256D25C874F9003E73B7; - remoteInfo = Map; + remoteGlobalIDString = B545870B2C961E9C0067B788; + remoteInfo = Map2; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - B523C73C25C98D9800C44061 /* NSImage+writePNG.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSImage+writePNG.swift"; sourceTree = ""; }; - B523C74525C9BD3500C44061 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; - B523C74A25C9C1BA00C44061 /* DefaultMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultMapView.swift; sourceTree = ""; }; - B523C75925C9FD4900C44061 /* MapAxes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapAxes.swift; sourceTree = ""; }; - B523C76125CA05A300C44061 /* MapStages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapStages.swift; sourceTree = ""; }; - B523C76625CA071B00C44061 /* MapVertices.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapVertices.swift; sourceTree = ""; }; - B523C76B25CA0DFA00C44061 /* MapEdges.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapEdges.swift; sourceTree = ""; }; - B523C77025CA121300C44061 /* MapBlockers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapBlockers.swift; sourceTree = ""; }; - B523C77525CA181100C44061 /* MapColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapColor.swift; sourceTree = ""; }; - B523C77D25CA294C00C44061 /* MapOpportunities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapOpportunities.swift; sourceTree = ""; }; - B526256E25C874F9003E73B7 /* Map.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Map.app; sourceTree = BUILT_PRODUCTS_DIR; }; - B526257125C874F9003E73B7 /* MapApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapApp.swift; sourceTree = ""; }; - B526257325C874F9003E73B7 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - B526257525C874FA003E73B7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - B526257825C874FA003E73B7 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - B526257A25C874FA003E73B7 /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = ""; }; - B526257D25C874FA003E73B7 /* Map.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Map.xcdatamodel; sourceTree = ""; }; - B526257F25C874FA003E73B7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B526258025C874FA003E73B7 /* Map.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Map.entitlements; sourceTree = ""; }; - B526258525C874FA003E73B7 /* MapTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MapTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - B526258925C874FA003E73B7 /* MapTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTests.swift; sourceTree = ""; }; - B526258B25C874FA003E73B7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B526259025C874FA003E73B7 /* MapUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MapUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - B526259425C874FA003E73B7 /* MapUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapUITests.swift; sourceTree = ""; }; - B526259625C874FA003E73B7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B52625A525C876C3003E73B7 /* MapDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapDetail.swift; sourceTree = ""; }; - B52625AA25C87909003E73B7 /* Date+format.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+format.swift"; sourceTree = ""; }; - B52625AF25C87C14003E73B7 /* MapRender.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapRender.swift; sourceTree = ""; }; - B52625BA25C884C2003E73B7 /* Map+parse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Map+parse.swift"; sourceTree = ""; }; - B52625C525C8BD2A003E73B7 /* Stage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stage.swift; sourceTree = ""; }; - B539516B25CB0C9200959F72 /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; - B539517325CB0CA400959F72 /* AppState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppState.swift; sourceTree = ""; }; - B539518025CB2D7A00959F72 /* MapTextEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTextEditor.swift; sourceTree = ""; }; + B5012E3E2C96232300AC4D68 /* EvolutionPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EvolutionPicker.swift; sourceTree = ""; }; + B5012E412C96235B00AC4D68 /* Stage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stage.swift; sourceTree = ""; }; + B5012E442C9623C500AC4D68 /* Font+theme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+theme.swift"; sourceTree = ""; }; + B5012E462C96243500AC4D68 /* MapTextEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTextEditor.swift; sourceTree = ""; }; + B5012E482C96245800AC4D68 /* Color+theme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+theme.swift"; sourceTree = ""; }; + B5012E4A2C96246D00AC4D68 /* NSColor+theme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+theme.swift"; sourceTree = ""; }; + B5012E4C2C96249400AC4D68 /* VertexParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VertexParserStrategy.swift; sourceTree = ""; }; + B5012E4D2C96249400AC4D68 /* NoteParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoteParserStrategy.swift; sourceTree = ""; }; + B5012E4E2C96249400AC4D68 /* EdgeParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EdgeParserStrategy.swift; sourceTree = ""; }; + B5012E4F2C96249400AC4D68 /* BlockerParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockerParserStrategy.swift; sourceTree = ""; }; + B5012E502C96249400AC4D68 /* OpportunityParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpportunityParserStrategy.swift; sourceTree = ""; }; + B5012E512C96249400AC4D68 /* StageParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StageParserStrategy.swift; sourceTree = ""; }; + B5012E532C96249400AC4D68 /* MapParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapParser.swift; sourceTree = ""; }; + B5012E552C96249400AC4D68 /* Debouncer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Debouncer.swift; sourceTree = ""; }; + B5012E5F2C96254700AC4D68 /* MapRenderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapRenderView.swift; sourceTree = ""; }; + B5012E632C96255A00AC4D68 /* MapAxes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapAxes.swift; sourceTree = ""; }; + B5012E642C96255A00AC4D68 /* MapStages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapStages.swift; sourceTree = ""; }; + B5012E652C96255A00AC4D68 /* MapVertices.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapVertices.swift; sourceTree = ""; }; + B5012E662C96255A00AC4D68 /* MapNotes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapNotes.swift; sourceTree = ""; }; + B5012E672C96255A00AC4D68 /* MapEdges.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapEdges.swift; sourceTree = ""; }; + B5012E682C96255A00AC4D68 /* MapBlockers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapBlockers.swift; sourceTree = ""; }; + B5012E692C96255A00AC4D68 /* MapOpportunities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapOpportunities.swift; sourceTree = ""; }; + B5012E792C96F02E00AC4D68 /* Dimensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dimensions.swift; sourceTree = ""; }; + B5012E7B2C972B6600AC4D68 /* GroupParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupParserStrategy.swift; sourceTree = ""; }; + B5012E802C97318300AC4D68 /* MapGroups.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapGroups.swift; sourceTree = ""; }; + B5012E862C97874400AC4D68 /* MapGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapGroup.swift; sourceTree = ""; }; + B5012E892C98235300AC4D68 /* MapCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapCommands.swift; sourceTree = ""; }; + B5012E8B2C98243E00AC4D68 /* ViewStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewStyle.swift; sourceTree = ""; }; + B5012E8D2C9828CE00AC4D68 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + B51A45F62C982FE700870ED5 /* UpdateCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateCommands.swift; sourceTree = ""; }; + B545870C2C961E9C0067B788 /* Map.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Map.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B545870F2C961E9C0067B788 /* MapApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapApp.swift; sourceTree = ""; }; + B54587112C961E9C0067B788 /* MapDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapDocument.swift; sourceTree = ""; }; + B54587132C961E9C0067B788 /* MapEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapEditor.swift; sourceTree = ""; }; + B54587152C961E9E0067B788 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + B54587182C961E9E0067B788 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + B545871A2C961E9E0067B788 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B545871B2C961E9E0067B788 /* Map.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Map.entitlements; sourceTree = ""; }; + B54587202C961E9E0067B788 /* MapTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MapTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + B54587242C961E9E0067B788 /* MapTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTests.swift; sourceTree = ""; }; + B545872A2C961E9E0067B788 /* Map2UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Map2UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + B545872E2C961E9E0067B788 /* MapUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapUITests.swift; sourceTree = ""; }; + B54587302C961E9E0067B788 /* MapUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapUITestsLaunchTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B526256B25C874F9003E73B7 /* Frameworks */ = { + B54587092C961E9C0067B788 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B523C74625C9BD3500C44061 /* CloudKit.framework in Frameworks */, + B51A45F52C982FAE00870ED5 /* Sparkle in Frameworks */, + B5012E742C9625E200AC4D68 /* Patterns in Frameworks */, + B5012E7F2C97315800AC4D68 /* ConcaveHull in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B526258225C874FA003E73B7 /* Frameworks */ = { + B545871D2C961E9E0067B788 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B526258D25C874FA003E73B7 /* Frameworks */ = { + B54587272C961E9E0067B788 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -114,241 +141,310 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - B523C74425C9BD3500C44061 /* Frameworks */ = { + B5012E3C2C96222E00AC4D68 /* Data */ = { isa = PBXGroup; children = ( - B523C74525C9BD3500C44061 /* CloudKit.framework */, + B5012E412C96235B00AC4D68 /* Stage.swift */, + B54587112C961E9C0067B788 /* MapDocument.swift */, ); - name = Frameworks; + path = Data; sourceTree = ""; }; - B523C75825C9FD3A00C44061 /* MapRenderComponents */ = { + B5012E3D2C96223800AC4D68 /* Presentation */ = { isa = PBXGroup; children = ( - B523C75925C9FD4900C44061 /* MapAxes.swift */, - B523C76125CA05A300C44061 /* MapStages.swift */, - B523C76625CA071B00C44061 /* MapVertices.swift */, - B523C76B25CA0DFA00C44061 /* MapEdges.swift */, - B523C77025CA121300C44061 /* MapBlockers.swift */, - B523C77525CA181100C44061 /* MapColor.swift */, - B523C77D25CA294C00C44061 /* MapOpportunities.swift */, - ); - path = MapRenderComponents; + B5012E8B2C98243E00AC4D68 /* ViewStyle.swift */, + B5012E882C98234F00AC4D68 /* Commands */, + B5012E612C96254700AC4D68 /* Complex Components */, + B5012E432C9623BC00AC4D68 /* Theme */, + B5012E402C96232E00AC4D68 /* Base Components */, + B54587132C961E9C0067B788 /* MapEditor.swift */, + ); + path = Presentation; sourceTree = ""; }; - B526256525C874F9003E73B7 = { + B5012E402C96232E00AC4D68 /* Base Components */ = { isa = PBXGroup; children = ( - B526257025C874F9003E73B7 /* Map */, - B526258825C874FA003E73B7 /* MapTests */, - B526259325C874FA003E73B7 /* MapUITests */, - B526256F25C874F9003E73B7 /* Products */, - B523C74425C9BD3500C44061 /* Frameworks */, + B5012E6A2C96255A00AC4D68 /* MapRender */, + B5012E462C96243500AC4D68 /* MapTextEditor.swift */, + B5012E3E2C96232300AC4D68 /* EvolutionPicker.swift */, ); + path = "Base Components"; sourceTree = ""; }; - B526256F25C874F9003E73B7 /* Products */ = { + B5012E432C9623BC00AC4D68 /* Theme */ = { isa = PBXGroup; children = ( - B526256E25C874F9003E73B7 /* Map.app */, - B526258525C874FA003E73B7 /* MapTests.xctest */, - B526259025C874FA003E73B7 /* MapUITests.xctest */, + B5012E792C96F02E00AC4D68 /* Dimensions.swift */, + B5012E4A2C96246D00AC4D68 /* NSColor+theme.swift */, + B5012E482C96245800AC4D68 /* Color+theme.swift */, + B5012E442C9623C500AC4D68 /* Font+theme.swift */, ); - name = Products; + path = Theme; + sourceTree = ""; + }; + B5012E522C96249400AC4D68 /* Strategies */ = { + isa = PBXGroup; + children = ( + B5012E7B2C972B6600AC4D68 /* GroupParserStrategy.swift */, + B5012E4C2C96249400AC4D68 /* VertexParserStrategy.swift */, + B5012E4D2C96249400AC4D68 /* NoteParserStrategy.swift */, + B5012E4E2C96249400AC4D68 /* EdgeParserStrategy.swift */, + B5012E4F2C96249400AC4D68 /* BlockerParserStrategy.swift */, + B5012E502C96249400AC4D68 /* OpportunityParserStrategy.swift */, + B5012E512C96249400AC4D68 /* StageParserStrategy.swift */, + ); + path = Strategies; sourceTree = ""; }; - B526257025C874F9003E73B7 /* Map */ = { + B5012E542C96249400AC4D68 /* MapParser */ = { isa = PBXGroup; children = ( - B539516A25CB0C7800959F72 /* State */, - B52625B425C87D54003E73B7 /* Extensions */, - B539517925CB0D6100959F72 /* Views */, - B523C75825C9FD3A00C44061 /* MapRenderComponents */, - B526257525C874FA003E73B7 /* Assets.xcassets */, - B526257F25C874FA003E73B7 /* Info.plist */, - B526258025C874FA003E73B7 /* Map.entitlements */, - B526257C25C874FA003E73B7 /* Map.xcdatamodeld */, - B526257725C874FA003E73B7 /* Preview Content */, + B5012E522C96249400AC4D68 /* Strategies */, + B5012E532C96249400AC4D68 /* MapParser.swift */, ); - path = Map; + path = MapParser; sourceTree = ""; }; - B526257725C874FA003E73B7 /* Preview Content */ = { + B5012E562C96249400AC4D68 /* Logic */ = { isa = PBXGroup; children = ( - B526257825C874FA003E73B7 /* Preview Assets.xcassets */, + B5012E8D2C9828CE00AC4D68 /* Constants.swift */, + B5012E542C96249400AC4D68 /* MapParser */, + B5012E552C96249400AC4D68 /* Debouncer.swift */, ); - path = "Preview Content"; + path = Logic; sourceTree = ""; }; - B526258825C874FA003E73B7 /* MapTests */ = { + B5012E602C96254700AC4D68 /* MapRender */ = { isa = PBXGroup; children = ( - B526258925C874FA003E73B7 /* MapTests.swift */, - B526258B25C874FA003E73B7 /* Info.plist */, + B5012E5F2C96254700AC4D68 /* MapRenderView.swift */, ); - path = MapTests; + path = MapRender; sourceTree = ""; }; - B526259325C874FA003E73B7 /* MapUITests */ = { + B5012E612C96254700AC4D68 /* Complex Components */ = { isa = PBXGroup; children = ( - B526259425C874FA003E73B7 /* MapUITests.swift */, - B526259625C874FA003E73B7 /* Info.plist */, + B5012E602C96254700AC4D68 /* MapRender */, ); - path = MapUITests; + path = "Complex Components"; + sourceTree = ""; + }; + B5012E6A2C96255A00AC4D68 /* MapRender */ = { + isa = PBXGroup; + children = ( + B5012E802C97318300AC4D68 /* MapGroups.swift */, + B5012E862C97874400AC4D68 /* MapGroup.swift */, + B5012E632C96255A00AC4D68 /* MapAxes.swift */, + B5012E642C96255A00AC4D68 /* MapStages.swift */, + B5012E652C96255A00AC4D68 /* MapVertices.swift */, + B5012E662C96255A00AC4D68 /* MapNotes.swift */, + B5012E672C96255A00AC4D68 /* MapEdges.swift */, + B5012E682C96255A00AC4D68 /* MapBlockers.swift */, + B5012E692C96255A00AC4D68 /* MapOpportunities.swift */, + ); + path = MapRender; + sourceTree = ""; + }; + B5012E882C98234F00AC4D68 /* Commands */ = { + isa = PBXGroup; + children = ( + B51A45F62C982FE700870ED5 /* UpdateCommands.swift */, + B5012E892C98235300AC4D68 /* MapCommands.swift */, + ); + path = Commands; + sourceTree = ""; + }; + B54587032C961E9C0067B788 = { + isa = PBXGroup; + children = ( + B545870E2C961E9C0067B788 /* Map */, + B54587232C961E9E0067B788 /* MapTests */, + B545872D2C961E9E0067B788 /* MapUITests */, + B545870D2C961E9C0067B788 /* Products */, + ); + sourceTree = ""; + }; + B545870D2C961E9C0067B788 /* Products */ = { + isa = PBXGroup; + children = ( + B545870C2C961E9C0067B788 /* Map.app */, + B54587202C961E9E0067B788 /* MapTests.xctest */, + B545872A2C961E9E0067B788 /* Map2UITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + B545870E2C961E9C0067B788 /* Map */ = { + isa = PBXGroup; + children = ( + B5012E562C96249400AC4D68 /* Logic */, + B5012E3C2C96222E00AC4D68 /* Data */, + B5012E3D2C96223800AC4D68 /* Presentation */, + B545870F2C961E9C0067B788 /* MapApp.swift */, + B54587152C961E9E0067B788 /* Assets.xcassets */, + B545871A2C961E9E0067B788 /* Info.plist */, + B545871B2C961E9E0067B788 /* Map.entitlements */, + B54587172C961E9E0067B788 /* Preview Content */, + ); + path = Map; sourceTree = ""; }; - B52625B425C87D54003E73B7 /* Extensions */ = { + B54587172C961E9E0067B788 /* Preview Content */ = { isa = PBXGroup; children = ( - B52625BA25C884C2003E73B7 /* Map+parse.swift */, - B52625AA25C87909003E73B7 /* Date+format.swift */, - B523C73C25C98D9800C44061 /* NSImage+writePNG.swift */, + B54587182C961E9E0067B788 /* Preview Assets.xcassets */, ); - path = Extensions; + path = "Preview Content"; sourceTree = ""; }; - B539516A25CB0C7800959F72 /* State */ = { + B54587232C961E9E0067B788 /* MapTests */ = { isa = PBXGroup; children = ( - B526257A25C874FA003E73B7 /* Persistence.swift */, - B539516B25CB0C9200959F72 /* Store.swift */, - B539517325CB0CA400959F72 /* AppState.swift */, + B54587242C961E9E0067B788 /* MapTests.swift */, ); - path = State; + path = MapTests; sourceTree = ""; }; - B539517925CB0D6100959F72 /* Views */ = { + B545872D2C961E9E0067B788 /* MapUITests */ = { isa = PBXGroup; children = ( - B526257125C874F9003E73B7 /* MapApp.swift */, - B526257325C874F9003E73B7 /* ContentView.swift */, - B52625A525C876C3003E73B7 /* MapDetail.swift */, - B52625C525C8BD2A003E73B7 /* Stage.swift */, - B523C74A25C9C1BA00C44061 /* DefaultMapView.swift */, - B539518025CB2D7A00959F72 /* MapTextEditor.swift */, - B52625AF25C87C14003E73B7 /* MapRender.swift */, - ); - path = Views; + B545872E2C961E9E0067B788 /* MapUITests.swift */, + B54587302C961E9E0067B788 /* MapUITestsLaunchTests.swift */, + ); + path = MapUITests; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - B526256D25C874F9003E73B7 /* Map */ = { + B545870B2C961E9C0067B788 /* Map */ = { isa = PBXNativeTarget; - buildConfigurationList = B526259925C874FA003E73B7 /* Build configuration list for PBXNativeTarget "Map" */; + buildConfigurationList = B54587342C961E9E0067B788 /* Build configuration list for PBXNativeTarget "Map" */; buildPhases = ( - B526256A25C874F9003E73B7 /* Sources */, - B526256B25C874F9003E73B7 /* Frameworks */, - B526256C25C874F9003E73B7 /* Resources */, + B54587082C961E9C0067B788 /* Sources */, + B54587092C961E9C0067B788 /* Frameworks */, + B545870A2C961E9C0067B788 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = Map; - productName = Map; - productReference = B526256E25C874F9003E73B7 /* Map.app */; + packageProductDependencies = ( + B5012E732C9625E200AC4D68 /* Patterns */, + B5012E7E2C97315800AC4D68 /* ConcaveHull */, + B51A45F42C982FAE00870ED5 /* Sparkle */, + ); + productName = Map2; + productReference = B545870C2C961E9C0067B788 /* Map.app */; productType = "com.apple.product-type.application"; }; - B526258425C874FA003E73B7 /* MapTests */ = { + B545871F2C961E9E0067B788 /* MapTests */ = { isa = PBXNativeTarget; - buildConfigurationList = B526259C25C874FA003E73B7 /* Build configuration list for PBXNativeTarget "MapTests" */; + buildConfigurationList = B54587372C961E9E0067B788 /* Build configuration list for PBXNativeTarget "MapTests" */; buildPhases = ( - B526258125C874FA003E73B7 /* Sources */, - B526258225C874FA003E73B7 /* Frameworks */, - B526258325C874FA003E73B7 /* Resources */, + B545871C2C961E9E0067B788 /* Sources */, + B545871D2C961E9E0067B788 /* Frameworks */, + B545871E2C961E9E0067B788 /* Resources */, ); buildRules = ( ); dependencies = ( - B526258725C874FA003E73B7 /* PBXTargetDependency */, + B54587222C961E9E0067B788 /* PBXTargetDependency */, ); name = MapTests; - productName = MapTests; - productReference = B526258525C874FA003E73B7 /* MapTests.xctest */; + productName = Map2Tests; + productReference = B54587202C961E9E0067B788 /* MapTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - B526258F25C874FA003E73B7 /* MapUITests */ = { + B54587292C961E9E0067B788 /* Map2UITests */ = { isa = PBXNativeTarget; - buildConfigurationList = B526259F25C874FA003E73B7 /* Build configuration list for PBXNativeTarget "MapUITests" */; + buildConfigurationList = B545873A2C961E9E0067B788 /* Build configuration list for PBXNativeTarget "Map2UITests" */; buildPhases = ( - B526258C25C874FA003E73B7 /* Sources */, - B526258D25C874FA003E73B7 /* Frameworks */, - B526258E25C874FA003E73B7 /* Resources */, + B54587262C961E9E0067B788 /* Sources */, + B54587272C961E9E0067B788 /* Frameworks */, + B54587282C961E9E0067B788 /* Resources */, ); buildRules = ( ); dependencies = ( - B526259225C874FA003E73B7 /* PBXTargetDependency */, + B545872C2C961E9E0067B788 /* PBXTargetDependency */, ); - name = MapUITests; - productName = MapUITests; - productReference = B526259025C874FA003E73B7 /* MapUITests.xctest */; + name = Map2UITests; + productName = Map2UITests; + productReference = B545872A2C961E9E0067B788 /* Map2UITests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - B526256625C874F9003E73B7 /* Project object */ = { + B54587042C961E9C0067B788 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1240; - LastUpgradeCheck = 1240; + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; TargetAttributes = { - B526256D25C874F9003E73B7 = { - CreatedOnToolsVersion = 12.4; + B545870B2C961E9C0067B788 = { + CreatedOnToolsVersion = 16.0; }; - B526258425C874FA003E73B7 = { - CreatedOnToolsVersion = 12.4; - TestTargetID = B526256D25C874F9003E73B7; + B545871F2C961E9E0067B788 = { + CreatedOnToolsVersion = 16.0; + TestTargetID = B545870B2C961E9C0067B788; }; - B526258F25C874FA003E73B7 = { - CreatedOnToolsVersion = 12.4; - TestTargetID = B526256D25C874F9003E73B7; + B54587292C961E9E0067B788 = { + CreatedOnToolsVersion = 16.0; + TestTargetID = B545870B2C961E9C0067B788; }; }; }; - buildConfigurationList = B526256925C874F9003E73B7 /* Build configuration list for PBXProject "Map" */; - compatibilityVersion = "Xcode 9.3"; + buildConfigurationList = B54587072C961E9C0067B788 /* Build configuration list for PBXProject "Map" */; + compatibilityVersion = "Xcode 15.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); - mainGroup = B526256525C874F9003E73B7; - productRefGroup = B526256F25C874F9003E73B7 /* Products */; + mainGroup = B54587032C961E9C0067B788; + packageReferences = ( + B5012E722C9625E200AC4D68 /* XCRemoteSwiftPackageReference "patterns" */, + B5012E7D2C97315800AC4D68 /* XCRemoteSwiftPackageReference "ConcaveHull" */, + B51A45F32C982FAE00870ED5 /* XCRemoteSwiftPackageReference "Sparkle" */, + ); + productRefGroup = B545870D2C961E9C0067B788 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - B526256D25C874F9003E73B7 /* Map */, - B526258425C874FA003E73B7 /* MapTests */, - B526258F25C874FA003E73B7 /* MapUITests */, + B545870B2C961E9C0067B788 /* Map */, + B545871F2C961E9E0067B788 /* MapTests */, + B54587292C961E9E0067B788 /* Map2UITests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - B526256C25C874F9003E73B7 /* Resources */ = { + B545870A2C961E9C0067B788 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B526257925C874FA003E73B7 /* Preview Assets.xcassets in Resources */, - B526257625C874FA003E73B7 /* Assets.xcassets in Resources */, + B54587192C961E9E0067B788 /* Preview Assets.xcassets in Resources */, + B54587162C961E9E0067B788 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B526258325C874FA003E73B7 /* Resources */ = { + B545871E2C961E9E0067B788 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B526258E25C874FA003E73B7 /* Resources */ = { + B54587282C961E9E0067B788 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -358,74 +454,87 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - B526256A25C874F9003E73B7 /* Sources */ = { + B54587082C961E9C0067B788 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B52625B025C87C14003E73B7 /* MapRender.swift in Sources */, - B523C77E25CA294C00C44061 /* MapOpportunities.swift in Sources */, - B52625AB25C87909003E73B7 /* Date+format.swift in Sources */, - B523C77125CA121300C44061 /* MapBlockers.swift in Sources */, - B523C76725CA071B00C44061 /* MapVertices.swift in Sources */, - B539517425CB0CA400959F72 /* AppState.swift in Sources */, - B523C75A25C9FD4900C44061 /* MapAxes.swift in Sources */, - B539518125CB2D7A00959F72 /* MapTextEditor.swift in Sources */, - B52625BB25C884C2003E73B7 /* Map+parse.swift in Sources */, - B52625C625C8BD2A003E73B7 /* Stage.swift in Sources */, - B523C73D25C98D9800C44061 /* NSImage+writePNG.swift in Sources */, - B526257B25C874FA003E73B7 /* Persistence.swift in Sources */, - B523C77625CA181100C44061 /* MapColor.swift in Sources */, - B526257425C874F9003E73B7 /* ContentView.swift in Sources */, - B526257E25C874FA003E73B7 /* Map.xcdatamodeld in Sources */, - B523C74B25C9C1BA00C44061 /* DefaultMapView.swift in Sources */, - B539516C25CB0C9300959F72 /* Store.swift in Sources */, - B526257225C874F9003E73B7 /* MapApp.swift in Sources */, - B52625A625C876C3003E73B7 /* MapDetail.swift in Sources */, - B523C76225CA05A300C44061 /* MapStages.swift in Sources */, - B523C76C25CA0DFA00C44061 /* MapEdges.swift in Sources */, + B5012E872C97874600AC4D68 /* MapGroup.swift in Sources */, + B5012E472C96243C00AC4D68 /* MapTextEditor.swift in Sources */, + B5012E622C96254700AC4D68 /* MapRenderView.swift in Sources */, + B5012E492C96245B00AC4D68 /* Color+theme.swift in Sources */, + B54587122C961E9C0067B788 /* MapDocument.swift in Sources */, + B54587102C961E9C0067B788 /* MapApp.swift in Sources */, + B5012E8C2C98244000AC4D68 /* ViewStyle.swift in Sources */, + B5012E8E2C9828D000AC4D68 /* Constants.swift in Sources */, + B5012E7C2C972B6C00AC4D68 /* GroupParserStrategy.swift in Sources */, + B5012E6B2C96255A00AC4D68 /* MapAxes.swift in Sources */, + B5012E6C2C96255A00AC4D68 /* MapVertices.swift in Sources */, + B5012E6D2C96255A00AC4D68 /* MapStages.swift in Sources */, + B5012E7A2C96F02F00AC4D68 /* Dimensions.swift in Sources */, + B5012E6E2C96255A00AC4D68 /* MapNotes.swift in Sources */, + B5012E6F2C96255A00AC4D68 /* MapEdges.swift in Sources */, + B5012E702C96255A00AC4D68 /* MapOpportunities.swift in Sources */, + B5012E712C96255A00AC4D68 /* MapBlockers.swift in Sources */, + B5012E4B2C96246F00AC4D68 /* NSColor+theme.swift in Sources */, + B54587142C961E9C0067B788 /* MapEditor.swift in Sources */, + B5012E3F2C96232A00AC4D68 /* EvolutionPicker.swift in Sources */, + B5012E572C96249400AC4D68 /* NoteParserStrategy.swift in Sources */, + B51A45F72C982FEA00870ED5 /* UpdateCommands.swift in Sources */, + B5012E582C96249400AC4D68 /* BlockerParserStrategy.swift in Sources */, + B5012E592C96249400AC4D68 /* VertexParserStrategy.swift in Sources */, + B5012E5A2C96249400AC4D68 /* MapParser.swift in Sources */, + B5012E5B2C96249400AC4D68 /* OpportunityParserStrategy.swift in Sources */, + B5012E5C2C96249400AC4D68 /* EdgeParserStrategy.swift in Sources */, + B5012E5D2C96249400AC4D68 /* StageParserStrategy.swift in Sources */, + B5012E812C97318600AC4D68 /* MapGroups.swift in Sources */, + B5012E8A2C98235500AC4D68 /* MapCommands.swift in Sources */, + B5012E5E2C96249400AC4D68 /* Debouncer.swift in Sources */, + B5012E452C9623C700AC4D68 /* Font+theme.swift in Sources */, + B5012E422C96235E00AC4D68 /* Stage.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B526258125C874FA003E73B7 /* Sources */ = { + B545871C2C961E9E0067B788 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B526258A25C874FA003E73B7 /* MapTests.swift in Sources */, + B54587252C961E9E0067B788 /* MapTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B526258C25C874FA003E73B7 /* Sources */ = { + B54587262C961E9E0067B788 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B526259525C874FA003E73B7 /* MapUITests.swift in Sources */, + B54587312C961E9E0067B788 /* MapUITestsLaunchTests.swift in Sources */, + B545872F2C961E9E0067B788 /* MapUITests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - B526258725C874FA003E73B7 /* PBXTargetDependency */ = { + B54587222C961E9E0067B788 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B526256D25C874F9003E73B7 /* Map */; - targetProxy = B526258625C874FA003E73B7 /* PBXContainerItemProxy */; + target = B545870B2C961E9C0067B788 /* Map */; + targetProxy = B54587212C961E9E0067B788 /* PBXContainerItemProxy */; }; - B526259225C874FA003E73B7 /* PBXTargetDependency */ = { + B545872C2C961E9E0067B788 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = B526256D25C874F9003E73B7 /* Map */; - targetProxy = B526259125C874FA003E73B7 /* PBXContainerItemProxy */; + target = B545870B2C961E9C0067B788 /* Map */; + targetProxy = B545872B2C961E9E0067B788 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - B526259725C874FA003E73B7 /* Debug */ = { + B54587322C961E9E0067B788 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; @@ -455,7 +564,8 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -469,24 +579,25 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 11.1; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; }; - B526259825C874FA003E73B7 /* Release */ = { + B54587332C961E9E0067B788 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; @@ -516,7 +627,8 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -524,16 +636,16 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 11.1; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; }; name = Release; }; - B526259A25C874FA003E73B7 /* Debug */ = { + B54587352C961E9E0067B788 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -541,24 +653,29 @@ CODE_SIGN_ENTITLEMENTS = Map/Map.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 4; DEVELOPMENT_ASSET_PATHS = "\"Map/Preview Content\""; DEVELOPMENT_TEAM = S68NHQVJXW; ENABLE_HARDENED_RUNTIME = YES; ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Map/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 11; - MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = pizza.unlimited.Map; + MACOSX_DEPLOYMENT_TARGET = 14.0; + MARKETING_VERSION = 3.0.1; + PRODUCT_BUNDLE_IDENTIFIER = systems.tranquil.Map; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; }; name = Debug; }; - B526259B25C874FA003E73B7 /* Release */ = { + B54587362C961E9E0067B788 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -566,160 +683,181 @@ CODE_SIGN_ENTITLEMENTS = Map/Map.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 4; DEVELOPMENT_ASSET_PATHS = "\"Map/Preview Content\""; DEVELOPMENT_TEAM = S68NHQVJXW; ENABLE_HARDENED_RUNTIME = YES; ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Map/Info.plist; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 11; - MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = pizza.unlimited.Map; + MACOSX_DEPLOYMENT_TARGET = 14.0; + MARKETING_VERSION = 3.0.1; + PRODUCT_BUNDLE_IDENTIFIER = systems.tranquil.Map; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; }; name = Release; }; - B526259D25C874FA003E73B7 /* Debug */ = { + B54587382C961E9E0067B788 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = S68NHQVJXW; - INFOPLIST_FILE = MapTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 11.0; - PRODUCT_BUNDLE_IDENTIFIER = pizza.unlimited.MapTests; + GENERATE_INFOPLIST_FILE = YES; + MACOSX_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = systems.tranquil.Map2Tests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Map.app/Contents/MacOS/Map"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Map2.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Map2"; }; name = Debug; }; - B526259E25C874FA003E73B7 /* Release */ = { + B54587392C961E9E0067B788 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = S68NHQVJXW; - INFOPLIST_FILE = MapTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 11.0; - PRODUCT_BUNDLE_IDENTIFIER = pizza.unlimited.MapTests; + GENERATE_INFOPLIST_FILE = YES; + MACOSX_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = systems.tranquil.Map2Tests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Map.app/Contents/MacOS/Map"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Map2.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Map2"; }; name = Release; }; - B52625A025C874FA003E73B7 /* Debug */ = { + B545873B2C961E9E0067B788 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = S68NHQVJXW; - INFOPLIST_FILE = MapUITests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = pizza.unlimited.MapUITests; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = systems.tranquil.Map2UITests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; - TEST_TARGET_NAME = Map; + TEST_TARGET_NAME = Map2; }; name = Debug; }; - B52625A125C874FA003E73B7 /* Release */ = { + B545873C2C961E9E0067B788 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = S68NHQVJXW; - INFOPLIST_FILE = MapUITests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = pizza.unlimited.MapUITests; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = systems.tranquil.Map2UITests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; - TEST_TARGET_NAME = Map; + TEST_TARGET_NAME = Map2; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B526256925C874F9003E73B7 /* Build configuration list for PBXProject "Map" */ = { + B54587072C961E9C0067B788 /* Build configuration list for PBXProject "Map" */ = { isa = XCConfigurationList; buildConfigurations = ( - B526259725C874FA003E73B7 /* Debug */, - B526259825C874FA003E73B7 /* Release */, + B54587322C961E9E0067B788 /* Debug */, + B54587332C961E9E0067B788 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B526259925C874FA003E73B7 /* Build configuration list for PBXNativeTarget "Map" */ = { + B54587342C961E9E0067B788 /* Build configuration list for PBXNativeTarget "Map" */ = { isa = XCConfigurationList; buildConfigurations = ( - B526259A25C874FA003E73B7 /* Debug */, - B526259B25C874FA003E73B7 /* Release */, + B54587352C961E9E0067B788 /* Debug */, + B54587362C961E9E0067B788 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B526259C25C874FA003E73B7 /* Build configuration list for PBXNativeTarget "MapTests" */ = { + B54587372C961E9E0067B788 /* Build configuration list for PBXNativeTarget "MapTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - B526259D25C874FA003E73B7 /* Debug */, - B526259E25C874FA003E73B7 /* Release */, + B54587382C961E9E0067B788 /* Debug */, + B54587392C961E9E0067B788 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B526259F25C874FA003E73B7 /* Build configuration list for PBXNativeTarget "MapUITests" */ = { + B545873A2C961E9E0067B788 /* Build configuration list for PBXNativeTarget "Map2UITests" */ = { isa = XCConfigurationList; buildConfigurations = ( - B52625A025C874FA003E73B7 /* Debug */, - B52625A125C874FA003E73B7 /* Release */, + B545873B2C961E9E0067B788 /* Debug */, + B545873C2C961E9E0067B788 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ -/* Begin XCVersionGroup section */ - B526257C25C874FA003E73B7 /* Map.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - B526257D25C874FA003E73B7 /* Map.xcdatamodel */, - ); - currentVersion = B526257D25C874FA003E73B7 /* Map.xcdatamodel */; - path = Map.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; +/* Begin XCRemoteSwiftPackageReference section */ + B5012E722C9625E200AC4D68 /* XCRemoteSwiftPackageReference "patterns" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://git.sr.ht/~rbdr/patterns"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.0.0; + }; + }; + B5012E7D2C97315800AC4D68 /* XCRemoteSwiftPackageReference "ConcaveHull" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Syncheo/ConcaveHull"; + requirement = { + branch = master; + kind = branch; + }; + }; + B51A45F32C982FAE00870ED5 /* XCRemoteSwiftPackageReference "Sparkle" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/sparkle-project/Sparkle"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.6.4; + }; }; -/* End XCVersionGroup section */ +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + B5012E732C9625E200AC4D68 /* Patterns */ = { + isa = XCSwiftPackageProductDependency; + package = B5012E722C9625E200AC4D68 /* XCRemoteSwiftPackageReference "patterns" */; + productName = Patterns; + }; + B5012E7E2C97315800AC4D68 /* ConcaveHull */ = { + isa = XCSwiftPackageProductDependency; + package = B5012E7D2C97315800AC4D68 /* XCRemoteSwiftPackageReference "ConcaveHull" */; + productName = ConcaveHull; + }; + B51A45F42C982FAE00870ED5 /* Sparkle */ = { + isa = XCSwiftPackageProductDependency; + package = B51A45F32C982FAE00870ED5 /* XCRemoteSwiftPackageReference "Sparkle" */; + productName = Sparkle; + }; +/* End XCSwiftPackageProductDependency section */ }; - rootObject = B526256625C874F9003E73B7 /* Project object */; + rootObject = B54587042C961E9C0067B788 /* Project object */; }