├── UNLICENSE ├── README.md ├── LFG.js ├── .gitignore ├── src │ ├── controller.js │ ├── index.js │ ├── utils.js │ └── app.js ├── webpack.config.js └── package.json ├── poetry ├── requirements.txt ├── poems.csv └── poetry.py ├── .gitignore ├── iOS ├── Shared │ ├── poems.txt │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── dist │ │ │ ├── Contents.json │ │ │ ├── bg.bundled.min.dataset │ │ │ │ ├── bg.bundled.min.js │ │ │ │ └── Contents.json │ │ │ ├── style.dataset │ │ │ │ ├── Contents.json │ │ │ │ └── style.css │ │ │ └── index.dataset │ │ │ │ ├── Contents.json │ │ │ │ └── index.html │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── LFGApp.swift │ └── ContentView.swift ├── LFG.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── project.pbxproj ├── macOS │ └── macOS.entitlements ├── .gitignore ├── Tests iOS │ ├── Tests_iOSLaunchTests.swift │ └── Tests_iOS.swift └── Tests macOS │ ├── Tests_macOSLaunchTests.swift │ └── Tests_macOS.swift └── LICENSE /UNLICENSE: -------------------------------------------------------------------------------- 1 | LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # :shaved_ice: lfg 2 | -------------------------------------------------------------------------------- /LFG.js/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /poetry/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy==1.21.4 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | venv 2 | .venv 3 | *.swp 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /LFG.js/src/controller.js: -------------------------------------------------------------------------------- 1 | export function whatever() { 2 | return "x_x"; 3 | } 4 | -------------------------------------------------------------------------------- /iOS/Shared/poems.txt: -------------------------------------------------------------------------------- 1 | wolves never die 2 | many things never happen 3 | wolves happen to fall in love 4 | 5 | -------------------------------------------------------------------------------- /poetry/poems.csv: -------------------------------------------------------------------------------- 1 | poem,weight 2 | wolves never die,1 3 | many things never happen,1 4 | wolves happen to fall in love,1 5 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/dist/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/dist/bg.bundled.min.dataset/bg.bundled.min.js: -------------------------------------------------------------------------------- 1 | var svv;(()=>{let e=document.getElementById("background"),n="";for(let e=0;e<10;e++)n+="guess it fucking worked
";e.innerHTML=n,svv={}})(); -------------------------------------------------------------------------------- /iOS/LFG.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/dist/style.dataset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "data" : [ 3 | { 4 | "filename" : "style.css", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/dist/index.dataset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "data" : [ 3 | { 4 | "filename" : "index.html", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/dist/bg.bundled.min.dataset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "data" : [ 3 | { 4 | "filename" : "bg.bundled.min.js", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /iOS/LFG.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | # First Party 2 | 3 | All originl work is under the unlicense: https://unlicense.org/ 4 | 5 | # Second Party 6 | 7 | Wait. What? 8 | 9 | # Third Party 10 | 11 | Using threejs under the MIT License here: https://github.com/mrdoob/three.js/blob/75406c631355980994186c84316c606140ac045c/LICENSE 12 | 13 | # After Party 14 | 15 | Hotel Lobby? 16 | -------------------------------------------------------------------------------- /iOS/macOS/macOS.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/dist/style.dataset/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: red; 3 | font-size: 50pt; 4 | font-family: sans-serif; 5 | } 6 | 7 | #background { 8 | background-color: green; 9 | height: 100%; 10 | width: 100%; 11 | overflow: hidden; 12 | margin: 0; 13 | padding: 0; 14 | position: fixed; 15 | top: 0; 16 | left: 0; 17 | z-index: -1; 18 | } 19 | -------------------------------------------------------------------------------- /LFG.js/src/index.js: -------------------------------------------------------------------------------- 1 | import {App} from "./app.js"; 2 | import {debounce, message} from "./utils.js"; 3 | 4 | 5 | let el = document.getElementById("background"); 6 | let app = new App({el: el}) 7 | 8 | ~function loop() { 9 | requestAnimationFrame(loop); 10 | app.update(); 11 | app.draw(); 12 | }(); 13 | 14 | 15 | window.addEventListener("orientationchange", () => { 16 | app.fill(); 17 | }); 18 | 19 | 20 | window.addEventListener("resize", debounce(33, () => { 21 | app.fill(); 22 | })); 23 | 24 | export * as CTRL from "./controller.js"; 25 | -------------------------------------------------------------------------------- /LFG.js/src/utils.js: -------------------------------------------------------------------------------- 1 | let MESSAGE = document.getElementById("message"); 2 | 3 | /* 4 | * 5 | */ 6 | export function message(text) { 7 | MESSAGE.innerText = text; 8 | } 9 | 10 | /** 11 | * 12 | */ 13 | export function debounce(delay, fn) { 14 | let id = "whatever"; 15 | let last = 0; 16 | let self = this; 17 | return function() { 18 | let now = +new Date(); 19 | if (now - last < delay) { 20 | return; 21 | } 22 | clearTimeout(id); 23 | id = setTimeout(() => { 24 | fn.apply(self, []); 25 | }, delay); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /iOS/.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## User settings 6 | xcuserdata/ 7 | 8 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) 9 | *.xcscmblueprint 10 | *.xccheckout 11 | 12 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) 13 | build/ 14 | DerivedData/ 15 | *.moved-aside 16 | *.pbxuser 17 | !default.pbxuser 18 | *.mode1v3 19 | !default.mode1v3 20 | *.mode2v3 21 | !default.mode2v3 22 | *.perspectivev3 23 | !default.perspectivev3 24 | 25 | ## Gcc Patch 26 | /*.gcno 27 | -------------------------------------------------------------------------------- /LFG.js/webpack.config.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | 3 | module.exports = { 4 | context: __dirname + "/src", 5 | entry: './index.js', 6 | output: { 7 | path: __dirname + '/dist', 8 | filename: 'bg.bundled.min.js', 9 | libraryTarget: 'var', 10 | library: 'svv', 11 | }, 12 | module: { 13 | rules: [ 14 | { 15 | test: /\.(frag|vert)?$/, 16 | loader: 'raw-loader', 17 | }, 18 | { 19 | test: /\.js$/, 20 | exclude: /node_modules/, 21 | use: ['babel-loader'], 22 | } 23 | ], 24 | }, 25 | resolve: { 26 | extensions: ['*', '.js'], 27 | }, 28 | externals: { 29 | "THREE": "THREE", 30 | }, 31 | mode: "development", 32 | }; 33 | -------------------------------------------------------------------------------- /iOS/Shared/LFGApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LFGApp.swift 3 | // Shared 4 | // 5 | // Created by matt on 11/11/21. 6 | // 7 | 8 | import SwiftUI 9 | 10 | 11 | func lezgo() { 12 | DispatchQueue.main.asyncAfter(deadline: .now() + 10) { 13 | exit(0) 14 | } 15 | } 16 | 17 | func blurb() -> String { 18 | let poems: [String] = [ 19 | "wolves never die", 20 | "many things never happen", 21 | "wolves happen to fall in love", 22 | "not everything is a big deal..." 23 | ] 24 | return poems.randomElement()! 25 | } 26 | 27 | @main 28 | struct LFGApp: App { 29 | var body: some Scene { 30 | WindowGroup { 31 | ContentView() 32 | .onAppear(perform: lezgo) 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /LFG.js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lfg", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "src/index.js", 6 | "scripts": { 7 | "ayyy": "webpack --mode production", 8 | "livest": "webpack --watch --mode production", 9 | "lmao": "webpack serve --config webpack.config.js --static dist --open --mode development --host 0.0.0.0 --hot", 10 | "test": "echo \"not really fucking with tests bruv\"" 11 | }, 12 | "author": "", 13 | "license": "UNLICENSED", 14 | "dependencies": { 15 | "three": "^0.134.0", 16 | "webpack": "^5.64.0" 17 | }, 18 | "devDependencies": { 19 | "@babel/core": "^7.1.6", 20 | "@babel/preset-env": "^7.1.6", 21 | "babel-loader": "^8.0.4", 22 | "raw-loader": "^4.0.2", 23 | "webpack": "^5.21.2", 24 | "webpack-cli": "^4.9.1", 25 | "webpack-dev-server": "^4.0.0-beta.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /iOS/Tests iOS/Tests_iOSLaunchTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Tests_iOSLaunchTests.swift 3 | // Tests iOS 4 | // 5 | // Created by matt on 11/11/21. 6 | // 7 | 8 | import XCTest 9 | 10 | class Tests_iOSLaunchTests: XCTestCase { 11 | 12 | override class var runsForEachTargetApplicationUIConfiguration: Bool { 13 | true 14 | } 15 | 16 | override func setUpWithError() throws { 17 | continueAfterFailure = false 18 | } 19 | 20 | func testLaunch() throws { 21 | let app = XCUIApplication() 22 | app.launch() 23 | 24 | // Insert steps here to perform after app launch but before taking a screenshot, 25 | // such as logging into a test account or navigating somewhere in the app 26 | 27 | let attachment = XCTAttachment(screenshot: app.screenshot()) 28 | attachment.name = "Launch Screen" 29 | attachment.lifetime = .keepAlways 30 | add(attachment) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /iOS/Tests macOS/Tests_macOSLaunchTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Tests_macOSLaunchTests.swift 3 | // Tests macOS 4 | // 5 | // Created by matt on 11/11/21. 6 | // 7 | 8 | import XCTest 9 | 10 | class Tests_macOSLaunchTests: XCTestCase { 11 | 12 | override class var runsForEachTargetApplicationUIConfiguration: Bool { 13 | true 14 | } 15 | 16 | override func setUpWithError() throws { 17 | continueAfterFailure = false 18 | } 19 | 20 | func testLaunch() throws { 21 | let app = XCUIApplication() 22 | app.launch() 23 | 24 | // Insert steps here to perform after app launch but before taking a screenshot, 25 | // such as logging into a test account or navigating somewhere in the app 26 | 27 | let attachment = XCTAttachment(screenshot: app.screenshot()) 28 | attachment.name = "Launch Screen" 29 | attachment.lifetime = .keepAlways 30 | add(attachment) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/dist/index.dataset/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ... 5 | 6 | 7 | 8 | Part two (Blood of a Young Wolf) 9 | Cant be that bad
10 | Cant be that bad
11 | Cant be that bad
12 | Cant be that bad
13 | Cant be that bad
14 | Cant be that bad
15 | Cant be that bad
16 | Cant be that bad
17 | Cant be that bad
18 | Cant be that bad
19 | Cant be that bad
20 | Cant be that bad
21 | Cant be that bad
22 | Cant be that bad
23 | Cant be that bad
24 | Cant be that bad
25 | Cant be that bad
26 | Cant be that bad
27 | Cant be that bad
28 | Cant be that bad
29 | Cant be that bad
30 | Cant be that bad
31 |
You can't stop me
32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /iOS/Tests iOS/Tests_iOS.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Tests_iOS.swift 3 | // Tests iOS 4 | // 5 | // Created by matt on 11/11/21. 6 | // 7 | 8 | import XCTest 9 | 10 | class Tests_iOS: XCTestCase { 11 | 12 | override func setUpWithError() throws { 13 | // Put setup code here. This method is called before the invocation of each test method in the class. 14 | 15 | // In UI tests it is usually best to stop immediately when a failure occurs. 16 | continueAfterFailure = false 17 | 18 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 19 | } 20 | 21 | override func tearDownWithError() throws { 22 | // Put teardown code here. This method is called after the invocation of each test method in the class. 23 | } 24 | 25 | func testExample() throws { 26 | // UI tests must launch the application that they test. 27 | let app = XCUIApplication() 28 | app.launch() 29 | 30 | // Use recording to get started writing UI tests. 31 | // Use XCTAssert and related functions to verify your tests produce the correct results. 32 | } 33 | 34 | func testLaunchPerformance() throws { 35 | if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { 36 | // This measures how long it takes to launch your application. 37 | measure(metrics: [XCTApplicationLaunchMetric()]) { 38 | XCUIApplication().launch() 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /iOS/Tests macOS/Tests_macOS.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Tests_macOS.swift 3 | // Tests macOS 4 | // 5 | // Created by matt on 11/11/21. 6 | // 7 | 8 | import XCTest 9 | 10 | class Tests_macOS: XCTestCase { 11 | 12 | override func setUpWithError() throws { 13 | // Put setup code here. This method is called before the invocation of each test method in the class. 14 | 15 | // In UI tests it is usually best to stop immediately when a failure occurs. 16 | continueAfterFailure = false 17 | 18 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 19 | } 20 | 21 | override func tearDownWithError() throws { 22 | // Put teardown code here. This method is called after the invocation of each test method in the class. 23 | } 24 | 25 | func testExample() throws { 26 | // UI tests must launch the application that they test. 27 | let app = XCUIApplication() 28 | app.launch() 29 | 30 | // Use recording to get started writing UI tests. 31 | // Use XCTAssert and related functions to verify your tests produce the correct results. 32 | } 33 | 34 | func testLaunchPerformance() throws { 35 | if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { 36 | // This measures how long it takes to launch your application. 37 | measure(metrics: [XCTApplicationLaunchMetric()]) { 38 | XCUIApplication().launch() 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /iOS/Shared/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // Shared 4 | // 5 | // Created by matt on 11/11/21. 6 | // 7 | 8 | import SwiftUI 9 | import WebKit 10 | 11 | // WebKit Web View (Full Screen) 12 | // Identical to WKWebView - but ignore 13 | class WKWebViewFullScreen: WKWebView { 14 | override var safeAreaInsets: UIEdgeInsets { 15 | return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) 16 | } 17 | } 18 | 19 | // WebView 20 | // WebView usable as part of a UI. Ignores Safe area. 21 | struct WebView : UIViewRepresentable { 22 | let url: URL 23 | func makeUIView(context: Context) -> WKWebView { 24 | WKWebViewFullScreen() 25 | } 26 | func updateUIView(_ uiView: WKWebView, context: Context) { 27 | let url = Bundle.main.url( 28 | forResource: "index", 29 | withExtension: "html", 30 | subdirectory: "dist" 31 | )! 32 | uiView.loadFileURL(url, allowingReadAccessTo: url) 33 | } 34 | } 35 | 36 | struct ContentView: View { 37 | var webview = WebView(url: URL(string: "file://index.html")!) 38 | var body: some View { 39 | VStack { 40 | Text(blurb()) 41 | .foregroundColor(.black) 42 | .padding() 43 | } 44 | .frame(maxWidth: .infinity, maxHeight: .infinity) 45 | .background(webview) 46 | .ignoresSafeArea() 47 | } 48 | } 49 | 50 | /* 51 | struct ContentView_Previews: PreviewProvider { 52 | static var previews: some View { 53 | ContentView() 54 | .previewInterfaceOrientation(.portrait) 55 | } 56 | } 57 | */ 58 | -------------------------------------------------------------------------------- /poetry/poetry.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | 4 | import csv 5 | import random 6 | 7 | from collections import defaultdict 8 | 9 | 10 | import numpy 11 | 12 | def poem(mapping): 13 | MAX_LENGTH = 8 14 | summa = sum(mapping[''].values()) 15 | 16 | 17 | i = 0 18 | p = [] 19 | word = '' 20 | 21 | while word != "." and i < MAX_LENGTH: 22 | i += 1 23 | 24 | res = [ 25 | (y, x) 26 | for y, x in mapping[word].items() 27 | if x != 0 28 | ] 29 | 30 | words = [word for word, _ in res] 31 | weights = [weight for _, weight in res] 32 | 33 | word = random.choices(random.choices(words, weights))[0] 34 | p.append(word) 35 | 36 | return " ".join(p[:-1]) 37 | 38 | 39 | if __name__ == "__main__": 40 | 41 | mapping = defaultdict(lambda: defaultdict(int)) 42 | 43 | total = 0.0 44 | counts = defaultdict(float) 45 | 46 | with open("poems.csv", "r") as fi: 47 | reader = csv.DictReader(fi) 48 | 49 | for row in reader: 50 | 51 | words = row["poem"].split(" ") 52 | 53 | for i in range(len(words)-1): 54 | mapping[words[i]][words[i+1]] += 1 55 | 56 | mapping[""][words[0]] += 1 57 | mapping[words[-1]]["."] += 1 58 | 59 | for word in row["poem"].split(" "): 60 | counts[word] += 1 61 | total += 1 62 | 63 | mapping["."] = defaultdict(int) 64 | 65 | words = sorted(mapping.keys()) 66 | 67 | m = numpy.zeros((len(mapping), len(mapping))) 68 | 69 | for i, prev_word in enumerate(words): 70 | for j, next_word in enumerate(words): 71 | w = mapping[prev_word][next_word] 72 | m[i][j] = w 73 | 74 | # print(m) 75 | print(poem(mapping)) 76 | # for word in sorted(counts.keys()): 77 | # print(word, counts[word]/total) 78 | -------------------------------------------------------------------------------- /iOS/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | }, 93 | { 94 | "idiom" : "mac", 95 | "scale" : "1x", 96 | "size" : "16x16" 97 | }, 98 | { 99 | "idiom" : "mac", 100 | "scale" : "2x", 101 | "size" : "16x16" 102 | }, 103 | { 104 | "idiom" : "mac", 105 | "scale" : "1x", 106 | "size" : "32x32" 107 | }, 108 | { 109 | "idiom" : "mac", 110 | "scale" : "2x", 111 | "size" : "32x32" 112 | }, 113 | { 114 | "idiom" : "mac", 115 | "scale" : "1x", 116 | "size" : "128x128" 117 | }, 118 | { 119 | "idiom" : "mac", 120 | "scale" : "2x", 121 | "size" : "128x128" 122 | }, 123 | { 124 | "idiom" : "mac", 125 | "scale" : "1x", 126 | "size" : "256x256" 127 | }, 128 | { 129 | "idiom" : "mac", 130 | "scale" : "2x", 131 | "size" : "256x256" 132 | }, 133 | { 134 | "idiom" : "mac", 135 | "scale" : "1x", 136 | "size" : "512x512" 137 | }, 138 | { 139 | "idiom" : "mac", 140 | "scale" : "2x", 141 | "size" : "512x512" 142 | } 143 | ], 144 | "info" : { 145 | "author" : "xcode", 146 | "version" : 1 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /LFG.js/src/app.js: -------------------------------------------------------------------------------- 1 | import { 2 | BoxGeometry, 3 | BufferGeometry, 4 | Geometry, 5 | Float32BufferAttribute, 6 | BufferAttribute, 7 | 8 | Object3D, 9 | 10 | VertexColors, 11 | DoubleSide, 12 | 13 | Mesh, 14 | MeshBasicMaterial, 15 | MeshStandardMaterial, 16 | PerspectiveCamera, 17 | Scene, 18 | Vector3, 19 | WebGLRenderer, 20 | } from "three"; 21 | 22 | const elapsed = (function () { 23 | let last = undefined; 24 | return function () { 25 | 26 | let now = +new Date(); 27 | 28 | if (last === undefined) { 29 | last = now; 30 | return 0 31 | } 32 | 33 | let res = now-last; 34 | last = now; 35 | 36 | return res; 37 | }; 38 | }()); 39 | 40 | 41 | function random(low, high) { 42 | return low + Math.random() * (high-low); 43 | } 44 | 45 | 46 | class Backdrop extends Object3D { 47 | WIDTH = 2; 48 | HEIGHT = 2; 49 | 50 | constructor(depth) { 51 | 52 | super(); 53 | 54 | let mat = new MeshBasicMaterial({ 55 | vertexColors: VertexColors, 56 | side: DoubleSide, 57 | }); 58 | 59 | let w = 2; 60 | let h = 1; 61 | 62 | let vertices = [] 63 | let normals = []; 64 | let colors = []; 65 | 66 | 67 | let indices = new Uint16Array([ 68 | 0, 1, 2, 69 | 1, 2, 3, 70 | ]); 71 | 72 | for (let i=0; i < 2; i++) { 73 | for (let j=0; j < 2; j++) { 74 | let x = -1 + w*i; 75 | let y = -1 + w*j; 76 | let z = depth; 77 | 78 | let r = random(0.0, 0.1); 79 | let g = random(0.0, 0.1); 80 | let b = random(0.0, 0.1); 81 | 82 | vertices.push(x, y, z); 83 | normals.push(0, 1, 1); 84 | colors.push(r, g, b); 85 | 86 | } 87 | } 88 | 89 | this.geo = new BufferGeometry(); 90 | this.geo.setAttribute("position", new Float32BufferAttribute(vertices, 3)); 91 | this.geo.setAttribute("color", new Float32BufferAttribute(colors, 3)); 92 | this.geo.setAttribute("normal", new Float32BufferAttribute(normals, 3)); 93 | this.geo.setIndex(new BufferAttribute(indices, 1)) 94 | 95 | this.add(new Mesh(this.geo, mat)); 96 | } 97 | 98 | tick() { 99 | const colors = this.geo.attributes.color.array; 100 | const w = 2; 101 | const s = elapsed()/1000.0*5.0; 102 | 103 | for (let i=0; i < 2; i++) { 104 | for (let j=0; j < 2; j++) { 105 | let y = -1 + w*j; 106 | let u = (y+0); 107 | 108 | let k = 3*(2*i + j); 109 | 110 | colors[k+0] += random(0, u*s); 111 | colors[k+1] += random(0, u*s); 112 | colors[k+2] += random(0, u*s); 113 | 114 | 115 | } 116 | } 117 | 118 | this.geo.attributes.color.needsUpdate = true; 119 | } 120 | } 121 | 122 | 123 | /** 124 | * Initialize, Update, Draw, Fill View 125 | */ 126 | export class App { 127 | 128 | constructor({el}) { 129 | let ctx = el.getContext("webgl", {preserveDrawingBuffer: true}); 130 | 131 | this.renderer = new WebGLRenderer({ 132 | canvas: el, 133 | antialias: true, 134 | preserveDrawingBuffer: true, 135 | }); 136 | 137 | this.renderer.setClearColor(0x000000); 138 | 139 | this.el = el; 140 | this.scene = new Scene(); 141 | 142 | this.fill(); 143 | 144 | this.mesh = new Mesh( 145 | new BoxGeometry(2, 2, 2), 146 | new MeshBasicMaterial({color: 0xFFFFFF}), 147 | ); 148 | this.mesh.position.set(0, 0, 0); 149 | // this.scene.add(this.mesh); 150 | 151 | this.bg = new Backdrop(-1); 152 | this.scene.add(this.bg); 153 | } 154 | 155 | fill() { 156 | let w = document.documentElement.clientWidth; 157 | let h = document.documentElement.clientHeight; 158 | 159 | this.renderer.setSize(w, h); 160 | 161 | this.camera = new PerspectiveCamera( 162 | 45, 163 | w/h, 164 | 4.0, 165 | 3000, 166 | ); 167 | } 168 | 169 | update() { 170 | let t = (+new Date() / 1000 * 1) % (2*Math.PI); 171 | 172 | this.mesh.rotation.x = 5*t; 173 | this.mesh.rotation.y = -3*t; 174 | this.mesh.rotation.z = 2*t; 175 | 176 | this.camera.position.set(0, 0, 5); 177 | this.camera.lookAt(new Vector3(0, 0, 0)); 178 | 179 | this.bg.tick(); 180 | } 181 | 182 | draw() { 183 | this.renderer.render(this.scene, this.camera); 184 | } 185 | } 186 | -------------------------------------------------------------------------------- /iOS/LFG.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 55; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | C93D5B4E273DE4B7003D7D20 /* dist in Resources */ = {isa = PBXBuildFile; fileRef = C93D5B4D273DE4B7003D7D20 /* dist */; }; 11 | C9B2925D2740536B00B8EC97 /* poems.txt in Resources */ = {isa = PBXBuildFile; fileRef = C9B2925C2740536B00B8EC97 /* poems.txt */; }; 12 | C9B2925E2740536B00B8EC97 /* poems.txt in Resources */ = {isa = PBXBuildFile; fileRef = C9B2925C2740536B00B8EC97 /* poems.txt */; }; 13 | C9C0A8FD273DD54B00046EC8 /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C0A8FC273DD54B00046EC8 /* Tests_iOS.swift */; }; 14 | C9C0A8FF273DD54B00046EC8 /* Tests_iOSLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C0A8FE273DD54B00046EC8 /* Tests_iOSLaunchTests.swift */; }; 15 | C9C0A909273DD54B00046EC8 /* Tests_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C0A908273DD54B00046EC8 /* Tests_macOS.swift */; }; 16 | C9C0A90B273DD54B00046EC8 /* Tests_macOSLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C0A90A273DD54B00046EC8 /* Tests_macOSLaunchTests.swift */; }; 17 | C9C0A90C273DD54B00046EC8 /* LFGApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C0A8E4273DD54A00046EC8 /* LFGApp.swift */; }; 18 | C9C0A90D273DD54B00046EC8 /* LFGApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C0A8E4273DD54A00046EC8 /* LFGApp.swift */; }; 19 | C9C0A90E273DD54B00046EC8 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C0A8E5273DD54A00046EC8 /* ContentView.swift */; }; 20 | C9C0A90F273DD54B00046EC8 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C0A8E5273DD54A00046EC8 /* ContentView.swift */; }; 21 | C9C0A910273DD54B00046EC8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C9C0A8E6273DD54B00046EC8 /* Assets.xcassets */; }; 22 | C9C0A911273DD54B00046EC8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C9C0A8E6273DD54B00046EC8 /* Assets.xcassets */; }; 23 | /* End PBXBuildFile section */ 24 | 25 | /* Begin PBXContainerItemProxy section */ 26 | C9C0A8F9273DD54B00046EC8 /* PBXContainerItemProxy */ = { 27 | isa = PBXContainerItemProxy; 28 | containerPortal = C9C0A8DF273DD54A00046EC8 /* Project object */; 29 | proxyType = 1; 30 | remoteGlobalIDString = C9C0A8EA273DD54B00046EC8; 31 | remoteInfo = "LFG (iOS)"; 32 | }; 33 | C9C0A905273DD54B00046EC8 /* PBXContainerItemProxy */ = { 34 | isa = PBXContainerItemProxy; 35 | containerPortal = C9C0A8DF273DD54A00046EC8 /* Project object */; 36 | proxyType = 1; 37 | remoteGlobalIDString = C9C0A8F0273DD54B00046EC8; 38 | remoteInfo = "LFG (macOS)"; 39 | }; 40 | /* End PBXContainerItemProxy section */ 41 | 42 | /* Begin PBXFileReference section */ 43 | C93D5B4D273DE4B7003D7D20 /* dist */ = {isa = PBXFileReference; lastKnownFileType = folder; name = dist; path = ../LFG.js/dist; sourceTree = ""; }; 44 | C9B2925C2740536B00B8EC97 /* poems.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = poems.txt; sourceTree = ""; }; 45 | C9C0A8E4273DD54A00046EC8 /* LFGApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LFGApp.swift; sourceTree = ""; }; 46 | C9C0A8E5273DD54A00046EC8 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 47 | C9C0A8E6273DD54B00046EC8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 48 | C9C0A8EB273DD54B00046EC8 /* LFG.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFG.app; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | C9C0A8F1273DD54B00046EC8 /* LFG.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFG.app; sourceTree = BUILT_PRODUCTS_DIR; }; 50 | C9C0A8F3273DD54B00046EC8 /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = ""; }; 51 | C9C0A8F8273DD54B00046EC8 /* Tests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | C9C0A8FC273DD54B00046EC8 /* Tests_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOS.swift; sourceTree = ""; }; 53 | C9C0A8FE273DD54B00046EC8 /* Tests_iOSLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOSLaunchTests.swift; sourceTree = ""; }; 54 | C9C0A904273DD54B00046EC8 /* Tests macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 55 | C9C0A908273DD54B00046EC8 /* Tests_macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOS.swift; sourceTree = ""; }; 56 | C9C0A90A273DD54B00046EC8 /* Tests_macOSLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOSLaunchTests.swift; sourceTree = ""; }; 57 | /* End PBXFileReference section */ 58 | 59 | /* Begin PBXFrameworksBuildPhase section */ 60 | C9C0A8E8273DD54B00046EC8 /* Frameworks */ = { 61 | isa = PBXFrameworksBuildPhase; 62 | buildActionMask = 2147483647; 63 | files = ( 64 | ); 65 | runOnlyForDeploymentPostprocessing = 0; 66 | }; 67 | C9C0A8EE273DD54B00046EC8 /* Frameworks */ = { 68 | isa = PBXFrameworksBuildPhase; 69 | buildActionMask = 2147483647; 70 | files = ( 71 | ); 72 | runOnlyForDeploymentPostprocessing = 0; 73 | }; 74 | C9C0A8F5273DD54B00046EC8 /* Frameworks */ = { 75 | isa = PBXFrameworksBuildPhase; 76 | buildActionMask = 2147483647; 77 | files = ( 78 | ); 79 | runOnlyForDeploymentPostprocessing = 0; 80 | }; 81 | C9C0A901273DD54B00046EC8 /* Frameworks */ = { 82 | isa = PBXFrameworksBuildPhase; 83 | buildActionMask = 2147483647; 84 | files = ( 85 | ); 86 | runOnlyForDeploymentPostprocessing = 0; 87 | }; 88 | /* End PBXFrameworksBuildPhase section */ 89 | 90 | /* Begin PBXGroup section */ 91 | C9C0A8DE273DD54A00046EC8 = { 92 | isa = PBXGroup; 93 | children = ( 94 | C93D5B4D273DE4B7003D7D20 /* dist */, 95 | C9C0A8E3273DD54A00046EC8 /* Shared */, 96 | C9C0A8F2273DD54B00046EC8 /* macOS */, 97 | C9C0A8FB273DD54B00046EC8 /* Tests iOS */, 98 | C9C0A907273DD54B00046EC8 /* Tests macOS */, 99 | C9C0A8EC273DD54B00046EC8 /* Products */, 100 | ); 101 | sourceTree = ""; 102 | }; 103 | C9C0A8E3273DD54A00046EC8 /* Shared */ = { 104 | isa = PBXGroup; 105 | children = ( 106 | C9C0A8E4273DD54A00046EC8 /* LFGApp.swift */, 107 | C9C0A8E5273DD54A00046EC8 /* ContentView.swift */, 108 | C9C0A8E6273DD54B00046EC8 /* Assets.xcassets */, 109 | C9B2925C2740536B00B8EC97 /* poems.txt */, 110 | ); 111 | path = Shared; 112 | sourceTree = ""; 113 | }; 114 | C9C0A8EC273DD54B00046EC8 /* Products */ = { 115 | isa = PBXGroup; 116 | children = ( 117 | C9C0A8EB273DD54B00046EC8 /* LFG.app */, 118 | C9C0A8F1273DD54B00046EC8 /* LFG.app */, 119 | C9C0A8F8273DD54B00046EC8 /* Tests iOS.xctest */, 120 | C9C0A904273DD54B00046EC8 /* Tests macOS.xctest */, 121 | ); 122 | name = Products; 123 | sourceTree = ""; 124 | }; 125 | C9C0A8F2273DD54B00046EC8 /* macOS */ = { 126 | isa = PBXGroup; 127 | children = ( 128 | C9C0A8F3273DD54B00046EC8 /* macOS.entitlements */, 129 | ); 130 | path = macOS; 131 | sourceTree = ""; 132 | }; 133 | C9C0A8FB273DD54B00046EC8 /* Tests iOS */ = { 134 | isa = PBXGroup; 135 | children = ( 136 | C9C0A8FC273DD54B00046EC8 /* Tests_iOS.swift */, 137 | C9C0A8FE273DD54B00046EC8 /* Tests_iOSLaunchTests.swift */, 138 | ); 139 | path = "Tests iOS"; 140 | sourceTree = ""; 141 | }; 142 | C9C0A907273DD54B00046EC8 /* Tests macOS */ = { 143 | isa = PBXGroup; 144 | children = ( 145 | C9C0A908273DD54B00046EC8 /* Tests_macOS.swift */, 146 | C9C0A90A273DD54B00046EC8 /* Tests_macOSLaunchTests.swift */, 147 | ); 148 | path = "Tests macOS"; 149 | sourceTree = ""; 150 | }; 151 | /* End PBXGroup section */ 152 | 153 | /* Begin PBXNativeTarget section */ 154 | C9C0A8EA273DD54B00046EC8 /* LFG (iOS) */ = { 155 | isa = PBXNativeTarget; 156 | buildConfigurationList = C9C0A914273DD54B00046EC8 /* Build configuration list for PBXNativeTarget "LFG (iOS)" */; 157 | buildPhases = ( 158 | C9C0A8E7273DD54B00046EC8 /* Sources */, 159 | C9C0A8E8273DD54B00046EC8 /* Frameworks */, 160 | C9C0A8E9273DD54B00046EC8 /* Resources */, 161 | ); 162 | buildRules = ( 163 | ); 164 | dependencies = ( 165 | ); 166 | name = "LFG (iOS)"; 167 | productName = "LFG (iOS)"; 168 | productReference = C9C0A8EB273DD54B00046EC8 /* LFG.app */; 169 | productType = "com.apple.product-type.application"; 170 | }; 171 | C9C0A8F0273DD54B00046EC8 /* LFG (macOS) */ = { 172 | isa = PBXNativeTarget; 173 | buildConfigurationList = C9C0A917273DD54B00046EC8 /* Build configuration list for PBXNativeTarget "LFG (macOS)" */; 174 | buildPhases = ( 175 | C9C0A8ED273DD54B00046EC8 /* Sources */, 176 | C9C0A8EE273DD54B00046EC8 /* Frameworks */, 177 | C9C0A8EF273DD54B00046EC8 /* Resources */, 178 | ); 179 | buildRules = ( 180 | ); 181 | dependencies = ( 182 | ); 183 | name = "LFG (macOS)"; 184 | productName = "LFG (macOS)"; 185 | productReference = C9C0A8F1273DD54B00046EC8 /* LFG.app */; 186 | productType = "com.apple.product-type.application"; 187 | }; 188 | C9C0A8F7273DD54B00046EC8 /* Tests iOS */ = { 189 | isa = PBXNativeTarget; 190 | buildConfigurationList = C9C0A91A273DD54B00046EC8 /* Build configuration list for PBXNativeTarget "Tests iOS" */; 191 | buildPhases = ( 192 | C9C0A8F4273DD54B00046EC8 /* Sources */, 193 | C9C0A8F5273DD54B00046EC8 /* Frameworks */, 194 | C9C0A8F6273DD54B00046EC8 /* Resources */, 195 | ); 196 | buildRules = ( 197 | ); 198 | dependencies = ( 199 | C9C0A8FA273DD54B00046EC8 /* PBXTargetDependency */, 200 | ); 201 | name = "Tests iOS"; 202 | productName = "Tests iOS"; 203 | productReference = C9C0A8F8273DD54B00046EC8 /* Tests iOS.xctest */; 204 | productType = "com.apple.product-type.bundle.ui-testing"; 205 | }; 206 | C9C0A903273DD54B00046EC8 /* Tests macOS */ = { 207 | isa = PBXNativeTarget; 208 | buildConfigurationList = C9C0A91D273DD54B00046EC8 /* Build configuration list for PBXNativeTarget "Tests macOS" */; 209 | buildPhases = ( 210 | C9C0A900273DD54B00046EC8 /* Sources */, 211 | C9C0A901273DD54B00046EC8 /* Frameworks */, 212 | C9C0A902273DD54B00046EC8 /* Resources */, 213 | ); 214 | buildRules = ( 215 | ); 216 | dependencies = ( 217 | C9C0A906273DD54B00046EC8 /* PBXTargetDependency */, 218 | ); 219 | name = "Tests macOS"; 220 | productName = "Tests macOS"; 221 | productReference = C9C0A904273DD54B00046EC8 /* Tests macOS.xctest */; 222 | productType = "com.apple.product-type.bundle.ui-testing"; 223 | }; 224 | /* End PBXNativeTarget section */ 225 | 226 | /* Begin PBXProject section */ 227 | C9C0A8DF273DD54A00046EC8 /* Project object */ = { 228 | isa = PBXProject; 229 | attributes = { 230 | BuildIndependentTargetsInParallel = 1; 231 | LastSwiftUpdateCheck = 1310; 232 | LastUpgradeCheck = 1310; 233 | TargetAttributes = { 234 | C9C0A8EA273DD54B00046EC8 = { 235 | CreatedOnToolsVersion = 13.1; 236 | }; 237 | C9C0A8F0273DD54B00046EC8 = { 238 | CreatedOnToolsVersion = 13.1; 239 | }; 240 | C9C0A8F7273DD54B00046EC8 = { 241 | CreatedOnToolsVersion = 13.1; 242 | TestTargetID = C9C0A8EA273DD54B00046EC8; 243 | }; 244 | C9C0A903273DD54B00046EC8 = { 245 | CreatedOnToolsVersion = 13.1; 246 | TestTargetID = C9C0A8F0273DD54B00046EC8; 247 | }; 248 | }; 249 | }; 250 | buildConfigurationList = C9C0A8E2273DD54A00046EC8 /* Build configuration list for PBXProject "LFG" */; 251 | compatibilityVersion = "Xcode 13.0"; 252 | developmentRegion = en; 253 | hasScannedForEncodings = 0; 254 | knownRegions = ( 255 | en, 256 | Base, 257 | ); 258 | mainGroup = C9C0A8DE273DD54A00046EC8; 259 | productRefGroup = C9C0A8EC273DD54B00046EC8 /* Products */; 260 | projectDirPath = ""; 261 | projectRoot = ""; 262 | targets = ( 263 | C9C0A8EA273DD54B00046EC8 /* LFG (iOS) */, 264 | C9C0A8F0273DD54B00046EC8 /* LFG (macOS) */, 265 | C9C0A8F7273DD54B00046EC8 /* Tests iOS */, 266 | C9C0A903273DD54B00046EC8 /* Tests macOS */, 267 | ); 268 | }; 269 | /* End PBXProject section */ 270 | 271 | /* Begin PBXResourcesBuildPhase section */ 272 | C9C0A8E9273DD54B00046EC8 /* Resources */ = { 273 | isa = PBXResourcesBuildPhase; 274 | buildActionMask = 2147483647; 275 | files = ( 276 | C93D5B4E273DE4B7003D7D20 /* dist in Resources */, 277 | C9C0A910273DD54B00046EC8 /* Assets.xcassets in Resources */, 278 | C9B2925D2740536B00B8EC97 /* poems.txt in Resources */, 279 | ); 280 | runOnlyForDeploymentPostprocessing = 0; 281 | }; 282 | C9C0A8EF273DD54B00046EC8 /* Resources */ = { 283 | isa = PBXResourcesBuildPhase; 284 | buildActionMask = 2147483647; 285 | files = ( 286 | C9C0A911273DD54B00046EC8 /* Assets.xcassets in Resources */, 287 | C9B2925E2740536B00B8EC97 /* poems.txt in Resources */, 288 | ); 289 | runOnlyForDeploymentPostprocessing = 0; 290 | }; 291 | C9C0A8F6273DD54B00046EC8 /* Resources */ = { 292 | isa = PBXResourcesBuildPhase; 293 | buildActionMask = 2147483647; 294 | files = ( 295 | ); 296 | runOnlyForDeploymentPostprocessing = 0; 297 | }; 298 | C9C0A902273DD54B00046EC8 /* Resources */ = { 299 | isa = PBXResourcesBuildPhase; 300 | buildActionMask = 2147483647; 301 | files = ( 302 | ); 303 | runOnlyForDeploymentPostprocessing = 0; 304 | }; 305 | /* End PBXResourcesBuildPhase section */ 306 | 307 | /* Begin PBXSourcesBuildPhase section */ 308 | C9C0A8E7273DD54B00046EC8 /* Sources */ = { 309 | isa = PBXSourcesBuildPhase; 310 | buildActionMask = 2147483647; 311 | files = ( 312 | C9C0A90E273DD54B00046EC8 /* ContentView.swift in Sources */, 313 | C9C0A90C273DD54B00046EC8 /* LFGApp.swift in Sources */, 314 | ); 315 | runOnlyForDeploymentPostprocessing = 0; 316 | }; 317 | C9C0A8ED273DD54B00046EC8 /* Sources */ = { 318 | isa = PBXSourcesBuildPhase; 319 | buildActionMask = 2147483647; 320 | files = ( 321 | C9C0A90F273DD54B00046EC8 /* ContentView.swift in Sources */, 322 | C9C0A90D273DD54B00046EC8 /* LFGApp.swift in Sources */, 323 | ); 324 | runOnlyForDeploymentPostprocessing = 0; 325 | }; 326 | C9C0A8F4273DD54B00046EC8 /* Sources */ = { 327 | isa = PBXSourcesBuildPhase; 328 | buildActionMask = 2147483647; 329 | files = ( 330 | C9C0A8FF273DD54B00046EC8 /* Tests_iOSLaunchTests.swift in Sources */, 331 | C9C0A8FD273DD54B00046EC8 /* Tests_iOS.swift in Sources */, 332 | ); 333 | runOnlyForDeploymentPostprocessing = 0; 334 | }; 335 | C9C0A900273DD54B00046EC8 /* Sources */ = { 336 | isa = PBXSourcesBuildPhase; 337 | buildActionMask = 2147483647; 338 | files = ( 339 | C9C0A90B273DD54B00046EC8 /* Tests_macOSLaunchTests.swift in Sources */, 340 | C9C0A909273DD54B00046EC8 /* Tests_macOS.swift in Sources */, 341 | ); 342 | runOnlyForDeploymentPostprocessing = 0; 343 | }; 344 | /* End PBXSourcesBuildPhase section */ 345 | 346 | /* Begin PBXTargetDependency section */ 347 | C9C0A8FA273DD54B00046EC8 /* PBXTargetDependency */ = { 348 | isa = PBXTargetDependency; 349 | target = C9C0A8EA273DD54B00046EC8 /* LFG (iOS) */; 350 | targetProxy = C9C0A8F9273DD54B00046EC8 /* PBXContainerItemProxy */; 351 | }; 352 | C9C0A906273DD54B00046EC8 /* PBXTargetDependency */ = { 353 | isa = PBXTargetDependency; 354 | target = C9C0A8F0273DD54B00046EC8 /* LFG (macOS) */; 355 | targetProxy = C9C0A905273DD54B00046EC8 /* PBXContainerItemProxy */; 356 | }; 357 | /* End PBXTargetDependency section */ 358 | 359 | /* Begin XCBuildConfiguration section */ 360 | C9C0A912273DD54B00046EC8 /* Debug */ = { 361 | isa = XCBuildConfiguration; 362 | buildSettings = { 363 | ALWAYS_SEARCH_USER_PATHS = NO; 364 | CLANG_ANALYZER_NONNULL = YES; 365 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 366 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 367 | CLANG_CXX_LIBRARY = "libc++"; 368 | CLANG_ENABLE_MODULES = YES; 369 | CLANG_ENABLE_OBJC_ARC = YES; 370 | CLANG_ENABLE_OBJC_WEAK = YES; 371 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 372 | CLANG_WARN_BOOL_CONVERSION = YES; 373 | CLANG_WARN_COMMA = YES; 374 | CLANG_WARN_CONSTANT_CONVERSION = YES; 375 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 376 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 377 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 378 | CLANG_WARN_EMPTY_BODY = YES; 379 | CLANG_WARN_ENUM_CONVERSION = YES; 380 | CLANG_WARN_INFINITE_RECURSION = YES; 381 | CLANG_WARN_INT_CONVERSION = YES; 382 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 383 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 384 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 385 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 386 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 387 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 388 | CLANG_WARN_STRICT_PROTOTYPES = YES; 389 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 390 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 391 | CLANG_WARN_UNREACHABLE_CODE = YES; 392 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 393 | COPY_PHASE_STRIP = NO; 394 | DEBUG_INFORMATION_FORMAT = dwarf; 395 | ENABLE_STRICT_OBJC_MSGSEND = YES; 396 | ENABLE_TESTABILITY = YES; 397 | GCC_C_LANGUAGE_STANDARD = gnu11; 398 | GCC_DYNAMIC_NO_PIC = NO; 399 | GCC_NO_COMMON_BLOCKS = YES; 400 | GCC_OPTIMIZATION_LEVEL = 0; 401 | GCC_PREPROCESSOR_DEFINITIONS = ( 402 | "DEBUG=1", 403 | "$(inherited)", 404 | ); 405 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 406 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 407 | GCC_WARN_UNDECLARED_SELECTOR = YES; 408 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 409 | GCC_WARN_UNUSED_FUNCTION = YES; 410 | GCC_WARN_UNUSED_VARIABLE = YES; 411 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 412 | MTL_FAST_MATH = YES; 413 | ONLY_ACTIVE_ARCH = YES; 414 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 415 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 416 | }; 417 | name = Debug; 418 | }; 419 | C9C0A913273DD54B00046EC8 /* Release */ = { 420 | isa = XCBuildConfiguration; 421 | buildSettings = { 422 | ALWAYS_SEARCH_USER_PATHS = NO; 423 | CLANG_ANALYZER_NONNULL = YES; 424 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 425 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 426 | CLANG_CXX_LIBRARY = "libc++"; 427 | CLANG_ENABLE_MODULES = YES; 428 | CLANG_ENABLE_OBJC_ARC = YES; 429 | CLANG_ENABLE_OBJC_WEAK = YES; 430 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 431 | CLANG_WARN_BOOL_CONVERSION = YES; 432 | CLANG_WARN_COMMA = YES; 433 | CLANG_WARN_CONSTANT_CONVERSION = YES; 434 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 435 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 436 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 437 | CLANG_WARN_EMPTY_BODY = YES; 438 | CLANG_WARN_ENUM_CONVERSION = YES; 439 | CLANG_WARN_INFINITE_RECURSION = YES; 440 | CLANG_WARN_INT_CONVERSION = YES; 441 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 442 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 443 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 444 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 445 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 446 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 447 | CLANG_WARN_STRICT_PROTOTYPES = YES; 448 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 449 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 450 | CLANG_WARN_UNREACHABLE_CODE = YES; 451 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 452 | COPY_PHASE_STRIP = NO; 453 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 454 | ENABLE_NS_ASSERTIONS = NO; 455 | ENABLE_STRICT_OBJC_MSGSEND = YES; 456 | GCC_C_LANGUAGE_STANDARD = gnu11; 457 | GCC_NO_COMMON_BLOCKS = YES; 458 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 459 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 460 | GCC_WARN_UNDECLARED_SELECTOR = YES; 461 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 462 | GCC_WARN_UNUSED_FUNCTION = YES; 463 | GCC_WARN_UNUSED_VARIABLE = YES; 464 | MTL_ENABLE_DEBUG_INFO = NO; 465 | MTL_FAST_MATH = YES; 466 | SWIFT_COMPILATION_MODE = wholemodule; 467 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 468 | }; 469 | name = Release; 470 | }; 471 | C9C0A915273DD54B00046EC8 /* Debug */ = { 472 | isa = XCBuildConfiguration; 473 | buildSettings = { 474 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 475 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 476 | CODE_SIGN_STYLE = Automatic; 477 | CURRENT_PROJECT_VERSION = 1; 478 | DEVELOPMENT_TEAM = 93P2GT4PBJ; 479 | ENABLE_PREVIEWS = YES; 480 | GENERATE_INFOPLIST_FILE = YES; 481 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 482 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 483 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 484 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 485 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 486 | IPHONEOS_DEPLOYMENT_TARGET = 14.7; 487 | LD_RUNPATH_SEARCH_PATHS = ( 488 | "$(inherited)", 489 | "@executable_path/Frameworks", 490 | ); 491 | MARKETING_VERSION = 1.0; 492 | PRODUCT_BUNDLE_IDENTIFIER = razorblade.LFG; 493 | PRODUCT_NAME = LFG; 494 | SDKROOT = iphoneos; 495 | SWIFT_EMIT_LOC_STRINGS = YES; 496 | SWIFT_VERSION = 5.0; 497 | TARGETED_DEVICE_FAMILY = "1,2"; 498 | }; 499 | name = Debug; 500 | }; 501 | C9C0A916273DD54B00046EC8 /* Release */ = { 502 | isa = XCBuildConfiguration; 503 | buildSettings = { 504 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 505 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 506 | CODE_SIGN_STYLE = Automatic; 507 | CURRENT_PROJECT_VERSION = 1; 508 | DEVELOPMENT_TEAM = 93P2GT4PBJ; 509 | ENABLE_PREVIEWS = YES; 510 | GENERATE_INFOPLIST_FILE = YES; 511 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 512 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 513 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 514 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 515 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 516 | IPHONEOS_DEPLOYMENT_TARGET = 14.7; 517 | LD_RUNPATH_SEARCH_PATHS = ( 518 | "$(inherited)", 519 | "@executable_path/Frameworks", 520 | ); 521 | MARKETING_VERSION = 1.0; 522 | PRODUCT_BUNDLE_IDENTIFIER = razorblade.LFG; 523 | PRODUCT_NAME = LFG; 524 | SDKROOT = iphoneos; 525 | SWIFT_EMIT_LOC_STRINGS = YES; 526 | SWIFT_VERSION = 5.0; 527 | TARGETED_DEVICE_FAMILY = "1,2"; 528 | VALIDATE_PRODUCT = YES; 529 | }; 530 | name = Release; 531 | }; 532 | C9C0A918273DD54B00046EC8 /* Debug */ = { 533 | isa = XCBuildConfiguration; 534 | buildSettings = { 535 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 536 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 537 | CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; 538 | CODE_SIGN_STYLE = Automatic; 539 | COMBINE_HIDPI_IMAGES = YES; 540 | CURRENT_PROJECT_VERSION = 1; 541 | ENABLE_PREVIEWS = YES; 542 | GENERATE_INFOPLIST_FILE = YES; 543 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 544 | LD_RUNPATH_SEARCH_PATHS = ( 545 | "$(inherited)", 546 | "@executable_path/../Frameworks", 547 | ); 548 | MACOSX_DEPLOYMENT_TARGET = 12.0; 549 | MARKETING_VERSION = 1.0; 550 | PRODUCT_BUNDLE_IDENTIFIER = razorblade.LFG; 551 | PRODUCT_NAME = LFG; 552 | SDKROOT = macosx; 553 | SWIFT_EMIT_LOC_STRINGS = YES; 554 | SWIFT_VERSION = 5.0; 555 | }; 556 | name = Debug; 557 | }; 558 | C9C0A919273DD54B00046EC8 /* Release */ = { 559 | isa = XCBuildConfiguration; 560 | buildSettings = { 561 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 562 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 563 | CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; 564 | CODE_SIGN_STYLE = Automatic; 565 | COMBINE_HIDPI_IMAGES = YES; 566 | CURRENT_PROJECT_VERSION = 1; 567 | ENABLE_PREVIEWS = YES; 568 | GENERATE_INFOPLIST_FILE = YES; 569 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 570 | LD_RUNPATH_SEARCH_PATHS = ( 571 | "$(inherited)", 572 | "@executable_path/../Frameworks", 573 | ); 574 | MACOSX_DEPLOYMENT_TARGET = 12.0; 575 | MARKETING_VERSION = 1.0; 576 | PRODUCT_BUNDLE_IDENTIFIER = razorblade.LFG; 577 | PRODUCT_NAME = LFG; 578 | SDKROOT = macosx; 579 | SWIFT_EMIT_LOC_STRINGS = YES; 580 | SWIFT_VERSION = 5.0; 581 | }; 582 | name = Release; 583 | }; 584 | C9C0A91B273DD54B00046EC8 /* Debug */ = { 585 | isa = XCBuildConfiguration; 586 | buildSettings = { 587 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 588 | CODE_SIGN_STYLE = Automatic; 589 | CURRENT_PROJECT_VERSION = 1; 590 | GENERATE_INFOPLIST_FILE = YES; 591 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 592 | LD_RUNPATH_SEARCH_PATHS = ( 593 | "$(inherited)", 594 | "@executable_path/Frameworks", 595 | "@loader_path/Frameworks", 596 | ); 597 | MARKETING_VERSION = 1.0; 598 | PRODUCT_BUNDLE_IDENTIFIER = "razorblade.Tests-iOS"; 599 | PRODUCT_NAME = "$(TARGET_NAME)"; 600 | SDKROOT = iphoneos; 601 | SWIFT_EMIT_LOC_STRINGS = NO; 602 | SWIFT_VERSION = 5.0; 603 | TARGETED_DEVICE_FAMILY = "1,2"; 604 | TEST_TARGET_NAME = "LFG (iOS)"; 605 | }; 606 | name = Debug; 607 | }; 608 | C9C0A91C273DD54B00046EC8 /* Release */ = { 609 | isa = XCBuildConfiguration; 610 | buildSettings = { 611 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 612 | CODE_SIGN_STYLE = Automatic; 613 | CURRENT_PROJECT_VERSION = 1; 614 | GENERATE_INFOPLIST_FILE = YES; 615 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 616 | LD_RUNPATH_SEARCH_PATHS = ( 617 | "$(inherited)", 618 | "@executable_path/Frameworks", 619 | "@loader_path/Frameworks", 620 | ); 621 | MARKETING_VERSION = 1.0; 622 | PRODUCT_BUNDLE_IDENTIFIER = "razorblade.Tests-iOS"; 623 | PRODUCT_NAME = "$(TARGET_NAME)"; 624 | SDKROOT = iphoneos; 625 | SWIFT_EMIT_LOC_STRINGS = NO; 626 | SWIFT_VERSION = 5.0; 627 | TARGETED_DEVICE_FAMILY = "1,2"; 628 | TEST_TARGET_NAME = "LFG (iOS)"; 629 | VALIDATE_PRODUCT = YES; 630 | }; 631 | name = Release; 632 | }; 633 | C9C0A91E273DD54B00046EC8 /* Debug */ = { 634 | isa = XCBuildConfiguration; 635 | buildSettings = { 636 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 637 | CODE_SIGN_STYLE = Automatic; 638 | COMBINE_HIDPI_IMAGES = YES; 639 | CURRENT_PROJECT_VERSION = 1; 640 | GENERATE_INFOPLIST_FILE = YES; 641 | LD_RUNPATH_SEARCH_PATHS = ( 642 | "$(inherited)", 643 | "@executable_path/../Frameworks", 644 | "@loader_path/../Frameworks", 645 | ); 646 | MACOSX_DEPLOYMENT_TARGET = 12.0; 647 | MARKETING_VERSION = 1.0; 648 | PRODUCT_BUNDLE_IDENTIFIER = "razorblade.Tests-macOS"; 649 | PRODUCT_NAME = "$(TARGET_NAME)"; 650 | SDKROOT = macosx; 651 | SWIFT_EMIT_LOC_STRINGS = NO; 652 | SWIFT_VERSION = 5.0; 653 | TEST_TARGET_NAME = "LFG (macOS)"; 654 | }; 655 | name = Debug; 656 | }; 657 | C9C0A91F273DD54B00046EC8 /* Release */ = { 658 | isa = XCBuildConfiguration; 659 | buildSettings = { 660 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 661 | CODE_SIGN_STYLE = Automatic; 662 | COMBINE_HIDPI_IMAGES = YES; 663 | CURRENT_PROJECT_VERSION = 1; 664 | GENERATE_INFOPLIST_FILE = YES; 665 | LD_RUNPATH_SEARCH_PATHS = ( 666 | "$(inherited)", 667 | "@executable_path/../Frameworks", 668 | "@loader_path/../Frameworks", 669 | ); 670 | MACOSX_DEPLOYMENT_TARGET = 12.0; 671 | MARKETING_VERSION = 1.0; 672 | PRODUCT_BUNDLE_IDENTIFIER = "razorblade.Tests-macOS"; 673 | PRODUCT_NAME = "$(TARGET_NAME)"; 674 | SDKROOT = macosx; 675 | SWIFT_EMIT_LOC_STRINGS = NO; 676 | SWIFT_VERSION = 5.0; 677 | TEST_TARGET_NAME = "LFG (macOS)"; 678 | }; 679 | name = Release; 680 | }; 681 | /* End XCBuildConfiguration section */ 682 | 683 | /* Begin XCConfigurationList section */ 684 | C9C0A8E2273DD54A00046EC8 /* Build configuration list for PBXProject "LFG" */ = { 685 | isa = XCConfigurationList; 686 | buildConfigurations = ( 687 | C9C0A912273DD54B00046EC8 /* Debug */, 688 | C9C0A913273DD54B00046EC8 /* Release */, 689 | ); 690 | defaultConfigurationIsVisible = 0; 691 | defaultConfigurationName = Release; 692 | }; 693 | C9C0A914273DD54B00046EC8 /* Build configuration list for PBXNativeTarget "LFG (iOS)" */ = { 694 | isa = XCConfigurationList; 695 | buildConfigurations = ( 696 | C9C0A915273DD54B00046EC8 /* Debug */, 697 | C9C0A916273DD54B00046EC8 /* Release */, 698 | ); 699 | defaultConfigurationIsVisible = 0; 700 | defaultConfigurationName = Release; 701 | }; 702 | C9C0A917273DD54B00046EC8 /* Build configuration list for PBXNativeTarget "LFG (macOS)" */ = { 703 | isa = XCConfigurationList; 704 | buildConfigurations = ( 705 | C9C0A918273DD54B00046EC8 /* Debug */, 706 | C9C0A919273DD54B00046EC8 /* Release */, 707 | ); 708 | defaultConfigurationIsVisible = 0; 709 | defaultConfigurationName = Release; 710 | }; 711 | C9C0A91A273DD54B00046EC8 /* Build configuration list for PBXNativeTarget "Tests iOS" */ = { 712 | isa = XCConfigurationList; 713 | buildConfigurations = ( 714 | C9C0A91B273DD54B00046EC8 /* Debug */, 715 | C9C0A91C273DD54B00046EC8 /* Release */, 716 | ); 717 | defaultConfigurationIsVisible = 0; 718 | defaultConfigurationName = Release; 719 | }; 720 | C9C0A91D273DD54B00046EC8 /* Build configuration list for PBXNativeTarget "Tests macOS" */ = { 721 | isa = XCConfigurationList; 722 | buildConfigurations = ( 723 | C9C0A91E273DD54B00046EC8 /* Debug */, 724 | C9C0A91F273DD54B00046EC8 /* Release */, 725 | ); 726 | defaultConfigurationIsVisible = 0; 727 | defaultConfigurationName = Release; 728 | }; 729 | /* End XCConfigurationList section */ 730 | }; 731 | rootObject = C9C0A8DF273DD54A00046EC8 /* Project object */; 732 | } 733 | --------------------------------------------------------------------------------