├── 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 |
--------------------------------------------------------------------------------